Encoder integrated

This commit is contained in:
Surma
2021-05-14 15:34:12 +01:00
parent cf66f2a69d
commit 189d196b2b
12 changed files with 272 additions and 93 deletions

7
codecs/basis/dec/basis_dec.d.ts vendored Normal file
View File

@@ -0,0 +1,7 @@
export interface BasisModule extends EmscriptenWasm.Module {
decode(data: BufferSource): ImageData | null;
}
declare var moduleFactory: EmscriptenWasm.ModuleFactory<BasisModule>;
export default moduleFactory;

Binary file not shown.

View File

@@ -7,9 +7,11 @@
using namespace emscripten; using namespace emscripten;
using namespace basisu; using namespace basisu;
struct BasisOptions {};
thread_local const val Uint8Array = val::global("Uint8Array"); thread_local const val Uint8Array = val::global("Uint8Array");
val encode(std::string image_in, int image_width, int image_height /*, MozJpegOptions opts*/) { val encode(std::string image_in, int image_width, int image_height, BasisOptions opts) {
basisu_encoder_init(); basisu_encoder_init();
basis_compressor_params params; basis_compressor_params params;
@@ -42,23 +44,8 @@ val encode(std::string image_in, int image_width, int image_height /*, MozJpegOp
} }
EMSCRIPTEN_BINDINGS(my_module) { EMSCRIPTEN_BINDINGS(my_module) {
// value_object<MozJpegOptions>("MozJpegOptions") value_object<BasisOptions>("BasisOptions");
// .field("quality", &MozJpegOptions::quality) // .field("quality", &MozJpegOptions::quality);
// .field("baseline", &MozJpegOptions::baseline)
// .field("arithmetic", &MozJpegOptions::arithmetic)
// .field("progressive", &MozJpegOptions::progressive)
// .field("optimize_coding", &MozJpegOptions::optimize_coding)
// .field("smoothing", &MozJpegOptions::smoothing)
// .field("color_space", &MozJpegOptions::color_space)
// .field("quant_table", &MozJpegOptions::quant_table)
// .field("trellis_multipass", &MozJpegOptions::trellis_multipass)
// .field("trellis_opt_zero", &MozJpegOptions::trellis_opt_zero)
// .field("trellis_opt_table", &MozJpegOptions::trellis_opt_table)
// .field("trellis_loops", &MozJpegOptions::trellis_loops)
// .field("chroma_subsample", &MozJpegOptions::chroma_subsample)
// .field("auto_subsample", &MozJpegOptions::auto_subsample)
// .field("separate_chroma_quality", &MozJpegOptions::separate_chroma_quality)
// .field("chroma_quality", &MozJpegOptions::chroma_quality);
function("encode", &encode); function("encode", &encode);
} }

15
codecs/basis/enc/basis_enc.d.ts vendored Normal file
View File

@@ -0,0 +1,15 @@
export interface EncodeOptions {
}
export interface BasisModule extends EmscriptenWasm.Module {
encode(
data: BufferSource,
width: number,
height: number,
options: EncodeOptions,
): Uint8Array | null;
}
declare var moduleFactory: EmscriptenWasm.ModuleFactory<BasisModule>;
export default moduleFactory;

View File

@@ -7,81 +7,55 @@ function(Module) {
Module = Module || {}; Module = Module || {};
var g;g||(g=typeof Module !== 'undefined' ? Module : {});var aa,ba;g.ready=new Promise(function(a,b){aa=a;ba=b});var l={},p;for(p in g)g.hasOwnProperty(p)&&(l[p]=g[p]);var u="",ca;u=self.location.href;_scriptDir&&(u=_scriptDir);0!==u.indexOf("blob:")?u=u.substr(0,u.lastIndexOf("/")+1):u="";ca=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)};var da=g.print||console.log.bind(console),x=g.printErr||console.warn.bind(console); var f;f||(f=typeof Module !== 'undefined' ? Module : {});var aa,ba;f.ready=new Promise(function(a,b){aa=a;ba=b});var r={},t;for(t in f)f.hasOwnProperty(t)&&(r[t]=f[t]);var u="",ca;u=self.location.href;_scriptDir&&(u=_scriptDir);0!==u.indexOf("blob:")?u=u.substr(0,u.lastIndexOf("/")+1):u="";ca=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)};var da=f.print||console.log.bind(console),v=f.printErr||console.warn.bind(console);
for(p in l)l.hasOwnProperty(p)&&(g[p]=l[p]);l=null;var ea=0,fa;g.wasmBinary&&(fa=g.wasmBinary);var noExitRuntime=g.noExitRuntime||!0;"object"!==typeof WebAssembly&&y("no native wasm support detected");var ha,ia=!1,ja=new TextDecoder("utf8");function ka(a){for(var b=0;a[b]&&!(NaN<=b);)++b;return ja.decode(a.subarray?a.subarray(0,b):new Uint8Array(a.slice(0,b)))}function la(a,b){if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&z[c];)++c;return ja.decode(z.subarray(a,c))} for(t in r)r.hasOwnProperty(t)&&(f[t]=r[t]);r=null;var ea=0,w;f.wasmBinary&&(w=f.wasmBinary);var noExitRuntime;f.noExitRuntime&&(noExitRuntime=f.noExitRuntime);"object"!==typeof WebAssembly&&x("no native wasm support detected");var B,fa=!1,ha=new TextDecoder("utf8");function C(a,b){if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&D[c];)++c;return ha.decode(D.subarray(a,c))}
function ma(a,b,c,d){if(!(0<d))return 0;var e=c;d=c+d-1;for(var f=0;f<a.length;++f){var h=a.charCodeAt(f);if(55296<=h&&57343>=h){var k=a.charCodeAt(++f);h=65536+((h&1023)<<10)|k&1023}if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(c+3>=d)break;b[c++]=240|h>>18;b[c++]=128|h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0;return c-e} function ja(a,b,c){var d=D;if(0<c){c=b+c-1;for(var e=0;e<a.length;++e){var g=a.charCodeAt(e);if(55296<=g&&57343>=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(b>=c)break;d[b++]=g}else{if(2047>=g){if(b+1>=c)break;d[b++]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;d[b++]=224|g>>12}else{if(b+3>=c)break;d[b++]=240|g>>18;d[b++]=128|g>>12&63}d[b++]=128|g>>6&63}d[b++]=128|g&63}}d[b]=0}}var ka=new TextDecoder("utf-16le");
function na(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}var oa=new TextDecoder("utf-16le");function pa(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&qa[c];)++c;return oa.decode(z.subarray(a,c<<1))}function ra(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)A[b>>1]=a.charCodeAt(e),b+=2;A[b>>1]=0;return b-d} function la(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&ma[c];)++c;return ka.decode(D.subarray(a,c<<1))}function na(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)E[b>>1]=a.charCodeAt(e),b+=2;E[b>>1]=0;return b-d}function oa(a){return 2*a.length}function pa(a,b){for(var c=0,d="";!(c>=b/4);){var e=F[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}
function sa(a){return 2*a.length}function ta(a,b){for(var c=0,d="";!(c>=b/4);){var e=B[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}function ua(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.charCodeAt(e);if(55296<=f&&57343>=f){var h=a.charCodeAt(++e);f=65536+((f&1023)<<10)|h&1023}B[b>>2]=f;b+=4;if(b+4>c)break}B[b>>2]=0;return b-d} function qa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var g=a.charCodeAt(e);if(55296<=g&&57343>=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}F[b>>2]=g;b+=4;if(b+4>c)break}F[b>>2]=0;return b-d}function ra(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4}return b}var G,I,D,E,ma,F,J,sa,ta;
function va(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4}return b}var wa,E,z,A,qa,B,F,xa,ya;function za(){var a=ha.buffer;wa=a;g.HEAP8=E=new Int8Array(a);g.HEAP16=A=new Int16Array(a);g.HEAP32=B=new Int32Array(a);g.HEAPU8=z=new Uint8Array(a);g.HEAPU16=qa=new Uint16Array(a);g.HEAPU32=F=new Uint32Array(a);g.HEAPF32=xa=new Float32Array(a);g.HEAPF64=ya=new Float64Array(a)}var G,Aa=[],Ba=[],Ca=[],Da=[];function Ea(){var a=g.preRun.shift();Aa.unshift(a)} function ua(a){G=a;f.HEAP8=I=new Int8Array(a);f.HEAP16=E=new Int16Array(a);f.HEAP32=F=new Int32Array(a);f.HEAPU8=D=new Uint8Array(a);f.HEAPU16=ma=new Uint16Array(a);f.HEAPU32=J=new Uint32Array(a);f.HEAPF32=sa=new Float32Array(a);f.HEAPF64=ta=new Float64Array(a)}var va=f.INITIAL_MEMORY||16777216;f.wasmMemory?B=f.wasmMemory:B=new WebAssembly.Memory({initial:va/65536,maximum:32768});B&&(G=B.buffer);va=G.byteLength;ua(G);var K,wa=[],xa=[],ya=[],za=[];
var H=0,Fa=null,Ga=null;g.preloadedImages={};g.preloadedAudios={};function y(a){if(g.onAbort)g.onAbort(a);x(a);ia=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;}function Ha(){var a=I;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var I="basis_enc.wasm";if(!Ha()){var Ia=I;I=g.locateFile?g.locateFile(Ia,u):u+Ia} function Aa(){var a=f.preRun.shift();wa.unshift(a)}var L=0,Ba=null,M=null;f.preloadedImages={};f.preloadedAudios={};function x(a){if(f.onAbort)f.onAbort(a);v(a);fa=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;}function Ca(){var a=N;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var N="basis_enc.wasm";
function Ja(){var a=I;try{if(a==I&&fa)return new Uint8Array(fa);if(ca)return ca(a);throw"both async and sync fetching of the wasm failed";}catch(b){y(b)}}function Ka(){return fa||"function"!==typeof fetch?Promise.resolve().then(function(){return Ja()}):fetch(I,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+I+"'";return a.arrayBuffer()}).catch(function(){return Ja()})}var J,La; if(!Ca()){var Da=N;N=f.locateFile?f.locateFile(Da,u):u+Da}function Ea(){try{if(w)return new Uint8Array(w);if(ca)return ca(N);throw"both async and sync fetching of the wasm failed";}catch(a){x(a)}}function Fa(){return w||"function"!==typeof fetch?Promise.resolve().then(Ea):fetch(N,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+N+"'";return a.arrayBuffer()}).catch(function(){return Ea()})}
function Ma(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(g);else{var c=b.gb;"number"===typeof c?void 0===b.ua?G.get(c)():G.get(c)(b.ua):c(void 0===b.ua?null:b.ua)}}}function Na(a){this.na=a-16;this.Za=function(b){B[this.na+8>>2]=b};this.Wa=function(b){B[this.na+0>>2]=b};this.Xa=function(){B[this.na+4>>2]=0};this.Va=function(){E[this.na+12>>0]=0};this.Ya=function(){E[this.na+13>>0]=0};this.Pa=function(b,c){this.Za(b);this.Wa(c);this.Xa();this.Va();this.Ya()}}var Oa=0; function Ga(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(f);else{var c=b.ja;"number"===typeof c?void 0===b.ea?K.get(c)():K.get(c)(b.ea):c(void 0===b.ea?null:b.ea)}}}function Ha(a){this.da=a-16;this.sa=function(b){F[this.da+8>>2]=b};this.pa=function(b){F[this.da+0>>2]=b};this.qa=function(){F[this.da+4>>2]=0};this.oa=function(){I[this.da+12>>0]=0};this.ra=function(){I[this.da+13>>0]=0};this.la=function(b,c){this.sa(b);this.pa(c);this.qa();this.oa();this.ra()}}
function Pa(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function Qa(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=Pa(a.split("/").filter(function(d){return!!d}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a} function Ia(){return 0<Ia.ga}var Ja=[null,[],[]],Ka={},La={};function Ma(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function Na(a){return this.fromWireType(J[a>>2])}var O={},P={},Oa={};function Pa(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Qa(a,b){a=Pa(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}
function Ra(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function Sa(a){if("/"===a)return"/";a=Qa(a);a=a.replace(/\/$/,"");var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)} function Ra(a){var b=Error,c=Qa(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Sa=void 0;
function Ta(){if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);return function(){crypto.getRandomValues(a);return a[0]}}return function(){y("randomDevice")}} function Ta(a,b,c){function d(h){h=c(h);if(h.length!==a.length)throw new Sa("Mismatched type converter count");for(var l=0;l<a.length;++l)Q(a[l],h[l])}a.forEach(function(h){Oa[h]=b});var e=Array(b.length),g=[],k=0;b.forEach(function(h,l){P.hasOwnProperty(h)?e[l]=P[h]:(g.push(h),O.hasOwnProperty(h)||(O[h]=[]),O[h].push(function(){e[l]=P[h];++k;k===g.length&&d(e)}))});0===g.length&&d(e)}
function Ua(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=Pa(a.split("/").filter(function(d){return!!d}),!b).join("/");return(b?"/":"")+a||"."}var Va=[];function Wa(a,b){Va[a]={input:[],ca:[],ma:b};Xa(a,Ya)} function Ua(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}var Va=void 0;function R(a){for(var b="";D[a];)b+=Va[D[a++]];return b}var Wa=void 0;function S(a){throw new Wa(a);}
var Ya={open:function(a){var b=Va[a.node.sa];if(!b)throw new K(43);a.ba=b;a.seekable=!1},close:function(a){a.ba.ma.flush(a.ba)},flush:function(a){a.ba.ma.flush(a.ba)},read:function(a,b,c,d){if(!a.ba||!a.ba.ma.Ea)throw new K(60);for(var e=0,f=0;f<d;f++){try{var h=a.ba.ma.Ea(a.ba)}catch(k){throw new K(29);}if(void 0===h&&0===e)throw new K(6);if(null===h||void 0===h)break;e++;b[c+f]=h}e&&(a.node.timestamp=Date.now());return e},write:function(a,b,c,d){if(!a.ba||!a.ba.ma.wa)throw new K(60);try{for(var e= function Q(a,b,c){c=c||{};if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");var d=b.name;a||S('type "'+d+'" must have a positive integer typeid pointer');if(P.hasOwnProperty(a)){if(c.ka)return;S("Cannot register type '"+d+"' twice")}P[a]=b;delete Oa[a];O.hasOwnProperty(a)&&(b=O[a],delete O[a],b.forEach(function(e){e()}))}var Xa=[],T=[{},{value:void 0},{value:null},{value:!0},{value:!1}];
0;e<d;e++)a.ba.ma.wa(a.ba,b[c+e])}catch(f){throw new K(29);}d&&(a.node.timestamp=Date.now());return e}},Za={Ea:function(a){if(!a.input.length){var b=null;"undefined"!=typeof window&&"function"==typeof window.prompt?(b=window.prompt("Input: "),null!==b&&(b+="\n")):"function"==typeof readline&&(b=readline(),null!==b&&(b+="\n"));if(!b)return null;var c=Array(na(b)+1);b=ma(b,c,0,c.length);c.length=b;a.input=c}return a.input.shift()},wa:function(a,b){null===b||10===b?(da(ka(a.ca)),a.ca=[]):0!=b&&a.ca.push(b)}, function Ya(a){4<a&&0===--T[a].fa&&(T[a]=void 0,Xa.push(a))}function U(a){switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Xa.length?Xa.pop():T.length;T[b]={fa:1,value:a};return b}}function Za(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a}
flush:function(a){a.ca&&0<a.ca.length&&(da(ka(a.ca)),a.ca=[])}},$a={wa:function(a,b){null===b||10===b?(x(ka(a.ca)),a.ca=[]):0!=b&&a.ca.push(b)},flush:function(a){a.ca&&0<a.ca.length&&(x(ka(a.ca)),a.ca=[])}},L={da:null,ga:function(){return L.createNode(null,"/",16895,0)},createNode:function(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new K(63);L.da||(L.da={dir:{node:{ja:L.Z.ja,fa:L.Z.fa,oa:L.Z.oa,qa:L.Z.qa,Ja:L.Z.Ja,La:L.Z.La,Ka:L.Z.Ka,Ia:L.Z.Ia,ta:L.Z.ta},stream:{la:L.$.la}},file:{node:{ja:L.Z.ja, function $a(a,b){switch(b){case 2:return function(c){return this.fromWireType(sa[c>>2])};case 3:return function(c){return this.fromWireType(ta[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function ab(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Qa(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c}
fa:L.Z.fa},stream:{la:L.$.la,read:L.$.read,write:L.$.write,za:L.$.za,Fa:L.$.Fa,Ha:L.$.Ha}},link:{node:{ja:L.Z.ja,fa:L.Z.fa,pa:L.Z.pa},stream:{}},Aa:{node:{ja:L.Z.ja,fa:L.Z.fa},stream:ab}});c=bb(a,b,c,d);16384===(c.mode&61440)?(c.Z=L.da.dir.node,c.$=L.da.dir.stream,c.Y={}):32768===(c.mode&61440)?(c.Z=L.da.file.node,c.$=L.da.file.stream,c.aa=0,c.Y=null):40960===(c.mode&61440)?(c.Z=L.da.link.node,c.$=L.da.link.stream):8192===(c.mode&61440)&&(c.Z=L.da.Aa.node,c.$=L.da.Aa.stream);c.timestamp=Date.now(); function bb(a,b){var c=f;if(void 0===c[a].ba){var d=c[a];c[a]=function(){c[a].ba.hasOwnProperty(arguments.length)||S("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ba+")!");return c[a].ba[arguments.length].apply(this,arguments)};c[a].ba=[];c[a].ba[d.ha]=d}}
a&&(a.Y[b]=c,a.timestamp=c.timestamp);return c},hb:function(a){return a.Y?a.Y.subarray?a.Y.subarray(0,a.aa):new Uint8Array(a.Y):new Uint8Array(0)},Ba:function(a,b){var c=a.Y?a.Y.length:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.Y,a.Y=new Uint8Array(b),0<a.aa&&a.Y.set(c.subarray(0,a.aa),0))},Ta:function(a,b){if(a.aa!=b)if(0==b)a.Y=null,a.aa=0;else{var c=a.Y;a.Y=new Uint8Array(b);c&&a.Y.set(c.subarray(0,Math.min(b,a.aa)));a.aa=b}},Z:{ja:function(a){var b={};b.fb= function cb(a,b,c){f.hasOwnProperty(a)?((void 0===c||void 0!==f[a].ba&&void 0!==f[a].ba[c])&&S("Cannot register public name '"+a+"' twice"),bb(a,a),f.hasOwnProperty(c)&&S("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),f[a].ba[c]=b):(f[a]=b,void 0!==c&&(f[a].Aa=c))}function db(a,b){for(var c=[],d=0;d<a;d++)c.push(F[(b>>2)+d]);return c}
8192===(a.mode&61440)?a.id:1;b.jb=a.id;b.mode=a.mode;b.mb=1;b.uid=0;b.ib=0;b.sa=a.sa;16384===(a.mode&61440)?b.size=4096:32768===(a.mode&61440)?b.size=a.aa:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.bb=new Date(a.timestamp);b.lb=new Date(a.timestamp);b.eb=new Date(a.timestamp);b.Na=4096;b.cb=Math.ceil(b.size/b.Na);return b},fa:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);void 0!==b.size&&L.Ta(a,b.size)},oa:function(){throw cb[44];},qa:function(a, function eb(a,b){0<=a.indexOf("j")||x("Assertion failed: getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d<arguments.length;d++)c[d]=arguments[d];var e;-1!=a.indexOf("j")?e=c&&c.length?f["dynCall_"+a].apply(null,[b].concat(c)):f["dynCall_"+a].call(null,b):e=K.get(b).apply(null,c);return e}}
b,c,d){return L.createNode(a,b,c,d)},Ja:function(a,b,c){if(16384===(a.mode&61440)){try{var d=db(b,c)}catch(f){}if(d)for(var e in d.Y)throw new K(55);}delete a.parent.Y[a.name];a.parent.timestamp=Date.now();a.name=c;b.Y[c]=a;b.timestamp=a.parent.timestamp;a.parent=b},La:function(a,b){delete a.Y[b];a.timestamp=Date.now()},Ka:function(a,b){var c=db(a,b),d;for(d in c.Y)throw new K(55);delete a.Y[b];a.timestamp=Date.now()},Ia:function(a){var b=[".",".."],c;for(c in a.Y)a.Y.hasOwnProperty(c)&&b.push(c); function fb(a,b){a=R(a);var c=-1!=a.indexOf("j")?eb(a,b):K.get(b);"function"!==typeof c&&S("unknown function pointer with signature "+a+": "+b);return c}var gb=void 0;function hb(a){a=ib(a);var b=R(a);V(a);return b}function jb(a,b){function c(g){e[g]||P[g]||(Oa[g]?Oa[g].forEach(c):(d.push(g),e[g]=!0))}var d=[],e={};b.forEach(c);throw new gb(a+": "+d.map(hb).join([", "]));}
return b},ta:function(a,b,c){a=L.createNode(a,b,41471,0);a.link=c;return a},pa:function(a){if(40960!==(a.mode&61440))throw new K(28);return a.link}},$:{read:function(a,b,c,d,e){var f=a.node.Y;if(e>=a.node.aa)return 0;a=Math.min(a.node.aa-e,d);if(8<a&&f.subarray)b.set(f.subarray(e,e+a),c);else for(d=0;d<a;d++)b[c+d]=f[e+d];return a},write:function(a,b,c,d,e,f){b.buffer===E.buffer&&(f=!1);if(!d)return 0;a=a.node;a.timestamp=Date.now();if(b.subarray&&(!a.Y||a.Y.subarray)){if(f)return a.Y=b.subarray(c, function kb(a,b,c){switch(b){case 0:return c?function(d){return I[d]}:function(d){return D[d]};case 1:return c?function(d){return E[d>>1]}:function(d){return ma[d>>1]};case 2:return c?function(d){return F[d>>2]}:function(d){return J[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var lb={};function mb(){return"object"===typeof globalThis?globalThis:Function("return this")()}function nb(a,b){var c=P[a];void 0===c&&S(b+" has unknown type "+hb(a));return c}var ob={};
c+d),a.aa=d;if(0===a.aa&&0===e)return a.Y=b.slice(c,c+d),a.aa=d;if(e+d<=a.aa)return a.Y.set(b.subarray(c,c+d),e),d}L.Ba(a,e+d);if(a.Y.subarray&&b.subarray)a.Y.set(b.subarray(c,c+d),e);else for(f=0;f<d;f++)a.Y[e+f]=b[c+f];a.aa=Math.max(a.aa,e+d);return d},la:function(a,b,c){1===c?b+=a.position:2===c&&32768===(a.node.mode&61440)&&(b+=a.node.aa);if(0>b)throw new K(28);return b},za:function(a,b,c){L.Ba(a.node,b+c);a.node.aa=Math.max(a.node.aa,b+c)},Fa:function(a,b,c,d,e,f){if(0!==b)throw new K(28);if(32768!== Sa=f.InternalError=Ra("InternalError");for(var pb=Array(256),qb=0;256>qb;++qb)pb[qb]=String.fromCharCode(qb);Va=pb;Wa=f.BindingError=Ra("BindingError");f.count_emval_handles=function(){for(var a=0,b=5;b<T.length;++b)void 0!==T[b]&&++a;return a};f.get_first_emval=function(){for(var a=5;a<T.length;++a)if(void 0!==T[a])return T[a];return null};gb=f.UnboundTypeError=Ra("UnboundTypeError");xa.push({ja:function(){rb()}});
(a.node.mode&61440))throw new K(43);a=a.node.Y;if(f&2||a.buffer!==wa){if(0<d||d+c<a.length)a.subarray?a=a.subarray(d,d+c):a=Array.prototype.slice.call(a,d,d+c);d=!0;f=16384*Math.ceil(c/16384);for(b=eb(f);c<f;)E[b+c++]=0;c=b;if(!c)throw new K(48);E.set(a,c)}else d=!1,c=a.byteOffset;return{na:c,ab:d}},Ha:function(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new K(43);if(e&2)return 0;L.$.write(a,b,0,d,c,!1);return 0}}},fb=null,gb={},hb=[],ib=1,jb=null,kb=!0,lb={},K=null,cb={}; var Bb={b:function(a,b,c,d){x("Assertion failed: "+C(a)+", at: "+[b?C(b):"unknown filename",c,d?C(d):"unknown function"])},J:function(a){return sb(a+16)+16},A:function(){},E:function(a,b,c){(new Ha(a)).la(b,c);"uncaught_exception"in Ia?Ia.ga++:Ia.ga=1;throw a;},s:function(){return 0},H:function(){return 0},I:function(){},P:function(a){var b=La[a];delete La[a];var c=b.ma,d=b.na,e=b.ia,g=e.map(function(k){return k.ya}).concat(e.map(function(k){return k.Ca}));Ta([a],g,function(k){var h={};e.forEach(function(l,
function M(a,b){a=Ua("/",a);b=b||{};if(!a)return{path:"",node:null};var c={Da:!0,xa:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8<b.xa)throw new K(32);a=Pa(a.split("/").filter(function(h){return!!h}),!1);var e=fb;c="/";for(d=0;d<a.length;d++){var f=d===a.length-1;if(f&&b.parent)break;e=db(e,a[d]);c=Qa(c+"/"+a[d]);e.ra&&(!f||f&&b.Da)&&(e=e.ra.root);if(!f||b.Ca)for(f=0;40960===(e.mode&61440);)if(e=mb(c),c=Ua(Ra(c),e),e=M(c,{xa:b.xa}).node,40<f++)throw new K(32);}return{path:c,node:e}} m){var n=k[m],q=l.wa,y=l.xa,z=k[m+e.length],p=l.Ba,ia=l.Da;h[l.ua]={read:function(A){return n.fromWireType(q(y,A))},write:function(A,H){var Y=[];p(ia,A,z.toWireType(Y,H));Ma(Y)}}});return[{name:b.name,fromWireType:function(l){var m={},n;for(n in h)m[n]=h[n].read(l);d(l);return m},toWireType:function(l,m){for(var n in h)if(!(n in m))throw new TypeError('Missing field: "'+n+'"');var q=c();for(n in h)h[n].write(q,m[n]);null!==l&&l.push(d,q);return q},argPackAdvance:8,readValueFromPointer:Na,ca:d}]})},
function nb(a){for(var b;;){if(a===a.parent)return a=a.ga.Ga,b?"/"!==a[a.length-1]?a+"/"+b:a+b:a;b=b?a.name+"/"+b:a.name;a=a.parent}}function ob(a,b){for(var c=0,d=0;d<b.length;d++)c=(c<<5)-c+b.charCodeAt(d)|0;return(a+c>>>0)%jb.length}function db(a,b){var c;if(c=(c=pb(a,"x"))?c:a.Z.oa?0:2)throw new K(c,a);for(c=jb[ob(a.id,b)];c;c=c.Sa){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.Z.oa(a,b)}function bb(a,b,c,d){a=new qb(a,b,c,d);b=ob(a.parent.id,a.name);a.Sa=jb[b];return jb[b]=a} L:function(a,b,c,d,e){var g=Ua(c);b=R(b);Q(a,{name:b,fromWireType:function(k){return!!k},toWireType:function(k,h){return h?d:e},argPackAdvance:8,readValueFromPointer:function(k){if(1===c)var h=I;else if(2===c)h=E;else if(4===c)h=F;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(h[k>>g])},ca:null})},K:function(a,b){b=R(b);Q(a,{name:b,fromWireType:function(c){var d=T[c].value;Ya(c);return d},toWireType:function(c,d){return U(d)},argPackAdvance:8,readValueFromPointer:Na,
var rb={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090};function sb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function pb(a,b){if(kb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;return 0}function tb(a,b){try{return db(a,b),20}catch(c){}return pb(a,"wx")}function ub(a){var b=4096;for(a=a||0;a<=b;a++)if(!hb[a])return a;throw new K(33);} ca:null})},v:function(a,b,c){c=Ua(c);b=R(b);Q(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+Za(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:$a(b,c),ca:null})},O:function(a,b,c,d,e,g){var k=db(b,c);a=R(a);e=fb(d,e);cb(a,function(){jb("Cannot call "+a+" due to unbound types",k)},b-1);Ta([],k,function(h){var l=a,m=a;h=[h[0],null].concat(h.slice(1));var n=e,q=h.length;2>
function vb(a,b){wb||(wb=function(){},wb.prototype={});var c=new wb,d;for(d in a)c[d]=a[d];a=c;b=ub(b);a.ia=b;return hb[b]=a}var ab={open:function(a){a.$=gb[a.node.sa].$;a.$.open&&a.$.open(a)},la:function(){throw new K(70);}};function Xa(a,b){gb[a]={$:b}} q&&S("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var y=null!==h[1]&&!1,z=!1,p=1;p<h.length;++p)if(null!==h[p]&&void 0===h[p].ca){z=!0;break}var ia="void"!==h[0].name,A="",H="";for(p=0;p<q-2;++p)A+=(0!==p?", ":"")+"arg"+p,H+=(0!==p?", ":"")+"arg"+p+"Wired";m="return function "+Pa(m)+"("+A+") {\nif (arguments.length !== "+(q-2)+") {\nthrowBindingError('function "+m+" called with ' + arguments.length + ' arguments, expected "+(q-2)+" args!');\n}\n";z&&(m+="var destructors = [];\n");
function xb(a,b){var c="/"===b,d=!b;if(c&&fb)throw new K(10);if(!c&&!d){var e=M(b,{Da:!1});b=e.path;e=e.node;if(e.ra)throw new K(10);if(16384!==(e.mode&61440))throw new K(54);}b={type:a,ob:{},Ga:b,Ra:[]};a=a.ga(b);a.ga=b;b.root=a;c?fb=a:e&&(e.ra=b,e.ga&&e.ga.Ra.push(b))}function yb(a,b,c){var d=M(a,{parent:!0}).node;a=Sa(a);if(!a||"."===a||".."===a)throw new K(28);var e=tb(d,a);if(e)throw new K(e);if(!d.Z.qa)throw new K(63);return d.Z.qa(d,a,b,c)}function N(a){return yb(a,16895,0)} var Y=z?"destructors":"null";A="throwBindingError invoker fn runDestructors retType classParam".split(" ");n=[S,n,g,Ma,h[0],h[1]];y&&(m+="var thisWired = classParam.toWireType("+Y+", this);\n");for(p=0;p<q-2;++p)m+="var arg"+p+"Wired = argType"+p+".toWireType("+Y+", arg"+p+"); // "+h[p+2].name+"\n",A.push("argType"+p),n.push(h[p+2]);y&&(H="thisWired"+(0<H.length?", ":"")+H);m+=(ia?"var rv = ":"")+"invoker(fn"+(0<H.length?", ":"")+H+");\n";if(z)m+="runDestructors(destructors);\n";else for(p=y?1:2;p<
function zb(a,b,c){"undefined"===typeof c&&(c=b,b=438);yb(a,b|8192,c)}function Ab(a,b){if(!Ua(a))throw new K(44);var c=M(b,{parent:!0}).node;if(!c)throw new K(44);b=Sa(b);var d=tb(c,b);if(d)throw new K(d);if(!c.Z.ta)throw new K(63);c.Z.ta(c,b,a)}function mb(a){a=M(a).node;if(!a)throw new K(44);if(!a.Z.pa)throw new K(28);return Ua(nb(a.parent),a.Z.pa(a))} h.length;++p)q=1===p?"thisWired":"arg"+(p-2)+"Wired",null!==h[p].ca&&(m+=q+"_dtor("+q+"); // "+h[p].name+"\n",A.push(q+"_dtor"),n.push(h[p].ca));ia&&(m+="var ret = retType.fromWireType(rv);\nreturn ret;\n");A.push(m+"}\n");h=ab(A).apply(null,n);p=b-1;if(!f.hasOwnProperty(l))throw new Sa("Replacing nonexistant public symbol");void 0!==f[l].ba&&void 0!==p?f[l].ba[p]=h:(f[l]=h,f[l].ha=p);return[]})},k:function(a,b,c,d,e){function g(m){return m}b=R(b);-1===e&&(e=4294967295);var k=Ua(c);if(0===d){var h=
function Bb(a,b,c,d){if(""===a)throw new K(44);if("string"===typeof b){var e=rb[b];if("undefined"===typeof e)throw Error("Unknown file open mode: "+b);b=e}c=b&64?("undefined"===typeof c?438:c)&4095|32768:0;if("object"===typeof a)var f=a;else{a=Qa(a);try{f=M(a,{Ca:!(b&131072)}).node}catch(k){}}e=!1;if(b&64)if(f){if(b&128)throw new K(20);}else f=yb(a,c,0),e=!0;if(!f)throw new K(44);8192===(f.mode&61440)&&(b&=-513);if(b&65536&&16384!==(f.mode&61440))throw new K(54);if(!e&&(c=f?40960===(f.mode&61440)? 32-8*c;g=function(m){return m<<h>>>h}}var l=-1!=b.indexOf("unsigned");Q(a,{name:b,fromWireType:g,toWireType:function(m,n){if("number"!==typeof n&&"boolean"!==typeof n)throw new TypeError('Cannot convert "'+Za(n)+'" to '+this.name);if(n<d||n>e)throw new TypeError('Passing a number "'+Za(n)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+e+"]!");return l?n>>>0:n|0},argPackAdvance:8,readValueFromPointer:kb(b,k,0!==d),ca:null})},j:function(a,b,
32:16384===(f.mode&61440)&&("r"!==sb(b)||b&512)?31:pb(f,sb(b)):44))throw new K(c);if(b&512){c=f;var h;"string"===typeof c?h=M(c,{Ca:!0}).node:h=c;if(!h.Z.fa)throw new K(63);if(16384===(h.mode&61440))throw new K(31);if(32768!==(h.mode&61440))throw new K(28);if(c=pb(h,"w"))throw new K(c);h.Z.fa(h,{size:0,timestamp:Date.now()})}b&=-131713;d=vb({node:f,path:nb(f),flags:b,seekable:!0,position:0,$:f.$,$a:[],error:!1},d);d.$.open&&d.$.open(d);!g.logReadFiles||b&1||(Cb||(Cb={}),a in Cb||(Cb[a]=1,x("FS.trackingDelegate error on read file: "+ c){function d(g){g>>=2;var k=J;return new e(G,k[g+1],k[g])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=R(c);Q(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ka:!0})},w:function(a,b){b=R(b);var c="std::string"===b;Q(a,{name:b,fromWireType:function(d){var e=J[d>>2];if(c)for(var g=d+4,k=0;k<=e;++k){var h=d+4+k;if(k==e||0==D[h]){g=C(g,h-g);if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=h+1}}else{l=Array(e);
a)));try{lb.onOpenFile&&(f=0,1!==(b&2097155)&&(f|=1),0!==(b&2097155)&&(f|=2),lb.onOpenFile(a,f))}catch(k){x("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}return d}function Db(a,b,c){if(null===a.ia)throw new K(8);if(!a.seekable||!a.$.la)throw new K(70);if(0!=c&&1!=c&&2!=c)throw new K(28);a.position=a.$.la(a,b,c);a.$a=[]} for(k=0;k<e;++k)l[k]=String.fromCharCode(D[d+4+k]);l=l.join("")}V(d);return l},toWireType:function(d,e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var g="string"===typeof e;g||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||S("Cannot pass non-string to std::string");var k=(c&&g?function(){for(var m=0,n=0;n<e.length;++n){var q=e.charCodeAt(n);55296<=q&&57343>=q&&(q=65536+((q&1023)<<10)|e.charCodeAt(++n)&1023);127>=q?++m:m=2047>=q?m+2:65535>=q?m+3:m+4}return m}:
function Eb(){K||(K=function(a,b){this.node=b;this.Ua=function(c){this.ka=c};this.Ua(a);this.message="FS error"},K.prototype=Error(),K.prototype.constructor=K,[44].forEach(function(a){cb[a]=new K(a);cb[a].stack="<generic error, no stack>"}))}var Fb;function Gb(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} function(){return e.length})(),h=sb(4+k+1);J[h>>2]=k;if(c&&g)ja(e,h+4,k+1);else if(g)for(g=0;g<k;++g){var l=e.charCodeAt(g);255<l&&(V(h),S("String has UTF-16 code units that do not fit in 8 bits"));D[h+4+g]=l}else for(g=0;g<k;++g)D[h+4+g]=e[g];null!==d&&d.push(V,h);return h},argPackAdvance:8,readValueFromPointer:Na,ca:function(d){V(d)}})},p:function(a,b,c){c=R(c);if(2===b){var d=la;var e=na;var g=oa;var k=function(){return ma};var h=1}else 4===b&&(d=pa,e=qa,g=ra,k=function(){return J},h=2);Q(a,{name:c,
function Hb(a,b,c){a=Qa("/dev/"+a);var d=Gb(!!b,!!c);Ib||(Ib=64);var e=Ib++<<8|0;Xa(e,{open:function(f){f.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(f,h,k,m){for(var q=0,r=0;r<m;r++){try{var t=b()}catch(v){throw new K(29);}if(void 0===t&&0===q)throw new K(6);if(null===t||void 0===t)break;q++;h[k+r]=t}q&&(f.node.timestamp=Date.now());return q},write:function(f,h,k,m){for(var q=0;q<m;q++)try{c(h[k+q])}catch(r){throw new K(29);}m&&(f.node.timestamp=Date.now());return q}}); fromWireType:function(l){for(var m=J[l>>2],n=k(),q,y=l+4,z=0;z<=m;++z){var p=l+4+z*b;if(z==m||0==n[p>>h])y=d(y,p-y),void 0===q?q=y:(q+=String.fromCharCode(0),q+=y),y=p+b}V(l);return q},toWireType:function(l,m){"string"!==typeof m&&S("Cannot pass non-string to C++ string type "+c);var n=g(m),q=sb(4+n+b);J[q>>2]=n>>h;e(m,q+4,n+b);null!==l&&l.push(V,q);return q},argPackAdvance:8,readValueFromPointer:Na,ca:function(l){V(l)}})},Q:function(a,b,c,d,e,g){La[a]={name:R(b),ma:fb(c,d),na:fb(e,g),ia:[]}},M:function(a,
zb(a,d,e)}var Ib,O={},wb,Cb,Jb=void 0;function P(){Jb+=4;return B[Jb-4>>2]}function Q(a){a=hb[a];if(!a)throw new K(8);return a}function Kb(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}var Lb=void 0;function R(a){for(var b="";z[a];)b+=Lb[z[a++]];return b}var S={},T={},Nb={};function Ob(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a} b){b=R(b);Q(a,{za:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},n:Ya,z:function(a){if(0===a)return U(mb());var b=lb[a];a=void 0===b?R(a):b;return U(mb()[a])},N:function(a){4<a&&(T[a].fa+=1)},x:function(a,b,c,d){a||S("Cannot use deleted val. handle = "+a);a=T[a].value;var e=ob[b];if(!e){e="";for(var g=0;g<b;++g)e+=(0!==g?", ":"")+"arg"+g;var k="return function emval_allocator_"+b+"(constructor, argTypes, args) {\n";for(g=0;g<b;++g)k+="var argType"+g+" = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + "+
function Pb(a,b){a=Ob(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}function Qb(a){var b=Error,c=Pb(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c} g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",k+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(nb,f,U);ob[b]=e}return e(a,c,d)},y:function(a,b){a=nb(a,"_emval_take_value");a=a.readValueFromPointer(b);return U(a)},f:function(){x()},h:function(a,b){W(a,b||1);throw"longjmp";},D:function(a,b,c){D.copyWithin(a,b,b+c)},l:function(a){a>>>=
var Rb=void 0;function U(a){throw new Rb(a);}var Sb=void 0;function Tb(a,b){function c(k){k=b(k);if(k.length!==d.length)throw new Sb("Mismatched type converter count");for(var m=0;m<d.length;++m)V(d[m],k[m])}var d=[];d.forEach(function(k){Nb[k]=a});var e=Array(a.length),f=[],h=0;a.forEach(function(k,m){T.hasOwnProperty(k)?e[m]=T[k]:(f.push(k),S.hasOwnProperty(k)||(S[k]=[]),S[k].push(function(){e[m]=T[k];++h;h===f.length&&c(e)}))});0===f.length&&c(e)} 0;var b=D.length;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0<d%65536&&(d+=65536-d%65536);a:{try{B.grow(Math.min(2147483648,d)-G.byteLength+65535>>>16);ua(B.buffer);var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},u:function(){return 0},G:function(a,b,c,d){a=Ka.va(a);b=Ka.ta(a,b,c);F[d>>2]=b;return 0},B:function(){},t:function(a,b,c,d){for(var e=0,g=0;g<c;g++){for(var k=F[b+8*g>>2],h=F[b+(8*g+4)>>2],l=0;l<h;l++){var m=
function V(a,b,c){c=c||{};if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");var d=b.name;a||U('type "'+d+'" must have a positive integer typeid pointer');if(T.hasOwnProperty(a)){if(c.Oa)return;U("Cannot register type '"+d+"' twice")}T[a]=b;delete Nb[a];S.hasOwnProperty(a)&&(b=S[a],delete S[a],b.forEach(function(e){e()}))}var Ub=[],W=[{},{value:void 0},{value:null},{value:!0},{value:!1}]; D[k+l],n=Ja[a];if(0===m||10===m){for(m=0;n[m]&&!(NaN<=m);)++m;m=ha.decode(n.subarray?n.subarray(0,m):new Uint8Array(n.slice(0,m)));(1===a?da:v)(m);n.length=0}else n.push(m)}e+=h}F[d>>2]=e;return 0},d:function(){return ea|0},i:function(a){var b=Date.now();F[a>>2]=b/1E3|0;F[a+4>>2]=b%1E3*1E3|0;return 0},m:tb,g:ub,r:vb,q:wb,o:xb,e:yb,C:zb,a:B,c:function(a){ea=a|0},F:function(a){switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;
function Vb(a){4<a&&0===--W[a].ya&&(W[a]=void 0,Ub.push(a))}function Wb(a){switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Ub.length?Ub.pop():W.length;W[b]={ya:1,value:a};return b}}function Xb(a){return this.fromWireType(F[a>>2])}function Yb(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a} case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;
function Zb(a,b){switch(b){case 2:return function(c){return this.fromWireType(xa[c>>2])};case 3:return function(c){return this.fromWireType(ya[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function $b(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Pb(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}F[Ab()>>2]=28;
function ac(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function bc(a,b){var c=g;if(void 0===c[a].ea){var d=c[a];c[a]=function(){c[a].ea.hasOwnProperty(arguments.length)||U("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ea+")!");return c[a].ea[arguments.length].apply(this,arguments)};c[a].ea=[];c[a].ea[d.Ma]=d}} return-1}};
function cc(a,b,c){g.hasOwnProperty(a)?((void 0===c||void 0!==g[a].ea&&void 0!==g[a].ea[c])&&U("Cannot register public name '"+a+"' twice"),bc(a,a),g.hasOwnProperty(c)&&U("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),g[a].ea[c]=b):(g[a]=b,void 0!==c&&(g[a].nb=c))}function dc(a,b){for(var c=[],d=0;d<a;d++)c.push(B[(b>>2)+d]);return c} (function(){function a(e){f.asm=e.exports;K=f.asm.R;L--;f.monitorRunDependencies&&f.monitorRunDependencies(L);0==L&&(null!==Ba&&(clearInterval(Ba),Ba=null),M&&(e=M,M=null,e()))}function b(e){a(e.instance)}function c(e){return Fa().then(function(g){return WebAssembly.instantiate(g,d)}).then(e,function(g){v("failed to asynchronously prepare wasm: "+g);x(g)})}var d={a:Bb};L++;f.monitorRunDependencies&&f.monitorRunDependencies(L);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(e){return v("Module.instantiateWasm callback failed with error: "+e),
function ec(a,b){var c=[];return function(){c.length=arguments.length;for(var d=0;d<arguments.length;d++)c[d]=arguments[d];-1!=a.indexOf("j")?(d=g["dynCall_"+a],d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b)):d=G.get(b).apply(null,c);return d}}function fc(a,b){a=R(a);var c=-1!=a.indexOf("j")?ec(a,b):G.get(b);"function"!==typeof c&&U("unknown function pointer with signature "+a+": "+b);return c}var gc=void 0;function hc(a){a=ic(a);var b=R(a);Y(a);return b} !1}(function(){return w||"function"!==typeof WebAssembly.instantiateStreaming||Ca()||"function"!==typeof fetch?c(b):fetch(N,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(g){v("wasm streaming compile failed: "+g);v("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})();
function jc(a,b){function c(f){e[f]||T[f]||(Nb[f]?Nb[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new gc(a+": "+d.map(hc).join([", "]));}function kc(a,b,c){switch(b){case 0:return c?function(d){return E[d]}:function(d){return z[d]};case 1:return c?function(d){return A[d>>1]}:function(d){return qa[d>>1]};case 2:return c?function(d){return B[d>>2]}:function(d){return F[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var lc={}; var rb=f.___wasm_call_ctors=function(){return(rb=f.___wasm_call_ctors=f.asm.S).apply(null,arguments)},V=f._free=function(){return(V=f._free=f.asm.T).apply(null,arguments)},sb=f._malloc=function(){return(sb=f._malloc=f.asm.U).apply(null,arguments)},ib=f.___getTypeName=function(){return(ib=f.___getTypeName=f.asm.V).apply(null,arguments)};f.___embind_register_native_and_builtin_types=function(){return(f.___embind_register_native_and_builtin_types=f.asm.W).apply(null,arguments)};
function mc(){return"object"===typeof globalThis?globalThis:Function("return this")()}function nc(a,b){var c=T[a];void 0===c&&U(b+" has unknown type "+hc(a));return c}var oc={};function qb(a,b,c,d){a||(a=this);this.parent=a;this.ga=a.ga;this.ra=null;this.id=ib++;this.name=b;this.mode=c;this.Z={};this.$={};this.sa=d} var Ab=f.___errno_location=function(){return(Ab=f.___errno_location=f.asm.X).apply(null,arguments)},X=f.stackSave=function(){return(X=f.stackSave=f.asm.Y).apply(null,arguments)},Z=f.stackRestore=function(){return(Z=f.stackRestore=f.asm.Z).apply(null,arguments)},W=f._setThrew=function(){return(W=f._setThrew=f.asm._).apply(null,arguments)};f.dynCall_jiiii=function(){return(f.dynCall_jiiii=f.asm.$).apply(null,arguments)};f.dynCall_jiji=function(){return(f.dynCall_jiji=f.asm.aa).apply(null,arguments)};
Object.defineProperties(qb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}});Eb();jb=Array(4096);xb(L,"/");N("/tmp");N("/home");N("/home/web_user"); function yb(a,b,c){var d=X();try{K.get(a)(b,c)}catch(e){Z(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}}function xb(a,b){var c=X();try{K.get(a)(b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function vb(a,b,c,d){var e=X();try{return K.get(a)(b,c,d)}catch(g){Z(e);if(g!==g+0&&"longjmp"!==g)throw g;W(1,0)}}function ub(a,b,c){var d=X();try{return K.get(a)(b,c)}catch(e){Z(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}}
(function(){N("/dev");Xa(259,{read:function(){return 0},write:function(b,c,d,e){return e}});zb("/dev/null",259);Wa(1280,Za);Wa(1536,$a);zb("/dev/tty",1280);zb("/dev/tty1",1536);var a=Ta();Hb("random",a);Hb("urandom",a);N("/dev/shm");N("/dev/shm/tmp")})(); function tb(a,b){var c=X();try{return K.get(a)(b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function wb(a,b,c,d,e,g){var k=X();try{return K.get(a)(b,c,d,e,g)}catch(h){Z(k);if(h!==h+0&&"longjmp"!==h)throw h;W(1,0)}}function zb(a,b,c,d,e){var g=X();try{K.get(a)(b,c,d,e)}catch(k){Z(g);if(k!==k+0&&"longjmp"!==k)throw k;W(1,0)}}var Cb;M=function Db(){Cb||Eb();Cb||(M=Db)};
(function(){N("/proc");var a=N("/proc/self");N("/proc/self/fd");xb({ga:function(){var b=bb(a,"fd",16895,73);b.Z={oa:function(c,d){var e=hb[+d];if(!e)throw new K(8);c={parent:null,ga:{Ga:"fake"},Z:{pa:function(){return e.path}}};return c.parent=c}};return b}},"/proc/self/fd")})();for(var pc=Array(256),qc=0;256>qc;++qc)pc[qc]=String.fromCharCode(qc);Lb=pc;Rb=g.BindingError=Qb("BindingError");Sb=g.InternalError=Qb("InternalError"); function Eb(){function a(){if(!Cb&&(Cb=!0,f.calledRun=!0,!fa)){Ga(xa);Ga(ya);aa(f);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"==typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var b=f.postRun.shift();za.unshift(b)}Ga(za)}}if(!(0<L)){if(f.preRun)for("function"==typeof f.preRun&&(f.preRun=[f.preRun]);f.preRun.length;)Aa();Ga(wa);0<L||(f.setStatus?(f.setStatus("Running..."),setTimeout(function(){setTimeout(function(){f.setStatus("")},1);a()},1)):a())}}
g.count_emval_handles=function(){for(var a=0,b=5;b<W.length;++b)void 0!==W[b]&&++a;return a};g.get_first_emval=function(){for(var a=5;a<W.length;++a)if(void 0!==W[a])return W[a];return null};gc=g.UnboundTypeError=Qb("UnboundTypeError"); f.run=Eb;if(f.preInit)for("function"==typeof f.preInit&&(f.preInit=[f.preInit]);0<f.preInit.length;)f.preInit.pop()();noExitRuntime=!0;Eb();
var wc={a:function(a,b,c,d){y("Assertion failed: "+la(a)+", at: "+[b?la(b):"unknown filename",c,d?la(d):"unknown function"])},D:function(a){return eb(a+16)+16},I:function(){},z:function(a,b,c){(new Na(a)).Pa(b,c);Oa++;throw a;},m:function(a,b,c){Jb=c;try{var d=Q(a);switch(b){case 0:var e=P();return 0>e?-28:Bb(d.path,d.flags,0,e).ia;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=P(),d.flags|=e,0;case 12:return e=P(),A[e+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return B[rc()>>
2]=28,-1;default:return-28}}catch(f){return"undefined"!==typeof O&&f instanceof K||y(f),-f.ka}},y:function(a,b,c){Jb=c;try{var d=Q(a);switch(b){case 21509:case 21505:return d.ba?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return d.ba?0:-59;case 21519:if(!d.ba)return-59;var e=P();return B[e>>2]=0;case 21520:return d.ba?-28:-59;case 21531:a=e=P();if(!d.$.Qa)throw new K(59);return d.$.Qa(d,b,a);case 21523:return d.ba?0:-59;case 21524:return d.ba?0:-59;default:y("bad ioctl syscall "+
b)}}catch(f){return"undefined"!==typeof O&&f instanceof K||y(f),-f.ka}},A:function(a,b,c){Jb=c;try{var d=la(a),e=c?P():0;return Bb(d,b,e).ia}catch(f){return"undefined"!==typeof O&&f instanceof K||y(f),-f.ka}},C:function(a,b,c,d,e){var f=Kb(c);b=R(b);V(a,{name:b,fromWireType:function(h){return!!h},toWireType:function(h,k){return k?d:e},argPackAdvance:8,readValueFromPointer:function(h){if(1===c)var k=E;else if(2===c)k=A;else if(4===c)k=B;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(k[h>>
f])},ha:null})},B:function(a,b){b=R(b);V(a,{name:b,fromWireType:function(c){var d=W[c].value;Vb(c);return d},toWireType:function(c,d){return Wb(d)},argPackAdvance:8,readValueFromPointer:Xb,ha:null})},p:function(a,b,c){c=Kb(c);b=R(b);V(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+Yb(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:Zb(b,c),ha:null})},G:function(a,b,c,d,e,
f){var h=dc(b,c);a=R(a);e=fc(d,e);cc(a,function(){jc("Cannot call "+a+" due to unbound types",h)},b-1);Tb(h,function(k){var m=a,q=a;k=[k[0],null].concat(k.slice(1));var r=e,t=k.length;2>t&&U("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var v=null!==k[1]&&!1,w=!1,n=1;n<k.length;++n)if(null!==k[n]&&void 0===k[n].ha){w=!0;break}var C="void"!==k[0].name,D="",X="";for(n=0;n<t-2;++n)D+=(0!==n?", ":"")+"arg"+n,X+=(0!==n?", ":"")+"arg"+n+"Wired";q="return function "+
Ob(q)+"("+D+") {\nif (arguments.length !== "+(t-2)+") {\nthrowBindingError('function "+q+" called with ' + arguments.length + ' arguments, expected "+(t-2)+" args!');\n}\n";w&&(q+="var destructors = [];\n");var Mb=w?"destructors":"null";D="throwBindingError invoker fn runDestructors retType classParam".split(" ");r=[U,r,f,ac,k[0],k[1]];v&&(q+="var thisWired = classParam.toWireType("+Mb+", this);\n");for(n=0;n<t-2;++n)q+="var arg"+n+"Wired = argType"+n+".toWireType("+Mb+", arg"+n+"); // "+k[n+2].name+
"\n",D.push("argType"+n),r.push(k[n+2]);v&&(X="thisWired"+(0<X.length?", ":"")+X);q+=(C?"var rv = ":"")+"invoker(fn"+(0<X.length?", ":"")+X+");\n";if(w)q+="runDestructors(destructors);\n";else for(n=v?1:2;n<k.length;++n)t=1===n?"thisWired":"arg"+(n-2)+"Wired",null!==k[n].ha&&(q+=t+"_dtor("+t+"); // "+k[n].name+"\n",D.push(t+"_dtor"),r.push(k[n].ha));C&&(q+="var ret = retType.fromWireType(rv);\nreturn ret;\n");D.push(q+"}\n");k=$b(D).apply(null,r);n=b-1;if(!g.hasOwnProperty(m))throw new Sb("Replacing nonexistant public symbol");
void 0!==g[m].ea&&void 0!==n?g[m].ea[n]=k:(g[m]=k,g[m].Ma=n);return[]})},f:function(a,b,c,d,e){function f(q){return q}b=R(b);-1===e&&(e=4294967295);var h=Kb(c);if(0===d){var k=32-8*c;f=function(q){return q<<k>>>k}}var m=-1!=b.indexOf("unsigned");V(a,{name:b,fromWireType:f,toWireType:function(q,r){if("number"!==typeof r&&"boolean"!==typeof r)throw new TypeError('Cannot convert "'+Yb(r)+'" to '+this.name);if(r<d||r>e)throw new TypeError('Passing a number "'+Yb(r)+'" from JS side to C/C++ side to an argument of type "'+
b+'", which is outside the valid range ['+d+", "+e+"]!");return m?r>>>0:r|0},argPackAdvance:8,readValueFromPointer:kc(b,h,0!==d),ha:null})},e:function(a,b,c){function d(f){f>>=2;var h=F;return new e(wa,h[f+1],h[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=R(c);V(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{Oa:!0})},q:function(a,b){b=R(b);var c="std::string"===b;V(a,{name:b,fromWireType:function(d){var e=F[d>>2];
if(c)for(var f=d+4,h=0;h<=e;++h){var k=d+4+h;if(h==e||0==z[k]){f=la(f,k-f);if(void 0===m)var m=f;else m+=String.fromCharCode(0),m+=f;f=k+1}}else{m=Array(e);for(h=0;h<e;++h)m[h]=String.fromCharCode(z[d+4+h]);m=m.join("")}Y(d);return m},toWireType:function(d,e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var f="string"===typeof e;f||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||U("Cannot pass non-string to std::string");var h=(c&&f?function(){return na(e)}:function(){return e.length})(),
k=eb(4+h+1);F[k>>2]=h;if(c&&f)ma(e,z,k+4,h+1);else if(f)for(f=0;f<h;++f){var m=e.charCodeAt(f);255<m&&(Y(k),U("String has UTF-16 code units that do not fit in 8 bits"));z[k+4+f]=m}else for(f=0;f<h;++f)z[k+4+f]=e[f];null!==d&&d.push(Y,k);return k},argPackAdvance:8,readValueFromPointer:Xb,ha:function(d){Y(d)}})},j:function(a,b,c){c=R(c);if(2===b){var d=pa;var e=ra;var f=sa;var h=function(){return qa};var k=1}else 4===b&&(d=ta,e=ua,f=va,h=function(){return F},k=2);V(a,{name:c,fromWireType:function(m){for(var q=
F[m>>2],r=h(),t,v=m+4,w=0;w<=q;++w){var n=m+4+w*b;if(w==q||0==r[n>>k])v=d(v,n-v),void 0===t?t=v:(t+=String.fromCharCode(0),t+=v),v=n+b}Y(m);return t},toWireType:function(m,q){"string"!==typeof q&&U("Cannot pass non-string to C++ string type "+c);var r=f(q),t=eb(4+r+b);F[t>>2]=r>>k;e(q,t+4,r+b);null!==m&&m.push(Y,t);return t},argPackAdvance:8,readValueFromPointer:Xb,ha:function(m){Y(m)}})},E:function(a,b){b=R(b);V(a,{kb:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},
k:Vb,J:function(a){if(0===a)return Wb(mc());var b=lc[a];a=void 0===b?R(a):b;return Wb(mc()[a])},F:function(a){4<a&&(W[a].ya+=1)},H:function(a,b,c,d){a||U("Cannot use deleted val. handle = "+a);a=W[a].value;var e=oc[b];if(!e){e="";for(var f=0;f<b;++f)e+=(0!==f?", ":"")+"arg"+f;var h="return function emval_allocator_"+b+"(constructor, argTypes, args) {\n";for(f=0;f<b;++f)h+="var argType"+f+" = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + "+f+'], "parameter '+f+'");\nvar arg'+f+" = argType"+
f+".readValueFromPointer(args);\nargs += argType"+f+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",h+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(nc,g,Wb);oc[b]=e}return e(a,c,d)},r:function(a,b){a=nc(a,"_emval_take_value");a=a.readValueFromPointer(b);return Wb(a)},d:function(){y()},w:function(){return 2147483648},h:function(a,b){Z(a,b||1);throw"longjmp";},u:function(a,b,c){z.copyWithin(a,b,b+c)},v:function(a){var b=z.length;
if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(a,d);0<d%65536&&(d+=65536-d%65536);a:{try{ha.grow(Math.min(2147483648,d)-wa.byteLength+65535>>>16);za();var e=1;break a}catch(f){}e=void 0}if(e)return!0}return!1},o:function(a){try{var b=Q(a);if(null===b.ia)throw new K(8);b.va&&(b.va=null);try{b.$.close&&b.$.close(b)}catch(c){throw c;}finally{hb[b.ia]=null}b.ia=null;return 0}catch(c){return"undefined"!==typeof O&&c instanceof K||y(c),c.ka}},x:function(a,
b,c,d){try{a:{for(var e=Q(a),f=a=0;f<c;f++){var h=B[b+(8*f+4)>>2],k=e,m=B[b+8*f>>2],q=h,r=void 0,t=E;if(0>q||0>r)throw new K(28);if(null===k.ia)throw new K(8);if(1===(k.flags&2097155))throw new K(8);if(16384===(k.node.mode&61440))throw new K(31);if(!k.$.read)throw new K(28);var v="undefined"!==typeof r;if(!v)r=k.position;else if(!k.seekable)throw new K(70);var w=k.$.read(k,t,m,q,r);v||(k.position+=w);var n=w;if(0>n){var C=-1;break a}a+=n;if(n<h)break}C=a}B[d>>2]=C;return 0}catch(D){return"undefined"!==
typeof O&&D instanceof K||y(D),D.ka}},t:function(a,b,c,d,e){try{var f=Q(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Db(f,a,d);La=[f.position>>>0,(J=f.position,1<=+Math.abs(J)?0<J?(Math.min(+Math.floor(J/4294967296),4294967295)|0)>>>0:~~+Math.ceil((J-+(~~J>>>0))/4294967296)>>>0:0)];B[e>>2]=La[0];B[e+4>>2]=La[1];f.va&&0===a&&0===d&&(f.va=null);return 0}catch(h){return"undefined"!==typeof O&&h instanceof K||y(h),h.ka}},n:function(a,b,c,d){try{a:{for(var e=Q(a),f=
a=0;f<c;f++){var h=e,k=B[b+8*f>>2],m=B[b+(8*f+4)>>2],q=void 0,r=E;if(0>m||0>q)throw new K(28);if(null===h.ia)throw new K(8);if(0===(h.flags&2097155))throw new K(8);if(16384===(h.node.mode&61440))throw new K(31);if(!h.$.write)throw new K(28);h.seekable&&h.flags&1024&&Db(h,0,2);var t="undefined"!==typeof q;if(!t)q=h.position;else if(!h.seekable)throw new K(70);var v=h.$.write(h,r,k,m,q,void 0);t||(h.position+=v);try{if(h.path&&lb.onWriteToFile)lb.onWriteToFile(h.path)}catch(C){x("FS.trackingDelegate['onWriteToFile']('"+
h.path+"') threw an exception: "+C.message)}var w=v;if(0>w){var n=-1;break a}a+=w}n=a}B[d>>2]=n;return 0}catch(C){return"undefined"!==typeof O&&C instanceof K||y(C),C.ka}},c:function(){return ea|0},l:function(a){var b=Date.now();B[a>>2]=b/1E3|0;B[a+4>>2]=b%1E3*1E3|0;return 0},s:sc,i:tc,g:uc,K:vc,b:function(a){ea=a|0}};
(function(){function a(e){g.asm=e.exports;ha=g.asm.L;za();G=g.asm.P;Ba.unshift(g.asm.M);H--;g.monitorRunDependencies&&g.monitorRunDependencies(H);0==H&&(null!==Fa&&(clearInterval(Fa),Fa=null),Ga&&(e=Ga,Ga=null,e()))}function b(e){a(e.instance)}function c(e){return Ka().then(function(f){return WebAssembly.instantiate(f,d)}).then(e,function(f){x("failed to asynchronously prepare wasm: "+f);y(f)})}var d={a:wc};H++;g.monitorRunDependencies&&g.monitorRunDependencies(H);if(g.instantiateWasm)try{return g.instantiateWasm(d,
a)}catch(e){return x("Module.instantiateWasm callback failed with error: "+e),!1}(function(){return fa||"function"!==typeof WebAssembly.instantiateStreaming||Ha()||"function"!==typeof fetch?c(b):fetch(I,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){x("wasm streaming compile failed: "+f);x("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})();
g.___wasm_call_ctors=function(){return(g.___wasm_call_ctors=g.asm.M).apply(null,arguments)};var Y=g._free=function(){return(Y=g._free=g.asm.N).apply(null,arguments)},eb=g._malloc=function(){return(eb=g._malloc=g.asm.O).apply(null,arguments)},ic=g.___getTypeName=function(){return(ic=g.___getTypeName=g.asm.Q).apply(null,arguments)};g.___embind_register_native_and_builtin_types=function(){return(g.___embind_register_native_and_builtin_types=g.asm.R).apply(null,arguments)};
var rc=g.___errno_location=function(){return(rc=g.___errno_location=g.asm.S).apply(null,arguments)},xc=g.stackSave=function(){return(xc=g.stackSave=g.asm.T).apply(null,arguments)},yc=g.stackRestore=function(){return(yc=g.stackRestore=g.asm.U).apply(null,arguments)},Z=g._setThrew=function(){return(Z=g._setThrew=g.asm.V).apply(null,arguments)};g.dynCall_jiiii=function(){return(g.dynCall_jiiii=g.asm.W).apply(null,arguments)};g.dynCall_jiji=function(){return(g.dynCall_jiji=g.asm.X).apply(null,arguments)};
function uc(a,b){var c=xc();try{G.get(a)(b)}catch(d){yc(c);if(d!==d+0&&"longjmp"!==d)throw d;Z(1,0)}}function tc(a,b,c){var d=xc();try{return G.get(a)(b,c)}catch(e){yc(d);if(e!==e+0&&"longjmp"!==e)throw e;Z(1,0)}}function sc(a,b){var c=xc();try{return G.get(a)(b)}catch(d){yc(c);if(d!==d+0&&"longjmp"!==d)throw d;Z(1,0)}}function vc(a,b,c){var d=xc();try{G.get(a)(b,c)}catch(e){yc(d);if(e!==e+0&&"longjmp"!==e)throw e;Z(1,0)}}var zc;Ga=function Ac(){zc||Bc();zc||(Ga=Ac)};
function Bc(){function a(){if(!zc&&(zc=!0,g.calledRun=!0,!ia)){g.noFSInit||Fb||(Fb=!0,Eb(),g.stdin=g.stdin,g.stdout=g.stdout,g.stderr=g.stderr,g.stdin?Hb("stdin",g.stdin):Ab("/dev/tty","/dev/stdin"),g.stdout?Hb("stdout",null,g.stdout):Ab("/dev/tty","/dev/stdout"),g.stderr?Hb("stderr",null,g.stderr):Ab("/dev/tty1","/dev/stderr"),Bb("/dev/stdin",0),Bb("/dev/stdout",1),Bb("/dev/stderr",1));Ma(Ba);kb=!1;Ma(Ca);aa(g);if(g.onRuntimeInitialized)g.onRuntimeInitialized();if(g.postRun)for("function"==typeof g.postRun&&
(g.postRun=[g.postRun]);g.postRun.length;){var b=g.postRun.shift();Da.unshift(b)}Ma(Da)}}if(!(0<H)){if(g.preRun)for("function"==typeof g.preRun&&(g.preRun=[g.preRun]);g.preRun.length;)Ea();Ma(Aa);0<H||(g.setStatus?(g.setStatus("Running..."),setTimeout(function(){setTimeout(function(){g.setStatus("")},1);a()},1)):a())}}g.run=Bc;if(g.preInit)for("function"==typeof g.preInit&&(g.preInit=[g.preInit]);0<g.preInit.length;)g.preInit.pop()();Bc();
return Module.ready return Module.ready

Binary file not shown.

View File

@@ -152,6 +152,7 @@ const magicNumberMapInput = [
[/^\x00\x00\x00 ftypavif\x00\x00\x00\x00/, 'image/avif'], [/^\x00\x00\x00 ftypavif\x00\x00\x00\x00/, 'image/avif'],
[/^\xff\x0a/, 'image/jxl'], [/^\xff\x0a/, 'image/jxl'],
[/^\x00\x00\x00\x0cJXL \x0d\x0a\x87\x0a/, 'image/jxl'], [/^\x00\x00\x00\x0cJXL \x0d\x0a\x87\x0a/, 'image/jxl'],
[/^Bs\x10/, 'image/basisu'],
] as const; ] as const;
export type ImageMimeTypes = typeof magicNumberMapInput[number][1]; export type ImageMimeTypes = typeof magicNumberMapInput[number][1];

View File

@@ -0,0 +1,112 @@
import { EncodeOptions, defaultOptions } from '../shared/meta';
import type WorkerBridge from 'client/lazy-app/worker-bridge';
import { h, Component } from 'preact';
import { preventDefault, shallowEqual } from 'client/lazy-app/util';
import * as style from 'client/lazy-app/Compress/Options/style.css';
import Checkbox from 'client/lazy-app/Compress/Options/Checkbox';
import Expander from 'client/lazy-app/Compress/Options/Expander';
import Select from 'client/lazy-app/Compress/Options/Select';
import Range from 'client/lazy-app/Compress/Options/Range';
import linkState from 'linkstate';
import Revealer from 'client/lazy-app/Compress/Options/Revealer';
export const encode = (
signal: AbortSignal,
workerBridge: WorkerBridge,
imageData: ImageData,
options: EncodeOptions,
) => workerBridge.basisEncode(signal, imageData, options);
interface Props {
options: EncodeOptions;
onChange(newOptions: EncodeOptions): void;
}
interface State {
options: EncodeOptions;
showAdvanced: boolean;
}
export class Options extends Component<Props, State> {
static getDerivedStateFromProps(
props: Props,
state: State,
): Partial<State> | null {
if (state.options && shallowEqual(state.options, props.options)) {
return null;
}
const { options } = props;
return {
options,
};
}
// The rest of the defaults are set in getDerivedStateFromProps
state: State = {
showAdvanced: false,
} as State;
private _inputChangeCallbacks = new Map<string, (event: Event) => void>();
private _inputChange = (
prop: keyof State,
type: 'number' | 'boolean' | 'string',
) => {
// Cache the callback for performance
if (!this._inputChangeCallbacks.has(prop)) {
this._inputChangeCallbacks.set(prop, (event: Event) => {
const formEl = event.target as HTMLInputElement | HTMLSelectElement;
const newVal =
type === 'boolean'
? 'checked' in formEl
? formEl.checked
: !!formEl.value
: type === 'number'
? Number(formEl.value)
: formEl.value;
const newState: Partial<State> = {
[prop]: newVal,
};
const optionState = {
...this.state,
...newState,
};
const newOptions: EncodeOptions = {};
// Updating options, so we don't recalculate in getDerivedStateFromProps.
newState.options = newOptions;
this.setState(
// It isn't clear to me why I have to cast this :)
newState as State,
);
this.props.onChange(newOptions);
});
}
return this._inputChangeCallbacks.get(prop)!;
};
render(_: Props, {}: State) {
return (
<form class={style.optionsSection} onSubmit={preventDefault}>
<div class={style.optionOneCell}>
<Range
min="0"
max="4"
// value={quality}
// onInput={this._inputChange('quality', 'number')}
>
Quality:
</Range>
</div>
</form>
);
}
}

View File

@@ -0,0 +1,20 @@
/**
* Copyright 2020 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { EncodeOptions } from 'codecs/basis/enc/basis_enc';
export { EncodeOptions };
export const label = 'Basis';
export const mimeType = 'image/basisu';
export const extension = 'basis';
export const defaultOptions: EncodeOptions = {};

View File

@@ -0,0 +1,13 @@
/**
* Copyright 2020 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/// <reference path="../../../../../missing-types.d.ts" />

View File

@@ -0,0 +1,37 @@
/**
* Copyright 2020 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type { BasisModule } from 'codecs/basis/enc/basis_enc';
import type { EncodeOptions } from '../shared/meta';
import wasmUrl from 'url:codecs/basis/enc/basis_enc.wasm';
import { initEmscriptenModule } from 'features/worker-utils';
let emscriptenModule: Promise<BasisModule>;
async function init() {
const basisEncoder = await import('codecs/basis/enc/basis_enc.js');
return initEmscriptenModule(basisEncoder.default, wasmUrl);
}
export default async function encode(
data: ImageData,
options: EncodeOptions,
): Promise<ArrayBuffer> {
if (!emscriptenModule) emscriptenModule = init();
const module = await emscriptenModule;
const result = module.encode(data.data, data.width, data.height, options);
if (!result) throw new Error('Encoding error');
return result.buffer;
}

View File

@@ -0,0 +1,13 @@
/**
* Copyright 2020 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/// <reference path="../../../../../missing-types.d.ts" />