From 9a31750a24e14dad0117fe3fe64be3fbb4eaacb6 Mon Sep 17 00:00:00 2001 From: DeepKolos Date: Tue, 10 Aug 2021 22:10:59 +0800 Subject: [PATCH] enable zstddec decode in web worker in KTX2Loader (#21984) * feat: add zstddec worker * fix buffer.slice * fix: indentation * fix: indentation * fix: indentation * fix: indentation * feat: update basis_transcoder & KTX2Loader & WorkPool locate worker on demand & add sample_uastc_zstd.ktx2 * remove zstddec & zstddec.worker * misc: code format * fix: typo queue --- examples/js/libs/basis/basis_transcoder.js | 2 +- examples/js/libs/basis/basis_transcoder.wasm | Bin 440267 -> 499935 bytes examples/jsm/libs/zstddec.module.js | 115 ---- examples/jsm/loaders/KTX2Loader.js | 519 ++++++++++++++---- examples/jsm/utils/WorkerPool.js | 102 ++++ .../compressed/sample_uastc_zstd.ktx2 | Bin 0 -> 48393 bytes examples/webgl_loader_texture_ktx2.html | 5 +- 7 files changed, 504 insertions(+), 239 deletions(-) delete mode 100644 examples/jsm/libs/zstddec.module.js create mode 100644 examples/jsm/utils/WorkerPool.js create mode 100644 examples/textures/compressed/sample_uastc_zstd.ktx2 diff --git a/examples/js/libs/basis/basis_transcoder.js b/examples/js/libs/basis/basis_transcoder.js index 95de34e568..9e285ddc95 100644 --- a/examples/js/libs/basis/basis_transcoder.js +++ b/examples/js/libs/basis/basis_transcoder.js @@ -6,7 +6,7 @@ var BASIS = (function() { function(BASIS) { BASIS = BASIS || {}; -var Module=typeof BASIS!=="undefined"?BASIS:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="basis_transcoder.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["H"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["I"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(size){return _malloc(size+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-ExceptionInfoAttrs.SIZE;this.set_type=function(type){HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=type};this.get_type=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=prev-1;return prev===1}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}var structRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if("undefined"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn("object already deleted: "+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}return Module["dynCall_"+sig].call(null,ptr)}function dynCall(sig,ptr,args){if(sig.indexOf("j")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.indexOf("j")>=0,"getDynCaller should only be called with i64 sigs");var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i>2)+i])}return array}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);var args=[rawConstructor];var destructors=[];whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}destructors.length=0;args.length=argCount;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_get_global(){if(typeof globalThis==="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i>> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","__emval_register",functionBody)(requireRegisteredType,Module,__emval_register)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"G":___cxa_allocate_exception,"F":___cxa_throw,"s":__embind_finalize_value_object,"D":__embind_register_bool,"x":__embind_register_class,"w":__embind_register_class_constructor,"d":__embind_register_class_function,"C":__embind_register_emval,"o":__embind_register_enum,"b":__embind_register_enum_value,"u":__embind_register_float,"j":__embind_register_function,"h":__embind_register_integer,"g":__embind_register_memory_view,"v":__embind_register_std_string,"r":__embind_register_std_wstring,"t":__embind_register_value_object,"c":__embind_register_value_object_field,"E":__embind_register_void,"l":__emval_as,"p":__emval_call_void_method,"a":__emval_decref,"y":__emval_get_global,"q":__emval_get_method_caller,"n":__emval_get_module_property,"e":__emval_get_property,"i":__emval_incref,"m":__emval_new,"f":__emval_new_cstring,"k":__emval_run_destructors,"B":_abort,"z":_emscripten_memcpy_big,"A":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["J"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["K"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["L"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["M"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["N"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); +var Module=typeof BASIS!=="undefined"?BASIS:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="basis_transcoder.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["K"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["L"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var structRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if("undefined"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn("object already deleted: "+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}return Module["dynCall_"+sig].call(null,ptr)}function dynCall(sig,ptr,args){if(sig.indexOf("j")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.indexOf("j")>=0,"getDynCaller should only be called with i64 sigs");var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i>2)+i])}return array}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);var args=[rawConstructor];var destructors=[];whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}destructors.length=0;args.length=argCount;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_get_global(){if(typeof globalThis==="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i>> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","__emval_register",functionBody)(requireRegisteredType,Module,__emval_register)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _setTempRet0($i){setTempRet0($i|0)}InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"t":__embind_finalize_value_object,"I":__embind_register_bool,"x":__embind_register_class,"w":__embind_register_class_constructor,"d":__embind_register_class_function,"k":__embind_register_constant,"H":__embind_register_emval,"n":__embind_register_enum,"a":__embind_register_enum_value,"A":__embind_register_float,"i":__embind_register_function,"j":__embind_register_integer,"h":__embind_register_memory_view,"B":__embind_register_std_string,"v":__embind_register_std_wstring,"u":__embind_register_value_object,"c":__embind_register_value_object_field,"J":__embind_register_void,"m":__emval_as,"s":__emval_call_void_method,"b":__emval_decref,"y":__emval_get_global,"p":__emval_get_method_caller,"r":__emval_get_module_property,"e":__emval_get_property,"g":__emval_incref,"q":__emval_new,"f":__emval_new_cstring,"l":__emval_run_destructors,"o":_abort,"E":_emscripten_memcpy_big,"F":_emscripten_resize_heap,"G":_fd_close,"C":_fd_seek,"z":_fd_write,"D":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["M"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["N"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["O"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["P"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Q"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["R"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); return BASIS.ready diff --git a/examples/js/libs/basis/basis_transcoder.wasm b/examples/js/libs/basis/basis_transcoder.wasm index bfb0162a50fc96412e39e345af03e9e8e2f0450d..4b9c3437170cf226600057096490d0a2fa8d74ea 100644 GIT binary patch delta 144845 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

JCaZPBn^Nki`8avur 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

$X zFiV9N@yT{*26|_?pP893xT#MCF2qD0IWhz>x}DJ2_dFF__4Oj#lFj)@5enk8J)(zN2|nMHnUx`lO1s%TfVe zWT|M^*h`)P2Dq%Q8lVeM@-Rz<0$U(Tn$h|p*NMSVcO`ZKSN1hX< zmZ5J;1Nm9gXoM?9LN{j5i)6OE-P~a_L)7RT3{K1Nq8WgJK~y$=^les7V!3FG=G~9U z)S2VEGt0#ch`!>$;Vv|534z1BYLi(iP05P=2ecdx9;zmI@~kKxC^lP~26$uY%}u)* zJlSNTVjKjH(aC85jvS3l)UcYC`A6|ZOBbOc^=mRk+>BKg3>G%nWJx!vPU3)g=nGBuu5Lo zBgneN9)VYe0DH4Bcd=zWgh>BS+ar?k28qlbK}nfC!rsgtVQ*%Sus5?u@b-JyBZ!^b zBZ_W3#0lxhMu{{!B^e}eUf3RS`0)@^5VA+;BBvKL(jQYdm&>yBnN_akF{@n5TIGsY%PLnENXzT~ zZFNM04AwzGl0j>;tz^!o_eBq^^5f<T3OMoWS$AVQ@M+@O-2s)&_M#84J#-hR zyJmZg=L;Pg4PloM09r*UKF4~d#jV9`PdyjV0KfT50#J3sA~9I1pifZc2JAX&h2-W# z4FJJ%mJfNm99(jE5=w1t+7sv%frCk)j&NXHt1 zRT{2k>$Byf9A%b)N;D|-*w#yFjgI;eDj$x~2sGZhE#CjcCqAbeq^zo}-qZ4CtY%b{ zMZREzcyLPm2DIjQh>go^`_GKkvad5UXH8@KgQVEQaoW4WM9tU&64|^!NfTE#2x8ig zI)dfj8gh}rj`(Ow;hp7Oo6d5pZM#It*rOdmSH%EmZgNC)87V)o(&aXmBVy>|S+##} zlP)!n)XL*EIhFt!DF$R9E1AbjPTK8RbshJhnrU6HBX&EpHsg;fm%LXpA z4#$xcL=+d;f8SCL+8(~lHr*MJk6SLT)mB*N%A>UjKs0Tpjo%XWywgb~)?d|j+prKX zWUKCivtW@+8LY$?Sza#vf$wSQxud5a<;W%B55BL2rv&)v#0T2+*FW69|6jiJzNemq z7$3mb+GCHsH1}(qniTFapTGOJxBTRX&)xWo14Q1PM@A4t9irtZIzkR}d~%qvlfxXI z9QtH4H?U?ds%l?HsC^v>YH7>bB85c)Gg!T13|w#w3_zGg3or4wT5OW;EpZ1Q6m$Ru zT8$m9F`0E{gW6aF;FIacy9&M+QW`@dhC&Df3{Io1pzLTDX*`*fo7`3K{D8RKQAL9# zS_0E_*nv;Bo()R^_%Fnt%)O~?n|6EtU282RW}Gqt;< zD4v#FIo_7jJ(Z-XXd+s$hZtckxm8^+V=qG$b8bdRjIV_TooYpjV+si3Ml_JD0t7G; zMI>$C{Lm_`S|UG4f&kflIAcUNAUSdnnMl}0J+)hc`_IztlDfG=1+ns8W?*u;j1>#? zM&}|O`O-4!_Smn_p-E{yI;GK`!gUl}`NMHm;x8R5M+)>YW(mSf0>c|Smh{03bNZ_P zQ4F|9gzY{?CFz5=`K(@MC*gq5Df@n43l$$NI^W#aXzg~UdWi7QeblC)M4^!1AFvx zwilp$a;{c9M4rkXvw_=tKqs?};E=TN8+hMJj6kIZ@%5jB; z3r_u)dPOWTUX19~%`a@Hq3;rEsW%lPl`GV+habmum><(BwzNm_pcC_xp$dkE_Sjr? zP2M0>B&(QL9l&G^)6BH&Pw>1%6FSP`B+nbz73|DQVMCf2K_QI!s!%j)maaZB%<7!I zidB?it*celE1Ka&9g%PW5VrL&*{i>6`d+CEP7Bp9>2?eqq+!FF7>5}Q&g_6b$cE!U zq-#Us9Dk6#2Z}qP;tb(557#iU;SSdb#W%95YQbGWhiiz!^kP$2E+q4Sc@r+y1Wf%g zI80ww^PoYyqW9)Hdmx%8FH^aNn`R=SsFE7Bz{?Kpt~RAwho;b7mWPu}+*if}gqa^OcczwM>m9wcz)H>8YaD?uF zm5y6o01&Sl7oF#dFFWxWBJ8AUh4{BbF2v9BmmwrG+)$kz9c8t%^L{qhFau^PGdrAi z(pk>2Vcz`UD#TDl_lco?Vl~nPN_N&1jUWXQC9zyPhXPI>S6)Jahygg1A_EoCtelDn z~)EtdXjg@!aJ@ye8DWjl(vF8tv9GTgKT@ zTv^7dUY)jS2a7D&0X@ry02K`BJ{j5SsI$+y9l+NB=U!Qtq~FTdU9*O6EejceN=G2K zFuNp-ztGPKv+K*WZ%$e{_Spi>sxfk<`j5VyS0-uoY3a^(hR$HO4uzswHBUtimowI; zf8eCtEu|QF%pJ60{OxCZ#889a>YMJB^$y52rVxZad1(a~2M@c@h+|zO+2L_fLAs2xjDhQz`&0_p_ zdgul3|MGm8r{B4PWI(wW>>}XH> z=LN@B89PRkGY`%?Id&>1IcVJKP87o8mxb*=GB|!xYd~*nA`VJu4eQCmE*hVx)|!Zu z5n2;I2FbSq8IOGR zd)&~DG0|aDrZMwuV}yku5z`{wxEHckn{Scph*Es%va*2^6eoH1g?O_2K*saIvA4=Vb5)!P?LKs0sGSn1ka7f{aw4}2LTTiq-F+b5`QYvg#nY@| z!6u)i!D@ie0(gVZ+EK`WH51uk14GTvVje&1wO>Az?H_%AkXZ!b?fbL?fGK zIiegDQ{*3N-)`Mz{-_SkXxb+^&_Wvd&~|L0j*2hwgL=``fm)Po{{?N#al>;sW>GnD zkj7^1NXh-+NDUg?<`#Iat}SHDH^GLAuB95J;m}BSFu}x8P=^^AurV~k;zm5!)Y^jH zZ8H<`jkavrhBowoYfUS%{-Y{wxlBDf&SeDBrjz;TAz0MT2I3u17s}2{IBm=G@aLpX zQe@%!V(FX3(^%x7h;{nXEE4d#1zD6UQ<PKY&16vqxz>l<&>};C z+g>Wz71y{CL0W1;8a5#f1t|caHajS-e&nw# z(dIF*7R1oP6zP);RfQ}A8bHaYIBc9Dtxa2W%<>&M%`Hz{WTwRMr}3V+Rw>+Iv6+ur zyyO&2t<|>pRxvM*_)4N>ebg)-j0ce>C8jgD<14D3)mN?lv=p>sK#f<~u^u}7T`FYh z!zPIu2(e*}?+PEje&;~j&NUcl)<7OGvtsG6Q%I8FVKgO1#~R)TI-`!$U3EA?&~N4k zc7DYE8NNuTpyODaR)y(fldKqOGI~7?)qVEz*RG@|W6xpi+y1+fwYDnF%~#!aIi1Z} ztM_5Mln@h@Bpyh>9!OG|WtXjcOt7}YzhwBTgu|#*w{Dh?s{*LcXW8~An2*J0W_gIh zmKw7EN(GFoD8SgpWpSEU=m(X+HN5G?J{=_u&Ehq-YqIp4(W_PiRoHh%EDA_AnLj|- z_@cs;9jgy(101$}!|px%cKJK$tJzwp*+FWzM1-NSGYuiLh+0=gkE>6GYDmzuRHe~L zWn!O#@ee7S31?75`A|+^m7%MyZbKES*1UgL5iG5Cb zlB5Uvf?(i*1ZX=43E~C17S<~aimVaq{(RKz;>N}9EZ0e2LHWSFq zqu`{svHl_otDm0ccWX4b8=2h2z@ZDm#|9kq^Tv|pE*gqI?1A)|{m6z{5Jb`T!omY= zCE^@xMh&4Df%i7!6#x>ugde^hu3#4og|{+&NI)Ik5As15X97Apu5V6{AzT zuor?pwpGMW$q-e0cV<^57X7yjQ!*u24c7{us>2BG^aYvz|)vG&8dKQf_Hg5V_&8w_Xt%{$;Ar>wYhB-9}@9JhIB z1c5k!478Ecm&DgfD9tz8dJ>nXMbWU2qN6N{pG8U_7FC-8qa7qkLZp9|NlUF@LG2!- zZ&5F#I%3(i>P1#)vqBhMIEzR|iIz$+v^%I$bYZlQ?tHLXW!v_o%&77xlvb^Rs}@Gy z3_-NH=@N{J>G*sr&1Gc<|1w2qO*X!%vz8XVM_W3fSNcOWHCY|5sV8h{cHaGWHT8ro z&Dnd_G)??66ghlTw^E;LY}>-}Ld`8Q9i>6j+f*?6@9)vvbgU2;S>Y6<#D=Lqpumc)%23<)d?L4!4ZPn^2ff&d3Tp@0uTOJA{xyu)Kb zi_s2;1x+kWgauYU3k`?E0!vm22ceQZNc>DA)-;Y4Rpg5`u&MKZK1 zEeh{S)+kj>4IL5nEO92rC^hH^5IQ|T)VUfuBDe*M>=Y8MwbGKchm?qREnJlZj0<&! zSRFas8BIdIXf|{(ntmKZT^z_tMR%}3MX)x3H5Sqw!8l-hG}f4qfjIxs0h$qD6HqY^ zbN}d0QAfkqT#@pah-KU2#Ip&9v4tL*XLU4JYoWR*emu)^giel(7iQT+JdLU$Jj*ob zs6;%Q?fYh_r`iS61y~T%W=pJ_e5scB&ogIoSnm9w zI-U&~U>(ec86n#p6*+-AHca~IPqZB|$6=EVQQw>fVL}eEDj9E%z8N*;uCsUhivKe2u}T(IswOGoAOCAlt<)&g>_&^42BNxu#?o}qgR=as zjoG?V&5xfUW)Cg=8%t5N6h%@LY77Z1uWNs(yc7aL2ni`bJzI@RAd%Y^dG>oczPS1B zd6#UXDsAbLX9lyAyMEZ?ims8YQ1gR+R{Kpt=d;UW^iKr1tdNKF#f0KKKY9`JH)e;_A&H&VXY?Bh_%UTm+A+6TT2&z!18YR!nKBrbk7{o7$eN4|PKz2@C4cEy<5jJbl2VOOG6}qaC zfgCB#_&fn{O3NhDAd-*4RP>@s?G2`T0LT>8)W&sT+ zSZUab;+-r+$UO(OcIH`~SiG&;C})6?FMt_pGQebJ0I+fkU<_dlu#y2r1OX;c*l>m- zk%OW;a`J{UJVb3<1WSydsJ)?zVbyVbka4_Z1X>Q%9v}@q5A#ij*HjYvso;WV#dgdS zoDzUzw?qJ2i@Vf}oABVk5JIihq|nxw?G}F`Py6GiTDY8d$K?l%%fFp-x%}aBe3gn$ z!pdSD0y|R?>f&$99qC0Ky-fbJkZj1IzVK&T^?4t)X>R(OR|NBCHwhN7XfjM9tj^G% zA_SZ6c|~xP|IPG^uLzC~c6~K{`W3+?$)6VB%!vhYQx1QLInkyVeu9;vffK^NkMIS7 z6A9ndxr}Ab85q?bLSsB$_!={|NZ+tU`sVMM^bP-;rEiOzsJ#)HVBd|TMess1--enb zb)SG_z4*yo>K-g@H>)wVQKZpM>(cUKF%}_RseuL`9#qSxx)~uV@@)DKxxxI7ItRvw zYH=p8qyxhx;_ArjnXH8EY68W`ZW8-K$=&WMnOQl~qbn)JQ)DAkL9TB=22)|oKCIt| z+D#G`YpW#u*!%f%<}Y#Pqp0E>$!_S1BqBv}$*ZoFL^7I4?2-g)ibUdKj?26n>?e?f zksW-TEaYIb!A5nk;Yna1W}PIol53KL+Qcb;$qdiQ3}tQS*YJXXGNC~XCp16=OGtGp zx&%5pp5jOs<1il(2(D_wPU?Y&rhFbN^%%^l_Q=@y8qO>~i++s-d4m{^GnvOiENYZU z5@P=|G3dPT86yV63@RrEnS?}GH=%M?U3O)fh*yzy8rdrB8Bj#XfnsUuc%VXRwMBqQ z{yD%H{{2oeP-P&}tVkyV(F$}jDU*iU&TL3rD&^N?U?qOc%Y|Tz3{3vBLeNSf`%DPB z>_?@bYS$tKE3V^?+N(#<{kPC9`zN&k1-bWWpMJSoeTBk}g|s|-3_nR&iX7kaj#`i1&p>4YLjO@zQto8m5dU*sNIW?tIZQzAP&@H@^(xiI@Q+I@iv`%CQosmwNrK9tb*ILMBUyH zjkvBxUUj+Wq$LhwB;9*@aD;0VCzAxEOfMw0hO4cbS*@PY(!MAWt@5(jz7w`?*{dEo zmUeQ|v4$+v9u)y4)oLHrY0AYVRP9q0O_LzuwpC|MkOMloBfW_OA30p$C&mXRrm0)a zSa?1@v^DUd!v#KYxWEs%z{Uiy#K|K$u*OZZCy2x4Vg6zZopXp#CPFQIVub8*#rI8= z*h@~floJOYcbKpRhY36KFkw(5QsZa7UsQh_aUOJWv_p0TX5%i|YWP%#%u(BPHP#`+ zU)pO03vOi$5bzIrv4aD(35C_OjZ$r1T`MG6i^lJ&A!&Y$Rn%!Bb+uyF4wKOwx;(fE zn>_@iZInpH);U>15g6hER)(WhusFeP(;)F5OS}3_%WgiG7ERS*H-}k7NQDSPT@tJko z4%L+VGEa9w6UqWbjc%1sq4qjNdb8zO`iJI1uxt6EwLGoSY8mAo0oofNpODfPkws$>A~sag*DL4_t>vP8|#gYLQu5cA~Wsi?MSz`hc|i; zbq~B9=hlt$wm{rreyp<95^elWb8EJFd%5nL#*b?(=6kTtd?5?}McEDM^S!0+PIdgw z)@9Zfx<;GOjbK|SJrl5lIcY3JrW&ekYm5CNs#on{lS}0=$8Lv z=pB)QBgry3XPS{9C^UzalQgtou$Vp+2eV(ZDBzSN3=$ebNJhrbepQ3O$qdMg(PT0y zn$d1jt%IF?RxI)f>sb;_UF6wMCb#@O8}v<0j~xj5&Sa$|$yt&oy9jBEjmee;>_W(7 zvxyKVqdyCRtB6?BpULT$`^f}E!Xdr2LGf%f3DGu%1&-ot+p#RvS(4UICqJiD&-H`! zwF`sUFIgnmkThxn0~67*MKaQL3-VSzk_j+fA$@pZ@JCUbFe)1aSiliRWpI*gtlo?m zN{?F#58%%28VR%LFL%Uq(^8pYEx?l3d&%R(&S&%qk@k)c#FZ7rY~6<99?7!+V2$ky-S06UA|Xc z?8g3#F@p4~H~W*5ra4C))78+1XbMvH`izpCx?HeEb8^KD3z-bd6W6}z027-}6pJ1f zK)+e6ouZM?@!n+h3Z|)bp#Yub>O|+@kE@e!rnRf66^XdRLA9b=mlUQIgKCEmX(&YW zsc;BZpU(PWb_HR-)k2NjX)%b6k zxFQ-{H+1QScF*~|EE?LdZgB95i{~E`U9xWD;D+^)eXbkcxaHDl-j&houO8m8y&3uP z-yv@NOk4FYuJubL&pYot&l@>)dGM+JVBb5^pWhVh2=?8SZn`;G6x@Duy7%T_YUyJ) z`_(t4PoGhkoc`m@!Ny6C-r`r=eb0kd_1BC4{+9HQZwco1?7G#jw#ipNFTU&6^tM}q z*Kt+nzupqOFSuuSdh@NpC+B?acE37}grv+L%g5#Qt90FM!KFw2;0~36zkAqighz+s znGb)wIK4Cd$!)=F{GX+ZcLx^+U%e~+!0upPaP8gcmv;we1pDqz+inj&HEUPuS0}Xv zr9l5ZmRO-;wFN=di}$4IcWw`+&)TOLh@wKkACEu!;m}mvqI*X$J=t{+F$&qQ=zam+ z0eKLjn0s+6s-Auj#N&MTj6&%AiT?xqXXNqZ20Zz9kzLI1B3yp@$-lsp2}M;If!K%h2;~VN%-N8|lKd^`66a>2HiKh1ANA`^P?+iZW`@bA{G!1Sq1~-3rWW~L~t$y&n zz3F$~6Pz3z*qctiFL+n5>tpFh?hB^(ec)q$wfC`eJa0eG0UmFK=k>4f;?I3-Vg84oUB^V;ad1&?;N&ur&)-Ik4)FIqRe&hyeU z|5xxO|4Sp44+YJ~yk-NSh{B)N8TzXxh@VEZ+Bdd#r zpUf(Ks!;u+pV9-*NjKCB5BiU$%>MnY|7Rly8inWk{9mL8UdiXL(vO^p^Xv4Qew^Qo zoD&zi`}~il7hb^U$J663#CbUV_X`VO@jsb<`G4R%GV&*D3v*`rKTaRLn$Mr6H@y+( zXXzim3FqhOi+18Xlm0tS@t4KwT_b<{=E9EYZGl%1PQCQzcNS(4`-AT+{Eh$Q$Z%Q! zkS9l0J#22e;OlsQb>u(34g~&_>5reL_^*z9=4bBn!LA~o=^MLoK0C6kR{W1XA}u}6 ze5V~R-}L)9!QO9;eDcM`E`@$!nT6iCfftOFws6@hidJucvozRIG2L7jMGd{r4j$Z7v=^!#^;x?z$q)@Z?DU`-`f5dc?ls z-}w7SezdPhGd!7o`#UOf_3^FHlrk1$}@33oBkb6 zu=mlC5B8O;)(@Xzq1T;?voBqJT8aAnDn0UaV(t0$$TO#xtk#p(lvL|~ma{MY_<4%; z@$|aaDAvR2nm@wbJu-6SYfBsEhtIy96I%Rq*IP={)BAUo{wdh?j**+LE&Vbm-Lbo~ z`rUNf+e&lO-ES@Rq`R&!eW(Jj-+o7D^@9}!%zNkVpx6worF*X>+Mer6lhOm%l}aNA z-d1{P5wuKwM+vkX82QEha-U3}_(Dl&dH-LP3@vy3Gr;U0S@)Fte6=460a1XnZ{(*z zXlVKA5$5~nb8tSJ-V%kN9wEdMK0Ny^aXbJNI!XNHEB zzkXdPw7mO#oPFu0KUSz(#W?i3~xLmc>lhUOWqYeP^Ko`?+f1^ z9@yVgy=(T!z3&VEI826z)@|8-@fGVg46VL$>((oVhPT6&CwdcmpTB*0y|;PzsuS04 zzjEt_p^LA$eCyDL?b|nAvBguWwX0XJU2*P;#m$d_c=fW?XP@8vK7aL^c*UZ4)gtHf zn&oSgCFia>CtkDmycLTUFIl!?aTc2$-<@aiWOvURb8vdhNsbxBoA7Zl`tBVg`9QPS>qFBA#ofZ6yiW$6t6i{(6~Az zRy~)BphKpbpn6%NRjUrJU!LD6YOWZ(VrcEwp^cZX8`_AjmSbUMvWli#wQTWfC}8!< z#S51$S(eiPm{{2i9awYfg40KnHT|stnz=Q-2iBaj;Doh{2hN)yi3?kO&dN0qL?W^s zSJH_KPFyfSx`oRYzxH(*EsseNFI=3F;X&RDGrAoUuwu>Xg(sZ;(vwt1GOqNM@!2mu z@ud@#zG&I%m1oDVTWP7rC5jiFJFqx!*kzZmyL7|Z8+L3MT(;$sE4)GXwtmA^-r%~c zHw-P?qSs5-UA)2G67LNg*AHLjUAAH4rI!tR!&eNi8yrB@-t5|F>4tSk25-maC07hx zzK-y#w{BRy@r@h2tsAe}F!)E7)Lxgm^!C1J!&Y*%(iUEE<(6S9&AnM|+^dry$*2ff zeeq=*F5lp-zhwOY`uw?|IUFW+#rJk|&uyl>Y>=7&QbS2{E}Z~ImhhY(&e zbnvzWOk47^g?;y?Cb73AS0skkjoY0pBRQP z+OYj%duir8mb%hk-X9*d#`8|Tvgkc?N74H>&x#WkY`A>;#X}pn4sY0U(vEe5i#_kM zJBwaKoUMc_?s*%x44)Pc4XwL+Y}!10>mBKq2f~@5(rvynz4d{xVefZdnSSzt@CbX~ zdu93$4}`}~okg4{$WvwOxxw6Y=Kl&CiNYrDpiZZ}e%v82@5RF+Dk+y{8aWu_^%unu=K8?cNPBnZB_X4u@Mx05B{iviAC7B(c7WOH{dDY z1*8)0AV3w?yDBX=|CYOvpBL}?Nl$f3t9Kqm*dD_EB^V#rjIfcG(Jzmn!u3A>Q9<@2 z?k-i3iae0Hiu-uW`?v2%Z~ai%XcN|UzoF=*vmXo_=|6lZd~vT3_78aN#(f00?W%O< zgW*wKLddME9Kx{ntiUgk-%9+XFV}GUdE(ta>#5%D3l;iQ$$5?C=5@@&<)>f%JwE<; zC|kd0wSFiAJ-J`n^H4bHeBplY&wHx>T+G8-E0f1Plsi7p{p7DlKg&Pas8>bHY4gMr zCRD889?xj>-m6FBo^YDQ9iww7qFUv#mUt(g)QmT_176I4R*|1>jqED0QT@kS6Vz)r z(t}t9)V8zU2$P&_8D3`H!rD#SRXK$%CG2zya_l3&_4uu9@ifN4Prt3NSK#uNP&^gk zF8oClTXC=B5z>Vvy^C?=3hAw`;#`o$&*QFtQ!)MEN5V^h(<*qPwzaxu(UB&Y_c*on0HAeB@llkw#{}p^+TR;RV;NJ*X zj{C}X&s&6hUzXq;>>2X^5dLyMp80uG%{b9m0=p;FI1ugB*p@RWJF zdFJq($&>IrugB*p@RWJFdFJq($wLmK4Nnms0Gm-r1|o{Xj^%m4;w1oTW~2^Wu<3R2 zP!|sXy&fJg=1t-O5#AIYnWCogOy`l+NhYd3o>@GC@CcqcJclc^rOf0HT4+SUb)E*# zT%LJ6NAn!R^CBJ*DF;JoGrYHuXEpTaUChf{d1Ra^(4GZwRRBK)P*8|?`gwNo(4z6) zUA@&;6S3L4dMA-R1zbHsc8>5?WVgVbgPml^j_8*ahs5-Si6G8j?)KPim zr3(LK?)%DspZrx7b0bJrk@=N`R=E~{o5e2)z48|=%N26uik$g{B4dqC_z);g*CQ{F@aO_v<^a zsBo?CtfK7u#DgFExD_y3Q#GZ&^O~wTqh>`5B{eC@iv9epWp3o<6|RIvM;_C?ln78w z%=*NSniWkPYUPpFRH)T=UQ?k~->RtG9JP`Xs$gDGp*8}guA)K7(VnYlsxJpneNk~ER#pldTx=Iqca19ZZA~2Gxd3i?FlEgEzkZ_ee6;}z0 zB{f*BnNep+;u~2>xDxnTK6%C4OV1e%*9cdy#Z0+GnIV^wrptu~Z|tpJ z4|O$JB+OW$s1}U`k+Q?hSwiim@0=xC2@L-oy;5q5s#`Sx>aMH$wPyB&+8$A$VsFn!WNf^ zaK#1C6_3wTcs+m0Jl#BVc+TWWc%Ike^Avc>Jl#BVc+TV@3&+GXuoEn}`Flowo+>Cm zKRqEWOqwI_{863tE(#SYLF35ohr;6v>A>FbSdb@8{QK`Pk!AT@@TT;dz2TBx`S;&6 z-hWp5^Sz8O6?o4Cfh#_m1wJ!2@YaupN13Hy<<04*Kblz(uCn*p>GK~AOBT52=Cu7| zS>R(?;JF{m0-wG)JwFeeev5LMoxV2@?7t=bP#$<$7WmUVaQ7|gZ}PxLvcNMx9+nb~ zj1JsFGe2~1Z`FUR7k?eM1kxo8?s-pd^>xR;D2k#5uU&AJH-F2OgM*G6!D0`%?CCKQ z%tV4ofQ&{J-rY`kp}h=FD^>g}A%CilY?U&;_P(UIT5n0wt`uscfE3nZmLh)iJ}Spd z{TFek7`xh^isM}V67~zl=_1qj5=X+as6SrCF$;eQ`v_rv&5Iw!Jwjyc^dYZebT1y{ zzu3RGx7Uk*POPr{OL;*-@t^J?3+Adnf;+_|i2bqZ8fg*s9mSza|BCx`dE)wd3r;xk zq?7wzddjJ%ogNP?WV+#^yNjM|J{PauK0L%yf^^l#!&4`%9zI=GP8<8$(DCngr?31( zcvQRW8b8`y^q$(CZppuA-Cp!+x2N~z-)Fn;zsFbjB!_sg^Qr+L35 zd;cx(>$CSZDy-icT)}iRPY%;9>9wB>kA9tCTEHWi^y|k})LVJ-sJHRHn@2;hJ9zZ_ zW|rlhytl@?i|@O6-kJI%;fqdC_Ir7ht$rtCTu}BYPiwM!_mKZ_ hR^LW8*YljF8294Ca*Oyu+)M&g;-~p2to+rQ{|9-Rxe)*W delta 84510 zcmce<3xFL*b?4pH_c3?o&Yig$&5TBxk<_>K8rhO9`5_D0#%ke*B;!ZGNeHh%2#?$m z!6VCp-2goX15S9va18@XHftUMLNLfS*d*Tq#sMc`32|6pNtPrgkHty&5@$Erm|d{H z-~Uv1-@YRW<7~c_J-50~ojO%@>eQ)Iryl)hpWpDG{(jwaf*0QKau)=F`$RbR0++h< z1!0;7JOz5-H3(i%Nd?j`?^OccEa0`KSKjLu^56kV`1b49z5Qd2xA)eLHhiSvz5S-C zw|{Kp?f-SXYxdT=jlFB!?$o`;y~fjjb@)53<6h`q7=--(Oi<(ZMZqM$KO409eQ{9X z_a&6~h3=&m`?6q|=btnDZZN|0f;}GzW_f;j(BSvy4gVFv5YN}!@1oH;Y7}lrEx|EM ze4~Mm2M*L%8st^M6wm+0Nc`KN&U0eV2ZAckPczI*tq_;l^W{e2iXftyL;(!fLWw7V5r%s@qe{a0e7rDJRLS0mGPRZ zG%B^BU?`{rL-lZNr4rh|dbJ*sUX2$9kO@XdN5d+w{2Q-2{}0NpUa3@T&hb+Vg6hb~ z$nfxRrCu3wLqqinWk~shh(ivlEB*y;Rl`+UGp%}MRdW=y#!$UhaT8-fvr%uTB2d2G z{mjqQhMZdpmzKi%F!f1p{oH>Jn?oCi+`%w#hg{$e2iLhPgA>j@J=o>03jWl&tAke$ z|2lalE^WT>S*HcYV&?vrAk z?s1=SyFTgeb^njs^_yH6TOc#_oin>dno;$#B#3IWz=HYk zW3Dq2txkeHVIx|7Ah@6skj-Q?LaA3rBkc>)3~92d_rx9F6OIbh*3ald(tLTRNs;Qw zYZsIH<)k``QnW9M&%BJnoyl9}ShurBC>!Tt7(ZE=qVO6@un`ujR0Kq|^)nhnR;9iY zY8%sJw433;K|T3oqfwZI$7qChGpc}CjcVP_?x-0}b~_hFV~IP~IhP12O0 zb{_&`d}m;9iR;GTz=&w#SVT=nL2n%D)D(0(6H%=dG@EL@`DiqGd}xt^b|t8jNqU$z zBjUVHEg9*ISN2DvQ96FS(}>2QO1`zILE$1WZ|K6|?paRBf`d?uCP%}jHD9z&6n6$; zr!iUup0tmXbTWDT@ycQoS`*Ru0>v1Opgc+q)>zb`qpE32tAj93 z16wt#swQtL5Y)l2N{T0qZZoNg^mtN(G{N{{wDwpuc@!?KO=e*kLABdiOH_NYMTewV zVYdljxYHW^wjP(9sJWfZ(D(KrvGg{ZGMQ65}qb(kzS+&fW zt&!2uX0(HB)b#*g(9M}!v+8%|q8jWN9cm&GAk4yVI!betJbtuxO@EYzeflXHwxWi8 zR;gj(KJ3fewfRHZ6*eQ23r$4m;#3u@sa9vZpflHuo?Aey_7F$m5KwsJ#9n|CD%!N{say#FOvox4Dxl zl6Cdl-IJ?GTJ&|Aw6>xd#;

    *%Z-1pk=3tW{ymU=SRQVG62xR4;*A6KSdK;n7Db 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 zstddec.txt - * ``` - * - * The base64 string written to `zstddec.txt` is embedded as the `wasm` variable at the bottom - * of this file. The rest of this file is written by hand, in order to avoid an additional JS - * wrapper generated by Emscripten. - */ -export class ZSTDDecoder { - - init () { - - if ( ! init ) { - - init = fetch( 'data:application/wasm;base64,' + wasm ) - .then( ( response ) => response.arrayBuffer() ) - .then( ( arrayBuffer ) => WebAssembly.instantiate( arrayBuffer, importObject ) ) - .then( ( result ) => { - - instance = result.instance; - - importObject.env.emscripten_notify_memory_growth( 0 ); // initialize heap. - - }); - - } - - return init; - - } - - decode ( array, uncompressedSize = 0 ) { - - // Write compressed data into WASM memory. - const compressedSize = array.byteLength; - const compressedPtr = instance.exports.malloc( compressedSize ); - heap.set( array, compressedPtr ); - - // Decompress into WASM memory. - uncompressedSize = uncompressedSize || Number( instance.exports.ZSTD_findDecompressedSize( compressedPtr, compressedSize ) ); - const uncompressedPtr = instance.exports.malloc( uncompressedSize ); - const actualSize = instance.exports.ZSTD_decompress( uncompressedPtr, uncompressedSize, compressedPtr, compressedSize ); - - // Read decompressed data and free WASM memory. - const dec = heap.slice( uncompressedPtr, uncompressedPtr + actualSize ); - instance.exports.free( compressedPtr ); - instance.exports.free( uncompressedPtr ); - - return dec; - - } - -} - -/** - * BSD License - * - * For Zstandard software - * - * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * * Neither the name Facebook nor the names of its contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -const wasm = '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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ'; diff --git a/examples/jsm/loaders/KTX2Loader.js b/examples/jsm/loaders/KTX2Loader.js index fd7dbddd30..88fc0222d4 100644 --- a/examples/jsm/loaders/KTX2Loader.js +++ b/examples/jsm/loaders/KTX2Loader.js @@ -6,9 +6,6 @@ * a wide variety of GPU texture compression formats. While KTX 2.0 also allows * other hardware-specific formats, this loader does not yet parse them. * - * This loader parses the KTX 2.0 container and then relies on - * THREE.BasisTextureLoader to complete the transcoding process. - * * References: * - KTX: http://github.khronos.org/KTX-Specification/ * - DFD: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html#basicdescriptor @@ -16,33 +13,43 @@ import { CompressedTexture, - CompressedTextureLoader, FileLoader, LinearEncoding, + LinearFilter, + LinearMipmapLinearFilter, + Loader, + RGBAFormat, + RGBA_ASTC_4x4_Format, + RGBA_BPTC_Format, + RGBA_ETC2_EAC_Format, + RGBA_PVRTC_4BPPV1_Format, + RGBA_S3TC_DXT5_Format, + RGB_ETC1_Format, + RGB_ETC2_Format, + RGB_PVRTC_4BPPV1_Format, + RGB_S3TC_DXT1_Format, sRGBEncoding, + UnsignedByteType } from '../../../build/three.module.js'; -import { - read as readKTX, - KTX2ChannelETC1S, - KTX2ChannelUASTC, - KTX2Flags, - KTX2Model, - KTX2SupercompressionScheme, - KTX2Transfer -} from '../libs/ktx-parse.module.js'; -import { BasisTextureLoader } from './BasisTextureLoader.js'; -import { ZSTDDecoder } from '../libs/zstddec.module.js'; - -class KTX2Loader extends CompressedTextureLoader { +import { WorkerPool } from '../utils/WorkerPool.js' + +const KTX2TransferSRGB = 2; +const KTX2_ALPHA_PREMULTIPLIED = 1; +const _taskCache = new WeakMap(); + +class KTX2Loader extends Loader { constructor( manager ) { super( manager ); - this.basisLoader = new BasisTextureLoader( manager ); - this.zstd = new ZSTDDecoder(); + this.transcoderPath = ''; + this.transcoderBinary = null; + this.transcoderPending = null; - this.zstd.init(); + this.workerPool = new WorkerPool(); + this.workerSourceURL = ''; + this.workerConfig = null; if ( typeof MSC_TRANSCODER !== 'undefined' ) { @@ -59,15 +66,15 @@ class KTX2Loader extends CompressedTextureLoader { setTranscoderPath( path ) { - this.basisLoader.setTranscoderPath( path ); + this.transcoderPath = path; return this; } - setWorkerLimit( path ) { + setWorkerLimit( num ) { - this.basisLoader.setWorkerLimit( path ); + this.workerPool.setWorkerLimit( num ); return this; @@ -75,7 +82,15 @@ class KTX2Loader extends CompressedTextureLoader { detectSupport( renderer ) { - this.basisLoader.detectSupport( renderer ); + this.workerConfig = { + astcSupported: renderer.extensions.has( 'WEBGL_compressed_texture_astc' ), + etc1Supported: renderer.extensions.has( 'WEBGL_compressed_texture_etc1' ), + etc2Supported: renderer.extensions.has( 'WEBGL_compressed_texture_etc' ), + dxtSupported: renderer.extensions.has( 'WEBGL_compressed_texture_s3tc' ), + bptcSupported: renderer.extensions.has( 'EXT_texture_compression_bptc' ), + pvrtcSupported: renderer.extensions.has( 'WEBGL_compressed_texture_pvrtc' ) + || renderer.extensions.has( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ) + }; return this; @@ -83,200 +98,462 @@ class KTX2Loader extends CompressedTextureLoader { dispose() { - this.basisLoader.dispose(); + this.workerPool.dispose(); + if ( this.workerSourceURL ) URL.revokeObjectURL( this.workerSourceURL ); return this; } + init() { + + if ( ! this.transcoderPending ) { + + // Load transcoder wrapper. + const jsLoader = new FileLoader( this.manager ); + jsLoader.setPath( this.transcoderPath ); + jsLoader.setWithCredentials( this.withCredentials ); + const jsContent = jsLoader.loadAsync( 'basis_transcoder.js' ); + + // Load transcoder WASM binary. + const binaryLoader = new FileLoader( this.manager ); + binaryLoader.setPath( this.transcoderPath ); + binaryLoader.setResponseType( 'arraybuffer' ); + binaryLoader.setWithCredentials( this.withCredentials ); + const binaryContent = binaryLoader.loadAsync( 'basis_transcoder.wasm' ) + + this.transcoderPending = Promise.all( [ jsContent, binaryContent ] ) + .then( ( [ jsContent, binaryContent ] ) => { + + const fn = KTX2Loader.BasisWorker.toString(); + + const body = [ + '/* constants */', + 'let _EngineFormat = ' + JSON.stringify( KTX2Loader.EngineFormat ), + 'let _TranscoderFormat = ' + JSON.stringify( KTX2Loader.TranscoderFormat ), + 'let _BasisFormat = ' + JSON.stringify( KTX2Loader.BasisFormat ), + '/* basis_transcoder.js */', + jsContent, + '/* worker */', + fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) ) + ].join( '\n' ); + + this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) ); + this.transcoderBinary = binaryContent; + + this.workerPool.setWorkerCreator( () => { + + const worker = new Worker( this.workerSourceURL ); + const transcoderBinary = this.transcoderBinary.slice( 0 ); + + worker.postMessage( { type: 'init', config: this.workerConfig, transcoderBinary }, [ transcoderBinary ] ); + + return worker; + + } ); + + } ); + + } + + return this.transcoderPending; + + } + load( url, onLoad, onProgress, onError ) { - var scope = this; + const loader = new FileLoader( this.manager ); - var texture = new CompressedTexture(); + loader.setResponseType( 'arraybuffer' ); + loader.setWithCredentials( this.withCredentials ); - var bufferPending = new Promise( function ( resolve, reject ) { + const texture = new CompressedTexture(); - new FileLoader( scope.manager ) - .setPath( scope.path ) - .setResponseType( 'arraybuffer' ) - .load( url, resolve, onProgress, reject ); + loader.load( url, ( buffer ) => { - } ); + // Check for an existing task using this buffer. A transferred buffer cannot be transferred + // again from this thread. + if ( _taskCache.has( buffer ) ) { + + const cachedTask = _taskCache.get( buffer ); - bufferPending - .then( function ( buffer ) { + return cachedTask.promise.then( onLoad ).catch( onError ); + + } - scope.parse( buffer, function ( _texture ) { + this._createTexture( [ buffer ] ) + .then( function ( _texture ) { texture.copy( _texture ); texture.needsUpdate = true; if ( onLoad ) onLoad( texture ); - }, onError ); + } ) + .catch( onError ); - } ) - .catch( onError ); + }, onProgress, onError ); return texture; } - parse( buffer, onLoad, onError ) { + createTextureFrom( transcodeResult ) { + const { mipmaps, width, height, format, type, error, dfdTransferFn, dfdFlags } = transcodeResult; - var scope = this; + if ( type === 'error' ) return Promise.reject( error ); - var ktx = readKTX( new Uint8Array( buffer ) ); + const texture = new CompressedTexture( mipmaps, width, height, format, UnsignedByteType ); + texture.minFilter = mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter; + texture.magFilter = LinearFilter; + texture.generateMipmaps = false; + texture.needsUpdate = true; + texture.encoding = dfdTransferFn === KTX2TransferSRGB ? sRGBEncoding: LinearEncoding; + texture.premultiplyAlpha = !! ( dfdFlags & KTX2_ALPHA_PREMULTIPLIED ); - if ( ktx.pixelDepth > 0 ) { + return texture; - throw new Error( 'THREE.KTX2Loader: Only 2D textures are currently supported.' ); + } - } + /** + * @param {ArrayBuffer[]} buffers + * @param {object?} config + * @return {Promise} + */ + _createTexture( buffers, config = {} ) { - if ( ktx.layerCount > 1 ) { + const taskConfig = config; + const texturePending = this.init().then( () => { - throw new Error( 'THREE.KTX2Loader: Array textures are not currently supported.' ); + return this.workerPool.postMessage( { type: 'transcode', buffers, taskConfig: taskConfig }, buffers ); - } + } ).then( ( e ) => this.createTextureFrom( e.data ) ); - if ( ktx.faceCount > 1 ) { + // Cache the task result. + _taskCache.set( buffers[ 0 ], { promise: texturePending } ); - throw new Error( 'THREE.KTX2Loader: Cube textures are not currently supported.' ); + return texturePending; - } + } - var dfd = KTX2Utils.getBasicDFD( ktx ); + dispose() { - KTX2Utils.createLevels( ktx, this.zstd ).then( function ( levels ) { + URL.revokeObjectURL( this.workerSourceURL ); + this.workerPool.dispose(); - var basisFormat = dfd.colorModel === KTX2Model.UASTC - ? BasisTextureLoader.BasisFormat.UASTC_4x4 - : BasisTextureLoader.BasisFormat.ETC1S; + return this; - var parseConfig = { + } - levels: levels, - width: ktx.pixelWidth, - height: ktx.pixelHeight, - basisFormat: basisFormat, - hasAlpha: KTX2Utils.getAlpha( ktx ), +} - }; - if ( basisFormat === BasisTextureLoader.BasisFormat.ETC1S ) { +/* CONSTANTS */ - parseConfig.globalData = ktx.globalData; +KTX2Loader.BasisFormat = { + ETC1S: 0, + UASTC_4x4: 1, +}; - } +KTX2Loader.TranscoderFormat = { + ETC1: 0, + ETC2: 1, + BC1: 2, + BC3: 3, + BC4: 4, + BC5: 5, + BC7_M6_OPAQUE_ONLY: 6, + BC7_M5: 7, + PVRTC1_4_RGB: 8, + PVRTC1_4_RGBA: 9, + ASTC_4x4: 10, + ATC_RGB: 11, + ATC_RGBA_INTERPOLATED_ALPHA: 12, + RGBA32: 13, + RGB565: 14, + BGR565: 15, + RGBA4444: 16, +}; + +KTX2Loader.EngineFormat = { + RGBAFormat: RGBAFormat, + RGBA_ASTC_4x4_Format: RGBA_ASTC_4x4_Format, + RGBA_BPTC_Format: RGBA_BPTC_Format, + RGBA_ETC2_EAC_Format: RGBA_ETC2_EAC_Format, + RGBA_PVRTC_4BPPV1_Format: RGBA_PVRTC_4BPPV1_Format, + RGBA_S3TC_DXT5_Format: RGBA_S3TC_DXT5_Format, + RGB_ETC1_Format: RGB_ETC1_Format, + RGB_ETC2_Format: RGB_ETC2_Format, + RGB_PVRTC_4BPPV1_Format: RGB_PVRTC_4BPPV1_Format, + RGB_S3TC_DXT1_Format: RGB_S3TC_DXT1_Format, +}; - return scope.basisLoader.parseInternalAsync( parseConfig ); - } ).then( function ( texture ) { +/* WEB WORKER */ - texture.encoding = dfd.transferFunction === KTX2Transfer.SRGB - ? sRGBEncoding - : LinearEncoding; - texture.premultiplyAlpha = KTX2Utils.getPremultiplyAlpha( ktx ); +KTX2Loader.BasisWorker = function () { - onLoad( texture ); + let config; + let transcoderPending; + let BasisModule; - } ).catch( onError ); + const EngineFormat = _EngineFormat; // eslint-disable-line no-undef + const TranscoderFormat = _TranscoderFormat; // eslint-disable-line no-undef + const BasisFormat = _BasisFormat; // eslint-disable-line no-undef - return this; + self.addEventListener( 'message', function ( e ) { - } + const message = e.data; -} + switch ( message.type ) { + + case 'init': + config = message.config; + init( message.transcoderBinary ); + break; + + case 'transcode': + transcoderPending.then( () => { + + try { + + const { width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags } = transcode( message.buffers[ 0 ] ); + + const buffers = []; + + for ( let i = 0; i < mipmaps.length; ++ i ) { -var KTX2Utils = { + buffers.push( mipmaps[ i ].data.buffer ); - createLevels: async function ( ktx, zstd ) { + } - if ( ktx.supercompressionScheme === KTX2SupercompressionScheme.ZSTD ) { + self.postMessage( { type: 'transcode', id: message.id, width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags }, buffers ); - await zstd.init(); + } catch ( error ) { + + console.error( error ); + + self.postMessage( { type: 'error', id: message.id, error: error.message } ); + + } + + } ); + break; } - var levels = []; - var width = ktx.pixelWidth; - var height = ktx.pixelHeight; + } ); - for ( var levelIndex = 0; levelIndex < ktx.levels.length; levelIndex ++ ) { + function init( wasmBinary ) { - var levelWidth = Math.max( 1, Math.floor( width / Math.pow( 2, levelIndex ) ) ); - var levelHeight = Math.max( 1, Math.floor( height / Math.pow( 2, levelIndex ) ) ); - var levelData = ktx.levels[ levelIndex ].levelData; + transcoderPending = new Promise( ( resolve ) => { - if ( ktx.supercompressionScheme === KTX2SupercompressionScheme.ZSTD ) { + BasisModule = { wasmBinary, onRuntimeInitialized: resolve }; + BASIS( BasisModule ); // eslint-disable-line no-undef - levelData = zstd.decode( levelData, ktx.levels[ levelIndex ].uncompressedByteLength ); + } ).then( () => { - } + BasisModule.initializeBasis(); + + } ); + + } - levels.push( { + function transcode( buffer ) { - index: levelIndex, - width: levelWidth, - height: levelHeight, - data: levelData, + const ktx2File = new BasisModule.KTX2File( new Uint8Array( buffer ) ); - } ); + function cleanup() { + + ktx2File.close(); + ktx2File.delete(); + + } + + if ( !ktx2File.isValid() ) { + + cleanup(); + throw new Error( 'THREE.KTX2Loader: Invalid or unsupported .ktx2 file' ); } - return levels; + const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S; + const width = ktx2File.getWidth(); + const height = ktx2File.getHeight(); + const levels = ktx2File.getLevels(); + const hasAlpha = ktx2File.getHasAlpha(); + const dfdTransferFn = ktx2File.getDFDTransferFunc(); + const dfdFlags = ktx2File.getDFDFlags(); - }, + const { transcoderFormat, engineFormat } = getTranscoderFormat( basisFormat, width, height, hasAlpha ); - getBasicDFD: function ( ktx ) { + if ( ! width || ! height || ! levels ) { - // Basic Data Format Descriptor Block is always the first DFD. - return ktx.dataFormatDescriptor[ 0 ]; + cleanup(); + throw new Error( 'THREE.KTX2Loader: Invalid texture' ); - }, + } + + if ( ! ktx2File.startTranscoding() ) { - getAlpha: function ( ktx ) { + cleanup(); + throw new Error( 'THREE.KTX2Loader: .startTranscoding failed' ); - var dfd = this.getBasicDFD( ktx ); + } - // UASTC + const mipmaps = []; - if ( dfd.colorModel === KTX2Model.UASTC ) { + for ( let mip = 0; mip < levels; mip ++ ) { - if ( ( dfd.samples[ 0 ].channelID & 0xF ) === KTX2ChannelUASTC.RGBA ) { + const levelInfo = ktx2File.getImageLevelInfo( mip, 0, 0 ) + const mipWidth = levelInfo.origWidth; + const mipHeight = levelInfo.origHeight; + const dst = new Uint8Array( ktx2File.getImageTranscodedSizeInBytes( mip, 0, 0, transcoderFormat ) ); + + const status = ktx2File.transcodeImage( + dst, + mip, + 0, + 0, + transcoderFormat, + 0, + -1, + -1, + ); - return true; + if ( ! status ) { + + cleanup(); + throw new Error( 'THREE.KTX2Loader: .transcodeImage failed.' ); } - return false; + mipmaps.push( { data: dst, width: mipWidth, height: mipHeight } ); } - // ETC1S + cleanup(); + + return { width, height, hasAlpha, mipmaps, format: engineFormat, dfdTransferFn, dfdFlags }; - if ( dfd.samples.length === 2 - && ( dfd.samples[ 1 ].channelID & 0xF ) === KTX2ChannelETC1S.AAA ) { + } - return true; + // + + // Optimal choice of a transcoder target format depends on the Basis format (ETC1S or UASTC), + // device capabilities, and texture dimensions. The list below ranks the formats separately + // for ETC1S and UASTC. + // + // In some cases, transcoding UASTC to RGBA32 might be preferred for higher quality (at + // significant memory cost) compared to ETC1/2, BC1/3, and PVRTC. The transcoder currently + // chooses RGBA32 only as a last resort and does not expose that option to the caller. + const FORMAT_OPTIONS = [ + { + if: 'astcSupported', + basisFormat: [ BasisFormat.UASTC_4x4 ], + transcoderFormat: [ TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4 ], + engineFormat: [ EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format ], + priorityETC1S: Infinity, + priorityUASTC: 1, + needsPowerOfTwo: false, + }, + { + if: 'bptcSupported', + basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], + transcoderFormat: [ TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5 ], + engineFormat: [ EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format ], + priorityETC1S: 3, + priorityUASTC: 2, + needsPowerOfTwo: false, + }, + { + if: 'dxtSupported', + basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], + transcoderFormat: [ TranscoderFormat.BC1, TranscoderFormat.BC3 ], + engineFormat: [ EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format ], + priorityETC1S: 4, + priorityUASTC: 5, + needsPowerOfTwo: false, + }, + { + if: 'etc2Supported', + basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], + transcoderFormat: [ TranscoderFormat.ETC1, TranscoderFormat.ETC2 ], + engineFormat: [ EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format ], + priorityETC1S: 1, + priorityUASTC: 3, + needsPowerOfTwo: false, + }, + { + if: 'etc1Supported', + basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], + transcoderFormat: [ TranscoderFormat.ETC1, TranscoderFormat.ETC1 ], + engineFormat: [ EngineFormat.RGB_ETC1_Format, EngineFormat.RGB_ETC1_Format ], + priorityETC1S: 2, + priorityUASTC: 4, + needsPowerOfTwo: false, + }, + { + if: 'pvrtcSupported', + basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], + transcoderFormat: [ TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA ], + engineFormat: [ EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format ], + priorityETC1S: 5, + priorityUASTC: 6, + needsPowerOfTwo: true, + }, + ]; + + const ETC1S_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) { + + return a.priorityETC1S - b.priorityETC1S; + + } ); + const UASTC_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) { + + return a.priorityUASTC - b.priorityUASTC; + + } ); + + function getTranscoderFormat( basisFormat, width, height, hasAlpha ) { + + let transcoderFormat; + let engineFormat; + + const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS; + + for ( let i = 0; i < options.length; i ++ ) { + + const opt = options[ i ]; + + if ( ! config[ opt.if ] ) continue; + if ( ! opt.basisFormat.includes( basisFormat ) ) continue; + if ( opt.needsPowerOfTwo && ! ( isPowerOfTwo( width ) && isPowerOfTwo( height ) ) ) continue; + + transcoderFormat = opt.transcoderFormat[ hasAlpha ? 1 : 0 ]; + engineFormat = opt.engineFormat[ hasAlpha ? 1 : 0 ]; + + return { transcoderFormat, engineFormat }; } - return false; + console.warn( 'THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32.' ); - }, + transcoderFormat = TranscoderFormat.RGBA32; + engineFormat = EngineFormat.RGBAFormat; - getPremultiplyAlpha: function ( ktx ) { + return { transcoderFormat, engineFormat }; - var dfd = this.getBasicDFD( ktx ); + } - return !! ( dfd.flags & KTX2Flags.ALPHA_PREMULTIPLIED ); + function isPowerOfTwo( value ) { - }, + if ( value <= 2 ) return true; -}; + return ( value & ( value - 1 ) ) === 0 && value !== 0; + + } + +} export { KTX2Loader }; diff --git a/examples/jsm/utils/WorkerPool.js b/examples/jsm/utils/WorkerPool.js new file mode 100644 index 0000000000..7c4e288af1 --- /dev/null +++ b/examples/jsm/utils/WorkerPool.js @@ -0,0 +1,102 @@ +/** + * @author Deepkolos / https://github.com/deepkolos + */ + +export class WorkerPool { + + constructor ( pool = 4 ) { + + this.pool = pool; + this.queue = []; + this.workers = []; + this.workersResolve = []; + this.workerStatus = 0; + + } + + _initWorker ( workerId ) { + + if ( !this.workers[ workerId ] ) { + + const worker = this.workerCreator(); + worker.addEventListener( 'message', this._onMessage.bind( this, workerId ) ); + this.workers[ workerId ] = worker; + + } + + } + + _getIdleWorker () { + + for ( let i = 0 ; i < this.pool ; i ++ ) + if ( ! ( this.workerStatus & ( 1 << i ) ) ) return i; + + return -1; + + } + + _onMessage( workerId, msg ) { + + const resolve = this.workersResolve[ workerId ]; + resolve && resolve( msg ); + + if ( this.queue.length ) { + + const { resolve, msg, transfer } = this.queue.shift(); + this.workersResolve[ workerId ] = resolve; + this.workers[ workerId ].postMessage( msg, transfer ); + + } else { + + this.workerStatus ^= 1 << workerId; + + } + + } + + setWorkerCreator ( workerCreator ) { + + this.workerCreator = workerCreator; + + } + + setWorkerLimit ( pool ) { + + this.pool = pool; + + } + + postMessage ( msg, transfer ) { + + return new Promise( ( resolve ) => { + + const workerId = this._getIdleWorker(); + + if ( workerId !== -1 ) { + + this._initWorker( workerId ); + this.workerStatus |= 1 << workerId; + this.workersResolve[ workerId ] = resolve; + this.workers[ workerId ].postMessage( msg, transfer ); + + } else { + + this.queue.push( { resolve, msg, transfer } ); + + } + + } ); + + } + + dispose () { + + this.workers.forEach( ( worker ) => worker.terminate() ); + this.workersResolve.length = 0; + this.workers.length = 0; + this.queue.length = 0; + this.workerStatus = 0; + + } + +} diff --git a/examples/textures/compressed/sample_uastc_zstd.ktx2 b/examples/textures/compressed/sample_uastc_zstd.ktx2 new file mode 100644 index 0000000000000000000000000000000000000000..4c7dc75b8ce33a976200206e766fb3d664369ccf GIT binary patch literal 48393 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 z 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 @bhhQgE%OF$9 zaKi5MCo2u58;`u8II>JVUz7P{B@Z&bH(c3u#bPy`99i|YDdP^E7RHXNpPs$V`!VYa z7ao5KVf?8h7;GwgB4d+j%M5h~m=+I*z??Yli87VzN3!dO>lQ!X6r1hVL^mn zNB_L>>Xd^W2>s51)zYT^H@@+AeyhzW-;U#F$IR`ir{|7uD<;gPS$S4f1oIH-1Un+L zrw_ek@K0>7GBq%=KF=8sr?-3Bq|xuxc~Mc;oI2KgGn%8m4?6hQkpAOc7B(QcjFA?h ze5RgS2VyTF)7w`#9KSE*<;ZG(4`zdX1Xp3+g~IR&_um6O(RuX4s~B^nADsHL_ffA< z^G)C;yrY3l2&_Mrah?F3Q`hp?Pv%&};byQqm`|NBheW7)7TZ>ZxsI%QO>eHon^D&s zZxZQ=tV1&|>|3g%ckTrOPck{|$ke~soL(r?K(=+6DBylRX{^<3Hh-BXxb#}gb!W#6jn6c&k z$#Bv;rw!<)xhEV`v!&6O4fI$m$>Eyvy-&&*?lRhZI~&mC=p=$MYU@q1mmDHgX1|q5 zruu}*s8d&x9)?2ys7FSy*XdHAWAaSar(!{v_3~u6x62fdGBGayz(D`tEa0rqaWp&W z9;Hz|IBk~O4{^7BmSCd6T!0A7getI@`35VO?7W{Im8QP?@L9|wrP(dd$SnVlt5lq+ zb#%b�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 T!}Mt*XHSrg;@6^j=L(hz2`s7i literal 0 HcmV?d00001 diff --git a/examples/webgl_loader_texture_ktx2.html b/examples/webgl_loader_texture_ktx2.html index 0835a1cf68..d18c6a219a 100644 --- a/examples/webgl_loader_texture_ktx2.html +++ b/examples/webgl_loader_texture_ktx2.html @@ -51,6 +51,7 @@ const formatStrings = { [ THREE.RGBAFormat ]: "RGBA32", + [ THREE.RGBA_BPTC_Format ]: "RGBA_BPTC", [ THREE.RGBA_ASTC_4x4_Format ]: "RGBA_ASTC_4x4", [ THREE.RGB_S3TC_DXT1_Format ]: "RGB_S3TC_DXT1", [ THREE.RGBA_S3TC_DXT5_Format ]: "RGBA_S3TC_DXT5", @@ -61,11 +62,11 @@ [ THREE.RGBA_ETC2_EAC_Format ]: "RGB_ETC2_EAC", }; - // Samples: sample_etc1s.ktx2, sample_uastc.ktx2 + // Samples: sample_etc1s.ktx2, sample_uastc.ktx2, sample_uastc_zstd.ktx2 new KTX2Loader() .setTranscoderPath( 'js/libs/basis/' ) .detectSupport( renderer ) - .load( './textures/compressed/sample_uastc.ktx2', ( texture ) => { + .load( './textures/compressed/sample_uastc_zstd.ktx2', ( texture ) => { console.info( `transcoded to ${formatStrings[ texture.format ]}` ); -- GitLab