w-web-task 1.0.11 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/w-web-task.umd.js +2 -2
- package/dist/w-web-task.umd.js.map +1 -1
- package/docs/WWebTask.html +1 -1
- package/docs/WWebTask.mjs.html +1 -1
- package/docs/index.html +1 -1
- package/package.json +2 -2
- package/toolg/gDistRollup.mjs +6 -2
package/dist/w-web-task.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-web-task v1.0.
|
|
2
|
+
* w-web-task v1.0.12
|
|
3
3
|
* (c) 2018-2021 yuda-lyu(semisphere)
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("worker_threads"),require("url")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","worker_threads","url"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-task"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.require$$0,e.url)}(this,function(e,t,n,s,i,r,o){"use strict";var a="undefined"!=typeof document?document.currentScript:null,l=Array.isArray,c="object"==typeof global&&global&&global.Object===Object&&global,d="object"==typeof self&&self&&self.Object===Object&&self,u=c||d||Function("return this")(),M=u.Symbol,w=Object.prototype,I=w.hasOwnProperty,y=w.toString,g=M?M.toStringTag:void 0;var m=Object.prototype.toString;var p=M?M.toStringTag:void 0;function L(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":p&&p in Object(e)?function(e){var t=I.call(e,g),n=e[g];try{e[g]=void 0;var s=!0}catch(e){}var i=y.call(e);return s&&(t?e[g]=n:delete e[g]),i}(e):function(e){return m.call(e)}(e)}function h(e){return null!=e&&"object"==typeof e}function C(e){return"symbol"==typeof e||h(e)&&"[object Symbol]"==L(e)}var D=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,f=/^\w*$/;function b(e,t){if(l(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!C(e))||(f.test(e)||!D.test(e)||null!=t&&e in Object(t))}function N(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function x(e){if(!N(e))return!1;var t=L(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var T,Z=u["__core-js_shared__"],X=(T=/[^.]+$/.exec(Z&&Z.keys&&Z.keys.IE_PROTO||""))?"Symbol(src)_1."+T:"";var S=Function.prototype.toString;function v(e){if(null!=e){try{return S.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var A=/^\[object .+?Constructor\]$/,Y=Function.prototype,G=Object.prototype,j=Y.toString,z=G.hasOwnProperty,K=RegExp("^"+j.call(z).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function E(e){return!(!N(e)||(t=e,X&&X in t))&&(x(e)?K:A).test(v(e));var t}function W(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return E(n)?n:void 0}var k=W(Object,"create");var V=Object.prototype.hasOwnProperty;var H=Object.prototype.hasOwnProperty;function Q(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}function U(e,t){return e===t||e!=e&&t!=t}function J(e,t){for(var n=e.length;n--;)if(U(e[n][0],t))return n;return-1}Q.prototype.clear=function(){this.__data__=k?k(null):{},this.size=0},Q.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Q.prototype.get=function(e){var t=this.__data__;if(k){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return V.call(t,e)?t[e]:void 0},Q.prototype.has=function(e){var t=this.__data__;return k?void 0!==t[e]:H.call(t,e)},Q.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=k&&void 0===t?"__lodash_hash_undefined__":t,this};var R=Array.prototype.splice;function P(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}P.prototype.clear=function(){this.__data__=[],this.size=0},P.prototype.delete=function(e){var t=this.__data__,n=J(t,e);return!(n<0)&&(n==t.length-1?t.pop():R.call(t,n,1),--this.size,!0)},P.prototype.get=function(e){var t=this.__data__,n=J(t,e);return n<0?void 0:t[n][1]},P.prototype.has=function(e){return J(this.__data__,e)>-1},P.prototype.set=function(e,t){var n=this.__data__,s=J(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this};var O=W(u,"Map");function B(e,t){var n,s,i=e.__data__;return("string"==(s=typeof(n=t))||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function F(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}F.prototype.clear=function(){this.size=0,this.__data__={hash:new Q,map:new(O||P),string:new Q}},F.prototype.delete=function(e){var t=B(this,e).delete(e);return this.size-=t?1:0,t},F.prototype.get=function(e){return B(this,e).get(e)},F.prototype.has=function(e){return B(this,e).has(e)},F.prototype.set=function(e,t){var n=B(this,e),s=n.size;return n.set(e,t),this.size+=n.size==s?0:1,this};function _(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var s=arguments,i=t?t.apply(this,s):s[0],r=n.cache;if(r.has(i))return r.get(i);var o=e.apply(this,s);return n.cache=r.set(i,o)||r,o};return n.cache=new(_.Cache||F),n}_.Cache=F;var q,$,ee,te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ne=/\\(\\)?/g,se=(q=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(te,function(e,n,s,i){t.push(s?i.replace(ne,"$1"):n||e)}),t},$=_(q,function(e){return 500===ee.size&&ee.clear(),e}),ee=$.cache,$),ie=se;function re(e,t){for(var n=-1,s=null==e?0:e.length,i=Array(s);++n<s;)i[n]=t(e[n],n,e);return i}var oe=M?M.prototype:void 0,ae=oe?oe.toString:void 0;function le(e){if("string"==typeof e)return e;if(l(e))return re(e,le)+"";if(C(e))return ae?ae.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ce(e){return null==e?"":le(e)}function de(e,t){return l(e)?e:b(e,t)?[e]:ie(ce(e))}function ue(e){if("string"==typeof e||C(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Me(e,t){for(var n=0,s=(t=de(t,e)).length;null!=e&&n<s;)e=e[ue(t[n++])];return n&&n==s?e:void 0}function we(e,t,n){var s=null==e?void 0:Me(e,t);return void 0===s?n:s}function Ie(e){return h(e)&&"[object Arguments]"==L(e)}var ye=Object.prototype,ge=ye.hasOwnProperty,me=ye.propertyIsEnumerable,pe=Ie(function(){return arguments}())?Ie:function(e){return h(e)&&ge.call(e,"callee")&&!me.call(e,"callee")},Le=pe;var he="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ce=he&&"object"==typeof module&&module&&!module.nodeType&&module,De=Ce&&Ce.exports===he?u.Buffer:void 0,fe=(De?De.isBuffer:void 0)||function(){return!1},be=/^(?:0|[1-9]\d*)$/;function Ne(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&be.test(e))&&e>-1&&e%1==0&&e<t}function xe(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Te={};function Ze(e){return function(t){return e(t)}}Te["[object Float32Array]"]=Te["[object Float64Array]"]=Te["[object Int8Array]"]=Te["[object Int16Array]"]=Te["[object Int32Array]"]=Te["[object Uint8Array]"]=Te["[object Uint8ClampedArray]"]=Te["[object Uint16Array]"]=Te["[object Uint32Array]"]=!0,Te["[object Arguments]"]=Te["[object Array]"]=Te["[object ArrayBuffer]"]=Te["[object Boolean]"]=Te["[object DataView]"]=Te["[object Date]"]=Te["[object Error]"]=Te["[object Function]"]=Te["[object Map]"]=Te["[object Number]"]=Te["[object Object]"]=Te["[object RegExp]"]=Te["[object Set]"]=Te["[object String]"]=Te["[object WeakMap]"]=!1;var Xe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Se=Xe&&"object"==typeof module&&module&&!module.nodeType&&module,ve=Se&&Se.exports===Xe&&c.process,Ae=function(){try{var e=Se&&Se.require&&Se.require("util").types;return e||ve&&ve.binding&&ve.binding("util")}catch(e){}}(),Ye=Ae&&Ae.isTypedArray,Ge=Ye?Ze(Ye):function(e){return h(e)&&xe(e.length)&&!!Te[L(e)]},je=Object.prototype.hasOwnProperty;function ze(e,t){var n=l(e),s=!n&&Le(e),i=!n&&!s&&fe(e),r=!n&&!s&&!i&&Ge(e),o=n||s||i||r,a=o?function(e,t){for(var n=-1,s=Array(e);++n<e;)s[n]=t(n);return s}(e.length,String):[],c=a.length;for(var d in e)!t&&!je.call(e,d)||o&&("length"==d||i&&("offset"==d||"parent"==d)||r&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||Ne(d,c))||a.push(d);return a}var Ke=Object.prototype;function Ee(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ke)}function We(e,t){return function(n){return e(t(n))}}var ke=We(Object.keys,Object),Ve=Object.prototype.hasOwnProperty;function He(e){if(!Ee(e))return ke(e);var t=[];for(var n in Object(e))Ve.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Qe(e){return null!=e&&xe(e.length)&&!x(e)}function Ue(e){return Qe(e)?ze(e):He(e)}function Je(e){return"[object String]"===Object.prototype.toString.call(e)}function Re(e){return!(!Je(e)||""===e)}function Pe(e){if(!Re(e))return{};let t={};try{t=JSON.parse(e)}catch(e){t={}}return t}function Oe(e){return"[object Object]"===Object.prototype.toString.call(e)}function Be(e){if(Oe(e)){for(let t in e)return!0;return!1}return!1}var Fe=/\s/;var _e=/^\s+/;function qe(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&Fe.test(e.charAt(t)););return t}(e)+1).replace(_e,""):e}var $e=/^[-+]0x[0-9a-f]+$/i,et=/^0b[01]+$/i,tt=/^0o[0-7]+$/i,nt=parseInt;function st(e){if("number"==typeof e)return e;if(C(e))return NaN;if(N(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=N(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=qe(e);var n=et.test(e);return n||tt.test(e)?nt(e.slice(2),n?2:8):$e.test(e)?NaN:+e}var it=1/0;function rt(e){return e?(e=st(e))===it||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ot(e){var t=rt(e),n=t%1;return t==t?n?t-n:t:0}function at(e){return e!=e}function lt(e){let t=!1;if(Re(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(at(e))return!1;t=!0}return t}function ct(e){if(!lt(e))return 0;return rt(e)}function dt(e){return!!lt(e)&&(e=ct(e),"number"==typeof(t=e)&&t==ot(t));var t}var ut=u.isFinite,Mt=Math.min;var wt=function(e){var t=Math[e];return function(e,n){if(e=st(e),(n=null==n?0:Mt(ot(n),292))&&ut(e)){var s=(ce(e)+"e").split("e");return+((s=(ce(t(s[0]+"e"+(+s[1]+n)))+"e").split("e"))[0]+"e"+(+s[1]-n))}return t(e)}}("round"),It=wt;function yt(e){if(!lt(e))return 0;e=ct(e);let t=It(e);return"0"===String(t)?0:t}function gt(e){if(!dt(e))return!1;return yt(e)>0}var mt=We(Object.getPrototypeOf,Object),pt=Function.prototype,Lt=Object.prototype,ht=pt.toString,Ct=Lt.hasOwnProperty,Dt=ht.call(Object);function ft(e){if(!h(e)||"[object Object]"!=L(e))return!1;var t=mt(e);if(null===t)return!0;var n=Ct.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ht.call(n)==Dt}function bt(e){if(!h(e))return!1;var t=L(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!ft(e)}function Nt(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function xt(e){let t,n=Object.prototype.toString.call(e);if(t="[object Promise]"===n,t)return!0;if("[object Function]"!==n)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Tt(e){if(!dt(e))return!1;return yt(e)>=0}function Zt(e,t){return Re(e)&&Tt(t)?0===(t=yt(t))?"":e.substring(0,t):""}function Xt(e,t){if(!Re(e))return"";if(!Tt(t))return"";if(0===(t=yt(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function St(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}let vt=function(e){if(!Nt(e))throw new Error("fn is not a function");return function(){let t=St(),n=null,s=null;try{n=e.apply(this,arguments)}catch(e){s=e}return null!==s?t.resolve({state:"error",msg:s}):xt(n)?n.then(e=>{t.resolve({state:"success",msg:e})}).catch(e=>{"cancelled"===we(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})}):t.resolve({state:"success",msg:n}),t}};function At(e,t={}){let n=we(t,"fs"),s=!1;try{n.statSync(e),s=!0}catch{s=!1}return s}function Yt(e,t={}){let n=we(t,"fs");if(!At(e,{fs:n}))return!1;let s=n.lstatSync(e);return!s.isFile()&&!s.isSymbolicLink()}function Gt(e){return Yt(e,{fs:t})}function jt(e,t={}){let n=we(t,"fs");return!!At(e,{fs:n})&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function zt(e){return jt(e,{fs:t})}function Kt(e,t,n){if(!Re(e))return"";if(!Re(t))return"";if(!Je(n))return"";return String(e).replaceAll(t,n)}var Et="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Wt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var kt={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,s="millisecond",i="second",r="minute",o="hour",a="day",l="week",c="month",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=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},m=function(e,t,n){var s=String(e);return!s||s.length>=t?e:""+Array(t+1-s.length).join(n)+e},p={s:m,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),s=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+m(s,2,"0")+":"+m(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var s=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(s,c),r=n-i<0,o=t.clone().add(s+(r?-1:1),c);return+(-(s+(n-i)/(r?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:u,w:l,d:a,D:M,h:o,m:r,s:i,ms:s,Q:d}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},L="en",h={};h[L]=g;var C="$isDayjsObject",D=function(e){return e instanceof x||!(!e||!e[C])},f=function e(t,n,s){var i;if(!t)return L;if("string"==typeof t){var r=t.toLowerCase();h[r]&&(i=r),n&&(h[r]=n,i=r);var o=t.split("-");if(!i&&o.length>1)return e(o[0])}else{var a=t.name;h[a]=t,i=a}return!s&&i&&(L=i),i||!s&&L},b=function(e,t){if(D(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},N=p;N.l=f,N.i=D,N.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function g(e){this.$L=f(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[C]=!0}var m=g.prototype;return m.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(N.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var s=t.match(I);if(s){var i=s[2]-1||0,r=(s[7]||"0").substring(0,3);return n?new Date(Date.UTC(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)):new Date(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)}}return new Date(t)}(e),this.init()},m.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},m.$utils=function(){return N},m.isValid=function(){return!(this.$d.toString()===w)},m.isSame=function(e,t){var n=b(e);return this.startOf(t)<=n&&n<=this.endOf(t)},m.isAfter=function(e,t){return b(e)<this.startOf(t)},m.isBefore=function(e,t){return this.endOf(t)<b(e)},m.$g=function(e,t,n){return N.u(e)?this[t]:this.set(n,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,t){var n=this,s=!!N.u(t)||t,d=N.p(e),w=function(e,t){var i=N.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return s?i:i.endOf(a)},I=function(e,t){return N.w(n.toDate()[e].apply(n.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,g=this.$M,m=this.$D,p="set"+(this.$u?"UTC":"");switch(d){case u:return s?w(1,0):w(31,11);case c:return s?w(1,g):w(0,g+1);case l:var L=this.$locale().weekStart||0,h=(y<L?y+7:y)-L;return w(s?m-h:m+(6-h),g);case a:case M:return I(p+"Hours",0);case o:return I(p+"Minutes",1);case r:return I(p+"Seconds",2);case i:return I(p+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(e,t){var n,l=N.p(e),d="set"+(this.$u?"UTC":""),w=(n={},n[a]=d+"Date",n[M]=d+"Date",n[c]=d+"Month",n[u]=d+"FullYear",n[o]=d+"Hours",n[r]=d+"Minutes",n[i]=d+"Seconds",n[s]=d+"Milliseconds",n)[l],I=l===a?this.$D+(t-this.$W):t;if(l===c||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(e,t){return this.clone().$set(e,t)},m.get=function(e){return this[N.p(e)]()},m.add=function(s,d){var M,w=this;s=Number(s);var I=N.p(d),y=function(e){var t=b(w);return N.w(t.date(t.date()+Math.round(e*s)),w)};if(I===c)return this.set(c,this.$M+s);if(I===u)return this.set(u,this.$y+s);if(I===a)return y(1);if(I===l)return y(7);var g=(M={},M[r]=t,M[o]=n,M[i]=e,M)[I]||1,m=this.$d.getTime()+s*g;return N.w(m,this)},m.subtract=function(e,t){return this.add(-1*e,t)},m.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||w;var s=e||"YYYY-MM-DDTHH:mm:ssZ",i=N.z(this),r=this.$H,o=this.$m,a=this.$M,l=n.weekdays,c=n.months,d=n.meridiem,u=function(e,n,i,r){return e&&(e[n]||e(t,s))||i[n].slice(0,r)},M=function(e){return N.s(r%12||12,e,"0")},I=d||function(e,t,n){var s=e<12?"AM":"PM";return n?s.toLowerCase():s};return s.replace(y,function(e,s){return s||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return N.s(t.$y,4,"0");case"M":return a+1;case"MM":return N.s(a+1,2,"0");case"MMM":return u(n.monthsShort,a,c,3);case"MMMM":return u(c,a);case"D":return t.$D;case"DD":return N.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return u(n.weekdaysMin,t.$W,l,2);case"ddd":return u(n.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$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(t.$s);case"ss":return N.s(t.$s,2,"0");case"SSS":return N.s(t.$ms,3,"0");case"Z":return i}return null}(e)||i.replace(":","")})},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(s,M,w){var I,y=this,g=N.p(M),m=b(s),p=(m.utcOffset()-this.utcOffset())*t,L=this-m,h=function(){return N.m(y,m)};switch(g){case u:I=h()/12;break;case c:I=h();break;case d:I=h()/3;break;case l:I=(L-p)/6048e5;break;case a:I=(L-p)/864e5;break;case o:I=L/n;break;case r:I=L/t;break;case i:I=L/e;break;default:I=L}return w?I:N.a(I)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return h[this.$L]},m.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),s=f(e,t,!0);return s&&(n.$L=s),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()},g}(),T=x.prototype;return b.prototype=T,[["$ms",s],["$s",i],["$m",r],["$H",o],["$W",a],["$M",c],["$y",u],["$D",M]].forEach(function(e){T[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),b.extend=function(e,t){return e.$i||(e(t,x,b),e.$i=!0),b},b.locale=f,b.isDayjs=D,b.unix=function(e){return b(1e3*e)},b.en=h[L],b.Ls=h,b.p={},b}()}(kt);var Vt=Wt(kt.exports);function Ht(){if(!Nt(Vt))throw new Error("invalid dayjs");return Vt().format("YYYY-MM-DDTHH:mm:ssZ")}let Qt="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Ut=Qt.length;function Jt(e=32){let t=[];e=gt(e)?yt(e):32;for(let n=0;n<e;n++)t[n]=Qt[0|Math.random()*Ut];return t.join("")}function Rt(e){return"[object Array]"===Object.prototype.toString.call(e)}function Pt(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Ot(e){if(Oe(e)){for(let t in e)return!1;return!0}return!1}function Bt(e){return!!Pt(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Ot(e)||(!!function(e){return!(!Je(e)||""!==e)}(e)||(!!function(e){return!!Rt(e)&&0===e.length}(e)||!!at(e)))))}function Ft(e){return!!Rt(e)&&(0!==e.length&&(1!==e.length||!Bt(e[0])))}function _t(e){return!0===(t=e)||!1===t||h(t)&&"[object Boolean]"==L(t);var t}var qt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0===--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(c=1,l=new Array(u-1);c<u;c++)l[c-1]=arguments[c];d.fn.apply(d.context,l)}else{var M,w=d.length;for(c=0;c<w;c++)switch(d[c].once&&this.removeListener(e,d[c].fn,void 0,!0),u){case 1:d[c].fn.call(d[c].context);break;case 2:d[c].fn.call(d[c].context,t);break;case 3:d[c].fn.call(d[c].context,t,s);break;case 4:d[c].fn.call(d[c].context,t,s,i);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[c].fn.apply(d[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],d=a.length;l<d;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}(qt);var $t=Wt(qt.exports);function en(){return new $t}async function tn(e,t={}){let n=null,s=St();if(!Nt(e))return s.reject("waitfunction需輸入函數f"),s;let i=async()=>{let t=e();return xt(t)&&(t=await t),t};if(n=await i(),!0===n)return s.resolve(),s;let r=we(t,"attemptNum",null);gt(r)||(r=200);let o=we(t,"timeInterval",null);gt(o)||(o=1e3);let a=0,l=setInterval(async()=>{a+=1,n=await i(),!0===n&&(clearInterval(l),s.resolve()),a>r&&(clearInterval(l),s.reject(`exceeded attemptNum[${r}]`))},o);return s}function nn(e){return function(e,t={}){let n=we(t,"fs");if(Yt(e,{fs:n}))return{success:"input folder is already exists: "+e};if(At(e,{fs:n}))return{error:"input path already exists: "+e};try{n.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function sn(e){return"number"==typeof e||h(e)&&"[object Number]"==L(e)}function rn(e){if(!(Re(e)||lt(e)||C(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var on={exports:{}};var an,ln={exports:{}};function cn(){return an||(an=1,function(e){var t;e.exports=(t=t||function(e,t){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==Et&&Et.crypto&&(n=Et.crypto),!n)try{n=require("crypto")}catch(e){}var s=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),r={},o=r.lib={},a=o.Base={extend:function(e){var t=i(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=o.WordArray=a.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||d).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,i=e.sigBytes;if(this.clamp(),s%4)for(var r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;t[s+r>>>2]|=o<<24-(s+r)%4*8}else for(var a=0;a<i;a+=4)t[s+a>>>2]=n[a>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n<e;n+=4)t.push(s());return new l.init(t,e)}}),c=r.enc={},d=c.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push((r>>>4).toString(16)),s.push((15&r).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s+=2)n[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new l.init(n,t/2)}},u=c.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push(String.fromCharCode(r))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s++)n[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new l.init(n,t)}},M=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},w=o.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=M.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,s=this._data,i=s.words,r=s.sigBytes,o=this.blockSize,a=r/(4*o),c=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,d=e.min(4*c,r);if(c){for(var u=0;u<c;u+=o)this._doProcessBlock(i,u);n=i.splice(0,c),s.sigBytes-=d}return new l.init(n,d)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});o.Hasher=w.extend({cfg:a.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new I.HMAC.init(e,n).finalize(t)}}});var I=r.algo={};return r}(Math),t)}(ln)),ln.exports}!function(e){e.exports=cn().enc.Utf8}(on);var dn=Wt(on.exports),un={exports:{}};!function(e){var t;e.exports=(t=cn(),function(){var e=t,n=e.lib.WordArray;function s(e,t,s){for(var i=[],r=0,o=0;o<t;o++)if(o%4){var a=s[e.charCodeAt(o-1)]<<o%4*2|s[e.charCodeAt(o)]>>>6-o%4*2;i[r>>>2]|=a<<24-r%4*8,r++}return n.create(i,r)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,s=this._map;e.clamp();for(var i=[],r=0;r<n;r+=3)for(var o=(t[r>>>2]>>>24-r%4*8&255)<<16|(t[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|t[r+2>>>2]>>>24-(r+2)%4*8&255,a=0;a<4&&r+.75*a<n;a++)i.push(s.charAt(o>>>6*(3-a)&63));var l=s.charAt(64);if(l)for(;i.length%4;)i.push(l);return i.join("")},parse:function(e){var t=e.length,n=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var r=0;r<n.length;r++)i[n.charCodeAt(r)]=r}var o=n.charAt(64);if(o){var a=e.indexOf(o);-1!==a&&(t=a)}return s(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(un);var Mn=Wt(un.exports);function wn(e){if(!Re(e))return"";let t=dn.parse(e);return Mn.stringify(t)}function In(e,t){return!!Oe(e)&&(!(!Re(t)&&!lt(t))&&t in e)}function yn(e,t){for(var n=-1,s=null==e?0:e.length;++n<s&&!1!==t(e[n],n,e););return e}var gn,mn=function(e,t,n){for(var s=-1,i=Object(e),r=n(e),o=r.length;o--;){var a=r[gn?o:++s];if(!1===t(i[a],a,i))break}return e};var pn=function(e,t){return function(n,s){if(null==n)return n;if(!Qe(n))return e(n,s);for(var i=n.length,r=t?i:-1,o=Object(n);(t?r--:++r<i)&&!1!==s(o[r],r,o););return n}}(function(e,t){return e&&mn(e,t,Ue)}),Ln=pn;function hn(e){return e}function Cn(e,t){var n;return(l(e)?yn:Ln)(e,"function"==typeof(n=t)?n:hn)}function Dn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function fn(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function bn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function Nn(e){if(!(Dn(e)||(t=e,"[object Blob]"===Object.prototype.toString.call(t))||fn(e)||bn(e)))return null;var t;try{if(e.byteLength)return e.byteLength}catch(e){}try{if(e.length)return e.length}catch(e){}try{if(e.size)return e.size}catch(e){}return null}function xn(e){if(!Re(e))return new Uint8Array;let t;try{t=function(e){if(!Je(e))return new Uint8Array;let t=Mn.parse(e),n=t.words,s=t.sigBytes,i=new Uint8Array(s);for(let e=0;e<s;e++){let t=n[e>>>2]>>>24-e%4*8&255;i[e]=t}return i}(wn(e))}catch(e){return new Uint8Array}return t}function Tn(e,t,n=0,s=!0,i=52,r=8){return function(e,t,n,s,i,r){if(!lt(e))return null;if(!fn(t))return null;if(!dt(n))return null;if(!_t(s))return null;if(!dt(i))return null;if(!dt(r))return null;let o,a,l;e=ct(e);let c=8*r-i-1,d=(1<<c)-1,u=d>>1,M=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,w=s?r-1:0,I=s?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=d):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+u>=1?M/l:M*Math.pow(2,1-u))*l>=2&&(o++,l/=2),o+u>=d?(a=0,o=d):o+u>=1?(a=(e*l-1)*Math.pow(2,i),o+=u):(a=e*Math.pow(2,u-1)*Math.pow(2,i),o=0));i>=8;t[n+w]=255&a,w+=I,a/=256,i-=8);for(o=o<<i|a,c+=i;c>0;t[n+w]=255&o,w+=I,o/=256,c-=8);return t[n+w-I]|=128*y,null}(e,t,n,s,i,r)}function Zn(e){let t=[],n=[];if(!Ft(e)&&!Be(e))return null;let s=[],i=[];function r(e){s.push(Nn(e)),i.push(e)}try{let o=function(e){if(!Oe(e))return{results:"",binarys:[]};if(Ot(e))return{results:"",binarys:[]};let t="",n=[];try{let s=-1;t=JSON.stringify(e,function(e,t){if(fn(t)){s+=1;let e=`[Uint8Array]::${s}`;return n.push(t),e}if(bn(t)){s+=1;let e=`[Uint16Array]::${s}`;return n.push(t),e}if(Dn(t)){s+=1;let e=`[ArrayBuffer]::${s}`;return n.push(t),e}return bt(t)&&(t=t.toString()),t})}catch(e){}return{results:t,binarys:n}}(e);r(xn(o.results)),Cn(o.binarys,e=>{r(e)});let a=s,l=xn(JSON.stringify(a)),c=new Uint8Array(8);Tn(Nn(l),c),t.push(c),t.push(l),Cn(i,e=>{t.push(e)}),Cn(t,e=>{n=function(e,t){let n=Nn(e),s=Nn(t),i=new Uint8Array(n+s);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),n),i}(n,e)})}catch(e){return null}return n}function Xn(e,t=0,n=!0,s=52,i=8){return function(e,t,n,s,i){if(!fn(e))return null;if(!dt(t))return null;if(!_t(n))return null;if(!dt(s))return null;if(!dt(i))return null;let r,o,a=8*i-s-1,l=(1<<a)-1,c=l>>1,d=-7,u=n?0:i-1,M=n?1:-1,w=e[t+u];for(u+=M,r=w&(1<<-d)-1,w>>=-d,d+=a;d>0;r=256*r+e[t+u],u+=M,d-=8);for(o=r&(1<<-d)-1,r>>=-d,d+=s;d>0;o=256*o+e[t+u],u+=M,d-=8);if(0===r)r=1-c;else{if(r===l)return o?NaN:1/0*(w?-1:1);o+=Math.pow(2,s),r-=c}return(w?-1:1)*o*Math.pow(2,r-s)}(e,t,n,s,i)}var Sn={exports:{}};!function(e){var t;e.exports=(t=cn(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,s=e.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,s=[],i=0;i<t;i++)s[i>>>2]|=e[i]<<24-i%4*8;n.call(this,s,t)}else n.apply(this,arguments)};s.prototype=e}}(),t.lib.WordArray)}(Sn);var vn=Wt(Sn.exports);function An(e){if(!fn(e))return"";let t;try{n=function(e){return fn(e)?vn.create(e).toString(Mn):""}(e),t=Re(n)?Mn.parse(n).toString(dn):""}catch(e){return""}var n;return t}function Yn(e){let t=null;if(!fn(e))return null;try{let n=8,s=e.slice(0,n),i=e.slice(n,Nn(e)),r=Xn(s),o=i.slice(0,r),a=i.slice(r,Nn(i)),l=An(o),c=function(e,t){let n=0,s=0,i=[];return Cn(t,t=>{s=n+t;let r=e.slice(n,s);n=s,i.push(r)}),i}(a,JSON.parse(l));t=function(e){if(!Be(e))return{};let{results:t,binarys:n}=e;if(!Re(t))return{};if(!Rt(n))return{};let s={};try{s=JSON.parse(t,function(e,t){if(Re(t)){if(t.indexOf("[Uint8Array]::")>=0){let e=yt(t.replace("[Uint8Array]::",""));return n[e]}if(t.indexOf("[Uint16Array]::")>=0){let e=yt(t.replace("[Uint16Array]::",""));return n[e]}if(t.indexOf("[ArrayBuffer]::")>=0){let e=yt(t.replace("[ArrayBuffer]::",""));return n[e]}}return t})}catch(e){}return s}({results:An(c.shift()),binarys:c})}catch(e){}return t}function Gn(e){var t=this.__data__=new P(e);this.size=t.size}Gn.prototype.clear=function(){this.__data__=new P,this.size=0},Gn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Gn.prototype.get=function(e){return this.__data__.get(e)},Gn.prototype.has=function(e){return this.__data__.has(e)},Gn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof P){var s=n.__data__;if(!O||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new F(s)}return n.set(e,t),this.size=n.size,this};function jn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new F;++t<n;)this.add(e[t])}function zn(e,t){for(var n=-1,s=null==e?0:e.length;++n<s;)if(t(e[n],n,e))return!0;return!1}function Kn(e,t){return e.has(t)}jn.prototype.add=jn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},jn.prototype.has=function(e){return this.__data__.has(e)};function En(e,t,n,s,i,r){var o=1&n,a=e.length,l=t.length;if(a!=l&&!(o&&l>a))return!1;var c=r.get(e),d=r.get(t);if(c&&d)return c==t&&d==e;var u=-1,M=!0,w=2&n?new jn:void 0;for(r.set(e,t),r.set(t,e);++u<a;){var I=e[u],y=t[u];if(s)var g=o?s(y,I,u,t,e,r):s(I,y,u,e,t,r);if(void 0!==g){if(g)continue;M=!1;break}if(w){if(!zn(t,function(e,t){if(!Kn(w,t)&&(I===e||i(I,e,n,s,r)))return w.push(t)})){M=!1;break}}else if(I!==y&&!i(I,y,n,s,r)){M=!1;break}}return r.delete(e),r.delete(t),M}var Wn=u.Uint8Array;function kn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,s){n[++t]=[s,e]}),n}function Vn(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var Hn=M?M.prototype:void 0,Qn=Hn?Hn.valueOf:void 0;function Un(e,t){for(var n=-1,s=t.length,i=e.length;++n<s;)e[i+n]=t[n];return e}function Jn(e,t,n){var s=t(e);return l(e)?s:Un(s,n(e))}function Rn(e,t){for(var n=-1,s=null==e?0:e.length,i=0,r=[];++n<s;){var o=e[n];t(o,n,e)&&(r[i++]=o)}return r}function Pn(){return[]}var On=Object.prototype.propertyIsEnumerable,Bn=Object.getOwnPropertySymbols,Fn=Bn?function(e){return null==e?[]:(e=Object(e),Rn(Bn(e),function(t){return On.call(e,t)}))}:Pn;function _n(e){return Jn(e,Ue,Fn)}var qn=Object.prototype.hasOwnProperty;var $n=W(u,"DataView"),es=W(u,"Promise"),ts=W(u,"Set"),ns=W(u,"WeakMap"),ss="[object Map]",is="[object Promise]",rs="[object Set]",os="[object WeakMap]",as="[object DataView]",ls=v($n),cs=v(O),ds=v(es),us=v(ts),Ms=v(ns),ws=L;($n&&ws(new $n(new ArrayBuffer(1)))!=as||O&&ws(new O)!=ss||es&&ws(es.resolve())!=is||ts&&ws(new ts)!=rs||ns&&ws(new ns)!=os)&&(ws=function(e){var t=L(e),n="[object Object]"==t?e.constructor:void 0,s=n?v(n):"";if(s)switch(s){case ls:return as;case cs:return ss;case ds:return is;case us:return rs;case Ms:return os}return t});var Is=ws,ys="[object Arguments]",gs="[object Array]",ms="[object Object]",ps=Object.prototype.hasOwnProperty;function Ls(e,t,n,s,i,r){var o=l(e),a=l(t),c=o?gs:Is(e),d=a?gs:Is(t),u=(c=c==ys?ms:c)==ms,M=(d=d==ys?ms:d)==ms,w=c==d;if(w&&fe(e)){if(!fe(t))return!1;o=!0,u=!1}if(w&&!u)return r||(r=new Gn),o||Ge(e)?En(e,t,n,s,i,r):function(e,t,n,s,i,r,o){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new Wn(e),new Wn(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return U(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=kn;case"[object Set]":var l=1&s;if(a||(a=Vn),e.size!=t.size&&!l)return!1;var c=o.get(e);if(c)return c==t;s|=2,o.set(e,t);var d=En(a(e),a(t),s,i,r,o);return o.delete(e),d;case"[object Symbol]":if(Qn)return Qn.call(e)==Qn.call(t)}return!1}(e,t,c,n,s,i,r);if(!(1&n)){var I=u&&ps.call(e,"__wrapped__"),y=M&&ps.call(t,"__wrapped__");if(I||y){var g=I?e.value():e,m=y?t.value():t;return r||(r=new Gn),i(g,m,n,s,r)}}return!!w&&(r||(r=new Gn),function(e,t,n,s,i,r){var o=1&n,a=_n(e),l=a.length;if(l!=_n(t).length&&!o)return!1;for(var c=l;c--;){var d=a[c];if(!(o?d in t:qn.call(t,d)))return!1}var u=r.get(e),M=r.get(t);if(u&&M)return u==t&&M==e;var w=!0;r.set(e,t),r.set(t,e);for(var I=o;++c<l;){var y=e[d=a[c]],g=t[d];if(s)var m=o?s(g,y,d,t,e,r):s(y,g,d,e,t,r);if(!(void 0===m?y===g||i(y,g,n,s,r):m)){w=!1;break}I||(I="constructor"==d)}if(w&&!I){var p=e.constructor,L=t.constructor;p==L||!("constructor"in e)||!("constructor"in t)||"function"==typeof p&&p instanceof p&&"function"==typeof L&&L instanceof L||(w=!1)}return r.delete(e),r.delete(t),w}(e,t,n,s,i,r))}function hs(e,t,n,s,i){return e===t||(null==e||null==t||!h(e)&&!h(t)?e!=e&&t!=t:Ls(e,t,n,s,hs,i))}function Cs(e){return e==e&&!N(e)}function Ds(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function fs(e){var t=function(e){for(var t=Ue(e),n=t.length;n--;){var s=t[n],i=e[s];t[n]=[s,i,Cs(i)]}return t}(e);return 1==t.length&&t[0][2]?Ds(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,s){var i=n.length,r=i,o=!s;if(null==e)return!r;for(e=Object(e);i--;){var a=n[i];if(o&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<r;){var l=(a=n[i])[0],c=e[l],d=a[1];if(o&&a[2]){if(void 0===c&&!(l in e))return!1}else{var u=new Gn;if(s)var M=s(c,d,l,e,t,u);if(!(void 0===M?hs(d,c,3,s,u):M))return!1}}return!0}(n,e,t)}}function bs(e,t){return null!=e&&t in Object(e)}function Ns(e,t){return null!=e&&function(e,t,n){for(var s=-1,i=(t=de(t,e)).length,r=!1;++s<i;){var o=ue(t[s]);if(!(r=null!=e&&n(e,o)))break;e=e[o]}return r||++s!=i?r:!!(i=null==e?0:e.length)&&xe(i)&&Ne(o,i)&&(l(e)||Le(e))}(e,t,bs)}function xs(e){return function(t){return null==t?void 0:t[e]}}function Ts(e){return b(e)?xs(ue(e)):function(e){return function(t){return Me(t,e)}}(e)}function Zs(e){return"function"==typeof e?e:null==e?hn:"object"==typeof e?l(e)?function(e,t){return b(e)&&Cs(t)?Ds(ue(e),t):function(n){var s=we(n,e);return void 0===s&&s===t?Ns(n,e):hs(t,s,3)}}(e[0],e[1]):fs(e):Ts(e)}function Xs(e,t){var n=-1,s=Qe(e)?Array(e.length):[];return Ln(e,function(e,i,r){s[++n]=t(e,i,r)}),s}function Ss(e,t){return(l(e)?re:Xs)(e,Zs(t))}function vs(e,t,n){var s=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var r=Array(i);++s<i;)r[s]=e[s+t];return r}function As(e){return e!=e}function Ys(e,t,n){return t==t?function(e,t,n){for(var s=n-1,i=e.length;++s<i;)if(e[s]===t)return s;return-1}(e,t,n):function(e,t,n,s){for(var i=e.length,r=n+(s?1:-1);s?r--:++r<i;)if(t(e[r],r,e))return r;return-1}(e,As,n)}var Gs=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function js(e){return Gs.test(e)}var zs="\\ud800-\\udfff",Ks="["+zs+"]",Es="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Ws="\\ud83c[\\udffb-\\udfff]",ks="[^"+zs+"]",Vs="(?:\\ud83c[\\udde6-\\uddff]){2}",Hs="[\\ud800-\\udbff][\\udc00-\\udfff]",Qs="(?:"+Es+"|"+Ws+")"+"?",Us="[\\ufe0e\\ufe0f]?",Js=Us+Qs+("(?:\\u200d(?:"+[ks,Vs,Hs].join("|")+")"+Us+Qs+")*"),Rs="(?:"+[ks+Es+"?",Es,Vs,Hs,Ks].join("|")+")",Ps=RegExp(Ws+"(?="+Ws+")|"+Rs+Js,"g");function Os(e){return js(e)?function(e){return e.match(Ps)||[]}(e):function(e){return e.split("")}(e)}function Bs(e,t,n){if((e=ce(e))&&(n||void 0===t))return qe(e);if(!e||!(t=le(t)))return e;var s=Os(e),i=Os(t),r=function(e,t){for(var n=-1,s=e.length;++n<s&&Ys(t,e[n],0)>-1;);return n}(s,i),o=function(e,t){for(var n=e.length;n--&&Ys(t,e[n],0)>-1;);return n}(s,i)+1;return function(e,t,n){var s=e.length;return n=void 0===n?s:n,!t&&n>=s?e:vs(e,t,n)}(s,r,o).join("")}function Fs(e,t){if(!Re(e))return[];if(!Re(t))return[];let n=function(e,t){return Re(e)&&Re(t)?e.split(t):[]}(e,t);n=Ss(n,Bs);let s=[];return Cn(n,function(e){Re(e)&&s.push(e)}),s}function _s(e){return function(e,t={}){let n=we(t,"fs");if(!At(e,{fs:n}))return{success:"file does not exist: "+e};if(!jt(e,{fs:n}))return{error:"input path is not a file: "+e};try{n.unlinkSync(e)}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}var qs={exports:{}};!function(e){var t,n;e.exports=(t=r,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(c=1,l=new Array(u-1);c<u;c++)l[c-1]=arguments[c];d.fn.apply(d.context,l)}else{var M,w=d.length;for(c=0;c<w;c++)switch(d[c].once&&this.removeListener(e,d[c].fn,void 0,!0),u){case 1:d[c].fn.call(d[c].context);break;case 2:d[c].fn.call(d[c].context,t);break;case 3:d[c].fn.call(d[c].context,t,s);break;case 4:d[c].fn.call(d[c].context,t,s,i);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[c].fn.apply(d[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],d=a.length;l<d;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQscyksZT10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYocj90W3NdPWU6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgTz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsUz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQsUj1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSx6PSgkPS9bXi5dKyQvLmV4ZWMoUiYmUi5rZXlzJiZSLmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB4PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQseiYmeiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PVN8fHI9PW18fHI9PU98fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4geC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gZnQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gc3QodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbZnQocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBPdD1OYU4sU3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24gUnQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIE90O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6U3QudGVzdCh0KT9PdDordH12YXIgenQ9MS8wLHh0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD1SdCh0KSk9PT16dHx8dD09PS16dD8odDwwPy0xOjEpKnh0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9UnQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFd0KHQscj17fSl7bGV0IGU9c3QociwiZnMiKSxuPSExO3RyeXtlLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiBCdCh0LHI9e30pe2xldCBlPXN0KHIsImZzIik7aWYoIVd0KHQse2ZzOmV9KSlyZXR1cm4hMTtsZXQgbj1lLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBIdCh0LHI9e30pe2xldCBlPXN0KHIsImZzIik7cmV0dXJuISFXdCh0LHtmczplfSkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIEp0KHQscj17fSl7bGV0IGU9c3QociwiZnMiKTtpZighV3QodCx7ZnM6ZX0pKXJldHVybntzdWNjZXNzOiJmaWxlIGRvZXMgbm90IGV4aXN0OiAiK3R9O2lmKCFIdCh0LHtmczplfSkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGlzIG5vdCBhIGZpbGU6ICIrdH07dHJ5e2UudW5saW5rU3luYyh0KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19cmV0dXJue3N1Y2Nlc3M6ImRvbmU6ICIrdH19YXN5bmMgZnVuY3Rpb24gS3QodCxyLGU9e30pe2xldCBuPSIiLG89c3QoZSwiZnMiKTtpZighcHQoaT10KXx8MD09PWkubGVuZ3RofHwxPT09aS5sZW5ndGgmJl90KGlbMF0pKXRocm93IG5ldyBFcnJvcigiZnBzSW4gaW4gbm90IGFuIGVmZmVjdGl2ZSBhcnJheSIpO3ZhciBpO2xldCB1PWZ1bmN0aW9uKHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPUd0KHQ9ci5wYXRoKTtpZighZHQoZSkpcmV0dXJuIHQ7bGV0IG49RHQodD1VdCh0LGUubGVuZ3RoKSk7cmV0dXJuIG4uaXNSb290LG4ucGF0aH0ociksYT1zdChlLCJmbk91dCIsIiIpO2R0KGEpfHwoYT1HdChyKSksQnQodSx7ZnM6b30pfHxmdW5jdGlvbih0LHI9e30pe2xldCBlPXN0KHIsImZzIik7aWYoQnQodCx7ZnM6ZX0pKXJldHVybntzdWNjZXNzOiJpbnB1dCBmb2xkZXIgaXMgYWxyZWFkeSBleGlzdHM6ICIrdH07aWYoV3QodCx7ZnM6ZX0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBhbHJlYWR5IGV4aXN0czogIit0fTt0cnl7ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fX0odSx7ZnM6b30pO2xldCBjPWx0KCk7dHJ5e2xldCBlPW8uY3JlYXRlV3JpdGVTdHJlYW0ocik7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2xldCBpPXRbcl07aWYoIUh0KGkse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtpfV0gaXMgbm90IGEgZmlsZWApO2xldCB1PSgpPT57bGV0IHQ9bHQoKSxyPW8uY3JlYXRlUmVhZFN0cmVhbShpKTtyZXR1cm4gci5vbigiZXJyb3IiLChyPT57bj1yLm1lc3NhZ2UsdC5yZWplY3Qocil9KSksci5vbigiZW5kIiwoKCk9PntKdChpLHtmczpvfSksdC5yZXNvbHZlKCl9KSksci5waXBlKGUse2VuZDohMX0pLHR9O2F3YWl0IHUoKX1lLmVuZCgpLGUub24oImVycm9yIiwodD0+e249dC5tZXNzYWdlLGMucmVqZWN0KG4pfSkpLGUub24oImZpbmlzaCIsKCgpPT57bGV0IHQ9e2ZpbGVuYW1lOmEscGF0aDpyfTtjLnJlc29sdmUodCl9KSl9Y2F0Y2godCl7bj10Lm1lc3NhZ2UsYy5yZWplY3Qobil9cmV0dXJuIGN9bGV0IG1lcmdlU2xpY2VzPWFzeW5jKGUsbixvKT0+e2xldCBpPVtdO2ZvcihsZXQgcj0wO3I8bjtyKyspe2xldCBuPXQucmVzb2x2ZShvLGAke2V9XyR7cn1gKTtpLnB1c2gobil9bGV0IHU9dC5yZXNvbHZlKG8sZSksYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbj17fSl7cmV0dXJuIEt0KHQsZSx7ZnM6ciwuLi5ufSl9KGksdSk7cmV0dXJuIHIud3JpdGVGaWxlU3luYyhgJHt1fS5kb25lYCwiIiwidXRmOCIpLGF9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o(e)}}(t);if(!i)return o("invalid worker"),null;function r(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return i.postMessage(n),s.once(t,t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)}),e}function o(e){s.emit("error",e)}return i.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),i.on("error",o),i.on("exit",e=>{1!==e&&o("exit code["+e+"] !== 1")}),function(){let e={mode:"init",type:"function",input:[...arguments]};i.postMessage(e)}([...arguments]),s.main=r,s.main=r,s.terminate=function(){i?(i.terminate(),i=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("unhandledRejection",e=>{console.log("outer:unhandledRejection",e)}),process.on("uncaughtException",e=>{console.log("outer:uncaughtException",e)}),process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(qs);var $s=Wt(qs.exports);let ei=(e,t,n)=>{let s=`${function(){if(!Nt(Vt))throw new Error("invalid dayjs");return Vt().format("YYYYMMDDHHmmss")}()}|${Jt(6)}|${e}`;return setTimeout(()=>{$s(e,t,n).catch(e=>{console.log(e)})},1),s},ti=(t,n)=>{let s="";if(!Re(t))return s=`invalid id[${t}]`,console.log(s),{state:"error",msg:s,path:""};let i=we(Fs(t,"|"),2,"");if(!Re(i))return s=`can not find fileHash in id[${t}]`,console.log(s),{state:"error",msg:s,path:""};let r=e.resolve(n,i),o=e.resolve(n,`${i}.done`),a=zt(r),l=zt(o),c=a&&l;return!a&&l&&_s(o),{state:c?"success":"merging",msg:"",path:r}};var ni={exports:{}};!function(e){var t,n;e.exports=(t=r,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(c=1,l=new Array(u-1);c<u;c++)l[c-1]=arguments[c];d.fn.apply(d.context,l)}else{var M,w=d.length;for(c=0;c<w;c++)switch(d[c].once&&this.removeListener(e,d[c].fn,void 0,!0),u){case 1:d[c].fn.call(d[c].context);break;case 2:d[c].fn.call(d[c].context,t);break;case 3:d[c].fn.call(d[c].context,t,s);break;case 4:d[c].fn.call(d[c].context,t,s,i);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[c].fn.apply(d[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],d=a.length;l<d;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGQ9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBiKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmQmJmQgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWIodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSx3PWouaGFzT3duUHJvcGVydHksbT1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJncuY2FsbCh0LCJjYWxsZWUiKSYmIW0uY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUseD16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxFPSh4P3guaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0saz05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/azplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIFA9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1QfXZhciBJPXt9O0lbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUlbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUlbIltvYmplY3QgSW50OEFycmF5XSJdPUlbIltvYmplY3QgSW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IEludDMyQXJyYXldIl09SVsiW29iamVjdCBVaW50OEFycmF5XSJdPUlbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09SVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLElbIltvYmplY3QgQXJndW1lbnRzXSJdPUlbIltvYmplY3QgQXJyYXldIl09SVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1JWyJbb2JqZWN0IEJvb2xlYW5dIl09SVsiW29iamVjdCBEYXRhVmlld10iXT1JWyJbb2JqZWN0IERhdGVdIl09SVsiW29iamVjdCBFcnJvcl0iXT1JWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUlbIltvYmplY3QgTWFwXSJdPUlbIltvYmplY3QgTnVtYmVyXSJdPUlbIltvYmplY3QgT2JqZWN0XSJdPUlbIltvYmplY3QgUmVnRXhwXSJdPUlbIltvYmplY3QgU2V0XSJdPUlbIltvYmplY3QgU3RyaW5nXSJdPUlbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxUPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsUj1UJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsVT1SJiZSLmV4cG9ydHM9PT1UJiZ1LnByb2Nlc3MsTj1mdW5jdGlvbigpe3RyeXt2YXIgdD1SJiZSLnJlcXVpcmUmJlIucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxVJiZVLmJpbmRpbmcmJlUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksRD1OJiZOLmlzVHlwZWRBcnJheSxCPUQ/KE09RCxmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFJW2IodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmRSh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWIodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGR0PXZ0Lmhhc093blByb3BlcnR5LGJ0PVJlZ0V4cCgiXiIreXQuY2FsbChkdCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/YnQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3Iiksd3Q9X3QoYSwiTWFwIiksbXQ9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIseHQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLGt0PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLCR0PWx0KHd0KSxQdD1sdChtdCksTHQ9bHQoT3QpLEl0PWx0KFN0KSxNdD1iOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1rdHx8d3QmJk10KG5ldyB3dCkhPUF0fHxtdCYmTXQobXQucmVzb2x2ZSgpKSE9enR8fE90JiZNdChuZXcgT3QpIT14dHx8U3QmJk10KG5ldyBTdCkhPUV0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWIodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4ga3Q7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBQdDpyZXR1cm4genQ7Y2FzZSBMdDpyZXR1cm4geHQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgVHQ9TXQsUnQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gVXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgTnQ9VXQoImxlbmd0aCIpLER0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gRHQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOk50KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmYihlKT09UnQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1UdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KHd0fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIXd0fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGRlPTEsYmU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZkZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZiZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBkPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09ZCl7aWYoZCljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIHdlKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciBtZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLHhlPSJbb2JqZWN0IE1hcF0iLEVlPSJbb2JqZWN0IE51bWJlcl0iLGtlPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLFBlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsSWU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxUZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBSZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFVlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxEZT1OZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksUmUoTmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBVZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LERlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOlR0KHQpLGY9YT9HZTpUdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmRSh0KSl7aWYoIUUoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIEllOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgRWU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBrZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgeGU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJm1lO2lmKGF8fChhPXdlKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIFBlOmlmKFRlKXJldHVybiBUZS5jYWxsKHQpPT1UZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxkPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGQscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sZD1lW3NdO2lmKG4pdmFyIGI9aT9uKGQseSxzLGUsdCx1KTpuKHksZCxzLHQsZSx1KTtpZighKHZvaWQgMD09PWI/eT09PWR8fG8oeSxkLHIsbix1KTpiKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmYih0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGRyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGRyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGJyKHQpe3JldHVybiBudWxsPT10PyIiOmRyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihicih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gd3IodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiBtcih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6d3IodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24geHIodCl7cmV0dXJuIGlyKHQpP1V0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHdyKGUsdCl9fSh0KX1mdW5jdGlvbiBFcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPW1yKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6eHIodCl9ZnVuY3Rpb24ga3IodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKFModCk/cmU6a3IpKHQsRXIoZSkpfXZhciAkcj0vXHMvO3ZhciBQcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoUHIsIiIpOnR9ZnVuY3Rpb24gSXIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gVHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFJyPSJcXHVkODAwLVxcdWRmZmYiLFVyPSJbIitScisiXSIsTnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixEcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK1JyKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK05yKyJ8IitEcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK05yKyI/IixOcixDcixXcixVcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoRHIrIig/PSIrRHIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1icih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1kcihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlRyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZUcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBJcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPUZyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShicih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oYnIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZG49eW47ZnVuY3Rpb24gYm4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9ZG4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPW1yKGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59ZnVuY3Rpb24gX24odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpO3JldHVybiEhZ24odCx7ZnM6cn0pJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBqbih0KXtyZXR1cm4gX24odCx7ZnM6ZX0pfWZ1bmN0aW9uIHduKHQsZSl7dmFyIHI9W107cmV0dXJuIG90KHQsKGZ1bmN0aW9uKHQsbixvKXtlKHQsbixvKSYmci5wdXNoKHQpfSkpLHJ9ZnVuY3Rpb24gbW4odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpO2lmKCFnbih0LHtmczpyfSkpcmV0dXJuITE7bGV0IG49ci5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gT24odCxlPTEscj17fSl7bGV0IG49MSxvPW1yKHIsInBhdGgiKSx1PW1yKHIsImZzIik7aWYoIW1uKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3ZhciBpO3JldHVybiBudWxsIT09ZSYmKHBuKGk9ZSkmJmJuKGkpPjApJiYoZT1ibihlKSk8MSYmKGU9MSksZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gbW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9ZnVuY3Rpb24gU24odCxlPTEscj17fSl7bGV0IG49bXIociwicGF0aCIpLG89bXIociwiZnMiKTtpZighbW4odCx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZmRbJHt0fV0gaXMgbm90IGEgZm9sZGVyYCk7bGV0IHU9W107dmFyIGksYTtyZXR1cm4gdT1Pbih0LGUse3BhdGg6bixmczpvfSksYT17aXNGb2xkZXI6ITF9LHU9KFMoaT11KT9SZTp3bikoaSxFcihhKSksdT1Gcih1LCh0PT4oZGVsZXRlIHQuaXNGb2xkZXIsdCkpKSx1fWNvbnN0IEFuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9bXIoZSwiZnMiKSxuPW1yKGUsImNodW5rU2l6ZSIpO2lmKFpyKG4pfHwobj02NzEwODg2NCksbj1sbihuKSwhX24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9ZC5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgZD1uZXcgVGV4dEVuY29kZXIsYj0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxkLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGQuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWIpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWIpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShBbikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQucmVzb2x2ZSh1LG8pLGE9ITE7aWYoYT1qbihpKSwhWnIocikpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19bGV0IGM9ITE7aWYoYSl7bGV0IHQ9LTE7dHJ5e3Q9ZS5zdGF0U3luYyhpKS5zaXplfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJjaGVjayB0b3RhbCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsaSx0KX1jPXI9PT10fWxldCBmPSExO2EmJmMmJmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIHpuKHQse2ZzOmUsLi4ucn0pfShpKS50aGVuKCh0PT57Zj1vPT09dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKCJmc0lzRmlsZShwYXRoRmlsZSkiLGksam4oaSkpLGNvbnNvbGUubG9nKHQpLGY9ITF9KSk7bGV0IHM9W107aWYoIWYpe2l0KGZ1bmN0aW9uKHIsbj0xKXtyZXR1cm4gU24ocixuLHtwYXRoOnQsZnM6ZX0pfSh1KSwodD0+e2xldCByPXQubmFtZS5pbmRleE9mKGAke299X2ApPj0wLHU9ITE7dHJ5e3U9ZS5zdGF0U3luYyh0LnBhdGgpLnNpemU9PT1ufWNhdGNoKGUpe2NvbnNvbGUubG9nKCJjaGVjayBlYWNoIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIix0LnBhdGgsZSl9aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZighZnVuY3Rpb24odCl7cmV0dXJuISFwbih0KSYmYm4odCk+PTB9KHIpKXRocm93IGNvbnNvbGUubG9nKCJ2Lm5hbWUiLHQubmFtZSksY29uc29sZS5sb2coInMiLGUpLG5ldyBFcnJvcihgY2FuIG5vdCBwYXJzZSBpbmRleCBpbiB2Lm5hbWVbJHt0Lm5hbWV9XWApO3I9Ym4ocikscy5wdXNoKHIpfXZhciBpLGF9KSl9bGV0IGw9ZWUocyk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOmwsc2xrczpzfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o(e)}}(t);if(!i)return o("invalid worker"),null;function r(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return i.postMessage(n),s.once(t,t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)}),e}function o(e){s.emit("error",e)}return i.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),i.on("error",o),i.on("exit",e=>{1!==e&&o("exit code["+e+"] !== 1")}),function(){let e={mode:"init",type:"function",input:[...arguments]};i.postMessage(e)}([...arguments]),s.main=r,s.main=r,s.terminate=function(){i?(i.terminate(),i=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("unhandledRejection",e=>{console.log("outer:unhandledRejection",e)}),process.on("uncaughtException",e=>{console.log("outer:uncaughtException",e)}),process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(ni);var si=Wt(ni.exports),ii={exports:{}};!function(e){var t,n;e.exports=(t=r,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var l,c,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(c=1,l=new Array(u-1);c<u;c++)l[c-1]=arguments[c];d.fn.apply(d.context,l)}else{var M,w=d.length;for(c=0;c<w;c++)switch(d[c].once&&this.removeListener(e,d[c].fn,void 0,!0),u){case 1:d[c].fn.call(d[c].context);break;case 2:d[c].fn.call(d[c].context,t);break;case 3:d[c].fn.call(d[c].context,t,s);break;case 4:d[c].fn.call(d[c].context,t,s,i);break;default:if(!l)for(M=1,l=new Array(u-1);M<u;M++)l[M-1]=arguments[M];d[c].fn.apply(d[c].context,l)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var l=0,c=[],d=a.length;l<d;l++)(a[l].fn!==t||i&&!a[l].once||s&&a[l].context!==s)&&c.push(a[l]);c.length?this._events[r]=1===c.length?c[0]:c:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0LGU9e30pe2xldCByPVh0KGUsImZzIik7cmV0dXJuISFmdW5jdGlvbih0LGU9e30pe2xldCByPVh0KGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59KHQse2ZzOnJ9KSYmKCFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9Y29uc3QgWnQ9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7ZnVuY3Rpb24gdGUodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIGVlKHQpe2xldCBlPSExO2lmKHRlKHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0IT10fSh0KSlyZXR1cm4hMTtlPSEwfXJldHVybiBlfXZhciByZT0vXHMvO3ZhciBuZT0vXlxzKy87ZnVuY3Rpb24gb2UodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJnJlLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UobmUsIiIpOnR9dmFyIGllPU5hTix1ZT0vXlstK10weFswLTlhLWZdKyQvaSxhZT0vXjBiWzAxXSskL2ksY2U9L14wb1swLTddKyQvaSxmZT1wYXJzZUludDt2YXIgc2U9MS8wLGxlPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBwZSh0KXtyZXR1cm4gdD8odD1mdW5jdGlvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoenQodCkpcmV0dXJuIGllO2lmKHcodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXcoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PW9lKHQpO3ZhciByPWFlLnRlc3QodCk7cmV0dXJuIHJ8fGNlLnRlc3QodCk/ZmUodC5zbGljZSgyKSxyPzI6OCk6dWUudGVzdCh0KT9pZTordH0odCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9YXN5bmMgZnVuY3Rpb24gaGUodCxlPXt9KXtpZihyPXQsIltvYmplY3QgQmxvYl0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpJiYhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSlyZXR1cm4gY29uc29sZS5sb2coImlucCIsdCksUHJvbWlzZS5yZWplY3QoImlucCBpcyBub3QgYSBCbG9iIG9yIEZpbGUiKTt2YXIgcjtsZXQgbj1YdChlLCJjaHVua1NpemUiKTtlZShuKXx8KG49NjcxMDg4NjQpLG49ZnVuY3Rpb24odCl7cmV0dXJuIGVlKHQpP3BlKHQpOjB9KG4pO2xldHtjcmVhdGU2NDpvfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLHIoMCxlKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiB2KHQpe3JldHVybiB0Jnl9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHYobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyxpLHUsaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksdihuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix2KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShadCkpLmluc3RhbmNlKX0oKSxpPW8oKSx1PTA7Zm9yKDt1PHQuc2l6ZTspe2xldCBlPXQuc2xpY2UodSx1K24pLHI9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO2kudXBkYXRlKG5ldyBVaW50OEFycmF5KHIpKSx1Kz1ufXJldHVybiBpLmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpfWxldCBjaGVja1NsaWNlc0hhc2g9YXN5bmMocixuLG8pPT57aWYoMD09PW10KHIpKXtyZXR1cm57ZXJyb3I6Im5vIGZpbGVTbGljZUhhc2hzIn19bGV0IGk9W107Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspe2xldCBhPXJbdV0sYz10LnJlc29sdmUobyxgJHtufV8ke2EuaX1gKSxmPSIiO2F3YWl0IGhlKG5ldyBCbG9iKFtlLnJlYWRGaWxlU3luYyhjKV0pKS50aGVuKCh0PT57Zj10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKF9wYXRoRmlsZSkiLGMsWXQoYyx7ZnM6ZX0pKSxjb25zb2xlLmxvZyh0KX0pKSxhLmg9PT1mJiZpLnB1c2goYS5pKX1yZXR1cm57c2xrczppfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1NsaWNlc0hhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tTbGljZXNIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o(e)}}(t);if(!i)return o("invalid worker"),null;function r(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return i.postMessage(n),s.once(t,t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)}),e}function o(e){s.emit("error",e)}return i.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),i.on("error",o),i.on("exit",e=>{1!==e&&o("exit code["+e+"] !== 1")}),function(){let e={mode:"init",type:"function",input:[...arguments]};i.postMessage(e)}([...arguments]),s.main=r,s.main=r,s.terminate=function(){i?(i.terminate(),i=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("unhandledRejection",e=>{console.log("outer:unhandledRejection",e)}),process.on("uncaughtException",e=>{console.log("outer:uncaughtException",e)}),process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(ii);var ri=Wt(ii.exports);function oi(r={}){let o=we(r,"port");gt(o)||(o=8080);let a=we(r,"useInert");_t(a)||(a=!0);let l=we(r,"pathStaticFiles");Re(l)||(l="dist");let c=we(r,"pathUploadTemp");Re(c)||(c="./uploadTemp"),Gt(c)||nn(c);let d=we(r,"apiName");Re(d)||(d="api");let u=we(r,"tokenType");Re(u)||(u="Bearer");let M=we(r,"sizeSlice");gt(M)||(M=1048576);let w=we(r,"verifyConn");Nt(w)||(w=()=>!0);let I=we(r,"corsOrigins",[]);Ft(I)||(I=["*"]);let y=we(r,"delayForSlice","");Tt(y)||(y=100),y=yt(y);let g=null;g=we(r,"serverHapi")?r.serverHapi:n.server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:I,credentials:!1}}});let m=en(),p=(e,...t)=>{setTimeout(()=>{m.emit(e,...t)},1)};async function L(e){let t=St(),n=St();return n.then(e=>{t.resolve(e)}).catch(e=>{t.reject(e)}),p("upload",e,n),t}async function h(e){let t=St(),n=St();return n.then(e=>{t.resolve(e)}).catch(e=>{t.reject(e)}),p("download",e,n),t}function C(e,t,n={}){let s=new i.Readable;s._read=()=>{},s.push(t),s.push(null);let r=we(n,"returnType",""),o=we(n,"returnMsg",""),a=e.response(s).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",s.readableLength);return Re(r)&&a.header("Return-Type",r),Re(o)&&a.header("Return-Msg",o),a}function D(e,t){return Re(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t=""),C(e,Zn({error:t}),{returnType:"error",returnMsg:t})}let f={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(e,t){let n=we(e,"headers");n=Be(n)?n:"";let s=we(e,"query");s=Be(s)?s:"";let r=we(n,"authorization","");r=Re(r)?r:"";{let i=!1;try{i=w({apiType:"main",authorization:r,query:s,headers:n,req:e}),xt(i)&&(i=await i.catch(e=>{console.log(e),i=!1}))}catch(e){console.log(e),i=!1}if(!0!==i)return D(t,"permission denied")}p("handler",{api:"apiMain",headers:n,query:s});let o=await(()=>{let t=St(),n=[],s=new i.Writable({write(e,t,s){n.push(e),s()}});return s.on("finish",()=>{}),e.payload.pipe(s),e.payload.on("end",()=>{let e=Buffer.concat(n);n=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),p("error",`receive payload error: ${e.message}`),t.reject(`receive payload error: ${e.message}`)}),t})(),a=Yn(new Uint8Array(o)),l={},c="",d="";return await async function(e){let t=St(),n=St();n.then(n=>{e.output=n,delete e.input,t.resolve(e)}).catch(e=>{t.reject(e)});{let t=we(e,"func",""),s=we(e,"input",null);p("execute",t,s,n)}return t}(a).then(e=>{l.success=e,c="success",d="need to parse"}).catch(e=>{l.error=e,c="error",d="need to parse"}),C(t,Zn(l),{returnType:c,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(e,t){let n=we(e,"headers");n=Be(n)?n:"";let s=we(e,"query");s=Be(s)?s:"";let i=we(n,"authorization","");i=Re(i)?i:"";{let e=w({apiType:"upload-controller",authorization:i,headers:n,query:s});if(xt(e)&&(e=await e),!0!==e)return D(t,"permission denied")}p("handler",{api:"apiUploadCheck",headers:n,query:s});let r=we(e,"payload.mode","");if("check-total-hash"!==r&&"check-slices-hash"!==r&&"merge-slices-push"!==r&&"merge-slices-get"!==r)return D(t,`invalid mode[${r}] in payload`);let o=we(e,"payload.fileHash","");if(!Re(o))return D(t,"invalid fileHash in payload");let a={},l="",d="";return await(async()=>{let t=null;if("check-total-hash"===r){let n=we(e,"payload.filename",""),s=we(e,"payload.fileSize","");if(t=await si(s,M,o,c),t.bAllHash){let e={from:"check-total-hash",filename:n,path:t.path},s=await L(e);t={...t,msg:s}}}else if("check-slices-hash"===r){let n=we(e,"payload.fileSliceHashs",[]);t=await ri(n,o,c)}else if("merge-slices-push"===r){let n=we(e,"payload.chunkTotal","");t={queueId:ei(o,n,c)}}else if("merge-slices-get"===r){let n=we(e,"payload.filename",""),s=we(e,"payload.queueId",""),i=ti(s,c);if(t={state:i.state,msg:i.msg,queueId:s,filename:n,path:i.path},"success"===i.state){let e={from:"merge-slices-get",filename:n,path:i.path},s=await L(e);t={...t,msg:s}}}return t})().then(e=>{a.success=e,l="success",d="need to parse"}).catch(e=>{a.error=e,l="error",d="need to parse"}),C(t,Zn(a),{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,s){let i=we(n,"headers");i=Be(i)?i:"";let r=we(n,"query");r=Be(r)?r:"";let o=we(i,"authorization","");o=Re(o)?o:"";{let e=w({apiType:"upload-slice",authorization:o,headers:i,query:r});if(xt(e)&&(e=await e),!0!==e)return D(s,"permission denied")}p("handler",{api:"apiUploadSlice",headers:i,query:r});let a=we(i,"chunk-index",""),l=we(i,"chunk-total",""),d=we(i,"package-id","");if(!Tt(a))return D(s,"invalid chunkIndex in headers");if(a=yt(a),!Tt(l))return D(s,"invalid chunkTotal in headers");if(l=yt(l),!Re(d))return D(s,"invalid packageId in headers");let u=e.resolve(c,`${d}_${a}`),M=t.createWriteStream(u),I={},g="",m="";return await(()=>{let e=St();return n.payload.pipe(M),n.payload.on("end",()=>{setTimeout(()=>{e.resolve(`chunk[${a+1}/${l}] of packageId[${d}] done`)},y)}),n.payload.on("error",t=>{console.log(`apiUploadSlice req.payload chunk[${a+1}/${l}] of packageId[${d}] err`,t),p("error",`receive chunk[${a+1}/${l}] of packageId[${d}] error: ${t.message}`),e.reject(`receive chunk[${a+1}/${l}] of packageId[${d}] error: ${t.message}`)}),e})().then(e=>{I.success=e,g="success",m="need to parse"}).catch(e=>{I.error=e,g="error",m="need to parse",p("error",e)}),C(s,Zn(I),{returnType:g,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(e,t){let n=we(e,"headers");n=Be(n)?n:"";let s=we(e,"query");s=Be(s)?s:"";let i=we(n,"authorization","");i=Re(i)?i:"";{let e=w({apiType:"download-get-filename",authorization:i,headers:n,query:s});if(xt(e)&&(e=await e),!0!==e)return D(t,"permission denied")}p("handler",{api:"apiDownloadGetFilename",headers:n,query:s});let r=we(e,"payload.fileId","");if(!Re(r))return D(t,"invalid fileId in payload");let o={fileId:r,token:Re(i)?i.slice(rn(u).length+1):""},a={},l="",c="";await h(o).then(e=>{a.success=e,l="success",c="need to parse"}).catch(e=>{a.error=e,l="error",c="need to parse"});let d=we(a,"success"),M=we(d,"streamRead");try{M.destroy()}catch(e){}let I=we(d,"filename");return Re(I)?(a={success:{filename:I}},C(t,Zn(a),{returnType:l,returnMsg:c})):D(t,"invalid filename")}},T={path:`/${d}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=we(e,"headers");n=Be(n)?n:"";let s=we(e,"query");s=Be(s)?s:"";let i=we(s,"token","");i=Re(i)?i:"";let r="";Re(i)&&(r=`${u} ${i}`);{let e=w({apiType:"download-get-file",authorization:r,headers:n,query:s});if(xt(e)&&(e=await e),!0!==e)return D(t,"permission denied")}p("handler",{api:"apiDownloadGetFilename",headers:n,query:s});let o=we(s,"fileId","");if(o=Re(o)?o:"",!Re(o))return D(t,"invalid fileId in query");let a={fileId:o,token:i},l={};if(await h(a).then(e=>{l.success=e}).catch(e=>{l.error=e}),In(l,"error"))return D(t,"can not get file from fileId");let c=we(l,"success"),d=we(c,"streamRead"),M=we(c,"fileSize");if(!sn(M)){try{d.destroy()}catch(e){}return D(t,"invalid fileSize")}let I=we(c,"fileType");if(!Re(I)){try{d.destroy()}catch(e){}return D(t,"invalid fileType")}return I=rn(I),t.response(d).type(I).header("Content-Length",M)}},Z={path:`/${d}/dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=we(e,"headers");n=Be(n)?n:"";let s=we(e,"query");s=Be(s)?s:"";let i=we(n,"authorization","");i=Re(i)?i:"";{let e=w({apiType:"download",authorization:i,headers:n,query:s});if(xt(e)&&(e=await e),!0!==e)return D(t,"permission denied")}p("handler",{api:"apiDownload",headers:n,query:s});let r=we(e,"payload.fileId","");if(!Re(r))return D(t,"invalid fileId in payload");let o={fileId:r,token:Re(i)?i.slice(rn(u).length+1):""},a={};if(await h(o).then(e=>{a.success=e}).catch(e=>{a.error=e}),In(a,"error"))return D(t,"can not get file from fileId");let l=we(a,"success"),c=we(l,"streamRead"),d=we(l,"filename");if(!Re(d)){try{c.destroy()}catch(e){}return D(t,"invalid filename")}d=wn(d);let M=we(l,"fileSize");if(!sn(M)){try{c.destroy()}catch(e){}return D(t,"invalid fileSize")}let I=we(l,"fileType");if(!Re(I)){try{c.destroy()}catch(e){}return D(t,"invalid fileType")}return I=rn(I),t.response(c).type(I).header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",M)}};we(r,"serverHapi")?g.route([f,b,N,x,T,Z]):async function(){a&&await g.register(s);let e=[];if(a){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}};e=[...e,t]}e=[...e,f,b,N,x,T,Z],g.route(e),await g.start(),console.log(`Server running at: ${g.info.uri}`)}();return m.stop=()=>{g.stop()},m}var ai=function(){return u.Date.now()},li=Math.max,ci=Math.min;function di(e,t,n){var s,i,r,o,a,l,c=0,d=!1,u=!1,M=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function w(t){var n=s,r=i;return s=i=void 0,c=t,o=e.apply(r,n)}function I(e){var n=e-l;return void 0===l||n>=t||n<0||u&&e-c>=r}function y(){var e=ai();if(I(e))return g(e);a=setTimeout(y,function(e){var n=t-(e-l);return u?ci(n,r-(e-c)):n}(e))}function g(e){return a=void 0,M&&s?w(e):(s=i=void 0,o)}function m(){var e=ai(),n=I(e);if(s=arguments,i=this,l=e,n){if(void 0===a)return function(e){return c=e,a=setTimeout(y,t),d?w(e):o}(l);if(u)return clearTimeout(a),a=setTimeout(y,t),w(l)}return void 0===a&&(a=setTimeout(y,t)),o}return t=st(t)||0,N(n)&&(d=!!n.leading,r=(u="maxWait"in n)?li(st(n.maxWait)||0,t):r,M="trailing"in n?!!n.trailing:M),m.cancel=function(){void 0!==a&&clearTimeout(a),c=0,s=l=i=a=void 0},m.flush=function(){return void 0===a?o:g(ai())},m}var ui=function(){try{var e=W(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Mi=ui;function wi(e,t,n){"__proto__"==t&&Mi?Mi(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Ii(e,t,n){(void 0!==n&&!U(e[t],n)||void 0===n&&!(t in e))&&wi(e,t,n)}var yi="object"==typeof exports&&exports&&!exports.nodeType&&exports,gi=yi&&"object"==typeof module&&module&&!module.nodeType&&module,mi=gi&&gi.exports===yi?u.Buffer:void 0,pi=mi?mi.allocUnsafe:void 0;function Li(e,t){if(t)return e.slice();var n=e.length,s=pi?pi(n):new e.constructor(n);return e.copy(s),s}function hi(e){var t=new e.constructor(e.byteLength);return new Wn(t).set(new Wn(e)),t}function Ci(e,t){var n=t?hi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Di(e,t){var n=-1,s=e.length;for(t||(t=Array(s));++n<s;)t[n]=e[n];return t}var fi=Object.create,bi=function(){function e(){}return function(t){if(!N(t))return{};if(fi)return fi(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),Ni=bi;function xi(e){return"function"!=typeof e.constructor||Ee(e)?{}:Ni(mt(e))}function Ti(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Zi=Object.prototype.hasOwnProperty;function Xi(e,t,n){var s=e[t];Zi.call(e,t)&&U(s,n)&&(void 0!==n||t in e)||wi(e,t,n)}function Si(e,t,n,s){var i=!n;n||(n={});for(var r=-1,o=t.length;++r<o;){var a=t[r],l=s?s(n[a],e[a],a,n,e):void 0;void 0===l&&(l=e[a]),i?wi(n,a,l):Xi(n,a,l)}return n}var vi=Object.prototype.hasOwnProperty;function Ai(e){if(!N(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=Ee(e),n=[];for(var s in e)("constructor"!=s||!t&&vi.call(e,s))&&n.push(s);return n}function Yi(e){return Qe(e)?ze(e,!0):Ai(e)}function Gi(e,t,n,s,i,r,o){var a=Ti(e,n),c=Ti(t,n),d=o.get(c);if(d)Ii(e,n,d);else{var u,M=r?r(a,c,n+"",e,t,o):void 0,w=void 0===M;if(w){var I=l(c),y=!I&&fe(c),g=!I&&!y&&Ge(c);M=c,I||y||g?l(a)?M=a:h(u=a)&&Qe(u)?M=Di(a):y?(w=!1,M=Li(c,!0)):g?(w=!1,M=Ci(c,!0)):M=[]:ft(c)||Le(c)?(M=a,Le(a)?M=function(e){return Si(e,Yi(e))}(a):N(a)&&!x(a)||(M=xi(c))):w=!1}w&&(o.set(c,M),i(M,c,s,r,o),o.delete(c)),Ii(e,n,M)}}function ji(e,t,n,s,i){e!==t&&mn(t,function(r,o){if(i||(i=new Gn),N(r))Gi(e,t,o,n,ji,s,i);else{var a=s?s(Ti(e,o),r,o+"",e,t,i):void 0;void 0===a&&(a=r),Ii(e,o,a)}},Yi)}var zi=Math.max;function Ki(e,t,n){return t=zi(void 0===t?e.length-1:t,0),function(){for(var s=arguments,i=-1,r=zi(s.length-t,0),o=Array(r);++i<r;)o[i]=s[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=s[i];return a[t]=n(o),function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}(e,this,a)}}var Ei=Mi?function(e,t){return Mi(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:hn,Wi=Ei,ki=Date.now;var Vi=function(e){var t=0,n=0;return function(){var s=ki(),i=16-(s-n);if(n=s,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Wi),Hi=Vi;var Qi,Ui=(Qi=function(e,t,n){ji(e,t,n)},function(e,t){return Hi(Ki(e,t,hn),e+"")}(function(e,t){var n=-1,s=t.length,i=s>1?t[s-1]:void 0,r=s>2?t[2]:void 0;for(i=Qi.length>3&&"function"==typeof i?(s--,i):void 0,r&&function(e,t,n){if(!N(n))return!1;var s=typeof t;return!!("number"==s?Qe(n)&&Ne(t,n.length):"string"==s&&t in n)&&U(n[t],e)}(t[0],t[1],r)&&(i=s<3?void 0:i,s=1),e=Object(e);++n<s;){var o=t[n];o&&Qi(e,o,n,i)}return e})),Ji=Ui;function Ri(e,n={}){let s={};if(Be(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=en()),!In(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let i=we(n,"fpTableTags","");Re(i)||(i="./tableTags.json");let r=we(n,"genTag");Nt(r)||(r=()=>Ht()+"|"+Jt(6));let o=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)};function a(){let e={};try{if(t.existsSync(i)){let n=Pe(t.readFileSync(i,"utf8"));Be(n)&&(e=n)}}catch(e){o("error",{msg:"readTableTags catch",err:e})}return e}function l(){try{let e=function(e,t=!1){if(Pt(e))return"";let n="";try{n=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){n=""}return n}(s);t.writeFileSync(i,e,"utf8")}catch(e){o("error",{msg:"writeTableTags catch",err:e})}}let c=di(()=>{l(),o("changeTableTags",s)},200);return e.readTableTags=a,e.writeTableTags=l,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)s=e;else if("useStorageOnly"===t)s=a();else if("useInputFirst"===t)s=Ji(a(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);s=Ji(e,a())}l()},e.setTableTags=function(e={}){s=Ji(s,e),l()},e.getTableTags=function(){return s},e.updateTableTag=function(e){s[e]=r(),c()},e}var Pi=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Un(t,Fn(e)),e=mt(e);return t}:Pn,Oi=Pi;function Bi(e){return Jn(e,Yi,Oi)}var Fi=Object.prototype.hasOwnProperty;var _i=/\w*$/;var qi=M?M.prototype:void 0,$i=qi?qi.valueOf:void 0;function er(e,t,n){var s,i=e.constructor;switch(t){case"[object ArrayBuffer]":return hi(e);case"[object Boolean]":case"[object Date]":return new i(+e);case"[object DataView]":return function(e,t){var n=t?hi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Ci(e,n);case"[object Map]":case"[object Set]":return new i;case"[object Number]":case"[object String]":return new i(e);case"[object RegExp]":return function(e){var t=new e.constructor(e.source,_i.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return s=e,$i?Object($i.call(s)):{}}}var tr=Ae&&Ae.isMap,nr=tr?Ze(tr):function(e){return h(e)&&"[object Map]"==Is(e)};var sr=Ae&&Ae.isSet,ir=sr?Ze(sr):function(e){return h(e)&&"[object Set]"==Is(e)},rr="[object Arguments]",or="[object Function]",ar="[object Object]",lr={};function cr(e,t,n,s,i,r){var o,a=1&t,c=2&t,d=4&t;if(n&&(o=i?n(e,s,i,r):n(e)),void 0!==o)return o;if(!N(e))return e;var u=l(e);if(u){if(o=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Fi.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!a)return Di(e,o)}else{var M=Is(e),w=M==or||"[object GeneratorFunction]"==M;if(fe(e))return Li(e,a);if(M==ar||M==rr||w&&!i){if(o=c||w?{}:xi(e),!a)return c?function(e,t){return Si(e,Oi(e),t)}(e,function(e,t){return e&&Si(t,Yi(t),e)}(o,e)):function(e,t){return Si(e,Fn(e),t)}(e,function(e,t){return e&&Si(t,Ue(t),e)}(o,e))}else{if(!lr[M])return i?e:{};o=er(e,M,a)}}r||(r=new Gn);var I=r.get(e);if(I)return I;r.set(e,o),ir(e)?e.forEach(function(s){o.add(cr(s,t,n,s,e,r))}):nr(e)&&e.forEach(function(s,i){o.set(i,cr(s,t,n,i,e,r))});var y=u?void 0:(d?c?Bi:_n:c?Yi:Ue)(e);return yn(y||e,function(s,i){y&&(s=e[i=s]),Xi(o,i,cr(s,t,n,i,e,r))}),o}lr[rr]=lr["[object Array]"]=lr["[object ArrayBuffer]"]=lr["[object DataView]"]=lr["[object Boolean]"]=lr["[object Date]"]=lr["[object Float32Array]"]=lr["[object Float64Array]"]=lr["[object Int8Array]"]=lr["[object Int16Array]"]=lr["[object Int32Array]"]=lr["[object Map]"]=lr["[object Number]"]=lr[ar]=lr["[object RegExp]"]=lr["[object Set]"]=lr["[object String]"]=lr["[object Symbol]"]=lr["[object Uint8Array]"]=lr["[object Uint8ClampedArray]"]=lr["[object Uint16Array]"]=lr["[object Uint32Array]"]=!0,lr["[object Error]"]=lr[or]=lr["[object WeakMap]"]=!1;function dr(e){return cr(e,5)}var ur=xs("length"),Mr="\\ud800-\\udfff",wr="["+Mr+"]",Ir="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",yr="\\ud83c[\\udffb-\\udfff]",gr="[^"+Mr+"]",mr="(?:\\ud83c[\\udde6-\\uddff]){2}",pr="[\\ud800-\\udbff][\\udc00-\\udfff]",Lr="(?:"+Ir+"|"+yr+")"+"?",hr="[\\ufe0e\\ufe0f]?",Cr=hr+Lr+("(?:\\u200d(?:"+[gr,mr,pr].join("|")+")"+hr+Lr+")*"),Dr="(?:"+[gr+Ir+"?",Ir,mr,pr,wr].join("|")+")",fr=RegExp(yr+"(?="+yr+")|"+Dr+Cr,"g");function br(e){return js(e)?function(e){for(var t=fr.lastIndex=0;fr.test(e);)++t;return t}(e):ur(e)}function Nr(e){if(null==e)return 0;if(Qe(e))return"string"==typeof(t=e)||!l(t)&&h(t)&&"[object String]"==L(t)?br(e):e.length;var t,n=Is(e);return"[object Map]"==n||"[object Set]"==n?e.size:He(e).length}function xr(e={}){let t=en(),n={},s=null,i=we(e,"timeAlive");gt(i)||(i=1e4),i=yt(i);let r=we(e,"timeDetect");return gt(r)||(r=50),r=yt(r),t.trigger=function(e,o){Re(e)?(In(n,e)||setTimeout(()=>{t.emit("message",{eventName:"enter",key:e,data:o,now:Nr(n)})},1),n[e]={data:o,time:Date.now()},null===s&&(s=setInterval(()=>{Cn(n,(e,s)=>{if(Date.now()-e.time>i){let e=dr(n[s]);delete n[s],t.emit("message",{eventName:"leave",key:s,data:e.data,now:Nr(n)})}}),Be(n)||(clearInterval(s),s=null)},r))):console.log("trigger need key")},t.get=function(){let e=[];return Cn(n,(t,n)=>{e.push({key:n,data:t.data})}),e=dr(e),e},t}function Tr(e,t={}){let n={};if(Be(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=en()),!In(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)},i=xr(),r=setInterval(()=>{let e=Ss(i.get(),"key"),t={};Cn(e,e=>{t[e]=we(n,e,[])}),n=t},1e3);i.on("message",function({eventName:e,key:t,data:n,now:i}){"enter"===e?s("clientEnter",t,n):"leave"===e&&s("clientLeave",t,n),s("clientChange",i)}),e.on("execute",function(e,t,r){if("[sys:polling]"===e)try{let e=we(t,"clientId",""),s=we(n,e,[]);s=dr(s),n[e]=[],i.trigger(e,t),r.resolve(s)}catch(e){s("error",e),r.reject("[sys:polling] error")}});return e.getClients=i.get,e.getMessages=()=>dr(n),e.broadcast=e=>{if(!Be(n))return;let t={};Cn(n,(n,s)=>{n.push({mode:"broadcast",data:e}),t[s]=n}),n=t},e.clearBroadcast=()=>{clearInterval(r)},e}let Zr=(e,t)=>{let n={};return Cn(e,e=>{let s=e,i=we(t,e,"");Re(i)&&(n[s]=i)}),n};function Xr(e,t,n,s={}){if(!Be(e))throw new Error("invalid instWConverServer");if(0===Nr(t))return e;if(!Be(n))return e;let i=we(s,"genTag");Nt(i)||(i=()=>Ht()+"|"+Jt(6));let r={};return Cn(t,e=>{r[e]=i()}),e.initTableTags(r,"useInputOnly"),Cn(t,t=>{let s=n[t];if(!s)throw new Error(`invalid kpOrm[${t}]`);try{s.on("change",()=>{e.updateTableTag(t)})}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}}),e.on("changeTableTags",n=>{e.broadcast({mode:"syncKpTable",data:Zr(t,n)})}),e}function Sr(e,t,n,s){for(var i=n-1,r=e.length;++i<r;)if(s(e[i],t))return i;return-1}var vr=Array.prototype.splice;function Ar(e,t){return e&&e.length&&t&&t.length?function(e,t,n,s){var i=s?Sr:Ys,r=-1,o=t.length,a=e;for(e===t&&(t=Di(t)),n&&(a=re(e,Ze(n)));++r<o;)for(var l=0,c=t[r],d=n?n(c):c;(l=i(a,d,l,s))>-1;)a!==e&&vr.call(a,l,1),vr.call(e,l,1);return e}(e,t):e}function Yr(e,t={}){if(!Be(e))throw new Error("invalid instWConverServer");let n=we(t,"getUserIdByToken",null);Nt(n)||(n=async()=>"");let s=we(t,"useDbOrm",null);_t(s)||(s=!1);let i=null;if(s&&(i=we(t,"operOrm",null),!Nt(i)))throw new Error("invalid opt.operOrm when useDbOrm=true");let r=[];if(s&&(r=we(t,"tableNames",null),!Rt(r)))throw new Error("invalid opt.tableNames when useDbOrm=true");let o=[];s&&(o=we(t,"methods",null),Rt(o)||(o=["select","insert","save","del"]));let a=we(t,"kpFunExt",null);let l={};async function c(e,t,s){if(!Re(e))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!In(t,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=rn(t.__sysToken__),!In(t,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;t=t.__sysInputArgs__;let r="";if(r=n(i),xt(r)&&(r=await r),Re(r)||(r=""),"[sys:getFuncList]"===e){let e=Ue(l);e=function(e,t){if(!Ft(e))return[];if((Oe(t)||lt(t)||Je(t)||_t(t))&&(t=[t]),!Ft(t))return e;let n=dr(e);return Ar(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!In(l,e))return s.resolve({state:"error",msg:`invalid func[${e}]`}),s;let o=l[e];try{let e=await vt(o)(r,...t);s.resolve(e)}catch(t){s.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return s}return s&&(r=dr(r),l=function(e,t,n){let s={};return Cn(e,e=>{Cn(t,t=>{s[`${e}.${t}`]=async function(s,i){return await n(s,e,t,i)}})}),s}(r,o,i)),Be(a)&&Cn(a,(e,t)=>{l[t]=e}),e.on("execute",async function(t,n,s){await c(t,n,s).catch(n=>{e.emit("error",n),s.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})})}),e}function Gr(e,t={}){if(Be(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=en()),!In(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=we(t,"fpTableTags",null);Re(n)||(n="./tableTags.json");let s=we(t,"genTag");Nt(s)||(s=()=>Ht()+"|"+Jt(6)),e=new Tr(e=new Ri(e,{fpTableTags:n,genTag:s}));let i=we(t,"useDbOrm",null);_t(i)||(i=!0);let r=we(t,"kpOrm",null),o=we(t,"operOrm",null),a=we(t,"tableNamesExec",null),l=we(t,"methodsExec",null),c=we(t,"tableNamesSync",null),d=we(t,"getUserIdByToken",null),u=we(t,"kpFunExt",null);if(Be(u)||(u={}),u={...u,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:Zr(c,t)}}},e=new Yr(e,{getUserIdByToken:d,useDbOrm:i,operOrm:o,tableNames:a,methods:l,kpFunExt:u}),i){if(!Oe(r))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new Xr(e,c,r,{genTag:s})}return e}function jr(e={}){let t=en(),i=null,r=null,o=we(e,"port");dt(o)||(o=8080);let a=we(e,"corsOrigins",[]);Ft(a)||(a=["http://localhost"]);let l=we(e,"delayForSlice","");Tt(l)||(l=100),l=yt(l);let c=we(e,"useInert");_t(c)||(c=!0);let d=we(e,"pathStaticFiles");Re(d)||(d="dist");let u=we(e,"apis");Ft(u)||(u=[]);let M=we(e,"apiName");Re(M)||(M="api");let w=we(e,"pathUploadTemp");Re(w)||(w="./uploadTemp"),Gt(w)||nn(w);let I=we(e,"tokenType");Re(I)||(I="Bearer");let y=we(e,"sizeSlice");gt(y)||(y=1048576);let g=we(e,"verifyConn");Nt(g)||(g=()=>!0);let m=we(e,"getUserIdByToken",null),p=we(e,"useDbOrm",null);_t(p)||(p=!0);let L=we(e,"kpOrm",null),h=we(e,"operOrm",null),C=we(e,"tableNamesExec",null),D=we(e,"methodsExec",null),f=we(e,"tableNamesSync",null),b=we(e,"kpFunExt",null),N=we(e,"fnTableTags",null),x=we(e,"genTag");Nt(x)||(x=()=>Ht()+"|"+Jt(6));let T=we(e,"showLog");_t(T)||(T=!0);(async()=>{await(async()=>{i=new n.Server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:a,credentials:!1}}}),c&&await i.register(s);let e=[];c&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}}]),e=[...e,...u],i.route(e)})(),await(async()=>{r=new oi({serverHapi:i,apiName:M,pathUploadTemp:w,tokenType:I,sizeSlice:y,verifyConn:g,corsOrigins:a,delayForSlice:l}),r.on("open",function(){T&&console.log(`Server[port:${o}]: open`)}),r.on("clientChange",function(e){T&&console.log(`Server[port:${o}]: now clients: ${e}`)})})(),await(async()=>{r=new Gr(r,{getUserIdByToken:m,useDbOrm:p,kpOrm:L,operOrm:h,tableNamesExec:C,tableNamesSync:f,methodsExec:D,kpFunExt:b,fnTableTags:N,genTag:x}),r.on("error",e=>{t.emit("error",e)})})(),await i.start(),T&&console.log(`Server running at: ${i.info.uri}`)})().catch(e=>{t.emit("error",e)}),process.on("unhandledRejection",e=>{console.log("unhandledRejection",e),t.emit("error",{mode:"unhandledRejection",err:e})}),process.on("uncaughtException",e=>{console.log("uncaughtException",e),t.emit("error",{mode:"uncaughtException",err:e})});return t.getServer=async()=>(await tn(()=>null!==i),i),t.getInstWConverServer=async()=>(await tn(()=>null!==r),r),t}function zr(e,t){let n=St();if(!Rt(e)&&!Oe(e))return n.reject("rs is not an array or object"),n;let s=!1;if(Oe(e)){s=!0;let t=[];Cn(e,(e,n)=>{t.push({k:n,v:e})}),e=t}Nt(t)||(t=function(e){return e});let i=-1,r=[];return e.reduce(function(e,n){return e.then(function(e){r.push(e),i+=1;let o=i,a=n;return s&&(o=n.k,a=n.v),Nt(t)?t(a,o):a})},Promise.resolve()).then(function(e){var t,s,i,o;r.push(e),o=null==(t=r)?0:t.length,r=o?vs(t,(s=i||void 0===s?1:ot(s))<0?0:s,o):[],n.resolve(r)}).catch(function(e){n.reject(e)}),n}let Kr={backup:async function(e){return await zr(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,n,s,i=!1){if(!zt(e))throw console.log("fp",e),new Error("fp is not exist");if(!Be(n))throw console.log("woItems",n),new Error("invalid woItems");Nt(s)||(s=null),_t(i)||(i=!1);let r=t.readFileSync(e,"utf8");r=Bs(r);let o=Pe(r);Nt(s)&&s(),await zr(o,async e=>{console.log("recover...",e.name),i&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return Nr(e.data)>0&&(t=await n[e.name].insert(e.data)),t})}};function Er(){if(!Nt(Vt))throw new Error("invalid dayjs");return Vt().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var Wr={exports:{}},kr={},Vr={exports:{}},Hr={};function Qr(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Ur=/javascript\s*\:/gim;Hr.whiteList=Qr(),Hr.getDefaultWhiteList=Qr,Hr.onAttr=function(e,t,n){},Hr.onIgnoreAttr=function(e,t,n){},Hr.safeAttrValue=function(e,t){return Ur.test(t)?"":t};var Jr={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var Rr=function(e,t){";"!==(e=Jr.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,s=!1,i=0,r=0,o="";function a(){if(!s){var n=Jr.trim(e.slice(i,r)),a=n.indexOf(":");if(-1!==a){var l=Jr.trim(n.slice(0,a)),c=Jr.trim(n.slice(a+1));if(l){var d=t(i,o.length,l,c,n);d&&(o+=d+"; ")}}}i=r+1}for(;r<n;r++){var l=e[r];if("/"===l&&"*"===e[r+1]){var c=e.indexOf("*/",r+2);if(-1===c)break;i=(r=c+1)+1,s=!1}else"("===l?s=!0:")"===l?s=!1:";"===l?s||a():"\n"===l&&a()}return Jr.trim(o)},Pr=Hr,Or=Rr;function Br(e){return null==e}function Fr(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||Pr.whiteList,e.onAttr=e.onAttr||Pr.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||Pr.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||Pr.safeAttrValue,this.options=e}Fr.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,s=t.onAttr,i=t.onIgnoreAttr,r=t.safeAttrValue;return Or(e,function(e,t,o,a,l){var c=n[o],d=!1;if(!0===c?d=c:"function"==typeof c?d=c(a):c instanceof RegExp&&(d=c.test(a)),!0!==d&&(d=!1),a=r(o,a)){var u,M={position:t,sourcePosition:e,source:l,isWhite:d};return d?Br(u=s(o,a,M))?o+":"+a:u:Br(u=i(o,a,M))?void 0:u}})};var _r=Fr;!function(e,t){var n=Hr,s=_r;for(var i in(t=e.exports=function(e,t){return new s(t).process(e)}).FilterCSS=s,n)t[i]=n[i];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(Vr,Vr.exports);var qr=Vr.exports,$r={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},eo=qr.FilterCSS,to=qr.getDefaultWhiteList,no=$r;function so(){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 io=new eo;function ro(e){return e.replace(oo,"<").replace(ao,">")}var oo=/</g,ao=/>/g,lo=/"/g,co=/"/g,uo=/&#([a-zA-Z0-9]*);?/gim,Mo=/:?/gim,wo=/&newline;?/gim,Io=/((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,yo=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,go=/u\s*r\s*l\s*\(.*/gi;function mo(e){return e.replace(lo,""")}function po(e){return e.replace(co,'"')}function Lo(e){return e.replace(uo,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function ho(e){return e.replace(Mo,":").replace(wo," ")}function Co(e){for(var t="",n=0,s=e.length;n<s;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return no.trim(t)}function Do(e){return e=Co(e=ho(e=Lo(e=po(e))))}function fo(e){return e=ro(e=mo(e))}kr.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"]},kr.getDefaultWhiteList=so,kr.onTag=function(e,t,n){},kr.onIgnoreTag=function(e,t,n){},kr.onTagAttr=function(e,t,n){},kr.onIgnoreTagAttr=function(e,t,n){},kr.safeAttrValue=function(e,t,n,s){if(n=Do(n),"href"===t||"src"===t){if("#"===(n=no.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(Io.lastIndex=0,Io.test(n))return""}else if("style"===t){if(yo.lastIndex=0,yo.test(n))return"";if(go.lastIndex=0,go.test(n)&&(Io.lastIndex=0,Io.test(n)))return"";!1!==s&&(n=(s=s||io).process(n))}return n=fo(n)},kr.escapeHtml=ro,kr.escapeQuote=mo,kr.unescapeQuote=po,kr.escapeHtmlEntities=Lo,kr.escapeDangerHtml5Entities=ho,kr.clearNonPrintableCharacter=Co,kr.friendlyAttrValue=Do,kr.escapeAttrValue=fo,kr.onIgnoreTagStripAll=function(){return""},kr.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),s=[],i=!1;return{onIgnoreTag:function(r,o,a){if(function(t){return!!n||-1!==no.indexOf(e,t)}(r)){if(a.isClosing){var l="[/removed]",c=a.position+10;return s.push([!1!==i?i:a.position,c]),i=!1,l}return i||(i=a.position),"[removed]"}return t(r,o,a)},remove:function(e){var t="",n=0;return no.forEach(s,function(s){t+=e.slice(n,s[0]),n=s[1]}),t+=e.slice(n)}}},kr.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var s=e.indexOf("\x3c!--",n);if(-1===s){t+=e.slice(n);break}t+=e.slice(n,s);var i=e.indexOf("--\x3e",s);if(-1===i)break;n=i+3}return t},kr.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},kr.attributeWrapSign='"',kr.cssFilter=io,kr.getDefaultCSSWhiteList=to;var bo={},No=$r;function xo(e){var t,n=No.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=No.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function To(e){return"</"===e.slice(0,2)}var Zo=/[^a-zA-Z0-9\\_:.-]/gim;function Xo(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function So(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function vo(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Ao(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}bo.parseTag=function(e,t,n){var s="",i=0,r=!1,o=!1,a=0,l=e.length,c="",d="";e:for(a=0;a<l;a++){var u=e.charAt(a);if(!1===r){if("<"===u){r=a;continue}}else if(!1===o){if("<"===u){s+=n(e.slice(i,a)),r=a,i=a;continue}if(">"===u||a===l-1){s+=n(e.slice(i,r)),c=xo(d=e.slice(r,a+1)),s+=t(r,s.length,c,d,To(d)),i=a+1,r=!1;continue}if('"'===u||"'"===u)for(var M=1,w=e.charAt(a-M);""===w.trim()||"="===w;){if("="===w){o=u;continue e}w=e.charAt(a-++M)}}else if(u===o){o=!1;continue}}return i<l&&(s+=n(e.substr(i))),s},bo.parseAttr=function(e,t){var n=0,s=0,i=[],r=!1,o=e.length;function a(e,n){if(!((e=(e=No.trim(e)).replace(Zo,"").toLowerCase()).length<1)){var s=t(e,n||"");s&&i.push(s)}}for(var l=0;l<o;l++){var c,d=e.charAt(l);if(!1!==r||"="!==d)if(!1===r||l!==s)if(/\s|\n|\t/.test(d)){if(e=e.replace(/\s|\n|\t/g," "),!1===r){if(-1===(c=Xo(e,l))){a(No.trim(e.slice(n,l))),r=!1,n=l+1;continue}l=c-1;continue}if(-1===(c=vo(e,l-1))){a(r,Ao(No.trim(e.slice(n,l)))),r=!1,n=l+1;continue}}else;else{if(-1===(c=e.indexOf(d,l+1)))break;a(r,No.trim(e.slice(s+1,c))),r=!1,n=(l=c)+1}else r=e.slice(n,l),n=l+1,s='"'===e.charAt(n)||"'"===e.charAt(n)?n:So(e,l+1)}return n<e.length&&(!1===r?a(e.slice(n)):a(r,Ao(No.trim(e.slice(n))))),No.trim(i.join(" "))};var Yo=qr.FilterCSS,Go=kr,jo=bo,zo=jo.parseTag,Ko=jo.parseAttr,Eo=$r;function Wo(e){return null==e}function ko(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=Go.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var n in e)Array.isArray(e[n])?t[n.toLowerCase()]=e[n].map(function(e){return e.toLowerCase()}):t[n.toLowerCase()]=e[n];return t}(e.whiteList||e.allowList):e.whiteList=Go.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":Go.attributeWrapSign,e.onTag=e.onTag||Go.onTag,e.onTagAttr=e.onTagAttr||Go.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||Go.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||Go.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||Go.safeAttrValue,e.escapeHtml=e.escapeHtml||Go.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new Yo(e.css))}ko.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,s=n.whiteList,i=n.onTag,r=n.onIgnoreTag,o=n.onTagAttr,a=n.onIgnoreTagAttr,l=n.safeAttrValue,c=n.escapeHtml,d=t.attributeWrapSign,u=t.cssFilter;n.stripBlankChar&&(e=Go.stripBlankChar(e)),n.allowCommentTag||(e=Go.stripCommentTag(e));var M=!1;n.stripIgnoreTagBody&&(M=Go.StripTagBody(n.stripIgnoreTagBody,r),r=M.onIgnoreTag);var w=zo(e,function(e,t,n,M,w){var I={sourcePosition:e,position:t,isClosing:w,isWhite:Object.prototype.hasOwnProperty.call(s,n)},y=i(n,M,I);if(!Wo(y))return y;if(I.isWhite){if(I.isClosing)return"</"+n+">";var g=function(e){var t=Eo.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=Eo.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=Eo.trim(e.slice(0,-1))),{html:e,closing:n}}(M),m=s[n],p=Ko(g.html,function(e,t){var s=-1!==Eo.indexOf(m,e),i=o(n,e,t,s);return Wo(i)?s?(t=l(n,e,t,u))?e+"="+d+t+d:e:Wo(i=a(n,e,t,s))?void 0:i:i});return M="<"+n,p&&(M+=" "+p),g.closing&&(M+=" /"),M+=">"}return Wo(y=r(n,M,I))?c(M):y},c);return M&&(w=M.remove(w)),w};var Vo=ko;!function(e,t){var n=kr,s=bo,i=Vo;function r(e,t){return new i(t).process(e)}(t=e.exports=r).filterXSS=r,t.FilterXSS=i,function(){for(var e in n)t[e]=n[e];for(var i in s)t[i]=s[i]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(Wr,Wr.exports);var Ho=Wt(Wr.exports);function Qo(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Uo(e){let t=function(){let e=Qo();return Ho||e.xss}();let n=function e(n){return Rt(n)||Oe(n)?(Cn(n,function(t,s){n[s]=e(t)}),n):Re(n)?t(n,{onIgnoreTagAttr:function(e,n,s,i){if("style"===n)return n+'="'+t.escapeAttrValue(s)+'"'}}):n}(dr(e));return n}let Jo=null,Ro=null;function Po(e,t,n,s="save"){if(!Be(Jo))throw console.log("ds",Jo),new Error("invalid ds");let i=Jo[e].keys,r=!1;Rt(n)||(r=!0,n=[n]);let o=Er();return s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&Cn(n,(e,s)=>{n[s].userId=t}),i.indexOf("timeCreate")>=0&&Cn(n,(e,t)=>{n[t].timeCreate=o}),i.indexOf("userIdUpdate")>=0&&Cn(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&Cn(n,(e,t)=>{n[t].timeUpdate=o})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&Cn(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&Cn(n,(e,t)=>{n[t].timeUpdate=o})),n=Ss(n,(e,t)=>{let n={};return Cn(e,(e,t)=>{e=Uo(e),n[t]=e}),n}),n=r?n[0]:n}async function Oo(e,t,n,s){let i,r=null;if(!Be(Ro))return Promise.reject("無有效woItems");let o=we(Ro,t,null);if(null===o)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(i=await o.select(s).catch(e=>{console.log(`${t}.select catch`,e),r="取得資料失敗"}),Re(r))return Promise.reject(r)}else if("insert"===n||"save"===n){try{s=Po(t,e,s,n)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if("insert"===n?i=await o.insert(s).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}):"save"===n&&(i=await o.save(s).catch(e=>{console.log(`${t}.save catch`,e),r="儲存資料失敗"})),Re(r))return Promise.reject(r);i=Rt(s)?Ss(s,e=>({id:e.id})):{id:s.id}}else if("del"===n)i=await o.del(s).catch(e=>{console.log(`${t}.del catch`,e),r="刪除資料失敗"});else if("delAll"===n)i=await o.delAll(s).catch(e=>{console.log(`${t}.delAll catch`,e),r="刪除資料失敗"});else if("mix"===n){if(!Be(s))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;i=[];let a=we(s,"add",[]);if(Nr(a)>0){try{a=Po(t,e,a,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.insert(a).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}),Re(r))return Promise.reject(r);n=Ss(a,e=>({id:e.id})),i=[...i,...n]}let l=we(s,"del",[]);if(Nr(l)>0){if(await o.del(l).catch(e=>{console.log(`${t}.save catch`,e),r="刪除資料失敗"}),Re(r))return Promise.reject(r);n=Ss(l,e=>({id:e.id})),i=[...i,...n]}let c=we(s,"diff",[]);if(Nr(c)>0){try{c=Po(t,e,c)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.save(c).catch(e=>{console.log(`${t}.save catch`,e),r="變更資料失敗"}),Re(r))return Promise.reject(r);n=Ss(c,e=>({id:e.id})),i=[...i,...n]}}else r=`invalid mode: ${n}`;return Re(r)?Promise.reject(r):i}function Bo(e,t){return Jo=e,Ro=t,Oo}function Fo(e,t){var n=[];return Ln(e,function(e,s,i){t(e,s,i)&&n.push(e)}),n}function _o(e,t){return(l(e)?Rn:Fo)(e,Zs(t))}function qo(e,t=null){if(!Rt(e)){let e=St();return e.reject("pms is not an array"),e}return e.reduce((e,t)=>e.then(t),Promise.resolve(t))}let $o=[],ea=[],ta=[],na=null,sa=null,ia=!0,ra=!0;function oa(e){setTimeout(()=>{$o.push(e)},1)}function aa(e){setTimeout(()=>{ea.push(e)},1)}function la(e){setTimeout(()=>{ta.push(e)},1)}async function ca(e,t,n,s){if(!Nt(na))return Promise.reject("invalid mapOrm");if(ia&&!Re(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let i="n";if(ia){if(!Nt(sa))return Promise.reject("invalid getUserById");let t=await sa(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");i=we(t,"isAdmin"),"y"!==i&&"n"!==i&&(i="n");let n=we(t,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",e),console.log("oSelf",t),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await zr($o,r=>r({woName:t,userId:e,isAdmin:i,mode:n,input:s})),Nr(ea)>0){let r={woName:t,userId:e,isAdmin:i,mode:n,input:s},o=await qo(ea,r);s=o.input}let r=await na(e,t,n,s);return ra&&"n"===i&&"select"===n&&Rt(r)&&(r=_o(r,e=>!In(e,"isActive")||!("n"===e.isActive))),Nr(ta)>0&&(r=await qo(ta,{woName:t,userId:e,isAdmin:i,mode:n,input:s,output:r})),r}function da(e,t,n,s,i={}){let r=function(e,t,n,s){if(!Be(e))throw console.log("ds",e),new Error("invalid ds");if(!Nt(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!Re(n))throw console.log("url",n),new Error("invalid url");if(!Re(s))throw console.log("db",s),new Error("invalid db");let i={};return Cn(Ue(e),e=>{let r=new t({url:n,db:s,cl:e});i[e]=r}),i}(e,t,n,s),o=function(e,t={}){return Nt(e)?(na=e,ia=we(t,"useCheckUser"),_t(ia)||(ia=!0),sa=we(t,"getUserById"),ra=we(t,"useExcludeWhenNotAdmin"),_t(ra)||(ra=!0),{addFunCheck:oa,addFunPreProcessing:aa,addFunPostProcessing:la,procOrm:ca}):Promise.reject("invalid mapOrm")}(Bo(e,r),i);return{...Kr,woItems:r,closeAll:async()=>{await zr(r,async e=>{e&&Nt(e.close)&&await e.close()})},...o}}let ua={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en-US",cht:"zh-TW"},id:{eng:"ID",cht:"主鍵"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},saveChanges:{eng:"Save changes",cht:"儲存變更"},close:{eng:"Close",cht:"關閉"},cancel:{eng:"Cancel",cht:"取消"},processing:{eng:"Processing...",cht:"處理中請稍後..."},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},getDataError:{eng:"Failed to get data, please try again later",cht:"取得數據失敗,請稍後再試"},logout:{eng:"Log out",cht:"登出"},settings:{eng:"Settings",cht:"設定"},showArchived:{eng:"Show archived",cht:"顯示封存"},timeCreate:{eng:"Created time",cht:"創建時間"},timeUpdate:{eng:"Updated time",cht:"最新變更時間"},errUserIdMissing:{eng:"Can not get the user id",cht:"無法取得使用者主鍵"},errUserEmailMissing:{eng:"Can not get the email of user",cht:"無法取得使用者電子郵件"},errUserNameMissing:{eng:"Can not get the name of user",cht:"無法取得使用者名稱"},errUserRoleMissing:{eng:"Can not get the role of user",cht:"無法取得使用者角色"},errUserNoPermission:{eng:"User does not have permission",cht:"使用者無權限"},errUserNotFound:{eng:"Can not find the user",cht:"查無使用者"},errTokenNoPermission:{eng:"Token does not have permission",cht:"權杖無存取權限"},errPayloadInvalid:{eng:"Invalid payload",cht:"請求內容格式錯誤"},errChannelIdInvalid:{eng:"Invalid channel id",cht:"頻道主鍵無效"},errChannelRowInvalid:{eng:"Invalid channel data",cht:"頻道數據無效"},errMemberRowInvalid:{eng:"Invalid member data",cht:"成員數據無效"},errMemberIdInvalid:{eng:"Invalid member id",cht:"成員主鍵無效"},errContentInvalid:{eng:"Invalid message content",cht:"訊息內容無效"},errFileRowInvalid:{eng:"Invalid file data",cht:"檔案數據無效"},errUploadInvalid:{eng:"Invalid upload data",cht:"上傳數據無效"},errFileIdInvalid:{eng:"Invalid file id",cht:"檔案主鍵無效"},errFileNotFound:{eng:"Can not find the file",cht:"查無檔案"},errTaskIdInvalid:{eng:"Invalid task id",cht:"任務主鍵無效"},errTaskNotFound:{eng:"Can not find the task",cht:"查無任務"},errTaskAlreadyClaimed:{eng:"This task has already been claimed",cht:"此任務已被認領"},errTaskNotRunning:{eng:"This task is not in running state",cht:"此任務非執行中狀態"},errTaskNotResettable:{eng:"This task can not be reset",cht:"此任務無法重置"},errTaskExternalServiceUnavailable:{eng:"External service is temporarily unavailable",cht:"外部服務暫時無法使用"},errResultInvalid:{eng:"Invalid task result",cht:"任務回應內容無效"},errStateInvalid:{eng:"Invalid task state",cht:"任務狀態無效"},errLastMessageIdInvalid:{eng:"Invalid last message id",cht:"已讀訊息主鍵無效"},channelName:{eng:"Channel name",cht:"頻道名稱"},channelDescription:{eng:"Channel description",cht:"頻道描述"},channelAgentId:{eng:"Agent id",cht:"主責agent識別碼"},channelOwnerId:{eng:"Owner id",cht:"建立者"},addChannel:{eng:"Add channel",cht:"新增頻道"},deleteChannel:{eng:"Delete channel",cht:"刪除頻道"},saveChannelSuccess:{eng:"Channel saved successfully",cht:"頻道儲存成功"},saveChannelFail:{eng:"Failed to save channel",cht:"頻道儲存失敗"},deleteChannelSuccess:{eng:"Channel deleted successfully",cht:"頻道刪除成功"},deleteChannelFail:{eng:"Failed to delete channel",cht:"頻道刪除失敗"},channelMembers:{eng:"Channel members",cht:"頻道成員"},memberId:{eng:"Member id",cht:"成員識別碼"},memberType:{eng:"Member type",cht:"成員類型"},memberRole:{eng:"Role",cht:"角色"},memberLastSeen:{eng:"Last seen message",cht:"已讀訊息水位"},addMember:{eng:"Add member",cht:"新增成員"},deleteMember:{eng:"Delete member",cht:"刪除成員"},saveMemberSuccess:{eng:"Member saved successfully",cht:"成員儲存成功"},saveMemberFail:{eng:"Failed to save member",cht:"成員儲存失敗"},deleteMemberSuccess:{eng:"Member deleted successfully",cht:"成員刪除成功"},deleteMemberFail:{eng:"Failed to delete member",cht:"成員刪除失敗"},postMessageSuccess:{eng:"Message posted successfully",cht:"訊息傳送成功"},postMessageFail:{eng:"Failed to post message",cht:"訊息傳送失敗"},inputMessage:{eng:"Type a message...",cht:"輸入訊息..."},taskTitle:{eng:"Task title",cht:"任務標題"},taskPayload:{eng:"Task payload",cht:"任務需求內容"},taskState:{eng:"State",cht:"狀態"},taskAssignee:{eng:"Assignee",cht:"認領者"},taskResult:{eng:"Result",cht:"任務回應內容"},taskStatePending:{eng:"Pending",cht:"待認領"},taskStateRunning:{eng:"Running",cht:"執行中"},taskStateDone:{eng:"Done",cht:"已完成"},taskStateError:{eng:"Error",cht:"失敗"},respondTask:{eng:"Respond task",cht:"回應任務"},resetTask:{eng:"Retry task",cht:"重試任務"},respondTaskSuccess:{eng:"Task responded successfully",cht:"任務回應成功"},respondTaskFail:{eng:"Failed to respond task",cht:"任務回應失敗"},resetTaskSuccess:{eng:"Task reset successfully",cht:"任務重置成功"},resetTaskFail:{eng:"Failed to reset task",cht:"任務重置失敗"},cannotConnectServer:{eng:"Unable to connect to the server, please try again later",cht:"無法連線至伺服器,請稍後再試"},mmChannels:{eng:"Channels",cht:"頻道管理"},mmChannelsMsg:{eng:"Manage channels for conversations and tasks.",cht:"管理用於對話與任務的頻道。"},mmConversation:{eng:"Conversation",cht:"頻道對話"},mmConversationMsg:{eng:"View channel messages, send messages or open them as tasks.",cht:"檢視頻道訊息、發送訊息或將訊息開成任務。"},mmTasks:{eng:"Tasks",cht:"任務檢視"},mmTasksMsg:{eng:"View tasks and their responses, retry or respond manually.",cht:"檢視任務與其回應,可重試或人工代回。"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},logoutConfirm:{eng:"Are you sure you want to log out?",cht:"確定要登出嗎?"},channelsEmpty:{eng:"No channels yet",cht:"目前尚無頻道"},channelNameEmpty:{eng:"Channel name can not be empty",cht:"頻道名稱不可為空"},channelNameDuplicate:{eng:"Channel name is duplicated",cht:"頻道名稱重複"},channelNameInvalid:{eng:"Please correct the channel name first",cht:"請先修正頻道名稱"},deleteChannelConfirm:{eng:"Are you sure you want to delete the selected channels?",cht:"確定要刪除所選頻道嗎?"},selectChannel:{eng:"Channel",cht:"頻道"},selectChannelFirst:{eng:"Please select a channel first",cht:"請先選擇頻道"},conversationEmpty:{eng:"No messages in this channel yet",cht:"此頻道尚無訊息"},openAsTask:{eng:"Open as task",cht:"開成任務"},taskTitlePlaceholder:{eng:"Task title (optional, defaults to first line)",cht:"任務標題(選填,預設取首行)"},sendMessage:{eng:"Send",cht:"送出"},messageContentEmpty:{eng:"Message content can not be empty",cht:"訊息內容不可為空"},senderHuman:{eng:"Human",cht:"人類"},senderAgent:{eng:"Agent",cht:"Agent"},kindText:{eng:"Text",cht:"對話"},kindTask:{eng:"Task",cht:"任務"},kindTaskReply:{eng:"Task reply",cht:"任務回應"},tasksEmpty:{eng:"No tasks in this channel yet",cht:"此頻道尚無任務"},taskTimeDone:{eng:"Done time",cht:"結束時間"},taskErrorKey:{eng:"Error key",cht:"錯誤鍵"},resetTaskConfirm:{eng:"Are you sure you want to retry this task?",cht:"確定要重試此任務嗎?"},respondTaskInputLabel:{eng:"Respond on behalf (manual)",cht:"人工代回內容"},respondTaskPlaceholder:{eng:"Enter the task result (markdown supported)...",cht:"輸入任務回應內容(支援 markdown)..."},respondTaskSubmit:{eng:"Submit response",cht:"送出回應"},respondTaskResultEmpty:{eng:"Response content can not be empty",cht:"回應內容不可為空"},mmStats:{eng:"Stats",cht:"統計"},mmAdmin:{eng:"Admin",cht:"後台"},mmMembers:{eng:"Members",cht:"成員"},searchChannelPlaceholder:{eng:"Search channels / projects...",cht:"搜尋頻道 / 專案…"},uncategorized:{eng:"Uncategorized",cht:"未分類"},channelTreeEmpty:{eng:"No channels match",cht:"無符合的頻道"},agentOnline:{eng:"Agent online",cht:"agent 在線"},selectChannelToStart:{eng:"Select a channel from the left to start",cht:"請從左側選擇一個頻道開始"},timelineEmpty:{eng:"No messages in this channel yet",cht:"此頻道尚無訊息"},today:{eng:"Today",cht:"今天"},noAgentAssigned:{eng:"No agent assigned",cht:"未指派 agent"},composerPlaceholder:{eng:"Type a message... Paste images directly (Enter to send, Shift+Enter for newline)",cht:"輸入訊息… 可直接貼上多張圖片 (Enter 發送,Shift+Enter 換行)"},composerHint:{eng:"Enter to send",cht:"Enter 發送"},attachImage:{eng:"Attach image",cht:"附加圖片"},removeImage:{eng:"Remove image",cht:"移除圖片"},uploadImageFail:{eng:"Failed to upload image",cht:"圖片上傳失敗"},viewImage:{eng:"View image",cht:"檢視圖片"},statChannels:{eng:"Channels",cht:"頻道數"},statMessages:{eng:"Messages",cht:"訊息數"},statTasks:{eng:"Tasks",cht:"任務總數"},statPending:{eng:"Pending",cht:"待處理"},statRunning:{eng:"Running",cht:"處理中"},statDone:{eng:"Done",cht:"已完成"},statError:{eng:"Error",cht:"失敗"},statsOverview:{eng:"Overview",cht:"系統概況"},statTaskBreakdown:{eng:"Task breakdown",cht:"任務狀態分布"},channelLevels:{eng:"Levels",cht:"階層"},selectChannelForMembers:{eng:"Select a channel to manage members",cht:"選擇頻道以管理成員"},memberHuman:{eng:"Human",cht:"人類"},memberAgent:{eng:"Agent",cht:"Agent"},membersEmpty:{eng:"No members in this channel yet",cht:"此頻道尚無成員"},deleteMemberConfirm:{eng:"Are you sure you want to delete the selected members?",cht:"確定要刪除所選成員嗎?"}},Ma=(e={})=>{let t=we(e,"kpLangExt");Be(t)||(t={});let n=we(e,"webName");Be(n)||(n={});let s=we(e,"webDescription");Be(s)||(s={});let i={};i={...i,...ua},Be(t)&&(i={...i,...t}),Be(n)&&(i={...i,webName:{...n}}),Be(s)&&(i={...i,webDescription:{...s}});let r={};return Cn(["eng","cht"],e=>{let t={};Cn(i,(n,s)=>{t[s]=n[e]}),r[e]=t}),r};function wa(e,t,n,s){if(!N(e))return e;for(var i=-1,r=(t=de(t,e)).length,o=r-1,a=e;null!=a&&++i<r;){var l=ue(t[i]),c=n;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(i!=o){var d=a[l];void 0===(c=s?s(d,l,a):void 0)&&(c=N(d)?d:Ne(t[i+1])?[]:{})}Xi(a,l,c),a=a[l]}return e}function Ia(e,t){return function(e,t,n){for(var s=-1,i=t.length,r={};++s<i;){var o=t[s],a=Me(e,o);n(a,o)&&wa(r,de(o,e),a)}return r}(e,t,function(t,n){return Ns(e,n)})}var ya=M?M.isConcatSpreadable:void 0;function ga(e){return l(e)||Le(e)||!!(ya&&e&&e[ya])}function ma(e,t,n,s,i){var r=-1,o=e.length;for(n||(n=ga),i||(i=[]);++r<o;){var a=e[r];t>0&&n(a)?t>1?ma(a,t-1,n,s,i):Un(i,a):s||(i[i.length]=a)}return i}function pa(e){return(null==e?0:e.length)?ma(e,1):[]}var La=function(e){return Hi(Ki(e,void 0,pa),e+"")}(function(e,t){return null==e?{}:Ia(e,t)}),ha=La;function Ca(e){if(_t(e))return e;if(0===e)return!1;if(1===e)return!0;let t=!1;return Re(e)&&"true"===(e=ce(Bs(e)).toLowerCase())&&(t=!0),t}let Da="./dbf";var fa={exports:{}};function ba(e){try{return JSON.stringify(e)}catch(e){return'"[Circular]"'}}const Na=function(e,t,n){var s=n&&n.stringify||ba;if("object"==typeof e&&null!==e){var i=t.length+1;if(1===i)return e;var r=new Array(i);r[0]=s(e);for(var o=1;o<i;o++)r[o]=s(t[o]);return r.join(" ")}if("string"!=typeof e)return e;var a=t.length;if(0===a)return e;for(var l="",c=0,d=-1,u=e&&e.length||0,M=0;M<u;){if(37===e.charCodeAt(M)&&M+1<u){switch(d=d>-1?d:0,e.charCodeAt(M+1)){case 100:case 102:if(c>=a)break;if(null==t[c])break;d<M&&(l+=e.slice(d,M)),l+=Number(t[c]),d=M+2,M++;break;case 105:if(c>=a)break;if(null==t[c])break;d<M&&(l+=e.slice(d,M)),l+=Math.floor(Number(t[c])),d=M+2,M++;break;case 79:case 111:case 106:if(c>=a)break;if(void 0===t[c])break;d<M&&(l+=e.slice(d,M));var w=typeof t[c];if("string"===w){l+="'"+t[c]+"'",d=M+2,M++;break}if("function"===w){l+=t[c].name||"<anonymous>",d=M+2,M++;break}l+=s(t[c]),d=M+2,M++;break;case 115:if(c>=a)break;d<M&&(l+=e.slice(d,M)),l+=String(t[c]),d=M+2,M++;break;case 37:d<M&&(l+=e.slice(d,M)),l+="%",d=M+2,M++,c--}++c}++M}if(-1===d)return e;d<u&&(l+=e.slice(d));return l};fa.exports=Ya;const xa=function(){function e(e){return void 0!==e&&e}try{return"undefined"!=typeof globalThis||Object.defineProperty(Object.prototype,"globalThis",{get:function(){return delete Object.prototype.globalThis,this.globalThis=this},configurable:!0}),globalThis}catch(t){return e(self)||e(window)||e(this)||{}}}().console||{},Ta={mapHttpRequest:Wa,mapHttpResponse:Wa,wrapRequestSerializer:ka,wrapResponseSerializer:ka,wrapErrorSerializer:ka,req:Wa,res:Wa,err:Ka,errWithCause:Ka};function Za(e,t){return"silent"===e?1/0:t.levels.values[e]}const Xa=Symbol("pino.logFuncs"),Sa=Symbol("pino.hierarchy"),va={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function Aa(e,t){const n={logger:t,parent:e[Sa]};t[Sa]=n}function Ya(e){(e=e||{}).browser=e.browser||{};const t=e.browser.transmit;if(t&&"function"!=typeof t.send)throw Error("pino: transmit option must have a send function");const n=e.browser.write||xa;e.browser.write&&(e.browser.asObject=!0);const s=e.serializers||{},i=function(e,t){if(Array.isArray(e))return e.filter(function(e){return"!stdSerializers.err"!==e});return!0===e&&Object.keys(t)}(e.browser.serialize,s);let r=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(r=!1);const o=Object.keys(e.customLevels||{}),a=["error","fatal","warn","info","debug","trace"].concat(o);"function"==typeof n&&a.forEach(function(e){n[e]=n}),(!1===e.enabled||e.browser.disabled)&&(e.level="silent");const l=e.level||"info",c=Object.create(n);c.log||(c.log=Va),function(e,t,n){const s={};t.forEach(e=>{s[e]=n[e]?n[e]:xa[e]||xa[va[e]||"log"]||Va}),e[Xa]=s}(c,a,n),Aa({},c),Object.defineProperty(c,"levelVal",{get:function(){return Za(this.level,this)}}),Object.defineProperty(c,"level",{get:function(){return this._level},set:function(e){if("silent"!==e&&!this.levels.values[e])throw Error("unknown level "+e);this._level=e,Ga(this,d,c,"error"),Ga(this,d,c,"fatal"),Ga(this,d,c,"warn"),Ga(this,d,c,"info"),Ga(this,d,c,"debug"),Ga(this,d,c,"trace"),o.forEach(e=>{Ga(this,d,c,e)})}});const d={transmit:t,serialize:i,asObject:e.browser.asObject,asObjectBindingsOnly:e.browser.asObjectBindingsOnly,formatters:e.browser.formatters,reportCaller:e.browser.reportCaller,levels:a,timestamp:Ea(e),messageKey:e.messageKey||"msg",onChild:e.onChild||Va};function u(n,r,o){if(!r)throw new Error("missing bindings for child Pino");o=o||{},i&&r.serializers&&(o.serializers=r.serializers);const a=o.serializers;if(i&&a){var l=Object.assign({},s,a),c=!0===e.browser.serialize?Object.keys(l):i;delete r.serializers,ja([r],c,l,this._stdErrSerialize)}function d(e){this._childLevel=1+(0|e._childLevel),this.bindings=r,l&&(this.serializers=l,this._serialize=c),t&&(this._logEvent=za([].concat(e._logEvent.bindings,r)))}d.prototype=this;const M=new d(this);return Aa(this,M),M.child=function(...e){return u.call(this,n,...e)},M.level=o.level||this.level,n.onChild(M),M}return c.levels=function(e){const t=e.customLevels||{},n=Object.assign({},Ya.levels.values,t),s=Object.assign({},Ya.levels.labels,function(e){const t={};return Object.keys(e).forEach(function(n){t[e[n]]=n}),t}(t));return{values:n,labels:s}}(e),c.level=l,c.isLevelEnabled=function(e){return!!this.levels.values[e]&&this.levels.values[e]>=this.levels.values[this.level]},c.setMaxListeners=c.getMaxListeners=c.emit=c.addListener=c.on=c.prependListener=c.once=c.prependOnceListener=c.removeListener=c.removeAllListeners=c.listeners=c.listenerCount=c.eventNames=c.write=c.flush=Va,c.serializers=s,c._serialize=i,c._stdErrSerialize=r,c.child=function(...e){return u.call(this,d,...e)},t&&(c._logEvent=za()),c}function Ga(e,t,n,s){if(Object.defineProperty(e,s,{value:Za(e.level,n)>Za(s,n)?Va:n[Xa][s],writable:!0,enumerable:!0,configurable:!0}),e[s]===Va){if(!t.transmit)return;const i=Za(t.transmit.level||e.level,n);if(Za(s,n)<i)return}e[s]=function(e,t,n,s){return i=e[Xa][s],function(){const r=t.timestamp(),o=new Array(arguments.length),a=Object.getPrototypeOf&&Object.getPrototypeOf(this)===xa?xa:this;for(var l=0;l<o.length;l++)o[l]=arguments[l];var c=!1;if(t.serialize&&(ja(o,this._serialize,this.serializers,this._stdErrSerialize),c=!0),t.asObject||t.formatters){const e=function(e,t,n,s,i){const{level:r,log:o=e=>e}=i.formatters||{},a=n.slice();let l=a[0];const c={};let d=1+(0|e._childLevel);if(d<1&&(d=1),s&&(c.time=s),r){const n=r(t,e.levels.values[t]);Object.assign(c,n)}else c.level=e.levels.values[t];if(i.asObjectBindingsOnly){if(null!==l&&"object"==typeof l)for(;d--&&"object"==typeof a[0];)Object.assign(c,a.shift());return[o(c),...a]}if(null!==l&&"object"==typeof l){for(;d--&&"object"==typeof a[0];)Object.assign(c,a.shift());l=a.length?Na(a.shift(),a):void 0}else"string"==typeof l&&(l=Na(a.shift(),a));return void 0!==l&&(c[i.messageKey]=l),[o(c)]}(this,s,o,r,t);if(t.reportCaller&&e&&e.length>0&&e[0]&&"object"==typeof e[0])try{const t=Ua();t&&(e[0].caller=t)}catch(e){}i.call(a,...e)}else{if(t.reportCaller)try{const e=Ua();e&&o.push(e)}catch(e){}i.apply(a,o)}if(t.transmit){const i=t.transmit.level||e._level,a=Za(i,n),l=Za(s,n);if(l<a)return;!function(e,t,n,s=!1){const i=t.send,r=t.ts,o=t.methodLevel,a=t.methodValue,l=t.val,c=e._logEvent.bindings;s||ja(n,e._serialize||Object.keys(e.serializers),e.serializers,void 0===e._stdErrSerialize||e._stdErrSerialize),e._logEvent.ts=r,e._logEvent.messages=n.filter(function(e){return-1===c.indexOf(e)}),e._logEvent.level.label=o,e._logEvent.level.value=a,i(o,e._logEvent,l),e._logEvent=za(c)}(this,{ts:r,methodLevel:s,methodValue:l,transmitLevel:i,transmitValue:n.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:Za(e._level,n)},o,c)}};var i}(e,t,n,s);const i=function(e){const t=[];e.bindings&&t.push(e.bindings);let n=e[Sa];for(;n.parent;)n=n.parent,n.logger.bindings&&t.push(n.logger.bindings);return t.reverse()}(e);0!==i.length&&(e[s]=function(e,t){return function(){return t.apply(this,[...e,...arguments])}}(i,e[s]))}function ja(e,t,n,s){for(const i in e)if(s&&e[i]instanceof Error)e[i]=Ya.stdSerializers.err(e[i]);else if("object"==typeof e[i]&&!Array.isArray(e[i])&&t)for(const s in e[i])t.indexOf(s)>-1&&s in n&&(e[i][s]=n[s](e[i][s]))}function za(e){return{ts:0,messages:[],bindings:e||[],level:{label:"",value:0}}}function Ka(e){const t={type:e.constructor.name,msg:e.message,stack:e.stack};for(const n in e)void 0===t[n]&&(t[n]=e[n]);return t}function Ea(e){return"function"==typeof e.timestamp?e.timestamp:!1===e.timestamp?Ha:Qa}function Wa(){return{}}function ka(e){return e}function Va(){}function Ha(){return!1}function Qa(){return Date.now()}function Ua(){const e=(new Error).stack;if(!e)return null;const t=e.split("\n");for(let e=1;e<t.length;e++){const n=t[e].trim();if(/(^at\s+)?(createWrap|LOG|set\s*\(|asObject|Object\.apply|Function\.apply)/.test(n))continue;if(-1!==n.indexOf("browser.js"))continue;if(-1!==n.indexOf("node:internal"))continue;if(-1!==n.indexOf("node_modules"))continue;let s=n.match(/\((.*?):(\d+):(\d+)\)/);if(s||(s=n.match(/at\s+(.*?):(\d+):(\d+)/)),s){return s[1]+":"+s[2]+":"+s[3]}}return null}Ya.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}},Ya.stdSerializers=Ta,Ya.stdTimeFunctions=Object.assign({},{nullTime:Ha,epochTime:Qa,unixTime:function(){return Math.round(Date.now()/1e3)},isoTime:function(){return new Date(Date.now()).toISOString()}}),fa.exports.default=Ya,fa.exports.pino=Ya;var Ja=Wt(fa.exports);let Ra=o.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(Ra).href:"undefined"==typeof document?location.href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("w-web-task.umd.js",document.baseURI).href),Pa=e.dirname(Ra);let Oa=(n={})=>{let s=we(n,"logFd","");Re(s)||(s="./logs");let i=we(n,"logInterval","");Re(i)||(i="hr");let r=function(n={}){let s=en(),i=we(n,"timeZone",null),r=we(n,"fdLog");Re(r)||(r="./_logs");let o=we(n,"interval");"day"!==o&&"hr"!==o&&(o="day");let a=we(n,"numKeep");gt(a)||(a="day"===o?365:8760),a=yt(a);let l=Ja.transport({targets:[{level:"info",target:e.resolve(Pa,"./formatter.mjs"),options:{interval:o,fdLog:r,timeZone:i}}]}),c=Ja(l),d=()=>{try{if(!Gt(r))return;let n="hr"===o?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,i=t.readdirSync(r).filter(e=>n.test(e));i.sort();let l=i.length-a;if(l<=0)return;let c=i.slice(0,l);for(let n of c){let i=e.join(r,n);try{t.unlinkSync(i),s.emit("delete",{fp:i,fn:n})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}};d();let u=setInterval(d,36e5);u.unref();let M=null,w=e=>{let t=c[e].bind(c);return(...n)=>{try{s.emit(e,{args:n})}catch(e){}t(...n)}};return s.fatal=w("fatal"),s.error=w("error"),s.warn=w("warn"),s.info=w("info"),s.debug=w("debug"),s.trace=w("trace"),s.cleanLogs=d,s.clear=(e={})=>{if(null!==M)return M;let t=we(e,"timeLimit");gt(t)||(t=6e4),M=St();let n=!1,s=()=>{n||(n=!0,clearInterval(u),M.resolve())},i=setTimeout(()=>{try{l.worker.terminate()}catch(e){}s()},t);try{c.flush(e=>{if(e||l.closed)return clearTimeout(i),void s();l.once("close",()=>{clearTimeout(i),s()}),l.end()})}catch(e){clearTimeout(i),s()}return M},s}({fdLog:s,interval:i});return r};const Ba=[];for(let e=0;e<256;++e)Ba.push((e+256).toString(16).slice(1));const Fa=new Uint8Array(16);function _a(){return crypto.getRandomValues(Fa)}const qa={};function $a(e,t,n){let s;if(e)s=el(e.random??e.rng?.()??_a(),e.msecs,e.seq,t,n);else{const e=Date.now(),i=_a();!function(e,t,n){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=n[6]<<23|n[7]<<16|n[8]<<8|n[9],e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(qa,e,i),s=el(i,qa.msecs,qa.seq,t,n)}return t??function(e,t=0){return(Ba[e[t+0]]+Ba[e[t+1]]+Ba[e[t+2]]+Ba[e[t+3]]+"-"+Ba[e[t+4]]+Ba[e[t+5]]+"-"+Ba[e[t+6]]+Ba[e[t+7]]+"-"+Ba[e[t+8]]+Ba[e[t+9]]+"-"+Ba[e[t+10]]+Ba[e[t+11]]+Ba[e[t+12]]+Ba[e[t+13]]+Ba[e[t+14]]+Ba[e[t+15]]).toLowerCase()}(s)}function el(e,t,n,s,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(s){if(i<0||i+16>s.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`)}else s=new Uint8Array(16),i=0;return t??=Date.now(),n??=127*e[6]<<24|e[7]<<16|e[8]<<8|e[9],s[i++]=t/1099511627776&255,s[i++]=t/4294967296&255,s[i++]=t/16777216&255,s[i++]=t/65536&255,s[i++]=t/256&255,s[i++]=255&t,s[i++]=112|n>>>28&15,s[i++]=n>>>20&255,s[i++]=128|n>>>14&63,s[i++]=n>>>6&255,s[i++]=n<<2&255|3&e[10],s[i++]=e[11],s[i++]=e[12],s[i++]=e[13],s[i++]=e[14],s[i++]=e[15],s}function tl(){return $a()}function nl(e,t,n=""){if(!Ft(t))return{};let s={};return Cn(t,function(t){s[t]=we(e,t,n)}),s}let sl={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"頻道名稱",type:"STRING"},description:{name:"頻道描述",type:"TEXT"},agentId:{name:"主責agent識別碼",type:"STRING"},levels:{name:"階層",type:"STRING"},ownerId:{name:"建立者",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},il={keyTable:"channels",tableNameCht:"頻道",tableNameEng:"Channels",settings:sl,funNew:(e={})=>{let t=nl(e,Ue(sl));return t.id=`${tl()}`,t.timeCreate=Er(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t},funTest:()=>[]},rl={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},channelId:{name:"頻道主鍵",type:"STRING"},memberId:{name:"成員識別碼",type:"STRING"},memberType:{name:"成員類型",type:"STRING"},role:{name:"角色",type:"STRING"},lastSeenMessageId:{name:"已讀訊息水位",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},ol={keyTable:"channelMembers",tableNameCht:"頻道成員",tableNameEng:"ChannelMembers",settings:rl,funNew:(e={})=>{let t=nl(e,Ue(rl));return t.id=`${tl()}`,t.timeCreate=Er(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t.memberType=Re(t.memberType)?t.memberType:"human",t.role=Re(t.role)?t.role:"member",t},funTest:()=>[]},al={id:{pk:!0,name:"主鍵",type:"STRING"},channelId:{name:"頻道主鍵",type:"STRING"},senderId:{name:"發送者識別碼",type:"STRING"},senderType:{name:"發送者類型",type:"STRING"},kind:{name:"訊息類型",type:"STRING"},content:{name:"訊息內容",type:"TEXT"},taskId:{name:"任務主鍵",type:"STRING"},attachments:{name:"附件檔案清單",type:"TEXT"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},ll={keyTable:"messages",tableNameCht:"對話訊息",tableNameEng:"Messages",settings:al,funNew:(e={})=>{let t=nl(e,Ue(al));return t.id=`${tl()}`,t.timeCreate=Er(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t.kind=Re(t.kind)?t.kind:"text",t.senderType=Re(t.senderType)?t.senderType:"human",t.attachments=Re(t.attachments)?t.attachments:"[]",t},funTest:()=>[]},cl={...ll,keyTable:"messagesArchive",tableNameCht:"訊息(封存)",tableNameEng:"MessagesArchive"},dl={id:{pk:!0,name:"主鍵",type:"STRING"},channelId:{name:"頻道主鍵",type:"STRING"},messageId:{name:"起源訊息主鍵",type:"STRING"},title:{name:"任務標題",type:"STRING"},payload:{name:"任務需求內容",type:"TEXT"},state:{name:"狀態",type:"STRING"},assigneeId:{name:"認領agent識別碼",type:"STRING"},result:{name:"任務回應內容",type:"TEXT"},errorKey:{name:"錯誤鍵",type:"STRING"},resultMessageId:{name:"回應訊息主鍵",type:"STRING"},timeClaim:{name:"認領時間",type:"STRING"},timeDone:{name:"結束時間",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},ul={keyTable:"tasks",tableNameCht:"任務",tableNameEng:"Tasks",settings:dl,funNew:(e={})=>{let t=nl(e,Ue(dl));return t.id=`${tl()}`,t.timeCreate=Er(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t.state=Re(t.state)?t.state:"pending",t},funTest:()=>[]},Ml={...ul,keyTable:"tasksArchive",tableNameCht:"任務(封存)",tableNameEng:"TasksArchive"},wl={id:{pk:!0,name:"主鍵",type:"STRING"},name:{name:"原始檔名",type:"STRING"},type:{name:"MIME類型",type:"STRING"},size:{name:"檔案大小",type:"INTEGER"},ext:{name:"副檔名",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}};function Il(e,t={}){let n=we(t,"useCreateStorage");_t(n)||(n=!1);let{keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,parser:a,funNew:l,funTest:c,ext:d}=e;if(!Re(s))throw new Error(`invalid keyTable[${s}]`);if(Re(i)||(i=s),Re(r)||(r=s),!Be(o))throw new Error("invalid settings");Be(d)||(d=null),Be(a)||(a=null),Nt(l)||(l=null);let u=null;Nt(c)&&(u=async e=>{if(!Be(e))throw new Error("invalid wo");if(!In(e,s))throw console.log(e),new Error(`keyTable[${s}] is not in wo`);let t=[];try{t=c(),xt(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${s}] funTest catch`,e),new Error(e)}if(0!==Nr(t))return n&&await e[s].createStorage(),await e[s].save(t),t});let M={},w={};return Cn(Ue(o),e=>{let t=we(o,`${e}.name`,"");Re(t)&&(M[e]=t);let n=we(o,`${e}.type`,"");Re(n)&&(w[e]=n)}),{...e,keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,keys:Ue(o),kpType:w,kpHead:M,parser:a,funNew:l,funTest:c,funTestAndSave:u,ext:d}}let yl={channels:il,channelMembers:ol,messages:ll,messagesArchive:cl,tasks:ul,tasksArchive:Ml,files:{keyTable:"files",tableNameCht:"圖台檔案",tableNameEng:"Files",settings:wl,funNew:(e={})=>{let t=nl(e,Ue(wl));return t.id=`${tl()}`,t.timeCreate=Er(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t},funTest:()=>[]}},gl={};for(let e in yl)gl[e]=Il(yl[e],{useCreateStorage:!1});return function(n,s,i,r,o,a,l={}){let c=null;if(!Nt(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!Re(s))throw console.log("invalid url",s),new Error("invalid url");if(!Re(i))throw console.log("invalid db",i),new Error("invalid db");if(!Nt(r))throw console.log("invalid getUserByToken",r),new Error("invalid getUserByToken");if(!Nt(o))throw console.log("invalid verifyClientUser",o),new Error("invalid verifyClientUser");if(!Nt(a))throw console.log("invalid verifyAppUser",a),new Error("invalid verifyAppUser");let d=we(l,"serverPort");gt(d)||(d=11008),d=yt(d);let u=we(l,"useCheckUser",!1),M=we(l,"getUserById",null),w=we(l,"useExcludeWhenNotAdmin",!1),I=we(l,"webName",{}),y=we(l,"webDescription",{}),g=we(l,"webLogo",""),m=we(l,"subfolder","");var p,L;Re(m)&&("/"===Xt(m,1)&&(L=1,m=Re(p=m)&&Tt(L)?0===(L=yt(L))?p:Zt(p,p.length-L):""),"/"!==Zt(m,1)&&(m=`/${m}`));let h=we(l,"urlRedirect",""),C=we(l,"showLanguage","y"),D=we(l,"language","eng");we(l,"logFd","./logs");let f=we(l,"kpLangExt",{}),b=Ma({kpLangExt:f,webName:I,webDescription:y}),N={useCheckUser:u,getUserById:M,useExcludeWhenNotAdmin:w},x={};try{x=da(gl,n,s,i,N)}catch(e){throw console.log("WServOrm init failed",e),e}let{woItems:T,procOrm:Z}=x,X=Oa(l),S=e=>Re(e)?Zt(e,4)+"***":e,v=async(e,t)=>{let n=await vt(t)();return bt(n.msg)&&(n.msg=n.msg.message),"success"!==n.state&&X.error({event:"api/"+e,err:n.msg}),n},A=(e,t)=>{let n="kpfun-"+e;return async(...e)=>{try{let s=await t(...e);return X.info({event:n}),s}catch(e){return X.error({event:n,err:e}),Promise.reject(e)}}},Y=new function(){let e=new Map,t=new Map;return async(n,s)=>{let i=(e.get(n)||Promise.resolve()).then(async()=>await s(),async()=>await s());e.set(n,i.catch(()=>{})),t.set(n,(t.get(n)||0)+1);try{return await i}finally{let s=t.get(n)-1;s<=0?(t.delete(n),e.delete(n)):t.set(n,s)}}},G=function(n={}){let{woItems:s,procOrm:i,ds:r,srLog:o,kmx:a}=n;t.existsSync(Da)||t.mkdirSync(Da,{recursive:!0});let l=async(e,t)=>{if(!Re(t))return Promise.reject("errFileIdInvalid");let n=we(await s.files.select({id:t}),"0");return Be(n)?n:Promise.reject("errFileNotFound")};return{getChannelsList:async(e,t="")=>{let n=await s.channels.select({isActive:"y"});if(Re(t)&&t){n=_o(n,e=>e.agentId===t);let i=await s.channelMembers.select({memberId:e,isActive:"y"}),r={};for(let e of i)r[e.channelId]=we(e,"lastSeenMessageId","");for(let e of n)e.lastSeenMessageId=r[e.id]||""}return n},saveChannel:async(e,t)=>{if(!Be(t))return Promise.reject("errChannelRowInvalid");let n,i;if(Re(t.id)){let o=ha(t,r.channels.keys);o.id=t.id,o.timeUpdate=Er(),o.userIdUpdate=e,n=await s.channels.save([o]),i=t.id}else{let o=r.channels.funNew({...t,userId:e});n=await s.channels.insert(o),i=o.id}if(Re(t.agentId)&&t.agentId&&!Be(we(await s.channelMembers.select({channelId:i,memberId:t.agentId,isActive:"y"}),"0"))){let n=r.channelMembers.funNew({channelId:i,memberId:t.agentId,memberType:"agent",userId:e});await s.channelMembers.insert(n)}return n},deleteChannel:async(e,t)=>Re(t)?await s.channels.del({id:t}):Promise.reject("errChannelIdInvalid"),getChannelMembers:async(e,t)=>Re(t)?await s.channelMembers.select({channelId:t,isActive:"y"}):Promise.reject("errChannelIdInvalid"),saveChannelMember:async(e,t)=>{if(!Be(t))return Promise.reject("errMemberRowInvalid");let n;if(Re(t.id)){let i=ha(t,r.channelMembers.keys);i.id=t.id,i.timeUpdate=Er(),i.userIdUpdate=e,n=await s.channelMembers.save([i])}else{let i=r.channelMembers.funNew({...t,userId:e});n=await s.channelMembers.insert(i)}return n},deleteChannelMember:async(e,t)=>Re(t)?await s.channelMembers.del({id:t}):Promise.reject("errMemberIdInvalid"),getMessages:async(e,t,n=20,i="")=>{if(!Re(t))return Promise.reject("errChannelIdInvalid");let r=yt(n);r<1&&(r=20),r=Math.min(r,500);let o=await s.messages.select({channelId:t,isActive:"y"});return o=Re(i)&&i?_o(o,e=>e.id>i).slice(0,500):o.slice(-r),o},postMessage:async(e,t,n,i={})=>{if(!Re(t))return Promise.reject("errChannelIdInvalid");let o=we(i,"attachments"),l=Rt(o)&&o.length>0;return Re(n)||l?(Re(n)||(n=""),await a("postMessage:"+t,async()=>{let o=Ca(we(i,"asTask",!1)),a=we(i,"senderType","human"),l=we(i,"attachments"),c=Rt(l)?JSON.stringify(l):"[]",d=r.messages.funNew({channelId:t,senderId:e,senderType:a,kind:o?"task":"text",content:n,attachments:c,userId:e});if(await s.messages.insert(d),o){let o=we(i,"title","")||n.split(/\r?\n/)[0].slice(0,100),a=r.tasks.funNew({channelId:t,messageId:d.id,title:o,payload:n,state:"pending",userId:e});return await s.tasks.insert(a),await s.messages.save({id:d.id,taskId:a.id,timeUpdate:Er(),userIdUpdate:e}),d.taskId=a.id,{message:d,task:a}}return{message:d}})):Promise.reject("errContentInvalid")},getTasks:async(e,t,n=20,i="",r="desc")=>{if(!Re(t))return Promise.reject("errChannelIdInvalid");let o=yt(n);o<1&&(o=20),o=Math.min(o,500);let a={channelId:t,isActive:"y"};Re(i)&&i&&(a.state=i);let l=await s.tasks.select(a);return l="asc"===r?l.slice(0,o):l.slice(-o).reverse(),l},getTask:async(e,t)=>{if(!Re(t))return Promise.reject("errTaskIdInvalid");let n=we(await s.tasks.select({id:t}),"0");return Be(n)?n:Promise.reject("errTaskNotFound")},claimTask:async(e,t)=>Re(t)?await a("task:"+t,async()=>{let n=we(await s.tasks.select({id:t}),"0");return Be(n)?"pending"!==n.state?Promise.reject("errTaskAlreadyClaimed"):(await s.tasks.save({id:t,state:"running",assigneeId:e,timeClaim:Er(),timeUpdate:Er(),userIdUpdate:e}),we(await s.tasks.select({id:t}),"0")):Promise.reject("errTaskNotFound")}):Promise.reject("errTaskIdInvalid"),respondTask:async(e,t,n,i="done",o="",l="agent")=>Re(t)?Re(n)?"done"!==i&&"error"!==i?Promise.reject("errStateInvalid"):await a("task:"+t,async()=>{let a=we(await s.tasks.select({id:t}),"0");if(!Be(a))return Promise.reject("errTaskNotFound");if("running"!==a.state)return Promise.reject("errTaskNotRunning");let c=r.messages.funNew({channelId:a.channelId,senderId:e,senderType:l,kind:"taskReply",content:n,taskId:t,userId:e});return await s.messages.insert(c),await s.tasks.save({id:t,result:n,state:i,errorKey:o||"",resultMessageId:c.id,timeDone:Er(),timeUpdate:Er(),userIdUpdate:e}),we(await s.tasks.select({id:t}),"0")}):Promise.reject("errResultInvalid"):Promise.reject("errTaskIdInvalid"),resetTask:async(e,t)=>Re(t)?await a("task:"+t,async()=>{let n=we(await s.tasks.select({id:t}),"0");return Be(n)?"error"!==n.state&&"running"!==n.state?Promise.reject("errTaskNotResettable"):(await s.tasks.save({id:t,state:"pending",result:"",errorKey:"",assigneeId:"",timeClaim:"",timeDone:"",resultMessageId:"",timeUpdate:Er(),userIdUpdate:e}),we(await s.tasks.select({id:t}),"0")):Promise.reject("errTaskNotFound")}):Promise.reject("errTaskIdInvalid"),ackChannel:async(e,t,n)=>{if(!Re(t))return Promise.reject("errChannelIdInvalid");if(!Re(n))return Promise.reject("errLastMessageIdInvalid");let i=we(await s.channelMembers.select({channelId:t,memberId:e}),"0");if(Be(i))await s.channelMembers.save({id:i.id,lastSeenMessageId:n,timeUpdate:Er(),userIdUpdate:e});else{let i=r.channelMembers.funNew({channelId:t,memberId:e,memberType:"agent",role:"member",lastSeenMessageId:n,userId:e});await s.channelMembers.insert(i)}return{ok:!0}},saveFile:async(n,i)=>{if(!Be(i))return Promise.reject("errFileRowInvalid");let o=we(i,"name"),a=we(i,"type");if(!Re(o)||!Re(a))return Promise.reject("errFileRowInvalid");let l=we(i,"dataBase64");if(!Re(l))return Promise.reject("errUploadInvalid");let c=Buffer.from(l,"base64"),d=o.includes(".")?o.split(".").pop():"",u=r.files.funNew({name:o,type:a,ext:d,userId:n});return t.writeFileSync(e.join(Da,u.id),c),u.size=c.length,await s.files.insert([u]),{id:u.id,name:u.name,type:u.type,size:u.size}},getFileInfo:l,readFile:async n=>{let s=await l(0,n),i=e.join(Da,n);return t.existsSync(i)?{buf:t.readFileSync(i),info:s}:Promise.reject("errFileNotFound")},getStats:async e=>{let t=await s.channels.select({isActive:"y"}),n=await s.messages.select({isActive:"y"}),i=await s.tasks.select({isActive:"y"}),r={pending:0,running:0,done:0,error:0};for(let e of i)void 0!==r[e.state]&&(r[e.state]+=1);return{channels:t.length,messages:n.length,tasks:{pending:r.pending,running:r.running,done:r.done,error:r.error,total:i.length}}},archiveSweep:async e=>{let t=yt(e);if(t<=0)return{tasksMoved:0,messagesMoved:0};let n=Vt().subtract(t,"day").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),i=await s.tasks.select({isActive:"y"}),r=_o(i,e=>{let t="done"===e.state||"error"===e.state,s=Re(e.timeDone)&&e.timeDone<n;return t&&s});if(r.length>0){await s.tasksArchive.save(r);for(let e of r)await s.tasks.del({id:e.id})}let o={};for(let e of i)o[e.id]=!0;for(let e of r)delete o[e.id];let a=_o(await s.messages.select({isActive:"y"}),e=>{let t=Re(e.timeCreate)&&e.timeCreate<n,s=("task"===e.kind||"taskReply"===e.kind)&&Re(e.taskId)&&!0===o[e.taskId];return t&&!s});if(a.length>0){await s.messagesArchive.save(a);for(let e of a)await s.messages.del({id:e.id})}return{tasksMoved:r.length,messagesMoved:a.length}},getArchivedTasks:async(e,t,n=20,i="desc")=>{if(!Re(t))return Promise.reject("errChannelIdInvalid");let r=yt(n);r<1&&(r=20),r=Math.min(r,500);let o=await s.tasksArchive.select({channelId:t,isActive:"y"});return o="asc"===i?o.slice(0,r):o.slice(-r).reverse(),o},getArchivedMessages:async(e,t,n=20)=>{if(!Re(t))return Promise.reject("errChannelIdInvalid");let i=yt(n);return i<1&&(i=20),i=Math.min(i,500),(await s.messagesArchive.select({channelId:t,isActive:"y"})).slice(-i)}}}({woItems:T,procOrm:Z,ds:gl,srLog:X,kmx:Y}),{saveFile:j,getFileInfo:z,readFile:K,getStats:E}=G,W=yt(we(l,"archiveAfterDays",30));if(W>0){let e=!1,t=async()=>{e||(e=!0,await G.archiveSweep(W).then(e=>{(e.tasksMoved>0||e.messagesMoved>0)&&X.info({event:"archiveSweep",tasksMoved:e.tasksMoved,messagesMoved:e.messagesMoved})}).catch(e=>{X.error({event:"archiveSweep-error",msg:"string"==typeof e?e:e&&e.message||"unknown"})}).finally(()=>{e=!1}))};setTimeout(t,3e4),setInterval(t,36e5)}let k=async e=>{if(!Re(we(e,"id","")))return console.log("user",e),console.log("can not get the userId"),Promise.reject("errUserIdMissing");if(!Re(we(e,"email","")))return console.log("user",e),console.log("can not get the email of user"),Promise.reject("errUserEmailMissing");if(!Re(we(e,"name","")))return console.log("user",e),console.log("can not get userName"),Promise.reject("errUserNameMissing");let t=we(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),console.log("can not get the role of user"),Promise.reject("errUserRoleMissing"))},V=async e=>{let t=await r(e);return await k(t),!0},H=async(e,t="")=>{let n=await(async e=>{let t=r(e);return xt(t)&&(t=await t),await k(t),t})(e),s=o(n,t);return xt(s)&&(s=await s),s?(X.info({event:"verifyClientUser",from:t,userId:we(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))},Q=async(e,t="")=>{let n=null;if(Re(e)&&(n=r(e),xt(n)&&(n=await n)),!Be(n))return console.log("token",S(e)),console.log("can not find the user from token"),Promise.reject("errUserNotFound");await k(n);let s=a(n,t);return xt(s)&&(s=await s),s?(X.info({event:"verifyAppUser",from:t,userId:we(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))},U=async e=>{let t=we(e,"payload");return Re(t)&&(t=Pe(t)),Be(t)?t:(console.log("payload",t),console.log("invalid payload in req"),Promise.reject("errPayloadInvalid"))},J="dist",R="./node_modules/w-web-task/dist";Gt(R)&&(J=R);let P="index.html";try{let n=e.resolve(J,"index.tmp");if(zt(n)||(n=e.resolve(J,P)),!zt(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let s=e.resolve(J,P),i=t.readFileSync(n,"utf8");i=Kt(i,"/mtask/","{sfd}/"),i=Kt(i,"{sfd}",m),i=Kt(i,"{urlRedirect}",h),i=Kt(i,"{language}",D),t.writeFileSync(s,i,"utf8")}catch(e){console.log(e),console.log(`can not generate ${P}`)}let O=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){return await v("getUserByToken",async function(){let t=we(e,"query.token","");if(!Re(t))return console.log("req.query",we(e,"query")),console.log("token",S(t)),console.log("[API]getUserByToken/check token: invalid token"),Promise.reject("errTokenNoPermission");let n=await H(t,"getUserByToken");return Be(n)?(X.info({event:"api/getUserByToken",userId:we(n,"id","")}),n):(console.log("token",S(t)),console.log("[API]getUserByToken/check user: invalid user"),Promise.reject("errTokenNoPermission"))})}},{method:"GET",path:"/api/getChannels",handler:async function(e,t){return await v("getChannels",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getChannels"),"id",""),s=we(e,"query.agentId",""),i=await G.getChannelsList(n,s);return X.info({event:"api/getChannels",userId:n}),i})}},{method:"GET",path:"/api/getRecentMessages",handler:async function(e,t){return await v("getRecentMessages",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getRecentMessages"),"id",""),s=we(e,"query.channelId",""),i=yt(we(e,"query.n",20)),r=we(e,"query.afterId",""),o=await G.getMessages(n,s,i,r);return X.info({event:"api/getRecentMessages",userId:n}),o})}},{method:"GET",path:"/api/getRecentTasks",handler:async function(e,t){return await v("getRecentTasks",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getRecentTasks"),"id",""),s=we(e,"query.channelId",""),i=yt(we(e,"query.n",20)),r=we(e,"query.state",""),o=we(e,"query.order","desc"),a=await G.getTasks(n,s,i,r,o);return X.info({event:"api/getRecentTasks",userId:n}),a})}},{method:"GET",path:"/api/getArchivedTasks",handler:async function(e,t){return await v("getArchivedTasks",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getArchivedTasks"),"id",""),s=we(e,"query.channelId",""),i=yt(we(e,"query.n",20)),r=we(e,"query.order","desc"),o=await G.getArchivedTasks(n,s,i,r);return X.info({event:"api/getArchivedTasks",userId:n}),o})}},{method:"GET",path:"/api/getArchivedMessages",handler:async function(e,t){return await v("getArchivedMessages",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getArchivedMessages"),"id",""),s=we(e,"query.channelId",""),i=yt(we(e,"query.n",20)),r=await G.getArchivedMessages(n,s,i);return X.info({event:"api/getArchivedMessages",userId:n}),r})}},{method:"GET",path:"/api/getTask",handler:async function(e,t){return await v("getTask",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getTask"),"id",""),s=we(e,"query.taskId",""),i=await G.getTask(n,s);return X.info({event:"api/getTask",userId:n}),i})}},{method:"POST",path:"/api/postMessage",handler:async function(e,t){return await v("postMessage",async function(){let t=await U(e),n=we(e,"query.token","")||we(t,"token",""),s=we(await Q(n,"postMessage"),"id",""),i=we(t,"channelId",""),r=we(t,"content",""),o={asTask:we(t,"asTask",!1),title:we(t,"title",""),senderType:we(t,"senderType","human"),attachments:we(t,"attachments",[])},a=await G.postMessage(s,i,r,o);return X.info({event:"api/postMessage",userId:s}),a})}},{method:"POST",path:"/api/claimTask",handler:async function(e,t){return await v("claimTask",async function(){let t=await U(e),n=we(e,"query.token","")||we(t,"token",""),s=we(await Q(n,"claimTask"),"id",""),i=we(t,"taskId",""),r=await G.claimTask(s,i);return X.info({event:"api/claimTask",userId:s}),r})}},{method:"POST",path:"/api/respondTask",handler:async function(e,t){return await v("respondTask",async function(){let t=await U(e),n=we(e,"query.token","")||we(t,"token",""),s=we(await Q(n,"respondTask"),"id",""),i=we(t,"taskId",""),r=we(t,"result",""),o=we(t,"state","done"),a=we(t,"errorKey",""),l=await G.respondTask(s,i,r,o,a);return X.info({event:"api/respondTask",userId:s}),l})}},{method:"POST",path:"/api/resetTask",handler:async function(e,t){return await v("resetTask",async function(){let t=await U(e),n=we(e,"query.token","")||we(t,"token",""),s=we(await Q(n,"resetTask"),"id",""),i=we(t,"taskId",""),r=await G.resetTask(s,i);return X.info({event:"api/resetTask",userId:s}),r})}},{method:"POST",path:"/api/ackChannel",handler:async function(e,t){return await v("ackChannel",async function(){let t=await U(e),n=we(e,"query.token","")||we(t,"token",""),s=we(await Q(n,"ackChannel"),"id",""),i=we(t,"channelId",""),r=we(t,"lastMessageId",""),o=await G.ackChannel(s,i,r);return X.info({event:"api/ackChannel",userId:s}),o})}},{method:"POST",path:"/api/uploadFile",options:{payload:{maxBytes:20971520}},handler:async function(e,t){return await v("uploadFile",async function(){let t=await U(e),n=we(e,"query.token","")||we(t,"token",""),s=we(await Q(n,"uploadFile"),"id",""),i=we(t,"name",""),r=we(t,"type",""),o=we(t,"dataBase64",""),a=await G.saveFile(s,{name:i,type:r,dataBase64:o});return X.info({event:"api/uploadFile",userId:s}),a})}},{method:"GET",path:"/api/getFileInfo",handler:async function(e,t){return await v("getFileInfo",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getFileInfo"),"id",""),s=we(e,"query.id",""),i=await G.getFileInfo(n,s);return X.info({event:"api/getFileInfo",userId:n}),i})}},{method:"GET",path:"/api/getStats",handler:async function(e,t){return await v("getStats",async function(){let t=we(e,"query.token",""),n=we(await Q(t,"getStats"),"id",""),s=await G.getStats(n);return X.info({event:"api/getStats",userId:n}),s})}},{method:"GET",path:"/api/getFile",handler:async function(e,t){let n=we(e,"query.token",""),s=we(e,"query.id","");try{let e=await Q(n,"getFile"),i=await K(s);X.info({event:"api/getFile",userId:we(e,"id","")});let r=["image/png","image/jpeg","image/jpg","image/gif","image/webp","image/bmp","image/avif"],o=i.info.type||"",a=r.includes(o),l=encodeURIComponent(i.info.name||s);return t.response(i.buf).type(a?o:"application/octet-stream").header("Content-Disposition",`${a?"inline":"attachment"}; filename="${l}"`).header("X-Content-Type-Options","nosniff")}catch(e){let n=Re(e)?e:we(e,"message","errFileNotFound");return X.error({event:"api/getFile",err:n}),t.response(JSON.stringify({state:"error",msg:n})).code(404).type("application/json")}}}],B=["channels","channelMembers"];return c=new jr({port:d,pathStaticFiles:J,apiName:"api",apis:O,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:s,req:i})=>{let r=function(e,t){return Re(e)&&Tt(t)?0===(t=yt(t))?e:Xt(e,e.length-t):""}(t,7);if(!Re(r))return console.log("apiType",e),console.log("authorization",S(t)),console.log("invalid token"),!1;let o=await V(r);return X.info({event:"verifyConn",apiType:e}),o},getUserIdByToken:async e=>{if(!Re(e))return"";return we(await r(e),"id","")},useDbOrm:!0,kpOrm:T,operOrm:Z,tableNamesExec:B,methodsExec:["select","insert","save","del"],tableNamesSync:B,kpFunExt:{getWebInfor:A("getWebInfor",e=>({webLogo:g,showLanguage:C,language:D,kpLang:b})),getChannelsList:A("getChannelsList",e=>G.getChannelsList(e)),saveChannel:A("saveChannel",(e,t)=>G.saveChannel(e,t)),deleteChannel:A("deleteChannel",(e,t)=>G.deleteChannel(e,t)),getChannelMembers:A("getChannelMembers",(e,t)=>G.getChannelMembers(e,t)),saveChannelMember:A("saveChannelMember",(e,t)=>G.saveChannelMember(e,t)),deleteChannelMember:A("deleteChannelMember",(e,t)=>G.deleteChannelMember(e,t)),getMessages:A("getMessages",(e,t,n,s)=>G.getMessages(e,t,n,s)),postMessage:A("postMessage",(e,t,n,s)=>G.postMessage(e,t,n,s)),getTasks:A("getTasks",(e,t,n,s,i)=>G.getTasks(e,t,n,s,i)),getArchivedTasks:A("getArchivedTasks",(e,t,n,s)=>G.getArchivedTasks(e,t,n,s)),getArchivedMessages:A("getArchivedMessages",(e,t,n)=>G.getArchivedMessages(e,t,n)),getTask:A("getTask",(e,t)=>G.getTask(e,t)),claimTask:A("claimTask",(e,t)=>G.claimTask(e,t)),respondTask:A("respondTask",(e,t,n,s,i,r)=>G.respondTask(e,t,n,s,i,r)),resetTask:A("resetTask",(e,t)=>G.resetTask(e,t)),ackChannel:A("ackChannel",(e,t,n)=>G.ackChannel(e,t,n)),uploadFile:A("uploadFile",(e,t)=>G.saveFile(e,t)),getFileInfo:A("getFileInfo",(e,t)=>G.getFileInfo(e,t)),getStats:A("getStats",e=>G.getStats(e))},fnTableTags:"tableTags-web-task.json"}),c}});
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("worker_threads"),require("url"),require("pino")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","worker_threads","url","pino"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-task"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.require$$0,e.url,e.pino)}(this,function(e,t,n,s,i,r,o,a){"use strict";var c="undefined"!=typeof document?document.currentScript:null,l=Array.isArray,d="object"==typeof global&&global&&global.Object===Object&&global,u="object"==typeof self&&self&&self.Object===Object&&self,M=d||u||Function("return this")(),w=M.Symbol,I=Object.prototype,y=I.hasOwnProperty,g=I.toString,m=w?w.toStringTag:void 0;var L=Object.prototype.toString;var p=w?w.toStringTag:void 0;function D(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":p&&p in Object(e)?function(e){var t=y.call(e,m),n=e[m];try{e[m]=void 0;var s=!0}catch(e){}var i=g.call(e);return s&&(t?e[m]=n:delete e[m]),i}(e):function(e){return L.call(e)}(e)}function C(e){return null!=e&&"object"==typeof e}function h(e){return"symbol"==typeof e||C(e)&&"[object Symbol]"==D(e)}var b=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,f=/^\w*$/;function N(e,t){if(l(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!h(e))||(f.test(e)||!b.test(e)||null!=t&&e in Object(t))}function x(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function T(e){if(!x(e))return!1;var t=D(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var Z,X=M["__core-js_shared__"],S=(Z=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||""))?"Symbol(src)_1."+Z:"";var v=Function.prototype.toString;function Y(e){if(null!=e){try{return v.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var A=/^\[object .+?Constructor\]$/,G=Function.prototype,j=Object.prototype,K=G.toString,z=j.hasOwnProperty,E=RegExp("^"+K.call(z).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function W(e){return!(!x(e)||(t=e,S&&S in t))&&(T(e)?E:A).test(Y(e));var t}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return W(n)?n:void 0}var k=V(Object,"create");var H=Object.prototype.hasOwnProperty;var Q=Object.prototype.hasOwnProperty;function U(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}function J(e,t){return e===t||e!=e&&t!=t}function R(e,t){for(var n=e.length;n--;)if(J(e[n][0],t))return n;return-1}U.prototype.clear=function(){this.__data__=k?k(null):{},this.size=0},U.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},U.prototype.get=function(e){var t=this.__data__;if(k){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return H.call(t,e)?t[e]:void 0},U.prototype.has=function(e){var t=this.__data__;return k?void 0!==t[e]:Q.call(t,e)},U.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=k&&void 0===t?"__lodash_hash_undefined__":t,this};var P=Array.prototype.splice;function O(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}O.prototype.clear=function(){this.__data__=[],this.size=0},O.prototype.delete=function(e){var t=this.__data__,n=R(t,e);return!(n<0)&&(n==t.length-1?t.pop():P.call(t,n,1),--this.size,!0)},O.prototype.get=function(e){var t=this.__data__,n=R(t,e);return n<0?void 0:t[n][1]},O.prototype.has=function(e){return R(this.__data__,e)>-1},O.prototype.set=function(e,t){var n=this.__data__,s=R(n,e);return s<0?(++this.size,n.push([e,t])):n[s][1]=t,this};var B=V(M,"Map");function F(e,t){var n,s,i=e.__data__;return("string"==(s=typeof(n=t))||"number"==s||"symbol"==s||"boolean"==s?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function _(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var s=e[t];this.set(s[0],s[1])}}_.prototype.clear=function(){this.size=0,this.__data__={hash:new U,map:new(B||O),string:new U}},_.prototype.delete=function(e){var t=F(this,e).delete(e);return this.size-=t?1:0,t},_.prototype.get=function(e){return F(this,e).get(e)},_.prototype.has=function(e){return F(this,e).has(e)},_.prototype.set=function(e,t){var n=F(this,e),s=n.size;return n.set(e,t),this.size+=n.size==s?0:1,this};function q(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var s=arguments,i=t?t.apply(this,s):s[0],r=n.cache;if(r.has(i))return r.get(i);var o=e.apply(this,s);return n.cache=r.set(i,o)||r,o};return n.cache=new(q.Cache||_),n}q.Cache=_;var $,ee,te,ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/\\(\\)?/g,ie=($=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ne,function(e,n,s,i){t.push(s?i.replace(se,"$1"):n||e)}),t},ee=q($,function(e){return 500===te.size&&te.clear(),e}),te=ee.cache,ee),re=ie;function oe(e,t){for(var n=-1,s=null==e?0:e.length,i=Array(s);++n<s;)i[n]=t(e[n],n,e);return i}var ae=w?w.prototype:void 0,ce=ae?ae.toString:void 0;function le(e){if("string"==typeof e)return e;if(l(e))return oe(e,le)+"";if(h(e))return ce?ce.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function de(e){return null==e?"":le(e)}function ue(e,t){return l(e)?e:N(e,t)?[e]:re(de(e))}function Me(e){if("string"==typeof e||h(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function we(e,t){for(var n=0,s=(t=ue(t,e)).length;null!=e&&n<s;)e=e[Me(t[n++])];return n&&n==s?e:void 0}function Ie(e,t,n){var s=null==e?void 0:we(e,t);return void 0===s?n:s}function ye(e){return C(e)&&"[object Arguments]"==D(e)}var ge=Object.prototype,me=ge.hasOwnProperty,Le=ge.propertyIsEnumerable,pe=ye(function(){return arguments}())?ye:function(e){return C(e)&&me.call(e,"callee")&&!Le.call(e,"callee")},De=pe;var Ce="object"==typeof exports&&exports&&!exports.nodeType&&exports,he=Ce&&"object"==typeof module&&module&&!module.nodeType&&module,be=he&&he.exports===Ce?M.Buffer:void 0,fe=(be?be.isBuffer:void 0)||function(){return!1},Ne=/^(?:0|[1-9]\d*)$/;function xe(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Ne.test(e))&&e>-1&&e%1==0&&e<t}function Te(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Ze={};function Xe(e){return function(t){return e(t)}}Ze["[object Float32Array]"]=Ze["[object Float64Array]"]=Ze["[object Int8Array]"]=Ze["[object Int16Array]"]=Ze["[object Int32Array]"]=Ze["[object Uint8Array]"]=Ze["[object Uint8ClampedArray]"]=Ze["[object Uint16Array]"]=Ze["[object Uint32Array]"]=!0,Ze["[object Arguments]"]=Ze["[object Array]"]=Ze["[object ArrayBuffer]"]=Ze["[object Boolean]"]=Ze["[object DataView]"]=Ze["[object Date]"]=Ze["[object Error]"]=Ze["[object Function]"]=Ze["[object Map]"]=Ze["[object Number]"]=Ze["[object Object]"]=Ze["[object RegExp]"]=Ze["[object Set]"]=Ze["[object String]"]=Ze["[object WeakMap]"]=!1;var Se="object"==typeof exports&&exports&&!exports.nodeType&&exports,ve=Se&&"object"==typeof module&&module&&!module.nodeType&&module,Ye=ve&&ve.exports===Se&&d.process,Ae=function(){try{var e=ve&&ve.require&&ve.require("util").types;return e||Ye&&Ye.binding&&Ye.binding("util")}catch(e){}}(),Ge=Ae&&Ae.isTypedArray,je=Ge?Xe(Ge):function(e){return C(e)&&Te(e.length)&&!!Ze[D(e)]},Ke=Object.prototype.hasOwnProperty;function ze(e,t){var n=l(e),s=!n&&De(e),i=!n&&!s&&fe(e),r=!n&&!s&&!i&&je(e),o=n||s||i||r,a=o?function(e,t){for(var n=-1,s=Array(e);++n<e;)s[n]=t(n);return s}(e.length,String):[],c=a.length;for(var d in e)!t&&!Ke.call(e,d)||o&&("length"==d||i&&("offset"==d||"parent"==d)||r&&("buffer"==d||"byteLength"==d||"byteOffset"==d)||xe(d,c))||a.push(d);return a}var Ee=Object.prototype;function We(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ee)}function Ve(e,t){return function(n){return e(t(n))}}var ke=Ve(Object.keys,Object),He=Object.prototype.hasOwnProperty;function Qe(e){if(!We(e))return ke(e);var t=[];for(var n in Object(e))He.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Ue(e){return null!=e&&Te(e.length)&&!T(e)}function Je(e){return Ue(e)?ze(e):Qe(e)}function Re(e){return"[object String]"===Object.prototype.toString.call(e)}function Pe(e){return!(!Re(e)||""===e)}function Oe(e){if(!Pe(e))return{};let t={};try{t=JSON.parse(e)}catch(e){t={}}return t}function Be(e){return"[object Object]"===Object.prototype.toString.call(e)}function Fe(e){if(Be(e)){for(let t in e)return!0;return!1}return!1}var _e=/\s/;var qe=/^\s+/;function $e(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&_e.test(e.charAt(t)););return t}(e)+1).replace(qe,""):e}var et=/^[-+]0x[0-9a-f]+$/i,tt=/^0b[01]+$/i,nt=/^0o[0-7]+$/i,st=parseInt;function it(e){if("number"==typeof e)return e;if(h(e))return NaN;if(x(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=x(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=$e(e);var n=tt.test(e);return n||nt.test(e)?st(e.slice(2),n?2:8):et.test(e)?NaN:+e}var rt=1/0;function ot(e){return e?(e=it(e))===rt||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function at(e){var t=ot(e),n=t%1;return t==t?n?t-n:t:0}function ct(e){return e!=e}function lt(e){let t=!1;if(Pe(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(ct(e))return!1;t=!0}return t}function dt(e){if(!lt(e))return 0;return ot(e)}function ut(e){return!!lt(e)&&(e=dt(e),"number"==typeof(t=e)&&t==at(t));var t}var Mt=M.isFinite,wt=Math.min;var It=function(e){var t=Math[e];return function(e,n){if(e=it(e),(n=null==n?0:wt(at(n),292))&&Mt(e)){var s=(de(e)+"e").split("e");return+((s=(de(t(s[0]+"e"+(+s[1]+n)))+"e").split("e"))[0]+"e"+(+s[1]-n))}return t(e)}}("round"),yt=It;function gt(e){if(!lt(e))return 0;e=dt(e);let t=yt(e);return"0"===String(t)?0:t}function mt(e){if(!ut(e))return!1;return gt(e)>0}var Lt=Ve(Object.getPrototypeOf,Object),pt=Function.prototype,Dt=Object.prototype,Ct=pt.toString,ht=Dt.hasOwnProperty,bt=Ct.call(Object);function ft(e){if(!C(e)||"[object Object]"!=D(e))return!1;var t=Lt(e);if(null===t)return!0;var n=ht.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Ct.call(n)==bt}function Nt(e){if(!C(e))return!1;var t=D(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!ft(e)}function xt(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Tt(e){let t,n=Object.prototype.toString.call(e);if(t="[object Promise]"===n,t)return!0;if("[object Function]"!==n)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Zt(e){if(!ut(e))return!1;return gt(e)>=0}function Xt(e,t){return Pe(e)&&Zt(t)?0===(t=gt(t))?"":e.substring(0,t):""}function St(e,t){if(!Pe(e))return"";if(!Zt(t))return"";if(0===(t=gt(t)))return"";let n=e.length-t;return n<0&&(n=0),e.substring(n,n+t)}function vt(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}let Yt=function(e){if(!xt(e))throw new Error("fn is not a function");return function(){let t=vt(),n=null,s=null;try{n=e.apply(this,arguments)}catch(e){s=e}return null!==s?t.resolve({state:"error",msg:s}):Tt(n)?n.then(e=>{t.resolve({state:"success",msg:e})}).catch(e=>{"cancelled"===Ie(e,"reason")?t.resolve({state:"cancelled",msg:""}):t.resolve({state:"error",msg:e})}):t.resolve({state:"success",msg:n}),t}};function At(e,t={}){let n=Ie(t,"fs"),s=!1;try{n.statSync(e),s=!0}catch{s=!1}return s}function Gt(e,t={}){let n=Ie(t,"fs");if(!At(e,{fs:n}))return!1;let s=n.lstatSync(e);return!s.isFile()&&!s.isSymbolicLink()}function jt(e){return Gt(e,{fs:t})}function Kt(e,t={}){let n=Ie(t,"fs");return!!At(e,{fs:n})&&(!n.lstatSync(e).isDirectory()&&!n.lstatSync(e).isSymbolicLink())}function zt(e){return Kt(e,{fs:t})}function Et(e,t,n){if(!Pe(e))return"";if(!Pe(t))return"";if(!Re(n))return"";return String(e).replaceAll(t,n)}var Wt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Vt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var kt={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,n=36e5,s="millisecond",i="second",r="minute",o="hour",a="day",c="week",l="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=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},m=function(e,t,n){var s=String(e);return!s||s.length>=t?e:""+Array(t+1-s.length).join(n)+e},L={s:m,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),s=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+m(s,2,"0")+":"+m(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var s=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(s,l),r=n-i<0,o=t.clone().add(s+(r?-1:1),l);return+(-(s+(n-i)/(r?i-o:o-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:u,w:c,d:a,D:M,h:o,m:r,s:i,ms:s,Q:d}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},p="en",D={};D[p]=g;var C="$isDayjsObject",h=function(e){return e instanceof x||!(!e||!e[C])},b=function e(t,n,s){var i;if(!t)return p;if("string"==typeof t){var r=t.toLowerCase();D[r]&&(i=r),n&&(D[r]=n,i=r);var o=t.split("-");if(!i&&o.length>1)return e(o[0])}else{var a=t.name;D[a]=t,i=a}return!s&&i&&(p=i),i||!s&&p},f=function(e,t){if(h(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new x(n)},N=L;N.l=b,N.i=h,N.w=function(e,t){return f(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var x=function(){function g(e){this.$L=b(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[C]=!0}var m=g.prototype;return m.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(N.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var s=t.match(I);if(s){var i=s[2]-1||0,r=(s[7]||"0").substring(0,3);return n?new Date(Date.UTC(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)):new Date(s[1],i,s[3]||1,s[4]||0,s[5]||0,s[6]||0,r)}}return new Date(t)}(e),this.init()},m.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},m.$utils=function(){return N},m.isValid=function(){return!(this.$d.toString()===w)},m.isSame=function(e,t){var n=f(e);return this.startOf(t)<=n&&n<=this.endOf(t)},m.isAfter=function(e,t){return f(e)<this.startOf(t)},m.isBefore=function(e,t){return this.endOf(t)<f(e)},m.$g=function(e,t,n){return N.u(e)?this[t]:this.set(n,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,t){var n=this,s=!!N.u(t)||t,d=N.p(e),w=function(e,t){var i=N.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return s?i:i.endOf(a)},I=function(e,t){return N.w(n.toDate()[e].apply(n.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,g=this.$M,m=this.$D,L="set"+(this.$u?"UTC":"");switch(d){case u:return s?w(1,0):w(31,11);case l:return s?w(1,g):w(0,g+1);case c:var p=this.$locale().weekStart||0,D=(y<p?y+7:y)-p;return w(s?m-D:m+(6-D),g);case a:case M:return I(L+"Hours",0);case o:return I(L+"Minutes",1);case r:return I(L+"Seconds",2);case i:return I(L+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(e,t){var n,c=N.p(e),d="set"+(this.$u?"UTC":""),w=(n={},n[a]=d+"Date",n[M]=d+"Date",n[l]=d+"Month",n[u]=d+"FullYear",n[o]=d+"Hours",n[r]=d+"Minutes",n[i]=d+"Seconds",n[s]=d+"Milliseconds",n)[c],I=c===a?this.$D+(t-this.$W):t;if(c===l||c===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(e,t){return this.clone().$set(e,t)},m.get=function(e){return this[N.p(e)]()},m.add=function(s,d){var M,w=this;s=Number(s);var I=N.p(d),y=function(e){var t=f(w);return N.w(t.date(t.date()+Math.round(e*s)),w)};if(I===l)return this.set(l,this.$M+s);if(I===u)return this.set(u,this.$y+s);if(I===a)return y(1);if(I===c)return y(7);var g=(M={},M[r]=t,M[o]=n,M[i]=e,M)[I]||1,m=this.$d.getTime()+s*g;return N.w(m,this)},m.subtract=function(e,t){return this.add(-1*e,t)},m.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||w;var s=e||"YYYY-MM-DDTHH:mm:ssZ",i=N.z(this),r=this.$H,o=this.$m,a=this.$M,c=n.weekdays,l=n.months,d=n.meridiem,u=function(e,n,i,r){return e&&(e[n]||e(t,s))||i[n].slice(0,r)},M=function(e){return N.s(r%12||12,e,"0")},I=d||function(e,t,n){var s=e<12?"AM":"PM";return n?s.toLowerCase():s};return s.replace(y,function(e,s){return s||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return N.s(t.$y,4,"0");case"M":return a+1;case"MM":return N.s(a+1,2,"0");case"MMM":return u(n.monthsShort,a,l,3);case"MMMM":return u(l,a);case"D":return t.$D;case"DD":return N.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return u(n.weekdaysMin,t.$W,c,2);case"ddd":return u(n.weekdaysShort,t.$W,c,3);case"dddd":return c[t.$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(t.$s);case"ss":return N.s(t.$s,2,"0");case"SSS":return N.s(t.$ms,3,"0");case"Z":return i}return null}(e)||i.replace(":","")})},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(s,M,w){var I,y=this,g=N.p(M),m=f(s),L=(m.utcOffset()-this.utcOffset())*t,p=this-m,D=function(){return N.m(y,m)};switch(g){case u:I=D()/12;break;case l:I=D();break;case d:I=D()/3;break;case c:I=(p-L)/6048e5;break;case a:I=(p-L)/864e5;break;case o:I=p/n;break;case r:I=p/t;break;case i:I=p/e;break;default:I=p}return w?I:N.a(I)},m.daysInMonth=function(){return this.endOf(l).$D},m.$locale=function(){return D[this.$L]},m.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),s=b(e,t,!0);return s&&(n.$L=s),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()},g}(),T=x.prototype;return f.prototype=T,[["$ms",s],["$s",i],["$m",r],["$H",o],["$W",a],["$M",l],["$y",u],["$D",M]].forEach(function(e){T[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),f.extend=function(e,t){return e.$i||(e(t,x,f),e.$i=!0),f},f.locale=b,f.isDayjs=h,f.unix=function(e){return f(1e3*e)},f.en=D[p],f.Ls=D,f.p={},f}()}(kt);var Ht=Vt(kt.exports);function Qt(){if(!xt(Ht))throw new Error("invalid dayjs");return Ht().format("YYYY-MM-DDTHH:mm:ssZ")}let Ut="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Jt=Ut.length;function Rt(e=32){let t=[];e=mt(e)?gt(e):32;for(let n=0;n<e;n++)t[n]=Ut[0|Math.random()*Jt];return t.join("")}function Pt(e){return"[object Array]"===Object.prototype.toString.call(e)}function Ot(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Bt(e){if(Be(e)){for(let t in e)return!1;return!0}return!1}function Ft(e){return!!Ot(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Bt(e)||(!!function(e){return!(!Re(e)||""!==e)}(e)||(!!function(e){return!!Pt(e)&&0===e.length}(e)||!!ct(e)))))}function _t(e){return!!Pt(e)&&(0!==e.length&&(1!==e.length||!Ft(e[0])))}function qt(e){return!0===(t=e)||!1===t||C(t)&&"[object Boolean]"==D(t);var t}var $t={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function o(e,t){0===--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var c,l,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(l=1,c=new Array(u-1);l<u;l++)c[l-1]=arguments[l];d.fn.apply(d.context,c)}else{var M,w=d.length;for(l=0;l<w;l++)switch(d[l].once&&this.removeListener(e,d[l].fn,void 0,!0),u){case 1:d[l].fn.call(d[l].context);break;case 2:d[l].fn.call(d[l].context,t);break;case 3:d[l].fn.call(d[l].context,t,s);break;case 4:d[l].fn.call(d[l].context,t,s,i);break;default:if(!c)for(M=1,c=new Array(u-1);M<u;M++)c[M-1]=arguments[M];d[l].fn.apply(d[l].context,c)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var c=0,l=[],d=a.length;c<d;c++)(a[c].fn!==t||i&&!a[c].once||s&&a[c].context!==s)&&l.push(a[c]);l.length?this._events[r]=1===l.length?l[0]:l:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}($t);var en=Vt($t.exports);function tn(){return new en}async function nn(e,t={}){let n=null,s=vt();if(!xt(e))return s.reject("waitfunction需輸入函數f"),s;let i=async()=>{let t=e();return Tt(t)&&(t=await t),t};if(n=await i(),!0===n)return s.resolve(),s;let r=Ie(t,"attemptNum",null);mt(r)||(r=200);let o=Ie(t,"timeInterval",null);mt(o)||(o=1e3);let a=0,c=setInterval(async()=>{a+=1,n=await i(),!0===n&&(clearInterval(c),s.resolve()),a>r&&(clearInterval(c),s.reject(`exceeded attemptNum[${r}]`))},o);return s}function sn(e){return function(e,t={}){let n=Ie(t,"fs");if(Gt(e,{fs:n}))return{success:"input folder is already exists: "+e};if(At(e,{fs:n}))return{error:"input path already exists: "+e};try{n.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}function rn(e){return"number"==typeof e||C(e)&&"[object Number]"==D(e)}function on(e){if(!(Pe(e)||lt(e)||h(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var an={exports:{}};var cn,ln={exports:{}};function dn(){return cn||(cn=1,function(e){var t;e.exports=(t=t||function(e,t){var n;if("undefined"!=typeof window&&window.crypto&&(n=window.crypto),"undefined"!=typeof self&&self.crypto&&(n=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(n=globalThis.crypto),!n&&"undefined"!=typeof window&&window.msCrypto&&(n=window.msCrypto),!n&&void 0!==Wt&&Wt.crypto&&(n=Wt.crypto),!n)try{n=require("crypto")}catch(e){}var s=function(){if(n){if("function"==typeof n.getRandomValues)try{return n.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof n.randomBytes)try{return n.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),r={},o=r.lib={},a=o.Base={extend:function(e){var t=i(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=o.WordArray=a.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||d).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,i=e.sigBytes;if(this.clamp(),s%4)for(var r=0;r<i;r++){var o=n[r>>>2]>>>24-r%4*8&255;t[s+r>>>2]|=o<<24-(s+r)%4*8}else for(var a=0;a<i;a+=4)t[s+a>>>2]=n[a>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n<e;n+=4)t.push(s());return new c.init(t,e)}}),l=r.enc={},d=l.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push((r>>>4).toString(16)),s.push((15&r).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s+=2)n[s>>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new c.init(n,t/2)}},u=l.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],i=0;i<n;i++){var r=t[i>>>2]>>>24-i%4*8&255;s.push(String.fromCharCode(r))}return s.join("")},parse:function(e){for(var t=e.length,n=[],s=0;s<t;s++)n[s>>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new c.init(n,t)}},M=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},w=o.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=M.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,s=this._data,i=s.words,r=s.sigBytes,o=this.blockSize,a=r/(4*o),l=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,d=e.min(4*l,r);if(l){for(var u=0;u<l;u+=o)this._doProcessBlock(i,u);n=i.splice(0,l),s.sigBytes-=d}return new c.init(n,d)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});o.Hasher=w.extend({cfg:a.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new I.HMAC.init(e,n).finalize(t)}}});var I=r.algo={};return r}(Math),t)}(ln)),ln.exports}!function(e){e.exports=dn().enc.Utf8}(an);var un=Vt(an.exports),Mn={exports:{}};!function(e){var t;e.exports=(t=dn(),function(){var e=t,n=e.lib.WordArray;function s(e,t,s){for(var i=[],r=0,o=0;o<t;o++)if(o%4){var a=s[e.charCodeAt(o-1)]<<o%4*2|s[e.charCodeAt(o)]>>>6-o%4*2;i[r>>>2]|=a<<24-r%4*8,r++}return n.create(i,r)}e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,s=this._map;e.clamp();for(var i=[],r=0;r<n;r+=3)for(var o=(t[r>>>2]>>>24-r%4*8&255)<<16|(t[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|t[r+2>>>2]>>>24-(r+2)%4*8&255,a=0;a<4&&r+.75*a<n;a++)i.push(s.charAt(o>>>6*(3-a)&63));var c=s.charAt(64);if(c)for(;i.length%4;)i.push(c);return i.join("")},parse:function(e){var t=e.length,n=this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var r=0;r<n.length;r++)i[n.charCodeAt(r)]=r}var o=n.charAt(64);if(o){var a=e.indexOf(o);-1!==a&&(t=a)}return s(e,t,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(Mn);var wn=Vt(Mn.exports);function In(e){if(!Pe(e))return"";let t=un.parse(e);return wn.stringify(t)}function yn(e,t){return!!Be(e)&&(!(!Pe(t)&&!lt(t))&&t in e)}function gn(e,t){for(var n=-1,s=null==e?0:e.length;++n<s&&!1!==t(e[n],n,e););return e}var mn,Ln=function(e,t,n){for(var s=-1,i=Object(e),r=n(e),o=r.length;o--;){var a=r[mn?o:++s];if(!1===t(i[a],a,i))break}return e};var pn=function(e,t){return function(n,s){if(null==n)return n;if(!Ue(n))return e(n,s);for(var i=n.length,r=t?i:-1,o=Object(n);(t?r--:++r<i)&&!1!==s(o[r],r,o););return n}}(function(e,t){return e&&Ln(e,t,Je)}),Dn=pn;function Cn(e){return e}function hn(e,t){var n;return(l(e)?gn:Dn)(e,"function"==typeof(n=t)?n:Cn)}function bn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function fn(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Nn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function xn(e){if(!(bn(e)||(t=e,"[object Blob]"===Object.prototype.toString.call(t))||fn(e)||Nn(e)))return null;var t;try{if(e.byteLength)return e.byteLength}catch(e){}try{if(e.length)return e.length}catch(e){}try{if(e.size)return e.size}catch(e){}return null}function Tn(e){if(!Pe(e))return new Uint8Array;let t;try{t=function(e){if(!Re(e))return new Uint8Array;let t=wn.parse(e),n=t.words,s=t.sigBytes,i=new Uint8Array(s);for(let e=0;e<s;e++){let t=n[e>>>2]>>>24-e%4*8&255;i[e]=t}return i}(In(e))}catch(e){return new Uint8Array}return t}function Zn(e,t,n=0,s=!0,i=52,r=8){return function(e,t,n,s,i,r){if(!lt(e))return null;if(!fn(t))return null;if(!ut(n))return null;if(!qt(s))return null;if(!ut(i))return null;if(!ut(r))return null;let o,a,c;e=dt(e);let l=8*r-i-1,d=(1<<l)-1,u=d>>1,M=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,w=s?r-1:0,I=s?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=d):(o=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-o))<1&&(o--,c*=2),(e+=o+u>=1?M/c:M*Math.pow(2,1-u))*c>=2&&(o++,c/=2),o+u>=d?(a=0,o=d):o+u>=1?(a=(e*c-1)*Math.pow(2,i),o+=u):(a=e*Math.pow(2,u-1)*Math.pow(2,i),o=0));i>=8;t[n+w]=255&a,w+=I,a/=256,i-=8);for(o=o<<i|a,l+=i;l>0;t[n+w]=255&o,w+=I,o/=256,l-=8);return t[n+w-I]|=128*y,null}(e,t,n,s,i,r)}function Xn(e){let t=[],n=[];if(!_t(e)&&!Fe(e))return null;let s=[],i=[];function r(e){s.push(xn(e)),i.push(e)}try{let o=function(e){if(!Be(e))return{results:"",binarys:[]};if(Bt(e))return{results:"",binarys:[]};let t="",n=[];try{let s=-1;t=JSON.stringify(e,function(e,t){if(fn(t)){s+=1;let e=`[Uint8Array]::${s}`;return n.push(t),e}if(Nn(t)){s+=1;let e=`[Uint16Array]::${s}`;return n.push(t),e}if(bn(t)){s+=1;let e=`[ArrayBuffer]::${s}`;return n.push(t),e}return Nt(t)&&(t=t.toString()),t})}catch(e){}return{results:t,binarys:n}}(e);r(Tn(o.results)),hn(o.binarys,e=>{r(e)});let a=s,c=Tn(JSON.stringify(a)),l=new Uint8Array(8);Zn(xn(c),l),t.push(l),t.push(c),hn(i,e=>{t.push(e)}),hn(t,e=>{n=function(e,t){let n=xn(e),s=xn(t),i=new Uint8Array(n+s);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),n),i}(n,e)})}catch(e){return null}return n}function Sn(e,t=0,n=!0,s=52,i=8){return function(e,t,n,s,i){if(!fn(e))return null;if(!ut(t))return null;if(!qt(n))return null;if(!ut(s))return null;if(!ut(i))return null;let r,o,a=8*i-s-1,c=(1<<a)-1,l=c>>1,d=-7,u=n?0:i-1,M=n?1:-1,w=e[t+u];for(u+=M,r=w&(1<<-d)-1,w>>=-d,d+=a;d>0;r=256*r+e[t+u],u+=M,d-=8);for(o=r&(1<<-d)-1,r>>=-d,d+=s;d>0;o=256*o+e[t+u],u+=M,d-=8);if(0===r)r=1-l;else{if(r===c)return o?NaN:1/0*(w?-1:1);o+=Math.pow(2,s),r-=l}return(w?-1:1)*o*Math.pow(2,r-s)}(e,t,n,s,i)}var vn={exports:{}};!function(e){var t;e.exports=(t=dn(),function(){if("function"==typeof ArrayBuffer){var e=t.lib.WordArray,n=e.init,s=e.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,s=[],i=0;i<t;i++)s[i>>>2]|=e[i]<<24-i%4*8;n.call(this,s,t)}else n.apply(this,arguments)};s.prototype=e}}(),t.lib.WordArray)}(vn);var Yn=Vt(vn.exports);function An(e){if(!fn(e))return"";let t;try{n=function(e){return fn(e)?Yn.create(e).toString(wn):""}(e),t=Pe(n)?wn.parse(n).toString(un):""}catch(e){return""}var n;return t}function Gn(e){let t=null;if(!fn(e))return null;try{let n=8,s=e.slice(0,n),i=e.slice(n,xn(e)),r=Sn(s),o=i.slice(0,r),a=i.slice(r,xn(i)),c=An(o),l=function(e,t){let n=0,s=0,i=[];return hn(t,t=>{s=n+t;let r=e.slice(n,s);n=s,i.push(r)}),i}(a,JSON.parse(c));t=function(e){if(!Fe(e))return{};let{results:t,binarys:n}=e;if(!Pe(t))return{};if(!Pt(n))return{};let s={};try{s=JSON.parse(t,function(e,t){if(Pe(t)){if(t.indexOf("[Uint8Array]::")>=0){let e=gt(t.replace("[Uint8Array]::",""));return n[e]}if(t.indexOf("[Uint16Array]::")>=0){let e=gt(t.replace("[Uint16Array]::",""));return n[e]}if(t.indexOf("[ArrayBuffer]::")>=0){let e=gt(t.replace("[ArrayBuffer]::",""));return n[e]}}return t})}catch(e){}return s}({results:An(l.shift()),binarys:l})}catch(e){}return t}function jn(e){var t=this.__data__=new O(e);this.size=t.size}jn.prototype.clear=function(){this.__data__=new O,this.size=0},jn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},jn.prototype.get=function(e){return this.__data__.get(e)},jn.prototype.has=function(e){return this.__data__.has(e)},jn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof O){var s=n.__data__;if(!B||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new _(s)}return n.set(e,t),this.size=n.size,this};function Kn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new _;++t<n;)this.add(e[t])}function zn(e,t){for(var n=-1,s=null==e?0:e.length;++n<s;)if(t(e[n],n,e))return!0;return!1}function En(e,t){return e.has(t)}Kn.prototype.add=Kn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Kn.prototype.has=function(e){return this.__data__.has(e)};function Wn(e,t,n,s,i,r){var o=1&n,a=e.length,c=t.length;if(a!=c&&!(o&&c>a))return!1;var l=r.get(e),d=r.get(t);if(l&&d)return l==t&&d==e;var u=-1,M=!0,w=2&n?new Kn:void 0;for(r.set(e,t),r.set(t,e);++u<a;){var I=e[u],y=t[u];if(s)var g=o?s(y,I,u,t,e,r):s(I,y,u,e,t,r);if(void 0!==g){if(g)continue;M=!1;break}if(w){if(!zn(t,function(e,t){if(!En(w,t)&&(I===e||i(I,e,n,s,r)))return w.push(t)})){M=!1;break}}else if(I!==y&&!i(I,y,n,s,r)){M=!1;break}}return r.delete(e),r.delete(t),M}var Vn=M.Uint8Array;function kn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,s){n[++t]=[s,e]}),n}function Hn(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var Qn=w?w.prototype:void 0,Un=Qn?Qn.valueOf:void 0;function Jn(e,t){for(var n=-1,s=t.length,i=e.length;++n<s;)e[i+n]=t[n];return e}function Rn(e,t,n){var s=t(e);return l(e)?s:Jn(s,n(e))}function Pn(e,t){for(var n=-1,s=null==e?0:e.length,i=0,r=[];++n<s;){var o=e[n];t(o,n,e)&&(r[i++]=o)}return r}function On(){return[]}var Bn=Object.prototype.propertyIsEnumerable,Fn=Object.getOwnPropertySymbols,_n=Fn?function(e){return null==e?[]:(e=Object(e),Pn(Fn(e),function(t){return Bn.call(e,t)}))}:On;function qn(e){return Rn(e,Je,_n)}var $n=Object.prototype.hasOwnProperty;var es=V(M,"DataView"),ts=V(M,"Promise"),ns=V(M,"Set"),ss=V(M,"WeakMap"),is="[object Map]",rs="[object Promise]",os="[object Set]",as="[object WeakMap]",cs="[object DataView]",ls=Y(es),ds=Y(B),us=Y(ts),Ms=Y(ns),ws=Y(ss),Is=D;(es&&Is(new es(new ArrayBuffer(1)))!=cs||B&&Is(new B)!=is||ts&&Is(ts.resolve())!=rs||ns&&Is(new ns)!=os||ss&&Is(new ss)!=as)&&(Is=function(e){var t=D(e),n="[object Object]"==t?e.constructor:void 0,s=n?Y(n):"";if(s)switch(s){case ls:return cs;case ds:return is;case us:return rs;case Ms:return os;case ws:return as}return t});var ys=Is,gs="[object Arguments]",ms="[object Array]",Ls="[object Object]",ps=Object.prototype.hasOwnProperty;function Ds(e,t,n,s,i,r){var o=l(e),a=l(t),c=o?ms:ys(e),d=a?ms:ys(t),u=(c=c==gs?Ls:c)==Ls,M=(d=d==gs?Ls:d)==Ls,w=c==d;if(w&&fe(e)){if(!fe(t))return!1;o=!0,u=!1}if(w&&!u)return r||(r=new jn),o||je(e)?Wn(e,t,n,s,i,r):function(e,t,n,s,i,r,o){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new Vn(e),new Vn(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return J(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=kn;case"[object Set]":var c=1&s;if(a||(a=Hn),e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;s|=2,o.set(e,t);var d=Wn(a(e),a(t),s,i,r,o);return o.delete(e),d;case"[object Symbol]":if(Un)return Un.call(e)==Un.call(t)}return!1}(e,t,c,n,s,i,r);if(!(1&n)){var I=u&&ps.call(e,"__wrapped__"),y=M&&ps.call(t,"__wrapped__");if(I||y){var g=I?e.value():e,m=y?t.value():t;return r||(r=new jn),i(g,m,n,s,r)}}return!!w&&(r||(r=new jn),function(e,t,n,s,i,r){var o=1&n,a=qn(e),c=a.length;if(c!=qn(t).length&&!o)return!1;for(var l=c;l--;){var d=a[l];if(!(o?d in t:$n.call(t,d)))return!1}var u=r.get(e),M=r.get(t);if(u&&M)return u==t&&M==e;var w=!0;r.set(e,t),r.set(t,e);for(var I=o;++l<c;){var y=e[d=a[l]],g=t[d];if(s)var m=o?s(g,y,d,t,e,r):s(y,g,d,e,t,r);if(!(void 0===m?y===g||i(y,g,n,s,r):m)){w=!1;break}I||(I="constructor"==d)}if(w&&!I){var L=e.constructor,p=t.constructor;L==p||!("constructor"in e)||!("constructor"in t)||"function"==typeof L&&L instanceof L&&"function"==typeof p&&p instanceof p||(w=!1)}return r.delete(e),r.delete(t),w}(e,t,n,s,i,r))}function Cs(e,t,n,s,i){return e===t||(null==e||null==t||!C(e)&&!C(t)?e!=e&&t!=t:Ds(e,t,n,s,Cs,i))}function hs(e){return e==e&&!x(e)}function bs(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}function fs(e){var t=function(e){for(var t=Je(e),n=t.length;n--;){var s=t[n],i=e[s];t[n]=[s,i,hs(i)]}return t}(e);return 1==t.length&&t[0][2]?bs(t[0][0],t[0][1]):function(n){return n===e||function(e,t,n,s){var i=n.length,r=i,o=!s;if(null==e)return!r;for(e=Object(e);i--;){var a=n[i];if(o&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<r;){var c=(a=n[i])[0],l=e[c],d=a[1];if(o&&a[2]){if(void 0===l&&!(c in e))return!1}else{var u=new jn;if(s)var M=s(l,d,c,e,t,u);if(!(void 0===M?Cs(d,l,3,s,u):M))return!1}}return!0}(n,e,t)}}function Ns(e,t){return null!=e&&t in Object(e)}function xs(e,t){return null!=e&&function(e,t,n){for(var s=-1,i=(t=ue(t,e)).length,r=!1;++s<i;){var o=Me(t[s]);if(!(r=null!=e&&n(e,o)))break;e=e[o]}return r||++s!=i?r:!!(i=null==e?0:e.length)&&Te(i)&&xe(o,i)&&(l(e)||De(e))}(e,t,Ns)}function Ts(e){return function(t){return null==t?void 0:t[e]}}function Zs(e){return N(e)?Ts(Me(e)):function(e){return function(t){return we(t,e)}}(e)}function Xs(e){return"function"==typeof e?e:null==e?Cn:"object"==typeof e?l(e)?function(e,t){return N(e)&&hs(t)?bs(Me(e),t):function(n){var s=Ie(n,e);return void 0===s&&s===t?xs(n,e):Cs(t,s,3)}}(e[0],e[1]):fs(e):Zs(e)}function Ss(e,t){var n=-1,s=Ue(e)?Array(e.length):[];return Dn(e,function(e,i,r){s[++n]=t(e,i,r)}),s}function vs(e,t){return(l(e)?oe:Ss)(e,Xs(t))}function Ys(e,t,n){var s=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var r=Array(i);++s<i;)r[s]=e[s+t];return r}function As(e){return e!=e}function Gs(e,t,n){return t==t?function(e,t,n){for(var s=n-1,i=e.length;++s<i;)if(e[s]===t)return s;return-1}(e,t,n):function(e,t,n,s){for(var i=e.length,r=n+(s?1:-1);s?r--:++r<i;)if(t(e[r],r,e))return r;return-1}(e,As,n)}var js=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function Ks(e){return js.test(e)}var zs="\\ud800-\\udfff",Es="["+zs+"]",Ws="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Vs="\\ud83c[\\udffb-\\udfff]",ks="[^"+zs+"]",Hs="(?:\\ud83c[\\udde6-\\uddff]){2}",Qs="[\\ud800-\\udbff][\\udc00-\\udfff]",Us="(?:"+Ws+"|"+Vs+")"+"?",Js="[\\ufe0e\\ufe0f]?",Rs=Js+Us+("(?:\\u200d(?:"+[ks,Hs,Qs].join("|")+")"+Js+Us+")*"),Ps="(?:"+[ks+Ws+"?",Ws,Hs,Qs,Es].join("|")+")",Os=RegExp(Vs+"(?="+Vs+")|"+Ps+Rs,"g");function Bs(e){return Ks(e)?function(e){return e.match(Os)||[]}(e):function(e){return e.split("")}(e)}function Fs(e,t,n){if((e=de(e))&&(n||void 0===t))return $e(e);if(!e||!(t=le(t)))return e;var s=Bs(e),i=Bs(t),r=function(e,t){for(var n=-1,s=e.length;++n<s&&Gs(t,e[n],0)>-1;);return n}(s,i),o=function(e,t){for(var n=e.length;n--&&Gs(t,e[n],0)>-1;);return n}(s,i)+1;return function(e,t,n){var s=e.length;return n=void 0===n?s:n,!t&&n>=s?e:Ys(e,t,n)}(s,r,o).join("")}function _s(e,t){if(!Pe(e))return[];if(!Pe(t))return[];let n=function(e,t){return Pe(e)&&Pe(t)?e.split(t):[]}(e,t);n=vs(n,Fs);let s=[];return hn(n,function(e){Pe(e)&&s.push(e)}),s}function qs(e){return function(e,t={}){let n=Ie(t,"fs");if(!At(e,{fs:n}))return{success:"file does not exist: "+e};if(!Kt(e,{fs:n}))return{error:"input path is not a file: "+e};try{n.unlinkSync(e)}catch(e){return{error:e}}return{success:"done: "+e}}(e,{fs:t})}var $s={exports:{}};!function(e){var t,n;e.exports=(t=r,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var c,l,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(l=1,c=new Array(u-1);l<u;l++)c[l-1]=arguments[l];d.fn.apply(d.context,c)}else{var M,w=d.length;for(l=0;l<w;l++)switch(d[l].once&&this.removeListener(e,d[l].fn,void 0,!0),u){case 1:d[l].fn.call(d[l].context);break;case 2:d[l].fn.call(d[l].context,t);break;case 3:d[l].fn.call(d[l].context,t,s);break;case 4:d[l].fn.call(d[l].context,t,s,i);break;default:if(!c)for(M=1,c=new Array(u-1);M<u;M++)c[M-1]=arguments[M];d[l].fn.apply(d[l].context,c)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var c=0,l=[],d=a.length;c<d;c++)(a[c].fn!==t||i&&!a[c].once||s&&a[c].context!==s)&&l.push(a[c]);l.length?this._events[r]=1===l.length?l[0]:l:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9Yy5jYWxsKHQscyksZT10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYocj90W3NdPWU6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfXZhciBfPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIGQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdih0KT09X312YXIgYj0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxnPS9eXHcqJC87ZnVuY3Rpb24gaih0KXt2YXIgcj10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1yfHwiZnVuY3Rpb24iPT1yKX12YXIgTz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsUz0iW29iamVjdCBGdW5jdGlvbl0iLG09IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix3PSJbb2JqZWN0IFByb3h5XSI7dmFyICQsUj1pWyJfX2NvcmUtanNfc2hhcmVkX18iXSx6PSgkPS9bXi5dKyQvLmV4ZWMoUiYmUi5rZXlzJiZSLmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIiskOiIiO3ZhciB4PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxBPUZ1bmN0aW9uLnByb3RvdHlwZSxOPU9iamVjdC5wcm90b3R5cGUsUD1BLnRvU3RyaW5nLGs9Ti5oYXNPd25Qcm9wZXJ0eSxFPVJlZ0V4cCgiXiIrUC5jYWxsKGspLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEModCl7aWYoIWoodCl8fChyPXQseiYmeiBpbiByKSlyZXR1cm4hMTt2YXIgcixlPWZ1bmN0aW9uKHQpe2lmKCFqKHQpKXJldHVybiExO3ZhciByPXYodCk7cmV0dXJuIHI9PVN8fHI9PW18fHI9PU98fHI9PXd9KHQpP0U6RjtyZXR1cm4gZS50ZXN0KGZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4geC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpfWZ1bmN0aW9uIEkodCxyKXt2YXIgZT1mdW5jdGlvbih0LHIpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W3JdfSh0LHIpO3JldHVybiBDKGUpP2U6dm9pZCAwfXZhciBUPUkoT2JqZWN0LCJjcmVhdGUiKTt2YXIgTT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTCh0KXt2YXIgcj0tMSxlPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrcjxlOyl7dmFyIG49dFtyXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBVKHQscil7Zm9yKHZhciBlLG4sbz10Lmxlbmd0aDtvLS07KWlmKChlPXRbb11bMF0pPT09KG49cil8fGUhPWUmJm4hPW4pcmV0dXJuIG87cmV0dXJuLTF9TC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVQ/VChudWxsKTp7fSx0aGlzLnNpemU9MH0sTC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1yPzE6MCxyfSxMLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihUKXt2YXIgZT1yW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PWU/dm9pZCAwOmV9cmV0dXJuIE0uY2FsbChyLHQpP3JbdF06dm9pZCAwfSxMLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gVD92b2lkIDAhPT1yW3RdOnEuY2FsbChyLHQpfSxMLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxlW3RdPVQmJnZvaWQgMD09PXI/Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iOnIsdGhpc307dmFyIEQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBHKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sRy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX19kYXRhX18sZT1VKHIsdCk7cmV0dXJuIShlPDApJiYoZT09ci5sZW5ndGgtMT9yLnBvcCgpOkQuY2FsbChyLGUsMSksLS10aGlzLnNpemUsITApfSxHLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPVUocix0KTtyZXR1cm4gZTwwP3ZvaWQgMDpyW2VdWzFdfSxHLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFUodGhpcy5fX2RhdGFfXyx0KT4tMX0sRy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVUoZSx0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxlLnB1c2goW3Qscl0pKTplW25dWzFdPXIsdGhpc307dmFyIFc9SShpLCJNYXAiKTtmdW5jdGlvbiBCKHQscil7dmFyIGUsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2YoZT1yKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09ZTpudWxsPT09ZSk/b1sic3RyaW5nIj09dHlwZW9mIHI/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBIKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUgucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgTCxtYXA6bmV3KFd8fEcpLHN0cmluZzpuZXcgTH19LEgucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgcj1CKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LEgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLHQpLmdldCh0KX0sSC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBCKHRoaXMsdCkuaGFzKHQpfSxILnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT1CKHRoaXMsdCksbj1lLnNpemU7cmV0dXJuIGUuc2V0KHQsciksdGhpcy5zaXplKz1lLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBKPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBLKHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoSik7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1yP3IuYXBwbHkodGhpcyxuKTpuWzBdLGk9ZS5jYWNoZTtpZihpLmhhcyhvKSlyZXR1cm4gaS5nZXQobyk7dmFyIHU9dC5hcHBseSh0aGlzLG4pO3JldHVybiBlLmNhY2hlPWkuc2V0KG8sdSl8fGksdX07cmV0dXJuIGUuY2FjaGU9bmV3KEsuQ2FjaGV8fEgpLGV9Sy5DYWNoZT1IO3ZhciBRLFYsWCxZPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFo9L1xcKFxcKT8vZyx0dD0oUT1mdW5jdGlvbih0KXt2YXIgcj1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJnIucHVzaCgiIiksdC5yZXBsYWNlKFksKGZ1bmN0aW9uKHQsZSxuLG8pe3IucHVzaChuP28ucmVwbGFjZShaLCIkMSIpOmV8fHQpfSkpLHJ9LFY9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09WC5zaXplJiZYLmNsZWFyKCksdH0pKSxYPVYuY2FjaGUsVikscnQ9dHQ7dmFyIGV0PTEvMCxudD11P3UucHJvdG90eXBlOnZvaWQgMCxvdD1udD9udC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gaXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGUodCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsaXQpKyIiO2lmKGQodCkpcmV0dXJuIG90P290LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LWV0PyItMCI6cn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gbnVsbD09dD8iIjppdCh0KX1mdW5jdGlvbiBhdCh0LHIpe3JldHVybiBlKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihlKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFkKHQpKXx8Zy50ZXN0KHQpfHwhYi50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06cnQodXQodCkpfXZhciBjdD0xLzA7ZnVuY3Rpb24gZnQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxkKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1jdD8iLTAiOnJ9ZnVuY3Rpb24gc3QodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1hdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbZnQocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIGx0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBodCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHl0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIF90KHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFodCh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISgheXQodCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIXB0KHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXZ0KHQpKSkpKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4hKCF5dCh0KXx8IiI9PT10KX12YXIgYnQ9L1xzLzt2YXIgZ3Q9L15ccysvO2Z1bmN0aW9uIGp0KHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZidC50ZXN0KHQuY2hhckF0KHIpKTspO3JldHVybiByfSh0KSsxKS5yZXBsYWNlKGd0LCIiKTp0fXZhciBPdD1OYU4sU3Q9L15bLStdMHhbMC05YS1mXSskL2ksbXQ9L14wYlswMV0rJC9pLHd0PS9eMG9bMC03XSskL2ksJHQ9cGFyc2VJbnQ7ZnVuY3Rpb24gUnQodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKGQodCkpcmV0dXJuIE90O2lmKGoodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PWoocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PWp0KHQpO3ZhciBlPW10LnRlc3QodCk7cmV0dXJuIGV8fHd0LnRlc3QodCk/JHQodC5zbGljZSgyKSxlPzI6OCk6U3QudGVzdCh0KT9PdDordH12YXIgenQ9MS8wLHh0PTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD8odD1SdCh0KSk9PT16dHx8dD09PS16dD8odDwwPy0xOjEpKnh0OnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBBdCh0KXt2YXIgcj1GdCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gTnQodCl7bGV0IHI9ITE7aWYoZHQodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodnQodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBQdCh0KXtpZighTnQodCkpcmV0dXJuIDA7cmV0dXJuIEZ0KHQpfWZ1bmN0aW9uIGt0KHQpe3JldHVybiEhTnQodCkmJih0PVB0KHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09QXQocikpO3ZhciByfXZhciBFdD1pLmlzRmluaXRlLEN0PU1hdGgubWluO3ZhciBJdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9UnQodCksKGU9bnVsbD09ZT8wOkN0KEF0KGUpLDI5MikpJiZFdCh0KSl7dmFyIG49KHV0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPSh1dChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxUdD1JdDtmdW5jdGlvbiBNdCh0KXtpZighTnQodCkpcmV0dXJuIDA7dD1QdCh0KTtsZXQgcj1UdCh0KTtyZXR1cm4iMCI9PT1TdHJpbmcocik/MDpyfWZ1bmN0aW9uIHF0KHQpe2lmKCFrdCh0KSlyZXR1cm4hMTtyZXR1cm4gTXQodCk+PTB9ZnVuY3Rpb24gTHQodCxyKXtpZighZHQodCkpcmV0dXJuIiI7aWYoIXF0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1NdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gVXQodCxyKXtyZXR1cm4gZHQodCkmJnF0KHIpPzA9PT0ocj1NdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBkdCh0KSYmcXQocik/MD09PShyPU10KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIER0KHQpe2lmKCFkdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUx0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4iOiI9PT1MdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09THQodCwxKSl7bGV0IHI9VXQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEd0KHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFd0KHQscj17fSl7bGV0IGU9c3QociwiZnMiKSxuPSExO3RyeXtlLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiBCdCh0LHI9e30pe2xldCBlPXN0KHIsImZzIik7aWYoIVd0KHQse2ZzOmV9KSlyZXR1cm4hMTtsZXQgbj1lLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBIdCh0LHI9e30pe2xldCBlPXN0KHIsImZzIik7cmV0dXJuISFXdCh0LHtmczplfSkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIEp0KHQscj17fSl7bGV0IGU9c3QociwiZnMiKTtpZighV3QodCx7ZnM6ZX0pKXJldHVybntzdWNjZXNzOiJmaWxlIGRvZXMgbm90IGV4aXN0OiAiK3R9O2lmKCFIdCh0LHtmczplfSkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGlzIG5vdCBhIGZpbGU6ICIrdH07dHJ5e2UudW5saW5rU3luYyh0KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19cmV0dXJue3N1Y2Nlc3M6ImRvbmU6ICIrdH19YXN5bmMgZnVuY3Rpb24gS3QodCxyLGU9e30pe2xldCBuPSIiLG89c3QoZSwiZnMiKTtpZighcHQoaT10KXx8MD09PWkubGVuZ3RofHwxPT09aS5sZW5ndGgmJl90KGlbMF0pKXRocm93IG5ldyBFcnJvcigiZnBzSW4gaW4gbm90IGFuIGVmZmVjdGl2ZSBhcnJheSIpO3ZhciBpO2xldCB1PWZ1bmN0aW9uKHQpe2lmKCFkdCh0KSlyZXR1cm4iIjtsZXQgcj1EdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPUd0KHQ9ci5wYXRoKTtpZighZHQoZSkpcmV0dXJuIHQ7bGV0IG49RHQodD1VdCh0LGUubGVuZ3RoKSk7cmV0dXJuIG4uaXNSb290LG4ucGF0aH0ociksYT1zdChlLCJmbk91dCIsIiIpO2R0KGEpfHwoYT1HdChyKSksQnQodSx7ZnM6b30pfHxmdW5jdGlvbih0LHI9e30pe2xldCBlPXN0KHIsImZzIik7aWYoQnQodCx7ZnM6ZX0pKXJldHVybntzdWNjZXNzOiJpbnB1dCBmb2xkZXIgaXMgYWxyZWFkeSBleGlzdHM6ICIrdH07aWYoV3QodCx7ZnM6ZX0pKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBhbHJlYWR5IGV4aXN0czogIit0fTt0cnl7ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fX0odSx7ZnM6b30pO2xldCBjPWx0KCk7dHJ5e2xldCBlPW8uY3JlYXRlV3JpdGVTdHJlYW0ocik7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2xldCBpPXRbcl07aWYoIUh0KGkse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtpfV0gaXMgbm90IGEgZmlsZWApO2xldCB1PSgpPT57bGV0IHQ9bHQoKSxyPW8uY3JlYXRlUmVhZFN0cmVhbShpKTtyZXR1cm4gci5vbigiZXJyb3IiLChyPT57bj1yLm1lc3NhZ2UsdC5yZWplY3Qocil9KSksci5vbigiZW5kIiwoKCk9PntKdChpLHtmczpvfSksdC5yZXNvbHZlKCl9KSksci5waXBlKGUse2VuZDohMX0pLHR9O2F3YWl0IHUoKX1lLmVuZCgpLGUub24oImVycm9yIiwodD0+e249dC5tZXNzYWdlLGMucmVqZWN0KG4pfSkpLGUub24oImZpbmlzaCIsKCgpPT57bGV0IHQ9e2ZpbGVuYW1lOmEscGF0aDpyfTtjLnJlc29sdmUodCl9KSl9Y2F0Y2godCl7bj10Lm1lc3NhZ2UsYy5yZWplY3Qobil9cmV0dXJuIGN9bGV0IG1lcmdlU2xpY2VzPWFzeW5jKGUsbixvKT0+e2xldCBpPVtdO2ZvcihsZXQgcj0wO3I8bjtyKyspe2xldCBuPXQucmVzb2x2ZShvLGAke2V9XyR7cn1gKTtpLnB1c2gobil9bGV0IHU9dC5yZXNvbHZlKG8sZSksYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbj17fSl7cmV0dXJuIEt0KHQsZSx7ZnM6ciwuLi5ufSl9KGksdSk7cmV0dXJuIHIud3JpdGVGaWxlU3luYyhgJHt1fS5kb25lYCwiIiwidXRmOCIpLGF9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VTbGljZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VTbGljZXMKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o(e)}}(t);if(!i)return o("invalid worker"),null;function r(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return i.postMessage(n),s.once(t,t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)}),e}function o(e){s.emit("error",e)}return i.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),i.on("error",o),i.on("exit",e=>{1!==e&&o("exit code["+e+"] !== 1")}),function(){let e={mode:"init",type:"function",input:[...arguments]};i.postMessage(e)}([...arguments]),s.main=r,s.main=r,s.terminate=function(){i?(i.terminate(),i=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("unhandledRejection",e=>{console.log("outer:unhandledRejection",e)}),process.on("uncaughtException",e=>{console.log("outer:uncaughtException",e)}),process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}($s);var ei=Vt($s.exports);let ti=(e,t,n)=>{let s=`${function(){if(!xt(Ht))throw new Error("invalid dayjs");return Ht().format("YYYYMMDDHHmmss")}()}|${Rt(6)}|${e}`;return setTimeout(()=>{ei(e,t,n).catch(e=>{console.log(e)})},1),s},ni=(t,n)=>{let s="";if(!Pe(t))return s=`invalid id[${t}]`,console.log(s),{state:"error",msg:s,path:""};let i=Ie(_s(t,"|"),2,"");if(!Pe(i))return s=`can not find fileHash in id[${t}]`,console.log(s),{state:"error",msg:s,path:""};let r=e.resolve(n,i),o=e.resolve(n,`${i}.done`),a=zt(r),c=zt(o),l=a&&c;return!a&&c&&qs(o),{state:l?"success":"merging",msg:"",path:r}};var si={exports:{}};!function(e){var t,n;e.exports=(t=r,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var c,l,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(l=1,c=new Array(u-1);l<u;l++)c[l-1]=arguments[l];d.fn.apply(d.context,c)}else{var M,w=d.length;for(l=0;l<w;l++)switch(d[l].once&&this.removeListener(e,d[l].fn,void 0,!0),u){case 1:d[l].fn.call(d[l].context);break;case 2:d[l].fn.call(d[l].context,t);break;case 3:d[l].fn.call(d[l].context,t,s);break;case 4:d[l].fn.call(d[l].context,t,s,i);break;default:if(!c)for(M=1,c=new Array(u-1);M<u;M++)c[M-1]=arguments[M];d[l].fn.apply(d[l].context,c)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var c=0,l=[],d=a.length;c<d;c++)(a[c].fn!==t||i&&!a[c].once||s&&a[c].context!==s)&&l.push(a[c]);l.length?this._events[r]=1===l.length?l[0]:l:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGQ9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBiKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmQmJmQgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWIodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSx3PWouaGFzT3duUHJvcGVydHksbT1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJncuY2FsbCh0LCJjYWxsZWUiKSYmIW0uY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUseD16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxFPSh4P3guaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0saz05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/azplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIFA9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1QfXZhciBJPXt9O0lbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUlbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUlbIltvYmplY3QgSW50OEFycmF5XSJdPUlbIltvYmplY3QgSW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IEludDMyQXJyYXldIl09SVsiW29iamVjdCBVaW50OEFycmF5XSJdPUlbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09SVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1JWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLElbIltvYmplY3QgQXJndW1lbnRzXSJdPUlbIltvYmplY3QgQXJyYXldIl09SVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1JWyJbb2JqZWN0IEJvb2xlYW5dIl09SVsiW29iamVjdCBEYXRhVmlld10iXT1JWyJbb2JqZWN0IERhdGVdIl09SVsiW29iamVjdCBFcnJvcl0iXT1JWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUlbIltvYmplY3QgTWFwXSJdPUlbIltvYmplY3QgTnVtYmVyXSJdPUlbIltvYmplY3QgT2JqZWN0XSJdPUlbIltvYmplY3QgUmVnRXhwXSJdPUlbIltvYmplY3QgU2V0XSJdPUlbIltvYmplY3QgU3RyaW5nXSJdPUlbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxUPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsUj1UJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsVT1SJiZSLmV4cG9ydHM9PT1UJiZ1LnByb2Nlc3MsTj1mdW5jdGlvbigpe3RyeXt2YXIgdD1SJiZSLnJlcXVpcmUmJlIucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxVJiZVLmJpbmRpbmcmJlUuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksRD1OJiZOLmlzVHlwZWRBcnJheSxCPUQ/KE09RCxmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFJW2IodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmRSh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWIodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGR0PXZ0Lmhhc093blByb3BlcnR5LGJ0PVJlZ0V4cCgiXiIreXQuY2FsbChkdCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/YnQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3Iiksd3Q9X3QoYSwiTWFwIiksbXQ9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIseHQ9IltvYmplY3QgU2V0XSIsRXQ9IltvYmplY3QgV2Vha01hcF0iLGt0PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLCR0PWx0KHd0KSxQdD1sdChtdCksTHQ9bHQoT3QpLEl0PWx0KFN0KSxNdD1iOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1rdHx8d3QmJk10KG5ldyB3dCkhPUF0fHxtdCYmTXQobXQucmVzb2x2ZSgpKSE9enR8fE90JiZNdChuZXcgT3QpIT14dHx8U3QmJk10KG5ldyBTdCkhPUV0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWIodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4ga3Q7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBQdDpyZXR1cm4genQ7Y2FzZSBMdDpyZXR1cm4geHQ7Y2FzZSBJdDpyZXR1cm4gRXR9cmV0dXJuIGV9KTt2YXIgVHQ9TXQsUnQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gVXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgTnQ9VXQoImxlbmd0aCIpLER0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gRHQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOk50KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmYihlKT09UnQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1UdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KHd0fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIXd0fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGRlPTEsYmU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZkZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZiZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBkPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09ZCl7aWYoZCljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIHdlKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciBtZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLHhlPSJbb2JqZWN0IE1hcF0iLEVlPSJbb2JqZWN0IE51bWJlcl0iLGtlPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLFBlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsSWU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxUZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBSZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFVlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxEZT1OZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksUmUoTmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBVZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LERlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOlR0KHQpLGY9YT9HZTpUdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmRSh0KSl7aWYoIUUoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIEllOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgRWU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBrZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgeGU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJm1lO2lmKGF8fChhPXdlKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIFBlOmlmKFRlKXJldHVybiBUZS5jYWxsKHQpPT1UZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxkPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGQscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sZD1lW3NdO2lmKG4pdmFyIGI9aT9uKGQseSxzLGUsdCx1KTpuKHksZCxzLHQsZSx1KTtpZighKHZvaWQgMD09PWI/eT09PWR8fG8oeSxkLHIsbix1KTpiKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmYih0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGRyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGRyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGJyKHQpe3JldHVybiBudWxsPT10PyIiOmRyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihicih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gd3IodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiBtcih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6d3IodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24geHIodCl7cmV0dXJuIGlyKHQpP1V0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHdyKGUsdCl9fSh0KX1mdW5jdGlvbiBFcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPW1yKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6eHIodCl9ZnVuY3Rpb24ga3IodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKFModCk/cmU6a3IpKHQsRXIoZSkpfXZhciAkcj0vXHMvO3ZhciBQcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoUHIsIiIpOnR9ZnVuY3Rpb24gSXIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gVHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFJyPSJcXHVkODAwLVxcdWRmZmYiLFVyPSJbIitScisiXSIsTnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixEcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK1JyKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK05yKyJ8IitEcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK05yKyI/IixOcixDcixXcixVcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoRHIrIig/PSIrRHIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1icih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1kcihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlRyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZUcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBJcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPUZyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShicih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oYnIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZG49eW47ZnVuY3Rpb24gYm4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9ZG4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPW1yKGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59ZnVuY3Rpb24gX24odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpO3JldHVybiEhZ24odCx7ZnM6cn0pJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBqbih0KXtyZXR1cm4gX24odCx7ZnM6ZX0pfWZ1bmN0aW9uIHduKHQsZSl7dmFyIHI9W107cmV0dXJuIG90KHQsKGZ1bmN0aW9uKHQsbixvKXtlKHQsbixvKSYmci5wdXNoKHQpfSkpLHJ9ZnVuY3Rpb24gbW4odCxlPXt9KXtsZXQgcj1tcihlLCJmcyIpO2lmKCFnbih0LHtmczpyfSkpcmV0dXJuITE7bGV0IG49ci5sc3RhdFN5bmModCk7cmV0dXJuIW4uaXNGaWxlKCkmJiFuLmlzU3ltYm9saWNMaW5rKCl9ZnVuY3Rpb24gT24odCxlPTEscj17fSl7bGV0IG49MSxvPW1yKHIsInBhdGgiKSx1PW1yKHIsImZzIik7aWYoIW1uKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3ZhciBpO3JldHVybiBudWxsIT09ZSYmKHBuKGk9ZSkmJmJuKGkpPjApJiYoZT1ibihlKSk8MSYmKGU9MSksZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gbW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9ZnVuY3Rpb24gU24odCxlPTEscj17fSl7bGV0IG49bXIociwicGF0aCIpLG89bXIociwiZnMiKTtpZighbW4odCx7ZnM6b30pKXRocm93IG5ldyBFcnJvcihgZmRbJHt0fV0gaXMgbm90IGEgZm9sZGVyYCk7bGV0IHU9W107dmFyIGksYTtyZXR1cm4gdT1Pbih0LGUse3BhdGg6bixmczpvfSksYT17aXNGb2xkZXI6ITF9LHU9KFMoaT11KT9SZTp3bikoaSxFcihhKSksdT1Gcih1LCh0PT4oZGVsZXRlIHQuaXNGb2xkZXIsdCkpKSx1fWNvbnN0IEFuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9bXIoZSwiZnMiKSxuPW1yKGUsImNodW5rU2l6ZSIpO2lmKFpyKG4pfHwobj02NzEwODg2NCksbj1sbihuKSwhX24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9ZC5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgZD1uZXcgVGV4dEVuY29kZXIsYj0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxkLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGQuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWIpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWIpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShBbikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQucmVzb2x2ZSh1LG8pLGE9ITE7aWYoYT1qbihpKSwhWnIocikpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19bGV0IGM9ITE7aWYoYSl7bGV0IHQ9LTE7dHJ5e3Q9ZS5zdGF0U3luYyhpKS5zaXplfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJjaGVjayB0b3RhbCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsaSx0KX1jPXI9PT10fWxldCBmPSExO2EmJmMmJmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7cmV0dXJuIHpuKHQse2ZzOmUsLi4ucn0pfShpKS50aGVuKCh0PT57Zj1vPT09dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKCJmc0lzRmlsZShwYXRoRmlsZSkiLGksam4oaSkpLGNvbnNvbGUubG9nKHQpLGY9ITF9KSk7bGV0IHM9W107aWYoIWYpe2l0KGZ1bmN0aW9uKHIsbj0xKXtyZXR1cm4gU24ocixuLHtwYXRoOnQsZnM6ZX0pfSh1KSwodD0+e2xldCByPXQubmFtZS5pbmRleE9mKGAke299X2ApPj0wLHU9ITE7dHJ5e3U9ZS5zdGF0U3luYyh0LnBhdGgpLnNpemU9PT1ufWNhdGNoKGUpe2NvbnNvbGUubG9nKCJjaGVjayBlYWNoIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIix0LnBhdGgsZSl9aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZighZnVuY3Rpb24odCl7cmV0dXJuISFwbih0KSYmYm4odCk+PTB9KHIpKXRocm93IGNvbnNvbGUubG9nKCJ2Lm5hbWUiLHQubmFtZSksY29uc29sZS5sb2coInMiLGUpLG5ldyBFcnJvcihgY2FuIG5vdCBwYXJzZSBpbmRleCBpbiB2Lm5hbWVbJHt0Lm5hbWV9XWApO3I9Ym4ocikscy5wdXNoKHIpfXZhciBpLGF9KSl9bGV0IGw9ZWUocyk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOmwsc2xrczpzfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o(e)}}(t);if(!i)return o("invalid worker"),null;function r(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return i.postMessage(n),s.once(t,t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)}),e}function o(e){s.emit("error",e)}return i.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),i.on("error",o),i.on("exit",e=>{1!==e&&o("exit code["+e+"] !== 1")}),function(){let e={mode:"init",type:"function",input:[...arguments]};i.postMessage(e)}([...arguments]),s.main=r,s.main=r,s.terminate=function(){i?(i.terminate(),i=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("unhandledRejection",e=>{console.log("outer:unhandledRejection",e)}),process.on("uncaughtException",e=>{console.log("outer:uncaughtException",e)}),process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(si);var ii=Vt(si.exports),ri={exports:{}};!function(e){var t,n;e.exports=(t=r,n={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function s(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,s,r,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new i(s,r||e,o),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,s,i=[];if(0===this._eventsCount)return i;for(s in e=this._events)t.call(e,s)&&i.push(n?s.slice(1):s);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var i=0,r=s.length,o=new Array(r);i<r;i++)o[i]=s[i].fn;return o},a.prototype.listenerCount=function(e){var t=n?n+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,i,r,o){var a=n?n+e:e;if(!this._events[a])return!1;var c,l,d=this._events[a],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,s),!0;case 4:return d.fn.call(d.context,t,s,i),!0;case 5:return d.fn.call(d.context,t,s,i,r),!0;case 6:return d.fn.call(d.context,t,s,i,r,o),!0}for(l=1,c=new Array(u-1);l<u;l++)c[l-1]=arguments[l];d.fn.apply(d.context,c)}else{var M,w=d.length;for(l=0;l<w;l++)switch(d[l].once&&this.removeListener(e,d[l].fn,void 0,!0),u){case 1:d[l].fn.call(d[l].context);break;case 2:d[l].fn.call(d[l].context,t);break;case 3:d[l].fn.call(d[l].context,t,s);break;case 4:d[l].fn.call(d[l].context,t,s,i);break;default:if(!c)for(M=1,c=new Array(u-1);M<u;M++)c[M-1]=arguments[M];d[l].fn.apply(d[l].context,c)}}return!0},a.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,s,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return o(this,r),this;var a=this._events[r];if(a.fn)a.fn!==t||i&&!a.once||s&&a.context!==s||o(this,r);else{for(var c=0,l=[],d=a.length;c<d;c++)(a[c].fn!==t||i&&!a[c].once||s&&a[c].context!==s)&&l.push(a[c]);l.length?this._events[r]=1===l.length?l[0]:l:o(this,r)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}({get exports(){return t},set exports(e){t=e}});var n=t;let s;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(i="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5XovYnora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5XovYnora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5XovYnora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9T2JqZWN0LnByb3RvdHlwZTt2YXIgbixvLGk9KG49T2JqZWN0LmtleXMsbz1PYmplY3QsZnVuY3Rpb24odCl7cmV0dXJuIG4obyh0KSl9KSx1PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYSh0KXtpZihuPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4ucHJvdG90eXBlfHxyKSlyZXR1cm4gaSh0KTt2YXIgZSxuLG89W107Zm9yKHZhciBhIGluIE9iamVjdCh0KSl1LmNhbGwodCxhKSYmImNvbnN0cnVjdG9yIiE9YSYmby5wdXNoKGEpO3JldHVybiBvfXZhciBjPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxmPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYscz1jfHxmfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9cy5TeW1ib2wscD1PYmplY3QucHJvdG90eXBlLGg9cC5oYXNPd25Qcm9wZXJ0eSx5PXAudG9TdHJpbmcsdj1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIGQ9IltvYmplY3QgTnVsbF0iLGc9IltvYmplY3QgVW5kZWZpbmVkXSIsXz1sP2wudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGoodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9nOmQ6XyYmXyBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9aC5jYWxsKHQsdikscj10W3ZdO3RyeXt0W3ZdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89eS5jYWxsKHQpO3JldHVybiBuJiYoZT90W3ZdPXI6ZGVsZXRlIHRbdl0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBiLmNhbGwodCl9KHQpfWZ1bmN0aW9uIHcodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFM9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLE89IltvYmplY3QgRnVuY3Rpb25dIixtPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIseD0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHoodCl7aWYoIXcodCkpcmV0dXJuITE7dmFyIGU9aih0KTtyZXR1cm4gZT09T3x8ZT09bXx8ZT09U3x8ZT09eH12YXIgQSwkPXNbIl9fY29yZS1qc19zaGFyZWRfXyJdLEY9KEE9L1teLl0rJC8uZXhlYygkJiYkLmtleXMmJiQua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyIFA9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIEwodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBQLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifXZhciBrPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEU9RnVuY3Rpb24ucHJvdG90eXBlLEk9T2JqZWN0LnByb3RvdHlwZSxOPUUudG9TdHJpbmcsVD1JLmhhc093blByb3BlcnR5LE09UmVnRXhwKCJeIitOLmNhbGwoVCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gUih0KXtyZXR1cm4hKCF3KHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIUYmJkYgaW4gdH0odCkpJiYoeih0KT9NOmspLnRlc3QoTCh0KSl9ZnVuY3Rpb24gVSh0LGUpe3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KHQsZSk7cmV0dXJuIFIocik/cjp2b2lkIDB9dmFyIEI9VShzLCJEYXRhVmlldyIpLEM9VShzLCJNYXAiKSxEPVUocywiUHJvbWlzZSIpLFc9VShzLCJTZXQiKSxxPVUocywiV2Vha01hcCIpLFY9IltvYmplY3QgTWFwXSIsRz0iW29iamVjdCBQcm9taXNlXSIsSD0iW29iamVjdCBTZXRdIixKPSJbb2JqZWN0IFdlYWtNYXBdIixLPSJbb2JqZWN0IERhdGFWaWV3XSIsUT1MKEIpLFg9TChDKSxZPUwoRCksWj1MKFcpLHR0PUwocSksZXQ9ajsoQiYmZXQobmV3IEIobmV3IEFycmF5QnVmZmVyKDEpKSkhPUt8fEMmJmV0KG5ldyBDKSE9Vnx8RCYmZXQoRC5yZXNvbHZlKCkpIT1HfHxXJiZldChuZXcgVykhPUh8fHEmJmV0KG5ldyBxKSE9SikmJihldD1mdW5jdGlvbih0KXt2YXIgZT1qKHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0wocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBROnJldHVybiBLO2Nhc2UgWDpyZXR1cm4gVjtjYXNlIFk6cmV0dXJuIEc7Y2FzZSBaOnJldHVybiBIO2Nhc2UgdHQ6cmV0dXJuIEp9cmV0dXJuIGV9KTt2YXIgcnQ9ZXQsbnQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBvdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PW50fSh0Lmxlbmd0aCkmJiF6KHQpfXZhciBpdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHV0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIGF0PSJbb2JqZWN0IFN0cmluZ10iO3ZhciBjdCxmdD0oY3Q9Imxlbmd0aCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbY3RdfSksc3Q9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBsdD0iXFx1ZDgwMC1cXHVkZmZmIixwdD0iWyIrbHQrIl0iLGh0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIseXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsdnQ9IlteIitsdCsiXSIsYnQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGR0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixndD0iKD86IitodCsifCIreXQrIikiKyI/IixfdD0iW1xcdWZlMGVcXHVmZTBmXT8iLGp0PV90K2d0KygiKD86XFx1MjAwZCg/OiIrW3Z0LGJ0LGR0XS5qb2luKCJ8IikrIikiK190K2d0KyIpKiIpLHd0PSIoPzoiK1t2dCtodCsiPyIsaHQsYnQsZHQscHRdLmpvaW4oInwiKSsiKSIsU3Q9UmVnRXhwKHl0KyIoPz0iK3l0KyIpfCIrd3QranQsImciKTtmdW5jdGlvbiBPdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHN0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1TdC5sYXN0SW5kZXg9MDtTdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOmZ0KHQpfWZ1bmN0aW9uIG10KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYob3QodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhaXQoZSkmJnV0KGUpJiZqKGUpPT1hdD9PdCh0KTp0Lmxlbmd0aDt2YXIgZSxyPXJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6YSh0KS5sZW5ndGh9dmFyIHh0PSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIHp0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dXQodCkmJmoodCk9PXh0fXZhciBBdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkdD0vXlx3KiQvO3ZhciBGdD1VKE9iamVjdCwiY3JlYXRlIik7dmFyIFB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEx0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24ga3QodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gRXQodCxlKXtmb3IodmFyIHIsbixvPXQubGVuZ3RoO28tLTspaWYoKHI9dFtvXVswXSk9PT0obj1lKXx8ciE9ciYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1rdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPUZ0P0Z0KG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxrdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoRnQpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gUHQuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEZ0P3ZvaWQgMCE9PWVbdF06THQuY2FsbChlLHQpfSxrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1GdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgSXQ9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBOdCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiBUdCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gTXQodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19TnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sTnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9RXQoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6SXQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxOdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1FdChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LE50LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0KHRoaXMuX19kYXRhX18sdCk+LTF9LE50LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49RXQocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcga3QsbWFwOm5ldyhDfHxOdCksc3RyaW5nOm5ldyBrdH19LE10LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9VHQodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sTXQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gVHQodGhpcyx0KS5nZXQodCl9LE10LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdCkuaGFzKHQpfSxNdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9VHQodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIFJ0PSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBVdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFJ0KTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0saT1yLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gci5jYWNoZT1uZXcoVXQuQ2FjaGV8fE10KSxyfVV0LkNhY2hlPU10O3ZhciBCdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxDdD0vXFwoXFwpPy9nLER0PWZ1bmN0aW9uKHQpe3ZhciBlPVV0KHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoQnQsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShDdCwiJDEiKTpyfHx0KX0pKSxlfSkpLFd0PUR0O3ZhciBxdD0xLzAsVnQ9bD9sLnByb3RvdHlwZTp2b2lkIDAsR3Q9VnQ/VnQudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEh0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihpdCh0KSlyZXR1cm4gZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb30odCxIdCkrIiI7aWYoenQodCkpcmV0dXJuIEd0P0d0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LXF0PyItMCI6ZX1mdW5jdGlvbiBKdCh0LGUpe3JldHVybiBpdCh0KT90OmZ1bmN0aW9uKHQsZSl7aWYoaXQodCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIXp0KHQpKXx8JHQudGVzdCh0KXx8IUF0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSh0LGUpP1t0XTpXdChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpIdCh0KX0odCkpfXZhciBLdD0xLzA7ZnVuY3Rpb24gUXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHx6dCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tS3Q/Ii0wIjplfWZ1bmN0aW9uIFh0KHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49KGU9SnQoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W1F0KGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfSh0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBZdCh0LGU9e30pe2xldCByPVh0KGUsImZzIik7cmV0dXJuISFmdW5jdGlvbih0LGU9e30pe2xldCByPVh0KGUsImZzIiksbj0hMTt0cnl7ci5zdGF0U3luYyh0KSxuPSEwfWNhdGNoe249ITF9cmV0dXJuIG59KHQse2ZzOnJ9KSYmKCFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9Y29uc3QgWnQ9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7ZnVuY3Rpb24gdGUodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIGVlKHQpe2xldCBlPSExO2lmKHRlKHQpKWU9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0IT10fSh0KSlyZXR1cm4hMTtlPSEwfXJldHVybiBlfXZhciByZT0vXHMvO3ZhciBuZT0vXlxzKy87ZnVuY3Rpb24gb2UodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJnJlLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UobmUsIiIpOnR9dmFyIGllPU5hTix1ZT0vXlstK10weFswLTlhLWZdKyQvaSxhZT0vXjBiWzAxXSskL2ksY2U9L14wb1swLTddKyQvaSxmZT1wYXJzZUludDt2YXIgc2U9MS8wLGxlPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBwZSh0KXtyZXR1cm4gdD8odD1mdW5jdGlvbih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoenQodCkpcmV0dXJuIGllO2lmKHcodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXcoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PW9lKHQpO3ZhciByPWFlLnRlc3QodCk7cmV0dXJuIHJ8fGNlLnRlc3QodCk/ZmUodC5zbGljZSgyKSxyPzI6OCk6dWUudGVzdCh0KT9pZTordH0odCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9YXN5bmMgZnVuY3Rpb24gaGUodCxlPXt9KXtpZihyPXQsIltvYmplY3QgQmxvYl0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpJiYhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSlyZXR1cm4gY29uc29sZS5sb2coImlucCIsdCksUHJvbWlzZS5yZWplY3QoImlucCBpcyBub3QgYSBCbG9iIG9yIEZpbGUiKTt2YXIgcjtsZXQgbj1YdChlLCJjaHVua1NpemUiKTtlZShuKXx8KG49NjcxMDg4NjQpLG49ZnVuY3Rpb24odCl7cmV0dXJuIGVlKHQpP3BlKHQpOjB9KG4pO2xldHtjcmVhdGU2NDpvfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLHIoMCxlKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiB2KHQpe3JldHVybiB0Jnl9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHYobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyxpLHUsaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksdihuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix2KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShadCkpLmluc3RhbmNlKX0oKSxpPW8oKSx1PTA7Zm9yKDt1PHQuc2l6ZTspe2xldCBlPXQuc2xpY2UodSx1K24pLHI9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO2kudXBkYXRlKG5ldyBVaW50OEFycmF5KHIpKSx1Kz1ufXJldHVybiBpLmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpfWxldCBjaGVja1NsaWNlc0hhc2g9YXN5bmMocixuLG8pPT57aWYoMD09PW10KHIpKXtyZXR1cm57ZXJyb3I6Im5vIGZpbGVTbGljZUhhc2hzIn19bGV0IGk9W107Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspe2xldCBhPXJbdV0sYz10LnJlc29sdmUobyxgJHtufV8ke2EuaX1gKSxmPSIiO2F3YWl0IGhlKG5ldyBCbG9iKFtlLnJlYWRGaWxlU3luYyhjKV0pKS50aGVuKCh0PT57Zj10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2coImZzSXNGaWxlKF9wYXRoRmlsZSkiLGMsWXQoYyx7ZnM6ZX0pKSxjb25zb2xlLmxvZyh0KX0pKSxhLmg9PT1mJiZpLnB1c2goYS5pKX1yZXR1cm57c2xrczppfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1NsaWNlc0hhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tTbGljZXNIYXNoCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK",Buffer.from(i,"base64").toString("utf8"));var i;function r(){let s=new n,i=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o(e)}}(t);if(!i)return o("invalid worker"),null;function r(){let e=function(){let e,t,n=new Promise(function(){e=arguments[0],t=arguments[1]});return n.resolve=e,n.reject=t,n}(),t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),s=n.length;for(let i=0;i<e;i++)t[i]=n[0|Math.random()*s];return t.join("")}(),n={mode:"call",id:t,fun:"main",input:[...arguments]};return i.postMessage(n),s.once(t,t=>{"success"===t.state?e.resolve(t.msg):e.reject(t.msg)}),e}function o(e){s.emit("error",e)}return i.on("message",function(e){let t=e,n=t.mode;"emit"!==n&&"return"!==n||("emit"===n&&s.emit(t.evName,t.msg),"return"===n&&s.emit(t.id,t))}),i.on("error",o),i.on("exit",e=>{1!==e&&o("exit code["+e+"] !== 1")}),function(){let e={mode:"init",type:"function",input:[...arguments]};i.postMessage(e)}([...arguments]),s.main=r,s.main=r,s.terminate=function(){i?(i.terminate(),i=void 0):o("worker has been terminated")},s}s=async function(){let e=[...arguments],t=r();return await t.main(...e).finally(()=>{t.terminate()})}}();try{process.on("unhandledRejection",e=>{console.log("outer:unhandledRejection",e)}),process.on("uncaughtException",e=>{console.log("outer:uncaughtException",e)}),process.on("uncaughtExceptionMonitor",e=>{console.log("outer:uncaughtExceptionMonitor",e)})}catch(e){}return s}(t)}({get exports(){return n},set exports(e){n=e}}),n)}(ri);var oi=Vt(ri.exports);function ai(r={}){let o=Ie(r,"port");mt(o)||(o=8080);let a=Ie(r,"useInert");qt(a)||(a=!0);let c=Ie(r,"pathStaticFiles");Pe(c)||(c="dist");let l=Ie(r,"pathUploadTemp");Pe(l)||(l="./uploadTemp"),jt(l)||sn(l);let d=Ie(r,"apiName");Pe(d)||(d="api");let u=Ie(r,"tokenType");Pe(u)||(u="Bearer");let M=Ie(r,"sizeSlice");mt(M)||(M=1048576);let w=Ie(r,"verifyConn");xt(w)||(w=()=>!0);let I=Ie(r,"corsOrigins",[]);_t(I)||(I=["*"]);let y=Ie(r,"delayForSlice","");Zt(y)||(y=100),y=gt(y);let g=null;g=Ie(r,"serverHapi")?r.serverHapi:n.server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:I,credentials:!1}}});let m=tn(),L=(e,...t)=>{setTimeout(()=>{m.emit(e,...t)},1)};async function p(e){let t=vt(),n=vt();return n.then(e=>{t.resolve(e)}).catch(e=>{t.reject(e)}),L("upload",e,n),t}async function D(e){let t=vt(),n=vt();return n.then(e=>{t.resolve(e)}).catch(e=>{t.reject(e)}),L("download",e,n),t}function C(e,t,n={}){let s=new i.Readable;s._read=()=>{},s.push(t),s.push(null);let r=Ie(n,"returnType",""),o=Ie(n,"returnMsg",""),a=e.response(s).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",s.readableLength);return Pe(r)&&a.header("Return-Type",r),Pe(o)&&a.header("Return-Msg",o),a}function h(e,t){return Pe(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t=""),C(e,Xn({error:t}),{returnType:"error",returnMsg:t})}let b={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(e,t){let n=Ie(e,"headers");n=Fe(n)?n:"";let s=Ie(e,"query");s=Fe(s)?s:"";let r=Ie(n,"authorization","");r=Pe(r)?r:"";{let i=!1;try{i=w({apiType:"main",authorization:r,query:s,headers:n,req:e}),Tt(i)&&(i=await i.catch(e=>{console.log(e),i=!1}))}catch(e){console.log(e),i=!1}if(!0!==i)return h(t,"permission denied")}L("handler",{api:"apiMain",headers:n,query:s});let o=await(()=>{let t=vt(),n=[],s=new i.Writable({write(e,t,s){n.push(e),s()}});return s.on("finish",()=>{}),e.payload.pipe(s),e.payload.on("end",()=>{let e=Buffer.concat(n);n=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),L("error",`receive payload error: ${e.message}`),t.reject(`receive payload error: ${e.message}`)}),t})(),a=Gn(new Uint8Array(o)),c={},l="",d="";return await async function(e){let t=vt(),n=vt();n.then(n=>{e.output=n,delete e.input,t.resolve(e)}).catch(e=>{t.reject(e)});{let t=Ie(e,"func",""),s=Ie(e,"input",null);L("execute",t,s,n)}return t}(a).then(e=>{c.success=e,l="success",d="need to parse"}).catch(e=>{c.error=e,l="error",d="need to parse"}),C(t,Xn(c),{returnType:l,returnMsg:d})}},f={path:`/${d}/ulctr`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=Ie(e,"headers");n=Fe(n)?n:"";let s=Ie(e,"query");s=Fe(s)?s:"";let i=Ie(n,"authorization","");i=Pe(i)?i:"";{let e=w({apiType:"upload-controller",authorization:i,headers:n,query:s});if(Tt(e)&&(e=await e),!0!==e)return h(t,"permission denied")}L("handler",{api:"apiUploadCheck",headers:n,query:s});let r=Ie(e,"payload.mode","");if("check-total-hash"!==r&&"check-slices-hash"!==r&&"merge-slices-push"!==r&&"merge-slices-get"!==r)return h(t,`invalid mode[${r}] in payload`);let o=Ie(e,"payload.fileHash","");if(!Pe(o))return h(t,"invalid fileHash in payload");let a={},c="",d="";return await(async()=>{let t=null;if("check-total-hash"===r){let n=Ie(e,"payload.filename",""),s=Ie(e,"payload.fileSize","");if(t=await ii(s,M,o,l),t.bAllHash){let e={from:"check-total-hash",filename:n,path:t.path},s=await p(e);t={...t,msg:s}}}else if("check-slices-hash"===r){let n=Ie(e,"payload.fileSliceHashs",[]);t=await oi(n,o,l)}else if("merge-slices-push"===r){let n=Ie(e,"payload.chunkTotal","");t={queueId:ti(o,n,l)}}else if("merge-slices-get"===r){let n=Ie(e,"payload.filename",""),s=Ie(e,"payload.queueId",""),i=ni(s,l);if(t={state:i.state,msg:i.msg,queueId:s,filename:n,path:i.path},"success"===i.state){let e={from:"merge-slices-get",filename:n,path:i.path},s=await p(e);t={...t,msg:s}}}return t})().then(e=>{a.success=e,c="success",d="need to parse"}).catch(e=>{a.error=e,c="error",d="need to parse"}),C(t,Xn(a),{returnType:c,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,s){let i=Ie(n,"headers");i=Fe(i)?i:"";let r=Ie(n,"query");r=Fe(r)?r:"";let o=Ie(i,"authorization","");o=Pe(o)?o:"";{let e=w({apiType:"upload-slice",authorization:o,headers:i,query:r});if(Tt(e)&&(e=await e),!0!==e)return h(s,"permission denied")}L("handler",{api:"apiUploadSlice",headers:i,query:r});let a=Ie(i,"chunk-index",""),c=Ie(i,"chunk-total",""),d=Ie(i,"package-id","");if(!Zt(a))return h(s,"invalid chunkIndex in headers");if(a=gt(a),!Zt(c))return h(s,"invalid chunkTotal in headers");if(c=gt(c),!Pe(d))return h(s,"invalid packageId in headers");let u=e.resolve(l,`${d}_${a}`),M=t.createWriteStream(u),I={},g="",m="";return await(()=>{let e=vt();return n.payload.pipe(M),n.payload.on("end",()=>{setTimeout(()=>{e.resolve(`chunk[${a+1}/${c}] of packageId[${d}] done`)},y)}),n.payload.on("error",t=>{console.log(`apiUploadSlice req.payload chunk[${a+1}/${c}] of packageId[${d}] err`,t),L("error",`receive chunk[${a+1}/${c}] of packageId[${d}] error: ${t.message}`),e.reject(`receive chunk[${a+1}/${c}] of packageId[${d}] error: ${t.message}`)}),e})().then(e=>{I.success=e,g="success",m="need to parse"}).catch(e=>{I.error=e,g="error",m="need to parse",L("error",e)}),C(s,Xn(I),{returnType:g,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(e,t){let n=Ie(e,"headers");n=Fe(n)?n:"";let s=Ie(e,"query");s=Fe(s)?s:"";let i=Ie(n,"authorization","");i=Pe(i)?i:"";{let e=w({apiType:"download-get-filename",authorization:i,headers:n,query:s});if(Tt(e)&&(e=await e),!0!==e)return h(t,"permission denied")}L("handler",{api:"apiDownloadGetFilename",headers:n,query:s});let r=Ie(e,"payload.fileId","");if(!Pe(r))return h(t,"invalid fileId in payload");let o={fileId:r,token:Pe(i)?i.slice(on(u).length+1):""},a={},c="",l="";await D(o).then(e=>{a.success=e,c="success",l="need to parse"}).catch(e=>{a.error=e,c="error",l="need to parse"});let d=Ie(a,"success"),M=Ie(d,"streamRead");try{M.destroy()}catch(e){}let I=Ie(d,"filename");return Pe(I)?(a={success:{filename:I}},C(t,Xn(a),{returnType:c,returnMsg:l})):h(t,"invalid filename")}},T={path:`/${d}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=Ie(e,"headers");n=Fe(n)?n:"";let s=Ie(e,"query");s=Fe(s)?s:"";let i=Ie(s,"token","");i=Pe(i)?i:"";let r="";Pe(i)&&(r=`${u} ${i}`);{let e=w({apiType:"download-get-file",authorization:r,headers:n,query:s});if(Tt(e)&&(e=await e),!0!==e)return h(t,"permission denied")}L("handler",{api:"apiDownloadGetFilename",headers:n,query:s});let o=Ie(s,"fileId","");if(o=Pe(o)?o:"",!Pe(o))return h(t,"invalid fileId in query");let a={fileId:o,token:i},c={};if(await D(a).then(e=>{c.success=e}).catch(e=>{c.error=e}),yn(c,"error"))return h(t,"can not get file from fileId");let l=Ie(c,"success"),d=Ie(l,"streamRead"),M=Ie(l,"fileSize");if(!rn(M)){try{d.destroy()}catch(e){}return h(t,"invalid fileSize")}let I=Ie(l,"fileType");if(!Pe(I)){try{d.destroy()}catch(e){}return h(t,"invalid fileType")}return I=on(I),t.response(d).type(I).header("Content-Length",M)}},Z={path:`/${d}/dw`,method:"POST",options:{payload:{maxBytes:1099511627776,maxParts:1e9,timeout:!1,parse:!0},timeout:{server:!1,socket:!1}},handler:async function(e,t){let n=Ie(e,"headers");n=Fe(n)?n:"";let s=Ie(e,"query");s=Fe(s)?s:"";let i=Ie(n,"authorization","");i=Pe(i)?i:"";{let e=w({apiType:"download",authorization:i,headers:n,query:s});if(Tt(e)&&(e=await e),!0!==e)return h(t,"permission denied")}L("handler",{api:"apiDownload",headers:n,query:s});let r=Ie(e,"payload.fileId","");if(!Pe(r))return h(t,"invalid fileId in payload");let o={fileId:r,token:Pe(i)?i.slice(on(u).length+1):""},a={};if(await D(o).then(e=>{a.success=e}).catch(e=>{a.error=e}),yn(a,"error"))return h(t,"can not get file from fileId");let c=Ie(a,"success"),l=Ie(c,"streamRead"),d=Ie(c,"filename");if(!Pe(d)){try{l.destroy()}catch(e){}return h(t,"invalid filename")}d=In(d);let M=Ie(c,"fileSize");if(!rn(M)){try{l.destroy()}catch(e){}return h(t,"invalid fileSize")}let I=Ie(c,"fileType");if(!Pe(I)){try{l.destroy()}catch(e){}return h(t,"invalid fileType")}return I=on(I),t.response(l).type(I).header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",M)}};Ie(r,"serverHapi")?g.route([b,f,N,x,T,Z]):async function(){a&&await g.register(s);let e=[];if(a){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${c}/`}}};e=[...e,t]}e=[...e,b,f,N,x,T,Z],g.route(e),await g.start(),console.log(`Server running at: ${g.info.uri}`)}();return m.stop=()=>{g.stop()},m}var ci=function(){return M.Date.now()},li=Math.max,di=Math.min;function ui(e,t,n){var s,i,r,o,a,c,l=0,d=!1,u=!1,M=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function w(t){var n=s,r=i;return s=i=void 0,l=t,o=e.apply(r,n)}function I(e){var n=e-c;return void 0===c||n>=t||n<0||u&&e-l>=r}function y(){var e=ci();if(I(e))return g(e);a=setTimeout(y,function(e){var n=t-(e-c);return u?di(n,r-(e-l)):n}(e))}function g(e){return a=void 0,M&&s?w(e):(s=i=void 0,o)}function m(){var e=ci(),n=I(e);if(s=arguments,i=this,c=e,n){if(void 0===a)return function(e){return l=e,a=setTimeout(y,t),d?w(e):o}(c);if(u)return clearTimeout(a),a=setTimeout(y,t),w(c)}return void 0===a&&(a=setTimeout(y,t)),o}return t=it(t)||0,x(n)&&(d=!!n.leading,r=(u="maxWait"in n)?li(it(n.maxWait)||0,t):r,M="trailing"in n?!!n.trailing:M),m.cancel=function(){void 0!==a&&clearTimeout(a),l=0,s=c=i=a=void 0},m.flush=function(){return void 0===a?o:g(ci())},m}var Mi=function(){try{var e=V(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),wi=Mi;function Ii(e,t,n){"__proto__"==t&&wi?wi(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function yi(e,t,n){(void 0!==n&&!J(e[t],n)||void 0===n&&!(t in e))&&Ii(e,t,n)}var gi="object"==typeof exports&&exports&&!exports.nodeType&&exports,mi=gi&&"object"==typeof module&&module&&!module.nodeType&&module,Li=mi&&mi.exports===gi?M.Buffer:void 0,pi=Li?Li.allocUnsafe:void 0;function Di(e,t){if(t)return e.slice();var n=e.length,s=pi?pi(n):new e.constructor(n);return e.copy(s),s}function Ci(e){var t=new e.constructor(e.byteLength);return new Vn(t).set(new Vn(e)),t}function hi(e,t){var n=t?Ci(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function bi(e,t){var n=-1,s=e.length;for(t||(t=Array(s));++n<s;)t[n]=e[n];return t}var fi=Object.create,Ni=function(){function e(){}return function(t){if(!x(t))return{};if(fi)return fi(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),xi=Ni;function Ti(e){return"function"!=typeof e.constructor||We(e)?{}:xi(Lt(e))}function Zi(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Xi=Object.prototype.hasOwnProperty;function Si(e,t,n){var s=e[t];Xi.call(e,t)&&J(s,n)&&(void 0!==n||t in e)||Ii(e,t,n)}function vi(e,t,n,s){var i=!n;n||(n={});for(var r=-1,o=t.length;++r<o;){var a=t[r],c=s?s(n[a],e[a],a,n,e):void 0;void 0===c&&(c=e[a]),i?Ii(n,a,c):Si(n,a,c)}return n}var Yi=Object.prototype.hasOwnProperty;function Ai(e){if(!x(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=We(e),n=[];for(var s in e)("constructor"!=s||!t&&Yi.call(e,s))&&n.push(s);return n}function Gi(e){return Ue(e)?ze(e,!0):Ai(e)}function ji(e,t,n,s,i,r,o){var a=Zi(e,n),c=Zi(t,n),d=o.get(c);if(d)yi(e,n,d);else{var u,M=r?r(a,c,n+"",e,t,o):void 0,w=void 0===M;if(w){var I=l(c),y=!I&&fe(c),g=!I&&!y&&je(c);M=c,I||y||g?l(a)?M=a:C(u=a)&&Ue(u)?M=bi(a):y?(w=!1,M=Di(c,!0)):g?(w=!1,M=hi(c,!0)):M=[]:ft(c)||De(c)?(M=a,De(a)?M=function(e){return vi(e,Gi(e))}(a):x(a)&&!T(a)||(M=Ti(c))):w=!1}w&&(o.set(c,M),i(M,c,s,r,o),o.delete(c)),yi(e,n,M)}}function Ki(e,t,n,s,i){e!==t&&Ln(t,function(r,o){if(i||(i=new jn),x(r))ji(e,t,o,n,Ki,s,i);else{var a=s?s(Zi(e,o),r,o+"",e,t,i):void 0;void 0===a&&(a=r),yi(e,o,a)}},Gi)}var zi=Math.max;function Ei(e,t,n){return t=zi(void 0===t?e.length-1:t,0),function(){for(var s=arguments,i=-1,r=zi(s.length-t,0),o=Array(r);++i<r;)o[i]=s[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=s[i];return a[t]=n(o),function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}(e,this,a)}}var Wi=wi?function(e,t){return wi(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:Cn,Vi=Wi,ki=Date.now;var Hi=function(e){var t=0,n=0;return function(){var s=ki(),i=16-(s-n);if(n=s,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Vi),Qi=Hi;var Ui,Ji=(Ui=function(e,t,n){Ki(e,t,n)},function(e,t){return Qi(Ei(e,t,Cn),e+"")}(function(e,t){var n=-1,s=t.length,i=s>1?t[s-1]:void 0,r=s>2?t[2]:void 0;for(i=Ui.length>3&&"function"==typeof i?(s--,i):void 0,r&&function(e,t,n){if(!x(n))return!1;var s=typeof t;return!!("number"==s?Ue(n)&&xe(t,n.length):"string"==s&&t in n)&&J(n[t],e)}(t[0],t[1],r)&&(i=s<3?void 0:i,s=1),e=Object(e);++n<s;){var o=t[n];o&&Ui(e,o,n,i)}return e})),Ri=Ji;function Pi(e,n={}){let s={};if(Fe(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=tn()),!yn(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let i=Ie(n,"fpTableTags","");Pe(i)||(i="./tableTags.json");let r=Ie(n,"genTag");xt(r)||(r=()=>Qt()+"|"+Rt(6));let o=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)};function a(){let e={};try{if(t.existsSync(i)){let n=Oe(t.readFileSync(i,"utf8"));Fe(n)&&(e=n)}}catch(e){o("error",{msg:"readTableTags catch",err:e})}return e}function c(){try{let e=function(e,t=!1){if(Ot(e))return"";let n="";try{n=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){n=""}return n}(s);t.writeFileSync(i,e,"utf8")}catch(e){o("error",{msg:"writeTableTags catch",err:e})}}let l=ui(()=>{c(),o("changeTableTags",s)},200);return e.readTableTags=a,e.writeTableTags=c,e.initTableTags=function(e={},t="useInputFirst"){if("useInputOnly"===t)s=e;else if("useStorageOnly"===t)s=a();else if("useInputFirst"===t)s=Ri(a(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);s=Ri(e,a())}c()},e.setTableTags=function(e={}){s=Ri(s,e),c()},e.getTableTags=function(){return s},e.updateTableTag=function(e){s[e]=r(),l()},e}var Oi=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Jn(t,_n(e)),e=Lt(e);return t}:On,Bi=Oi;function Fi(e){return Rn(e,Gi,Bi)}var _i=Object.prototype.hasOwnProperty;var qi=/\w*$/;var $i=w?w.prototype:void 0,er=$i?$i.valueOf:void 0;function tr(e,t,n){var s,i=e.constructor;switch(t){case"[object ArrayBuffer]":return Ci(e);case"[object Boolean]":case"[object Date]":return new i(+e);case"[object DataView]":return function(e,t){var n=t?Ci(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return hi(e,n);case"[object Map]":case"[object Set]":return new i;case"[object Number]":case"[object String]":return new i(e);case"[object RegExp]":return function(e){var t=new e.constructor(e.source,qi.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return s=e,er?Object(er.call(s)):{}}}var nr=Ae&&Ae.isMap,sr=nr?Xe(nr):function(e){return C(e)&&"[object Map]"==ys(e)};var ir=Ae&&Ae.isSet,rr=ir?Xe(ir):function(e){return C(e)&&"[object Set]"==ys(e)},or="[object Arguments]",ar="[object Function]",cr="[object Object]",lr={};function dr(e,t,n,s,i,r){var o,a=1&t,c=2&t,d=4&t;if(n&&(o=i?n(e,s,i,r):n(e)),void 0!==o)return o;if(!x(e))return e;var u=l(e);if(u){if(o=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&_i.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!a)return bi(e,o)}else{var M=ys(e),w=M==ar||"[object GeneratorFunction]"==M;if(fe(e))return Di(e,a);if(M==cr||M==or||w&&!i){if(o=c||w?{}:Ti(e),!a)return c?function(e,t){return vi(e,Bi(e),t)}(e,function(e,t){return e&&vi(t,Gi(t),e)}(o,e)):function(e,t){return vi(e,_n(e),t)}(e,function(e,t){return e&&vi(t,Je(t),e)}(o,e))}else{if(!lr[M])return i?e:{};o=tr(e,M,a)}}r||(r=new jn);var I=r.get(e);if(I)return I;r.set(e,o),rr(e)?e.forEach(function(s){o.add(dr(s,t,n,s,e,r))}):sr(e)&&e.forEach(function(s,i){o.set(i,dr(s,t,n,i,e,r))});var y=u?void 0:(d?c?Fi:qn:c?Gi:Je)(e);return gn(y||e,function(s,i){y&&(s=e[i=s]),Si(o,i,dr(s,t,n,i,e,r))}),o}lr[or]=lr["[object Array]"]=lr["[object ArrayBuffer]"]=lr["[object DataView]"]=lr["[object Boolean]"]=lr["[object Date]"]=lr["[object Float32Array]"]=lr["[object Float64Array]"]=lr["[object Int8Array]"]=lr["[object Int16Array]"]=lr["[object Int32Array]"]=lr["[object Map]"]=lr["[object Number]"]=lr[cr]=lr["[object RegExp]"]=lr["[object Set]"]=lr["[object String]"]=lr["[object Symbol]"]=lr["[object Uint8Array]"]=lr["[object Uint8ClampedArray]"]=lr["[object Uint16Array]"]=lr["[object Uint32Array]"]=!0,lr["[object Error]"]=lr[ar]=lr["[object WeakMap]"]=!1;function ur(e){return dr(e,5)}var Mr=Ts("length"),wr="\\ud800-\\udfff",Ir="["+wr+"]",yr="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",gr="\\ud83c[\\udffb-\\udfff]",mr="[^"+wr+"]",Lr="(?:\\ud83c[\\udde6-\\uddff]){2}",pr="[\\ud800-\\udbff][\\udc00-\\udfff]",Dr="(?:"+yr+"|"+gr+")"+"?",Cr="[\\ufe0e\\ufe0f]?",hr=Cr+Dr+("(?:\\u200d(?:"+[mr,Lr,pr].join("|")+")"+Cr+Dr+")*"),br="(?:"+[mr+yr+"?",yr,Lr,pr,Ir].join("|")+")",fr=RegExp(gr+"(?="+gr+")|"+br+hr,"g");function Nr(e){return Ks(e)?function(e){for(var t=fr.lastIndex=0;fr.test(e);)++t;return t}(e):Mr(e)}function xr(e){if(null==e)return 0;if(Ue(e))return"string"==typeof(t=e)||!l(t)&&C(t)&&"[object String]"==D(t)?Nr(e):e.length;var t,n=ys(e);return"[object Map]"==n||"[object Set]"==n?e.size:Qe(e).length}function Tr(e={}){let t=tn(),n={},s=null,i=Ie(e,"timeAlive");mt(i)||(i=1e4),i=gt(i);let r=Ie(e,"timeDetect");return mt(r)||(r=50),r=gt(r),t.trigger=function(e,o){Pe(e)?(yn(n,e)||setTimeout(()=>{t.emit("message",{eventName:"enter",key:e,data:o,now:xr(n)})},1),n[e]={data:o,time:Date.now()},null===s&&(s=setInterval(()=>{hn(n,(e,s)=>{if(Date.now()-e.time>i){let e=ur(n[s]);delete n[s],t.emit("message",{eventName:"leave",key:s,data:e.data,now:xr(n)})}}),Fe(n)||(clearInterval(s),s=null)},r))):console.log("trigger need key")},t.get=function(){let e=[];return hn(n,(t,n)=>{e.push({key:n,data:t.data})}),e=ur(e),e},t}function Zr(e,t={}){let n={};if(Fe(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=tn()),!yn(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let s=(t,...n)=>{setTimeout(()=>{e.emit(t,...n)},1)},i=Tr(),r=setInterval(()=>{let e=vs(i.get(),"key"),t={};hn(e,e=>{t[e]=Ie(n,e,[])}),n=t},1e3);i.on("message",function({eventName:e,key:t,data:n,now:i}){"enter"===e?s("clientEnter",t,n):"leave"===e&&s("clientLeave",t,n),s("clientChange",i)}),e.on("execute",function(e,t,r){if("[sys:polling]"===e)try{let e=Ie(t,"clientId",""),s=Ie(n,e,[]);s=ur(s),n[e]=[],i.trigger(e,t),r.resolve(s)}catch(e){s("error",e),r.reject("[sys:polling] error")}});return e.getClients=i.get,e.getMessages=()=>ur(n),e.broadcast=e=>{if(!Fe(n))return;let t={};hn(n,(n,s)=>{n.push({mode:"broadcast",data:e}),t[s]=n}),n=t},e.clearBroadcast=()=>{clearInterval(r)},e}let Xr=(e,t)=>{let n={};return hn(e,e=>{let s=e,i=Ie(t,e,"");Pe(i)&&(n[s]=i)}),n};function Sr(e,t,n,s={}){if(!Fe(e))throw new Error("invalid instWConverServer");if(0===xr(t))return e;if(!Fe(n))return e;let i=Ie(s,"genTag");xt(i)||(i=()=>Qt()+"|"+Rt(6));let r={};return hn(t,e=>{r[e]=i()}),e.initTableTags(r,"useInputOnly"),hn(t,t=>{let s=n[t];if(!s)throw new Error(`invalid kpOrm[${t}]`);try{s.on("change",()=>{e.updateTableTag(t)})}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}}),e.on("changeTableTags",n=>{e.broadcast({mode:"syncKpTable",data:Xr(t,n)})}),e}function vr(e,t,n,s){for(var i=n-1,r=e.length;++i<r;)if(s(e[i],t))return i;return-1}var Yr=Array.prototype.splice;function Ar(e,t){return e&&e.length&&t&&t.length?function(e,t,n,s){var i=s?vr:Gs,r=-1,o=t.length,a=e;for(e===t&&(t=bi(t)),n&&(a=oe(e,Xe(n)));++r<o;)for(var c=0,l=t[r],d=n?n(l):l;(c=i(a,d,c,s))>-1;)a!==e&&Yr.call(a,c,1),Yr.call(e,c,1);return e}(e,t):e}function Gr(e,t={}){if(!Fe(e))throw new Error("invalid instWConverServer");let n=Ie(t,"getUserIdByToken",null);xt(n)||(n=async()=>"");let s=Ie(t,"useDbOrm",null);qt(s)||(s=!1);let i=null;if(s&&(i=Ie(t,"operOrm",null),!xt(i)))throw new Error("invalid opt.operOrm when useDbOrm=true");let r=[];if(s&&(r=Ie(t,"tableNames",null),!Pt(r)))throw new Error("invalid opt.tableNames when useDbOrm=true");let o=[];s&&(o=Ie(t,"methods",null),Pt(o)||(o=["select","insert","save","del"]));let a=Ie(t,"kpFunExt",null);let c={};async function l(e,t,s){if(!Pe(e))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!yn(t,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=on(t.__sysToken__),!yn(t,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;t=t.__sysInputArgs__;let r="";if(r=n(i),Tt(r)&&(r=await r),Pe(r)||(r=""),"[sys:getFuncList]"===e){let e=Je(c);e=function(e,t){if(!_t(e))return[];if((Be(t)||lt(t)||Re(t)||qt(t))&&(t=[t]),!_t(t))return e;let n=ur(e);return Ar(n,t),n}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!yn(c,e))return s.resolve({state:"error",msg:`invalid func[${e}]`}),s;let o=c[e];try{let e=await Yt(o)(r,...t);s.resolve(e)}catch(t){s.resolve({state:"error",msg:`call func[${e}] has an error: ${t.message}`})}return s}return s&&(r=ur(r),c=function(e,t,n){let s={};return hn(e,e=>{hn(t,t=>{s[`${e}.${t}`]=async function(s,i){return await n(s,e,t,i)}})}),s}(r,o,i)),Fe(a)&&hn(a,(e,t)=>{c[t]=e}),e.on("execute",async function(t,n,s){await l(t,n,s).catch(n=>{e.emit("error",n),s.resolve({state:"error",msg:`execFun func[${t}] has an error: ${n.message}`})})}),e}function jr(e,t={}){if(Fe(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=tn()),!yn(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let n=Ie(t,"fpTableTags",null);Pe(n)||(n="./tableTags.json");let s=Ie(t,"genTag");xt(s)||(s=()=>Qt()+"|"+Rt(6)),e=new Zr(e=new Pi(e,{fpTableTags:n,genTag:s}));let i=Ie(t,"useDbOrm",null);qt(i)||(i=!0);let r=Ie(t,"kpOrm",null),o=Ie(t,"operOrm",null),a=Ie(t,"tableNamesExec",null),c=Ie(t,"methodsExec",null),l=Ie(t,"tableNamesSync",null),d=Ie(t,"getUserIdByToken",null),u=Ie(t,"kpFunExt",null);if(Fe(u)||(u={}),u={...u,"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:Xr(l,t)}}},e=new Gr(e,{getUserIdByToken:d,useDbOrm:i,operOrm:o,tableNames:a,methods:c,kpFunExt:u}),i){if(!Be(r))return e.emit("error","invalid opt.kpOrm when useDbOrm=true"),e;e=new Sr(e,l,r,{genTag:s})}return e}function Kr(e={}){let t=tn(),i=null,r=null,o=Ie(e,"port");ut(o)||(o=8080);let a=Ie(e,"corsOrigins",[]);_t(a)||(a=["http://localhost"]);let c=Ie(e,"delayForSlice","");Zt(c)||(c=100),c=gt(c);let l=Ie(e,"useInert");qt(l)||(l=!0);let d=Ie(e,"pathStaticFiles");Pe(d)||(d="dist");let u=Ie(e,"apis");_t(u)||(u=[]);let M=Ie(e,"apiName");Pe(M)||(M="api");let w=Ie(e,"pathUploadTemp");Pe(w)||(w="./uploadTemp"),jt(w)||sn(w);let I=Ie(e,"tokenType");Pe(I)||(I="Bearer");let y=Ie(e,"sizeSlice");mt(y)||(y=1048576);let g=Ie(e,"verifyConn");xt(g)||(g=()=>!0);let m=Ie(e,"getUserIdByToken",null),L=Ie(e,"useDbOrm",null);qt(L)||(L=!0);let p=Ie(e,"kpOrm",null),D=Ie(e,"operOrm",null),C=Ie(e,"tableNamesExec",null),h=Ie(e,"methodsExec",null),b=Ie(e,"tableNamesSync",null),f=Ie(e,"kpFunExt",null),N=Ie(e,"fnTableTags",null),x=Ie(e,"genTag");xt(x)||(x=()=>Qt()+"|"+Rt(6));let T=Ie(e,"showLog");qt(T)||(T=!0);(async()=>{await(async()=>{i=new n.Server({port:o,routes:{timeout:{server:!1,socket:!1},cors:{origin:a,credentials:!1}}}),l&&await i.register(s);let e=[];l&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}}]),e=[...e,...u],i.route(e)})(),await(async()=>{r=new ai({serverHapi:i,apiName:M,pathUploadTemp:w,tokenType:I,sizeSlice:y,verifyConn:g,corsOrigins:a,delayForSlice:c}),r.on("open",function(){T&&console.log(`Server[port:${o}]: open`)}),r.on("clientChange",function(e){T&&console.log(`Server[port:${o}]: now clients: ${e}`)})})(),await(async()=>{r=new jr(r,{getUserIdByToken:m,useDbOrm:L,kpOrm:p,operOrm:D,tableNamesExec:C,tableNamesSync:b,methodsExec:h,kpFunExt:f,fnTableTags:N,genTag:x}),r.on("error",e=>{t.emit("error",e)})})(),await i.start(),T&&console.log(`Server running at: ${i.info.uri}`)})().catch(e=>{t.emit("error",e)}),process.on("unhandledRejection",e=>{console.log("unhandledRejection",e),t.emit("error",{mode:"unhandledRejection",err:e})}),process.on("uncaughtException",e=>{console.log("uncaughtException",e),t.emit("error",{mode:"uncaughtException",err:e})});return t.getServer=async()=>(await nn(()=>null!==i),i),t.getInstWConverServer=async()=>(await nn(()=>null!==r),r),t}function zr(e,t){let n=vt();if(!Pt(e)&&!Be(e))return n.reject("rs is not an array or object"),n;let s=!1;if(Be(e)){s=!0;let t=[];hn(e,(e,n)=>{t.push({k:n,v:e})}),e=t}xt(t)||(t=function(e){return e});let i=-1,r=[];return e.reduce(function(e,n){return e.then(function(e){r.push(e),i+=1;let o=i,a=n;return s&&(o=n.k,a=n.v),xt(t)?t(a,o):a})},Promise.resolve()).then(function(e){var t,s,i,o;r.push(e),o=null==(t=r)?0:t.length,r=o?Ys(t,(s=i||void 0===s?1:at(s))<0?0:s,o):[],n.resolve(r)}).catch(function(e){n.reject(e)}),n}let Er={backup:async function(e){return await zr(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,n,s,i=!1){if(!zt(e))throw console.log("fp",e),new Error("fp is not exist");if(!Fe(n))throw console.log("woItems",n),new Error("invalid woItems");xt(s)||(s=null),qt(i)||(i=!1);let r=t.readFileSync(e,"utf8");r=Fs(r);let o=Oe(r);xt(s)&&s(),await zr(o,async e=>{console.log("recover...",e.name),i&&(console.log("needCreateStorage"),await n[e.name].createStorage());let t=null;return xr(e.data)>0&&(t=await n[e.name].insert(e.data)),t})}};function Wr(){if(!xt(Ht))throw new Error("invalid dayjs");return Ht().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}var Vr={exports:{}},kr={},Hr={exports:{}},Qr={};function Ur(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Jr=/javascript\s*\:/gim;Qr.whiteList=Ur(),Qr.getDefaultWhiteList=Ur,Qr.onAttr=function(e,t,n){},Qr.onIgnoreAttr=function(e,t,n){},Qr.safeAttrValue=function(e,t){return Jr.test(t)?"":t};var Rr={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var Pr=function(e,t){";"!==(e=Rr.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,s=!1,i=0,r=0,o="";function a(){if(!s){var n=Rr.trim(e.slice(i,r)),a=n.indexOf(":");if(-1!==a){var c=Rr.trim(n.slice(0,a)),l=Rr.trim(n.slice(a+1));if(c){var d=t(i,o.length,c,l,n);d&&(o+=d+"; ")}}}i=r+1}for(;r<n;r++){var c=e[r];if("/"===c&&"*"===e[r+1]){var l=e.indexOf("*/",r+2);if(-1===l)break;i=(r=l+1)+1,s=!1}else"("===c?s=!0:")"===c?s=!1:";"===c?s||a():"\n"===c&&a()}return Rr.trim(o)},Or=Qr,Br=Pr;function Fr(e){return null==e}function _r(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||Or.whiteList,e.onAttr=e.onAttr||Or.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||Or.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||Or.safeAttrValue,this.options=e}_r.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,s=t.onAttr,i=t.onIgnoreAttr,r=t.safeAttrValue;return Br(e,function(e,t,o,a,c){var l=n[o],d=!1;if(!0===l?d=l:"function"==typeof l?d=l(a):l instanceof RegExp&&(d=l.test(a)),!0!==d&&(d=!1),a=r(o,a)){var u,M={position:t,sourcePosition:e,source:c,isWhite:d};return d?Fr(u=s(o,a,M))?o+":"+a:u:Fr(u=i(o,a,M))?void 0:u}})};var qr=_r;!function(e,t){var n=Qr,s=qr;for(var i in(t=e.exports=function(e,t){return new s(t).process(e)}).FilterCSS=s,n)t[i]=n[i];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(Hr,Hr.exports);var $r=Hr.exports,eo={indexOf:function(e,t){var n,s;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,s=e.length;n<s;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var s,i;if(Array.prototype.forEach)return e.forEach(t,n);for(s=0,i=e.length;s<i;s++)t.call(n,e[s],s,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},to=$r.FilterCSS,no=$r.getDefaultWhiteList,so=eo;function io(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var ro=new to;function oo(e){return e.replace(ao,"<").replace(co,">")}var ao=/</g,co=/>/g,lo=/"/g,uo=/"/g,Mo=/&#([a-zA-Z0-9]*);?/gim,wo=/:?/gim,Io=/&newline;?/gim,yo=/((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,go=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,mo=/u\s*r\s*l\s*\(.*/gi;function Lo(e){return e.replace(lo,""")}function po(e){return e.replace(uo,'"')}function Do(e){return e.replace(Mo,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function Co(e){return e.replace(wo,":").replace(Io," ")}function ho(e){for(var t="",n=0,s=e.length;n<s;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return so.trim(t)}function bo(e){return e=ho(e=Co(e=Do(e=po(e))))}function fo(e){return e=oo(e=Lo(e))}kr.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"]},kr.getDefaultWhiteList=io,kr.onTag=function(e,t,n){},kr.onIgnoreTag=function(e,t,n){},kr.onTagAttr=function(e,t,n){},kr.onIgnoreTagAttr=function(e,t,n){},kr.safeAttrValue=function(e,t,n,s){if(n=bo(n),"href"===t||"src"===t){if("#"===(n=so.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(yo.lastIndex=0,yo.test(n))return""}else if("style"===t){if(go.lastIndex=0,go.test(n))return"";if(mo.lastIndex=0,mo.test(n)&&(yo.lastIndex=0,yo.test(n)))return"";!1!==s&&(n=(s=s||ro).process(n))}return n=fo(n)},kr.escapeHtml=oo,kr.escapeQuote=Lo,kr.unescapeQuote=po,kr.escapeHtmlEntities=Do,kr.escapeDangerHtml5Entities=Co,kr.clearNonPrintableCharacter=ho,kr.friendlyAttrValue=bo,kr.escapeAttrValue=fo,kr.onIgnoreTagStripAll=function(){return""},kr.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),s=[],i=!1;return{onIgnoreTag:function(r,o,a){if(function(t){return!!n||-1!==so.indexOf(e,t)}(r)){if(a.isClosing){var c="[/removed]",l=a.position+10;return s.push([!1!==i?i:a.position,l]),i=!1,c}return i||(i=a.position),"[removed]"}return t(r,o,a)},remove:function(e){var t="",n=0;return so.forEach(s,function(s){t+=e.slice(n,s[0]),n=s[1]}),t+=e.slice(n)}}},kr.stripCommentTag=function(e){for(var t="",n=0;n<e.length;){var s=e.indexOf("\x3c!--",n);if(-1===s){t+=e.slice(n);break}t+=e.slice(n,s);var i=e.indexOf("--\x3e",s);if(-1===i)break;n=i+3}return t},kr.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},kr.attributeWrapSign='"',kr.cssFilter=ro,kr.getDefaultCSSWhiteList=no;var No={},xo=eo;function To(e){var t,n=xo.spaceIndex(e);return t=-1===n?e.slice(1,-1):e.slice(1,n+1),"/"===(t=xo.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function Zo(e){return"</"===e.slice(0,2)}var Xo=/[^a-zA-Z0-9\\_:.-]/gim;function So(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function vo(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"'"===n||'"'===n?t:-1}}function Yo(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function Ao(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}No.parseTag=function(e,t,n){var s="",i=0,r=!1,o=!1,a=0,c=e.length,l="",d="";e:for(a=0;a<c;a++){var u=e.charAt(a);if(!1===r){if("<"===u){r=a;continue}}else if(!1===o){if("<"===u){s+=n(e.slice(i,a)),r=a,i=a;continue}if(">"===u||a===c-1){s+=n(e.slice(i,r)),l=To(d=e.slice(r,a+1)),s+=t(r,s.length,l,d,Zo(d)),i=a+1,r=!1;continue}if('"'===u||"'"===u)for(var M=1,w=e.charAt(a-M);""===w.trim()||"="===w;){if("="===w){o=u;continue e}w=e.charAt(a-++M)}}else if(u===o){o=!1;continue}}return i<c&&(s+=n(e.substr(i))),s},No.parseAttr=function(e,t){var n=0,s=0,i=[],r=!1,o=e.length;function a(e,n){if(!((e=(e=xo.trim(e)).replace(Xo,"").toLowerCase()).length<1)){var s=t(e,n||"");s&&i.push(s)}}for(var c=0;c<o;c++){var l,d=e.charAt(c);if(!1!==r||"="!==d)if(!1===r||c!==s)if(/\s|\n|\t/.test(d)){if(e=e.replace(/\s|\n|\t/g," "),!1===r){if(-1===(l=So(e,c))){a(xo.trim(e.slice(n,c))),r=!1,n=c+1;continue}c=l-1;continue}if(-1===(l=Yo(e,c-1))){a(r,Ao(xo.trim(e.slice(n,c)))),r=!1,n=c+1;continue}}else;else{if(-1===(l=e.indexOf(d,c+1)))break;a(r,xo.trim(e.slice(s+1,l))),r=!1,n=(c=l)+1}else r=e.slice(n,c),n=c+1,s='"'===e.charAt(n)||"'"===e.charAt(n)?n:vo(e,c+1)}return n<e.length&&(!1===r?a(e.slice(n)):a(r,Ao(xo.trim(e.slice(n))))),xo.trim(i.join(" "))};var Go=$r.FilterCSS,jo=kr,Ko=No,zo=Ko.parseTag,Eo=Ko.parseAttr,Wo=eo;function Vo(e){return null==e}function ko(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=jo.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var n in e)Array.isArray(e[n])?t[n.toLowerCase()]=e[n].map(function(e){return e.toLowerCase()}):t[n.toLowerCase()]=e[n];return t}(e.whiteList||e.allowList):e.whiteList=jo.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":jo.attributeWrapSign,e.onTag=e.onTag||jo.onTag,e.onTagAttr=e.onTagAttr||jo.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||jo.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||jo.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||jo.safeAttrValue,e.escapeHtml=e.escapeHtml||jo.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new Go(e.css))}ko.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,n=t.options,s=n.whiteList,i=n.onTag,r=n.onIgnoreTag,o=n.onTagAttr,a=n.onIgnoreTagAttr,c=n.safeAttrValue,l=n.escapeHtml,d=t.attributeWrapSign,u=t.cssFilter;n.stripBlankChar&&(e=jo.stripBlankChar(e)),n.allowCommentTag||(e=jo.stripCommentTag(e));var M=!1;n.stripIgnoreTagBody&&(M=jo.StripTagBody(n.stripIgnoreTagBody,r),r=M.onIgnoreTag);var w=zo(e,function(e,t,n,M,w){var I={sourcePosition:e,position:t,isClosing:w,isWhite:Object.prototype.hasOwnProperty.call(s,n)},y=i(n,M,I);if(!Vo(y))return y;if(I.isWhite){if(I.isClosing)return"</"+n+">";var g=function(e){var t=Wo.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=Wo.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=Wo.trim(e.slice(0,-1))),{html:e,closing:n}}(M),m=s[n],L=Eo(g.html,function(e,t){var s=-1!==Wo.indexOf(m,e),i=o(n,e,t,s);return Vo(i)?s?(t=c(n,e,t,u))?e+"="+d+t+d:e:Vo(i=a(n,e,t,s))?void 0:i:i});return M="<"+n,L&&(M+=" "+L),g.closing&&(M+=" /"),M+=">"}return Vo(y=r(n,M,I))?l(M):y},l);return M&&(w=M.remove(w)),w};var Ho=ko;!function(e,t){var n=kr,s=No,i=Ho;function r(e,t){return new i(t).process(e)}(t=e.exports=r).filterXSS=r,t.FilterXSS=i,function(){for(var e in n)t[e]=n[e];for(var i in s)t[i]=s[i]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(Vr,Vr.exports);var Qo=Vt(Vr.exports);function Uo(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}function Jo(e){let t=function(){let e=Uo();return Qo||e.xss}();let n=function e(n){return Pt(n)||Be(n)?(hn(n,function(t,s){n[s]=e(t)}),n):Pe(n)?t(n,{onIgnoreTagAttr:function(e,n,s,i){if("style"===n)return n+'="'+t.escapeAttrValue(s)+'"'}}):n}(ur(e));return n}let Ro=null,Po=null;function Oo(e,t,n,s="save"){if(!Fe(Ro))throw console.log("ds",Ro),new Error("invalid ds");let i=Ro[e].keys,r=!1;Pt(n)||(r=!0,n=[n]);let o=Wr();return s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&hn(n,(e,s)=>{n[s].userId=t}),i.indexOf("timeCreate")>=0&&hn(n,(e,t)=>{n[t].timeCreate=o}),i.indexOf("userIdUpdate")>=0&&hn(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&hn(n,(e,t)=>{n[t].timeUpdate=o})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&hn(n,(e,s)=>{n[s].userIdUpdate=t}),i.indexOf("timeUpdate")>=0&&hn(n,(e,t)=>{n[t].timeUpdate=o})),n=vs(n,(e,t)=>{let n={};return hn(e,(e,t)=>{e=Jo(e),n[t]=e}),n}),n=r?n[0]:n}async function Bo(e,t,n,s){let i,r=null;if(!Fe(Po))return Promise.reject("無有效woItems");let o=Ie(Po,t,null);if(null===o)return Promise.reject(`ORM找不到表名稱: ${t}`);if("select"===n){if(i=await o.select(s).catch(e=>{console.log(`${t}.select catch`,e),r="取得資料失敗"}),Pe(r))return Promise.reject(r)}else if("insert"===n||"save"===n){try{s=Oo(t,e,s,n)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if("insert"===n?i=await o.insert(s).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}):"save"===n&&(i=await o.save(s).catch(e=>{console.log(`${t}.save catch`,e),r="儲存資料失敗"})),Pe(r))return Promise.reject(r);i=Pt(s)?vs(s,e=>({id:e.id})):{id:s.id}}else if("del"===n)i=await o.del(s).catch(e=>{console.log(`${t}.del catch`,e),r="刪除資料失敗"});else if("delAll"===n)i=await o.delAll(s).catch(e=>{console.log(`${t}.delAll catch`,e),r="刪除資料失敗"});else if("mix"===n){if(!Fe(s))return Promise.reject("mix僅支援輸入ltdtDiffByKey結果物件");let n;i=[];let a=Ie(s,"add",[]);if(xr(a)>0){try{a=Oo(t,e,a,"insert+save")}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.insert(a).catch(e=>{console.log(`${t}.save catch`,e),r="新增資料失敗"}),Pe(r))return Promise.reject(r);n=vs(a,e=>({id:e.id})),i=[...i,...n]}let c=Ie(s,"del",[]);if(xr(c)>0){if(await o.del(c).catch(e=>{console.log(`${t}.save catch`,e),r="刪除資料失敗"}),Pe(r))return Promise.reject(r);n=vs(c,e=>({id:e.id})),i=[...i,...n]}let l=Ie(s,"diff",[]);if(xr(l)>0){try{l=Oo(t,e,l)}catch(e){return console.log("adjustData catch",e.toString()),r="調整資料失敗",Promise.reject(r)}if(await o.save(l).catch(e=>{console.log(`${t}.save catch`,e),r="變更資料失敗"}),Pe(r))return Promise.reject(r);n=vs(l,e=>({id:e.id})),i=[...i,...n]}}else r=`invalid mode: ${n}`;return Pe(r)?Promise.reject(r):i}function Fo(e,t){return Ro=e,Po=t,Bo}function _o(e,t){var n=[];return Dn(e,function(e,s,i){t(e,s,i)&&n.push(e)}),n}function qo(e,t){return(l(e)?Pn:_o)(e,Xs(t))}function $o(e,t=null){if(!Pt(e)){let e=vt();return e.reject("pms is not an array"),e}return e.reduce((e,t)=>e.then(t),Promise.resolve(t))}let ea=[],ta=[],na=[],sa=null,ia=null,ra=!0,oa=!0;function aa(e){setTimeout(()=>{ea.push(e)},1)}function ca(e){setTimeout(()=>{ta.push(e)},1)}function la(e){setTimeout(()=>{na.push(e)},1)}async function da(e,t,n,s){if(!xt(sa))return Promise.reject("invalid mapOrm");if(ra&&!Pe(e))return console.log("userId",e),console.log("找不到使用者主鍵"),Promise.reject("找不到使用者主鍵");let i="n";if(ra){if(!xt(ia))return Promise.reject("invalid getUserById");let t=await ia(e);if(!t)return console.log("userId",e),console.log("找不到使用者資訊"),Promise.reject("找不到使用者資訊");i=Ie(t,"isAdmin"),"y"!==i&&"n"!==i&&(i="n");let n=Ie(t,"isActive");if("y"!==n&&"n"!==n&&(n="n"),"y"!==n)return console.log("userId",e),console.log("oSelf",t),console.log("使用者被停權或無有效使用者資訊"),Promise.reject("使用者被停權或無有效使用者資訊")}if(await zr(ea,r=>r({woName:t,userId:e,isAdmin:i,mode:n,input:s})),xr(ta)>0){let r={woName:t,userId:e,isAdmin:i,mode:n,input:s},o=await $o(ta,r);s=o.input}let r=await sa(e,t,n,s);return oa&&"n"===i&&"select"===n&&Pt(r)&&(r=qo(r,e=>!yn(e,"isActive")||!("n"===e.isActive))),xr(na)>0&&(r=await $o(na,{woName:t,userId:e,isAdmin:i,mode:n,input:s,output:r})),r}function ua(e,t,n,s,i={}){let r=function(e,t,n,s){if(!Fe(e))throw console.log("ds",e),new Error("invalid ds");if(!xt(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!Pe(n))throw console.log("url",n),new Error("invalid url");if(!Pe(s))throw console.log("db",s),new Error("invalid db");let i={};return hn(Je(e),e=>{let r=new t({url:n,db:s,cl:e});i[e]=r}),i}(e,t,n,s),o=function(e,t={}){return xt(e)?(sa=e,ra=Ie(t,"useCheckUser"),qt(ra)||(ra=!0),ia=Ie(t,"getUserById"),oa=Ie(t,"useExcludeWhenNotAdmin"),qt(oa)||(oa=!0),{addFunCheck:aa,addFunPreProcessing:ca,addFunPostProcessing:la,procOrm:da}):Promise.reject("invalid mapOrm")}(Fo(e,r),i);return{...Er,woItems:r,closeAll:async()=>{await zr(r,async e=>{e&&xt(e.close)&&await e.close()})},...o}}let Ma={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en-US",cht:"zh-TW"},id:{eng:"ID",cht:"主鍵"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},saveChanges:{eng:"Save changes",cht:"儲存變更"},close:{eng:"Close",cht:"關閉"},cancel:{eng:"Cancel",cht:"取消"},processing:{eng:"Processing...",cht:"處理中請稍後..."},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},getDataError:{eng:"Failed to get data, please try again later",cht:"取得數據失敗,請稍後再試"},logout:{eng:"Log out",cht:"登出"},settings:{eng:"Settings",cht:"設定"},showArchived:{eng:"Show archived",cht:"顯示封存"},timeCreate:{eng:"Created time",cht:"創建時間"},timeUpdate:{eng:"Updated time",cht:"最新變更時間"},errUserIdMissing:{eng:"Can not get the user id",cht:"無法取得使用者主鍵"},errUserEmailMissing:{eng:"Can not get the email of user",cht:"無法取得使用者電子郵件"},errUserNameMissing:{eng:"Can not get the name of user",cht:"無法取得使用者名稱"},errUserRoleMissing:{eng:"Can not get the role of user",cht:"無法取得使用者角色"},errUserNoPermission:{eng:"User does not have permission",cht:"使用者無權限"},errUserNotFound:{eng:"Can not find the user",cht:"查無使用者"},errTokenNoPermission:{eng:"Token does not have permission",cht:"權杖無存取權限"},errPayloadInvalid:{eng:"Invalid payload",cht:"請求內容格式錯誤"},errChannelIdInvalid:{eng:"Invalid channel id",cht:"頻道主鍵無效"},errChannelRowInvalid:{eng:"Invalid channel data",cht:"頻道數據無效"},errMemberRowInvalid:{eng:"Invalid member data",cht:"成員數據無效"},errMemberIdInvalid:{eng:"Invalid member id",cht:"成員主鍵無效"},errContentInvalid:{eng:"Invalid message content",cht:"訊息內容無效"},errFileRowInvalid:{eng:"Invalid file data",cht:"檔案數據無效"},errUploadInvalid:{eng:"Invalid upload data",cht:"上傳數據無效"},errFileIdInvalid:{eng:"Invalid file id",cht:"檔案主鍵無效"},errFileNotFound:{eng:"Can not find the file",cht:"查無檔案"},errTaskIdInvalid:{eng:"Invalid task id",cht:"任務主鍵無效"},errTaskNotFound:{eng:"Can not find the task",cht:"查無任務"},errTaskAlreadyClaimed:{eng:"This task has already been claimed",cht:"此任務已被認領"},errTaskNotRunning:{eng:"This task is not in running state",cht:"此任務非執行中狀態"},errTaskNotResettable:{eng:"This task can not be reset",cht:"此任務無法重置"},errTaskExternalServiceUnavailable:{eng:"External service is temporarily unavailable",cht:"外部服務暫時無法使用"},errResultInvalid:{eng:"Invalid task result",cht:"任務回應內容無效"},errStateInvalid:{eng:"Invalid task state",cht:"任務狀態無效"},errLastMessageIdInvalid:{eng:"Invalid last message id",cht:"已讀訊息主鍵無效"},channelName:{eng:"Channel name",cht:"頻道名稱"},channelDescription:{eng:"Channel description",cht:"頻道描述"},channelAgentId:{eng:"Agent id",cht:"主責agent識別碼"},channelOwnerId:{eng:"Owner id",cht:"建立者"},addChannel:{eng:"Add channel",cht:"新增頻道"},deleteChannel:{eng:"Delete channel",cht:"刪除頻道"},saveChannelSuccess:{eng:"Channel saved successfully",cht:"頻道儲存成功"},saveChannelFail:{eng:"Failed to save channel",cht:"頻道儲存失敗"},deleteChannelSuccess:{eng:"Channel deleted successfully",cht:"頻道刪除成功"},deleteChannelFail:{eng:"Failed to delete channel",cht:"頻道刪除失敗"},channelMembers:{eng:"Channel members",cht:"頻道成員"},memberId:{eng:"Member id",cht:"成員識別碼"},memberType:{eng:"Member type",cht:"成員類型"},memberRole:{eng:"Role",cht:"角色"},memberLastSeen:{eng:"Last seen message",cht:"已讀訊息水位"},addMember:{eng:"Add member",cht:"新增成員"},deleteMember:{eng:"Delete member",cht:"刪除成員"},saveMemberSuccess:{eng:"Member saved successfully",cht:"成員儲存成功"},saveMemberFail:{eng:"Failed to save member",cht:"成員儲存失敗"},deleteMemberSuccess:{eng:"Member deleted successfully",cht:"成員刪除成功"},deleteMemberFail:{eng:"Failed to delete member",cht:"成員刪除失敗"},postMessageSuccess:{eng:"Message posted successfully",cht:"訊息傳送成功"},postMessageFail:{eng:"Failed to post message",cht:"訊息傳送失敗"},inputMessage:{eng:"Type a message...",cht:"輸入訊息..."},taskTitle:{eng:"Task title",cht:"任務標題"},taskPayload:{eng:"Task payload",cht:"任務需求內容"},taskState:{eng:"State",cht:"狀態"},taskAssignee:{eng:"Assignee",cht:"認領者"},taskResult:{eng:"Result",cht:"任務回應內容"},taskStatePending:{eng:"Pending",cht:"待認領"},taskStateRunning:{eng:"Running",cht:"執行中"},taskStateDone:{eng:"Done",cht:"已完成"},taskStateError:{eng:"Error",cht:"失敗"},respondTask:{eng:"Respond task",cht:"回應任務"},resetTask:{eng:"Retry task",cht:"重試任務"},respondTaskSuccess:{eng:"Task responded successfully",cht:"任務回應成功"},respondTaskFail:{eng:"Failed to respond task",cht:"任務回應失敗"},resetTaskSuccess:{eng:"Task reset successfully",cht:"任務重置成功"},resetTaskFail:{eng:"Failed to reset task",cht:"任務重置失敗"},cannotConnectServer:{eng:"Unable to connect to the server, please try again later",cht:"無法連線至伺服器,請稍後再試"},mmChannels:{eng:"Channels",cht:"頻道管理"},mmChannelsMsg:{eng:"Manage channels for conversations and tasks.",cht:"管理用於對話與任務的頻道。"},mmConversation:{eng:"Conversation",cht:"頻道對話"},mmConversationMsg:{eng:"View channel messages, send messages or open them as tasks.",cht:"檢視頻道訊息、發送訊息或將訊息開成任務。"},mmTasks:{eng:"Tasks",cht:"任務檢視"},mmTasksMsg:{eng:"View tasks and their responses, retry or respond manually.",cht:"檢視任務與其回應,可重試或人工代回。"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},logoutConfirm:{eng:"Are you sure you want to log out?",cht:"確定要登出嗎?"},channelsEmpty:{eng:"No channels yet",cht:"目前尚無頻道"},channelNameEmpty:{eng:"Channel name can not be empty",cht:"頻道名稱不可為空"},channelNameDuplicate:{eng:"Channel name is duplicated",cht:"頻道名稱重複"},channelNameInvalid:{eng:"Please correct the channel name first",cht:"請先修正頻道名稱"},deleteChannelConfirm:{eng:"Are you sure you want to delete the selected channels?",cht:"確定要刪除所選頻道嗎?"},selectChannel:{eng:"Channel",cht:"頻道"},selectChannelFirst:{eng:"Please select a channel first",cht:"請先選擇頻道"},conversationEmpty:{eng:"No messages in this channel yet",cht:"此頻道尚無訊息"},openAsTask:{eng:"Open as task",cht:"開成任務"},taskTitlePlaceholder:{eng:"Task title (optional, defaults to first line)",cht:"任務標題(選填,預設取首行)"},sendMessage:{eng:"Send",cht:"送出"},messageContentEmpty:{eng:"Message content can not be empty",cht:"訊息內容不可為空"},senderHuman:{eng:"Human",cht:"人類"},senderAgent:{eng:"Agent",cht:"Agent"},kindText:{eng:"Text",cht:"對話"},kindTask:{eng:"Task",cht:"任務"},kindTaskReply:{eng:"Task reply",cht:"任務回應"},tasksEmpty:{eng:"No tasks in this channel yet",cht:"此頻道尚無任務"},taskTimeDone:{eng:"Done time",cht:"結束時間"},taskErrorKey:{eng:"Error key",cht:"錯誤鍵"},resetTaskConfirm:{eng:"Are you sure you want to retry this task?",cht:"確定要重試此任務嗎?"},respondTaskInputLabel:{eng:"Respond on behalf (manual)",cht:"人工代回內容"},respondTaskPlaceholder:{eng:"Enter the task result (markdown supported)...",cht:"輸入任務回應內容(支援 markdown)..."},respondTaskSubmit:{eng:"Submit response",cht:"送出回應"},respondTaskResultEmpty:{eng:"Response content can not be empty",cht:"回應內容不可為空"},mmStats:{eng:"Stats",cht:"統計"},mmAdmin:{eng:"Admin",cht:"後台"},mmMembers:{eng:"Members",cht:"成員"},searchChannelPlaceholder:{eng:"Search channels / projects...",cht:"搜尋頻道 / 專案…"},uncategorized:{eng:"Uncategorized",cht:"未分類"},channelTreeEmpty:{eng:"No channels match",cht:"無符合的頻道"},agentOnline:{eng:"Agent online",cht:"agent 在線"},selectChannelToStart:{eng:"Select a channel from the left to start",cht:"請從左側選擇一個頻道開始"},timelineEmpty:{eng:"No messages in this channel yet",cht:"此頻道尚無訊息"},today:{eng:"Today",cht:"今天"},noAgentAssigned:{eng:"No agent assigned",cht:"未指派 agent"},composerPlaceholder:{eng:"Type a message... Paste images directly (Enter to send, Shift+Enter for newline)",cht:"輸入訊息… 可直接貼上多張圖片 (Enter 發送,Shift+Enter 換行)"},composerHint:{eng:"Enter to send",cht:"Enter 發送"},attachImage:{eng:"Attach image",cht:"附加圖片"},removeImage:{eng:"Remove image",cht:"移除圖片"},uploadImageFail:{eng:"Failed to upload image",cht:"圖片上傳失敗"},viewImage:{eng:"View image",cht:"檢視圖片"},statChannels:{eng:"Channels",cht:"頻道數"},statMessages:{eng:"Messages",cht:"訊息數"},statTasks:{eng:"Tasks",cht:"任務總數"},statPending:{eng:"Pending",cht:"待處理"},statRunning:{eng:"Running",cht:"處理中"},statDone:{eng:"Done",cht:"已完成"},statError:{eng:"Error",cht:"失敗"},statsOverview:{eng:"Overview",cht:"系統概況"},statTaskBreakdown:{eng:"Task breakdown",cht:"任務狀態分布"},channelLevels:{eng:"Levels",cht:"階層"},selectChannelForMembers:{eng:"Select a channel to manage members",cht:"選擇頻道以管理成員"},memberHuman:{eng:"Human",cht:"人類"},memberAgent:{eng:"Agent",cht:"Agent"},membersEmpty:{eng:"No members in this channel yet",cht:"此頻道尚無成員"},deleteMemberConfirm:{eng:"Are you sure you want to delete the selected members?",cht:"確定要刪除所選成員嗎?"}},wa=(e={})=>{let t=Ie(e,"kpLangExt");Fe(t)||(t={});let n=Ie(e,"webName");Fe(n)||(n={});let s=Ie(e,"webDescription");Fe(s)||(s={});let i={};i={...i,...Ma},Fe(t)&&(i={...i,...t}),Fe(n)&&(i={...i,webName:{...n}}),Fe(s)&&(i={...i,webDescription:{...s}});let r={};return hn(["eng","cht"],e=>{let t={};hn(i,(n,s)=>{t[s]=n[e]}),r[e]=t}),r};function Ia(e,t,n,s){if(!x(e))return e;for(var i=-1,r=(t=ue(t,e)).length,o=r-1,a=e;null!=a&&++i<r;){var c=Me(t[i]),l=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(i!=o){var d=a[c];void 0===(l=s?s(d,c,a):void 0)&&(l=x(d)?d:xe(t[i+1])?[]:{})}Si(a,c,l),a=a[c]}return e}function ya(e,t){return function(e,t,n){for(var s=-1,i=t.length,r={};++s<i;){var o=t[s],a=we(e,o);n(a,o)&&Ia(r,ue(o,e),a)}return r}(e,t,function(t,n){return xs(e,n)})}var ga=w?w.isConcatSpreadable:void 0;function ma(e){return l(e)||De(e)||!!(ga&&e&&e[ga])}function La(e,t,n,s,i){var r=-1,o=e.length;for(n||(n=ma),i||(i=[]);++r<o;){var a=e[r];t>0&&n(a)?t>1?La(a,t-1,n,s,i):Jn(i,a):s||(i[i.length]=a)}return i}function pa(e){return(null==e?0:e.length)?La(e,1):[]}var Da=function(e){return Qi(Ei(e,void 0,pa),e+"")}(function(e,t){return null==e?{}:ya(e,t)}),Ca=Da;function ha(e){if(qt(e))return e;if(0===e)return!1;if(1===e)return!0;let t=!1;return Pe(e)&&"true"===(e=de(Fs(e)).toLowerCase())&&(t=!0),t}let ba="./dbf";let fa=o.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(fa).href:"undefined"==typeof document?location.href:c&&"SCRIPT"===c.tagName.toUpperCase()&&c.src||new URL("w-web-task.umd.js",document.baseURI).href),Na=e.dirname(fa);let xa=(n={})=>{let s=Ie(n,"logFd","");Pe(s)||(s="./logs");let i=Ie(n,"logInterval","");Pe(i)||(i="hr");let r=function(n={}){let s=tn(),i=Ie(n,"timeZone",null),r=Ie(n,"fdLog");Pe(r)||(r="./_logs");let o=Ie(n,"interval");"day"!==o&&"hr"!==o&&(o="day");let c=Ie(n,"numKeep");mt(c)||(c="day"===o?365:8760),c=gt(c);let l=a.transport({targets:[{level:"info",target:e.resolve(Na,"./formatter.mjs"),options:{interval:o,fdLog:r,timeZone:i}}]}),d=a(l),u=()=>{try{if(!jt(r))return;let n="hr"===o?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,i=t.readdirSync(r).filter(e=>n.test(e));i.sort();let a=i.length-c;if(a<=0)return;let l=i.slice(0,a);for(let n of l){let i=e.join(r,n);try{t.unlinkSync(i),s.emit("delete",{fp:i,fn:n})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}};u();let M=setInterval(u,36e5);M.unref();let w=null,I=e=>{let t=d[e].bind(d);return(...n)=>{try{s.emit(e,{args:n})}catch(e){}t(...n)}};return s.fatal=I("fatal"),s.error=I("error"),s.warn=I("warn"),s.info=I("info"),s.debug=I("debug"),s.trace=I("trace"),s.cleanLogs=u,s.clear=(e={})=>{if(null!==w)return w;let t=Ie(e,"timeLimit");mt(t)||(t=6e4),w=vt();let n=!1,s=()=>{n||(n=!0,clearInterval(M),w.resolve())},i=setTimeout(()=>{try{l.worker.terminate()}catch(e){}s()},t);try{d.flush(e=>{if(e||l.closed)return clearTimeout(i),void s();l.once("close",()=>{clearTimeout(i),s()}),l.end()})}catch(e){clearTimeout(i),s()}return w},s}({fdLog:s,interval:i});return r};const Ta=[];for(let e=0;e<256;++e)Ta.push((e+256).toString(16).slice(1));const Za=new Uint8Array(16);function Xa(){return crypto.getRandomValues(Za)}const Sa={};function va(e,t,n){let s;if(e)s=Ya(e.random??e.rng?.()??Xa(),e.msecs,e.seq,t,n);else{const e=Date.now(),i=Xa();!function(e,t,n){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=n[6]<<23|n[7]<<16|n[8]<<8|n[9],e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(Sa,e,i),s=Ya(i,Sa.msecs,Sa.seq,t,n)}return t??function(e,t=0){return(Ta[e[t+0]]+Ta[e[t+1]]+Ta[e[t+2]]+Ta[e[t+3]]+"-"+Ta[e[t+4]]+Ta[e[t+5]]+"-"+Ta[e[t+6]]+Ta[e[t+7]]+"-"+Ta[e[t+8]]+Ta[e[t+9]]+"-"+Ta[e[t+10]]+Ta[e[t+11]]+Ta[e[t+12]]+Ta[e[t+13]]+Ta[e[t+14]]+Ta[e[t+15]]).toLowerCase()}(s)}function Ya(e,t,n,s,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(s){if(i<0||i+16>s.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`)}else s=new Uint8Array(16),i=0;return t??=Date.now(),n??=127*e[6]<<24|e[7]<<16|e[8]<<8|e[9],s[i++]=t/1099511627776&255,s[i++]=t/4294967296&255,s[i++]=t/16777216&255,s[i++]=t/65536&255,s[i++]=t/256&255,s[i++]=255&t,s[i++]=112|n>>>28&15,s[i++]=n>>>20&255,s[i++]=128|n>>>14&63,s[i++]=n>>>6&255,s[i++]=n<<2&255|3&e[10],s[i++]=e[11],s[i++]=e[12],s[i++]=e[13],s[i++]=e[14],s[i++]=e[15],s}function Aa(){return va()}function Ga(e,t,n=""){if(!_t(t))return{};let s={};return hn(t,function(t){s[t]=Ie(e,t,n)}),s}let ja={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"頻道名稱",type:"STRING"},description:{name:"頻道描述",type:"TEXT"},agentId:{name:"主責agent識別碼",type:"STRING"},levels:{name:"階層",type:"STRING"},ownerId:{name:"建立者",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},Ka={keyTable:"channels",tableNameCht:"頻道",tableNameEng:"Channels",settings:ja,funNew:(e={})=>{let t=Ga(e,Je(ja));return t.id=`${Aa()}`,t.timeCreate=Wr(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t},funTest:()=>[]},za={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},channelId:{name:"頻道主鍵",type:"STRING"},memberId:{name:"成員識別碼",type:"STRING"},memberType:{name:"成員類型",type:"STRING"},role:{name:"角色",type:"STRING"},lastSeenMessageId:{name:"已讀訊息水位",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},Ea={keyTable:"channelMembers",tableNameCht:"頻道成員",tableNameEng:"ChannelMembers",settings:za,funNew:(e={})=>{let t=Ga(e,Je(za));return t.id=`${Aa()}`,t.timeCreate=Wr(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t.memberType=Pe(t.memberType)?t.memberType:"human",t.role=Pe(t.role)?t.role:"member",t},funTest:()=>[]},Wa={id:{pk:!0,name:"主鍵",type:"STRING"},channelId:{name:"頻道主鍵",type:"STRING"},senderId:{name:"發送者識別碼",type:"STRING"},senderType:{name:"發送者類型",type:"STRING"},kind:{name:"訊息類型",type:"STRING"},content:{name:"訊息內容",type:"TEXT"},taskId:{name:"任務主鍵",type:"STRING"},attachments:{name:"附件檔案清單",type:"TEXT"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},Va={keyTable:"messages",tableNameCht:"對話訊息",tableNameEng:"Messages",settings:Wa,funNew:(e={})=>{let t=Ga(e,Je(Wa));return t.id=`${Aa()}`,t.timeCreate=Wr(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t.kind=Pe(t.kind)?t.kind:"text",t.senderType=Pe(t.senderType)?t.senderType:"human",t.attachments=Pe(t.attachments)?t.attachments:"[]",t},funTest:()=>[]},ka={...Va,keyTable:"messagesArchive",tableNameCht:"訊息(封存)",tableNameEng:"MessagesArchive"},Ha={id:{pk:!0,name:"主鍵",type:"STRING"},channelId:{name:"頻道主鍵",type:"STRING"},messageId:{name:"起源訊息主鍵",type:"STRING"},title:{name:"任務標題",type:"STRING"},payload:{name:"任務需求內容",type:"TEXT"},state:{name:"狀態",type:"STRING"},assigneeId:{name:"認領agent識別碼",type:"STRING"},result:{name:"任務回應內容",type:"TEXT"},errorKey:{name:"錯誤鍵",type:"STRING"},resultMessageId:{name:"回應訊息主鍵",type:"STRING"},timeClaim:{name:"認領時間",type:"STRING"},timeDone:{name:"結束時間",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},Qa={keyTable:"tasks",tableNameCht:"任務",tableNameEng:"Tasks",settings:Ha,funNew:(e={})=>{let t=Ga(e,Je(Ha));return t.id=`${Aa()}`,t.timeCreate=Wr(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t.state=Pe(t.state)?t.state:"pending",t},funTest:()=>[]},Ua={...Qa,keyTable:"tasksArchive",tableNameCht:"任務(封存)",tableNameEng:"TasksArchive"},Ja={id:{pk:!0,name:"主鍵",type:"STRING"},name:{name:"原始檔名",type:"STRING"},type:{name:"MIME類型",type:"STRING"},size:{name:"檔案大小",type:"INTEGER"},ext:{name:"副檔名",type:"STRING"},userId:{name:"操作者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}};function Ra(e,t={}){let n=Ie(t,"useCreateStorage");qt(n)||(n=!1);let{keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,parser:a,funNew:c,funTest:l,ext:d}=e;if(!Pe(s))throw new Error(`invalid keyTable[${s}]`);if(Pe(i)||(i=s),Pe(r)||(r=s),!Fe(o))throw new Error("invalid settings");Fe(d)||(d=null),Fe(a)||(a=null),xt(c)||(c=null);let u=null;xt(l)&&(u=async e=>{if(!Fe(e))throw new Error("invalid wo");if(!yn(e,s))throw console.log(e),new Error(`keyTable[${s}] is not in wo`);let t=[];try{t=l(),Tt(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${s}] funTest catch`,e),new Error(e)}if(0!==xr(t))return n&&await e[s].createStorage(),await e[s].save(t),t});let M={},w={};return hn(Je(o),e=>{let t=Ie(o,`${e}.name`,"");Pe(t)&&(M[e]=t);let n=Ie(o,`${e}.type`,"");Pe(n)&&(w[e]=n)}),{...e,keyTable:s,tableNameCht:i,tableNameEng:r,settings:o,keys:Je(o),kpType:w,kpHead:M,parser:a,funNew:c,funTest:l,funTestAndSave:u,ext:d}}let Pa={channels:Ka,channelMembers:Ea,messages:Va,messagesArchive:ka,tasks:Qa,tasksArchive:Ua,files:{keyTable:"files",tableNameCht:"圖台檔案",tableNameEng:"Files",settings:Ja,funNew:(e={})=>{let t=Ga(e,Je(Ja));return t.id=`${Aa()}`,t.timeCreate=Wr(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t},funTest:()=>[]}},Oa={};for(let e in Pa)Oa[e]=Ra(Pa[e],{useCreateStorage:!1});return function(n,s,i,r,o,a,c={}){let l=null;if(!xt(n))throw console.log("invalid WOrm",n),new Error("invalid WOrm");if(!Pe(s))throw console.log("invalid url",s),new Error("invalid url");if(!Pe(i))throw console.log("invalid db",i),new Error("invalid db");if(!xt(r))throw console.log("invalid getUserByToken",r),new Error("invalid getUserByToken");if(!xt(o))throw console.log("invalid verifyClientUser",o),new Error("invalid verifyClientUser");if(!xt(a))throw console.log("invalid verifyAppUser",a),new Error("invalid verifyAppUser");let d=Ie(c,"serverPort");mt(d)||(d=11008),d=gt(d);let u=Ie(c,"useCheckUser",!1),M=Ie(c,"getUserById",null),w=Ie(c,"useExcludeWhenNotAdmin",!1),I=Ie(c,"webName",{}),y=Ie(c,"webDescription",{}),g=Ie(c,"webLogo",""),m=Ie(c,"subfolder","");var L,p;Pe(m)&&("/"===St(m,1)&&(p=1,m=Pe(L=m)&&Zt(p)?0===(p=gt(p))?L:Xt(L,L.length-p):""),"/"!==Xt(m,1)&&(m=`/${m}`));let D=Ie(c,"urlRedirect",""),C=Ie(c,"showLanguage","y"),h=Ie(c,"language","eng");Ie(c,"logFd","./logs");let b=Ie(c,"kpLangExt",{}),f=wa({kpLangExt:b,webName:I,webDescription:y}),N={useCheckUser:u,getUserById:M,useExcludeWhenNotAdmin:w},x={};try{x=ua(Oa,n,s,i,N)}catch(e){throw console.log("WServOrm init failed",e),e}let{woItems:T,procOrm:Z}=x,X=xa(c),S=e=>Pe(e)?Xt(e,4)+"***":e,v=async(e,t)=>{let n=await Yt(t)();return Nt(n.msg)&&(n.msg=n.msg.message),"success"!==n.state&&X.error({event:"api/"+e,err:n.msg}),n},Y=(e,t)=>{let n="kpfun-"+e;return async(...e)=>{try{let s=await t(...e);return X.info({event:n}),s}catch(e){return X.error({event:n,err:e}),Promise.reject(e)}}},A=new function(){let e=new Map,t=new Map;return async(n,s)=>{let i=(e.get(n)||Promise.resolve()).then(async()=>await s(),async()=>await s());e.set(n,i.catch(()=>{})),t.set(n,(t.get(n)||0)+1);try{return await i}finally{let s=t.get(n)-1;s<=0?(t.delete(n),e.delete(n)):t.set(n,s)}}},G=function(n={}){let{woItems:s,procOrm:i,ds:r,srLog:o,kmx:a}=n;t.existsSync(ba)||t.mkdirSync(ba,{recursive:!0});let c=async(e,t)=>{if(!Pe(t))return Promise.reject("errFileIdInvalid");let n=Ie(await s.files.select({id:t}),"0");return Fe(n)?n:Promise.reject("errFileNotFound")};return{getChannelsList:async(e,t="")=>{let n=await s.channels.select({isActive:"y"});if(Pe(t)&&t){n=qo(n,e=>e.agentId===t);let i=await s.channelMembers.select({memberId:e,isActive:"y"}),r={};for(let e of i)r[e.channelId]=Ie(e,"lastSeenMessageId","");for(let e of n)e.lastSeenMessageId=r[e.id]||""}return n},saveChannel:async(e,t)=>{if(!Fe(t))return Promise.reject("errChannelRowInvalid");let n,i;if(Pe(t.id)){let o=Ca(t,r.channels.keys);o.id=t.id,o.timeUpdate=Wr(),o.userIdUpdate=e,n=await s.channels.save([o]),i=t.id}else{let o=r.channels.funNew({...t,userId:e});n=await s.channels.insert(o),i=o.id}if(Pe(t.agentId)&&t.agentId&&!Fe(Ie(await s.channelMembers.select({channelId:i,memberId:t.agentId,isActive:"y"}),"0"))){let n=r.channelMembers.funNew({channelId:i,memberId:t.agentId,memberType:"agent",userId:e});await s.channelMembers.insert(n)}return n},deleteChannel:async(e,t)=>Pe(t)?await s.channels.del({id:t}):Promise.reject("errChannelIdInvalid"),getChannelMembers:async(e,t)=>Pe(t)?await s.channelMembers.select({channelId:t,isActive:"y"}):Promise.reject("errChannelIdInvalid"),saveChannelMember:async(e,t)=>{if(!Fe(t))return Promise.reject("errMemberRowInvalid");let n;if(Pe(t.id)){let i=Ca(t,r.channelMembers.keys);i.id=t.id,i.timeUpdate=Wr(),i.userIdUpdate=e,n=await s.channelMembers.save([i])}else{let i=r.channelMembers.funNew({...t,userId:e});n=await s.channelMembers.insert(i)}return n},deleteChannelMember:async(e,t)=>Pe(t)?await s.channelMembers.del({id:t}):Promise.reject("errMemberIdInvalid"),getMessages:async(e,t,n=20,i="")=>{if(!Pe(t))return Promise.reject("errChannelIdInvalid");let r=gt(n);r<1&&(r=20),r=Math.min(r,500);let o=await s.messages.select({channelId:t,isActive:"y"});return o=Pe(i)&&i?qo(o,e=>e.id>i).slice(0,500):o.slice(-r),o},postMessage:async(e,t,n,i={})=>{if(!Pe(t))return Promise.reject("errChannelIdInvalid");let o=Ie(i,"attachments"),c=Pt(o)&&o.length>0;return Pe(n)||c?(Pe(n)||(n=""),await a("postMessage:"+t,async()=>{let o=ha(Ie(i,"asTask",!1)),a=Ie(i,"senderType","human"),c=Ie(i,"attachments"),l=Pt(c)?JSON.stringify(c):"[]",d=r.messages.funNew({channelId:t,senderId:e,senderType:a,kind:o?"task":"text",content:n,attachments:l,userId:e});if(await s.messages.insert(d),o){let o=Ie(i,"title","")||n.split(/\r?\n/)[0].slice(0,100),a=r.tasks.funNew({channelId:t,messageId:d.id,title:o,payload:n,state:"pending",userId:e});return await s.tasks.insert(a),await s.messages.save({id:d.id,taskId:a.id,timeUpdate:Wr(),userIdUpdate:e}),d.taskId=a.id,{message:d,task:a}}return{message:d}})):Promise.reject("errContentInvalid")},getTasks:async(e,t,n=20,i="",r="desc")=>{if(!Pe(t))return Promise.reject("errChannelIdInvalid");let o=gt(n);o<1&&(o=20),o=Math.min(o,500);let a={channelId:t,isActive:"y"};Pe(i)&&i&&(a.state=i);let c=await s.tasks.select(a);return c="asc"===r?c.slice(0,o):c.slice(-o).reverse(),c},getTask:async(e,t)=>{if(!Pe(t))return Promise.reject("errTaskIdInvalid");let n=Ie(await s.tasks.select({id:t}),"0");return Fe(n)?n:Promise.reject("errTaskNotFound")},claimTask:async(e,t)=>Pe(t)?await a("task:"+t,async()=>{let n=Ie(await s.tasks.select({id:t}),"0");return Fe(n)?"pending"!==n.state?Promise.reject("errTaskAlreadyClaimed"):(await s.tasks.save({id:t,state:"running",assigneeId:e,timeClaim:Wr(),timeUpdate:Wr(),userIdUpdate:e}),Ie(await s.tasks.select({id:t}),"0")):Promise.reject("errTaskNotFound")}):Promise.reject("errTaskIdInvalid"),respondTask:async(e,t,n,i="done",o="",c="agent")=>Pe(t)?Pe(n)?"done"!==i&&"error"!==i?Promise.reject("errStateInvalid"):await a("task:"+t,async()=>{let a=Ie(await s.tasks.select({id:t}),"0");if(!Fe(a))return Promise.reject("errTaskNotFound");if("running"!==a.state)return Promise.reject("errTaskNotRunning");let l=r.messages.funNew({channelId:a.channelId,senderId:e,senderType:c,kind:"taskReply",content:n,taskId:t,userId:e});return await s.messages.insert(l),await s.tasks.save({id:t,result:n,state:i,errorKey:o||"",resultMessageId:l.id,timeDone:Wr(),timeUpdate:Wr(),userIdUpdate:e}),Ie(await s.tasks.select({id:t}),"0")}):Promise.reject("errResultInvalid"):Promise.reject("errTaskIdInvalid"),resetTask:async(e,t)=>Pe(t)?await a("task:"+t,async()=>{let n=Ie(await s.tasks.select({id:t}),"0");return Fe(n)?"error"!==n.state&&"running"!==n.state?Promise.reject("errTaskNotResettable"):(await s.tasks.save({id:t,state:"pending",result:"",errorKey:"",assigneeId:"",timeClaim:"",timeDone:"",resultMessageId:"",timeUpdate:Wr(),userIdUpdate:e}),Ie(await s.tasks.select({id:t}),"0")):Promise.reject("errTaskNotFound")}):Promise.reject("errTaskIdInvalid"),ackChannel:async(e,t,n)=>{if(!Pe(t))return Promise.reject("errChannelIdInvalid");if(!Pe(n))return Promise.reject("errLastMessageIdInvalid");let i=Ie(await s.channelMembers.select({channelId:t,memberId:e}),"0");if(Fe(i))await s.channelMembers.save({id:i.id,lastSeenMessageId:n,timeUpdate:Wr(),userIdUpdate:e});else{let i=r.channelMembers.funNew({channelId:t,memberId:e,memberType:"agent",role:"member",lastSeenMessageId:n,userId:e});await s.channelMembers.insert(i)}return{ok:!0}},saveFile:async(n,i)=>{if(!Fe(i))return Promise.reject("errFileRowInvalid");let o=Ie(i,"name"),a=Ie(i,"type");if(!Pe(o)||!Pe(a))return Promise.reject("errFileRowInvalid");let c=Ie(i,"dataBase64");if(!Pe(c))return Promise.reject("errUploadInvalid");let l=Buffer.from(c,"base64"),d=o.includes(".")?o.split(".").pop():"",u=r.files.funNew({name:o,type:a,ext:d,userId:n});return t.writeFileSync(e.join(ba,u.id),l),u.size=l.length,await s.files.insert([u]),{id:u.id,name:u.name,type:u.type,size:u.size}},getFileInfo:c,readFile:async n=>{let s=await c(0,n),i=e.join(ba,n);return t.existsSync(i)?{buf:t.readFileSync(i),info:s}:Promise.reject("errFileNotFound")},getStats:async e=>{let t=await s.channels.select({isActive:"y"}),n=await s.messages.select({isActive:"y"}),i=await s.tasks.select({isActive:"y"}),r={pending:0,running:0,done:0,error:0};for(let e of i)void 0!==r[e.state]&&(r[e.state]+=1);return{channels:t.length,messages:n.length,tasks:{pending:r.pending,running:r.running,done:r.done,error:r.error,total:i.length}}},archiveSweep:async e=>{let t=gt(e);if(t<=0)return{tasksMoved:0,messagesMoved:0};let n=Ht().subtract(t,"day").format("YYYY-MM-DDTHH:mm:ss.SSSZ"),i=await s.tasks.select({isActive:"y"}),r=qo(i,e=>{let t="done"===e.state||"error"===e.state,s=Pe(e.timeDone)&&e.timeDone<n;return t&&s});if(r.length>0){await s.tasksArchive.save(r);for(let e of r)await s.tasks.del({id:e.id})}let o={};for(let e of i)o[e.id]=!0;for(let e of r)delete o[e.id];let a=qo(await s.messages.select({isActive:"y"}),e=>{let t=Pe(e.timeCreate)&&e.timeCreate<n,s=("task"===e.kind||"taskReply"===e.kind)&&Pe(e.taskId)&&!0===o[e.taskId];return t&&!s});if(a.length>0){await s.messagesArchive.save(a);for(let e of a)await s.messages.del({id:e.id})}return{tasksMoved:r.length,messagesMoved:a.length}},getArchivedTasks:async(e,t,n=20,i="desc")=>{if(!Pe(t))return Promise.reject("errChannelIdInvalid");let r=gt(n);r<1&&(r=20),r=Math.min(r,500);let o=await s.tasksArchive.select({channelId:t,isActive:"y"});return o="asc"===i?o.slice(0,r):o.slice(-r).reverse(),o},getArchivedMessages:async(e,t,n=20)=>{if(!Pe(t))return Promise.reject("errChannelIdInvalid");let i=gt(n);return i<1&&(i=20),i=Math.min(i,500),(await s.messagesArchive.select({channelId:t,isActive:"y"})).slice(-i)}}}({woItems:T,procOrm:Z,ds:Oa,srLog:X,kmx:A}),{saveFile:j,getFileInfo:K,readFile:z,getStats:E}=G,W=gt(Ie(c,"archiveAfterDays",30));if(W>0){let e=!1,t=async()=>{e||(e=!0,await G.archiveSweep(W).then(e=>{(e.tasksMoved>0||e.messagesMoved>0)&&X.info({event:"archiveSweep",tasksMoved:e.tasksMoved,messagesMoved:e.messagesMoved})}).catch(e=>{X.error({event:"archiveSweep-error",msg:"string"==typeof e?e:e&&e.message||"unknown"})}).finally(()=>{e=!1}))};setTimeout(t,3e4),setInterval(t,36e5)}let V=async e=>{if(!Pe(Ie(e,"id","")))return console.log("user",e),console.log("can not get the userId"),Promise.reject("errUserIdMissing");if(!Pe(Ie(e,"email","")))return console.log("user",e),console.log("can not get the email of user"),Promise.reject("errUserEmailMissing");if(!Pe(Ie(e,"name","")))return console.log("user",e),console.log("can not get userName"),Promise.reject("errUserNameMissing");let t=Ie(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),console.log("can not get the role of user"),Promise.reject("errUserRoleMissing"))},k=async e=>{let t=await r(e);return await V(t),!0},H=async(e,t="")=>{let n=await(async e=>{let t=r(e);return Tt(t)&&(t=await t),await V(t),t})(e),s=o(n,t);return Tt(s)&&(s=await s),s?(X.info({event:"verifyClientUser",from:t,userId:Ie(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))},Q=async(e,t="")=>{let n=null;if(Pe(e)&&(n=r(e),Tt(n)&&(n=await n)),!Fe(n))return console.log("token",S(e)),console.log("can not find the user from token"),Promise.reject("errUserNotFound");await V(n);let s=a(n,t);return Tt(s)&&(s=await s),s?(X.info({event:"verifyAppUser",from:t,userId:Ie(n,"id","")}),n):(console.log("user",n),console.log("user does not have permission"),Promise.reject("errUserNoPermission"))},U=async e=>{let t=Ie(e,"payload");return Pe(t)&&(t=Oe(t)),Fe(t)?t:(console.log("payload",t),console.log("invalid payload in req"),Promise.reject("errPayloadInvalid"))},J="dist",R="./node_modules/w-web-task/dist";jt(R)&&(J=R);let P="index.html";try{let n=e.resolve(J,"index.tmp");if(zt(n)||(n=e.resolve(J,P)),!zt(n))throw console.log("fpEntryIn",n),new Error("invalid fpEntryIn");let s=e.resolve(J,P),i=t.readFileSync(n,"utf8");i=Et(i,"/mtask/","{sfd}/"),i=Et(i,"{sfd}",m),i=Et(i,"{urlRedirect}",D),i=Et(i,"{language}",h),t.writeFileSync(s,i,"utf8")}catch(e){console.log(e),console.log(`can not generate ${P}`)}let O=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){return await v("getUserByToken",async function(){let t=Ie(e,"query.token","");if(!Pe(t))return console.log("req.query",Ie(e,"query")),console.log("token",S(t)),console.log("[API]getUserByToken/check token: invalid token"),Promise.reject("errTokenNoPermission");let n=await H(t,"getUserByToken");return Fe(n)?(X.info({event:"api/getUserByToken",userId:Ie(n,"id","")}),n):(console.log("token",S(t)),console.log("[API]getUserByToken/check user: invalid user"),Promise.reject("errTokenNoPermission"))})}},{method:"GET",path:"/api/getChannels",handler:async function(e,t){return await v("getChannels",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getChannels"),"id",""),s=Ie(e,"query.agentId",""),i=await G.getChannelsList(n,s);return X.info({event:"api/getChannels",userId:n}),i})}},{method:"GET",path:"/api/getRecentMessages",handler:async function(e,t){return await v("getRecentMessages",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getRecentMessages"),"id",""),s=Ie(e,"query.channelId",""),i=gt(Ie(e,"query.n",20)),r=Ie(e,"query.afterId",""),o=await G.getMessages(n,s,i,r);return X.info({event:"api/getRecentMessages",userId:n}),o})}},{method:"GET",path:"/api/getRecentTasks",handler:async function(e,t){return await v("getRecentTasks",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getRecentTasks"),"id",""),s=Ie(e,"query.channelId",""),i=gt(Ie(e,"query.n",20)),r=Ie(e,"query.state",""),o=Ie(e,"query.order","desc"),a=await G.getTasks(n,s,i,r,o);return X.info({event:"api/getRecentTasks",userId:n}),a})}},{method:"GET",path:"/api/getArchivedTasks",handler:async function(e,t){return await v("getArchivedTasks",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getArchivedTasks"),"id",""),s=Ie(e,"query.channelId",""),i=gt(Ie(e,"query.n",20)),r=Ie(e,"query.order","desc"),o=await G.getArchivedTasks(n,s,i,r);return X.info({event:"api/getArchivedTasks",userId:n}),o})}},{method:"GET",path:"/api/getArchivedMessages",handler:async function(e,t){return await v("getArchivedMessages",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getArchivedMessages"),"id",""),s=Ie(e,"query.channelId",""),i=gt(Ie(e,"query.n",20)),r=await G.getArchivedMessages(n,s,i);return X.info({event:"api/getArchivedMessages",userId:n}),r})}},{method:"GET",path:"/api/getTask",handler:async function(e,t){return await v("getTask",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getTask"),"id",""),s=Ie(e,"query.taskId",""),i=await G.getTask(n,s);return X.info({event:"api/getTask",userId:n}),i})}},{method:"POST",path:"/api/postMessage",handler:async function(e,t){return await v("postMessage",async function(){let t=await U(e),n=Ie(e,"query.token","")||Ie(t,"token",""),s=Ie(await Q(n,"postMessage"),"id",""),i=Ie(t,"channelId",""),r=Ie(t,"content",""),o={asTask:Ie(t,"asTask",!1),title:Ie(t,"title",""),senderType:Ie(t,"senderType","human"),attachments:Ie(t,"attachments",[])},a=await G.postMessage(s,i,r,o);return X.info({event:"api/postMessage",userId:s}),a})}},{method:"POST",path:"/api/claimTask",handler:async function(e,t){return await v("claimTask",async function(){let t=await U(e),n=Ie(e,"query.token","")||Ie(t,"token",""),s=Ie(await Q(n,"claimTask"),"id",""),i=Ie(t,"taskId",""),r=await G.claimTask(s,i);return X.info({event:"api/claimTask",userId:s}),r})}},{method:"POST",path:"/api/respondTask",handler:async function(e,t){return await v("respondTask",async function(){let t=await U(e),n=Ie(e,"query.token","")||Ie(t,"token",""),s=Ie(await Q(n,"respondTask"),"id",""),i=Ie(t,"taskId",""),r=Ie(t,"result",""),o=Ie(t,"state","done"),a=Ie(t,"errorKey",""),c=await G.respondTask(s,i,r,o,a);return X.info({event:"api/respondTask",userId:s}),c})}},{method:"POST",path:"/api/resetTask",handler:async function(e,t){return await v("resetTask",async function(){let t=await U(e),n=Ie(e,"query.token","")||Ie(t,"token",""),s=Ie(await Q(n,"resetTask"),"id",""),i=Ie(t,"taskId",""),r=await G.resetTask(s,i);return X.info({event:"api/resetTask",userId:s}),r})}},{method:"POST",path:"/api/ackChannel",handler:async function(e,t){return await v("ackChannel",async function(){let t=await U(e),n=Ie(e,"query.token","")||Ie(t,"token",""),s=Ie(await Q(n,"ackChannel"),"id",""),i=Ie(t,"channelId",""),r=Ie(t,"lastMessageId",""),o=await G.ackChannel(s,i,r);return X.info({event:"api/ackChannel",userId:s}),o})}},{method:"POST",path:"/api/uploadFile",options:{payload:{maxBytes:20971520}},handler:async function(e,t){return await v("uploadFile",async function(){let t=await U(e),n=Ie(e,"query.token","")||Ie(t,"token",""),s=Ie(await Q(n,"uploadFile"),"id",""),i=Ie(t,"name",""),r=Ie(t,"type",""),o=Ie(t,"dataBase64",""),a=await G.saveFile(s,{name:i,type:r,dataBase64:o});return X.info({event:"api/uploadFile",userId:s}),a})}},{method:"GET",path:"/api/getFileInfo",handler:async function(e,t){return await v("getFileInfo",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getFileInfo"),"id",""),s=Ie(e,"query.id",""),i=await G.getFileInfo(n,s);return X.info({event:"api/getFileInfo",userId:n}),i})}},{method:"GET",path:"/api/getStats",handler:async function(e,t){return await v("getStats",async function(){let t=Ie(e,"query.token",""),n=Ie(await Q(t,"getStats"),"id",""),s=await G.getStats(n);return X.info({event:"api/getStats",userId:n}),s})}},{method:"GET",path:"/api/getFile",handler:async function(e,t){let n=Ie(e,"query.token",""),s=Ie(e,"query.id","");try{let e=await Q(n,"getFile"),i=await z(s);X.info({event:"api/getFile",userId:Ie(e,"id","")});let r=["image/png","image/jpeg","image/jpg","image/gif","image/webp","image/bmp","image/avif"],o=i.info.type||"",a=r.includes(o),c=encodeURIComponent(i.info.name||s);return t.response(i.buf).type(a?o:"application/octet-stream").header("Content-Disposition",`${a?"inline":"attachment"}; filename="${c}"`).header("X-Content-Type-Options","nosniff")}catch(e){let n=Pe(e)?e:Ie(e,"message","errFileNotFound");return X.error({event:"api/getFile",err:n}),t.response(JSON.stringify({state:"error",msg:n})).code(404).type("application/json")}}}],B=["channels","channelMembers"];return l=new Kr({port:d,pathStaticFiles:J,apiName:"api",apis:O,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:n,headers:s,req:i})=>{let r=function(e,t){return Pe(e)&&Zt(t)?0===(t=gt(t))?e:St(e,e.length-t):""}(t,7);if(!Pe(r))return console.log("apiType",e),console.log("authorization",S(t)),console.log("invalid token"),!1;let o=await k(r);return X.info({event:"verifyConn",apiType:e}),o},getUserIdByToken:async e=>{if(!Pe(e))return"";return Ie(await r(e),"id","")},useDbOrm:!0,kpOrm:T,operOrm:Z,tableNamesExec:B,methodsExec:["select","insert","save","del"],tableNamesSync:B,kpFunExt:{getWebInfor:Y("getWebInfor",e=>({webLogo:g,showLanguage:C,language:h,kpLang:f})),getChannelsList:Y("getChannelsList",e=>G.getChannelsList(e)),saveChannel:Y("saveChannel",(e,t)=>G.saveChannel(e,t)),deleteChannel:Y("deleteChannel",(e,t)=>G.deleteChannel(e,t)),getChannelMembers:Y("getChannelMembers",(e,t)=>G.getChannelMembers(e,t)),saveChannelMember:Y("saveChannelMember",(e,t)=>G.saveChannelMember(e,t)),deleteChannelMember:Y("deleteChannelMember",(e,t)=>G.deleteChannelMember(e,t)),getMessages:Y("getMessages",(e,t,n,s)=>G.getMessages(e,t,n,s)),postMessage:Y("postMessage",(e,t,n,s)=>G.postMessage(e,t,n,s)),getTasks:Y("getTasks",(e,t,n,s,i)=>G.getTasks(e,t,n,s,i)),getArchivedTasks:Y("getArchivedTasks",(e,t,n,s)=>G.getArchivedTasks(e,t,n,s)),getArchivedMessages:Y("getArchivedMessages",(e,t,n)=>G.getArchivedMessages(e,t,n)),getTask:Y("getTask",(e,t)=>G.getTask(e,t)),claimTask:Y("claimTask",(e,t)=>G.claimTask(e,t)),respondTask:Y("respondTask",(e,t,n,s,i,r)=>G.respondTask(e,t,n,s,i,r)),resetTask:Y("resetTask",(e,t)=>G.resetTask(e,t)),ackChannel:Y("ackChannel",(e,t,n)=>G.ackChannel(e,t,n)),uploadFile:Y("uploadFile",(e,t)=>G.saveFile(e,t)),getFileInfo:Y("getFileInfo",(e,t)=>G.getFileInfo(e,t)),getStats:Y("getStats",e=>G.getStats(e))},fnTableTags:"tableTags-web-task.json"}),l}});
|
|
7
7
|
//# sourceMappingURL=w-web-task.umd.js.map
|