UNPKG

trtc-sdk-v5

Version:
1 lines 140 kB
var __create=Object.create,__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropSymbols=Object.getOwnPropertySymbols,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__objRest=(e,t)=>{var r={};for(var n in e)__hasOwnProp.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&__getOwnPropSymbols)for(var n of __getOwnPropSymbols(e))t.indexOf(n)<0&&__propIsEnum.call(e,n)&&(r[n]=e[n]);return r},__commonJS=(e,t)=>function(){return t||(0,e[__getOwnPropNames(e)[0]])((t={exports:{}}).exports,t),t.exports},__copyProps=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of __getOwnPropNames(t))__hasOwnProp.call(e,o)||o===r||__defProp(e,o,{get:()=>t[o],enumerable:!(n=__getOwnPropDesc(t,o))||n.enumerable});return e},__toESM=(e,t,r)=>(r=null!=e?__create(__getProtoOf(e)):{},__copyProps(!t&&e&&e.__esModule?r:__defProp(r,"default",{value:e,enumerable:!0}),e)),__decorateClass=(e,t,r,n)=>{for(var o,i=n>1?void 0:n?__getOwnPropDesc(t,r):t,s=e.length-1;s>=0;s--)(o=e[s])&&(i=(n?o(t,r,i):o(i))||i);return n&&i&&__defProp(t,r,i),i},__publicField=(e,t,r)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,r),require_eventemitter3=__commonJS({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(e,t){"use strict";var r=Object.prototype.hasOwnProperty,n="~";function o(){}function i(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,r,o,s){if("function"!=typeof r)throw new TypeError("The listener must be a function");var a=new i(r,o||e,s),u=n?n+t:t;return e._events[u]?e._events[u].fn?e._events[u]=[e._events[u],a]:e._events[u].push(a):(e._events[u]=a,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new o:delete e._events[t]}function u(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(n=!1)),u.prototype.eventNames=function(){var e,t,o=[];if(0===this._eventsCount)return o;for(t in e=this._events)r.call(e,t)&&o.push(n?t.slice(1):t);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},u.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,i=r.length,s=new Array(i);o<i;o++)s[o]=r[o].fn;return s},u.prototype.listenerCount=function(e){var t=n?n+e:e,r=this._events[t];return r?r.fn?1:r.length:0},u.prototype.emit=function(e,t,r,o,i,s){var a=n?n+e:e;if(!this._events[a])return!1;var u,c,l=this._events[a],d=arguments.length;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),d){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,r),!0;case 4:return l.fn.call(l.context,t,r,o),!0;case 5:return l.fn.call(l.context,t,r,o,i),!0;case 6:return l.fn.call(l.context,t,r,o,i,s),!0}for(c=1,u=new Array(d-1);c<d;c++)u[c-1]=arguments[c];l.fn.apply(l.context,u)}else{var h,f=l.length;for(c=0;c<f;c++)switch(l[c].once&&this.removeListener(e,l[c].fn,void 0,!0),d){case 1:l[c].fn.call(l[c].context);break;case 2:l[c].fn.call(l[c].context,t);break;case 3:l[c].fn.call(l[c].context,t,r);break;case 4:l[c].fn.call(l[c].context,t,r,o);break;default:if(!u)for(h=1,u=new Array(d-1);h<d;h++)u[h-1]=arguments[h];l[c].fn.apply(l[c].context,u)}}return!0},u.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},u.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},u.prototype.removeListener=function(e,t,r,o){var i=n?n+e:e;if(!this._events[i])return this;if(!t)return a(this,i),this;var s=this._events[i];if(s.fn)s.fn!==t||o&&!s.once||r&&s.context!==r||a(this,i);else{for(var u=0,c=[],l=s.length;u<l;u++)(s[u].fn!==t||o&&!s[u].once||r&&s[u].context!==r)&&c.push(s[u]);c.length?this._events[i]=1===c.length?c[0]:c:a(this,i)}return this},u.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&a(this,t)):(this._events=new o,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=n,u.EventEmitter=u,void 0!==t&&(t.exports=u)}}),import_eventemitter3=__toESM(require_eventemitter3(),1),instance=Symbol("instance"),abortCtrl=Symbol("abortCtrl"),cacheResult=Symbol("cacheResult"),MiddleState=class{constructor(e,t,r){this.oldState=e,this.newState=t,this.action=r,this.aborted=!1}abort(e){this.aborted=!0,setState.call(e,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},FSMError=class extends Error{constructor(e,t,r){super(t),this.state=e,this.message=t,this.cause=r}};function thenAble(e){return"object"==typeof e&&e&&"then"in e}var stateDiagram=new Map;function ChangeState(e,t,r={}){return(n,o,i)=>{const s=r.action||o;if(!r.context){const r=stateDiagram.get(n)||[];stateDiagram.has(n)||stateDiagram.set(n,r),r.push({from:e,to:t,action:s})}const a=i.value;i.value=function(...n){let o=this;if(r.context&&(o=FSM.get("function"==typeof r.context?r.context.call(this,...n):r.context)),o.state===t)return r.sync?o[cacheResult]:Promise.resolve(o[cacheResult]);o.state instanceof MiddleState&&o.state.action==r.abortAction&&o.state.abort(o);let i=null;Array.isArray(e)?0==e.length?o.state instanceof MiddleState&&o.state.abort(o):"string"==typeof o.state&&e.includes(o.state)||(i=new FSMError(o._state,`${o.name} ${s} to ${t} failed: current state ${o._state} not from ${e.join("|")}`)):e!==o.state&&(i=new FSMError(o._state,`${o.name} ${s} to ${t} failed: current state ${o._state} not from ${e}`));const u=e=>{if(r.fail&&r.fail.call(this,e),r.sync){if(r.ignoreError)return e;throw e}return r.ignoreError?Promise.resolve(e):Promise.reject(e)};if(i)return u(i);const c=o.state,l=new MiddleState(c,t,s);setState.call(o,l);const d=e=>{var n;return o[cacheResult]=e,l.aborted||(setState.call(o,t),null===(n=r.success)||void 0===n||n.call(this,o[cacheResult])),e},h=e=>(setState.call(o,c,e),u(e));try{const e=a.apply(this,n);return thenAble(e)?e.then(d).catch(h):r.sync?d(e):Promise.resolve(d(e))}catch(r){return h(new FSMError(o._state,`${o.name} ${s} from ${e} to ${t} failed: ${r}`,r instanceof Error?r:new Error(String(r))))}}}}function Includes(...e){return(t,r,n)=>{const o=n.value,i=r;n.value=function(...t){if(!e.includes(this.state.toString()))throw new FSMError(this.state,`${this.name} ${i} failed: current state ${this.state} not in ${e}`);return o.apply(this,t)}}}var sendDevTools=(()=>{const e="undefined"!=typeof window&&window.__AFSM__,t="undefined"!=typeof importScripts;return e?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:t?(e,t)=>{postMessage({type:e,payload:t})}:()=>{}})();function setState(e,t){const r=this._state;this._state=e;const n=e.toString();e&&this.emit(n,r),this.emit(FSM.STATECHANGED,e,r,t),this.updateDevTools({value:e,old:r,err:t instanceof Error?t.message:String(t)})}var FSM=class e extends import_eventemitter3.default{constructor(t,r,n){super(),this.name=t,this.groupName=r,this._state=e.INIT,t||(t=Date.now().toString(36)),n?Object.setPrototypeOf(this,n):n=Object.getPrototypeOf(this),r||(this.groupName=this.constructor.name);const o=n[instance];o?this.name=o.name+"-"+o.count++:n[instance]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){const e=Object.getPrototypeOf(this),t=stateDiagram.get(e)||[];let r=new Set,n=[],o=[];const i=new Set,s=Object.getPrototypeOf(e);stateDiagram.has(s)&&(s.stateDiagram.forEach((e=>r.add(e))),s.allStates.forEach((e=>i.add(e)))),t.forEach((({from:e,to:t,action:r})=>{"string"==typeof e?n.push({from:e,to:t,action:r}):e.length?e.forEach((e=>{n.push({from:e,to:t,action:r})})):o.push({to:t,action:r})})),n.forEach((({from:e,to:t,action:n})=>{i.add(e),i.add(t),i.add(n+"ing"),r.add(`${e} --\x3e ${n}ing : ${n}`),r.add(`${n}ing --\x3e ${t} : ${n} 🟢`),r.add(`${n}ing --\x3e ${e} : ${n} 🔴`)})),o.forEach((({to:e,action:t})=>{r.add(`${t}ing --\x3e ${e} : ${t} 🟢`),i.forEach((n=>{n!==e&&r.add(`${n} --\x3e ${t}ing : ${t}`)}))}));const a=[...r];return Object.defineProperties(e,{stateDiagram:{value:a},allStates:{value:i}}),a}static get(t){let r;return"string"==typeof t?(r=e.instances.get(t),r||e.instances.set(t,r=new e(t,void 0,Object.create(e.prototype)))):(r=e.instances2.get(t),r||e.instances2.set(t,r=new e(t.constructor.name,void 0,Object.create(e.prototype)))),r}static getState(t){var r;return null===(r=e.get(t))||void 0===r?void 0:r.state}updateDevTools(t={}){sendDevTools(e.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(e){setState.call(this,e)}};FSM.STATECHANGED="stateChanged",FSM.UPDATEAFSM="updateAFSM",FSM.INIT="[*]",FSM.ON="on",FSM.OFF="off",FSM.instances=new Map,FSM.instances2=new WeakMap;var VideoDecoderHard=class extends FSM{constructor(){super(...arguments),__publicField(this,"decoder"),__publicField(this,"config")}async initialize(){this.decoder=new VideoDecoder({output:e=>{this.emit("videoFrame",e)},error:e=>{this.close(),this.emit("error",e)}})}configure(e){this.config=e,this.decoder.configure(__spreadProps(__spreadValues({},e),{codec:this.getCodec(e)}))}getCodec(e){switch(e.codec){case"hevc":return"hvc1.1.6.L0.12.34.56.78.9A.BC";case"av1":return"av01.0.05M.08";case"avc":return"avc1.420028";default:return e.codec}}decode(e){"configured"===this.decoder.state&&this.decoder.decode(new EncodedVideoChunk(e))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){"closed"!==this.decoder.state&&this.decoder.close()}};function WorkerScripts(){var e;self.onmessage=t=>{if("init"===t.data.type){const{canvas:r,wasmScript:n,wasmBinary:o}=t.data,i=null==r?void 0:r.getContext("2d");let s=0,a=0;const u={wasmBinary:o,postRun:()=>{e=new u.VideoDecoder({videoInfo(e,t){s=e,a=t,console.log("video info",e,t)},yuvData(e,t){const n=s*a,o=n>>2;let c=u.HEAPU32[e>>2],l=u.HEAPU32[1+(e>>2)],d=u.HEAPU32[2+(e>>2)],h=u.HEAPU8.subarray(c,c+n),f=u.HEAPU8.subarray(l,l+o),p=u.HEAPU8.subarray(d,d+o);const m=new Uint8Array(n+o+o);m.set(h),m.set(f,n),m.set(p,n+o);const g=new VideoFrame(m,{codedWidth:s,codedHeight:a,format:"I420",timestamp:t});r?(null==i||i.drawImage(g,0,0,r.width,r.height),null==i||i.commit()):self.postMessage({type:"yuvData",videoFrame:g},[g])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+n)()(u)}else if("decode"===t.data.type){const{packet:r}=t.data;null==e||e.decode(r.data,"key"==r.type,r.timestamp)}else if("setCodec"===t.data.type){const{codec:r,format:n,description:o}=t.data;null==e||e.setCodec(r,n,null!=o?o:"")}}}__decorateClass([ChangeState([FSM.INIT,"closed"],"initialized")],VideoDecoderHard.prototype,"initialize",1),__decorateClass([ChangeState("initialized","configured",{sync:!0})],VideoDecoderHard.prototype,"configure",1),__decorateClass([Includes("configured")],VideoDecoderHard.prototype,"decode",1),__decorateClass([ChangeState([],FSM.INIT,{sync:!0})],VideoDecoderHard.prototype,"reset",1),__decorateClass([ChangeState([],"closed",{ignoreError:!0,sync:!0})],VideoDecoderHard.prototype,"close",1);var VideoDecoderSoftBase=class extends FSM{constructor(e,t,r=!1,n,o=!1){super(),this.createModule=e,this.wasmBinary=t,this.workerMode=r,this.canvas=n,this.yuvMode=o,__publicField(this,"worker"),__publicField(this,"decoder"),__publicField(this,"config"),__publicField(this,"module",{}),__publicField(this,"width",0),__publicField(this,"height",0)}async initialize(e){var t;if(this.workerMode){const e=new RegExp("\\{(.+)\\}","s").exec(WorkerScripts.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([e],{type:"text/javascript"})));const r=null==(t=this.canvas)?void 0:t.transferControlToOffscreen(),n=await this.wasmBinary;return console.warn("worker mode",n),this.worker.postMessage({type:"init",canvas:r,wasmScript:this.createModule.toString(),wasmBinary:n},r?[r,n]:[n]),new Promise((e=>{this.worker.onmessage=t=>{if("ready"===t.data.type)delete this.wasmBinary,e(),console.warn("worker mode initialize success");else if("yuvData"===t.data.type){const{videoFrame:e}=t.data;this.emit("videoFrame",e)}}}))}const r=this.module;return this.wasmBinary&&(r.wasmBinary=await this.wasmBinary),r.print=e=>console.log(e),r.printErr=e=>console.log(`[JS] ERROR: ${e}`),r.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise((t=>{r.postRun=e=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),t()},e&&Object.assign(r,e),this.createModule(r)}))}configure(e){var t,r,n;this.config=e;const o=this.config.codec.startsWith("avc")?"avc":"hevc",i=this.config.description?"avc"==o?"avcc":"hvcc":"annexb";null==(r=this.decoder)||r.setCodec(o,i,null!=(t=this.config.description)?t:""),null==(n=this.worker)||n.postMessage({type:"setCodec",codec:o,format:i,description:this.config.description})}decode(e){var t,r;null==(t=this.decoder)||t.decode(e.data,"key"==e.type,e.timestamp),"configured"===this.state&&(null==(r=this.worker)||r.postMessage({type:"decode",packet:e}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(e,t){this.width=e,this.height=t;let r={width:e,height:t};this.emit("videoCodecInfo",r)}yuvData(e,t){if(!this.module)return;const r=this.width*this.height,n=r>>2;let o=this.module.HEAPU32[e>>2],i=this.module.HEAPU32[1+(e>>2)],s=this.module.HEAPU32[2+(e>>2)],a=this.module.HEAPU8.subarray(o,o+r),u=this.module.HEAPU8.subarray(i,i+n),c=this.module.HEAPU8.subarray(s,s+n);if(this.yuvMode)return void this.emit("videoFrame",{y:a,u:u,v:c,timestamp:t});const l=new Uint8Array(r+n+n);l.set(a),l.set(u,r),l.set(c,r+n),this.emit("videoFrame",new VideoFrame(l,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:t}))}errorInfo(e){let t={errMsg:e};this.emit("error",t)}};__decorateClass([ChangeState([FSM.INIT,"closed"],"initialized")],VideoDecoderSoftBase.prototype,"initialize",1),__decorateClass([ChangeState("initialized","configured",{sync:!0})],VideoDecoderSoftBase.prototype,"configure",1),__decorateClass([ChangeState([],FSM.INIT,{sync:!0})],VideoDecoderSoftBase.prototype,"reset",1),__decorateClass([ChangeState([],"closed",{sync:!0})],VideoDecoderSoftBase.prototype,"close",1);var Module=(()=>{var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var r,n,o=t;o.ready=new Promise(((e,t)=>{r=e,n=t}));var i,s,a,u=Object.assign({},o),c="./this.program",l="object"==typeof window,d="function"==typeof importScripts,h=("object"==typeof process&&"object"==typeof process.versions&&process.versions.node,"");(l||d)&&(d?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),e&&(h=e),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",i=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)});var f,p=o.print||console.log.bind(console),m=o.printErr||console.error.bind(console);Object.assign(o,u),u=null,o.arguments&&o.arguments,o.thisProgram&&(c=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(f=o.wasmBinary);var g,v;o.noExitRuntime;"object"!=typeof WebAssembly&&N("no native wasm support detected");var y,_,w,E,S,b,A,T,O,I=!1;var P=[],C=[],R=[];var $=0,D=null,k=null;function M(e){$++,o.monitorRunDependencies&&o.monitorRunDependencies($)}function U(e){if($--,o.monitorRunDependencies&&o.monitorRunDependencies($),0==$&&(null!==D&&(clearInterval(D),D=null),k)){var t=k;k=null,t()}}function N(e){o.onAbort&&o.onAbort(e),m(e="Aborted("+e+")"),I=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw n(t),t}var L,F,B,V;function x(e){return e.startsWith("data:application/octet-stream;base64,")}function j(e){if(e==L&&f)return new Uint8Array(f);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function W(e,t,r){return function(e){return f||!l&&!d||"function"!=typeof fetch?Promise.resolve().then((()=>j(e))):fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>j(e)))}(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{m("failed to asynchronously prepare wasm: "+e),N(e)}))}x(L="videodec.wasm")||(F=L,L=o.locateFile?o.locateFile(F,h):h+F);var H=e=>{for(;e.length>0;)e.shift()(o)};function G(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){b[this.ptr+4>>2]=e},this.get_type=function(){return b[this.ptr+4>>2]},this.set_destructor=function(e){b[this.ptr+8>>2]=e},this.get_destructor=function(){return b[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,y[this.ptr+12|0]=e},this.get_caught=function(){return 0!=y[this.ptr+12|0]},this.set_rethrown=function(e){e=e?1:0,y[this.ptr+13|0]=e},this.get_rethrown=function(){return 0!=y[this.ptr+13|0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){b[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return b[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Qt(this.get_type()))return b[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var z={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=z.isAbs(e),r="/"===e.substr(-1);return(e=z.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=z.splitPath(e),r=t[0],n=t[1];return r||n?(n&&(n=n.substr(0,n.length-1)),r+n):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=z.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return z.normalize(e.join("/"))},join2:(e,t)=>z.normalize(e+"/"+t)},Q=e=>(Q=(()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);N("initRandomDevice")})())(e),q={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:ae.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,t=z.isAbs(n)}return(t?"/":"")+(e=z.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var r=e.length-1;r>=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=q.resolve(e).substr(1),t=q.resolve(t).substr(1);for(var n=r(e.split("/")),o=r(t.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a<i;a++)if(n[a]!==o[a]){s=a;break}var u=[];for(a=s;a<n.length;a++)u.push("..");return(u=u.concat(o.slice(s))).join("/")}},X="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,J=(e,t,r)=>{for(var n=t+r,o=t;e[o]&&!(o>=n);)++o;if(o-t>16&&e.buffer&&X)return X.decode(e.subarray(t,o));for(var i="";t<o;){var s=e[t++];if(128&s){var a=63&e[t++];if(192!=(224&s)){var u=63&e[t++];if((s=224==(240&s)?(15&s)<<12|a<<6|u:(7&s)<<18|a<<12|u<<6|63&e[t++])<65536)i+=String.fromCharCode(s);else{var c=s-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&s)<<6|a)}else i+=String.fromCharCode(s)}return i},K=[],Y=e=>{for(var t=0,r=0;r<e.length;++r){var n=e.charCodeAt(r);n<=127?t++:n<=2047?t+=2:n>=55296&&n<=57343?(t+=4,++r):t+=3}return t},Z=(e,t,r,n)=>{if(!(n>0))return 0;for(var o=r,i=r+n-1,s=0;s<e.length;++s){var a=e.charCodeAt(s);if(a>=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(a<=127){if(r>=i)break;t[r++]=a}else if(a<=2047){if(r+1>=i)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=i)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=i)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-o};function ee(e,t,r){var n=r>0?r:Y(e)+1,o=new Array(n),i=Z(e,o,0,o.length);return t&&(o.length=i),o}var te={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){te.ttys[e]={input:[],output:[],ops:t},ae.registerDevice(e,te.stream_ops)},stream_ops:{open:function(e){var t=te.ttys[e.node.rdev];if(!t)throw new ae.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,t,r,n,o){if(!e.tty||!e.tty.ops.get_char)throw new ae.ErrnoError(60);for(var i=0,s=0;s<n;s++){var a;try{a=e.tty.ops.get_char(e.tty)}catch(e){throw new ae.ErrnoError(29)}if(void 0===a&&0===i)throw new ae.ErrnoError(6);if(null==a)break;i++,t[r+s]=a}return i&&(e.node.timestamp=Date.now()),i},write:function(e,t,r,n,o){if(!e.tty||!e.tty.ops.put_char)throw new ae.ErrnoError(60);try{for(var i=0;i<n;i++)e.tty.ops.put_char(e.tty,t[r+i])}catch(e){throw new ae.ErrnoError(29)}return n&&(e.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(e){return(()=>{if(!K.length){var e=null;if("undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n"),!e)return null;K=ee(e,!0)}return K.shift()})()},put_char:function(e,t){null===t||10===t?(p(J(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync:function(e){e.output&&e.output.length>0&&(p(J(e.output,0)),e.output=[])},ioctl_tcgets:function(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(e,t,r){return 0},ioctl_tiocgwinsz:function(e){return[24,80]}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(m(J(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync:function(e){e.output&&e.output.length>0&&(m(J(e.output,0)),e.output=[])}}},re=e=>{N()},ne={ops_table:null,mount:e=>ne.createNode(null,"/",16895,0),createNode(e,t,r,n){if(ae.isBlkdev(r)||ae.isFIFO(r))throw new ae.ErrnoError(63);ne.ops_table||(ne.ops_table={dir:{node:{getattr:ne.node_ops.getattr,setattr:ne.node_ops.setattr,lookup:ne.node_ops.lookup,mknod:ne.node_ops.mknod,rename:ne.node_ops.rename,unlink:ne.node_ops.unlink,rmdir:ne.node_ops.rmdir,readdir:ne.node_ops.readdir,symlink:ne.node_ops.symlink},stream:{llseek:ne.stream_ops.llseek}},file:{node:{getattr:ne.node_ops.getattr,setattr:ne.node_ops.setattr},stream:{llseek:ne.stream_ops.llseek,read:ne.stream_ops.read,write:ne.stream_ops.write,allocate:ne.stream_ops.allocate,mmap:ne.stream_ops.mmap,msync:ne.stream_ops.msync}},link:{node:{getattr:ne.node_ops.getattr,setattr:ne.node_ops.setattr,readlink:ne.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ne.node_ops.getattr,setattr:ne.node_ops.setattr},stream:ae.chrdev_stream_ops}});var o=ae.createNode(e,t,r,n);return ae.isDir(o.mode)?(o.node_ops=ne.ops_table.dir.node,o.stream_ops=ne.ops_table.dir.stream,o.contents={}):ae.isFile(o.mode)?(o.node_ops=ne.ops_table.file.node,o.stream_ops=ne.ops_table.file.stream,o.usedBytes=0,o.contents=null):ae.isLink(o.mode)?(o.node_ops=ne.ops_table.link.node,o.stream_ops=ne.ops_table.link.stream):ae.isChrdev(o.mode)&&(o.node_ops=ne.ops_table.chrdev.node,o.stream_ops=ne.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[t]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var n=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=ae.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ae.isDir(e.mode)?t.size=4096:ae.isFile(e.mode)?t.size=e.usedBytes:ae.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&ne.resizeFileStorage(e,t.size)},lookup(e,t){throw ae.genericErrors[44]},mknod:(e,t,r,n)=>ne.createNode(e,t,r,n),rename(e,t,r){if(ae.isDir(e.mode)){var n;try{n=ae.lookupNode(t,r)}catch(e){}if(n)for(var o in n.contents)throw new ae.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=ae.lookupNode(e,t);for(var n in r.contents)throw new ae.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var n=ne.createNode(e,t,41471,0);return n.link=r,n},readlink(e){if(!ae.isLink(e.mode))throw new ae.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-o,n);if(s>8&&i.subarray)t.set(i.subarray(o,o+s),r);else for(var a=0;a<s;a++)t[r+a]=i[o+a];return s},write(e,t,r,n,o,i){if(!n)return 0;var s=e.node;if(s.timestamp=Date.now(),t.subarray&&(!s.contents||s.contents.subarray)){if(i)return s.contents=t.subarray(r,r+n),s.usedBytes=n,n;if(0===s.usedBytes&&0===o)return s.contents=t.slice(r,r+n),s.usedBytes=n,n;if(o+n<=s.usedBytes)return s.contents.set(t.subarray(r,r+n),o),n}if(ne.expandFileStorage(s,o+n),s.contents.subarray&&t.subarray)s.contents.set(t.subarray(r,r+n),o);else for(var a=0;a<n;a++)s.contents[o+a]=t[r+a];return s.usedBytes=Math.max(s.usedBytes,o+n),n},llseek(e,t,r){var n=t;if(1===r?n+=e.position:2===r&&ae.isFile(e.node.mode)&&(n+=e.node.usedBytes),n<0)throw new ae.ErrnoError(28);return n},allocate(e,t,r){ne.expandFileStorage(e.node,t+r),e.node.usedBytes=Math.max(e.node.usedBytes,t+r)},mmap(e,t,r,n,o){if(!ae.isFile(e.node.mode))throw new ae.ErrnoError(43);var i,s,a=e.node.contents;if(2&o||a.buffer!==y.buffer){if((r>0||r+t<a.length)&&(a=a.subarray?a.subarray(r,r+t):Array.prototype.slice.call(a,r,r+t)),s=!0,!(i=re()))throw new ae.ErrnoError(48);y.set(a,i)}else s=!1,i=a.byteOffset;return{ptr:i,allocated:s}},msync:(e,t,r,n,o)=>(ne.stream_ops.write(e,t,0,n,r,!1),0)}},oe=(e,t,r,n)=>{var o=n?"":`al ${e}`;s(e,(r=>{var n;n=`Loading data file "${e}" failed (no arrayBuffer).`,r||N(n),t(new Uint8Array(r)),o&&U()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),o&&M()},ie=o.preloadPlugins||[];function se(e,t){var r=0;return e&&(r|=365),t&&(r|=146),r}var ae={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(e,t={})=>{if(!(e=q.resolve(e)))return{path:"",node:null};if((t=Object.assign({follow_mount:!0,recurse_count:0},t)).recurse_count>8)throw new ae.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),n=ae.root,o="/",i=0;i<r.length;i++){var s=i===r.length-1;if(s&&t.parent)break;if(n=ae.lookupNode(n,r[i]),o=z.join2(o,r[i]),ae.isMountpoint(n)&&(!s||s&&t.follow_mount)&&(n=n.mounted.root),!s||t.follow)for(var a=0;ae.isLink(n.mode);){var u=ae.readlink(o);if(o=q.resolve(z.dirname(o),u),n=ae.lookupPath(o,{recurse_count:t.recurse_count+1}).node,a++>40)throw new ae.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var t;;){if(ae.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,n=0;n<t.length;n++)r=(r<<5)-r+t.charCodeAt(n)|0;return(e+r>>>0)%ae.nameTable.length},hashAddNode:e=>{var t=ae.hashName(e.parent.id,e.name);e.name_next=ae.nameTable[t],ae.nameTable[t]=e},hashRemoveNode:e=>{var t=ae.hashName(e.parent.id,e.name);if(ae.nameTable[t]===e)ae.nameTable[t]=e.name_next;else for(var r=ae.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=ae.mayLookup(e);if(r)throw new ae.ErrnoError(r,e);for(var n=ae.hashName(e.id,t),o=ae.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===t)return o}return ae.lookup(e,t)},createNode:(e,t,r,n)=>{var o=new ae.FSNode(e,t,r,n);return ae.hashAddNode(o),o},destroyNode:e=>{ae.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ae.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=ae.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{ae.lookupNode(e,t);return 20}catch(e){}return ae.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var n;try{n=ae.lookupNode(e,t)}catch(e){return e.errno}var o=ae.nodePermissions(e,"wx");if(o)return o;if(r){if(!ae.isDir(n.mode))return 54;if(ae.isRoot(n)||ae.getPath(n)===ae.cwd())return 10}else if(ae.isDir(n.mode))return 31;return 0},mayOpen:(e,t)=>e?ae.isLink(e.mode)?32:ae.isDir(e.mode)&&("r"!==ae.flagsToPermissionString(t)||512&t)?31:ae.nodePermissions(e,ae.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var e=0;e<=ae.MAX_OPEN_FDS;e++)if(!ae.streams[e])return e;throw new ae.ErrnoError(33)},getStreamChecked:e=>{var t=ae.getStream(e);if(!t)throw new ae.ErrnoError(8);return t},getStream:e=>ae.streams[e],createStream:(e,t=-1)=>(ae.FSStream||(ae.FSStream=function(){this.shared={}},ae.FSStream.prototype={},Object.defineProperties(ae.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return!!(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new ae.FSStream,e),-1==t&&(t=ae.nextfd()),e.fd=t,ae.streams[t]=e,e),closeStream:e=>{ae.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=ae.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new ae.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{ae.devices[e]={stream_ops:t}},getDevice:e=>ae.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push.apply(r,n.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),ae.syncFSRequests++,ae.syncFSRequests>1&&m(`warning: ${ae.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=ae.getMounts(ae.root.mount),n=0;function o(e){return ae.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=r.length&&o(null)}r.forEach((t=>{if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:(e,t,r)=>{var n,o="/"===r,i=!r;if(o&&ae.root)throw new ae.ErrnoError(10);if(!o&&!i){var s=ae.lookupPath(r,{follow_mount:!1});if(r=s.path,n=s.node,ae.isMountpoint(n))throw new ae.ErrnoError(10);if(!ae.isDir(n.mode))throw new ae.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},u=e.mount(a);return u.mount=a,a.root=u,o?ae.root=u:n&&(n.mounted=a,n.mount&&n.mount.mounts.push(a)),u},unmount:e=>{var t=ae.lookupPath(e,{follow_mount:!1});if(!ae.isMountpoint(t.node))throw new ae.ErrnoError(28);var r=t.node,n=r.mounted,o=ae.getMounts(n);Object.keys(ae.nameTable).forEach((e=>{for(var t=ae.nameTable[e];t;){var r=t.name_next;o.includes(t.mount)&&ae.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(n);r.mount.mounts.splice(i,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var n=ae.lookupPath(e,{parent:!0}).node,o=z.basename(e);if(!o||"."===o||".."===o)throw new ae.ErrnoError(28);var i=ae.mayCreate(n,o);if(i)throw new ae.ErrnoError(i);if(!n.node_ops.mknod)throw new ae.ErrnoError(63);return n.node_ops.mknod(n,o,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ae.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ae.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),n="",o=0;o<r.length;++o)if(r[o]){n+="/"+r[o];try{ae.mkdir(n,t)}catch(e){if(20!=e.errno)throw e}}},mkdev:(e,t,r)=>(void 0===r&&(r=t,t=438),t|=8192,ae.mknod(e,t,r)),symlink:(e,t)=>{if(!q.resolve(e))throw new ae.ErrnoError(44);var r=ae.lookupPath(t,{parent:!0}).node;if(!r)throw new ae.ErrnoError(44);var n=z.basename(t),o=ae.mayCreate(r,n);if(o)throw new ae.ErrnoError(o);if(!r.node_ops.symlink)throw new ae.ErrnoError(63);return r.node_ops.symlink(r,n,e)},rename:(e,t)=>{var r,n,o=z.dirname(e),i=z.dirname(t),s=z.basename(e),a=z.basename(t);if(r=ae.lookupPath(e,{parent:!0}).node,n=ae.lookupPath(t,{parent:!0}).node,!r||!n)throw new ae.ErrnoError(44);if(r.mount!==n.mount)throw new ae.ErrnoError(75);var u,c=ae.lookupNode(r,s),l=q.relative(e,i);if("."!==l.charAt(0))throw new ae.ErrnoError(28);if("."!==(l=q.relative(t,o)).charAt(0))throw new ae.ErrnoError(55);try{u=ae.lookupNode(n,a)}catch(e){}if(c!==u){var d=ae.isDir(c.mode),h=ae.mayDelete(r,s,d);if(h)throw new ae.ErrnoError(h);if(h=u?ae.mayDelete(n,a,d):ae.mayCreate(n,a))throw new ae.ErrnoError(h);if(!r.node_ops.rename)throw new ae.ErrnoError(63);if(ae.isMountpoint(c)||u&&ae.isMountpoint(u))throw new ae.ErrnoError(10);if(n!==r&&(h=ae.nodePermissions(r,"w")))throw new ae.ErrnoError(h);ae.hashRemoveNode(c);try{r.node_ops.rename(c,n,a)}catch(e){throw e}finally{ae.hashAddNode(c)}}},rmdir:e=>{var t=ae.lookupPath(e,{parent:!0}).node,r=z.basename(e),n=ae.lookupNode(t,r),o=ae.mayDelete(t,r,!0);if(o)throw new ae.ErrnoError(o);if(!t.node_ops.rmdir)throw new ae.ErrnoError(63);if(ae.isMountpoint(n))throw new ae.ErrnoError(10);t.node_ops.rmdir(t,r),ae.destroyNode(n)},readdir:e=>{var t=ae.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ae.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=ae.lookupPath(e,{parent:!0}).node;if(!t)throw new ae.ErrnoError(44);var r=z.basename(e),n=ae.lookupNode(t,r),o=ae.mayDelete(t,r,!1);if(o)throw new ae.ErrnoError(o);if(!t.node_ops.unlink)throw new ae.ErrnoError(63);if(ae.isMountpoint(n))throw new ae.ErrnoError(10);t.node_ops.unlink(t,r),ae.destroyNode(n)},readlink:e=>{var t=ae.lookupPath(e).node;if(!t)throw new ae.ErrnoError(44);if(!t.node_ops.readlink)throw new ae.ErrnoError(28);return q.resolve(ae.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=ae.lookupPath(e,{follow:!t}).node;if(!r)throw new ae.ErrnoError(44);if(!r.node_ops.getattr)throw new ae.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ae.stat(e,!0),chmod:(e,t,r)=>{var n;"string"==typeof e?n=ae.lookupPath(e,{follow:!r}).node:n=e;if(!n.node_ops.setattr)throw new ae.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&t|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,t)=>{ae.chmod(e,t,!0)},fchmod:(e,t)=>{var r=ae.getStreamChecked(e);ae.chmod(r.node,t)},chown:(e,t,r,n)=>{var o;"string"==typeof e?o=ae.lookupPath(e,{follow:!n}).node:o=e;if(!o.node_ops.setattr)throw new ae.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,t,r)=>{ae.chown(e,t,r,!0)},fchown:(e,t,r)=>{var n=ae.getStreamChecked(e);ae.chown(n.node,t,r)},truncate:(e,t)=>{if(t<0)throw new ae.ErrnoError(28);var r;"string"==typeof e?r=ae.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ae.ErrnoError(63);if(ae.isDir(r.mode))throw new ae.ErrnoError(31);if(!ae.isFile(r.mode))throw new ae.ErrnoError(28);var n=ae.nodePermissions(r,"w");if(n)throw new ae.ErrnoError(n);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=ae.getStreamChecked(e);if(!(2097155&r.flags))throw new ae.ErrnoError(28);ae.truncate(r.node,t)},utime:(e,t,r)=>{var n=ae.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(t,r)})},open:(e,t,r)=>{if(""===e)throw new ae.ErrnoError(44);var n;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?function(e){var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t}(t):t)?4095&r|32768:0,"object"==typeof e)n=e;else{e=z.normalize(e);try{n=ae.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var i=!1;if(64&t)if(n){if(128&t)throw new ae.ErrnoError(20)}else n=ae.mknod(e,r,0),i=!0;if(!n)throw new ae.ErrnoError(44);if(ae.isChrdev(n.mode)&&(t&=-513),65536&t&&!ae.isDir(n.mode))throw new ae.ErrnoError(54);if(!i){var s=ae.mayOpen(n,t);if(s)throw new ae.ErrnoError(s)}512&t&&!i&&ae.truncate(n,0),t&=-131713;var a=ae.createStream({node:n,path:ae.getPath(n),flags:t,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!o.logReadFiles||1&t||(ae.readFiles||(ae.readFiles={}),e in ae.readFiles||(ae.readFiles[e]=1)),a},close:e=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ae.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ae.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ae.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,n,o)=>{if(n<0||o<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(1==(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.read)throw new ae.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new ae.ErrnoError(70)}else o=e.position;var s=e.stream_ops.read(e,t,r,n,o);return i||(e.position+=s),s},write:(e,t,r,n,o,i)=>{if(n<0||o<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(!(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.write)throw new ae.ErrnoError(28);e.seekable&&1024&e.flags&&ae.llseek(e,0,2);var s=void 0!==o;if(s){if(!e.seekable)throw new ae.ErrnoError(70)}else o=e.position;var a=e.stream_ops.write(e,t,r,n,o,i);return s||(e.position+=a),a},allocate:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(t<0||r<=0)throw new ae.ErrnoError(28);if(!(2097155&e.flags))throw new ae.ErrnoError(8);if(!ae.isFile(e.node.mode)&&!ae.isDir(e.node.mode))throw new ae.ErrnoError(43);if(!e.stream_ops.allocate)throw new ae.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,n,o)=>{if(2&n&&!(2&o)&&2!=(2097155&e.flags))throw new ae.ErrnoError(2);if(1==(2097155&e.flags))throw new ae.ErrnoError(2);if(!e.stream_ops.mmap)throw new ae.ErrnoError(43);return e.stream_ops.mmap(e,t,r,n,o)},msync:(e,t,r,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,t,r,n,o):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new ae.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error(`Invalid encoding type "${t.encoding}"`);var r,n=ae.open(e,t.flags),o=ae.stat(e).size,i=new Uint8Array(o);return ae.read(n,i,0,o,0),"utf8"===t.encoding?r=J(i,0):"binary"===t.encoding&&(r=i),ae.close(n),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var n=ae.open(e,r.flags,r.mode);if("string"==typeof t){var o=new Uint8Array(Y(t)+1),i=Z(t,o,0,o.length);ae.write(n,o,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ae.write(n,t,0,t.byteLength,void 0,r.canOwn)}ae.close(n)},cwd:()=>ae.currentPath,chdir:e=>{var t=ae.lookupPath(e,{follow:!0});if(null===t.node)throw new ae.ErrnoError(44);if(!ae.isDir(t.node.mode))throw new ae.ErrnoError(54);var r=ae.nodePermissions(t.node,"x");if(r)throw new ae.ErrnoError(r);ae.currentPath=t.path},createDefaultDirectories:()=>{ae.mkdir("/tmp"),ae.mkdir("/home"),ae.mkdir("/home/web_user")},createDefaultDevices:()=>{ae.mkdir("/dev"),ae.registerDevice(ae.makedev(1,3),{read:()=>0,write:(e,t,r,n,o)=>n}),ae.mkdev("/dev/null",ae.makedev(1,3)),te.register(ae.makedev(5,0),te.default_tty_ops),te.register(ae.makedev(6,0),te.default_tty1_ops),ae.mkdev("/dev/tty",ae.makedev(5,0)),ae.mkdev("/dev/tty1",ae.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=Q(e).byteLength),e[--t]);ae.createDevice("/dev","random",r),ae.createDevice("/dev","urandom",r),ae.mkdir("/dev/shm"),ae.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ae.mkdir("/proc");var e=ae.mkdir("/proc/self");ae.mkdir("/proc/self/fd"),ae.mount({mount:()=>{var t=ae.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,n=ae.getStreamChecked(r),o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{o.stdin?ae.createDevice("/dev","stdin",o.stdin):ae.symlink("/dev/tty","/dev/stdin"),o.stdout?ae.createDevice("/dev","stdout",null,o.stdout):ae.symlink("/dev/tty","/dev/stdout"),o.stderr?ae.createDevice("/dev","stderr",null,o.stderr):ae.symlink("/dev/tty1","/dev/stderr");ae.open("/dev/stdin",0),ae.open("/dev/stdout",1),ae.open("/dev/stderr",1)},ensureErrnoError:()=>{ae.ErrnoError||(ae.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ae.ErrnoError.prototype=new Error,ae.ErrnoError.prototype.constructor=ae.ErrnoError,[44].forEach((e=>{ae.genericErrors[e]=new ae.ErrnoError(e),ae.genericErrors[e].stack="<generic error, no stack>"})))},staticInit:()=>{ae.ensureErrnoError(),ae.nameTable=new Array(4096),ae.mount(ne,{},"/"),ae.createDefaultDirectories(),ae.createDefaultDevices(),ae.createSpecialDirectories(),ae.filesystems={MEMFS:ne}},init:(e,t,r)=>{ae.init.initialized=!0,ae.ensureErrnoError(),o.stdin=e||o.stdin,o.stdout=t||o.stdout,o.stderr=r||o.stderr,ae.createStandardStreams()},quit:()=>{ae.init.initialized=!1;for(var e=0;e<ae.streams.length;e++){var t=ae.streams[e];t&&ae.close(t)}},findObject:(e,t)=>{var r=ae.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(n=ae.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=ae.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=n.path,r.parentObject=n.node,r.name=z.basename(e),n=ae.lookupPath(e,{follow:!t}),r.exists=!0,r.path=n.path,r.object=n.node,r.name=n.node.name,r.isRoot="/"===n.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,n)=>{e="string"==typeof e?e:ae.getPath(e);for(var o=t.split("/").reverse();o.length;){var i=o.pop();if(i){var s=z.join2(e,i);try{ae.mkdir(s)}catch(e){}e=s}}return s},createFile:(e,t,r,n,o)=>{var i=z.join2("string"==typeof e?e:ae.getPath(e),t),s=se(n,o);return ae.create(i,s)},createDataFile:(e,t,r,n,o,i)=>{var s=t;e&&(e="string"==typeof e?e:ae.getPath(e),s=t?z.join2(e,t):e);var a=se(n,o),u=ae.create(s,a);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,d=r.length;l<d;++l)c[l]=r.charCodeAt(l);r=c}ae.chmod(u,146|a);var h=ae.open(u,577);ae.write(h,r,0,r.length,0,i),ae.close(h),ae.chmod(u,a)}return u},createDevice:(e,t,r,n)=>{var o=z.join2("string"==typeof e?e:ae.getPath(e),t),i=se(!!r,!!n);ae.createDevice.major||(ae.createDevice.major=64);var s=ae.makedev(ae.createDevice.major++,0);return ae.registerDevice(s,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,t,n,o,i)=>{for(var s=0,a=0;a<o;a++){var u;try{u=r()}catch(e){throw new ae.ErrnoError(29)}if(void 0===u&&0===s)throw new ae.ErrnoError(6);if(null==u)break;s++,t[n+a]=u}return s&&(e.node.timestamp=Date.now()),s},write:(e,t,r,o,i)=>{for(var s=0;s<o;s++)try{n(t[r+s])}catch(e){throw new ae.ErrnoError(29)}return o&&(e.node.timestamp=Date.now()),s}}),ae.mkdev(o,i,s)},forceLoadFile:e=>{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!i)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ee(i(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new ae.ErrnoError(29)}},createLazyFile:(e,t,r,n,o)=>{function i(){this.lengthKnown=!1,this.chunks=[]}if(i.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},i.prototype.setDataGetter=function(e){this.getter=e},i.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,n=Number(e.getResponseHeader("Content-length")),o=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,s=1048576;o||(s=n);var a=this;a.setDataGetter((e=>{var t=e*s,o=(e+1)*s-1;if(o=Math.min(o,n-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",r,!1),n!==s&&o.setRequestHeader("Range","bytes="+e+"-"+t),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+r+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ee(o.responseText||"",!0)})(t,o)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!i&&n||(s=n=1,n=this.getter(0).length,s=n,p("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=s,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!d)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new i;Object.defineProperties(s,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:s}}else a={isDevice:!1,url:r};var u=ae.createFile(e,t,a,n,o);a.contents?u.contents=a.contents:a.url&&(u.contents=null,u.url=a.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};function l(e,t,r,n,o){var i=e.node.contents;if(o>=i.length)return 0;var s=Math.min(i.length-o,n);if(i.slice)for(var a=0;a<s;a++)t[r+a]=i[o+a];else for(a=0;a<s;a++)t[r+a]=i.get(o+a);return s}return Object.keys(u.stream_ops).forEach((e=>{var t=u.stream_ops[e];c[e]=function(){return ae.forceLoadFile(u),t.apply(null,arguments)}})),c.read=(e,t,r,n,o)=>(ae.forceLoadFile(u),l(e,t,r,n,o)),c.mmap=(e,t,r,n,o)=>{ae.forceLoadFile(u);var i=re();if(!i)throw new ae.ErrnoError(48);return l(e,y,i,t,r),{ptr:i,allocated:!0}},u.stream_ops=c,u}},ue=(e,t)=>e?J(_,e,t):"",ce={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(z.isAbs(t))return t;var n;-100===e?n=ae.cwd():n=ce.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new ae.ErrnoError(44);return n}return z.join2(n,t)},doStat:function(e,t,r){try{var n=e(t)}catch(e){if(e&&e.node&&z.normalize(t)!==z.normalize(ae.getPath(e.node)))return-54;throw e}S[r>>2]=n.dev,S[r+4>>2]=n.mode,b[r+8>>2]=n.nlink,S[r+12>>2]=n.uid,S[r+16>>2]=n.gid,S[r+20>>2]=n.rdev,V=[n.size>>>0,(B=n.size,+Math.abs(B)>=1?B>0?+Math.floor(B/4294967296)>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],S[r+24>>2]=V[0],S[r+28>>2]=V[1],S[r+32>>2]=4096,S[r+36>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),s=n.ctime.getTime();return V=[Math.floor(o/1e3)>>>0,(B=Math.floor(o/1e3),+Math.abs(B)>=1?B>0?+Math.floor(B/4294967296)>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],S[r+40>>2]=V[0],S[r+44>>2]=V[1],b[r+48>>2]=o%1e3*1e3,V=[Math.floor(i/1e3)>>>0,(B=Math.floor(i/1e3),+Math.abs(B)>=1?B>0?+Math.floor(B/4294967296)>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],S[r+56>>2]=V[0],S[r+60>>2]=V[1],b[r+64>>2]=i%1e3*1e3,V=[Math.floor(s/1e3)>>>0,(B=Math.floor(s/1e3),+Math.abs(B)>=1?B>0?+Math.floor(B/4294967296)>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],S[r+72>>2]=V[0],S[r+76>>2]=V[1],b[r+80>>2]=s%1e3*1e3,V=[n.ino>>>0,(B=n.ino,+Math.abs(B)>=1?B>0?+Math.floor(B/4294967296)>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],S[r+88>>2]=V[0],S[r+92>>2]=V[1],0},doMsync:function(e,t,r,n,o){if(!ae.isFile(t.node.mode))throw new ae.ErrnoError(43);if(2&n)return 0;var i=_.slice(e,e+r);ae.msync(t,i,o,r,n)},varargs:void 0,get:()=>(ce.varargs+=4,S[ce.varargs-4>>2]),getStr:e=>ue(e),getStreamFromFD:function(e){return ae.getStreamChecked(e)}};function le(e){swit