dilithium-crystals-js 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +13 -4
- package/dist/dilithium.min.d.ts +34 -0
- package/dist/dilithium.min.js +1 -1
- package/package.json +3 -2
- package/src/browser/index.d.ts +10 -0
- package/src/common.d.ts +59 -0
- package/src/node/index.d.ts +25 -0
package/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# dilithium-crystals-js
|
2
2
|
|
3
|
-
dilithium-crystals-js is a JavaScript implementation of the Dilithium post-quantum cryptographic signature scheme. This package provides a unified API for both Node.js and browser environments, offering robust quantum-resistant digital signatures.
|
3
|
+
dilithium-crystals-js is a JavaScript implementation of the Dilithium post-quantum cryptographic signature scheme. This package provides a unified API for both Node.js and browser environments, offering robust quantum-resistant digital signatures. It includes TypeScript declarations (.d.ts files) for improved IDE support, type checking, and autocompletion.
|
4
4
|
|
5
5
|
## Features
|
6
6
|
|
@@ -55,10 +55,15 @@ Dilithium.then((dilithium) => {
|
|
55
55
|
For browser environments, include the minified script in your HTML
|
56
56
|
|
57
57
|
```javascript
|
58
|
-
|
58
|
+
import { createDilithium } from "./node_modules/dilithium-crystals-js/dist/dilithium.min.js";
|
59
|
+
|
60
|
+
async function main() {
|
61
|
+
let dilithium = await createDilithium();
|
62
|
+
|
63
|
+
console.log("Dilithium initialized:", dilithium);
|
59
64
|
|
60
|
-
Dilithium.then((dilithium) => {
|
61
65
|
// Generate keys
|
66
|
+
|
62
67
|
const kind = 2; // Dilithium2
|
63
68
|
const { publicKey, privateKey } = dilithium.generateKeys(kind);
|
64
69
|
|
@@ -78,9 +83,13 @@ Dilithium.then((dilithium) => {
|
|
78
83
|
"Verification result:",
|
79
84
|
verificationResult.result === 0 ? "Valid" : "Invalid"
|
80
85
|
);
|
81
|
-
}
|
86
|
+
}
|
87
|
+
|
88
|
+
main();
|
82
89
|
```
|
83
90
|
|
91
|
+
Note: Make sure to properly configure your build process to handle ES6 modules and to include the WASM file in your public directory.
|
92
|
+
|
84
93
|
## API Reference
|
85
94
|
|
86
95
|
### `dilithium.generateKeys(kind, seed?)`
|
@@ -0,0 +1,34 @@
|
|
1
|
+
// Re-export everything from common.d.ts
|
2
|
+
|
3
|
+
import {
|
4
|
+
DilithiumParams,
|
5
|
+
KeyPair,
|
6
|
+
SignatureResult,
|
7
|
+
VerificationResult,
|
8
|
+
} from "../src/common";
|
9
|
+
|
10
|
+
export * from "../src/common";
|
11
|
+
|
12
|
+
// Define the DilithiumInterface
|
13
|
+
export interface DilithiumInterface {
|
14
|
+
generateKeys: (kind: number, seed?: Uint8Array) => KeyPair;
|
15
|
+
sign: (
|
16
|
+
message: Uint8Array,
|
17
|
+
privateKey: Uint8Array,
|
18
|
+
kind: number
|
19
|
+
) => SignatureResult;
|
20
|
+
verify: (
|
21
|
+
signature: Uint8Array,
|
22
|
+
message: Uint8Array,
|
23
|
+
publicKey: Uint8Array,
|
24
|
+
kind: number
|
25
|
+
) => VerificationResult;
|
26
|
+
DILITHIUM_PARAMS: DilithiumParams[];
|
27
|
+
}
|
28
|
+
|
29
|
+
// Export the createDilithium function
|
30
|
+
export function createDilithium(): Promise<DilithiumInterface>;
|
31
|
+
|
32
|
+
// If you have any browser-specific types or functions, define and export them here
|
33
|
+
// For example:
|
34
|
+
export function fetchWasm(): Promise<ArrayBuffer>;
|
package/dist/dilithium.min.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Dilithium=t():e.Dilithium=t()}(this,(()=>(()=>{var e={944:(e,t,r)=>{var o,n=(o=(o="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(e){var t,n,i=void 0!==(e=e||{})?e:{};i.ready=new Promise((function(e,r){t=e,n=r})),Object.getOwnPropertyDescriptor(i.ready,"_malloc")||(Object.defineProperty(i.ready,"_malloc",{configurable:!0,get:function(){Ee("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_malloc",{configurable:!0,set:function(){Ee("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_free")||(Object.defineProperty(i.ready,"_free",{configurable:!0,get:function(){Ee("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_free",{configurable:!0,set:function(){Ee("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_SHA3_256")||(Object.defineProperty(i.ready,"_SHA3_256",{configurable:!0,get:function(){Ee("You are getting _SHA3_256 on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_SHA3_256",{configurable:!0,set:function(){Ee("You are setting _SHA3_256 on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_randombytes")||(Object.defineProperty(i.ready,"_randombytes",{configurable:!0,get:function(){Ee("You are getting _randombytes on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_randombytes",{configurable:!0,set:function(){Ee("You are setting _randombytes on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_dilithium_keygen")||(Object.defineProperty(i.ready,"_dilithium_keygen",{configurable:!0,get:function(){Ee("You are getting _dilithium_keygen on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_dilithium_keygen",{configurable:!0,set:function(){Ee("You are setting _dilithium_keygen on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_dilithium_sign")||(Object.defineProperty(i.ready,"_dilithium_sign",{configurable:!0,get:function(){Ee("You are getting _dilithium_sign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_dilithium_sign",{configurable:!0,set:function(){Ee("You are setting _dilithium_sign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_dilithium_verify")||(Object.defineProperty(i.ready,"_dilithium_verify",{configurable:!0,get:function(){Ee("You are getting _dilithium_verify on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_dilithium_verify",{configurable:!0,set:function(){Ee("You are setting _dilithium_verify on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"___stdio_exit")||(Object.defineProperty(i.ready,"___stdio_exit",{configurable:!0,get:function(){Ee("You are getting ___stdio_exit on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"___stdio_exit",{configurable:!0,set:function(){Ee("You are setting ___stdio_exit on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"onRuntimeInitialized")||(Object.defineProperty(i.ready,"onRuntimeInitialized",{configurable:!0,get:function(){Ee("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"onRuntimeInitialized",{configurable:!0,set:function(){Ee("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var a=Object.assign({},i),s=[],d="object"==typeof window,c="function"==typeof importScripts,l="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,p=!d&&!l&&!c;if(i.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var E,u,f,h,O,m,g="";if(l){if("object"!=typeof process)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=c?r(507).dirname(g)+"/":"//",m=()=>{O||(h=r(175),O=r(507))},E=function(e,t){return m(),e=O.normalize(e),h.readFileSync(e,t?void 0:"utf8")},f=e=>{var t=E(e,!0);return t.buffer||(t=new Uint8Array(t)),I(t.buffer),t},u=(e,t,r)=>{m(),e=O.normalize(e),h.readFile(e,(function(e,o){e?r(e):t(o.buffer)}))},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),s=process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof Ke))throw e})),process.on("unhandledRejection",(function(e){throw e})),i.inspect=function(){return"[Emscripten Module object]"}}else if(p){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(E=function(e){return read(e)}),f=function(e){let t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(t=read(e,"binary"),I("object"==typeof t),t)},u=function(e,t,r){setTimeout((()=>t(f(e))),0)},"undefined"!=typeof scriptArgs?s=scriptArgs:void 0!==arguments&&(s=arguments),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!d&&!c)throw new Error("environment detection error");if(c?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),o&&(g=o),g=0!==g.indexOf("blob:")?g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");E=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(f=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),u=(e,t,r)=>{var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=()=>{200==o.status||0==o.status&&o.response?t(o.response):r()},o.onerror=r,o.send(null)}}var w,T=i.print||console.log.bind(console),y=i.printErr||console.warn.bind(console);function _(e){_.shown||(_.shown={}),_.shown[e]||(_.shown[e]=1,y(e))}Object.assign(i,a),a=null,i.arguments&&(s=i.arguments),Object.getOwnPropertyDescriptor(i,"arguments")||Object.defineProperty(i,"arguments",{configurable:!0,get:function(){Ee("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),i.thisProgram&&i.thisProgram,Object.getOwnPropertyDescriptor(i,"thisProgram")||Object.defineProperty(i,"thisProgram",{configurable:!0,get:function(){Ee("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),i.quit&&i.quit,Object.getOwnPropertyDescriptor(i,"quit")||Object.defineProperty(i,"quit",{configurable:!0,get:function(){Ee("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),I(void 0===i.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.read,"Module.read option was removed (modify read_ in JS)"),I(void 0===i.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),I(void 0===i.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),I(void 0===i.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),I(void 0===i.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(i,"read")||Object.defineProperty(i,"read",{configurable:!0,get:function(){Ee("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(i,"readAsync")||Object.defineProperty(i,"readAsync",{configurable:!0,get:function(){Ee("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(i,"readBinary")||Object.defineProperty(i,"readBinary",{configurable:!0,get:function(){Ee("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(i,"setWindowTitle")||Object.defineProperty(i,"setWindowTitle",{configurable:!0,get:function(){Ee("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),I(!p,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable."),i.wasmBinary&&(w=i.wasmBinary),Object.getOwnPropertyDescriptor(i,"wasmBinary")||Object.defineProperty(i,"wasmBinary",{configurable:!0,get:function(){Ee("Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}});var D;i.noExitRuntime;function b(e,t,r="i8",o){if("*"===r.charAt(r.length-1)&&(r="i32"),o)switch(r){case"i1":case"i8":U[0|e]=t;break;case"i16":x[e>>1]=t;break;case"i32":C[e>>2]=t;break;case"i64":L[e>>3]=BigInt(t);break;case"float":H[e>>2]=t;break;case"double":X[e>>3]=t;break;default:Ee("invalid type for setValue: "+r)}else switch(r){case"i1":case"i8":M(0|e,0|t,1);break;case"i16":M(0|e,0|t,2);break;case"i32":M(0|e,0|t,4);break;case"i64":M(0|e,0|t,8);break;case"float":R(0|e,Math.fround(t),4);break;case"double":R(0|e,+t,8);break;default:Ee("invalid type for setValue: "+r)}}function v(e,t="i8",r){if("*"===t.charAt(t.length-1)&&(t="i32"),r)switch(t){case"i1":case"i8":return U[0|e];case"i16":return x[e>>1];case"i32":return C[e>>2];case"i64":return Number(L[e>>3]);case"float":return H[e>>2];case"double":return Number(X[e>>3]);default:Ee("invalid type for getValue: "+t)}else switch(t){case"i1":case"i8":return 0|S(0|e,1,0);case"i16":return 0|S(0|e,2,0);case"i32":return 0|S(0|e,4,0);case"i64":return 0|S(0|e,8,0);case"float":return Math.fround(A(0|e,4,0));case"double":return+A(0|e,8,0);default:Ee("invalid type for getValue: "+t)}return null}function P(e,t){switch(e){case 1:return"i8";case 2:return"i16";case 4:return t?"float":"i32";case 8:return t?"double":"i64";default:I(0)}}function M(e,t,r,o){if(e<=0&&Ee("segmentation fault storing "+r+" bytes to address "+e),e%r!=0&&Ee("alignment error storing to address "+e+", which was expected to be aligned to a multiple of "+r),oe&&!ne){var n=Le()>>>0;e+r>n&&Ee("segmentation fault, exceeded the top of the available dynamic heap when storing "+r+" bytes to address "+e+". DYNAMICTOP="+n),I(n>=Qe()),I(n<=U.length)}return b(e,t,P(r,o),1),t}function R(e,t,r){return M(e,t,r,!0)}function S(e,t,r,o){if(e<=0&&Ee("segmentation fault loading "+t+" bytes from address "+e),e%t!=0&&Ee("alignment error loading from address "+e+", which was expected to be aligned to a multiple of "+t),oe&&!ne){var n=Le()>>>0;e+t>n&&Ee("segmentation fault, exceeded the top of the available dynamic heap when loading "+t+" bytes from address "+e+". DYNAMICTOP="+n),I(n>=Qe()),I(n<=U.length)}var i,a,s=P(t,o),d=v(e,s,1);return r&&(i=d,a=parseInt(s.substr(1),10),d=i>=0?i:a<=32?2*Math.abs(1<<a-1)+i:Math.pow(2,a)+i),d}function A(e,t,r){return S(e,t,r,!0)}Object.getOwnPropertyDescriptor(i,"noExitRuntime")||Object.defineProperty(i,"noExitRuntime",{configurable:!0,get:function(){Ee("Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),"object"!=typeof WebAssembly&&Ee("no native wasm support detected");var F=!1;function I(e,t){e||Ee("Assertion failed"+(t?": "+t:""))}function k(e,t,r,o,n){var a={string:function(e){var t=0;if(null!=e&&0!==e){var r=1+(e.length<<2);W(e,t=We(r),r)}return t},array:function(e){var t=We(e.length);return function(e,t){I(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),U.set(e,t)}(e,t),t}},s=function(e){var t=i["_"+e];return I(t,"Cannot call unknown function "+e+", make sure it is exported"),t}(e),d=[],c=0;if(I("array"!==t,'Return type should not be "array".'),o)for(var l=0;l<o.length;l++){var p=a[r[l]];p?(0===c&&(c=Ye()),d[l]=p(o[l])):d[l]=o[l]}var E=s.apply(null,d);return E=function(e){return 0!==c&&ze(c),function(e){return"string"===t?Y(e):"boolean"===t?Boolean(e):e}(e)}(E)}var N,U,j,x,C,H,L,X,Q="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function B(e,t,r){for(var o=t+r,n=t;e[n]&&!(n>=o);)++n;if(n-t>16&&e.subarray&&Q)return Q.decode(e.subarray(t,n));for(var i="";t<n;){var a=e[t++];if(128&a){var s=63&e[t++];if(192!=(224&a)){var d=63&e[t++];if(224==(240&a)?a=(15&a)<<12|s<<6|d:(240!=(248&a)&&_("Invalid UTF-8 leading byte 0x"+a.toString(16)+" encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),a=(7&a)<<18|s<<12|d<<6|63&e[t++]),a<65536)i+=String.fromCharCode(a);else{var c=a-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function Y(e,t){return e?B(j,e,t):""}function z(e,t,r,o){if(!(o>0))return 0;for(var n=r,i=r+o-1,a=0;a<e.length;++a){var s=e.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;s>1114111&&_("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function W(e,t,r){return I("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),z(e,j,t,r)}function K(e){for(var t=0,r=0;r<e.length;++r){var o=e.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++r)),o<=127?++t:t+=o<=2047?2:o<=65535?3:4}return t}function V(e){N=e,i.HEAP8=U=new Int8Array(e),i.HEAP16=x=new Int16Array(e),i.HEAP32=C=new Int32Array(e),i.HEAPU8=j=new Uint8Array(e),i.HEAPU16=new Uint16Array(e),i.HEAPU32=new Uint32Array(e),i.HEAPF32=H=new Float32Array(e),i.HEAPF64=X=new Float64Array(e),i.HEAP64=L=new BigInt64Array(e),i.HEAPU64=new BigUint64Array(e)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var G=5242880;i.TOTAL_STACK&&I(G===i.TOTAL_STACK,"the stack size can no longer be determined at runtime");var q,Z=i.INITIAL_MEMORY||16777216;function J(){var e=Be();I(!(3&e)),M(e+4|0,34821223,4),M(e+8|0,-1984246274,4)}function $(){if(!F){var e=Be(),t=S(e+4|0,4,1)>>>0,r=S(e+8|0,4,1)>>>0;34821223==t&&2310721022==r||Ee("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+r.toString(16)+" 0x"+t.toString(16))}}Object.getOwnPropertyDescriptor(i,"INITIAL_MEMORY")||Object.defineProperty(i,"INITIAL_MEMORY",{configurable:!0,get:function(){Ee("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),I(Z>=G,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+Z+"! (TOTAL_STACK="+G+")"),I("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),I(!i.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),I(16777216==Z,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"}();var ee=[],te=[],re=[],oe=!1,ne=!1;I(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),I(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),I(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),I(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var ie=0,ae=null,se=null,de={};function ce(e){for(var t=e;;){if(!de[e])return e;e=t+Math.random()}}function le(e){ie++,i.monitorRunDependencies&&i.monitorRunDependencies(ie),e?(I(!de[e]),de[e]=1,null===ae&&"undefined"!=typeof setInterval&&(ae=setInterval((function(){if(F)return clearInterval(ae),void(ae=null);var e=!1;for(var t in de)e||(e=!0,y("still waiting on run dependencies:")),y("dependency: "+t);e&&y("(end of list)")}),1e4))):y("warning: run dependency added without ID")}function pe(e){if(ie--,i.monitorRunDependencies&&i.monitorRunDependencies(ie),e?(I(de[e]),delete de[e]):y("warning: run dependency removed without ID"),0==ie&&(null!==ae&&(clearInterval(ae),ae=null),se)){var t=se;se=null,t()}}function Ee(e){i.onAbort&&i.onAbort(e),y(e="Aborted("+e+")"),F=!0;var t=new WebAssembly.RuntimeError(e);throw n(t),t}i.preloadedImages={},i.preloadedAudios={};var ue,fe,he="data:application/octet-stream;base64,";function Oe(e){return e.startsWith(he)}function me(e){return e.startsWith("file://")}function ge(e,t){return function(){var r=e,o=t;return t||(o=i.asm),I(oe,"native function `"+r+"` called before runtime initialization"),I(!ne,"native function `"+r+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),o[e]||I(o[e],"exported native function `"+r+"` not found"),o[e].apply(null,arguments)}}function we(e){try{if(e==ue&&w)return new Uint8Array(w);if(f)return f(e);throw"both async and sync fetching of the wasm failed"}catch(e){Ee(e)}}function Te(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?De(r)():De(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(i)}}function ye(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t,r=(t=e,_("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t);return e===r?e:r+" ["+e+"]"}))}Oe(ue="dilithium.wasm")||(fe=ue,ue=i.locateFile?i.locateFile(fe,g):g+fe);var _e=[];function De(e){var t=_e[e];return t||(e>=_e.length&&(_e.length=e+1),_e[e]=t=q.get(e)),I(q.get(e)==t,"JavaScript-side Wasm function table mirror is out of date!"),t}var be={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,o=e.length-1;o>=0;o--){var n=e[o];"."===n?e.splice(o,1):".."===n?(e.splice(o,1),r++):r&&(e.splice(o,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=be.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=be.splitPath(e),r=t[0],o=t[1];return r||o?(o&&(o=o.substr(0,o.length-1)),r+o):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=be.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},extname:function(e){return be.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return be.normalize(e.join("/"))},join2:function(e,t){return be.normalize(e+"/"+t)}},ve={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var o=r>=0?arguments[r]:Ae.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");if(!o)return"";e=o+"/"+e,t="/"===o.charAt(0)}return(t?"/":"")+(e=be.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(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=ve.resolve(e).substr(1),t=ve.resolve(t).substr(1);for(var o=r(e.split("/")),n=r(t.split("/")),i=Math.min(o.length,n.length),a=i,s=0;s<i;s++)if(o[s]!==n[s]){a=s;break}var d=[];for(s=a;s<o.length;s++)d.push("..");return(d=d.concat(n.slice(a))).join("/")}},Pe={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){Pe.ttys[e]={input:[],output:[],ops:t},Ae.registerDevice(e,Pe.stream_ops)},stream_ops:{open:function(e){var t=Pe.ttys[e.node.rdev];if(!t)throw new Ae.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,o,n){if(!e.tty||!e.tty.ops.get_char)throw new Ae.ErrnoError(60);for(var i=0,a=0;a<o;a++){var s;try{s=e.tty.ops.get_char(e.tty)}catch(e){throw new Ae.ErrnoError(29)}if(void 0===s&&0===i)throw new Ae.ErrnoError(6);if(null==s)break;i++,t[r+a]=s}return i&&(e.node.timestamp=Date.now()),i},write:function(e,t,r,o,n){if(!e.tty||!e.tty.ops.put_char)throw new Ae.ErrnoError(60);try{for(var i=0;i<o;i++)e.tty.ops.put_char(e.tty,t[r+i])}catch(e){throw new Ae.ErrnoError(29)}return o&&(e.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(e){if(!e.input.length){var t=null;if(l){var r=Buffer.alloc(256),o=0;try{o=h.readSync(process.stdin.fd,r,0,256,-1)}catch(e){if(!e.toString().includes("EOF"))throw e;o=0}t=o>0?r.slice(0,o).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=je(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(T(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(T(B(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(y(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(B(e.output,0)),e.output=[])}}},Me={ops_table:null,mount:function(e){return Me.createNode(null,"/",16895,0)},createNode:function(e,t,r,o){if(Ae.isBlkdev(r)||Ae.isFIFO(r))throw new Ae.ErrnoError(63);Me.ops_table||(Me.ops_table={dir:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,lookup:Me.node_ops.lookup,mknod:Me.node_ops.mknod,rename:Me.node_ops.rename,unlink:Me.node_ops.unlink,rmdir:Me.node_ops.rmdir,readdir:Me.node_ops.readdir,symlink:Me.node_ops.symlink},stream:{llseek:Me.stream_ops.llseek}},file:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:{llseek:Me.stream_ops.llseek,read:Me.stream_ops.read,write:Me.stream_ops.write,allocate:Me.stream_ops.allocate,mmap:Me.stream_ops.mmap,msync:Me.stream_ops.msync}},link:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,readlink:Me.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:Ae.chrdev_stream_ops}});var n=Ae.createNode(e,t,r,o);return Ae.isDir(n.mode)?(n.node_ops=Me.ops_table.dir.node,n.stream_ops=Me.ops_table.dir.stream,n.contents={}):Ae.isFile(n.mode)?(n.node_ops=Me.ops_table.file.node,n.stream_ops=Me.ops_table.file.stream,n.usedBytes=0,n.contents=null):Ae.isLink(n.mode)?(n.node_ops=Me.ops_table.link.node,n.stream_ops=Me.ops_table.link.stream):Ae.isChrdev(n.mode)&&(n.node_ops=Me.ops_table.chrdev.node,n.stream_ops=Me.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(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 o=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(o.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(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:function(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:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Me.resizeFileStorage(e,t.size)},lookup:function(e,t){throw Ae.genericErrors[44]},mknod:function(e,t,r,o){return Me.createNode(e,t,r,o)},rename:function(e,t,r){if(Ae.isDir(e.mode)){var o;try{o=Ae.lookupNode(t,r)}catch(e){}if(o)for(var n in o.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:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=Ae.lookupNode(e,t);for(var o in r.contents)throw new Ae.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var o=Me.createNode(e,t,41471,0);return o.link=r,o},readlink:function(e){if(!Ae.isLink(e.mode))throw new Ae.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,o,n){var i=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,o);if(I(a>=0),a>8&&i.subarray)t.set(i.subarray(n,n+a),r);else for(var s=0;s<a;s++)t[r+s]=i[n+s];return a},write:function(e,t,r,o,n,i){if(I(!(t instanceof ArrayBuffer)),t.buffer===U.buffer&&(i=!1),!o)return 0;var a=e.node;if(a.timestamp=Date.now(),t.subarray&&(!a.contents||a.contents.subarray)){if(i)return I(0===n,"canOwn must imply no weird position inside the file"),a.contents=t.subarray(r,r+o),a.usedBytes=o,o;if(0===a.usedBytes&&0===n)return a.contents=t.slice(r,r+o),a.usedBytes=o,o;if(n+o<=a.usedBytes)return a.contents.set(t.subarray(r,r+o),n),o}if(Me.expandFileStorage(a,n+o),a.contents.subarray&&t.subarray)a.contents.set(t.subarray(r,r+o),n);else for(var s=0;s<o;s++)a.contents[n+s]=t[r+s];return a.usedBytes=Math.max(a.usedBytes,n+o),o},llseek:function(e,t,r){var o=t;if(1===r?o+=e.position:2===r&&Ae.isFile(e.node.mode)&&(o+=e.node.usedBytes),o<0)throw new Ae.ErrnoError(28);return o},allocate:function(e,t,r){Me.expandFileStorage(e.node,t+r),e.node.usedBytes=Math.max(e.node.usedBytes,t+r)},mmap:function(e,t,r,o,n,i){if(0!==t)throw new Ae.ErrnoError(28);if(!Ae.isFile(e.node.mode))throw new Ae.ErrnoError(43);var a,s,d=e.node.contents;if(2&i||d.buffer!==N){if((o>0||o+r<d.length)&&(d=d.subarray?d.subarray(o,o+r):Array.prototype.slice.call(d,o,o+r)),s=!0,!(a=void Ee("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")))throw new Ae.ErrnoError(48);U.set(d,a)}else s=!1,a=d.byteOffset;return{ptr:a,allocated:s}},msync:function(e,t,r,o,n){if(!Ae.isFile(e.node.mode))throw new Ae.ErrnoError(43);return 2&n||Me.stream_ops.write(e,t,0,o,r,!1),0}}},Re={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"},Se={},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=ve.resolve(Ae.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var o in r)void 0===t[o]&&(t[o]=r[o]);if(t.recurse_count>8)throw new Ae.ErrnoError(32);for(var n=be.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=Ae.root,a="/",s=0;s<n.length;s++){var d=s===n.length-1;if(d&&t.parent)break;if(i=Ae.lookupNode(i,n[s]),a=be.join2(a,n[s]),Ae.isMountpoint(i)&&(!d||d&&t.follow_mount)&&(i=i.mounted.root),!d||t.follow)for(var c=0;Ae.isLink(i.mode);){var l=Ae.readlink(a);if(a=ve.resolve(be.dirname(a),l),i=Ae.lookupPath(a,{recurse_count:t.recurse_count}).node,c++>40)throw new Ae.ErrnoError(32)}}return{path:a,node:i}},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,o=0;o<t.length;o++)r=(r<<5)-r+t.charCodeAt(o)|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 o=Ae.hashName(e.id,t),n=Ae.nameTable[o];n;n=n.name_next){var i=n.name;if(n.parent.id===e.id&&i===t)return n}return Ae.lookup(e,t)},createNode:(e,t,r,o)=>{I("object"==typeof e);var n=new Ae.FSNode(e,t,r,o);return Ae.hashAddNode(n),n},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),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=Ae.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},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{return Ae.lookupNode(e,t),20}catch(e){}return Ae.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var o;try{o=Ae.lookupNode(e,t)}catch(e){return e.errno}var n=Ae.nodePermissions(e,"wx");if(n)return n;if(r){if(!Ae.isDir(o.mode))return 54;if(Ae.isRoot(o)||Ae.getPath(o)===Ae.cwd())return 10}else if(Ae.isDir(o.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:(e=0,t=Ae.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!Ae.streams[r])return r;throw new Ae.ErrnoError(33)},getStream:e=>Ae.streams[e],createStream:(e,t,r)=>{Ae.FSStream||(Ae.FSStream=function(){},Ae.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}),e=Object.assign(new Ae.FSStream,e);var o=Ae.nextfd(t,r);return e.fd=o,Ae.streams[o]=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 o=r.pop();t.push(o),r.push.apply(r,o.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),Ae.syncFSRequests++,Ae.syncFSRequests>1&&y("warning: "+Ae.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Ae.getMounts(Ae.root.mount),o=0;function n(e){return I(Ae.syncFSRequests>0),Ae.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,n(e));++o>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:(e,t,r)=>{if("string"==typeof e)throw e;var o,n="/"===r,i=!r;if(n&&Ae.root)throw new Ae.ErrnoError(10);if(!n&&!i){var a=Ae.lookupPath(r,{follow_mount:!1});if(r=a.path,o=a.node,Ae.isMountpoint(o))throw new Ae.ErrnoError(10);if(!Ae.isDir(o.mode))throw new Ae.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(s);return d.mount=s,s.root=d,n?Ae.root=d:o&&(o.mounted=s,o.mount&&o.mount.mounts.push(s)),d},unmount:e=>{var t=Ae.lookupPath(e,{follow_mount:!1});if(!Ae.isMountpoint(t.node))throw new Ae.ErrnoError(28);var r=t.node,o=r.mounted,n=Ae.getMounts(o);Object.keys(Ae.nameTable).forEach((e=>{for(var t=Ae.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Ae.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(o);I(-1!==i),r.mount.mounts.splice(i,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var o=Ae.lookupPath(e,{parent:!0}).node,n=be.basename(e);if(!n||"."===n||".."===n)throw new Ae.ErrnoError(28);var i=Ae.mayCreate(o,n);if(i)throw new Ae.ErrnoError(i);if(!o.node_ops.mknod)throw new Ae.ErrnoError(63);return o.node_ops.mknod(o,n,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("/"),o="",n=0;n<r.length;++n)if(r[n]){o+="/"+r[n];try{Ae.mkdir(o,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(!ve.resolve(e))throw new Ae.ErrnoError(44);var r=Ae.lookupPath(t,{parent:!0}).node;if(!r)throw new Ae.ErrnoError(44);var o=be.basename(t),n=Ae.mayCreate(r,o);if(n)throw new Ae.ErrnoError(n);if(!r.node_ops.symlink)throw new Ae.ErrnoError(63);return r.node_ops.symlink(r,o,e)},rename:(e,t)=>{var r,o,n=be.dirname(e),i=be.dirname(t),a=be.basename(e),s=be.basename(t);if(r=Ae.lookupPath(e,{parent:!0}).node,o=Ae.lookupPath(t,{parent:!0}).node,!r||!o)throw new Ae.ErrnoError(44);if(r.mount!==o.mount)throw new Ae.ErrnoError(75);var d,c=Ae.lookupNode(r,a),l=ve.relative(e,i);if("."!==l.charAt(0))throw new Ae.ErrnoError(28);if("."!==(l=ve.relative(t,n)).charAt(0))throw new Ae.ErrnoError(55);try{d=Ae.lookupNode(o,s)}catch(e){}if(c!==d){var p=Ae.isDir(c.mode),E=Ae.mayDelete(r,a,p);if(E)throw new Ae.ErrnoError(E);if(E=d?Ae.mayDelete(o,s,p):Ae.mayCreate(o,s))throw new Ae.ErrnoError(E);if(!r.node_ops.rename)throw new Ae.ErrnoError(63);if(Ae.isMountpoint(c)||d&&Ae.isMountpoint(d))throw new Ae.ErrnoError(10);if(o!==r&&(E=Ae.nodePermissions(r,"w")))throw new Ae.ErrnoError(E);Ae.hashRemoveNode(c);try{r.node_ops.rename(c,o,s)}catch(e){throw e}finally{Ae.hashAddNode(c)}}},rmdir:e=>{var t=Ae.lookupPath(e,{parent:!0}).node,r=be.basename(e),o=Ae.lookupNode(t,r),n=Ae.mayDelete(t,r,!0);if(n)throw new Ae.ErrnoError(n);if(!t.node_ops.rmdir)throw new Ae.ErrnoError(63);if(Ae.isMountpoint(o))throw new Ae.ErrnoError(10);t.node_ops.rmdir(t,r),Ae.destroyNode(o)},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=be.basename(e),o=Ae.lookupNode(t,r),n=Ae.mayDelete(t,r,!1);if(n)throw new Ae.ErrnoError(n);if(!t.node_ops.unlink)throw new Ae.ErrnoError(63);if(Ae.isMountpoint(o))throw new Ae.ErrnoError(10);t.node_ops.unlink(t,r),Ae.destroyNode(o)},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 ve.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 o;if(!(o="string"==typeof e?Ae.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Ae.ErrnoError(63);o.node_ops.setattr(o,{mode:4095&t|-4096&o.mode,timestamp:Date.now()})},lchmod:(e,t)=>{Ae.chmod(e,t,!0)},fchmod:(e,t)=>{var r=Ae.getStream(e);if(!r)throw new Ae.ErrnoError(8);Ae.chmod(r.node,t)},chown:(e,t,r,o)=>{var n;if(!(n="string"==typeof e?Ae.lookupPath(e,{follow:!o}).node:e).node_ops.setattr)throw new Ae.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{Ae.chown(e,t,r,!0)},fchown:(e,t,r)=>{var o=Ae.getStream(e);if(!o)throw new Ae.ErrnoError(8);Ae.chown(o.node,t,r)},truncate:(e,t)=>{if(t<0)throw new Ae.ErrnoError(28);var r;if(!(r="string"==typeof e?Ae.lookupPath(e,{follow:!0}).node:e).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 o=Ae.nodePermissions(r,"w");if(o)throw new Ae.ErrnoError(o);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=Ae.getStream(e);if(!r)throw new Ae.ErrnoError(8);if(!(2097155&r.flags))throw new Ae.ErrnoError(28);Ae.truncate(r.node,t)},utime:(e,t,r)=>{var o=Ae.lookupPath(e,{follow:!0}).node;o.node_ops.setattr(o,{timestamp:Math.max(t,r)})},open:(e,t,r,o,n)=>{if(""===e)throw new Ae.ErrnoError(44);var a;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Ae.modeStringToFlags(t):t)?4095&r|32768:0,"object"==typeof e)a=e;else{e=be.normalize(e);try{a=Ae.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(a){if(128&t)throw new Ae.ErrnoError(20)}else a=Ae.mknod(e,r,0),s=!0;if(!a)throw new Ae.ErrnoError(44);if(Ae.isChrdev(a.mode)&&(t&=-513),65536&t&&!Ae.isDir(a.mode))throw new Ae.ErrnoError(54);if(!s){var d=Ae.mayOpen(a,t);if(d)throw new Ae.ErrnoError(d)}512&t&&Ae.truncate(a,0),t&=-131713;var c=Ae.createStream({node:a,path:Ae.getPath(a),flags:t,seekable:!0,position:0,stream_ops:a.stream_ops,ungotten:[],error:!1},o,n);return c.stream_ops.open&&c.stream_ops.open(c),!i.logReadFiles||1&t||(Ae.readFiles||(Ae.readFiles={}),e in Ae.readFiles||(Ae.readFiles[e]=1)),c},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,o,n)=>{if(o<0||n<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!==n;if(i){if(!e.seekable)throw new Ae.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,o,n);return i||(e.position+=a),a},write:(e,t,r,o,n,i)=>{if(o<0||n<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 a=void 0!==n;if(a){if(!e.seekable)throw new Ae.ErrnoError(70)}else n=e.position;var s=e.stream_ops.write(e,t,r,o,n,i);return a||(e.position+=s),s},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,o,n,i)=>{if(2&n&&!(2&i)&&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,o,n,i)},msync:(e,t,r,o,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,o,n):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,o=Ae.open(e,t.flags),n=Ae.stat(e).size,i=new Uint8Array(n);return Ae.read(o,i,0,n,0),"utf8"===t.encoding?r=B(i,0):"binary"===t.encoding&&(r=i),Ae.close(o),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var o=Ae.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(K(t)+1),i=z(t,n,0,n.length);Ae.write(o,n,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Ae.write(o,t,0,t.byteLength,void 0,r.canOwn)}Ae.close(o)},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,o,n)=>o}),Ae.mkdev("/dev/null",Ae.makedev(1,3)),Pe.register(Ae.makedev(5,0),Pe.default_tty_ops),Pe.register(Ae.makedev(6,0),Pe.default_tty1_ops),Ae.mkdev("/dev/tty",Ae.makedev(5,0)),Ae.mkdev("/dev/tty1",Ae.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(l)try{var t=r(349);return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){Ee("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();Ae.createDevice("/dev","random",e),Ae.createDevice("/dev","urandom",e),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,o=Ae.getStream(r);if(!o)throw new Ae.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>o.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{i.stdin?Ae.createDevice("/dev","stdin",i.stdin):Ae.symlink("/dev/tty","/dev/stdin"),i.stdout?Ae.createDevice("/dev","stdout",null,i.stdout):Ae.symlink("/dev/tty","/dev/stdout"),i.stderr?Ae.createDevice("/dev","stderr",null,i.stderr):Ae.symlink("/dev/tty1","/dev/stderr");var e=Ae.open("/dev/stdin",0),t=Ae.open("/dev/stdout",1),r=Ae.open("/dev/stderr",1);I(0===e.fd,"invalid handle for stdin ("+e.fd+")"),I(1===t.fd,"invalid handle for stdout ("+t.fd+")"),I(2===r.fd,"invalid handle for stderr ("+r.fd+")")},ensureErrnoError:()=>{Ae.ErrnoError||(Ae.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){for(var t in this.errno=e,Se)if(Se[t]===e){this.code=t;break}},this.setErrno(e),this.message=Re[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=ye(this.stack))},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(Me,{},"/"),Ae.createDefaultDirectories(),Ae.createDefaultDevices(),Ae.createSpecialDirectories(),Ae.filesystems={MEMFS:Me}},init:(e,t,r)=>{I(!Ae.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ae.init.initialized=!0,Ae.ensureErrnoError(),i.stdin=e||i.stdin,i.stdout=t||i.stdout,i.stderr=r||i.stderr,Ae.createStandardStreams()},quit:()=>{Ae.init.initialized=!1,He();for(var e=0;e<Ae.streams.length;e++){var t=Ae.streams[e];t&&Ae.close(t)}},getMode:(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=Ae.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(o=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 o=Ae.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=o.path,r.parentObject=o.node,r.name=be.basename(e),o=Ae.lookupPath(e,{follow:!t}),r.exists=!0,r.path=o.path,r.object=o.node,r.name=o.node.name,r.isRoot="/"===o.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,o)=>{e="string"==typeof e?e:Ae.getPath(e);for(var n=t.split("/").reverse();n.length;){var i=n.pop();if(i){var a=be.join2(e,i);try{Ae.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,o,n)=>{var i=be.join2("string"==typeof e?e:Ae.getPath(e),t),a=Ae.getMode(o,n);return Ae.create(i,a)},createDataFile:(e,t,r,o,n,i)=>{var a=t;e&&(e="string"==typeof e?e:Ae.getPath(e),a=t?be.join2(e,t):e);var s=Ae.getMode(o,n),d=Ae.create(a,s);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,p=r.length;l<p;++l)c[l]=r.charCodeAt(l);r=c}Ae.chmod(d,146|s);var E=Ae.open(d,577);Ae.write(E,r,0,r.length,0,i),Ae.close(E),Ae.chmod(d,s)}return d},createDevice:(e,t,r,o)=>{var n=be.join2("string"==typeof e?e:Ae.getPath(e),t),i=Ae.getMode(!!r,!!o);Ae.createDevice.major||(Ae.createDevice.major=64);var a=Ae.makedev(Ae.createDevice.major++,0);return Ae.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{o&&o.buffer&&o.buffer.length&&o(10)},read:(e,t,o,n,i)=>{for(var a=0,s=0;s<n;s++){var d;try{d=r()}catch(e){throw new Ae.ErrnoError(29)}if(void 0===d&&0===a)throw new Ae.ErrnoError(6);if(null==d)break;a++,t[o+s]=d}return a&&(e.node.timestamp=Date.now()),a},write:(e,t,r,n,i)=>{for(var a=0;a<n;a++)try{o(t[r+a])}catch(e){throw new Ae.ErrnoError(29)}return n&&(e.node.timestamp=Date.now()),a}}),Ae.mkdev(n,i,a)},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(!E)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=je(E(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Ae.ErrnoError(29)}},createLazyFile:(e,t,r,o,n)=>{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,o=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=o);var s=this;s.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,o-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>o-1)throw new Error("only "+o+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),o!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):je(n.responseText||"",!0)})(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&o||(a=o=1,o=this.getter(0).length,a=o,T("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=o,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!c)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:r};var d=Ae.createFile(e,t,s,o,n);s.contents?d.contents=s.contents:s.url&&(d.contents=null,d.url=s.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};return Object.keys(d.stream_ops).forEach((e=>{var t=d.stream_ops[e];l[e]=function(){return Ae.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,o,n)=>{Ae.forceLoadFile(d);var i=e.node.contents;if(n>=i.length)return 0;var a=Math.min(i.length-n,o);if(I(a>=0),i.slice)for(var s=0;s<a;s++)t[r+s]=i[n+s];else for(s=0;s<a;s++)t[r+s]=i.get(n+s);return a},d.stream_ops=l,d},createPreloadedFile:(e,t,r,o,n,i,a,s,d,c)=>{var l=t?ve.resolve(be.join2(e,t)):e,p=ce("cp "+l);function E(r){function E(r){c&&c(),s||Ae.createDataFile(e,t,r,o,n,d),i&&i(),pe(p)}Browser.handledByPreloadPlugin(r,l,E,(()=>{a&&a(),pe(p)}))||E(r)}le(p),"string"==typeof r?function(e,t,r,o){var n=o?"":ce("al "+e);u(e,(function(r){I(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&pe(n)}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&le(n)}(r,(e=>E(e)),a):E(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var o=Ae.indexedDB();try{var n=o.open(Ae.DB_NAME(),Ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{T("creating db"),n.result.createObjectStore(Ae.DB_STORE_NAME)},n.onsuccess=()=>{var o=n.result.transaction([Ae.DB_STORE_NAME],"readwrite"),i=o.objectStore(Ae.DB_STORE_NAME),a=0,s=0,d=e.length;function c(){0==s?t():r()}e.forEach((e=>{var t=i.put(Ae.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+s==d&&c()},t.onerror=()=>{s++,a+s==d&&c()}})),o.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var o=Ae.indexedDB();try{var n=o.open(Ae.DB_NAME(),Ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var o=n.result;try{var i=o.transaction([Ae.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=i.objectStore(Ae.DB_STORE_NAME),s=0,d=0,c=e.length;function l(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{Ae.analyzePath(e).exists&&Ae.unlink(e),Ae.createDataFile(be.dirname(e),be.basename(e),t.result,!0,!0,!0),++s+d==c&&l()},t.onerror=()=>{d++,s+d==c&&l()}})),i.onerror=r},n.onerror=r},absolutePath:()=>{Ee("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{Ee("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{Ee("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{Ee("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{Ee("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{Ee("FS.standardizePath has been removed; use PATH.normalize instead")}},Fe={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if("/"===t[0])return t;var o;if(-100===e)o=Ae.cwd();else{var n=Ae.getStream(e);if(!n)throw new Ae.ErrnoError(8);o=n.path}if(0==t.length){if(!r)throw new Ae.ErrnoError(44);return o}return be.join2(o,t)},doStat:function(e,t,r){try{var o=e(t)}catch(e){if(e&&e.node&&be.normalize(t)!==be.normalize(Ae.getPath(e.node)))return-54;throw e}return M(0|r,0|o.dev,4),M(r+4|0,0,4),M(r+8|0,0|o.ino,4),M(r+12|0,0|o.mode,4),M(r+16|0,0|o.nlink,4),M(r+20|0,0|o.uid,4),M(r+24|0,0|o.gid,4),M(r+28|0,0|o.rdev,4),M(r+32|0,0,4),M(r+40|0,0|o.size,8),M(r+48|0,4096,4),M(r+52|0,0|o.blocks,4),M(r+56|0,o.atime.getTime()/1e3|0,4),M(r+60|0,0,4),M(r+64|0,o.mtime.getTime()/1e3|0,4),M(r+68|0,0,4),M(r+72|0,o.ctime.getTime()/1e3|0,4),M(r+76|0,0,4),M(r+80|0,0|o.ino,8),0},doMsync:function(e,t,r,o,n){var i=j.slice(e,e+r);Ae.msync(t,i,n,r,o)},doMkdir:function(e,t){return"/"===(e=be.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),Ae.mkdir(e,t,0),0},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ae.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var o=Ae.readlink(e),n=Math.min(r,K(o)),i=S(t+n,1,0);return W(o,t,r+1),M(t+n,i,1),n},doAccess:function(e,t){if(-8&t)return-28;var r=Ae.lookupPath(e,{follow:!0}).node;if(!r)return-44;var o="";return 4&t&&(o+="r"),2&t&&(o+="w"),1&t&&(o+="x"),o&&Ae.nodePermissions(r,o)?-2:0},doDup:function(e,t,r){var o=Ae.getStream(r);return o&&Ae.close(o),Ae.open(e,t,0,r,r).fd},doReadv:function(e,t,r,o){for(var n=0,i=0;i<r;i++){var a=0|S(t+8*i|0,4,0),s=0|S(t+(8*i+4)|0,4,0),d=Ae.read(e,U,a,s,o);if(d<0)return-1;if(n+=d,d<s)break}return n},doWritev:function(e,t,r,o){for(var n=0,i=0;i<r;i++){var a=0|S(t+8*i|0,4,0),s=0|S(t+(8*i+4)|0,4,0),d=Ae.write(e,U,a,s,o);if(d<0)return-1;n+=d}return n},varargs:void 0,get:function(){return I(null!=Fe.varargs),Fe.varargs+=4,0|S(Fe.varargs-4|0,4,0)},getStr:function(e){return Y(e)},getStreamFromFD:function(e){var t=Ae.getStream(e);if(!t)throw new Ae.ErrnoError(8);return t},get64:function(e,t){return I(e>=0?0===t:-1===t),e}};function Ie(e){try{return D.grow(e-N.byteLength+65535>>>16),V(D.buffer),1}catch(t){y("emscripten_realloc_buffer: Attempted to grow heap from "+N.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}var ke=function(e,t,r,o){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ae.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=o},Ne=365,Ue=146;function je(e,t,r){var o=r>0?r:K(e)+1,n=new Array(o),i=z(e,n,0,n.length);return t&&(n.length=i),n}Object.defineProperties(ke.prototype,{read:{get:function(){return(this.mode&Ne)===Ne},set:function(e){e?this.mode|=Ne:this.mode&=-366}},write:{get:function(){return(this.mode&Ue)===Ue},set:function(e){e?this.mode|=Ue:this.mode&=-147}},isFolder:{get:function(){return Ae.isDir(this.mode)}},isDevice:{get:function(){return Ae.isChrdev(this.mode)}}}),Ae.FSNode=ke,Ae.staticInit(),Se={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var xe,Ce={__assert_fail:function(e,t,r,o){Ee("Assertion failed: "+Y(e)+", at: "+[t?Y(t):"unknown filename",r,o?Y(o):"unknown function"])},__syscall_open:function(e,t,r){Fe.varargs=r;try{var o=Fe.getStr(e),n=r?Fe.get():0;return Ae.open(o,t,n).fd}catch(e){if(void 0===Ae||!(e instanceof Ae.ErrnoError))throw e;return-e.errno}},alignfault:function(){Ee("alignment fault")},emscripten_memcpy_big:function(e,t,r){j.copyWithin(e,t,t+r)},emscripten_resize_heap:function(e){var t=j.length;I((e>>>=0)>t);var r,o,n=2147483648;if(e>n)return y("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+n+" bytes!"),!1;for(var i=1;i<=4;i*=2){var a=t*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(n,((r=Math.max(e,a))%(o=65536)>0&&(r+=o-r%o),r));if(Ie(s))return!0}return y("Failed to grow the heap from "+t+" bytes to "+s+" bytes, not enough memory!"),!1},fd_read:function(e,t,r,o){try{var n=Fe.getStreamFromFD(e);return M(0|o,0|Fe.doReadv(n,t,r),4),0}catch(e){if(void 0===Ae||!(e instanceof Ae.ErrnoError))throw e;return e.errno}},fd_write:function(e,t,r,o){try{var n=Fe.getStreamFromFD(e);return M(0|o,0|Fe.doWritev(n,t,r),4),0}catch(e){if(void 0===Ae||!(e instanceof Ae.ErrnoError))throw e;return e.errno}},segfault:function(){Ee("segmentation fault")}},He=(function(){var e={env:Ce,wasi_snapshot_preview1:Ce};function t(e,t){var r,o=e.exports;i.asm=o,I(D=i.asm.memory,"memory not found in wasm exports"),V(D.buffer),I(q=i.asm.__indirect_function_table,"table not found in wasm exports"),r=i.asm.__wasm_call_ctors,te.unshift(r),pe("wasm-instantiate")}le("wasm-instantiate");var r=i;function o(e){I(i===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(e.instance)}function a(t){return function(){if(!w&&(d||c)){if("function"==typeof fetch&&!me(ue))return fetch(ue,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ue+"'";return e.arrayBuffer()})).catch((function(){return we(ue)}));if(u)return new Promise((function(e,t){u(ue,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return we(ue)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){y("failed to asynchronously prepare wasm: "+e),me(ue)&&y("warning: Loading from a file URI ("+ue+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),Ee(e)}))}if(i.instantiateWasm)try{return i.instantiateWasm(e,t)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(w||"function"!=typeof WebAssembly.instantiateStreaming||Oe(ue)||me(ue)||"function"!=typeof fetch?a(o):fetch(ue,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(o,(function(e){return y("wasm streaming compile failed: "+e),y("falling back to ArrayBuffer instantiation"),a(o)}))}))).catch(n)}(),i.___wasm_call_ctors=ge("__wasm_call_ctors"),i._dilithium_keygen=ge("dilithium_keygen"),i._malloc=ge("malloc"),i._free=ge("free"),i._dilithium_sign=ge("dilithium_sign"),i._dilithium_verify=ge("dilithium_verify"),i._SHA3_256=ge("SHA3_256"),i._randombytes=ge("randombytes"),i.___errno_location=ge("__errno_location"),i.___stdio_exit=ge("__stdio_exit")),Le=i._sbrk=ge("sbrk"),Xe=(i._emscripten_get_sbrk_ptr=ge("emscripten_get_sbrk_ptr"),i._emscripten_stack_init=function(){return(Xe=i._emscripten_stack_init=i.asm.emscripten_stack_init).apply(null,arguments)}),Qe=(i._emscripten_stack_get_free=function(){return(i._emscripten_stack_get_free=i.asm.emscripten_stack_get_free).apply(null,arguments)},i._emscripten_stack_get_base=function(){return(Qe=i._emscripten_stack_get_base=i.asm.emscripten_stack_get_base).apply(null,arguments)}),Be=i._emscripten_stack_get_end=function(){return(Be=i._emscripten_stack_get_end=i.asm.emscripten_stack_get_end).apply(null,arguments)},Ye=i.stackSave=ge("stackSave"),ze=i.stackRestore=ge("stackRestore"),We=i.stackAlloc=ge("stackAlloc");function Ke(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ve(e){function r(){xe||(xe=!0,i.calledRun=!0,F||($(),I(!oe),oe=!0,i.noFSInit||Ae.init.initialized||Ae.init(),Ae.ignorePermissions=!1,Pe.init(),Te(te),t(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),I(!i._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if($(),i.postRun)for("function"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)e=i.postRun.shift(),re.unshift(e);var e;Te(re)}()))}e=e||s,ie>0||(Xe(),J(),function(){if(i.preRun)for("function"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)e=i.preRun.shift(),ee.unshift(e);var e;Te(ee)}(),ie>0||(i.setStatus?(i.setStatus("Running..."),setTimeout((function(){setTimeout((function(){i.setStatus("")}),1),r()}),1)):r(),$()))}if(Object.getOwnPropertyDescriptor(i,"intArrayFromString")||(i.intArrayFromString=()=>Ee("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"intArrayToString")||(i.intArrayToString=()=>Ee("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),i.ccall=k,i.cwrap=function(e,t,r,o){return function(){return k(e,t,r,arguments)}},i.setValue=b,i.getValue=v,Object.getOwnPropertyDescriptor(i,"allocate")||(i.allocate=()=>Ee("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF8ArrayToString")||(i.UTF8ArrayToString=()=>Ee("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF8ToString")||(i.UTF8ToString=()=>Ee("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF8Array")||(i.stringToUTF8Array=()=>Ee("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF8")||(i.stringToUTF8=()=>Ee("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"lengthBytesUTF8")||(i.lengthBytesUTF8=()=>Ee("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackTrace")||(i.stackTrace=()=>Ee("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnPreRun")||(i.addOnPreRun=()=>Ee("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnInit")||(i.addOnInit=()=>Ee("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnPreMain")||(i.addOnPreMain=()=>Ee("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnExit")||(i.addOnExit=()=>Ee("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnPostRun")||(i.addOnPostRun=()=>Ee("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeStringToMemory")||(i.writeStringToMemory=()=>Ee("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeArrayToMemory")||(i.writeArrayToMemory=()=>Ee("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeAsciiToMemory")||(i.writeAsciiToMemory=()=>Ee("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addRunDependency")||(i.addRunDependency=()=>Ee("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"removeRunDependency")||(i.removeRunDependency=()=>Ee("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createFolder")||(i.FS_createFolder=()=>Ee("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"FS_createPath")||(i.FS_createPath=()=>Ee("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createDataFile")||(i.FS_createDataFile=()=>Ee("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createPreloadedFile")||(i.FS_createPreloadedFile=()=>Ee("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createLazyFile")||(i.FS_createLazyFile=()=>Ee("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createLink")||(i.FS_createLink=()=>Ee("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"FS_createDevice")||(i.FS_createDevice=()=>Ee("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_unlink")||(i.FS_unlink=()=>Ee("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"getLEB")||(i.getLEB=()=>Ee("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getFunctionTables")||(i.getFunctionTables=()=>Ee("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"alignFunctionTables")||(i.alignFunctionTables=()=>Ee("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerFunctions")||(i.registerFunctions=()=>Ee("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addFunction")||(i.addFunction=()=>Ee("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"removeFunction")||(i.removeFunction=()=>Ee("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getFuncWrapper")||(i.getFuncWrapper=()=>Ee("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"prettyPrint")||(i.prettyPrint=()=>Ee("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"dynCall")||(i.dynCall=()=>Ee("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getCompilerSetting")||(i.getCompilerSetting=()=>Ee("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"print")||(i.print=()=>Ee("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"printErr")||(i.printErr=()=>Ee("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getTempRet0")||(i.getTempRet0=()=>Ee("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setTempRet0")||(i.setTempRet0=()=>Ee("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"callMain")||(i.callMain=()=>Ee("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"abort")||(i.abort=()=>Ee("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"keepRuntimeAlive")||(i.keepRuntimeAlive=()=>Ee("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"zeroMemory")||(i.zeroMemory=()=>Ee("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToNewUTF8")||(i.stringToNewUTF8=()=>Ee("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"emscripten_realloc_buffer")||(i.emscripten_realloc_buffer=()=>Ee("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"ENV")||(i.ENV=()=>Ee("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"withStackSave")||(i.withStackSave=()=>Ee("'withStackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"ERRNO_CODES")||(i.ERRNO_CODES=()=>Ee("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"ERRNO_MESSAGES")||(i.ERRNO_MESSAGES=()=>Ee("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setErrNo")||(i.setErrNo=()=>Ee("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetPton4")||(i.inetPton4=()=>Ee("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetNtop4")||(i.inetNtop4=()=>Ee("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetPton6")||(i.inetPton6=()=>Ee("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetNtop6")||(i.inetNtop6=()=>Ee("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readSockaddr")||(i.readSockaddr=()=>Ee("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeSockaddr")||(i.writeSockaddr=()=>Ee("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"DNS")||(i.DNS=()=>Ee("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getHostByName")||(i.getHostByName=()=>Ee("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"Protocols")||(i.Protocols=()=>Ee("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"Sockets")||(i.Sockets=()=>Ee("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getRandomDevice")||(i.getRandomDevice=()=>Ee("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"traverseStack")||(i.traverseStack=()=>Ee("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertFrameToPC")||(i.convertFrameToPC=()=>Ee("'convertFrameToPC' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UNWIND_CACHE")||(i.UNWIND_CACHE=()=>Ee("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"saveInUnwindCache")||(i.saveInUnwindCache=()=>Ee("'saveInUnwindCache' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertPCtoSourceLocation")||(i.convertPCtoSourceLocation=()=>Ee("'convertPCtoSourceLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readAsmConstArgsArray")||(i.readAsmConstArgsArray=()=>Ee("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readAsmConstArgs")||(i.readAsmConstArgs=()=>Ee("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"mainThreadEM_ASM")||(i.mainThreadEM_ASM=()=>Ee("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"jstoi_q")||(i.jstoi_q=()=>Ee("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"jstoi_s")||(i.jstoi_s=()=>Ee("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getExecutableName")||(i.getExecutableName=()=>Ee("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"listenOnce")||(i.listenOnce=()=>Ee("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"autoResumeAudioContext")||(i.autoResumeAudioContext=()=>Ee("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"dynCall")||(i.dynCall=()=>Ee("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"callRuntimeCallbacks")||(i.callRuntimeCallbacks=()=>Ee("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"wasmTableMirror")||(i.wasmTableMirror=()=>Ee("'wasmTableMirror' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setWasmTableEntry")||(i.setWasmTableEntry=()=>Ee("'setWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getWasmTableEntry")||(i.getWasmTableEntry=()=>Ee("'getWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"handleException")||(i.handleException=()=>Ee("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"runtimeKeepalivePush")||(i.runtimeKeepalivePush=()=>Ee("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"runtimeKeepalivePop")||(i.runtimeKeepalivePop=()=>Ee("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"callUserCallback")||(i.callUserCallback=()=>Ee("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"maybeExit")||(i.maybeExit=()=>Ee("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"safeSetTimeout")||(i.safeSetTimeout=()=>Ee("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"asmjsMangle")||(i.asmjsMangle=()=>Ee("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"asyncLoad")||(i.asyncLoad=()=>Ee("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"alignMemory")||(i.alignMemory=()=>Ee("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"mmapAlloc")||(i.mmapAlloc=()=>Ee("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"reallyNegative")||(i.reallyNegative=()=>Ee("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"unSign")||(i.unSign=()=>Ee("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"reSign")||(i.reSign=()=>Ee("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"formatString")||(i.formatString=()=>Ee("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"PATH")||(i.PATH=()=>Ee("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"PATH_FS")||(i.PATH_FS=()=>Ee("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"SYSCALLS")||(i.SYSCALLS=()=>Ee("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getSocketFromFD")||(i.getSocketFromFD=()=>Ee("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getSocketAddress")||(i.getSocketAddress=()=>Ee("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"JSEvents")||(i.JSEvents=()=>Ee("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerKeyEventCallback")||(i.registerKeyEventCallback=()=>Ee("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"specialHTMLTargets")||(i.specialHTMLTargets=()=>Ee("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"maybeCStringToJsString")||(i.maybeCStringToJsString=()=>Ee("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"findEventTarget")||(i.findEventTarget=()=>Ee("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"findCanvasEventTarget")||(i.findCanvasEventTarget=()=>Ee("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getBoundingClientRect")||(i.getBoundingClientRect=()=>Ee("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillMouseEventData")||(i.fillMouseEventData=()=>Ee("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerMouseEventCallback")||(i.registerMouseEventCallback=()=>Ee("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerWheelEventCallback")||(i.registerWheelEventCallback=()=>Ee("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerUiEventCallback")||(i.registerUiEventCallback=()=>Ee("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerFocusEventCallback")||(i.registerFocusEventCallback=()=>Ee("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillDeviceOrientationEventData")||(i.fillDeviceOrientationEventData=()=>Ee("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerDeviceOrientationEventCallback")||(i.registerDeviceOrientationEventCallback=()=>Ee("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillDeviceMotionEventData")||(i.fillDeviceMotionEventData=()=>Ee("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerDeviceMotionEventCallback")||(i.registerDeviceMotionEventCallback=()=>Ee("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"screenOrientation")||(i.screenOrientation=()=>Ee("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillOrientationChangeEventData")||(i.fillOrientationChangeEventData=()=>Ee("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerOrientationChangeEventCallback")||(i.registerOrientationChangeEventCallback=()=>Ee("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillFullscreenChangeEventData")||(i.fillFullscreenChangeEventData=()=>Ee("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerFullscreenChangeEventCallback")||(i.registerFullscreenChangeEventCallback=()=>Ee("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerRestoreOldStyle")||(i.registerRestoreOldStyle=()=>Ee("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"hideEverythingExceptGivenElement")||(i.hideEverythingExceptGivenElement=()=>Ee("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"restoreHiddenElements")||(i.restoreHiddenElements=()=>Ee("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setLetterbox")||(i.setLetterbox=()=>Ee("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"currentFullscreenStrategy")||(i.currentFullscreenStrategy=()=>Ee("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"restoreOldWindowedStyle")||(i.restoreOldWindowedStyle=()=>Ee("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"softFullscreenResizeWebGLRenderTarget")||(i.softFullscreenResizeWebGLRenderTarget=()=>Ee("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"doRequestFullscreen")||(i.doRequestFullscreen=()=>Ee("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillPointerlockChangeEventData")||(i.fillPointerlockChangeEventData=()=>Ee("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerPointerlockChangeEventCallback")||(i.registerPointerlockChangeEventCallback=()=>Ee("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerPointerlockErrorEventCallback")||(i.registerPointerlockErrorEventCallback=()=>Ee("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"requestPointerLock")||(i.requestPointerLock=()=>Ee("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillVisibilityChangeEventData")||(i.fillVisibilityChangeEventData=()=>Ee("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerVisibilityChangeEventCallback")||(i.registerVisibilityChangeEventCallback=()=>Ee("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerTouchEventCallback")||(i.registerTouchEventCallback=()=>Ee("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillGamepadEventData")||(i.fillGamepadEventData=()=>Ee("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerGamepadEventCallback")||(i.registerGamepadEventCallback=()=>Ee("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerBeforeUnloadEventCallback")||(i.registerBeforeUnloadEventCallback=()=>Ee("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillBatteryEventData")||(i.fillBatteryEventData=()=>Ee("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"battery")||(i.battery=()=>Ee("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerBatteryEventCallback")||(i.registerBatteryEventCallback=()=>Ee("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setCanvasElementSize")||(i.setCanvasElementSize=()=>Ee("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getCanvasElementSize")||(i.getCanvasElementSize=()=>Ee("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"demangle")||(i.demangle=()=>Ee("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"demangleAll")||(i.demangleAll=()=>Ee("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"jsStackTrace")||(i.jsStackTrace=()=>Ee("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackTrace")||(i.stackTrace=()=>Ee("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getEnvStrings")||(i.getEnvStrings=()=>Ee("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"checkWasiClock")||(i.checkWasiClock=()=>Ee("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToI64")||(i.writeI53ToI64=()=>Ee("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToI64Clamped")||(i.writeI53ToI64Clamped=()=>Ee("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToI64Signaling")||(i.writeI53ToI64Signaling=()=>Ee("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToU64Clamped")||(i.writeI53ToU64Clamped=()=>Ee("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToU64Signaling")||(i.writeI53ToU64Signaling=()=>Ee("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readI53FromI64")||(i.readI53FromI64=()=>Ee("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readI53FromU64")||(i.readI53FromU64=()=>Ee("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertI32PairToI53")||(i.convertI32PairToI53=()=>Ee("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertU32PairToI53")||(i.convertU32PairToI53=()=>Ee("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setImmediateWrapped")||(i.setImmediateWrapped=()=>Ee("'setImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"clearImmediateWrapped")||(i.clearImmediateWrapped=()=>Ee("'clearImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"polyfillSetImmediate")||(i.polyfillSetImmediate=()=>Ee("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"Browser")||(i.Browser=()=>Ee("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"funcWrappers")||(i.funcWrappers=()=>Ee("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getFuncWrapper")||(i.getFuncWrapper=()=>Ee("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setMainLoop")||(i.setMainLoop=()=>Ee("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"wget")||(i.wget=()=>Ee("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"FS")||(i.FS=()=>Ee("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"MEMFS")||(i.MEMFS=()=>Ee("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"TTY")||(i.TTY=()=>Ee("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"PIPEFS")||(i.PIPEFS=()=>Ee("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"SOCKFS")||(i.SOCKFS=()=>Ee("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"_setNetworkCallback")||(i._setNetworkCallback=()=>Ee("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"warnOnce")||(i.warnOnce=()=>Ee("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackSave")||(i.stackSave=()=>Ee("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackRestore")||(i.stackRestore=()=>Ee("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackAlloc")||(i.stackAlloc=()=>Ee("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"AsciiToString")||(i.AsciiToString=()=>Ee("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToAscii")||(i.stringToAscii=()=>Ee("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF16ToString")||(i.UTF16ToString=()=>Ee("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF16")||(i.stringToUTF16=()=>Ee("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"lengthBytesUTF16")||(i.lengthBytesUTF16=()=>Ee("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF32ToString")||(i.UTF32ToString=()=>Ee("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF32")||(i.stringToUTF32=()=>Ee("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"lengthBytesUTF32")||(i.lengthBytesUTF32=()=>Ee("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"allocateUTF8")||(i.allocateUTF8=()=>Ee("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"allocateUTF8OnStack")||(i.allocateUTF8OnStack=()=>Ee("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),i.writeStackCookie=J,i.checkStackCookie=$,Object.getOwnPropertyDescriptor(i,"ALLOC_NORMAL")||Object.defineProperty(i,"ALLOC_NORMAL",{configurable:!0,get:function(){Ee("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(i,"ALLOC_STACK")||Object.defineProperty(i,"ALLOC_STACK",{configurable:!0,get:function(){Ee("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),se=function e(){xe||Ve(),xe||(se=e)},i.run=Ve,i.preInit)for("function"==typeof i.preInit&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return Ve(),e.ready});e.exports=n},727:e=>{const t=[{CRYPTO_PUBLICKEYBYTES:896,CRYPTO_SECRETKEYBYTES:2096,CRYPTO_BYTES:1387},{CRYPTO_PUBLICKEYBYTES:1184,CRYPTO_SECRETKEYBYTES:2800,CRYPTO_BYTES:2044},{CRYPTO_PUBLICKEYBYTES:1472,CRYPTO_SECRETKEYBYTES:3504,CRYPTO_BYTES:2701},{CRYPTO_PUBLICKEYBYTES:1760,CRYPTO_SECRETKEYBYTES:3856,CRYPTO_BYTES:3366}];e.exports={DILITHIUM_PARAMS:t,generateKeys:function(e,r,o){if(r<0||r>3)return-1;const n=o?o.length:0,i=o?e._malloc(n):0;o&&e.HEAPU8.set(new Uint8Array(o),i);const a=t[r].CRYPTO_SECRETKEYBYTES,s=t[r].CRYPTO_PUBLICKEYBYTES,d=e._malloc(s),c=e._malloc(a),l=e.ccall("dilithium_keygen","number",["number","number","number","number","number"],[d,c,r,i,n]);let p,E;return 0===l&&(p=new Uint8Array(e.HEAPU8.subarray(d,d+s)),E=new Uint8Array(e.HEAPU8.subarray(c,c+a))),i&&e._free(i),e._free(d),e._free(c),{result:l,publicKey:p,privateKey:E}},sign:function(e,r,o,n){if(n<0||n>3)throw new Error("Invalid Dilithium kind");const i=t[n],a=i.CRYPTO_BYTES,s=r.length,d=e._malloc(s);e.HEAPU8.set(new Uint8Array(r),d);const c=o.length;if(c!==i.CRYPTO_SECRETKEYBYTES)throw new Error(`Invalid private key size. Expected: ${i.CRYPTO_SECRETKEYBYTES}, Provided: ${c}`);const l=e._malloc(c);e.HEAPU8.set(new Uint8Array(o),l);const p=a+s,E=e._malloc(p),u=e._malloc(4);e.setValue(u,p,"i32");const f=e.ccall("dilithium_sign","number",["number","number","number","number","number","number","number"],[E,u,d,s,l,c,n]),h=e.getValue(u,"i32"),O=new Uint8Array(e.HEAPU8.buffer,E,h),m=new Uint8Array(O);return e._free(d),e._free(l),e._free(E),e._free(u),{result:f,signature:m,signatureLength:h}},verify:function(e,r,o,n,i){console.log("inside verify for kind",i);const a=t[i],s=a.CRYPTO_BYTES+o.length,d=a.CRYPTO_PUBLICKEYBYTES;if(console.log("inside verify expectedPublicKeySize",d),r.length!==s)throw new Error(`Invalid signature size. Expected ${s}, got ${r.length}`);if(n.length!==d)throw new Error(`Invalid public key size. Expected ${d}, got ${n.length}`);const c=e._malloc(s),l=e._malloc(o.length),p=e._malloc(d);e.HEAPU8.set(new Uint8Array(r),c),e.HEAPU8.set(new Uint8Array(o),l),e.HEAPU8.set(new Uint8Array(n),p);try{return{result:e.ccall("dilithium_verify","number",["number","number","number","bigint","number","number","number"],[c,s,l,BigInt(o.length),p,d,i]),signatureLength:r.length,expectedSignatureSize:s,messageLength:o.length,publicKeyLength:n.length,expectedPublicKeySize:d,kind:i}}finally{e._free(c),e._free(l),e._free(p)}}}},349:()=>{},175:()=>{},507:()=>{}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.r(o),r.d(o,{createDilithium:()=>i});var e=r(944),t=r.n(e),n=r(727);const i=()=>async function(){console.log("fetching wasm from /node_modules/dilithium-js/dilithium.wasm");const e=await fetch("/node_modules/dilithium-js/dilithium.wasm");return await e.arrayBuffer()}().then((e=>t()({wasmBinary:e,locateFile:e=>e.endsWith(".wasm")?"/node_modules/dilithium-js/dilithium.wasm":e}))).then((e=>({generateKeys:(t,r)=>(0,n.generateKeys)(e,t,r),sign:(t,r,o)=>(0,n.sign)(e,t,r,o),verify:(t,r,o,i)=>(0,n.verify)(e,t,r,o,i),DILITHIUM_PARAMS:n.DILITHIUM_PARAMS})))})(),o})()));
|
1
|
+
var e={944:(e,t,r)=>{var o,n=(o=(o="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(e){var t,n,i=void 0!==(e=e||{})?e:{};i.ready=new Promise((function(e,r){t=e,n=r})),Object.getOwnPropertyDescriptor(i.ready,"_malloc")||(Object.defineProperty(i.ready,"_malloc",{configurable:!0,get:function(){Ee("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_malloc",{configurable:!0,set:function(){Ee("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_free")||(Object.defineProperty(i.ready,"_free",{configurable:!0,get:function(){Ee("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_free",{configurable:!0,set:function(){Ee("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_SHA3_256")||(Object.defineProperty(i.ready,"_SHA3_256",{configurable:!0,get:function(){Ee("You are getting _SHA3_256 on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_SHA3_256",{configurable:!0,set:function(){Ee("You are setting _SHA3_256 on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_randombytes")||(Object.defineProperty(i.ready,"_randombytes",{configurable:!0,get:function(){Ee("You are getting _randombytes on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_randombytes",{configurable:!0,set:function(){Ee("You are setting _randombytes on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_dilithium_keygen")||(Object.defineProperty(i.ready,"_dilithium_keygen",{configurable:!0,get:function(){Ee("You are getting _dilithium_keygen on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_dilithium_keygen",{configurable:!0,set:function(){Ee("You are setting _dilithium_keygen on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_dilithium_sign")||(Object.defineProperty(i.ready,"_dilithium_sign",{configurable:!0,get:function(){Ee("You are getting _dilithium_sign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_dilithium_sign",{configurable:!0,set:function(){Ee("You are setting _dilithium_sign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"_dilithium_verify")||(Object.defineProperty(i.ready,"_dilithium_verify",{configurable:!0,get:function(){Ee("You are getting _dilithium_verify on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"_dilithium_verify",{configurable:!0,set:function(){Ee("You are setting _dilithium_verify on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"___stdio_exit")||(Object.defineProperty(i.ready,"___stdio_exit",{configurable:!0,get:function(){Ee("You are getting ___stdio_exit on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"___stdio_exit",{configurable:!0,set:function(){Ee("You are setting ___stdio_exit on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(i.ready,"onRuntimeInitialized")||(Object.defineProperty(i.ready,"onRuntimeInitialized",{configurable:!0,get:function(){Ee("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(i.ready,"onRuntimeInitialized",{configurable:!0,set:function(){Ee("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var a=Object.assign({},i),s=[],d="object"==typeof window,c="function"==typeof importScripts,l="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,p=!d&&!l&&!c;if(i.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var E,u,f,h,O,m,g="";if(l){if("object"!=typeof process)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=c?r(507).dirname(g)+"/":"//",m=()=>{O||(h=r(175),O=r(507))},E=function(e,t){return m(),e=O.normalize(e),h.readFileSync(e,t?void 0:"utf8")},f=e=>{var t=E(e,!0);return t.buffer||(t=new Uint8Array(t)),I(t.buffer),t},u=(e,t,r)=>{m(),e=O.normalize(e),h.readFile(e,(function(e,o){e?r(e):t(o.buffer)}))},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),s=process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof Ke))throw e})),process.on("unhandledRejection",(function(e){throw e})),i.inspect=function(){return"[Emscripten Module object]"}}else if(p){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(E=function(e){return read(e)}),f=function(e){let t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(t=read(e,"binary"),I("object"==typeof t),t)},u=function(e,t,r){setTimeout((()=>t(f(e))),0)},"undefined"!=typeof scriptArgs?s=scriptArgs:void 0!==arguments&&(s=arguments),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!d&&!c)throw new Error("environment detection error");if(c?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),o&&(g=o),g=0!==g.indexOf("blob:")?g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");E=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(f=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),u=(e,t,r)=>{var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=()=>{200==o.status||0==o.status&&o.response?t(o.response):r()},o.onerror=r,o.send(null)}}var w,T=i.print||console.log.bind(console),y=i.printErr||console.warn.bind(console);function _(e){_.shown||(_.shown={}),_.shown[e]||(_.shown[e]=1,y(e))}Object.assign(i,a),a=null,i.arguments&&(s=i.arguments),Object.getOwnPropertyDescriptor(i,"arguments")||Object.defineProperty(i,"arguments",{configurable:!0,get:function(){Ee("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),i.thisProgram&&i.thisProgram,Object.getOwnPropertyDescriptor(i,"thisProgram")||Object.defineProperty(i,"thisProgram",{configurable:!0,get:function(){Ee("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),i.quit&&i.quit,Object.getOwnPropertyDescriptor(i,"quit")||Object.defineProperty(i,"quit",{configurable:!0,get:function(){Ee("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),I(void 0===i.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),I(void 0===i.read,"Module.read option was removed (modify read_ in JS)"),I(void 0===i.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),I(void 0===i.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),I(void 0===i.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),I(void 0===i.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(i,"read")||Object.defineProperty(i,"read",{configurable:!0,get:function(){Ee("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(i,"readAsync")||Object.defineProperty(i,"readAsync",{configurable:!0,get:function(){Ee("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(i,"readBinary")||Object.defineProperty(i,"readBinary",{configurable:!0,get:function(){Ee("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(i,"setWindowTitle")||Object.defineProperty(i,"setWindowTitle",{configurable:!0,get:function(){Ee("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),I(!p,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable."),i.wasmBinary&&(w=i.wasmBinary),Object.getOwnPropertyDescriptor(i,"wasmBinary")||Object.defineProperty(i,"wasmBinary",{configurable:!0,get:function(){Ee("Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}});var D;i.noExitRuntime;function b(e,t,r="i8",o){if("*"===r.charAt(r.length-1)&&(r="i32"),o)switch(r){case"i1":case"i8":U[0|e]=t;break;case"i16":x[e>>1]=t;break;case"i32":C[e>>2]=t;break;case"i64":L[e>>3]=BigInt(t);break;case"float":H[e>>2]=t;break;case"double":X[e>>3]=t;break;default:Ee("invalid type for setValue: "+r)}else switch(r){case"i1":case"i8":M(0|e,0|t,1);break;case"i16":M(0|e,0|t,2);break;case"i32":M(0|e,0|t,4);break;case"i64":M(0|e,0|t,8);break;case"float":R(0|e,Math.fround(t),4);break;case"double":R(0|e,+t,8);break;default:Ee("invalid type for setValue: "+r)}}function v(e,t="i8",r){if("*"===t.charAt(t.length-1)&&(t="i32"),r)switch(t){case"i1":case"i8":return U[0|e];case"i16":return x[e>>1];case"i32":return C[e>>2];case"i64":return Number(L[e>>3]);case"float":return H[e>>2];case"double":return Number(X[e>>3]);default:Ee("invalid type for getValue: "+t)}else switch(t){case"i1":case"i8":return 0|S(0|e,1,0);case"i16":return 0|S(0|e,2,0);case"i32":return 0|S(0|e,4,0);case"i64":return 0|S(0|e,8,0);case"float":return Math.fround(A(0|e,4,0));case"double":return+A(0|e,8,0);default:Ee("invalid type for getValue: "+t)}return null}function P(e,t){switch(e){case 1:return"i8";case 2:return"i16";case 4:return t?"float":"i32";case 8:return t?"double":"i64";default:I(0)}}function M(e,t,r,o){if(e<=0&&Ee("segmentation fault storing "+r+" bytes to address "+e),e%r!=0&&Ee("alignment error storing to address "+e+", which was expected to be aligned to a multiple of "+r),oe&&!ne){var n=Le()>>>0;e+r>n&&Ee("segmentation fault, exceeded the top of the available dynamic heap when storing "+r+" bytes to address "+e+". DYNAMICTOP="+n),I(n>=Qe()),I(n<=U.length)}return b(e,t,P(r,o),1),t}function R(e,t,r){return M(e,t,r,!0)}function S(e,t,r,o){if(e<=0&&Ee("segmentation fault loading "+t+" bytes from address "+e),e%t!=0&&Ee("alignment error loading from address "+e+", which was expected to be aligned to a multiple of "+t),oe&&!ne){var n=Le()>>>0;e+t>n&&Ee("segmentation fault, exceeded the top of the available dynamic heap when loading "+t+" bytes from address "+e+". DYNAMICTOP="+n),I(n>=Qe()),I(n<=U.length)}var i,a,s=P(t,o),d=v(e,s,1);return r&&(i=d,a=parseInt(s.substr(1),10),d=i>=0?i:a<=32?2*Math.abs(1<<a-1)+i:Math.pow(2,a)+i),d}function A(e,t,r){return S(e,t,r,!0)}Object.getOwnPropertyDescriptor(i,"noExitRuntime")||Object.defineProperty(i,"noExitRuntime",{configurable:!0,get:function(){Ee("Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),"object"!=typeof WebAssembly&&Ee("no native wasm support detected");var F=!1;function I(e,t){e||Ee("Assertion failed"+(t?": "+t:""))}function k(e,t,r,o,n){var a={string:function(e){var t=0;if(null!=e&&0!==e){var r=1+(e.length<<2);W(e,t=We(r),r)}return t},array:function(e){var t=We(e.length);return function(e,t){I(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),U.set(e,t)}(e,t),t}},s=function(e){var t=i["_"+e];return I(t,"Cannot call unknown function "+e+", make sure it is exported"),t}(e),d=[],c=0;if(I("array"!==t,'Return type should not be "array".'),o)for(var l=0;l<o.length;l++){var p=a[r[l]];p?(0===c&&(c=Ye()),d[l]=p(o[l])):d[l]=o[l]}var E=s.apply(null,d);return E=function(e){return 0!==c&&ze(c),function(e){return"string"===t?Y(e):"boolean"===t?Boolean(e):e}(e)}(E)}var N,U,j,x,C,H,L,X,Q="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function B(e,t,r){for(var o=t+r,n=t;e[n]&&!(n>=o);)++n;if(n-t>16&&e.subarray&&Q)return Q.decode(e.subarray(t,n));for(var i="";t<n;){var a=e[t++];if(128&a){var s=63&e[t++];if(192!=(224&a)){var d=63&e[t++];if(224==(240&a)?a=(15&a)<<12|s<<6|d:(240!=(248&a)&&_("Invalid UTF-8 leading byte 0x"+a.toString(16)+" encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),a=(7&a)<<18|s<<12|d<<6|63&e[t++]),a<65536)i+=String.fromCharCode(a);else{var c=a-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function Y(e,t){return e?B(j,e,t):""}function z(e,t,r,o){if(!(o>0))return 0;for(var n=r,i=r+o-1,a=0;a<e.length;++a){var s=e.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;s>1114111&&_("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function W(e,t,r){return I("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),z(e,j,t,r)}function K(e){for(var t=0,r=0;r<e.length;++r){var o=e.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++r)),o<=127?++t:t+=o<=2047?2:o<=65535?3:4}return t}function V(e){N=e,i.HEAP8=U=new Int8Array(e),i.HEAP16=x=new Int16Array(e),i.HEAP32=C=new Int32Array(e),i.HEAPU8=j=new Uint8Array(e),i.HEAPU16=new Uint16Array(e),i.HEAPU32=new Uint32Array(e),i.HEAPF32=H=new Float32Array(e),i.HEAPF64=X=new Float64Array(e),i.HEAP64=L=new BigInt64Array(e),i.HEAPU64=new BigUint64Array(e)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var G=5242880;i.TOTAL_STACK&&I(G===i.TOTAL_STACK,"the stack size can no longer be determined at runtime");var q,Z=i.INITIAL_MEMORY||16777216;function J(){var e=Be();I(!(3&e)),M(e+4|0,34821223,4),M(e+8|0,-1984246274,4)}function $(){if(!F){var e=Be(),t=S(e+4|0,4,1)>>>0,r=S(e+8|0,4,1)>>>0;34821223==t&&2310721022==r||Ee("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+r.toString(16)+" 0x"+t.toString(16))}}Object.getOwnPropertyDescriptor(i,"INITIAL_MEMORY")||Object.defineProperty(i,"INITIAL_MEMORY",{configurable:!0,get:function(){Ee("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),I(Z>=G,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+Z+"! (TOTAL_STACK="+G+")"),I("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),I(!i.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),I(16777216==Z,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"}();var ee=[],te=[],re=[],oe=!1,ne=!1;I(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),I(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),I(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),I(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var ie=0,ae=null,se=null,de={};function ce(e){for(var t=e;;){if(!de[e])return e;e=t+Math.random()}}function le(e){ie++,i.monitorRunDependencies&&i.monitorRunDependencies(ie),e?(I(!de[e]),de[e]=1,null===ae&&"undefined"!=typeof setInterval&&(ae=setInterval((function(){if(F)return clearInterval(ae),void(ae=null);var e=!1;for(var t in de)e||(e=!0,y("still waiting on run dependencies:")),y("dependency: "+t);e&&y("(end of list)")}),1e4))):y("warning: run dependency added without ID")}function pe(e){if(ie--,i.monitorRunDependencies&&i.monitorRunDependencies(ie),e?(I(de[e]),delete de[e]):y("warning: run dependency removed without ID"),0==ie&&(null!==ae&&(clearInterval(ae),ae=null),se)){var t=se;se=null,t()}}function Ee(e){i.onAbort&&i.onAbort(e),y(e="Aborted("+e+")"),F=!0;var t=new WebAssembly.RuntimeError(e);throw n(t),t}i.preloadedImages={},i.preloadedAudios={};var ue,fe,he="data:application/octet-stream;base64,";function Oe(e){return e.startsWith(he)}function me(e){return e.startsWith("file://")}function ge(e,t){return function(){var r=e,o=t;return t||(o=i.asm),I(oe,"native function `"+r+"` called before runtime initialization"),I(!ne,"native function `"+r+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),o[e]||I(o[e],"exported native function `"+r+"` not found"),o[e].apply(null,arguments)}}function we(e){try{if(e==ue&&w)return new Uint8Array(w);if(f)return f(e);throw"both async and sync fetching of the wasm failed"}catch(e){Ee(e)}}function Te(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?De(r)():De(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(i)}}function ye(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t,r=(t=e,_("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t);return e===r?e:r+" ["+e+"]"}))}Oe(ue="dilithium.wasm")||(fe=ue,ue=i.locateFile?i.locateFile(fe,g):g+fe);var _e=[];function De(e){var t=_e[e];return t||(e>=_e.length&&(_e.length=e+1),_e[e]=t=q.get(e)),I(q.get(e)==t,"JavaScript-side Wasm function table mirror is out of date!"),t}var be={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,o=e.length-1;o>=0;o--){var n=e[o];"."===n?e.splice(o,1):".."===n?(e.splice(o,1),r++):r&&(e.splice(o,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=be.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=be.splitPath(e),r=t[0],o=t[1];return r||o?(o&&(o=o.substr(0,o.length-1)),r+o):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=be.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},extname:function(e){return be.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return be.normalize(e.join("/"))},join2:function(e,t){return be.normalize(e+"/"+t)}},ve={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var o=r>=0?arguments[r]:Ae.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");if(!o)return"";e=o+"/"+e,t="/"===o.charAt(0)}return(t?"/":"")+(e=be.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(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=ve.resolve(e).substr(1),t=ve.resolve(t).substr(1);for(var o=r(e.split("/")),n=r(t.split("/")),i=Math.min(o.length,n.length),a=i,s=0;s<i;s++)if(o[s]!==n[s]){a=s;break}var d=[];for(s=a;s<o.length;s++)d.push("..");return(d=d.concat(n.slice(a))).join("/")}},Pe={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){Pe.ttys[e]={input:[],output:[],ops:t},Ae.registerDevice(e,Pe.stream_ops)},stream_ops:{open:function(e){var t=Pe.ttys[e.node.rdev];if(!t)throw new Ae.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,o,n){if(!e.tty||!e.tty.ops.get_char)throw new Ae.ErrnoError(60);for(var i=0,a=0;a<o;a++){var s;try{s=e.tty.ops.get_char(e.tty)}catch(e){throw new Ae.ErrnoError(29)}if(void 0===s&&0===i)throw new Ae.ErrnoError(6);if(null==s)break;i++,t[r+a]=s}return i&&(e.node.timestamp=Date.now()),i},write:function(e,t,r,o,n){if(!e.tty||!e.tty.ops.put_char)throw new Ae.ErrnoError(60);try{for(var i=0;i<o;i++)e.tty.ops.put_char(e.tty,t[r+i])}catch(e){throw new Ae.ErrnoError(29)}return o&&(e.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(e){if(!e.input.length){var t=null;if(l){var r=Buffer.alloc(256),o=0;try{o=h.readSync(process.stdin.fd,r,0,256,-1)}catch(e){if(!e.toString().includes("EOF"))throw e;o=0}t=o>0?r.slice(0,o).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=je(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(T(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(T(B(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(y(B(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(B(e.output,0)),e.output=[])}}},Me={ops_table:null,mount:function(e){return Me.createNode(null,"/",16895,0)},createNode:function(e,t,r,o){if(Ae.isBlkdev(r)||Ae.isFIFO(r))throw new Ae.ErrnoError(63);Me.ops_table||(Me.ops_table={dir:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,lookup:Me.node_ops.lookup,mknod:Me.node_ops.mknod,rename:Me.node_ops.rename,unlink:Me.node_ops.unlink,rmdir:Me.node_ops.rmdir,readdir:Me.node_ops.readdir,symlink:Me.node_ops.symlink},stream:{llseek:Me.stream_ops.llseek}},file:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:{llseek:Me.stream_ops.llseek,read:Me.stream_ops.read,write:Me.stream_ops.write,allocate:Me.stream_ops.allocate,mmap:Me.stream_ops.mmap,msync:Me.stream_ops.msync}},link:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,readlink:Me.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:Ae.chrdev_stream_ops}});var n=Ae.createNode(e,t,r,o);return Ae.isDir(n.mode)?(n.node_ops=Me.ops_table.dir.node,n.stream_ops=Me.ops_table.dir.stream,n.contents={}):Ae.isFile(n.mode)?(n.node_ops=Me.ops_table.file.node,n.stream_ops=Me.ops_table.file.stream,n.usedBytes=0,n.contents=null):Ae.isLink(n.mode)?(n.node_ops=Me.ops_table.link.node,n.stream_ops=Me.ops_table.link.stream):Ae.isChrdev(n.mode)&&(n.node_ops=Me.ops_table.chrdev.node,n.stream_ops=Me.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(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 o=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(o.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(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:function(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:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Me.resizeFileStorage(e,t.size)},lookup:function(e,t){throw Ae.genericErrors[44]},mknod:function(e,t,r,o){return Me.createNode(e,t,r,o)},rename:function(e,t,r){if(Ae.isDir(e.mode)){var o;try{o=Ae.lookupNode(t,r)}catch(e){}if(o)for(var n in o.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:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=Ae.lookupNode(e,t);for(var o in r.contents)throw new Ae.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var o=Me.createNode(e,t,41471,0);return o.link=r,o},readlink:function(e){if(!Ae.isLink(e.mode))throw new Ae.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,o,n){var i=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,o);if(I(a>=0),a>8&&i.subarray)t.set(i.subarray(n,n+a),r);else for(var s=0;s<a;s++)t[r+s]=i[n+s];return a},write:function(e,t,r,o,n,i){if(I(!(t instanceof ArrayBuffer)),t.buffer===U.buffer&&(i=!1),!o)return 0;var a=e.node;if(a.timestamp=Date.now(),t.subarray&&(!a.contents||a.contents.subarray)){if(i)return I(0===n,"canOwn must imply no weird position inside the file"),a.contents=t.subarray(r,r+o),a.usedBytes=o,o;if(0===a.usedBytes&&0===n)return a.contents=t.slice(r,r+o),a.usedBytes=o,o;if(n+o<=a.usedBytes)return a.contents.set(t.subarray(r,r+o),n),o}if(Me.expandFileStorage(a,n+o),a.contents.subarray&&t.subarray)a.contents.set(t.subarray(r,r+o),n);else for(var s=0;s<o;s++)a.contents[n+s]=t[r+s];return a.usedBytes=Math.max(a.usedBytes,n+o),o},llseek:function(e,t,r){var o=t;if(1===r?o+=e.position:2===r&&Ae.isFile(e.node.mode)&&(o+=e.node.usedBytes),o<0)throw new Ae.ErrnoError(28);return o},allocate:function(e,t,r){Me.expandFileStorage(e.node,t+r),e.node.usedBytes=Math.max(e.node.usedBytes,t+r)},mmap:function(e,t,r,o,n,i){if(0!==t)throw new Ae.ErrnoError(28);if(!Ae.isFile(e.node.mode))throw new Ae.ErrnoError(43);var a,s,d=e.node.contents;if(2&i||d.buffer!==N){if((o>0||o+r<d.length)&&(d=d.subarray?d.subarray(o,o+r):Array.prototype.slice.call(d,o,o+r)),s=!0,!(a=void Ee("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")))throw new Ae.ErrnoError(48);U.set(d,a)}else s=!1,a=d.byteOffset;return{ptr:a,allocated:s}},msync:function(e,t,r,o,n){if(!Ae.isFile(e.node.mode))throw new Ae.ErrnoError(43);return 2&n||Me.stream_ops.write(e,t,0,o,r,!1),0}}},Re={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"},Se={},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=ve.resolve(Ae.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var o in r)void 0===t[o]&&(t[o]=r[o]);if(t.recurse_count>8)throw new Ae.ErrnoError(32);for(var n=be.normalizeArray(e.split("/").filter((e=>!!e)),!1),i=Ae.root,a="/",s=0;s<n.length;s++){var d=s===n.length-1;if(d&&t.parent)break;if(i=Ae.lookupNode(i,n[s]),a=be.join2(a,n[s]),Ae.isMountpoint(i)&&(!d||d&&t.follow_mount)&&(i=i.mounted.root),!d||t.follow)for(var c=0;Ae.isLink(i.mode);){var l=Ae.readlink(a);if(a=ve.resolve(be.dirname(a),l),i=Ae.lookupPath(a,{recurse_count:t.recurse_count}).node,c++>40)throw new Ae.ErrnoError(32)}}return{path:a,node:i}},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,o=0;o<t.length;o++)r=(r<<5)-r+t.charCodeAt(o)|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 o=Ae.hashName(e.id,t),n=Ae.nameTable[o];n;n=n.name_next){var i=n.name;if(n.parent.id===e.id&&i===t)return n}return Ae.lookup(e,t)},createNode:(e,t,r,o)=>{I("object"==typeof e);var n=new Ae.FSNode(e,t,r,o);return Ae.hashAddNode(n),n},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),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=Ae.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},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{return Ae.lookupNode(e,t),20}catch(e){}return Ae.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var o;try{o=Ae.lookupNode(e,t)}catch(e){return e.errno}var n=Ae.nodePermissions(e,"wx");if(n)return n;if(r){if(!Ae.isDir(o.mode))return 54;if(Ae.isRoot(o)||Ae.getPath(o)===Ae.cwd())return 10}else if(Ae.isDir(o.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:(e=0,t=Ae.MAX_OPEN_FDS)=>{for(var r=e;r<=t;r++)if(!Ae.streams[r])return r;throw new Ae.ErrnoError(33)},getStream:e=>Ae.streams[e],createStream:(e,t,r)=>{Ae.FSStream||(Ae.FSStream=function(){},Ae.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}),e=Object.assign(new Ae.FSStream,e);var o=Ae.nextfd(t,r);return e.fd=o,Ae.streams[o]=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 o=r.pop();t.push(o),r.push.apply(r,o.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),Ae.syncFSRequests++,Ae.syncFSRequests>1&&y("warning: "+Ae.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Ae.getMounts(Ae.root.mount),o=0;function n(e){return I(Ae.syncFSRequests>0),Ae.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,n(e));++o>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return i(null);t.type.syncfs(t,e,i)}))},mount:(e,t,r)=>{if("string"==typeof e)throw e;var o,n="/"===r,i=!r;if(n&&Ae.root)throw new Ae.ErrnoError(10);if(!n&&!i){var a=Ae.lookupPath(r,{follow_mount:!1});if(r=a.path,o=a.node,Ae.isMountpoint(o))throw new Ae.ErrnoError(10);if(!Ae.isDir(o.mode))throw new Ae.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(s);return d.mount=s,s.root=d,n?Ae.root=d:o&&(o.mounted=s,o.mount&&o.mount.mounts.push(s)),d},unmount:e=>{var t=Ae.lookupPath(e,{follow_mount:!1});if(!Ae.isMountpoint(t.node))throw new Ae.ErrnoError(28);var r=t.node,o=r.mounted,n=Ae.getMounts(o);Object.keys(Ae.nameTable).forEach((e=>{for(var t=Ae.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Ae.destroyNode(t),t=r}})),r.mounted=null;var i=r.mount.mounts.indexOf(o);I(-1!==i),r.mount.mounts.splice(i,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var o=Ae.lookupPath(e,{parent:!0}).node,n=be.basename(e);if(!n||"."===n||".."===n)throw new Ae.ErrnoError(28);var i=Ae.mayCreate(o,n);if(i)throw new Ae.ErrnoError(i);if(!o.node_ops.mknod)throw new Ae.ErrnoError(63);return o.node_ops.mknod(o,n,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("/"),o="",n=0;n<r.length;++n)if(r[n]){o+="/"+r[n];try{Ae.mkdir(o,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(!ve.resolve(e))throw new Ae.ErrnoError(44);var r=Ae.lookupPath(t,{parent:!0}).node;if(!r)throw new Ae.ErrnoError(44);var o=be.basename(t),n=Ae.mayCreate(r,o);if(n)throw new Ae.ErrnoError(n);if(!r.node_ops.symlink)throw new Ae.ErrnoError(63);return r.node_ops.symlink(r,o,e)},rename:(e,t)=>{var r,o,n=be.dirname(e),i=be.dirname(t),a=be.basename(e),s=be.basename(t);if(r=Ae.lookupPath(e,{parent:!0}).node,o=Ae.lookupPath(t,{parent:!0}).node,!r||!o)throw new Ae.ErrnoError(44);if(r.mount!==o.mount)throw new Ae.ErrnoError(75);var d,c=Ae.lookupNode(r,a),l=ve.relative(e,i);if("."!==l.charAt(0))throw new Ae.ErrnoError(28);if("."!==(l=ve.relative(t,n)).charAt(0))throw new Ae.ErrnoError(55);try{d=Ae.lookupNode(o,s)}catch(e){}if(c!==d){var p=Ae.isDir(c.mode),E=Ae.mayDelete(r,a,p);if(E)throw new Ae.ErrnoError(E);if(E=d?Ae.mayDelete(o,s,p):Ae.mayCreate(o,s))throw new Ae.ErrnoError(E);if(!r.node_ops.rename)throw new Ae.ErrnoError(63);if(Ae.isMountpoint(c)||d&&Ae.isMountpoint(d))throw new Ae.ErrnoError(10);if(o!==r&&(E=Ae.nodePermissions(r,"w")))throw new Ae.ErrnoError(E);Ae.hashRemoveNode(c);try{r.node_ops.rename(c,o,s)}catch(e){throw e}finally{Ae.hashAddNode(c)}}},rmdir:e=>{var t=Ae.lookupPath(e,{parent:!0}).node,r=be.basename(e),o=Ae.lookupNode(t,r),n=Ae.mayDelete(t,r,!0);if(n)throw new Ae.ErrnoError(n);if(!t.node_ops.rmdir)throw new Ae.ErrnoError(63);if(Ae.isMountpoint(o))throw new Ae.ErrnoError(10);t.node_ops.rmdir(t,r),Ae.destroyNode(o)},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=be.basename(e),o=Ae.lookupNode(t,r),n=Ae.mayDelete(t,r,!1);if(n)throw new Ae.ErrnoError(n);if(!t.node_ops.unlink)throw new Ae.ErrnoError(63);if(Ae.isMountpoint(o))throw new Ae.ErrnoError(10);t.node_ops.unlink(t,r),Ae.destroyNode(o)},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 ve.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 o;if(!(o="string"==typeof e?Ae.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Ae.ErrnoError(63);o.node_ops.setattr(o,{mode:4095&t|-4096&o.mode,timestamp:Date.now()})},lchmod:(e,t)=>{Ae.chmod(e,t,!0)},fchmod:(e,t)=>{var r=Ae.getStream(e);if(!r)throw new Ae.ErrnoError(8);Ae.chmod(r.node,t)},chown:(e,t,r,o)=>{var n;if(!(n="string"==typeof e?Ae.lookupPath(e,{follow:!o}).node:e).node_ops.setattr)throw new Ae.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{Ae.chown(e,t,r,!0)},fchown:(e,t,r)=>{var o=Ae.getStream(e);if(!o)throw new Ae.ErrnoError(8);Ae.chown(o.node,t,r)},truncate:(e,t)=>{if(t<0)throw new Ae.ErrnoError(28);var r;if(!(r="string"==typeof e?Ae.lookupPath(e,{follow:!0}).node:e).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 o=Ae.nodePermissions(r,"w");if(o)throw new Ae.ErrnoError(o);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=Ae.getStream(e);if(!r)throw new Ae.ErrnoError(8);if(!(2097155&r.flags))throw new Ae.ErrnoError(28);Ae.truncate(r.node,t)},utime:(e,t,r)=>{var o=Ae.lookupPath(e,{follow:!0}).node;o.node_ops.setattr(o,{timestamp:Math.max(t,r)})},open:(e,t,r,o,n)=>{if(""===e)throw new Ae.ErrnoError(44);var a;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Ae.modeStringToFlags(t):t)?4095&r|32768:0,"object"==typeof e)a=e;else{e=be.normalize(e);try{a=Ae.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(a){if(128&t)throw new Ae.ErrnoError(20)}else a=Ae.mknod(e,r,0),s=!0;if(!a)throw new Ae.ErrnoError(44);if(Ae.isChrdev(a.mode)&&(t&=-513),65536&t&&!Ae.isDir(a.mode))throw new Ae.ErrnoError(54);if(!s){var d=Ae.mayOpen(a,t);if(d)throw new Ae.ErrnoError(d)}512&t&&Ae.truncate(a,0),t&=-131713;var c=Ae.createStream({node:a,path:Ae.getPath(a),flags:t,seekable:!0,position:0,stream_ops:a.stream_ops,ungotten:[],error:!1},o,n);return c.stream_ops.open&&c.stream_ops.open(c),!i.logReadFiles||1&t||(Ae.readFiles||(Ae.readFiles={}),e in Ae.readFiles||(Ae.readFiles[e]=1)),c},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,o,n)=>{if(o<0||n<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!==n;if(i){if(!e.seekable)throw new Ae.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,o,n);return i||(e.position+=a),a},write:(e,t,r,o,n,i)=>{if(o<0||n<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 a=void 0!==n;if(a){if(!e.seekable)throw new Ae.ErrnoError(70)}else n=e.position;var s=e.stream_ops.write(e,t,r,o,n,i);return a||(e.position+=s),s},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,o,n,i)=>{if(2&n&&!(2&i)&&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,o,n,i)},msync:(e,t,r,o,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,o,n):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,o=Ae.open(e,t.flags),n=Ae.stat(e).size,i=new Uint8Array(n);return Ae.read(o,i,0,n,0),"utf8"===t.encoding?r=B(i,0):"binary"===t.encoding&&(r=i),Ae.close(o),r},writeFile:(e,t,r={})=>{r.flags=r.flags||577;var o=Ae.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(K(t)+1),i=z(t,n,0,n.length);Ae.write(o,n,0,i,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Ae.write(o,t,0,t.byteLength,void 0,r.canOwn)}Ae.close(o)},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,o,n)=>o}),Ae.mkdev("/dev/null",Ae.makedev(1,3)),Pe.register(Ae.makedev(5,0),Pe.default_tty_ops),Pe.register(Ae.makedev(6,0),Pe.default_tty1_ops),Ae.mkdev("/dev/tty",Ae.makedev(5,0)),Ae.mkdev("/dev/tty1",Ae.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(l)try{var t=r(349);return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){Ee("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();Ae.createDevice("/dev","random",e),Ae.createDevice("/dev","urandom",e),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,o=Ae.getStream(r);if(!o)throw new Ae.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>o.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{i.stdin?Ae.createDevice("/dev","stdin",i.stdin):Ae.symlink("/dev/tty","/dev/stdin"),i.stdout?Ae.createDevice("/dev","stdout",null,i.stdout):Ae.symlink("/dev/tty","/dev/stdout"),i.stderr?Ae.createDevice("/dev","stderr",null,i.stderr):Ae.symlink("/dev/tty1","/dev/stderr");var e=Ae.open("/dev/stdin",0),t=Ae.open("/dev/stdout",1),r=Ae.open("/dev/stderr",1);I(0===e.fd,"invalid handle for stdin ("+e.fd+")"),I(1===t.fd,"invalid handle for stdout ("+t.fd+")"),I(2===r.fd,"invalid handle for stderr ("+r.fd+")")},ensureErrnoError:()=>{Ae.ErrnoError||(Ae.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){for(var t in this.errno=e,Se)if(Se[t]===e){this.code=t;break}},this.setErrno(e),this.message=Re[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=ye(this.stack))},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(Me,{},"/"),Ae.createDefaultDirectories(),Ae.createDefaultDevices(),Ae.createSpecialDirectories(),Ae.filesystems={MEMFS:Me}},init:(e,t,r)=>{I(!Ae.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Ae.init.initialized=!0,Ae.ensureErrnoError(),i.stdin=e||i.stdin,i.stdout=t||i.stdout,i.stderr=r||i.stderr,Ae.createStandardStreams()},quit:()=>{Ae.init.initialized=!1,He();for(var e=0;e<Ae.streams.length;e++){var t=Ae.streams[e];t&&Ae.close(t)}},getMode:(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=Ae.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(o=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 o=Ae.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=o.path,r.parentObject=o.node,r.name=be.basename(e),o=Ae.lookupPath(e,{follow:!t}),r.exists=!0,r.path=o.path,r.object=o.node,r.name=o.node.name,r.isRoot="/"===o.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,o)=>{e="string"==typeof e?e:Ae.getPath(e);for(var n=t.split("/").reverse();n.length;){var i=n.pop();if(i){var a=be.join2(e,i);try{Ae.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,o,n)=>{var i=be.join2("string"==typeof e?e:Ae.getPath(e),t),a=Ae.getMode(o,n);return Ae.create(i,a)},createDataFile:(e,t,r,o,n,i)=>{var a=t;e&&(e="string"==typeof e?e:Ae.getPath(e),a=t?be.join2(e,t):e);var s=Ae.getMode(o,n),d=Ae.create(a,s);if(r){if("string"==typeof r){for(var c=new Array(r.length),l=0,p=r.length;l<p;++l)c[l]=r.charCodeAt(l);r=c}Ae.chmod(d,146|s);var E=Ae.open(d,577);Ae.write(E,r,0,r.length,0,i),Ae.close(E),Ae.chmod(d,s)}return d},createDevice:(e,t,r,o)=>{var n=be.join2("string"==typeof e?e:Ae.getPath(e),t),i=Ae.getMode(!!r,!!o);Ae.createDevice.major||(Ae.createDevice.major=64);var a=Ae.makedev(Ae.createDevice.major++,0);return Ae.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{o&&o.buffer&&o.buffer.length&&o(10)},read:(e,t,o,n,i)=>{for(var a=0,s=0;s<n;s++){var d;try{d=r()}catch(e){throw new Ae.ErrnoError(29)}if(void 0===d&&0===a)throw new Ae.ErrnoError(6);if(null==d)break;a++,t[o+s]=d}return a&&(e.node.timestamp=Date.now()),a},write:(e,t,r,n,i)=>{for(var a=0;a<n;a++)try{o(t[r+a])}catch(e){throw new Ae.ErrnoError(29)}return n&&(e.node.timestamp=Date.now()),a}}),Ae.mkdev(n,i,a)},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(!E)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=je(E(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Ae.ErrnoError(29)}},createLazyFile:(e,t,r,o,n)=>{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,o=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=o);var s=this;s.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,o-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>o-1)throw new Error("only "+o+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),o!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):je(n.responseText||"",!0)})(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!i&&o||(a=o=1,o=this.getter(0).length,a=o,T("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=o,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!c)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new i;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:a}}else s={isDevice:!1,url:r};var d=Ae.createFile(e,t,s,o,n);s.contents?d.contents=s.contents:s.url&&(d.contents=null,d.url=s.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};return Object.keys(d.stream_ops).forEach((e=>{var t=d.stream_ops[e];l[e]=function(){return Ae.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,o,n)=>{Ae.forceLoadFile(d);var i=e.node.contents;if(n>=i.length)return 0;var a=Math.min(i.length-n,o);if(I(a>=0),i.slice)for(var s=0;s<a;s++)t[r+s]=i[n+s];else for(s=0;s<a;s++)t[r+s]=i.get(n+s);return a},d.stream_ops=l,d},createPreloadedFile:(e,t,r,o,n,i,a,s,d,c)=>{var l=t?ve.resolve(be.join2(e,t)):e,p=ce("cp "+l);function E(r){function E(r){c&&c(),s||Ae.createDataFile(e,t,r,o,n,d),i&&i(),pe(p)}Browser.handledByPreloadPlugin(r,l,E,(()=>{a&&a(),pe(p)}))||E(r)}le(p),"string"==typeof r?function(e,t,r,o){var n=o?"":ce("al "+e);u(e,(function(r){I(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&pe(n)}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&le(n)}(r,(e=>E(e)),a):E(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var o=Ae.indexedDB();try{var n=o.open(Ae.DB_NAME(),Ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{T("creating db"),n.result.createObjectStore(Ae.DB_STORE_NAME)},n.onsuccess=()=>{var o=n.result.transaction([Ae.DB_STORE_NAME],"readwrite"),i=o.objectStore(Ae.DB_STORE_NAME),a=0,s=0,d=e.length;function c(){0==s?t():r()}e.forEach((e=>{var t=i.put(Ae.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+s==d&&c()},t.onerror=()=>{s++,a+s==d&&c()}})),o.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var o=Ae.indexedDB();try{var n=o.open(Ae.DB_NAME(),Ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var o=n.result;try{var i=o.transaction([Ae.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=i.objectStore(Ae.DB_STORE_NAME),s=0,d=0,c=e.length;function l(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{Ae.analyzePath(e).exists&&Ae.unlink(e),Ae.createDataFile(be.dirname(e),be.basename(e),t.result,!0,!0,!0),++s+d==c&&l()},t.onerror=()=>{d++,s+d==c&&l()}})),i.onerror=r},n.onerror=r},absolutePath:()=>{Ee("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{Ee("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{Ee("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{Ee("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{Ee("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{Ee("FS.standardizePath has been removed; use PATH.normalize instead")}},Fe={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if("/"===t[0])return t;var o;if(-100===e)o=Ae.cwd();else{var n=Ae.getStream(e);if(!n)throw new Ae.ErrnoError(8);o=n.path}if(0==t.length){if(!r)throw new Ae.ErrnoError(44);return o}return be.join2(o,t)},doStat:function(e,t,r){try{var o=e(t)}catch(e){if(e&&e.node&&be.normalize(t)!==be.normalize(Ae.getPath(e.node)))return-54;throw e}return M(0|r,0|o.dev,4),M(r+4|0,0,4),M(r+8|0,0|o.ino,4),M(r+12|0,0|o.mode,4),M(r+16|0,0|o.nlink,4),M(r+20|0,0|o.uid,4),M(r+24|0,0|o.gid,4),M(r+28|0,0|o.rdev,4),M(r+32|0,0,4),M(r+40|0,0|o.size,8),M(r+48|0,4096,4),M(r+52|0,0|o.blocks,4),M(r+56|0,o.atime.getTime()/1e3|0,4),M(r+60|0,0,4),M(r+64|0,o.mtime.getTime()/1e3|0,4),M(r+68|0,0,4),M(r+72|0,o.ctime.getTime()/1e3|0,4),M(r+76|0,0,4),M(r+80|0,0|o.ino,8),0},doMsync:function(e,t,r,o,n){var i=j.slice(e,e+r);Ae.msync(t,i,n,r,o)},doMkdir:function(e,t){return"/"===(e=be.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),Ae.mkdir(e,t,0),0},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ae.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var o=Ae.readlink(e),n=Math.min(r,K(o)),i=S(t+n,1,0);return W(o,t,r+1),M(t+n,i,1),n},doAccess:function(e,t){if(-8&t)return-28;var r=Ae.lookupPath(e,{follow:!0}).node;if(!r)return-44;var o="";return 4&t&&(o+="r"),2&t&&(o+="w"),1&t&&(o+="x"),o&&Ae.nodePermissions(r,o)?-2:0},doDup:function(e,t,r){var o=Ae.getStream(r);return o&&Ae.close(o),Ae.open(e,t,0,r,r).fd},doReadv:function(e,t,r,o){for(var n=0,i=0;i<r;i++){var a=0|S(t+8*i|0,4,0),s=0|S(t+(8*i+4)|0,4,0),d=Ae.read(e,U,a,s,o);if(d<0)return-1;if(n+=d,d<s)break}return n},doWritev:function(e,t,r,o){for(var n=0,i=0;i<r;i++){var a=0|S(t+8*i|0,4,0),s=0|S(t+(8*i+4)|0,4,0),d=Ae.write(e,U,a,s,o);if(d<0)return-1;n+=d}return n},varargs:void 0,get:function(){return I(null!=Fe.varargs),Fe.varargs+=4,0|S(Fe.varargs-4|0,4,0)},getStr:function(e){return Y(e)},getStreamFromFD:function(e){var t=Ae.getStream(e);if(!t)throw new Ae.ErrnoError(8);return t},get64:function(e,t){return I(e>=0?0===t:-1===t),e}};function Ie(e){try{return D.grow(e-N.byteLength+65535>>>16),V(D.buffer),1}catch(t){y("emscripten_realloc_buffer: Attempted to grow heap from "+N.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}var ke=function(e,t,r,o){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ae.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=o},Ne=365,Ue=146;function je(e,t,r){var o=r>0?r:K(e)+1,n=new Array(o),i=z(e,n,0,n.length);return t&&(n.length=i),n}Object.defineProperties(ke.prototype,{read:{get:function(){return(this.mode&Ne)===Ne},set:function(e){e?this.mode|=Ne:this.mode&=-366}},write:{get:function(){return(this.mode&Ue)===Ue},set:function(e){e?this.mode|=Ue:this.mode&=-147}},isFolder:{get:function(){return Ae.isDir(this.mode)}},isDevice:{get:function(){return Ae.isChrdev(this.mode)}}}),Ae.FSNode=ke,Ae.staticInit(),Se={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var xe,Ce={__assert_fail:function(e,t,r,o){Ee("Assertion failed: "+Y(e)+", at: "+[t?Y(t):"unknown filename",r,o?Y(o):"unknown function"])},__syscall_open:function(e,t,r){Fe.varargs=r;try{var o=Fe.getStr(e),n=r?Fe.get():0;return Ae.open(o,t,n).fd}catch(e){if(void 0===Ae||!(e instanceof Ae.ErrnoError))throw e;return-e.errno}},alignfault:function(){Ee("alignment fault")},emscripten_memcpy_big:function(e,t,r){j.copyWithin(e,t,t+r)},emscripten_resize_heap:function(e){var t=j.length;I((e>>>=0)>t);var r,o,n=2147483648;if(e>n)return y("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+n+" bytes!"),!1;for(var i=1;i<=4;i*=2){var a=t*(1+.2/i);a=Math.min(a,e+100663296);var s=Math.min(n,((r=Math.max(e,a))%(o=65536)>0&&(r+=o-r%o),r));if(Ie(s))return!0}return y("Failed to grow the heap from "+t+" bytes to "+s+" bytes, not enough memory!"),!1},fd_read:function(e,t,r,o){try{var n=Fe.getStreamFromFD(e);return M(0|o,0|Fe.doReadv(n,t,r),4),0}catch(e){if(void 0===Ae||!(e instanceof Ae.ErrnoError))throw e;return e.errno}},fd_write:function(e,t,r,o){try{var n=Fe.getStreamFromFD(e);return M(0|o,0|Fe.doWritev(n,t,r),4),0}catch(e){if(void 0===Ae||!(e instanceof Ae.ErrnoError))throw e;return e.errno}},segfault:function(){Ee("segmentation fault")}},He=(function(){var e={env:Ce,wasi_snapshot_preview1:Ce};function t(e,t){var r,o=e.exports;i.asm=o,I(D=i.asm.memory,"memory not found in wasm exports"),V(D.buffer),I(q=i.asm.__indirect_function_table,"table not found in wasm exports"),r=i.asm.__wasm_call_ctors,te.unshift(r),pe("wasm-instantiate")}le("wasm-instantiate");var r=i;function o(e){I(i===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(e.instance)}function a(t){return function(){if(!w&&(d||c)){if("function"==typeof fetch&&!me(ue))return fetch(ue,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ue+"'";return e.arrayBuffer()})).catch((function(){return we(ue)}));if(u)return new Promise((function(e,t){u(ue,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return we(ue)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){y("failed to asynchronously prepare wasm: "+e),me(ue)&&y("warning: Loading from a file URI ("+ue+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),Ee(e)}))}if(i.instantiateWasm)try{return i.instantiateWasm(e,t)}catch(e){return y("Module.instantiateWasm callback failed with error: "+e),!1}(w||"function"!=typeof WebAssembly.instantiateStreaming||Oe(ue)||me(ue)||"function"!=typeof fetch?a(o):fetch(ue,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(o,(function(e){return y("wasm streaming compile failed: "+e),y("falling back to ArrayBuffer instantiation"),a(o)}))}))).catch(n)}(),i.___wasm_call_ctors=ge("__wasm_call_ctors"),i._dilithium_keygen=ge("dilithium_keygen"),i._malloc=ge("malloc"),i._free=ge("free"),i._dilithium_sign=ge("dilithium_sign"),i._dilithium_verify=ge("dilithium_verify"),i._SHA3_256=ge("SHA3_256"),i._randombytes=ge("randombytes"),i.___errno_location=ge("__errno_location"),i.___stdio_exit=ge("__stdio_exit")),Le=i._sbrk=ge("sbrk"),Xe=(i._emscripten_get_sbrk_ptr=ge("emscripten_get_sbrk_ptr"),i._emscripten_stack_init=function(){return(Xe=i._emscripten_stack_init=i.asm.emscripten_stack_init).apply(null,arguments)}),Qe=(i._emscripten_stack_get_free=function(){return(i._emscripten_stack_get_free=i.asm.emscripten_stack_get_free).apply(null,arguments)},i._emscripten_stack_get_base=function(){return(Qe=i._emscripten_stack_get_base=i.asm.emscripten_stack_get_base).apply(null,arguments)}),Be=i._emscripten_stack_get_end=function(){return(Be=i._emscripten_stack_get_end=i.asm.emscripten_stack_get_end).apply(null,arguments)},Ye=i.stackSave=ge("stackSave"),ze=i.stackRestore=ge("stackRestore"),We=i.stackAlloc=ge("stackAlloc");function Ke(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ve(e){function r(){xe||(xe=!0,i.calledRun=!0,F||($(),I(!oe),oe=!0,i.noFSInit||Ae.init.initialized||Ae.init(),Ae.ignorePermissions=!1,Pe.init(),Te(te),t(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),I(!i._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if($(),i.postRun)for("function"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)e=i.postRun.shift(),re.unshift(e);var e;Te(re)}()))}e=e||s,ie>0||(Xe(),J(),function(){if(i.preRun)for("function"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)e=i.preRun.shift(),ee.unshift(e);var e;Te(ee)}(),ie>0||(i.setStatus?(i.setStatus("Running..."),setTimeout((function(){setTimeout((function(){i.setStatus("")}),1),r()}),1)):r(),$()))}if(Object.getOwnPropertyDescriptor(i,"intArrayFromString")||(i.intArrayFromString=()=>Ee("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"intArrayToString")||(i.intArrayToString=()=>Ee("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),i.ccall=k,i.cwrap=function(e,t,r,o){return function(){return k(e,t,r,arguments)}},i.setValue=b,i.getValue=v,Object.getOwnPropertyDescriptor(i,"allocate")||(i.allocate=()=>Ee("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF8ArrayToString")||(i.UTF8ArrayToString=()=>Ee("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF8ToString")||(i.UTF8ToString=()=>Ee("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF8Array")||(i.stringToUTF8Array=()=>Ee("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF8")||(i.stringToUTF8=()=>Ee("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"lengthBytesUTF8")||(i.lengthBytesUTF8=()=>Ee("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackTrace")||(i.stackTrace=()=>Ee("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnPreRun")||(i.addOnPreRun=()=>Ee("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnInit")||(i.addOnInit=()=>Ee("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnPreMain")||(i.addOnPreMain=()=>Ee("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnExit")||(i.addOnExit=()=>Ee("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addOnPostRun")||(i.addOnPostRun=()=>Ee("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeStringToMemory")||(i.writeStringToMemory=()=>Ee("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeArrayToMemory")||(i.writeArrayToMemory=()=>Ee("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeAsciiToMemory")||(i.writeAsciiToMemory=()=>Ee("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addRunDependency")||(i.addRunDependency=()=>Ee("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"removeRunDependency")||(i.removeRunDependency=()=>Ee("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createFolder")||(i.FS_createFolder=()=>Ee("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"FS_createPath")||(i.FS_createPath=()=>Ee("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createDataFile")||(i.FS_createDataFile=()=>Ee("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createPreloadedFile")||(i.FS_createPreloadedFile=()=>Ee("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createLazyFile")||(i.FS_createLazyFile=()=>Ee("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_createLink")||(i.FS_createLink=()=>Ee("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"FS_createDevice")||(i.FS_createDevice=()=>Ee("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"FS_unlink")||(i.FS_unlink=()=>Ee("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")),Object.getOwnPropertyDescriptor(i,"getLEB")||(i.getLEB=()=>Ee("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getFunctionTables")||(i.getFunctionTables=()=>Ee("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"alignFunctionTables")||(i.alignFunctionTables=()=>Ee("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerFunctions")||(i.registerFunctions=()=>Ee("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"addFunction")||(i.addFunction=()=>Ee("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"removeFunction")||(i.removeFunction=()=>Ee("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getFuncWrapper")||(i.getFuncWrapper=()=>Ee("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"prettyPrint")||(i.prettyPrint=()=>Ee("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"dynCall")||(i.dynCall=()=>Ee("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getCompilerSetting")||(i.getCompilerSetting=()=>Ee("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"print")||(i.print=()=>Ee("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"printErr")||(i.printErr=()=>Ee("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getTempRet0")||(i.getTempRet0=()=>Ee("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setTempRet0")||(i.setTempRet0=()=>Ee("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"callMain")||(i.callMain=()=>Ee("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"abort")||(i.abort=()=>Ee("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"keepRuntimeAlive")||(i.keepRuntimeAlive=()=>Ee("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"zeroMemory")||(i.zeroMemory=()=>Ee("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToNewUTF8")||(i.stringToNewUTF8=()=>Ee("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"emscripten_realloc_buffer")||(i.emscripten_realloc_buffer=()=>Ee("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"ENV")||(i.ENV=()=>Ee("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"withStackSave")||(i.withStackSave=()=>Ee("'withStackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"ERRNO_CODES")||(i.ERRNO_CODES=()=>Ee("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"ERRNO_MESSAGES")||(i.ERRNO_MESSAGES=()=>Ee("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setErrNo")||(i.setErrNo=()=>Ee("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetPton4")||(i.inetPton4=()=>Ee("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetNtop4")||(i.inetNtop4=()=>Ee("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetPton6")||(i.inetPton6=()=>Ee("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"inetNtop6")||(i.inetNtop6=()=>Ee("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readSockaddr")||(i.readSockaddr=()=>Ee("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeSockaddr")||(i.writeSockaddr=()=>Ee("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"DNS")||(i.DNS=()=>Ee("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getHostByName")||(i.getHostByName=()=>Ee("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"Protocols")||(i.Protocols=()=>Ee("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"Sockets")||(i.Sockets=()=>Ee("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getRandomDevice")||(i.getRandomDevice=()=>Ee("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"traverseStack")||(i.traverseStack=()=>Ee("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertFrameToPC")||(i.convertFrameToPC=()=>Ee("'convertFrameToPC' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UNWIND_CACHE")||(i.UNWIND_CACHE=()=>Ee("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"saveInUnwindCache")||(i.saveInUnwindCache=()=>Ee("'saveInUnwindCache' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertPCtoSourceLocation")||(i.convertPCtoSourceLocation=()=>Ee("'convertPCtoSourceLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readAsmConstArgsArray")||(i.readAsmConstArgsArray=()=>Ee("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readAsmConstArgs")||(i.readAsmConstArgs=()=>Ee("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"mainThreadEM_ASM")||(i.mainThreadEM_ASM=()=>Ee("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"jstoi_q")||(i.jstoi_q=()=>Ee("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"jstoi_s")||(i.jstoi_s=()=>Ee("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getExecutableName")||(i.getExecutableName=()=>Ee("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"listenOnce")||(i.listenOnce=()=>Ee("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"autoResumeAudioContext")||(i.autoResumeAudioContext=()=>Ee("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"dynCall")||(i.dynCall=()=>Ee("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"callRuntimeCallbacks")||(i.callRuntimeCallbacks=()=>Ee("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"wasmTableMirror")||(i.wasmTableMirror=()=>Ee("'wasmTableMirror' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setWasmTableEntry")||(i.setWasmTableEntry=()=>Ee("'setWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getWasmTableEntry")||(i.getWasmTableEntry=()=>Ee("'getWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"handleException")||(i.handleException=()=>Ee("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"runtimeKeepalivePush")||(i.runtimeKeepalivePush=()=>Ee("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"runtimeKeepalivePop")||(i.runtimeKeepalivePop=()=>Ee("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"callUserCallback")||(i.callUserCallback=()=>Ee("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"maybeExit")||(i.maybeExit=()=>Ee("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"safeSetTimeout")||(i.safeSetTimeout=()=>Ee("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"asmjsMangle")||(i.asmjsMangle=()=>Ee("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"asyncLoad")||(i.asyncLoad=()=>Ee("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"alignMemory")||(i.alignMemory=()=>Ee("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"mmapAlloc")||(i.mmapAlloc=()=>Ee("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"reallyNegative")||(i.reallyNegative=()=>Ee("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"unSign")||(i.unSign=()=>Ee("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"reSign")||(i.reSign=()=>Ee("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"formatString")||(i.formatString=()=>Ee("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"PATH")||(i.PATH=()=>Ee("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"PATH_FS")||(i.PATH_FS=()=>Ee("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"SYSCALLS")||(i.SYSCALLS=()=>Ee("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getSocketFromFD")||(i.getSocketFromFD=()=>Ee("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getSocketAddress")||(i.getSocketAddress=()=>Ee("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"JSEvents")||(i.JSEvents=()=>Ee("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerKeyEventCallback")||(i.registerKeyEventCallback=()=>Ee("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"specialHTMLTargets")||(i.specialHTMLTargets=()=>Ee("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"maybeCStringToJsString")||(i.maybeCStringToJsString=()=>Ee("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"findEventTarget")||(i.findEventTarget=()=>Ee("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"findCanvasEventTarget")||(i.findCanvasEventTarget=()=>Ee("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getBoundingClientRect")||(i.getBoundingClientRect=()=>Ee("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillMouseEventData")||(i.fillMouseEventData=()=>Ee("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerMouseEventCallback")||(i.registerMouseEventCallback=()=>Ee("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerWheelEventCallback")||(i.registerWheelEventCallback=()=>Ee("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerUiEventCallback")||(i.registerUiEventCallback=()=>Ee("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerFocusEventCallback")||(i.registerFocusEventCallback=()=>Ee("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillDeviceOrientationEventData")||(i.fillDeviceOrientationEventData=()=>Ee("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerDeviceOrientationEventCallback")||(i.registerDeviceOrientationEventCallback=()=>Ee("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillDeviceMotionEventData")||(i.fillDeviceMotionEventData=()=>Ee("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerDeviceMotionEventCallback")||(i.registerDeviceMotionEventCallback=()=>Ee("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"screenOrientation")||(i.screenOrientation=()=>Ee("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillOrientationChangeEventData")||(i.fillOrientationChangeEventData=()=>Ee("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerOrientationChangeEventCallback")||(i.registerOrientationChangeEventCallback=()=>Ee("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillFullscreenChangeEventData")||(i.fillFullscreenChangeEventData=()=>Ee("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerFullscreenChangeEventCallback")||(i.registerFullscreenChangeEventCallback=()=>Ee("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerRestoreOldStyle")||(i.registerRestoreOldStyle=()=>Ee("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"hideEverythingExceptGivenElement")||(i.hideEverythingExceptGivenElement=()=>Ee("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"restoreHiddenElements")||(i.restoreHiddenElements=()=>Ee("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setLetterbox")||(i.setLetterbox=()=>Ee("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"currentFullscreenStrategy")||(i.currentFullscreenStrategy=()=>Ee("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"restoreOldWindowedStyle")||(i.restoreOldWindowedStyle=()=>Ee("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"softFullscreenResizeWebGLRenderTarget")||(i.softFullscreenResizeWebGLRenderTarget=()=>Ee("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"doRequestFullscreen")||(i.doRequestFullscreen=()=>Ee("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillPointerlockChangeEventData")||(i.fillPointerlockChangeEventData=()=>Ee("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerPointerlockChangeEventCallback")||(i.registerPointerlockChangeEventCallback=()=>Ee("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerPointerlockErrorEventCallback")||(i.registerPointerlockErrorEventCallback=()=>Ee("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"requestPointerLock")||(i.requestPointerLock=()=>Ee("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillVisibilityChangeEventData")||(i.fillVisibilityChangeEventData=()=>Ee("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerVisibilityChangeEventCallback")||(i.registerVisibilityChangeEventCallback=()=>Ee("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerTouchEventCallback")||(i.registerTouchEventCallback=()=>Ee("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillGamepadEventData")||(i.fillGamepadEventData=()=>Ee("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerGamepadEventCallback")||(i.registerGamepadEventCallback=()=>Ee("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerBeforeUnloadEventCallback")||(i.registerBeforeUnloadEventCallback=()=>Ee("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"fillBatteryEventData")||(i.fillBatteryEventData=()=>Ee("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"battery")||(i.battery=()=>Ee("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"registerBatteryEventCallback")||(i.registerBatteryEventCallback=()=>Ee("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setCanvasElementSize")||(i.setCanvasElementSize=()=>Ee("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getCanvasElementSize")||(i.getCanvasElementSize=()=>Ee("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"demangle")||(i.demangle=()=>Ee("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"demangleAll")||(i.demangleAll=()=>Ee("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"jsStackTrace")||(i.jsStackTrace=()=>Ee("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackTrace")||(i.stackTrace=()=>Ee("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getEnvStrings")||(i.getEnvStrings=()=>Ee("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"checkWasiClock")||(i.checkWasiClock=()=>Ee("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToI64")||(i.writeI53ToI64=()=>Ee("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToI64Clamped")||(i.writeI53ToI64Clamped=()=>Ee("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToI64Signaling")||(i.writeI53ToI64Signaling=()=>Ee("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToU64Clamped")||(i.writeI53ToU64Clamped=()=>Ee("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"writeI53ToU64Signaling")||(i.writeI53ToU64Signaling=()=>Ee("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readI53FromI64")||(i.readI53FromI64=()=>Ee("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"readI53FromU64")||(i.readI53FromU64=()=>Ee("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertI32PairToI53")||(i.convertI32PairToI53=()=>Ee("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"convertU32PairToI53")||(i.convertU32PairToI53=()=>Ee("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setImmediateWrapped")||(i.setImmediateWrapped=()=>Ee("'setImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"clearImmediateWrapped")||(i.clearImmediateWrapped=()=>Ee("'clearImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"polyfillSetImmediate")||(i.polyfillSetImmediate=()=>Ee("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"Browser")||(i.Browser=()=>Ee("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"funcWrappers")||(i.funcWrappers=()=>Ee("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"getFuncWrapper")||(i.getFuncWrapper=()=>Ee("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"setMainLoop")||(i.setMainLoop=()=>Ee("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"wget")||(i.wget=()=>Ee("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"FS")||(i.FS=()=>Ee("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"MEMFS")||(i.MEMFS=()=>Ee("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"TTY")||(i.TTY=()=>Ee("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"PIPEFS")||(i.PIPEFS=()=>Ee("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"SOCKFS")||(i.SOCKFS=()=>Ee("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"_setNetworkCallback")||(i._setNetworkCallback=()=>Ee("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"warnOnce")||(i.warnOnce=()=>Ee("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackSave")||(i.stackSave=()=>Ee("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackRestore")||(i.stackRestore=()=>Ee("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stackAlloc")||(i.stackAlloc=()=>Ee("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"AsciiToString")||(i.AsciiToString=()=>Ee("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToAscii")||(i.stringToAscii=()=>Ee("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF16ToString")||(i.UTF16ToString=()=>Ee("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF16")||(i.stringToUTF16=()=>Ee("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"lengthBytesUTF16")||(i.lengthBytesUTF16=()=>Ee("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"UTF32ToString")||(i.UTF32ToString=()=>Ee("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"stringToUTF32")||(i.stringToUTF32=()=>Ee("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"lengthBytesUTF32")||(i.lengthBytesUTF32=()=>Ee("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"allocateUTF8")||(i.allocateUTF8=()=>Ee("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),Object.getOwnPropertyDescriptor(i,"allocateUTF8OnStack")||(i.allocateUTF8OnStack=()=>Ee("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")),i.writeStackCookie=J,i.checkStackCookie=$,Object.getOwnPropertyDescriptor(i,"ALLOC_NORMAL")||Object.defineProperty(i,"ALLOC_NORMAL",{configurable:!0,get:function(){Ee("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(i,"ALLOC_STACK")||Object.defineProperty(i,"ALLOC_STACK",{configurable:!0,get:function(){Ee("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),se=function e(){xe||Ve(),xe||(se=e)},i.run=Ve,i.preInit)for("function"==typeof i.preInit&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return Ve(),e.ready});e.exports=n},727:e=>{const t=[{CRYPTO_PUBLICKEYBYTES:896,CRYPTO_SECRETKEYBYTES:2096,CRYPTO_BYTES:1387},{CRYPTO_PUBLICKEYBYTES:1184,CRYPTO_SECRETKEYBYTES:2800,CRYPTO_BYTES:2044},{CRYPTO_PUBLICKEYBYTES:1472,CRYPTO_SECRETKEYBYTES:3504,CRYPTO_BYTES:2701},{CRYPTO_PUBLICKEYBYTES:1760,CRYPTO_SECRETKEYBYTES:3856,CRYPTO_BYTES:3366}];e.exports={DILITHIUM_PARAMS:t,generateKeys:function(e,r,o){if(r<0||r>3)return-1;const n=o?o.length:0,i=o?e._malloc(n):0;o&&e.HEAPU8.set(new Uint8Array(o),i);const a=t[r].CRYPTO_SECRETKEYBYTES,s=t[r].CRYPTO_PUBLICKEYBYTES,d=e._malloc(s),c=e._malloc(a),l=e.ccall("dilithium_keygen","number",["number","number","number","number","number"],[d,c,r,i,n]);let p,E;return 0===l&&(p=new Uint8Array(e.HEAPU8.subarray(d,d+s)),E=new Uint8Array(e.HEAPU8.subarray(c,c+a))),i&&e._free(i),e._free(d),e._free(c),{result:l,publicKey:p,privateKey:E}},sign:function(e,r,o,n){if(n<0||n>3)throw new Error("Invalid Dilithium kind");const i=t[n],a=i.CRYPTO_BYTES,s=r.length,d=e._malloc(s);e.HEAPU8.set(new Uint8Array(r),d);const c=o.length;if(c!==i.CRYPTO_SECRETKEYBYTES)throw new Error(`Invalid private key size. Expected: ${i.CRYPTO_SECRETKEYBYTES}, Provided: ${c}`);const l=e._malloc(c);e.HEAPU8.set(new Uint8Array(o),l);const p=a+s,E=e._malloc(p),u=e._malloc(4);e.setValue(u,p,"i32");const f=e.ccall("dilithium_sign","number",["number","number","number","number","number","number","number"],[E,u,d,s,l,c,n]),h=e.getValue(u,"i32"),O=new Uint8Array(e.HEAPU8.buffer,E,h),m=new Uint8Array(O);return e._free(d),e._free(l),e._free(E),e._free(u),{result:f,signature:m,signatureLength:h}},verify:function(e,r,o,n,i){const a=t[i],s=a.CRYPTO_BYTES+o.length,d=a.CRYPTO_PUBLICKEYBYTES;if(r.length!==s)throw new Error(`Invalid signature size. Expected ${s}, got ${r.length}`);if(n.length!==d)throw new Error(`Invalid public key size. Expected ${d}, got ${n.length}`);const c=e._malloc(s),l=e._malloc(o.length),p=e._malloc(d);e.HEAPU8.set(new Uint8Array(r),c),e.HEAPU8.set(new Uint8Array(o),l),e.HEAPU8.set(new Uint8Array(n),p);try{return{result:e.ccall("dilithium_verify","number",["number","number","number","bigint","number","number","number"],[c,s,l,BigInt(o.length),p,d,i]),signatureLength:r.length,expectedSignatureSize:s,messageLength:o.length,publicKeyLength:n.length,expectedPublicKeySize:d,kind:i}}finally{e._free(c),e._free(l),e._free(p)}}}},349:()=>{},175:()=>{},507:()=>{}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};r.d(o,{G:()=>s});var n=r(944),i=r.n(n),a=r(727);const s=()=>async function(){console.log("fetching wasm from /node_modules/dilithium-crystals-js/dilithium.wasm");const e=await fetch("/node_modules/dilithium-crystals-js/dilithium.wasm");return await e.arrayBuffer()}().then((e=>i()({wasmBinary:e,locateFile:e=>e.endsWith(".wasm")?"/node_modules/dilithium-crystals-js/dilithium.wasm":e}))).then((e=>({generateKeys:(t,r)=>(0,a.generateKeys)(e,t,r),sign:(t,r,o)=>(0,a.sign)(e,t,r,o),verify:(t,r,o,n)=>(0,a.verify)(e,t,r,o,n),DILITHIUM_PARAMS:a.DILITHIUM_PARAMS})));var d=o.G;export{d as createDilithium};
|
package/package.json
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"name": "dilithium-crystals-js",
|
3
|
-
"version": "1.0
|
3
|
+
"version": "1.1.0",
|
4
4
|
"main": "src/node/index.js",
|
5
5
|
"browser": "dist/dilithium.min.js",
|
6
6
|
"files": [
|
7
|
-
"src",
|
7
|
+
"src/**/*.js",
|
8
|
+
"src/**/*.d.ts",
|
8
9
|
"dist",
|
9
10
|
"dilithium.wasm",
|
10
11
|
"dilithium.js"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { DilithiumParams, KeyPair, SignatureResult, VerificationResult } from '../common';
|
2
|
+
|
3
|
+
interface DilithiumInterface {
|
4
|
+
generateKeys: (kind: number, seed?: Uint8Array) => KeyPair;
|
5
|
+
sign: (message: Uint8Array, privateKey: Uint8Array, kind: number) => SignatureResult;
|
6
|
+
verify: (signature: Uint8Array, message: Uint8Array, publicKey: Uint8Array, kind: number) => VerificationResult;
|
7
|
+
DILITHIUM_PARAMS: DilithiumParams[];
|
8
|
+
}
|
9
|
+
|
10
|
+
export function createDilithium(): Promise<DilithiumInterface>;
|
package/src/common.d.ts
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
export interface DilithiumParams {
|
2
|
+
CRYPTO_PUBLICKEYBYTES: number;
|
3
|
+
CRYPTO_SECRETKEYBYTES: number;
|
4
|
+
CRYPTO_BYTES: number;
|
5
|
+
}
|
6
|
+
|
7
|
+
export const DILITHIUM_PARAMS: DilithiumParams[];
|
8
|
+
|
9
|
+
export interface KeyPair {
|
10
|
+
result: number;
|
11
|
+
publicKey?: Uint8Array;
|
12
|
+
privateKey?: Uint8Array;
|
13
|
+
}
|
14
|
+
|
15
|
+
export interface SignatureResult {
|
16
|
+
result: number;
|
17
|
+
signature: Uint8Array;
|
18
|
+
signatureLength: number;
|
19
|
+
}
|
20
|
+
|
21
|
+
export interface VerificationResult {
|
22
|
+
result: number;
|
23
|
+
signatureLength: number;
|
24
|
+
expectedSignatureSize: number;
|
25
|
+
messageLength: number;
|
26
|
+
publicKeyLength: number;
|
27
|
+
expectedPublicKeySize: number;
|
28
|
+
kind: number;
|
29
|
+
}
|
30
|
+
|
31
|
+
export interface DilithiumModule {
|
32
|
+
_malloc(size: number): number;
|
33
|
+
_free(ptr: number): void;
|
34
|
+
HEAPU8: Uint8Array;
|
35
|
+
ccall(ident: string, returnType: string, argTypes: string[], args: any[]): any;
|
36
|
+
setValue(ptr: number, value: number, type: string): void;
|
37
|
+
getValue(ptr: number, type: string): number;
|
38
|
+
}
|
39
|
+
|
40
|
+
export function generateKeys(
|
41
|
+
dilithium: DilithiumModule,
|
42
|
+
kind: number,
|
43
|
+
seed?: Uint8Array
|
44
|
+
): KeyPair;
|
45
|
+
|
46
|
+
export function sign(
|
47
|
+
dilithium: DilithiumModule,
|
48
|
+
message: Uint8Array,
|
49
|
+
privateKey: Uint8Array,
|
50
|
+
kind: number
|
51
|
+
): SignatureResult;
|
52
|
+
|
53
|
+
export function verify(
|
54
|
+
dilithium: DilithiumModule,
|
55
|
+
signature: Uint8Array,
|
56
|
+
message: Uint8Array,
|
57
|
+
publicKey: Uint8Array,
|
58
|
+
kind: number
|
59
|
+
): VerificationResult;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import {
|
2
|
+
DilithiumParams,
|
3
|
+
KeyPair,
|
4
|
+
SignatureResult,
|
5
|
+
VerificationResult,
|
6
|
+
} from "../common";
|
7
|
+
|
8
|
+
declare const dilithiumModule: Promise<{
|
9
|
+
generateKeys: (kind: number, seed?: Uint8Array) => KeyPair;
|
10
|
+
sign: (
|
11
|
+
message: Uint8Array,
|
12
|
+
privateKey: Uint8Array,
|
13
|
+
kind: number
|
14
|
+
) => SignatureResult;
|
15
|
+
verify: (
|
16
|
+
signature: Uint8Array,
|
17
|
+
message: Uint8Array,
|
18
|
+
publicKey: Uint8Array,
|
19
|
+
kind: number
|
20
|
+
) => VerificationResult;
|
21
|
+
DILITHIUM_PARAMS: DilithiumParams[];
|
22
|
+
HEAP8: Int8Array;
|
23
|
+
}>;
|
24
|
+
|
25
|
+
export = dilithiumModule;
|