Spaces:
Running
Running
| (function(){"use strict";var nr=Object.defineProperty,ls=Object.getOwnPropertyDescriptor,fs=Object.getOwnPropertyNames,cs=Object.prototype.hasOwnProperty,ps=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(r,i)=>(typeof require<"u"?require:r)[i]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),q=(t,r)=>()=>(t&&(r=t(t=0)),r),mt=(t,r)=>{for(var i in r)nr(t,i,{get:r[i],enumerable:!0})},ds=(t,r,i,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of fs(r))!cs.call(t,s)&&s!==i&&nr(t,s,{get:()=>r[s],enumerable:!(u=ls(r,s))||u.enumerable});return t},Bt=t=>ds(nr({},"__esModule",{value:!0}),t),wt,ke,rt,Ln,Rn,$n=q(()=>{wt=new Map,ke=[],rt=(t,r,i)=>{if(r&&typeof r.init=="function"&&typeof r.createInferenceSessionHandler=="function"){let u=wt.get(t);if(u===void 0)wt.set(t,{backend:r,priority:i});else{if(u.priority>i)return;if(u.priority===i&&u.backend!==r)throw new Error(`cannot register backend "${t}" using priority ${i}`)}if(i>=0){let s=ke.indexOf(t);s!==-1&&ke.splice(s,1);for(let c=0;c<ke.length;c++)if(wt.get(ke[c]).priority<=i){ke.splice(c,0,t);return}ke.push(t)}return}throw new TypeError("not a valid backend")},Ln=async t=>{let r=wt.get(t);if(!r)return"backend not found.";if(r.initialized)return r.backend;if(r.aborted)return r.error;{let i=!!r.initPromise;try{return i||(r.initPromise=r.backend.init(t)),await r.initPromise,r.initialized=!0,r.backend}catch(u){return i||(r.error=`${u}`,r.aborted=!0),r.error}finally{delete r.initPromise}}},Rn=async t=>{let r=t.executionProviders||[],i=r.map(h=>typeof h=="string"?h:h.name),u=i.length===0?ke:i,s,c=[],f=new Set;for(let h of u){let y=await Ln(h);typeof y=="string"?c.push({name:h,err:y}):(s||(s=y),s===y&&f.add(h))}if(!s)throw new Error(`no available backend found. ERR: ${c.map(h=>`[${h.name}] ${h.err}`).join(", ")}`);for(let{name:h,err:y}of c)i.includes(h)&&console.warn(`removing requested execution provider "${h}" from session options because it is not available: ${y}`);let m=r.filter(h=>f.has(typeof h=="string"?h:h.name));return[s,new Proxy(t,{get:(h,y)=>y==="executionProviders"?m:Reflect.get(h,y)})]}}),hs=q(()=>{$n()}),Pn,ms=q(()=>{Pn="1.27.0"}),ar,se,_n=q(()=>{ms(),ar="warning",se={wasm:{},webgl:{},webgpu:{},versions:{common:Pn},set logLevel(t){if(t!==void 0){if(typeof t!="string"||["verbose","info","warning","error","fatal"].indexOf(t)===-1)throw new Error(`Unsupported logging level: ${t}`);ar=t}},get logLevel(){return ar}},Object.defineProperty(se,"logLevel",{enumerable:!0})}),re,ws=q(()=>{_n(),re=se}),kn,Nn,gs=q(()=>{kn=(t,r)=>{let i=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);i.width=t.dims[3],i.height=t.dims[2];let u=i.getContext("2d");if(u!=null){let s,c;r?.tensorLayout!==void 0&&r.tensorLayout==="NHWC"?(s=t.dims[2],c=t.dims[3]):(s=t.dims[3],c=t.dims[2]);let f=r?.format!==void 0?r.format:"RGB",m=r?.norm,h,y;m===void 0||m.mean===void 0?h=[255,255,255,255]:typeof m.mean=="number"?h=[m.mean,m.mean,m.mean,m.mean]:(h=[m.mean[0],m.mean[1],m.mean[2],0],m.mean[3]!==void 0&&(h[3]=m.mean[3])),m===void 0||m.bias===void 0?y=[0,0,0,0]:typeof m.bias=="number"?y=[m.bias,m.bias,m.bias,m.bias]:(y=[m.bias[0],m.bias[1],m.bias[2],0],m.bias[3]!==void 0&&(y[3]=m.bias[3]));let g=c*s,v=0,T=g,x=g*2,O=-1;f==="RGBA"?(v=0,T=g,x=g*2,O=g*3):f==="RGB"?(v=0,T=g,x=g*2):f==="RBG"&&(v=0,x=g,T=g*2);for(let C=0;C<c;C++)for(let N=0;N<s;N++){let L=(t.data[v++]-y[0])*h[0],M=(t.data[T++]-y[1])*h[1],G=(t.data[x++]-y[2])*h[2],U=O===-1?255:(t.data[O++]-y[3])*h[3];u.fillStyle="rgba("+L+","+M+","+G+","+U+")",u.fillRect(N,C,1,1)}if("toDataURL"in i)return i.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},Nn=(t,r)=>{let i=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),u;if(i!=null){let s,c,f;r?.tensorLayout!==void 0&&r.tensorLayout==="NHWC"?(s=t.dims[2],c=t.dims[1],f=t.dims[3]):(s=t.dims[3],c=t.dims[2],f=t.dims[1]);let m=r!==void 0&&r.format!==void 0?r.format:"RGB",h=r?.norm,y,g;h===void 0||h.mean===void 0?y=[255,255,255,255]:typeof h.mean=="number"?y=[h.mean,h.mean,h.mean,h.mean]:(y=[h.mean[0],h.mean[1],h.mean[2],255],h.mean[3]!==void 0&&(y[3]=h.mean[3])),h===void 0||h.bias===void 0?g=[0,0,0,0]:typeof h.bias=="number"?g=[h.bias,h.bias,h.bias,h.bias]:(g=[h.bias[0],h.bias[1],h.bias[2],0],h.bias[3]!==void 0&&(g[3]=h.bias[3]));let v=c*s;if(r!==void 0&&(r.format!==void 0&&f===4&&r.format!=="RGBA"||f===3&&r.format!=="RGB"&&r.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let T=4,x=0,O=1,C=2,N=3,L=0,M=v,G=v*2,U=-1;m==="RGBA"?(L=0,M=v,G=v*2,U=v*3):m==="RGB"?(L=0,M=v,G=v*2):m==="RBG"&&(L=0,G=v,M=v*2),u=i.createImageData(s,c);for(let D=0;D<c*s;x+=T,O+=T,C+=T,N+=T,D++)u.data[x]=(t.data[L++]-g[0])*y[0],u.data[O]=(t.data[M++]-g[1])*y[1],u.data[C]=(t.data[G++]-g[2])*y[2],u.data[N]=U===-1?255:(t.data[U++]-g[3])*y[3]}else throw new Error("Can not access image data");return u}}),Lt,Dn,Gn,Wn,Fn,Vn,ys=q(()=>{ir(),Lt=(t,r)=>{if(t===void 0)throw new Error("Image buffer must be defined");if(r.height===void 0||r.width===void 0)throw new Error("Image height and width must be defined");if(r.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:i,width:u}=r,s=r.norm??{mean:255,bias:0},c,f;typeof s.mean=="number"?c=[s.mean,s.mean,s.mean,s.mean]:c=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?f=[s.bias,s.bias,s.bias,s.bias]:f=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let m=r.format!==void 0?r.format:"RGBA",h=r.tensorFormat!==void 0&&r.tensorFormat!==void 0?r.tensorFormat:"RGB",y=i*u,g=h==="RGBA"?new Float32Array(y*4):new Float32Array(y*3),v=4,T=0,x=1,O=2,C=3,N=0,L=y,M=y*2,G=-1;m==="RGB"&&(v=3,T=0,x=1,O=2,C=-1),h==="RGBA"?G=y*3:h==="RBG"?(N=0,M=y,L=y*2):h==="BGR"&&(M=0,L=y,N=y*2);for(let U=0;U<y;U++,T+=v,O+=v,x+=v,C+=v)g[N++]=(t[T]+f[0])/c[0],g[L++]=(t[x]+f[1])/c[1],g[M++]=(t[O]+f[2])/c[2],G!==-1&&C!==-1&&(g[G++]=(t[C]+f[3])/c[3]);return h==="RGBA"?new ge("float32",g,[1,4,i,u]):new ge("float32",g,[1,3,i,u])},Dn=async(t,r)=>{let i=typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement,u=typeof ImageData<"u"&&t instanceof ImageData,s=typeof ImageBitmap<"u"&&t instanceof ImageBitmap,c=typeof t=="string",f,m=r??{},h=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},y=g=>typeof HTMLCanvasElement<"u"&&g instanceof HTMLCanvasElement||g instanceof OffscreenCanvas?g.getContext("2d"):null;if(i){let g=h();g.width=t.width,g.height=t.height;let v=y(g);if(v!=null){let T=t.height,x=t.width;if(r!==void 0&&r.resizedHeight!==void 0&&r.resizedWidth!==void 0&&(T=r.resizedHeight,x=r.resizedWidth),r!==void 0){if(m=r,r.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");m.tensorFormat="RGBA",m.height=T,m.width=x}else m.tensorFormat="RGBA",m.height=T,m.width=x;v.drawImage(t,0,0),f=v.getImageData(0,0,x,T).data}else throw new Error("Can not access image data")}else if(u){let g,v;if(r!==void 0&&r.resizedWidth!==void 0&&r.resizedHeight!==void 0?(g=r.resizedHeight,v=r.resizedWidth):(g=t.height,v=t.width),r!==void 0&&(m=r),m.format="RGBA",m.height=g,m.width=v,r!==void 0){let T=h();T.width=v,T.height=g;let x=y(T);if(x!=null)x.putImageData(t,0,0),f=x.getImageData(0,0,v,g).data;else throw new Error("Can not access image data")}else f=t.data}else if(s){if(r===void 0)throw new Error("Please provide image config with format for Imagebitmap");let g=h();g.width=t.width,g.height=t.height;let v=y(g);if(v!=null){let T=t.height,x=t.width;return v.drawImage(t,0,0,x,T),f=v.getImageData(0,0,x,T).data,m.height=T,m.width=x,Lt(f,m)}else throw new Error("Can not access image data")}else{if(c)return new Promise((g,v)=>{let T=h(),x=y(T);if(!t||!x)return v();let O=new Image;O.crossOrigin="Anonymous",O.src=t,O.onload=()=>{T.width=O.width,T.height=O.height,x.drawImage(O,0,0,T.width,T.height);let C=x.getImageData(0,0,T.width,T.height);m.height=T.height,m.width=T.width,g(Lt(C.data,m))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(f!==void 0)return Lt(f,m);throw new Error("Input data provided is not supported - aborted tensor creation")},Gn=(t,r)=>{let{width:i,height:u,download:s,dispose:c}=r,f=[1,u,i,4];return new ge({location:"texture",type:"float32",texture:t,dims:f,download:s,dispose:c})},Wn=(t,r)=>{let{dataType:i,dims:u,download:s,dispose:c}=r;return new ge({location:"gpu-buffer",type:i??"float32",gpuBuffer:t,dims:u,download:s,dispose:c})},Fn=(t,r)=>{let{dataType:i,dims:u,download:s,dispose:c}=r;return new ge({location:"ml-tensor",type:i??"float32",mlTensor:t,dims:u,download:s,dispose:c})},Vn=(t,r,i)=>new ge({location:"cpu-pinned",type:t,data:r,dims:i??[r.length]})}),je,gt,or,qn,bs=q(()=>{je=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),gt=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),or=!1,qn=()=>{if(!or){or=!0;let t=typeof BigInt64Array<"u"&&BigInt64Array.from,r=typeof BigUint64Array<"u"&&BigUint64Array.from,i=globalThis.Float16Array,u=typeof i<"u"&&i.from;t&&(je.set("int64",BigInt64Array),gt.set(BigInt64Array,"int64")),r&&(je.set("uint64",BigUint64Array),gt.set(BigUint64Array,"uint64")),u?(je.set("float16",i),gt.set(i,"float16")):je.set("float16",Uint16Array)}}}),zn,jn,vs=q(()=>{ir(),zn=t=>{let r=1;for(let i=0;i<t.length;i++){let u=t[i];if(typeof u!="number"||!Number.isSafeInteger(u))throw new TypeError(`dims[${i}] must be an integer, got: ${u}`);if(u<0)throw new RangeError(`dims[${i}] must be a non-negative integer, got: ${u}`);r*=u}return r},jn=(t,r)=>{switch(t.location){case"cpu":return new ge(t.type,t.data,r);case"cpu-pinned":return new ge({location:"cpu-pinned",data:t.data,type:t.type,dims:r});case"texture":return new ge({location:"texture",texture:t.texture,type:t.type,dims:r});case"gpu-buffer":return new ge({location:"gpu-buffer",gpuBuffer:t.gpuBuffer,type:t.type,dims:r});case"ml-tensor":return new ge({location:"ml-tensor",mlTensor:t.mlTensor,type:t.type,dims:r});default:throw new Error(`tensorReshape: tensor location ${t.location} is not supported`)}}}),ge,ir=q(()=>{gs(),ys(),bs(),vs(),ge=class{constructor(t,r,i){qn();let u,s;if(typeof t=="object"&&"location"in t)switch(this.dataLocation=t.location,u=t.type,s=t.dims,t.location){case"cpu-pinned":{let f=je.get(u);if(!f)throw new TypeError(`unsupported type "${u}" to create tensor from pinned buffer`);if(!(t.data instanceof f))throw new TypeError(`buffer should be of type ${f.name}`);this.cpuData=t.data;break}case"texture":{if(u!=="float32")throw new TypeError(`unsupported type "${u}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case"gpu-buffer":{if(u!=="float32"&&u!=="float16"&&u!=="int32"&&u!=="int64"&&u!=="uint32"&&u!=="uint8"&&u!=="bool"&&u!=="uint4"&&u!=="int4")throw new TypeError(`unsupported type "${u}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}case"ml-tensor":{if(u!=="float32"&&u!=="float16"&&u!=="int32"&&u!=="int64"&&u!=="uint32"&&u!=="uint64"&&u!=="int8"&&u!=="uint8"&&u!=="bool"&&u!=="uint4"&&u!=="int4")throw new TypeError(`unsupported type "${u}" to create tensor from MLTensor`);this.mlTensorData=t.mlTensor,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let f,m;if(typeof t=="string")if(u=t,m=i,t==="string"){if(!Array.isArray(r))throw new TypeError("A string tensor's data must be a string array.");f=r}else{let h=je.get(t);if(h===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if(t==="float16"&&h===Uint16Array||t==="uint4"||t==="int4")throw new TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${h.name} as data.`);t==="uint64"||t==="int64"?f=h.from(r,BigInt):f=h.from(r)}else if(r instanceof h)f=r;else if(r instanceof Uint8ClampedArray)if(t==="uint8")f=Uint8Array.from(r);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(t==="float16"&&r instanceof Uint16Array&&h!==Uint16Array)f=new globalThis.Float16Array(r.buffer,r.byteOffset,r.length);else throw new TypeError(`A ${u} tensor's data must be type of ${h}`)}else if(m=r,Array.isArray(t)){if(t.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let h=typeof t[0];if(h==="string")u="string",f=t;else if(h==="boolean")u="bool",f=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${h}.`)}else if(t instanceof Uint8ClampedArray)u="uint8",f=Uint8Array.from(t);else{let h=gt.get(t.constructor);if(h===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);u=h,f=t}if(m===void 0)m=[f.length];else if(!Array.isArray(m))throw new TypeError("A tensor's dims must be a number array");s=m,this.cpuData=f,this.dataLocation="cpu"}let c=zn(s);if(this.cpuData&&c!==this.cpuData.length&&!((u==="uint4"||u==="int4")&&Math.ceil(c/2)===this.cpuData.length))throw new Error(`Tensor's size(${c}) does not match data length(${this.cpuData.length}).`);this.type=u,this.dims=s,this.size=c}static async fromImage(t,r){return Dn(t,r)}static fromTexture(t,r){return Gn(t,r)}static fromGpuBuffer(t,r){return Wn(t,r)}static fromMLTensor(t,r){return Fn(t,r)}static fromPinnedBuffer(t,r,i){return Vn(t,r,i)}toDataURL(t){return kn(this,t)}toImageData(t){return Nn(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw new Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(t){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let r=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return jn(this,t)}}}),he,Hn=q(()=>{ir(),he=ge}),sr,ur,nt,at,He,Ye,Yn=q(()=>{_n(),sr=(t,r)=>{(typeof se.trace>"u"?!se.wasm.trace:!se.trace)||console.timeStamp(`${t}::ORT::${r}`)},ur=(t,r)=>{let i=new Error().stack?.split(/\r\n|\r|\n/g)||[],u=!1;for(let s=0;s<i.length;s++){if(u&&!i[s].includes("TRACE_FUNC")){let c=`FUNC_${t}::${i[s].trim().split(" ")[1]}`;r&&(c+=`::${r}`),sr("CPU",c);return}i[s].includes("TRACE_FUNC")&&(u=!0)}},nt=t=>{(typeof se.trace>"u"?!se.wasm.trace:!se.trace)||ur("BEGIN",t)},at=t=>{(typeof se.trace>"u"?!se.wasm.trace:!se.trace)||ur("END",t)},He=t=>{(typeof se.trace>"u"?!se.wasm.trace:!se.trace)||console.time(`ORT::${t}`)},Ye=t=>{(typeof se.trace>"u"?!se.wasm.trace:!se.trace)||console.timeEnd(`ORT::${t}`)}}),Xn,Ts=q(()=>{$n(),Hn(),Yn(),Xn=class us{constructor(r){this.handler=r}async run(r,i,u){nt(),He("InferenceSession.run");let s={},c={};if(typeof r!="object"||r===null||r instanceof he||Array.isArray(r))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let f=!0;if(typeof i=="object"){if(i===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(i instanceof he)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(i)){if(i.length===0)throw new TypeError("'fetches' cannot be an empty array.");f=!1;for(let y of i){if(typeof y!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(y)===-1)throw new RangeError(`'fetches' contains invalid output name: ${y}.`);s[y]=null}if(typeof u=="object"&&u!==null)c=u;else if(typeof u<"u")throw new TypeError("'options' must be an object.")}else{let y=!1,g=Object.getOwnPropertyNames(i);for(let v of this.outputNames)if(g.indexOf(v)!==-1){let T=i[v];(T===null||T instanceof he)&&(y=!0,f=!1,s[v]=T)}if(y){if(typeof u=="object"&&u!==null)c=u;else if(typeof u<"u")throw new TypeError("'options' must be an object.")}else c=i}}else if(typeof i<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let y of this.inputNames)if(typeof r[y]>"u")throw new Error(`input '${y}' is missing in 'feeds'.`);if(f)for(let y of this.outputNames)s[y]=null;let m=await this.handler.run(r,s,c),h={};for(let y in m)if(Object.hasOwnProperty.call(m,y)){let g=m[y];g instanceof he?h[y]=g:h[y]=new he(g.type,g.data,g.dims)}return Ye("InferenceSession.run"),at(),h}async release(){return this.handler.dispose()}static async create(r,i,u,s){nt(),He("InferenceSession.create");let c,f={};if(typeof r=="string"){if(c=r,typeof i=="object"&&i!==null)f=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else if(r instanceof Uint8Array){if(c=r,typeof i=="object"&&i!==null)f=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else if(r instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer){let g=r,v=0,T=r.byteLength;if(typeof i=="object"&&i!==null)f=i;else if(typeof i=="number"){if(v=i,!Number.isSafeInteger(v))throw new RangeError("'byteOffset' must be an integer.");if(v<0||v>=g.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${g.byteLength}).`);if(T=r.byteLength-v,typeof u=="number"){if(T=u,!Number.isSafeInteger(T))throw new RangeError("'byteLength' must be an integer.");if(T<=0||v+T>g.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${g.byteLength-v}].`);if(typeof s=="object"&&s!==null)f=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof u<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof i<"u")throw new TypeError("'options' must be an object.");c=new Uint8Array(g,v,T)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[m,h]=await Rn(f),y=await m.createInferenceSessionHandler(c,h);return Ye("InferenceSession.create"),at(),new us(y)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),Rt,xs=q(()=>{Ts(),Rt=Xn}),Es=q(()=>{}),As=q(()=>{}),Cs=q(()=>{}),Os=q(()=>{}),Ss={};mt(Ss,{InferenceSession:()=>Rt,TRACE:()=>sr,TRACE_EVENT_BEGIN:()=>He,TRACE_EVENT_END:()=>Ye,TRACE_FUNC_BEGIN:()=>nt,TRACE_FUNC_END:()=>at,Tensor:()=>he,env:()=>re,registerBackend:()=>rt});var Xe=q(()=>{hs(),ws(),xs(),Hn(),Es(),As(),Yn(),Cs(),Os()}),lr=q(()=>{}),Zn={};mt(Zn,{default:()=>Kn});var fr,cr,Kn,Ms=q(()=>{_a(),Ze(),gr(),fr="ort-wasm-proxy-worker",cr=globalThis.self?.name===fr,cr&&(self.onmessage=t=>{let{type:r,in:i}=t.data;try{switch(r){case"init-wasm":vr(i.wasm).then(()=>{Rr(i).then(()=>{postMessage({type:r})},u=>{postMessage({type:r,err:u})})},u=>{postMessage({type:r,err:u})});break;case"init-ep":{let{epName:u,env:s}=i;$r(s,u).then(()=>{postMessage({type:r})},c=>{postMessage({type:r,err:c})});break}case"copy-from":{let{buffer:u}=i,s=Dt(u);postMessage({type:r,out:s});break}case"create":{let{model:u,options:s}=i;_r(u,s).then(c=>{postMessage({type:r,out:c})},c=>{postMessage({type:r,err:c})});break}case"release":kr(i),postMessage({type:r});break;case"run":{let{sessionId:u,inputIndices:s,inputs:c,outputIndices:f,options:m}=i;Dr(u,s,c,f,new Array(f.length).fill(null),m).then(h=>{h.some(y=>y[3]!=="cpu")?postMessage({type:r,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:r,out:h},Wr([...c,...h]))},h=>{postMessage({type:r,err:h})});break}case"end-profiling":Gr(i),postMessage({type:r});break;default:}}catch(u){postMessage({type:r,err:u})}}),Kn=cr?null:t=>new Worker(t??ye,{type:"module",name:fr})}),Qn={};mt(Qn,{default:()=>ea});async function Jn(t={}){var r=t,i=!!globalThis.window,u=!!globalThis.WorkerGlobalScope,s=u&&self.name?.startsWith("em-pthread");r.mountExternalData=(e,n)=>{e.startsWith("./")&&(e=e.substring(2)),(r.Vc||(r.Vc=new Map)).set(e,n)},r.unmountExternalData=()=>{delete r.Vc},globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,shared:!0}).buffer.constructor;let c=()=>{let e=n=>(...a)=>{let o=Ie;return a=n(...a),Ie!=o?new Promise((l,p)=>{pn={resolve:l,reject:p}}):a};(()=>{for(let n of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])r[n]=e(r[n])})(),typeof jsepRunAsync<"u"&&(r._OrtRun=jsepRunAsync(r._OrtRun),r._OrtRunWithBinding=jsepRunAsync(r._OrtRunWithBinding)),c=void 0};r.asyncInit=()=>{c?.()};var f,m,h=(e,n)=>{throw n},y=self.location.href,g="";if(i||u){try{g=new URL(".",y).href}catch{}u&&(m=e=>{var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}),f=async e=>{if(Z(e))return new Promise((a,o)=>{var l=new XMLHttpRequest;l.open("GET",e,!0),l.responseType="arraybuffer",l.onload=()=>{l.status==200||l.status==0&&l.response?a(l.response):o(l.status)},l.onerror=o,l.send(null)});var n=await fetch(e,{credentials:"same-origin"});if(n.ok)return n.arrayBuffer();throw Error(n.status+" : "+n.url)}}var v,T,x,O,C,N,L=console.log.bind(console),M=console.error.bind(console),G=L,U=M,D=!1,Z=e=>e.startsWith("file://");function d(){qe.buffer!=R.buffer&&ie()}if(s){let e=function(n){try{var a=n.data,o=a.Pc;if(o==="load"){let l=[];self.onmessage=p=>l.push(p),N=()=>{postMessage({Pc:"loaded"});for(let p of l)e(p);self.onmessage=e};for(let p of a.ee)r[p]&&!r[p].proxy||(r[p]=(...w)=>{postMessage({Pc:"callHandler",de:p,args:w})},p=="print"&&(G=r[p]),p=="printErr"&&(U=r[p]));qe=a.ke,ie(),T=a.le,zt(),rr()}else if(o==="run"){(function(l){var p=(d(),A)[l+52>>>2>>>0];l=(d(),A)[l+56>>>2>>>0],yi(p,p-l),_(p)})(a.Oc),An(a.Oc,0,0,1,0,0),ao(),ln(a.Oc),W||(ei(),W=!0);try{ou(a.ie,a.Xc)}catch(l){if(l!="unwind")throw l}}else a.target!=="setimmediate"&&(o==="checkMailbox"?W&&Yt():o&&(U(`worker: received unknown command ${o}`),U(a)))}catch(l){throw di(),l}};var W=!1;self.onunhandledrejection=n=>{throw n.reason||n},self.onmessage=e}var R,H,ve,K,S,A,P,ne,le,Y,de,ae=!1;function ie(){var e=qe.buffer;r.HEAP8=R=new Int8Array(e),ve=new Int16Array(e),r.HEAPU8=H=new Uint8Array(e),K=new Uint16Array(e),r.HEAP32=S=new Int32Array(e),r.HEAPU32=A=new Uint32Array(e),P=new Float32Array(e),ne=new Float64Array(e),le=new BigInt64Array(e),Y=new BigUint64Array(e)}function We(){ae=!0,s?N():_e.$b()}function me(e){throw U(e="Aborted("+e+")"),D=!0,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),C?.(e),e}function At(){return{a:{f:iu,J:su,k:uu,p:lu,l:fu,sa:cu,b:pu,ca:du,Ja:fo,q:hu,da:mo,Za:wo,Fa:go,Ha:yo,_a:bo,Xa:vo,Qa:To,Wa:xo,oa:Eo,Ga:Ao,Yb:Co,Ya:Oo,Zb:So,db:mu,Da:wu,Tb:gu,Rb:bu,Ca:Tu,M:xu,I:Eu,Sb:Au,ja:Bu,Ub:Lu,Ta:Ru,Wb:Pu,Ka:_u,Pb:ku,ka:Nu,Sa:ln,ab:Du,U:Vu,n:Yu,c:sn,rb:Xu,w:Zu,L:Ku,z:Qu,j:Ju,o:Po,sb:el,G:tl,T:rl,h:nl,u:al,m:ol,i:il,Na:sl,Oa:ul,Pa:ll,La:Do,Ma:Go,Qb:Wo,eb:cl,cb:dl,Y:hl,qb:ml,la:wl,bb:pl,fb:gl,$a:yl,Xb:bl,N:fl,gb:vl,X:Tl,Vb:xl,nb:Bl,C:Ll,ra:Rl,qa:$l,pb:Pl,W:_l,v:kl,mb:Nl,lb:Dl,kb:Gl,ob:Wl,jb:Fl,ib:Vl,hb:ql,Ua:Ho,Va:Yo,Ia:tn,V:Xo,na:Zo,Ra:Ko,ma:Qo,Cb:rc,xa:Zf,Db:tc,ya:Xf,F:Nf,e:Af,s:xf,x:Tf,B:$f,Fb:jf,ba:zf,D:Sf,za:Hf,$:Kf,ga:qf,Gb:Vf,Hb:Ff,Ba:Df,Aa:Wf,Ib:Gf,wa:ec,aa:Yf,d:Ef,A:Of,r:Cf,Bb:nc,t:If,y:_f,H:Mf,E:Uf,K:kf,R:Qf,ia:Rf,_:Jf,Kb:Lf,Lb:Bf,Jb:Pf,g:jl,a:qe,Ob:en,Eb:Hl,ha:Yl,O:Xl,pa:Zl,Mb:Kl,ta:Ql,Q:Jl,yb:ef,zb:tf,ua:rf,ea:nf,P:af,Ea:of,va:sf,Z:uf,wb:lf,_b:ff,S:cf,Ab:pf,tb:df,ub:mf,vb:wf,fa:gf,xb:yf,Nb:bf}}}async function zt(){function e(o,l){var p=_e=o.exports;o={};for(let[w,b]of Object.entries(p))typeof b=="function"?(p=Gu(b),o[w]=p):o[w]=b;return _e=o,_e=(function(){var w=_e,b=I=>z=>I(z)>>>0,E=I=>()=>I()>>>0;return(w=Object.assign({},w)).ac=b(w.ac),w.Dc=E(w.Dc),w.Fc=b(w.Fc),w.sd=(I=>(z,B)=>I(z,B)>>>0)(w.sd),w.xd=b(w.xd),w.yd=E(w.yd),w.Cd=b(w.Cd),w})(),ro.push(_e.jd),Jo=(o=_e).ac,ei=o.bc,r._OrtInit=o.cc,r._OrtGetLastError=o.dc,r._OrtCreateSessionOptions=o.ec,r._OrtAppendExecutionProvider=o.fc,r._OrtAddFreeDimensionOverride=o.gc,r._OrtAddSessionConfigEntry=o.hc,r._OrtReleaseSessionOptions=o.ic,r._OrtCreateSession=o.jc,r._OrtReleaseSession=o.kc,r._OrtGetInputOutputCount=o.lc,r._OrtGetInputOutputMetadata=o.mc,r._OrtFree=o.nc,r._OrtCreateTensor=o.oc,r._OrtGetTensorData=o.pc,r._OrtReleaseTensor=o.qc,r._OrtCreateRunOptions=o.rc,r._OrtAddRunConfigEntry=o.sc,r._OrtReleaseRunOptions=o.tc,r._OrtCreateBinding=o.uc,r._OrtBindInput=o.vc,r._OrtBindOutput=o.wc,r._OrtClearBoundOutputs=o.xc,r._OrtReleaseBinding=o.yc,r._OrtRunWithBinding=o.zc,r._OrtRun=o.Ac,r._OrtEndProfiling=o.Bc,yn=r._OrtGetWebGpuDevice=o.Cc,er=o.Dc,Se=r._free=o.Ec,ht=r._malloc=o.Fc,ti=r._wgpuBufferRelease=o.Gc,ri=r._wgpuCreateInstance=o.Hc,ni=o.Ic,ai=o.Jc,oi=o.Kc,ii=o.Lc,si=o.Mc,ui=o.Qc,li=o._c,fi=o.$c,ci=o.ad,bn=o.cd,vn=o.dd,Tn=o.ed,xn=o.fd,Mt=o.gd,En=o.hd,pi=o.id,An=o.ld,di=o.md,hi=o.nd,mi=o.od,Cn=o.pd,wi=o.qd,gi=o.rd,On=o.sd,F=o.td,It=o.ud,yi=o.vd,_=o.wd,tr=o.xd,k=o.yd,bi=o.zd,Sn=o.Ad,vi=o.Bd,Ti=o.Cd,xi=o.Dd,Mn=o.Ed,Ei=o.Fd,Ai=o.Gd,Ci=o.Hd,Oi=o.Id,Si=o.Jd,Mi=o.Kd,Ii=o.Ld,Ui=o.Md,Bi=o.Nd,Li=o.Od,Ri=o.Pd,$i=o.Qd,Pi=o.Rd,_i=o.Sd,ki=o.Ud,Ni=o.Vd,Di=o.Wd,Gi=o.Xd,Wi=o.Zd,Fi=o._d,Vi=o.$d,qi=o.ae,zi=o.be,ji=o.ce,Hi=o.qe,Yi=o.re,Xi=o.se,Zi=o.te,Ki=o.ue,Qi=o.ve,Ji=o.we,es=o.xe,ts=o.ye,rs=o.ze,ns=o.Ae,as=o.$e,os=o.af,is=o.bf,ss=o.cf,T=l,_e}var n,a=At();return r.instantiateWasm?new Promise(o=>{r.instantiateWasm(a,(l,p)=>{o(e(l,p))})}):s?e(new WebAssembly.Instance(T,At()),T):(de??=r.locateFile?r.locateFile?r.locateFile("ort-wasm-simd-threaded.asyncify.wasm",g):g+"ort-wasm-simd-threaded.asyncify.wasm":new URL("/assets/ort-wasm-simd-threaded.asyncify-CvvOzbbq.wasm",self.location.href).href,n=await(async function(o){var l=de;if(!v&&!Z(l))try{var p=fetch(l,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(p,o)}catch(w){U(`wasm streaming compile failed: ${w}`),U("falling back to ArrayBuffer instantiation")}return(async function(w,b){try{var E=await(async function(I){if(!v)try{var z=await f(I);return new Uint8Array(z)}catch{}if(I==de&&v)I=new Uint8Array(v);else{if(!m)throw"both async and sync fetching of the wasm failed";I=m(I)}return I})(w);return await WebAssembly.instantiate(E,b)}catch(I){U(`failed to asynchronously prepare wasm: ${I}`),me(I)}})(l,o)})(a),e(n.instance,n.module))}class xe{name="ExitStatus";constructor(n){this.message=`Program terminated with exit(${n})`,this.status=n}}var Ce=e=>{e.terminate(),e.onmessage=()=>{}},Fe=[],oe=0,ee=null,Ee=e=>{Ve.length==0&&(io(),oo(Ve[0]));var n=Ve.pop();if(!n)return 6;Ct.push(n),et[e.Oc]=n,n.Oc=e.Oc;var a={Pc:"run",ie:e.he,Xc:e.Xc,Oc:e.Oc};return n.postMessage(a,e.Zc),0},Q=0,J=(e,n,...a)=>{var o,l=16*a.length,p=k(),w=tr(l),b=w>>>3;for(o of a)typeof o=="bigint"?((d(),le)[b++>>>0]=1n,(d(),le)[b++>>>0]=o):((d(),le)[b++>>>0]=0n,(d(),ne)[b++>>>0]=o);return e=hi(e,0,l,w,n),_(p),e};function en(e){if(s)return J(0,1,e);if(x=e,!(0<Q)){for(var n of Ct)Ce(n);for(n of Ve)Ce(n);Ve=[],Ct=[],et={},D=!0}h(0,new xe(e))}function to(e){if(s)return J(1,0,e);tn(e)}var tn=e=>{if(x=e,s)throw to(e),"unwind";en(e)},Ve=[],Ct=[],ro=[],et={},no=e=>{var n=e.Oc;delete et[n],Ve.push(e),Ct.splice(Ct.indexOf(e),1),e.Oc=0,mi(n)};function ao(){ro.forEach(e=>e())}var oo=e=>new Promise(n=>{e.onmessage=l=>{var p=l.data;if(l=p.Pc,p.Wc&&p.Wc!=er()){var w=et[p.Wc];w?w.postMessage(p,p.Zc):U(`Internal error! Worker sent a message "${l}" to target pthread ${p.Wc}, but that thread no longer exists!`)}else l==="checkMailbox"?Yt():l==="spawnThread"?Ee(p):l==="cleanupThread"?we(()=>{no(et[p.je])}):l==="loaded"?(e.loaded=!0,n(e)):p.target==="setimmediate"?e.postMessage(p):l==="uncaughtException"?e.onerror(p.error):l==="callHandler"?r[p.de](...p.args):l&&U(`worker sent an unknown command ${l}`)},e.onerror=l=>{throw U(`worker sent an error! ${l.filename}:${l.lineno}: ${l.message}`),l};var a,o=[];for(a of[])r.propertyIsEnumerable(a)&&o.push(a);e.postMessage({Pc:"load",ee:o,ke:qe,le:T})});function io(){var e=new Worker((()=>{let n=URL;return self.location.href>"file:"&&self.location.href<"file;"?new n("ort.webgpu.bundle.min.mjs",self.location.href):new URL(self.location.href)})(),{type:"module",workerData:"em-pthread",name:"em-pthread"});Ve.push(e)}var qe,ou=(e,n)=>{Q=0,e=Mn(e,n),0<Q?x=e:Cn(e)},jt=[],Ht=0,fe=e=>-9007199254740992>e||9007199254740992<e?NaN:Number(e);function iu(e){var n=new rn(e>>>=0);return(d(),R)[n.Rc+12>>>0]==0&&(so(n,!0),Ht--),uo(n,!1),jt.push(n),Ti(e)}var ft=0,su=()=>{F(0,0);var e=jt.pop();bi(e.Yc),ft=0};function so(e,n){n=n?1:0,(d(),R)[e.Rc+12>>>0]=n}function uo(e,n){n=n?1:0,(d(),R)[e.Rc+13>>>0]=n}class rn{constructor(n){this.Yc=n,this.Rc=n-24}}var nn=e=>{var n=ft;if(!n)return It(0),0;var a=new rn(n);(d(),A)[a.Rc+16>>>2>>>0]=n;var o=(d(),A)[a.Rc+4>>>2>>>0];if(!o)return It(0),n;for(var l of e){if(l===0||l===o)break;if(vi(l,o,a.Rc+16))return It(l),n}return It(o),n};function uu(){return nn([])}function lu(e){return nn([e>>>0])}function fu(e,n,a,o){return nn([e>>>0,n>>>0,a>>>0,o>>>0])}var cu=()=>{var e=jt.pop();e||me("no exception to throw");var n=e.Yc;throw(d(),R)[e.Rc+13>>>0]==0&&(jt.push(e),uo(e,!0),so(e,!1),Ht++),Sn(n),ft=n};function pu(e,n,a){var o=new rn(e>>>=0);throw n>>>=0,a>>>=0,(d(),A)[o.Rc+16>>>2>>>0]=0,(d(),A)[o.Rc+4>>>2>>>0]=n,(d(),A)[o.Rc+8>>>2>>>0]=a,Sn(e),Ht++,ft=e}var du=()=>Ht;function lo(e,n,a,o){return s?J(2,1,e,n,a,o):fo(e,n,a,o)}function fo(e,n,a,o){if(e>>>=0,n>>>=0,a>>>=0,o>>>=0,!globalThis.SharedArrayBuffer)return 6;var l=[];return s&&l.length===0?lo(e,n,a,o):(e={he:a,Oc:e,Xc:o,Zc:l},s?(e.Pc="spawnThread",postMessage(e,l),0):Ee(e))}function hu(e){throw ft||=e>>>0,ft}var co=globalThis.TextDecoder&&new TextDecoder,po=(e,n,a,o)=>{if(a=n+a,o)return a;for(;e[n]&&!(n>=a);)++n;return n},ho=(e,n=0,a,o)=>{if(16<(a=po(e,n>>>=0,a,o))-n&&e.buffer&&co)return co.decode(e.buffer instanceof ArrayBuffer?e.subarray(n,a):e.slice(n,a));for(o="";n<a;){var l=e[n++];if(128&l){var p=63&e[n++];if((224&l)==192)o+=String.fromCharCode((31&l)<<6|p);else{var w=63&e[n++];65536>(l=(240&l)==224?(15&l)<<12|p<<6|w:(7&l)<<18|p<<12|w<<6|63&e[n++])?o+=String.fromCharCode(l):(l-=65536,o+=String.fromCharCode(55296|l>>10,56320|1023&l))}}else o+=String.fromCharCode(l)}return o},ct=(e,n,a)=>(e>>>=0)?ho((d(),H),e,n,a):"";function mo(e,n,a){return s?J(3,1,e,n,a):0}function wo(e,n){if(s)return J(4,1,e,n)}function go(e,n){if(s)return J(5,1,e,n)}function yo(e,n,a){if(s)return J(6,1,e,n,a)}function bo(e,n,a){return s?J(7,1,e,n,a):0}function vo(e,n){if(s)return J(8,1,e,n)}function To(e,n,a){if(s)return J(9,1,e,n,a)}function xo(e,n,a,o){if(s)return J(10,1,e,n,a,o)}function Eo(e,n,a,o){if(s)return J(11,1,e,n,a,o)}function Ao(e,n,a,o){if(s)return J(12,1,e,n,a,o)}function Co(e){if(s)return J(13,1,e)}function Oo(e,n){if(s)return J(14,1,e,n)}function So(e,n,a){if(s)return J(15,1,e,n,a)}var mu=()=>me(""),Me=e=>{e>>>=0;for(var n="";;){var a=(d(),H)[e++>>>0];if(!a)return n;n+=String.fromCharCode(a)}},an={},on={},pt=class extends Error{constructor(e){super(e),this.name="BindingError"}};function Be(e,n,a={}){return(function(o,l,p={}){var w=l.name;if(!o)throw new pt(`type "${w}" must have a positive integer typeid pointer`);if(on.hasOwnProperty(o)){if(p.fe)return;throw new pt(`Cannot register type '${w}' twice`)}on[o]=l,an.hasOwnProperty(o)&&(l=an[o],delete an[o],l.forEach(b=>b()))})(e,n,a)}var Mo=(e,n,a)=>{switch(n){case 1:return a?o=>(d(),R)[o>>>0]:o=>(d(),H)[o>>>0];case 2:return a?o=>(d(),ve)[o>>>1>>>0]:o=>(d(),K)[o>>>1>>>0];case 4:return a?o=>(d(),S)[o>>>2>>>0]:o=>(d(),A)[o>>>2>>>0];case 8:return a?o=>(d(),le)[o>>>3>>>0]:o=>(d(),Y)[o>>>3>>>0];default:throw new TypeError(`invalid integer width (${n}): ${e}`)}};function wu(e,n,a,o,l){e>>>=0,a>>>=0,n=Me(n>>>0);let p=w=>w;if(o=o===0n){let w=8*a;p=b=>BigInt.asUintN(w,b),l=p(l)}Be(e,{name:n,Nc:p,Tc:(w,b)=>(typeof b=="number"&&(b=BigInt(b)),b),Sc:Mo(n,a,!o),Uc:null})}function gu(e,n,a,o){Be(e>>>=0,{name:n=Me(n>>>0),Nc:function(l){return!!l},Tc:function(l,p){return p?a:o},Sc:function(l){return this.Nc((d(),H)[l>>>0])},Uc:null})}var Io=[],tt=[0,1,,1,null,1,!0,1,!1,1];function sn(e){9<(e>>>=0)&&--tt[e+1]===0&&(tt[e]=void 0,Io.push(e))}var Ae=e=>{if(!e)throw new pt(`Cannot use deleted val. handle = ${e}`);return tt[e]},Oe=e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let n=Io.pop()||tt.length;return tt[n]=e,tt[n+1]=1,n}};function un(e){return this.Nc((d(),A)[e>>>2>>>0])}var yu={name:"emscripten::val",Nc:e=>{var n=Ae(e);return sn(e),n},Tc:(e,n)=>Oe(n),Sc:un,Uc:null};function bu(e){return Be(e>>>0,yu)}var vu=(e,n)=>{switch(n){case 4:return function(a){return this.Nc((d(),P)[a>>>2>>>0])};case 8:return function(a){return this.Nc((d(),ne)[a>>>3>>>0])};default:throw new TypeError(`invalid float width (${n}): ${e}`)}};function Tu(e,n,a){a>>>=0,Be(e>>>=0,{name:n=Me(n>>>0),Nc:o=>o,Tc:(o,l)=>l,Sc:vu(n,a),Uc:null})}function xu(e,n,a,o,l){e>>>=0,a>>>=0,n=Me(n>>>0);let p=b=>b;if(o===0){var w=32-8*a;p=b=>b<<w>>>w,l=p(l)}Be(e,{name:n,Nc:p,Tc:(b,E)=>E,Sc:Mo(n,a,o!==0),Uc:null})}function Eu(e,n,a){function o(p){var w=(d(),A)[p>>>2>>>0];return p=(d(),A)[p+4>>>2>>>0],new l((d(),R).buffer,p,w)}var l=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][n];Be(e>>>=0,{name:a=Me(a>>>0),Nc:o,Sc:o},{fe:!0})}var Le=(e,n,a)=>{var o=(d(),H);if(n>>>=0,0<a){var l=n;a=n+a-1;for(var p=0;p<e.length;++p){var w=e.codePointAt(p);if(127>=w){if(n>=a)break;o[n++>>>0]=w}else if(2047>=w){if(n+1>=a)break;o[n++>>>0]=192|w>>6,o[n++>>>0]=128|63&w}else if(65535>=w){if(n+2>=a)break;o[n++>>>0]=224|w>>12,o[n++>>>0]=128|w>>6&63,o[n++>>>0]=128|63&w}else{if(n+3>=a)break;o[n++>>>0]=240|w>>18,o[n++>>>0]=128|w>>12&63,o[n++>>>0]=128|w>>6&63,o[n++>>>0]=128|63&w,p++}}o[n>>>0]=0,e=n-l}else e=0;return e},Re=e=>{for(var n=0,a=0;a<e.length;++a){var o=e.charCodeAt(a);127>=o?n++:2047>=o?n+=2:55296<=o&&57343>=o?(n+=4,++a):n+=3}return n};function Au(e,n){Be(e>>>=0,{name:n=Me(n>>>0),Nc(a){var o=(d(),A)[a>>>2>>>0];return o=ct(a+4,o,!0),Se(a),o},Tc(a,o){o instanceof ArrayBuffer&&(o=new Uint8Array(o));var l=typeof o=="string";if(!(l||ArrayBuffer.isView(o)&&o.BYTES_PER_ELEMENT==1))throw new pt("Cannot pass non-string to std::string");var p=l?Re(o):o.length,w=ht(4+p+1),b=w+4;return(d(),A)[w>>>2>>>0]=p,l?Le(o,b,p+1):(d(),H).set(o,b>>>0),a!==null&&a.push(Se,w),w},Sc:un,Uc(a){Se(a)}})}var Uo=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,Cu=(e,n,a)=>{if(e>>>=1,16<(n=po((d(),K),e,n/2,a))-e&&Uo)return Uo.decode((d(),K).slice(e,n));for(a="";e<n;++e){var o=(d(),K)[e>>>0];a+=String.fromCharCode(o)}return a},Ou=(e,n,a)=>{if(a??=2147483647,2>a)return 0;var o=n;a=(a-=2)<2*e.length?a/2:e.length;for(var l=0;l<a;++l){var p=e.charCodeAt(l);(d(),ve)[n>>>1>>>0]=p,n+=2}return(d(),ve)[n>>>1>>>0]=0,n-o},Su=e=>2*e.length,Mu=(e,n,a)=>{var o="";e>>>=2;for(var l=0;!(l>=n/4);l++){var p=(d(),A)[e+l>>>0];if(!p&&!a)break;o+=String.fromCodePoint(p)}return o},Iu=(e,n,a)=>{if(n>>>=0,a??=2147483647,4>a)return 0;var o=n;a=o+a-4;for(var l=0;l<e.length;++l){var p=e.codePointAt(l);if(65535<p&&l++,(d(),S)[n>>>2>>>0]=p,(n+=4)+4>a)break}return(d(),S)[n>>>2>>>0]=0,n-o},Uu=e=>{for(var n=0,a=0;a<e.length;++a)65535<e.codePointAt(a)&&a++,n+=4;return n};function Bu(e,n,a){if(e>>>=0,n>>>=0,a=Me(a>>>=0),n===2)var o=Cu,l=Ou,p=Su;else o=Mu,l=Iu,p=Uu;Be(e,{name:a,Nc:w=>{var b=(d(),A)[w>>>2>>>0];return b=o(w+4,b*n,!0),Se(w),b},Tc:(w,b)=>{if(typeof b!="string")throw new pt(`Cannot pass non-string to C++ string type ${a}`);var E=p(b),I=ht(4+E+n);return(d(),A)[I>>>2>>>0]=E/n,l(b,I+4,E+n),w!==null&&w.push(Se,I),I},Sc:un,Uc(w){Se(w)}})}function Lu(e,n){Be(e>>>=0,{ge:!0,name:n=Me(n>>>0),Nc:()=>{},Tc:()=>{}})}function Ru(e){An(e>>>0,!u,1,!i,131072,!1),ao()}var we=e=>{if(!D)try{if(e(),!(0<Q))try{s?er()&&Cn(x):tn(x)}catch(n){n instanceof xe||n=="unwind"||h(0,n)}}catch(n){n instanceof xe||n=="unwind"||h(0,n)}},$u=!Atomics.waitAsync||globalThis.navigator?.userAgent&&91>Number((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)||[])[2]);function ln(e){e>>>=0,$u||(Atomics.waitAsync((d(),S),e>>>2,e).value.then(Yt),e+=128,Atomics.store((d(),S),e>>>2,1))}var Yt=()=>we(()=>{var e=er();e&&(ln(e),gi())});function Pu(e,n){(e>>>=0)==n>>>0?setTimeout(Yt):s?postMessage({Wc:e,Pc:"checkMailbox"}):(e=et[e])&&e.postMessage({Pc:"checkMailbox"})}var fn=[];function _u(e,n,a,o,l){for(n>>>=0,l>>>=0,fn.length=0,a=l>>>3,o=l+o>>>3;a<o;){var p;p=(d(),le)[a++>>>0]?(d(),le)[a++>>>0]:(d(),ne)[a++>>>0],fn.push(p)}return(n?In[n]:vf[e])(...fn)}var ku=()=>{Q=0};function Nu(e){e>>>=0,s?postMessage({Pc:"cleanupThread",je:e}):no(et[e])}function Du(e){}var Xt=e=>{try{e()}catch(n){me(n)}};function Gu(e){var n=(...a)=>{Zt.push(e);try{return e(...a)}finally{D||(Zt.pop(),Ie&&ze===1&&Zt.length===0&&(ze=0,Q+=1,Xt(os),typeof Fibers<"u"&&Fibers.De()))}};return Ro.set(e,n),n}var ze=0,Ie=null,Bo=0,Zt=[],cn=new Map,Lo=new Map,Ro=new Map,Wu=0,pn=null,Fu=[],$o=e=>(function(n){if(!D){if(ze===0){var a=!1,o=!1;n((l=0)=>{if(!D&&(Bo=l,a=!0,o)){ze=2,Xt(()=>is(Ie)),typeof MainLoop<"u"&&MainLoop.Yd&&MainLoop.resume(),l=!1;try{var p=(function(){var E=(d(),S)[Ie+8>>>2>>>0];return E=Lo.get(E),E=Ro.get(E),--Q,E()})()}catch(E){p=E,l=!0}var w=!1;if(!Ie){var b=pn;b&&(pn=null,(l?b.reject:b.resolve)(p),w=!0)}if(l&&!w)throw p}}),o=!0,a||(ze=1,Ie=(function(){var l=ht(65548),p=l+12;if((d(),A)[l>>>2>>>0]=p,(d(),A)[l+4>>>2>>>0]=p+65536,p=Zt[0],!cn.has(p)){var w=Wu++;cn.set(p,w),Lo.set(w,p)}return p=cn.get(p),(d(),S)[l+8>>>2>>>0]=p,l})(),typeof MainLoop<"u"&&MainLoop.Yd&&MainLoop.pause(),Xt(()=>as(Ie)))}else ze===2?(ze=0,Xt(ss),Se(Ie),Ie=null,Fu.forEach(we)):me(`invalid state: ${ze}`);return Bo}})(n=>{e().then(n)});function Vu(e){return e>>>=0,$o(async()=>{var n=await Ae(e);return Oe(n)})}var dn=[],qu=e=>{var n=dn.length;return dn.push(e),n},zu=(e,n)=>{for(var a=Array(e),o=0;o<e;++o){var l=o,p=(d(),A)[n+4*o>>>2>>>0],w=on[p];if(w===void 0)throw e=`parameter ${o}`,p=Jo(p),n=Me(p),Se(p),new pt(`${e} has unknown type ${n}`);a[l]=w}return a},ju=(e,n,a)=>{var o=[];return e=e(o,a),o.length&&((d(),A)[n>>>2>>>0]=Oe(o)),e},Hu={},Kt=e=>{var n=Hu[e];return n===void 0?Me(e):n};function Yu(e,n,a){var[o,...l]=zu(e,n>>>0);n=o.Tc.bind(o);var p=l.map(E=>E.Sc.bind(E));e--;var w={toValue:Ae};switch(e=p.map((E,I)=>{var z=`argFromPtr${I}`;return w[z]=E,`${z}(args${I?"+"+8*I:""})`}),a){case 0:var b="toValue(handle)";break;case 2:b="new (toValue(handle))";break;case 3:b="";break;case 1:w.getStringOrSymbol=Kt,b="toValue(handle)[getStringOrSymbol(methodName)]"}return b+=`(${e})`,o.ge||(w.toReturnWire=n,w.emval_returnValue=ju,b=`return emval_returnValue(toReturnWire, destructorsRef, ${b})`),b=`return function (handle, methodName, destructorsRef, args) { | |
| ${b} | |
| }`,a=new Function(Object.keys(w),b)(...Object.values(w)),b=`methodCaller<(${l.map(E=>E.name)}) => ${o.name}>`,qu(Object.defineProperty(a,"name",{value:b}))}function Xu(e,n){return n>>>=0,(e=Ae(e>>>0))==Ae(n)}function Zu(e){return(e>>>=0)?(e=Kt(e),Oe(globalThis[e])):Oe(globalThis)}function Ku(e){return e=Kt(e>>>0),Oe(r[e])}function Qu(e,n){return n>>>=0,e=Ae(e>>>0),n=Ae(n),Oe(e[n])}function Ju(e){9<(e>>>=0)&&(tt[e+1]+=1)}function Po(e,n,a,o,l){return dn[e>>>0](n>>>0,a>>>0,o>>>0,l>>>0)}function el(e,n,a,o,l){return Po(e>>>0,n>>>0,a>>>0,o>>>0,l>>>0)}function tl(){return Oe([])}function rl(e){e=Ae(e>>>0);for(var n=Array(e.length),a=0;a<e.length;a++)n[a]=e[a];return Oe(n)}function nl(e){return Oe(Kt(e>>>0))}function al(){return Oe({})}function ol(e){for(var n=Ae(e>>>=0);n.length;){var a=n.pop();n.pop()(a)}sn(e)}function il(e,n,a){n>>>=0,a>>>=0,e=Ae(e>>>0),n=Ae(n),a=Ae(a),e[n]=a}function sl(e,n){e=fe(e),n>>>=0,e=new Date(1e3*e),(d(),S)[n>>>2>>>0]=e.getUTCSeconds(),(d(),S)[n+4>>>2>>>0]=e.getUTCMinutes(),(d(),S)[n+8>>>2>>>0]=e.getUTCHours(),(d(),S)[n+12>>>2>>>0]=e.getUTCDate(),(d(),S)[n+16>>>2>>>0]=e.getUTCMonth(),(d(),S)[n+20>>>2>>>0]=e.getUTCFullYear()-1900,(d(),S)[n+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,(d(),S)[n+28>>>2>>>0]=e}var _o=e=>e%4==0&&(e%100!=0||e%400==0),ko=[0,31,60,91,121,152,182,213,244,274,305,335],No=[0,31,59,90,120,151,181,212,243,273,304,334];function ul(e,n){e=fe(e),n>>>=0,e=new Date(1e3*e),(d(),S)[n>>>2>>>0]=e.getSeconds(),(d(),S)[n+4>>>2>>>0]=e.getMinutes(),(d(),S)[n+8>>>2>>>0]=e.getHours(),(d(),S)[n+12>>>2>>>0]=e.getDate(),(d(),S)[n+16>>>2>>>0]=e.getMonth(),(d(),S)[n+20>>>2>>>0]=e.getFullYear()-1900,(d(),S)[n+24>>>2>>>0]=e.getDay();var a=(_o(e.getFullYear())?ko:No)[e.getMonth()]+e.getDate()-1|0;(d(),S)[n+28>>>2>>>0]=a,(d(),S)[n+36>>>2>>>0]=-60*e.getTimezoneOffset(),a=new Date(e.getFullYear(),6,1).getTimezoneOffset();var o=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=0|(a!=o&&e.getTimezoneOffset()==Math.min(o,a)),(d(),S)[n+32>>>2>>>0]=e}function ll(e){e>>>=0;var n=new Date((d(),S)[e+20>>>2>>>0]+1900,(d(),S)[e+16>>>2>>>0],(d(),S)[e+12>>>2>>>0],(d(),S)[e+8>>>2>>>0],(d(),S)[e+4>>>2>>>0],(d(),S)[e>>>2>>>0],0),a=(d(),S)[e+32>>>2>>>0],o=n.getTimezoneOffset(),l=new Date(n.getFullYear(),6,1).getTimezoneOffset(),p=new Date(n.getFullYear(),0,1).getTimezoneOffset(),w=Math.min(p,l);return 0>a?(d(),S)[e+32>>>2>>>0]=+(l!=p&&w==o):0<a!=(w==o)&&(l=Math.max(p,l),n.setTime(n.getTime()+6e4*((0<a?w:l)-o))),(d(),S)[e+24>>>2>>>0]=n.getDay(),a=(_o(n.getFullYear())?ko:No)[n.getMonth()]+n.getDate()-1|0,(d(),S)[e+28>>>2>>>0]=a,(d(),S)[e>>>2>>>0]=n.getSeconds(),(d(),S)[e+4>>>2>>>0]=n.getMinutes(),(d(),S)[e+8>>>2>>>0]=n.getHours(),(d(),S)[e+12>>>2>>>0]=n.getDate(),(d(),S)[e+16>>>2>>>0]=n.getMonth(),(d(),S)[e+20>>>2>>>0]=n.getYear(),e=n.getTime(),BigInt(isNaN(e)?-1:e/1e3)}function Do(e,n,a,o,l,p,w){return s?J(16,1,e,n,a,o,l,p,w):-52}function Go(e,n,a,o,l,p){if(s)return J(17,1,e,n,a,o,l,p)}var Ot={},fl=()=>performance.timeOrigin+performance.now();function Wo(e,n){if(s)return J(18,1,e,n);if(Ot[e]&&(clearTimeout(Ot[e].id),delete Ot[e]),!n)return 0;var a=setTimeout(()=>{delete Ot[e],we(()=>wi(e,performance.timeOrigin+performance.now()))},n);return Ot[e]={id:a,Ce:n},0}function cl(e,n,a,o){e>>>=0,n>>>=0,a>>>=0,o>>>=0;var l=new Date().getFullYear(),p=new Date(l,0,1).getTimezoneOffset();l=new Date(l,6,1).getTimezoneOffset();var w=Math.max(p,l);(d(),A)[e>>>2>>>0]=60*w,(d(),S)[n>>>2>>>0]=+(p!=l),e=(n=b=>{var E=Math.abs(b);return`UTC${0<=b?"-":"+"}${String(Math.floor(E/60)).padStart(2,"0")}${String(E%60).padStart(2,"0")}`})(p),n=n(l),l<p?(Le(e,a,17),Le(n,o,17)):(Le(e,o,17),Le(n,a,17))}var pl=()=>Date.now();function dl(e,n,a){return a>>>=0,0<=e&&3>=e?(e===0?e=Date.now():e=performance.timeOrigin+performance.now(),e=Math.round(1e6*e),(d(),le)[a>>>3>>>0]=BigInt(e),0):28}var hn=[],Fo=(e,n)=>{hn.length=0;for(var a;a=(d(),H)[e++>>>0];){var o=a!=105;n+=(o&=a!=112)&&n%8?4:0,hn.push(a==112?(d(),A)[n>>>2>>>0]:a==106?(d(),le)[n>>>3>>>0]:a==105?(d(),S)[n>>>2>>>0]:(d(),ne)[n>>>3>>>0]),n+=o?8:4}return hn};function hl(e,n,a){return e>>>=0,n=Fo(n>>>0,a>>>0),In[e](...n)}function ml(e,n,a){return e>>>=0,n=Fo(n>>>0,a>>>0),In[e](...n)}var wl=()=>{};function gl(e,n){return U(ct(e>>>0,n>>>0))}var yl=()=>{throw Q+=1,"unwind"};function bl(){return 4294901760}var vl=()=>1,Tl=()=>navigator.hardwareConcurrency;function xl(e){e>>>=0;var n=(d(),H).length;if(e<=n||4294901760<e)return!1;for(var a=1;4>=a;a*=2){var o=n*(1+.2/a);o=Math.min(o,e+100663296);e:{o=(Math.min(4294901760,65536*Math.ceil(Math.max(e,o)/65536))-qe.buffer.byteLength+65535)/65536|0;try{qe.grow(o),ie();var l=1;break e}catch{}l=void 0}if(l)return!0}return!1}var Ue=e=>{var n=Re(e)+1,a=tr(n);return Le(e,a,n),a},mn=(e,n)=>{(d(),A)[e>>>2>>>0]=n;var a=(d(),A)[e>>>2>>>0];(d(),A)[e+4>>>2>>>0]=(n-a)/4294967296},St=e=>(d(),A)[e>>>2>>>0]+4294967296*(d(),S)[e+4>>>2>>>0],ce=[],El=(e,n)=>{ce[e>>>0]=n},$e=[],Qt=[],dt=(e,n)=>{Qt[e]=new Promise(a=>n.finally(()=>a(e)))},$=e=>{if(e)return ce[e>>>0]},Al=(e,n)=>{for(e=(d(),A)[e>>>2>>>0];e;e=(d(),A)[e>>>2>>>0])n[(d(),S)[e+4>>>2>>>0]](e)},Jt=(e,n,a)=>{(d(),A)[e>>>2>>>0]=n,(d(),A)[e+4>>>2>>>0]=a},Vo=e=>{var n=(d(),A)[e>>>2>>>0];return e=(d(),A)[e+4>>>2>>>0],ct(n,e)},Pe=e=>{var n=(d(),A)[e>>>2>>>0];return e=(d(),A)[e+4>>>2>>>0],n?ct(n,e):e===0?"":void 0},Cl=e=>{var n=Pe(e+4),a=(a=(d(),A)[e+12>>>2>>>0])?$(a):"auto";if(e+=16){var o=$((d(),A)[e+4>>>2>>>0]),l=(d(),A)[e+16>>>2>>>0],p=(d(),A)[e+20>>>2>>>0];if(l){for(var w={},b=0;b<l;++b){var E=p+24*b;w[Vo(E+4)]=(d(),ne)[E+16>>>3>>>0]}l=w}else l=void 0;e={module:o,constants:l,entryPoint:Pe(e+8)}}else e=void 0;return{label:n,layout:a,compute:e}},qo=(e,n)=>{function a(o,l){o=e[o],(d(),A)[n+l>>>2>>>0]=o}a("maxTextureDimension1D",4),a("maxTextureDimension2D",8),a("maxTextureDimension3D",12),a("maxTextureArrayLayers",16),a("maxBindGroups",20),a("maxBindGroupsPlusVertexBuffers",24),a("maxBindingsPerBindGroup",28),a("maxDynamicUniformBuffersPerPipelineLayout",32),a("maxDynamicStorageBuffersPerPipelineLayout",36),a("maxSampledTexturesPerShaderStage",40),a("maxSamplersPerShaderStage",44),a("maxStorageBuffersPerShaderStage",48),a("maxStorageTexturesPerShaderStage",52),a("maxUniformBuffersPerShaderStage",56),a("minUniformBufferOffsetAlignment",80),a("minStorageBufferOffsetAlignment",84),mn(n+64,e.maxUniformBufferBindingSize),mn(n+72,e.maxStorageBufferBindingSize),a("maxVertexBuffers",88),mn(n+96,e.maxBufferSize),a("maxVertexAttributes",104),a("maxVertexBufferArrayStride",108),a("maxInterStageShaderVariables",112),a("maxColorAttachments",116),a("maxColorAttachmentBytesPerSample",120),a("maxComputeWorkgroupStorageSize",124),a("maxComputeInvocationsPerWorkgroup",128),a("maxComputeWorkgroupSizeX",132),a("maxComputeWorkgroupSizeY",136),a("maxComputeWorkgroupSizeZ",140),a("maxComputeWorkgroupsPerDimension",144),e.Be!==void 0&&a("maxImmediateSize",148)},Ol=[,"validation","out-of-memory","internal"],Sl=[,"compatibility","core"],zo={1:"core-features-and-limits",2:"depth-clip-control",3:"depth32float-stencil8",4:"texture-compression-bc",5:"texture-compression-bc-sliced-3d",6:"texture-compression-etc2",7:"texture-compression-astc",8:"texture-compression-astc-sliced-3d",9:"timestamp-query",10:"indirect-first-instance",11:"shader-f16",12:"rg11b10ufloat-renderable",13:"bgra8unorm-storage",14:"float32-filterable",15:"float32-blendable",16:"clip-distances",17:"dual-source-blending",18:"subgroups",19:"texture-formats-tier1",20:"texture-formats-tier2",21:"primitive-index",22:"texture-component-swizzle",327692:"chromium-experimental-unorm16-texture-formats",327729:"chromium-experimental-multi-draw-indirect"},Ml=[,"low-power","high-performance"],Il=[,"occlusion","timestamp"],Ul={undefined:1,unknown:1,destroyed:2};function Bl(e,n,a,o,l,p){n=fe(n),a=fe(a),o>>>=0,l>>>=0,p>>>=0;var w=$(e>>>0);if(e={},p){var b=(d(),A)[p+12>>>2>>>0];if(b){var E=(d(),A)[p+16>>>2>>>0];e.requiredFeatures=Array.from((d(),A).subarray(E>>>2>>>0,E+4*b>>>2>>>0),B=>zo[B])}var I=(d(),A)[p+20>>>2>>>0];if(I){let B=function(te,ue,Ut=!1){ue=I+ue,(ue=(d(),A)[ue>>>2>>>0])==4294967295||Ut&&ue==0||(z[te]=ue)},V=function(te,ue){ue=I+ue;var Ut=(d(),A)[ue>>>2>>>0],Un=(d(),A)[ue+4>>>2>>>0];Ut==4294967295&&Un==4294967295||(z[te]=St(ue))};var z={};B("maxTextureDimension1D",4),B("maxTextureDimension2D",8),B("maxTextureDimension3D",12),B("maxTextureArrayLayers",16),B("maxBindGroups",20),B("maxBindGroupsPlusVertexBuffers",24),B("maxDynamicUniformBuffersPerPipelineLayout",32),B("maxDynamicStorageBuffersPerPipelineLayout",36),B("maxSampledTexturesPerShaderStage",40),B("maxSamplersPerShaderStage",44),B("maxStorageBuffersPerShaderStage",48),B("maxStorageTexturesPerShaderStage",52),B("maxUniformBuffersPerShaderStage",56),B("minUniformBufferOffsetAlignment",80),B("minStorageBufferOffsetAlignment",84),V("maxUniformBufferBindingSize",64),V("maxStorageBufferBindingSize",72),B("maxVertexBuffers",88),V("maxBufferSize",96),B("maxVertexAttributes",104),B("maxVertexBufferArrayStride",108),B("maxInterStageShaderVariables",112),B("maxColorAttachments",116),B("maxColorAttachmentBytesPerSample",120),B("maxComputeWorkgroupStorageSize",124),B("maxComputeInvocationsPerWorkgroup",128),B("maxComputeWorkgroupSizeX",132),B("maxComputeWorkgroupSizeY",136),B("maxComputeWorkgroupSizeZ",140),B("maxComputeWorkgroupsPerDimension",144),B("maxImmediateSize",148,!0),e.requiredLimits=z}(b=(d(),A)[p+24>>>2>>>0])&&(b={label:Pe(b+4)},e.defaultQueue=b),e.label=Pe(p+4)}Q+=1,dt(n,w.requestDevice(e).then(B=>{--Q,we(()=>{ce[l>>>0]=B.queue,ce[o>>>0]=B,Q+=1,dt(a,B.lost.then(V=>{we(()=>{B.onuncapturederror=()=>{};var te=k(),ue=Ue(V.message);vn(a,Ul[V.reason],ue),_(te)}),--Q})),B.onuncapturederror=V=>{var te=5;V.error instanceof GPUValidationError?te=2:V.error instanceof GPUOutOfMemoryError?te=3:V.error instanceof GPUInternalError&&(te=4);var ue=k();V=Ue(V.error.message),pi(o,te,V),_(ue)},"adapterInfo"in B||(B.adapterInfo=w.info),En(n,1,o,0)})},B=>{--Q,we(()=>{var V=k(),te=Ue(B.message);En(n,3,o,te),a&&vn(a,4,te),_(V)})}))}function Ll(e){var n=$(e>>>=0),a=$e[e];if(a){for(var o=0;o<a.length;++o)a[o]();delete $e[e]}n.destroy()}function Rl(e,n,a){a>>>=0;var o=$(e>>>=0);a==4294967295&&(a=void 0);try{var l=o.getMappedRange(n>>>0,a)}catch{return 0}var p=On(16,l.byteLength);return(d(),H).set(new Uint8Array(l),p>>>0),$e[e].push(()=>Se(p)),p}function $l(e,n,a){a>>>=0;var o=$(e>>>=0);a==4294967295&&(a=void 0);try{var l=o.getMappedRange(n>>>0,a)}catch{return 0}var p=On(16,l.byteLength);return(d(),H).fill(0,p,l.byteLength),$e[e].push(()=>{new Uint8Array(l).set((d(),H).subarray(p>>>0,p+l.byteLength>>>0)),Se(p)}),p}function Pl(e,n,a,o,l){e>>>=0,n=fe(n),a=fe(a),l>>>=0;var p=$(e);$e[e]=[],l==4294967295&&(l=void 0),Q+=1,dt(n,p.mapAsync(a,o>>>0,l).then(()=>{--Q,we(()=>{Tn(n,1,0)})},w=>{--Q,we(()=>{k();var b=Ue(w.message);Tn(n,w.name==="AbortError"?4:w.name==="OperationError"?3:0,b),delete $e[e]})}))}function _l(e){var n=$(e>>>=0),a=$e[e];if(a){for(var o=0;o<a.length;++o)a[o]();delete $e[e],n.unmap()}}function kl(e){delete ce[e>>>0]}function Nl(e,n,a){e>>>=0,n>>>=0,a>>>=0;var o=!!(d(),A)[n+32>>>2>>>0];n={label:Pe(n+4),usage:(d(),A)[n+16>>>2>>>0],size:St(n+24),mappedAtCreation:o},e=$(e);try{var l=e.createBuffer(n)}catch{return!1}return ce[a>>>0]=l,o&&($e[a]=[]),!0}function Dl(e,n,a,o){e>>>=0,n=fe(n),o>>>=0,a=Cl(a>>>0),e=$(e),Q+=1,dt(n,e.createComputePipelineAsync(a).then(l=>{--Q,we(()=>{ce[o>>>0]=l,bn(n,1,o,0)})},l=>{--Q,we(()=>{var p=k(),w=Ue(l.message);bn(n,l.reason==="validation"?3:l.reason==="internal"?4:0,o,w),_(p)})}))}function Gl(e,n,a){e>>>=0,n>>>=0,a>>>=0;var o=(d(),A)[n>>>2>>>0],l=(d(),S)[o+4>>>2>>>0];n={label:Pe(n+4),code:""},l===2&&(n.code=Vo(o+8)),e=$(e).createShaderModule(n),ce[a>>>0]=e}var Wl=e=>{(e=$(e)).onuncapturederror=null,e.destroy()};function Fl(e,n){n=fe(n),e=$(e>>>0),Q+=1,dt(n,e.popErrorScope().then(a=>{--Q,we(()=>{var o=5;a?a instanceof GPUValidationError?o=2:a instanceof GPUOutOfMemoryError?o=3:a instanceof GPUInternalError&&(o=4):o=1;var l=k(),p=a?Ue(a.message):0;xn(n,1,o,p),_(l)})},a=>{--Q,we(()=>{var o=k(),l=Ue(a.message);xn(n,1,5,l),_(o)})}))}function Vl(e,n,a,o){if(n=fe(n),o>>>=0,a>>>=0){var l={featureLevel:Sl[(d(),S)[a+4>>>2>>>0]],powerPreference:Ml[(d(),S)[a+8>>>2>>>0]],forceFallbackAdapter:!!(d(),A)[a+12>>>2>>>0]};(e=(d(),A)[a>>>2>>>0])!==0&&(d(),l.Fe=!!(d(),A)[e+8>>>2>>>0])}"gpu"in navigator?(Q+=1,dt(n,navigator.gpu.requestAdapter(l).then(p=>{--Q,we(()=>{if(p)ce[o>>>0]=p,Mt(n,1,o,0);else{var w=k(),b=Ue("WebGPU not available on this browser (requestAdapter returned null)");Mt(n,3,o,b),_(w)}})},p=>{--Q,we(()=>{var w=k(),b=Ue(p.message);Mt(n,4,o,b),_(w)})}))):(l=k(),e=Ue("WebGPU not available on this browser (navigator.gpu is not available)"),Mt(n,3,o,e),_(l))}function ql(e,n,a){return e>>>=0,n>>>=0,a>>>=0,$o(async()=>{var o=[];if(a){var l=(d(),S)[a>>>2>>>0];o.length=n+1,o[n]=new Promise(b=>setTimeout(b,l,0))}else o.length=n;for(var p=0;p<n;++p){var w=St(e+8*p);if(!(w in Qt))return w;o[p]=Qt[w]}return o=await Promise.race(o),delete Qt[o],o})}var wn,gn={},jo=()=>{if(!wn){var e,n={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:"./this.program"};for(e in gn)gn[e]===void 0?delete n[e]:n[e]=gn[e];var a=[];for(e in n)a.push(`${e}=${n[e]}`);wn=a}return wn};function Ho(e,n){if(s)return J(19,1,e,n);e>>>=0,n>>>=0;var a,o=0,l=0;for(a of jo()){var p=n+o;(d(),A)[e+l>>>2>>>0]=p,o+=Le(a,p,1/0)+1,l+=4}return 0}function Yo(e,n){if(s)return J(20,1,e,n);e>>>=0,n>>>=0;var a=jo();for(var o of((d(),A)[e>>>2>>>0]=a.length,e=0,a))e+=Re(o)+1;return(d(),A)[n>>>2>>>0]=e,0}function Xo(e){return s?J(21,1,e):52}function Zo(e,n,a,o){return s?J(22,1,e,n,a,o):52}function Ko(e,n,a,o){return s?J(23,1,e,n,a,o):70}var zl=[null,[],[]];function Qo(e,n,a,o){if(s)return J(24,1,e,n,a,o);n>>>=0,a>>>=0,o>>>=0;for(var l=0,p=0;p<a;p++){var w=(d(),A)[n>>>2>>>0],b=(d(),A)[n+4>>>2>>>0];n+=8;for(var E=0;E<b;E++){var I=e,z=(d(),H)[w+E>>>0],B=zl[I];z===0||z===10?((I===1?G:U)(ho(B)),B.length=0):B.push(z)}l+=b}return(d(),A)[o>>>2>>>0]=l,0}function jl(e){return e>>>0}function Hl(e,n){return qo($(e>>>0).limits,n>>>0),1}function Yl(e,n){return $(e>>>0).features.has(zo[n])}function Xl(e){return BigInt($(e>>>0).size)}function Zl(e){return BigInt($(e>>>0).usage)}function Kl(e,n){if(e>>>=0,n>>>=0){var a=Pe(n+4);a={label:a,timestampWrites:n=(n=(d(),A)[n+12>>>2>>>0])!==0?{querySet:$((d(),A)[n+4>>>2>>>0]),beginningOfPassWriteIndex:(d(),A)[n+8>>>2>>>0],endOfPassWriteIndex:(d(),A)[n+12>>>2>>>0]}:void 0}}return n=$(e),e=si(0),a=n.beginComputePass(a),ce[e>>>0]=a,e}function Ql(e,n,a,o){a=fe(a),(o=fe(o))==-1&&(o=void 0),(e=$(e>>>0)).clearBuffer($(n>>>0),a,o)}function Jl(e,n,a,o,l,p){a=fe(a),l=fe(l),p=fe(p),$(e>>>0).copyBufferToBuffer($(n>>>0),a,$(o>>>0),l,p)}function ef(e){var n=$(e>>>0);return e=oi(0),n=n.finish(),ce[e>>>0]=n,e}function tf(e,n,a,o,l,p){p=fe(p),$(e>>>0).resolveQuerySet($(n>>>0),a,o,$(l>>>0),p)}function rf(e,n,a,o){$(e>>>0).dispatchWorkgroups(n,a,o)}function nf(e,n,a){a=fe(a),$(e>>>0).dispatchWorkgroupsIndirect($(n>>>0),a)}function af(e){$(e>>>0).end()}function of(e,n,a,o,l){o>>>=0,l>>>=0,e=$(e>>>0),a=$(a>>>0),o==0?e.setBindGroup(n,a):e.setBindGroup(n,a,(d(),A),l>>>2,o)}function sf(e,n){$(e>>>0).setPipeline($(n>>>0))}function uf(e,n,a){$(e>>>0).Ee($(n>>>0),a)}function lf(e,n){var a=$(e>>>0);return e=ai(0),n=a.getBindGroupLayout(n),ce[e>>>0]=n,e}function ff(e,n){function a(l){var p=(d(),A)[l+8>>>2>>>0],w=(d(),A)[l+32>>>2>>>0],b=(d(),A)[l+36>>>2>>>0],E=0;return Al(l,{327681:I=>{E=(d(),A)[I+8>>>2>>>0]}}),p?((w=St(l+24))==-1&&(w=void 0),p={buffer:$(p),offset:St(l+16),size:w}):p=$(w||b||E),{binding:(d(),A)[l+4>>>2>>>0],resource:p}}e>>>=0,n={label:Pe((n>>>=0)+4),layout:$((d(),A)[n+12>>>2>>>0]),entries:(function(l,p){for(var w=[],b=0;b<l;++b)w.push(a(p+40*b));return w})((d(),A)[n+16>>>2>>>0],(d(),A)[n+20>>>2>>>0])},e=$(e);var o=ni(0);return El(o,e.createBindGroup(n)),o}function cf(e,n){var a;return e>>>=0,(n>>>=0)&&(a={label:Pe(n+4)}),n=$(e),e=ii(0),a=n.createCommandEncoder(a),ce[e>>>0]=a,e}function pf(e,n){e>>>=0,n>>>=0,n={type:Il[(d(),S)[n+12>>>2>>>0]],count:(d(),A)[n+16>>>2>>>0]};var a=$(e);return e=ui(0),n=a.createQuerySet(n),ce[e>>>0]=n,e}function df(e,n){e=$(e>>>0).adapterInfo,n>>>=0,(d(),A)[n+52>>>2>>>0]=e.subgroupMinSize,(d(),A)[n+56>>>2>>>0]=e.subgroupMaxSize;var a=e.vendor+e.architecture+e.device+e.description,o=Re(a)+1,l=ht(o);return l&&Le(a,l,o),a=l,o=Re(e.vendor),Jt(n+4,a,o),a+=o,o=Re(e.architecture),Jt(n+12,a,o),a+=o,o=Re(e.device),Jt(n+20,a,o),Jt(n+28,a+o,Re(e.description)),(d(),S)[n+36>>>2>>>0]=2,e=e.isFallbackAdapter?3:4,(d(),S)[n+40>>>2>>>0]=e,(d(),A)[n+44>>>2>>>0]=0,(d(),A)[n+48>>>2>>>0]=0,1}var hf={"core-features-and-limits":1,"depth-clip-control":2,"depth32float-stencil8":3,"texture-compression-bc":4,"texture-compression-bc-sliced-3d":5,"texture-compression-etc2":6,"texture-compression-astc":7,"texture-compression-astc-sliced-3d":8,"timestamp-query":9,"indirect-first-instance":10,"shader-f16":11,"rg11b10ufloat-renderable":12,"bgra8unorm-storage":13,"float32-filterable":14,"float32-blendable":15,"clip-distances":16,"dual-source-blending":17,subgroups:18,"texture-formats-tier1":19,"texture-formats-tier2":20,"primitive-index":21,"texture-component-swizzle":22,"chromium-experimental-unorm16-texture-formats":327692,"chromium-experimental-multi-draw-indirect":327729};function mf(e,n){n>>>=0;var a=$(e>>>0);e=ht(4*a.features.size);var o=0,l=0;for(let p of a.features)0<=(a=hf[p])&&((d(),S)[e+o>>>2>>>0]=a,o+=4,l++);(d(),A)[n+4>>>2>>>0]=e,(d(),A)[n>>>2>>>0]=l}function wf(e,n){return qo($(e>>>0).limits,n>>>0),1}function gf(e,n){$(e>>>0).pushErrorScope(Ol[n])}function yf(e,n,a){n>>>=0,a>>>=0,e=$(e>>>0),n=Array.from((d(),S).subarray(a>>>2>>>0,a+4*n>>>2>>>0),o=>$(o)),e.submit(n)}function bf(e,n,a,o,l){a=fe(a),o>>>=0,l>>>=0,e=$(e>>>0),n=$(n>>>0),o=(d(),H).subarray(o>>>0,o+l>>>0),e.writeBuffer(n,a,o,0,l)}s||(function(){for(var e=r.numThreads-1;e--;)io();Fe.push(async()=>{var n=(async function(){if(!s)return Promise.all(Ve.map(oo))})();oe++,await n,--oe==0&&ee&&(n=ee,ee=null,n())})})(),s||(qe=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),ie()),r.wasmBinary&&(v=r.wasmBinary),r.stackSave=()=>k(),r.stackRestore=e=>_(e),r.stackAlloc=e=>tr(e),r.setValue=function(e,n,a="i8"){switch(a.endsWith("*")&&(a="*"),a){case"i1":case"i8":(d(),R)[e>>>0]=n;break;case"i16":(d(),ve)[e>>>1>>>0]=n;break;case"i32":(d(),S)[e>>>2>>>0]=n;break;case"i64":(d(),le)[e>>>3>>>0]=BigInt(n);break;case"float":(d(),P)[e>>>2>>>0]=n;break;case"double":(d(),ne)[e>>>3>>>0]=n;break;case"*":(d(),A)[e>>>2>>>0]=n;break;default:me(`invalid type for setValue: ${a}`)}},r.getValue=function(e,n="i8"){switch(n.endsWith("*")&&(n="*"),n){case"i1":case"i8":return(d(),R)[e>>>0];case"i16":return(d(),ve)[e>>>1>>>0];case"i32":return(d(),S)[e>>>2>>>0];case"i64":return(d(),le)[e>>>3>>>0];case"float":return(d(),P)[e>>>2>>>0];case"double":return(d(),ne)[e>>>3>>>0];case"*":return(d(),A)[e>>>2>>>0];default:me(`invalid type for getValue: ${n}`)}},r.UTF8ToString=ct,r.stringToUTF8=Le,r.lengthBytesUTF8=Re;var Jo,ei,yn,er,Se,ht,ti,ri,ni,ai,oi,ii,si,ui,li,fi,ci,bn,vn,Tn,xn,Mt,En,pi,An,di,hi,mi,Cn,wi,gi,On,F,It,yi,_,tr,k,bi,Sn,vi,Ti,xi,Mn,Ei,Ai,Ci,Oi,Si,Mi,Ii,Ui,Bi,Li,Ri,$i,Pi,_i,ki,Ni,Di,Gi,Wi,Fi,Vi,qi,zi,ji,Hi,Yi,Xi,Zi,Ki,Qi,Ji,es,ts,rs,ns,as,os,is,ss,_e,vf=[en,to,lo,mo,wo,go,yo,bo,vo,To,xo,Eo,Ao,Co,Oo,So,Do,Go,Wo,Ho,Yo,Xo,Zo,Ko,Qo],In={1028716:(e,n,a,o,l)=>{if(r===void 0||!r.Vc)return 1;if((e=ct(Number(e>>>0))).startsWith("./")&&(e=e.substring(2)),!(e=r.Vc.get(e)))return 2;if(n=Number(n>>>0),a=Number(a>>>0),o=Number(o>>>0),n+a>e.byteLength)return 3;try{let p=e.subarray(n,n+a);switch(l){case 0:(d(),H).set(p,o>>>0);break;case 1:r.bd?r.bd(o,p):r.pe(o,p);break;default:return 4}return 0}catch{return 4}},1029540:(e,n,a)=>{r.Td(e,(d(),H).subarray(n>>>0,n+a>>>0))},1029604:()=>r.ne(),1029646:e=>{r.kd(e)},1029683:()=>typeof wasmOffsetConverter<"u"};function Tf(e,n,a,o){var l=k();try{return Ui(e,n,a,o)}catch(p){if(_(l),p!==p+0)throw p;F(1,0)}}function xf(e,n,a){var o=k();try{return Si(e,n,a)}catch(l){if(_(o),l!==l+0)throw l;F(1,0)}}function Ef(e){var n=k();try{Ei(e)}catch(a){if(_(n),a!==a+0)throw a;F(1,0)}}function Af(e,n){var a=k();try{return Mn(e,n)}catch(o){if(_(a),o!==o+0)throw o;F(1,0)}}function Cf(e,n,a){var o=k();try{xi(e,n,a)}catch(l){if(_(o),l!==l+0)throw l;F(1,0)}}function Of(e,n){var a=k();try{Bi(e,n)}catch(o){if(_(a),o!==o+0)throw o;F(1,0)}}function Sf(e,n,a,o,l,p,w){var b=k();try{return Oi(e,n,a,o,l,p,w)}catch(E){if(_(b),E!==E+0)throw E;F(1,0)}}function Mf(e,n,a,o,l,p){var w=k();try{Ai(e,n,a,o,l,p)}catch(b){if(_(w),b!==b+0)throw b;F(1,0)}}function If(e,n,a,o){var l=k();try{Ii(e,n,a,o)}catch(p){if(_(l),p!==p+0)throw p;F(1,0)}}function Uf(e,n,a,o,l,p,w){var b=k();try{Ri(e,n,a,o,l,p,w)}catch(E){if(_(b),E!==E+0)throw E;F(1,0)}}function Bf(e,n,a,o,l,p,w){var b=k();try{$i(e,n,a,o,l,p,w)}catch(E){if(_(b),E!==E+0)throw E;F(1,0)}}function Lf(e,n,a,o,l,p,w,b){var E=k();try{Vi(e,n,a,o,l,p,w,b)}catch(I){if(_(E),I!==I+0)throw I;F(1,0)}}function Rf(e,n,a,o,l,p,w,b,E,I,z,B){var V=k();try{Pi(e,n,a,o,l,p,w,b,E,I,z,B)}catch(te){if(_(V),te!==te+0)throw te;F(1,0)}}function $f(e,n,a,o,l){var p=k();try{return Li(e,n,a,o,l)}catch(w){if(_(p),w!==w+0)throw w;F(1,0)}}function Pf(e,n,a,o,l,p){var w=k();try{qi(e,n,a,o,l,p)}catch(b){if(_(w),b!==b+0)throw b;F(1,0)}}function _f(e,n,a,o,l){var p=k();try{Ci(e,n,a,o,l)}catch(w){if(_(p),w!==w+0)throw w;F(1,0)}}function kf(e,n,a,o,l,p,w,b){var E=k();try{Mi(e,n,a,o,l,p,w,b)}catch(I){if(_(E),I!==I+0)throw I;F(1,0)}}function Nf(e){var n=k();try{return zi(e)}catch(a){if(_(n),a!==a+0)throw a;F(1,0)}}function Df(e,n,a){var o=k();try{return ji(e,n,a)}catch(l){if(_(o),l!==l+0)throw l;F(1,0)}}function Gf(e,n){var a=k();try{return ns(e,n)}catch(o){if(_(a),o!==o+0)throw o;return F(1,0),0n}}function Wf(e){var n=k();try{return _i(e)}catch(a){if(_(n),a!==a+0)throw a;return F(1,0),0n}}function Ff(e,n,a,o){var l=k();try{return Hi(e,n,a,o)}catch(p){if(_(l),p!==p+0)throw p;F(1,0)}}function Vf(e,n,a,o,l){var p=k();try{return Yi(e,n,a,o,l)}catch(w){if(_(p),w!==w+0)throw w;F(1,0)}}function qf(e,n,a,o,l,p){var w=k();try{return Xi(e,n,a,o,l,p)}catch(b){if(_(w),b!==b+0)throw b;F(1,0)}}function zf(e,n,a,o,l,p){var w=k();try{return Wi(e,n,a,o,l,p)}catch(b){if(_(w),b!==b+0)throw b;F(1,0)}}function jf(e,n,a,o,l,p){var w=k();try{return Zi(e,n,a,o,l,p)}catch(b){if(_(w),b!==b+0)throw b;F(1,0)}}function Hf(e,n,a,o,l,p,w,b){var E=k();try{return Fi(e,n,a,o,l,p,w,b)}catch(I){if(_(E),I!==I+0)throw I;F(1,0)}}function Yf(e,n,a,o,l){var p=k();try{return Ki(e,n,a,o,l)}catch(w){if(_(p),w!==w+0)throw w;return F(1,0),0n}}function Xf(e,n,a,o){var l=k();try{return Qi(e,n,a,o)}catch(p){if(_(l),p!==p+0)throw p;F(1,0)}}function Zf(e,n,a,o){var l=k();try{return Ji(e,n,a,o)}catch(p){if(_(l),p!==p+0)throw p;F(1,0)}}function Kf(e,n,a,o,l,p,w,b,E,I,z,B){var V=k();try{return es(e,n,a,o,l,p,w,b,E,I,z,B)}catch(te){if(_(V),te!==te+0)throw te;F(1,0)}}function Qf(e,n,a,o,l,p,w,b,E,I,z){var B=k();try{ts(e,n,a,o,l,p,w,b,E,I,z)}catch(V){if(_(B),V!==V+0)throw V;F(1,0)}}function Jf(e,n,a,o,l,p,w,b,E,I,z,B,V,te,ue,Ut){var Un=k();try{rs(e,n,a,o,l,p,w,b,E,I,z,B,V,te,ue,Ut)}catch(Bn){if(_(Un),Bn!==Bn+0)throw Bn;F(1,0)}}function ec(e,n,a){var o=k();try{return Ni(e,n,a)}catch(l){if(_(o),l!==l+0)throw l;return F(1,0),0n}}function tc(e,n,a){var o=k();try{return ki(e,n,a)}catch(l){if(_(o),l!==l+0)throw l;F(1,0)}}function rc(e,n,a){var o=k();try{return Di(e,n,a)}catch(l){if(_(o),l!==l+0)throw l;F(1,0)}}function nc(e,n,a,o){var l=k();try{Gi(e,n,a,o)}catch(p){if(_(l),p!==p+0)throw p;F(1,0)}}function rr(){if(0<oe)ee=rr;else if(s)O?.(r),We();else{for(var e=Fe;0<e.length;)e.shift()(r);0<oe?ee=rr:(r.calledRun=!0,D||(We(),O?.(r)))}}return s||(_e=await zt(),rr()),r.PTR_SIZE=4,r.webgpuInit=e=>{let n=new WeakMap,a,o,l=1;r.webgpuRegisterDevice=b=>{if(o!==void 0)throw Error("another WebGPU EP inference session is being created.");if(b){var E=n.get(b);if(!E){let I=((z,B=0)=>{var V=ci(B);return B=fi(B,V),ce[V>>>0]=z.queue,ce[B>>>0]=z,B})(b,E=ri(0));E=[l++,E,I],n.set(b,E)}return a=b,o=E[0],E}a=void 0,o=0};let p=new Map;r.webgpuOnCreateSession=b=>{if(o!==void 0){var E=o;if(o=void 0,b){let I=yn(E);p.set(b,I),E===0&&e(a??$(I))}a=void 0}},r.webgpuOnReleaseSession=b=>{p.delete(b)};let w=Symbol("gpuBufferMetadata");r.webgpuRegisterBuffer=(b,E,I)=>{if(I)return b[w]=[I,NaN],I;if(I=b[w])return I[1]++,I[0];if((E=p.get(E))===void 0)throw Error("Invalid session handle passed to webgpuRegisterBuffer");return E=((z,B=0)=>(z.mapState==="unmapped"||me(),B=li(B),ce[B>>>0]=z,B))(b,E),b[w]=[E,1],E},r.webgpuUnregisterBuffer=b=>{let E=b[w];if(!E)throw Error("Buffer is not registered");E[1]--,E[1]===0&&(ti(E[0]),delete b[w])},r.webgpuGetBuffer=b=>$(b),r.webgpuCreateDownloader=(b,E,I)=>{if((I=p.get(I))===void 0)throw Error("Invalid session handle passed to webgpuRegisterBuffer");let z=$(I),B=16*Math.ceil(Number(E)/16);return async()=>{let V=z.createBuffer({size:B,usage:9});try{let te=z.createCommandEncoder();return te.copyBufferToBuffer(b,0,V,0,B),z.queue.submit([te.finish()]),await V.mapAsync(GPUMapMode.READ),V.getMappedRange().slice(0,E)}finally{V.destroy()}}},r.bd=(b,E)=>{var I=E.buffer;let z=E.byteOffset,B=E.byteLength;if(E=16*Math.ceil(Number(B)/16),b=$(b),!a){var V=yn(o);a=$(V)}let te=(V=a.createBuffer({mappedAtCreation:!0,size:E,usage:6})).getMappedRange();new Uint8Array(te).set(new Uint8Array(I,z,B)),V.unmap(),(I=a.createCommandEncoder()).copyBufferToBuffer(V,0,b,0,E),a.queue.submit([I.finish()]),V.destroy()}},r.webnnInit=e=>{let n=e[0];[r.ne,r.kd,r.webnnEnsureTensor,r.Td,r.webnnDownloadTensor,r.me,r.webnnEnableTraceEvent]=e.slice(1),r.webnnReleaseTensorId=r.kd,r.webnnUploadTensor=r.Td,r.webnnRegisterMLContext=r.me,r.webnnOnRunStart=a=>n.onRunStart(a),r.webnnOnRunEnd=n.onRunEnd.bind(n),r.webnnOnReleaseSession=a=>{n.onReleaseSession(a)},r.webnnCreateMLTensorDownloader=(a,o)=>n.createMLTensorDownloader(a,o),r.webnnRegisterMLTensor=(a,o,l,p)=>n.registerMLTensor(a,o,l,p),r.webnnCreateMLContext=a=>n.createMLContext(a),r.webnnRegisterMLConstant=(a,o,l,p,w,b)=>n.registerMLConstant(a,o,l,p,w,r.Vc,b),r.webnnRegisterGraphInput=n.registerGraphInput.bind(n),r.webnnIsGraphInput=n.isGraphInput.bind(n),r.webnnRegisterGraphOutput=n.registerGraphOutput.bind(n),r.webnnIsGraphOutput=n.isGraphOutput.bind(n),r.webnnCreateTemporaryTensor=n.createTemporaryTensor.bind(n),r.webnnIsGraphInputOutputTypeSupported=n.isGraphInputOutputTypeSupported.bind(n)},ae?r:new Promise((e,n)=>{O=e,C=n})}var ea,ta,Is=q(()=>{ea=Jn,ta=globalThis.self?.name?.startsWith("em-pthread"),ta&&Jn()}),pr,dr,ra,ye,na,$t,aa,oa,hr,ia,mr,sa,wr,ua,gr=q(()=>{lr(),pr=typeof location>"u"?void 0:location.origin,dr=self.location.href>"file:"&&self.location.href<"file;",ra=()=>{{if(dr){let t=URL;return new URL(new t("ort.webgpu.bundle.min.mjs",self.location.href).href,pr).href}return self.location.href}},ye=ra(),na=()=>{if(ye&&!ye.startsWith("blob:"))return ye.substring(0,ye.lastIndexOf("/")+1)},$t=(t,r)=>{try{let i=r??ye;return(i?new URL(t,i):new URL(t)).origin===pr}catch{return!1}},aa=(t,r)=>{let i=r??ye;try{return(i?new URL(t,i):new URL(t)).href}catch{return}},oa=(t,r)=>`${r??"./"}${t}`,hr=async t=>{let r=await(await fetch(t,{credentials:"same-origin"})).blob();return URL.createObjectURL(r)},ia=async t=>(await import(t)).default,mr=(Ms(),Bt(Zn)).default,sa=async()=>{if(!ye)throw new Error("Failed to load proxy worker: cannot determine the script source URL.");if($t(ye))return[void 0,mr()];let t=await hr(ye);return[t,mr(t)]},wr=(Is(),Bt(Qn)).default,ua=async(t,r,i,u)=>{let s=wr&&!(t||r);if(s)if(ye)s=$t(ye)||u&&!i;else if(u&&!i)s=!0;else throw new Error("cannot determine the script source URL.");if(s)return[void 0,wr];{let c="ort-wasm-simd-threaded.asyncify.mjs",f=t??aa(c,r),m=i&&f&&!$t(f,r),h=m?await hr(f):f??oa(c,r);return[m?h:void 0,await ia(h)]}}}),yr,Pt,yt,br,la,fa,ca,vr,X,Ze=q(()=>{gr(),Pt=!1,yt=!1,br=!1,la=()=>{if(typeof SharedArrayBuffer>"u")return!1;try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},fa=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}},ca=()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}},vr=async t=>{if(Pt)return Promise.resolve();if(yt)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(br)throw new Error("previous call to 'initializeWebAssembly()' failed.");yt=!0;let r=t.initTimeout,i=t.numThreads;if(t.simd!==!1){if(t.simd==="relaxed"){if(!ca())throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!fa())throw new Error("WebAssembly SIMD is not supported in the current environment.")}let u=la();i>1&&!u&&(typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+i+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."),t.numThreads=i=1);let s=t.wasmPaths,c=typeof s=="string"?s:void 0,f=s?.mjs,m=f?.href??f,h=s?.wasm,y=h?.href??h,g=t.wasmBinary,[v,T]=await ua(m,c,i>1,!!g||!!y),x=!1,O=[];if(r>0&&O.push(new Promise(C=>{setTimeout(()=>{x=!0,C()},r)})),O.push(new Promise((C,N)=>{let L={numThreads:i};if(g)L.wasmBinary=g,L.locateFile=M=>M;else if(y||c)L.locateFile=M=>y??c+M;else if(m&&m.indexOf("blob:")!==0)L.locateFile=M=>new URL(M,m).href;else if(v){let M=na();M&&(L.locateFile=G=>M+G)}T(L).then(M=>{yt=!1,Pt=!0,yr=M,C(),v&&URL.revokeObjectURL(v)},M=>{yt=!1,br=!0,N(M)})})),await Promise.race(O),x)throw new Error(`WebAssembly backend initializing failed due to timeout: ${r}ms`)},X=()=>{if(Pt&&yr)return yr;throw new Error("WebAssembly is not initialized yet.")}}),be,_t,j,Tr=q(()=>{Ze(),be=(t,r)=>{let i=X(),u=i.lengthBytesUTF8(t)+1,s=i._malloc(u);return i.stringToUTF8(t,s,u),r.push(s),s},_t=(t,r,i,u)=>{if(typeof t=="object"&&t!==null){if(i.has(t))throw new Error("Circular reference in options");i.add(t)}Object.entries(t).forEach(([s,c])=>{let f=r?r+s:s;if(typeof c=="object")_t(c,f+".",i,u);else if(typeof c=="string"||typeof c=="number")u(f,c.toString());else if(typeof c=="boolean")u(f,c?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof c}`)})},j=t=>{let r=X(),i=r.stackSave();try{let u=r.PTR_SIZE,s=r.stackAlloc(2*u);r._OrtGetLastError(s,s+u);let c=Number(r.getValue(s,u===4?"i32":"i64")),f=r.getValue(s+u,"*"),m=f?r.UTF8ToString(f):"";throw new Error(`${t} ERROR_CODE: ${c}, ERROR_MESSAGE: ${m}`)}finally{r.stackRestore(i)}}}),pa,Us=q(()=>{Ze(),Tr(),pa=t=>{let r=X(),i=0,u=[],s=t||{};try{if(t?.logSeverityLevel===void 0)s.logSeverityLevel=2;else if(typeof t.logSeverityLevel!="number"||!Number.isInteger(t.logSeverityLevel)||t.logSeverityLevel<0||t.logSeverityLevel>4)throw new Error(`log severity level is not valid: ${t.logSeverityLevel}`);if(t?.logVerbosityLevel===void 0)s.logVerbosityLevel=0;else if(typeof t.logVerbosityLevel!="number"||!Number.isInteger(t.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${t.logVerbosityLevel}`);t?.terminate===void 0&&(s.terminate=!1);let c=0;return t?.tag!==void 0&&(c=be(t.tag,u)),i=r._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,c),i===0&&j("Can't create run options."),t?.extra!==void 0&&_t(t.extra,"",new WeakSet,(f,m)=>{let h=be(f,u),y=be(m,u);r._OrtAddRunConfigEntry(i,h,y)!==0&&j(`Can't set a run config entry: ${f} - ${m}.`)}),[i,u]}catch(c){throw i!==0&&r._OrtReleaseRunOptions(i),u.forEach(f=>r._free(f)),c}}}),da,ha,ma,ot,Ne,wa,ga,Bs=q(()=>{Ze(),Tr(),da=t=>{switch(t){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"layout":return 3;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${t}`)}},ha=t=>{switch(t){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${t}`)}},ma=t=>{t.extra||(t.extra={}),t.extra.session||(t.extra.session={});let r=t.extra.session;r.use_ort_model_bytes_directly||(r.use_ort_model_bytes_directly="1"),t.executionProviders&&t.executionProviders.some(i=>(typeof i=="string"?i:i.name)==="webgpu")&&(t.enableMemPattern=!1)},ot=(t,r,i,u)=>{let s=be(r,u),c=be(i,u);X()._OrtAddSessionConfigEntry(t,s,c)!==0&&j(`Can't set a session config entry: ${r} - ${i}.`)},Ne=(t,r,i,u)=>{let s=be(r,u),c=be(i,u);t.push([s,c])},wa=async(t,r,i)=>{let u=r.executionProviders;for(let s of u){let c=typeof s=="string"?s:s.name,f=[];switch(c){case"webnn":if(c="WEBNN",ot(t,"session.disable_quant_qdq","1",i),ot(t,"session.disable_qdq_constant_folding","1",i),typeof s!="string"){let v=s?.deviceType;v&&ot(t,"deviceType",v,i)}break;case"webgpu":{c="WebGPU";let v;if(typeof s!="string"){let x=s;if(x.device)if(typeof GPUDevice<"u"&&x.device instanceof GPUDevice)v=x.device;else throw new Error("Invalid GPU device set in WebGPU EP options.");let{enableGraphCapture:O}=r;if(typeof O=="boolean"&&O&&Ne(f,"enableGraphCapture","1",i),typeof x.preferredLayout=="string"&&Ne(f,"preferredLayout",x.preferredLayout,i),x.forceCpuNodeNames){let C=Array.isArray(x.forceCpuNodeNames)?x.forceCpuNodeNames:[x.forceCpuNodeNames];Ne(f,"forceCpuNodeNames",C.join(` | |
| `),i)}x.validationMode&&Ne(f,"validationMode",x.validationMode,i)}let T=X().webgpuRegisterDevice(v);if(T){let[x,O,C]=T;Ne(f,"deviceId",x.toString(),i),Ne(f,"webgpuInstance",O.toString(),i),Ne(f,"webgpuDevice",C.toString(),i)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${c}`)}let m=be(c,i),h=f.length,y=0,g=0;if(h>0){y=X()._malloc(h*X().PTR_SIZE),i.push(y),g=X()._malloc(h*X().PTR_SIZE),i.push(g);for(let v=0;v<h;v++)X().setValue(y+v*X().PTR_SIZE,f[v][0],"*"),X().setValue(g+v*X().PTR_SIZE,f[v][1],"*")}await X()._OrtAppendExecutionProvider(t,m,y,g,h)!==0&&j(`Can't append execution provider: ${c}.`)}},ga=async t=>{let r=X(),i=0,u=[],s=t||{};ma(s);try{let c=da(s.graphOptimizationLevel??"all"),f=ha(s.executionMode??"sequential"),m=typeof s.logId=="string"?be(s.logId,u):0,h=s.logSeverityLevel??2;if(!Number.isInteger(h)||h<0||h>4)throw new Error(`log severity level is not valid: ${h}`);let y=s.logVerbosityLevel??0;if(!Number.isInteger(y)||y<0||y>4)throw new Error(`log verbosity level is not valid: ${y}`);let g=typeof s.optimizedModelFilePath=="string"?be(s.optimizedModelFilePath,u):0;if(i=r._OrtCreateSessionOptions(c,!!s.enableCpuMemArena,!!s.enableMemPattern,f,!!s.enableProfiling,0,m,h,y,g),i===0&&j("Can't create session options."),s.executionProviders&&await wa(i,s,u),s.enableGraphCapture!==void 0){if(typeof s.enableGraphCapture!="boolean")throw new Error(`enableGraphCapture must be a boolean value: ${s.enableGraphCapture}`);ot(i,"enableGraphCapture",s.enableGraphCapture.toString(),u)}if(s.freeDimensionOverrides)for(let[v,T]of Object.entries(s.freeDimensionOverrides)){if(typeof v!="string")throw new Error(`free dimension override name must be a string: ${v}`);if(typeof T!="number"||!Number.isInteger(T)||T<0)throw new Error(`free dimension override value must be a non-negative integer: ${T}`);let x=be(v,u);r._OrtAddFreeDimensionOverride(i,x,T)!==0&&j(`Can't set a free dimension override: ${v} - ${T}.`)}return s.extra!==void 0&&_t(s.extra,"",new WeakSet,(v,T)=>{ot(i,v,T,u)}),[i,u]}catch(c){throw i!==0&&r._OrtReleaseSessionOptions(i)!==0&&j("Can't release session options."),u.forEach(f=>r._free(f)),c}}}),Ke,kt,it,bt,Nt,xr,Er,Ar,st=q(()=>{Ke=t=>{switch(t){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;case"int4":return 22;case"uint4":return 21;default:throw new Error(`unsupported data type: ${t}`)}},kt=t=>{switch(t){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";case 22:return"int4";case 21:return"uint4";default:throw new Error(`unsupported data type: ${t}`)}},it=(t,r)=>{let i=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][t],u=typeof r=="number"?r:r.reduce((s,c)=>s*c,1);return i>0?Math.ceil(u*i):void 0},bt=t=>{switch(t){case"float16":return typeof Float16Array<"u"?Float16Array:Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${t}`)}},Nt=t=>{switch(t){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${t}`)}},xr=t=>t==="float32"||t==="float16"||t==="int32"||t==="int64"||t==="uint32"||t==="uint8"||t==="bool"||t==="uint4"||t==="int4",Er=t=>t==="float32"||t==="float16"||t==="int32"||t==="int64"||t==="uint32"||t==="uint64"||t==="int8"||t==="uint8"||t==="bool"||t==="uint4"||t==="int4",Ar=t=>{switch(t){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;case"ml-tensor":return 5;default:throw new Error(`unsupported data location: ${t}`)}}}),Cr,ya=q(()=>{lr(),Cr=async t=>{if(typeof t=="string"){let r=await fetch(t);if(!r.ok)throw new Error(`failed to load external data file: ${t}`);let i=r.headers.get("Content-Length"),u=i?parseInt(i,10):0;if(u<1073741824)return new Uint8Array(await r.arrayBuffer());{if(!r.body)throw new Error(`failed to load external data file: ${t}, no response body.`);let s=r.body.getReader(),c;try{c=new ArrayBuffer(u)}catch(m){if(m instanceof RangeError){let h=Math.ceil(u/65536);c=new WebAssembly.Memory({initial:h,maximum:h}).buffer}else throw m}let f=0;for(;;){let{done:m,value:h}=await s.read();if(m)break;let y=h.byteLength;new Uint8Array(c,f,y).set(h),f+=y}return new Uint8Array(c,0,u)}}else return t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t instanceof Uint8Array?t:new Uint8Array(t)}}),ba,Ls=q(()=>{st(),ba=(t,r)=>new(bt(r))(t)}),va,Ta,xa,Ea,Aa,Ca,pe,Oa=q(()=>{st(),va=["V","I","W","E","F"],Ta=(t,r)=>{console.log(`[${va[t]},${new Date().toISOString()}]${r}`)},Aa=(t,r)=>{xa=t,Ea=r},Ca=(t,r)=>{let i=Nt(t),u=Nt(xa);i>=u&&Ta(i,typeof r=="function"?r():r)},pe=(...t)=>{Ea&&Ca(...t)}}),Or,Sr,Mr,Sa,Ir,Ma,Ur,Br,Lr,Ia,Ua,Rs=q(()=>{st(),Oa(),Or=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),Sr=(t,r)=>{if(r==="int32")return t;let i=Or.get(r);if(!i)throw new Error(`WebNN backend does not support data type: ${r}`);let u=i/8;if(t.byteLength%u!==0)throw new Error(`Invalid Uint8Array length - must be a multiple of ${u}.`);let s=t.byteLength/u,c=new(bt(r))(t.buffer,t.byteOffset,s);switch(r){case"int64":case"uint64":{let f=new Int32Array(s);for(let m=0;m<s;m++){let h=c[m];if(h>2147483647n||h<-2147483648n)throw new Error("Can not convert int64 data to int32 - value out of range.");f[m]=Number(h)}return new Uint8Array(f.buffer)}case"int8":case"uint8":case"uint32":{if(r==="uint32"&&c.some(m=>m>2147483647))throw new Error("Can not convert uint32 data to int32 - value out of range.");let f=Int32Array.from(c,Number);return new Uint8Array(f.buffer)}default:throw new Error(`Unsupported data conversion from ${r} to 'int32'`)}},Mr=(t,r)=>{if(r==="int32")return t;if(t.byteLength%4!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 4 (int32).");let i=t.byteLength/4,u=new Int32Array(t.buffer,t.byteOffset,i);switch(r){case"int64":{let s=BigInt64Array.from(u,BigInt);return new Uint8Array(s.buffer)}case"uint64":{if(u.some(c=>c<0))throw new Error("Can not convert int32 data to uin64 - negative value found.");let s=BigUint64Array.from(u,BigInt);return new Uint8Array(s.buffer)}case"int8":{if(u.some(c=>c<-128||c>127))throw new Error("Can not convert int32 data to int8 - value out of range.");let s=Int8Array.from(u,Number);return new Uint8Array(s.buffer)}case"uint8":{if(u.some(s=>s<0||s>255))throw new Error("Can not convert int32 data to uint8 - value out of range.");return Uint8Array.from(u,Number)}case"uint32":{if(u.some(c=>c<0))throw new Error("Can not convert int32 data to uint32 - negative value found.");let s=Uint32Array.from(u,Number);return new Uint8Array(s.buffer)}default:throw new Error(`Unsupported data conversion from 'int32' to ${r}`)}},Sa=1,Ir=()=>Sa++,Ma=new Map([["int8","int32"],["uint8","int32"],["uint32","int32"],["int64","int32"]]),Ur=(t,r)=>{let i=Or.get(t);if(!i)throw new Error(`WebNN backend does not support data type: ${t}`);return r.length>0?Math.ceil(r.reduce((u,s)=>u*s)*i/8):0},Br=class{constructor(t){this.isDataConverted=!1;let{sessionId:r,context:i,tensor:u,dataType:s,shape:c,fallbackDataType:f}=t;this.sessionId=r,this.mlContext=i,this.mlTensor=u,this.dataType=s,this.tensorShape=c,this.fallbackDataType=f}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return Ur(this.dataType,this.tensorShape)}destroy(){pe("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(t){this.mlContext.writeTensor(this.mlTensor,t)}async read(t){if(this.fallbackDataType){let r=await this.mlContext.readTensor(this.mlTensor),i=Mr(new Uint8Array(r),this.dataType);if(t){(t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).set(i);return}else return new Uint8Array(i).buffer}else return t?this.mlContext.readTensor(this.mlTensor,t):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(t,r,i){return this.mlContext===t&&this.dataType===r&&this.tensorShape.length===i.length&&this.tensorShape.every((u,s)=>u===i[s])}setIsDataConverted(t){this.isDataConverted=t}},Lr=class{constructor(t,r){this.tensorManager=t,this.wrapper=r}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(t,r,i,u){let s=this.tensorManager.getMLContext(t),c=this.tensorManager.getMLOpSupportLimits(t),f;if(!c?.input.dataTypes.includes(r)){if(f=Ma.get(r),!f||c?.input.dataTypes.includes(f))throw new Error(`WebNN backend does not support data type: ${r}`);pe("verbose",()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${r} to ${f}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(s,r,i))return this.wrapper.tensor;if(u){if(this.wrapper.byteLength!==Ur(r,i))throw new Error("Unable to copy data to tensor with different size.");this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let m=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(t,r,i,m,!0,!0,f),u&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(t){let r=t;if(this.wrapper){if(this.wrapper.fallbackType)if(this.wrapper.fallbackType==="int32")r=Sr(t,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw new Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(t.byteLength===this.wrapper.byteLength){this.wrapper.write(r);return}else pe("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor()}this.activeUpload?this.activeUpload.set(r):this.activeUpload=new Uint8Array(r)}async download(t){if(this.activeUpload){let r=this.wrapper?.isDataConverted?Mr(this.activeUpload,this.wrapper?.type):this.activeUpload;if(t){t instanceof ArrayBuffer?new Uint8Array(t).set(r):new Uint8Array(t.buffer,t.byteOffset,t.byteLength).set(r);return}else return r.buffer}if(!this.wrapper)throw new Error("Tensor has not been created.");return t?this.wrapper.read(t):this.wrapper.read()}},Ia=class{constructor(t){this.backend=t,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(t){let r=this.backend.getMLContext(t);if(!r)throw new Error("MLContext not found for session.");return r}getMLOpSupportLimits(t){return this.backend.getMLOpSupportLimits(t)}reserveTensorId(){let t=Ir();return this.tensorTrackersById.set(t,new Lr(this)),t}releaseTensorId(t){let r=this.tensorTrackersById.get(t);r&&(this.tensorTrackersById.delete(t),r.tensorWrapper&&this.releaseTensor(r.tensorWrapper))}async ensureTensor(t,r,i,u,s){pe("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${r}, dataType: ${i}, shape: ${u}, copyOld: ${s}}`);let c=this.tensorTrackersById.get(r);if(!c)throw new Error("Tensor not found.");return c.ensureTensor(t,i,u,s)}upload(t,r){let i=this.tensorTrackersById.get(t);if(!i)throw new Error("Tensor not found.");i.upload(r)}async download(t,r){pe("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${t}, dstBuffer: ${r?.byteLength}}`);let i=this.tensorTrackersById.get(t);if(!i)throw new Error("Tensor not found.");return i.download(r)}releaseTensorsForSession(t){for(let r of this.freeTensors)r.sessionId===t&&r.destroy();this.freeTensors=this.freeTensors.filter(r=>r.sessionId!==t)}registerTensor(t,r,i,u){let s=this.getMLContext(t),c=Ir(),f=new Br({sessionId:t,context:s,tensor:r,dataType:i,shape:u});return this.tensorTrackersById.set(c,new Lr(this,f)),this.externalTensors.add(f),c}async getCachedTensor(t,r,i,u,s,c,f){let m=this.getMLContext(t);for(let[y,g]of this.freeTensors.entries())if(g.canReuseTensor(m,r,i)){pe("verbose",()=>`[WebNN] Reusing tensor {dataType: ${r}, ${f?`fallbackDataType: ${f},`:""} shape: ${i}`);let v=this.freeTensors.splice(y,1)[0];return v.sessionId=t,v}pe("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${r}, ${f?`fallbackDataType: ${f},`:""} shape: ${i}}`);let h=await m.createTensor({dataType:f??r,shape:i,dimensions:i,usage:u,writable:s,readable:c});return new Br({sessionId:t,context:m,tensor:h,dataType:r,shape:i,fallbackDataType:f})}releaseTensor(t){this.externalTensors.has(t)&&this.externalTensors.delete(t),this.freeTensors.push(t)}},Ua=(...t)=>new Ia(...t)}),Ba={};mt(Ba,{WebNNBackend:()=>Ra});var vt,La,Ra,$s=q(()=>{st(),Ze(),Ls(),Rs(),Oa(),vt=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),La=(t,r)=>{if(t===r)return!0;if(t===void 0||r===void 0)return!1;let i=Object.keys(t).sort(),u=Object.keys(r).sort();return i.length===u.length&&i.every((s,c)=>s===u[c]&&t[s]===r[s])},Ra=class{constructor(t){this.tensorManager=Ua(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.sessionGraphOutputs=new Map,this.temporaryGraphInputs=[],this.temporaryGraphOutputs=[],this.temporarySessionTensorIds=new Map,this.mlOpSupportLimitsBySessionId=new Map,Aa(t.logLevel,!!t.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw new Error("No active session");return this.activeSessionId}onRunStart(t){pe("verbose",()=>`[WebNN] onRunStart {sessionId: ${t}}`),this.activeSessionId=t}onRunEnd(t){pe("verbose",()=>`[WebNN] onRunEnd {sessionId: ${t}}`);let r=this.temporarySessionTensorIds.get(t);if(r){for(let i of r)pe("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${i}}`),this.tensorManager.releaseTensorId(i);this.temporarySessionTensorIds.delete(t),this.activeSessionId=void 0}}async createMLContext(t){if(t instanceof GPUDevice){let i=this.mlContextCache.findIndex(u=>u.gpuDevice===t);if(i!==-1)return this.mlContextCache[i].mlContext;{let u=await navigator.ml.createContext(t);return this.mlContextCache.push({gpuDevice:t,mlContext:u}),u}}else if(t===void 0){let i=this.mlContextCache.findIndex(u=>u.options===void 0&&u.gpuDevice===void 0);if(i!==-1)return this.mlContextCache[i].mlContext;{let u=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:u}),u}}let r=this.mlContextCache.findIndex(i=>La(i.options,t));if(r!==-1)return this.mlContextCache[r].mlContext;{let i=await navigator.ml.createContext(t);return this.mlContextCache.push({options:t,mlContext:i}),i}}registerMLContext(t,r){this.mlContextBySessionId.set(t,r);let i=this.sessionIdsByMLContext.get(r);i||(i=new Set,this.sessionIdsByMLContext.set(r,i)),i.add(t),this.mlOpSupportLimitsBySessionId.has(t)||this.mlOpSupportLimitsBySessionId.set(t,r.opSupportLimits()),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(t,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(t,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(t){this.sessionGraphInputs.delete(t),this.sessionGraphOutputs.delete(t);let r=this.mlContextBySessionId.get(t);if(!r)return;this.tensorManager.releaseTensorsForSession(t),this.mlContextBySessionId.delete(t),this.mlOpSupportLimitsBySessionId.delete(t);let i=this.sessionIdsByMLContext.get(r);if(i.delete(t),i.size===0){this.sessionIdsByMLContext.delete(r);let u=this.mlContextCache.findIndex(s=>s.mlContext===r);u!==-1&&this.mlContextCache.splice(u,1)}}getMLContext(t){return this.mlContextBySessionId.get(t)}getMLOpSupportLimits(t){return this.mlOpSupportLimitsBySessionId.get(t)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(t){pe("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${t}}`),this.tensorManager.releaseTensorId(t)}async ensureTensor(t,r,i,u,s){let c=vt.get(i);if(!c)throw new Error(`Unsupported ONNX data type: ${i}`);return this.tensorManager.ensureTensor(t??this.currentSessionId,r,c,u,s)}async createTemporaryTensor(t,r,i){pe("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${r}, shape: ${i}}`);let u=vt.get(r);if(!u)throw new Error(`Unsupported ONNX data type: ${r}`);let s=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(t,s,u,i,!1);let c=this.temporarySessionTensorIds.get(t);return c?c.push(s):this.temporarySessionTensorIds.set(t,[s]),s}uploadTensor(t,r){if(!X().shouldTransferToMLTensor)throw new Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");pe("verbose",()=>`[WebNN] uploadTensor {tensorId: ${t}, data: ${r.byteLength}}`),this.tensorManager.upload(t,r)}async downloadTensor(t,r){return this.tensorManager.download(t,r)}createMLTensorDownloader(t,r){return async()=>{let i=await this.tensorManager.download(t);return ba(i,r)}}registerMLTensor(t,r,i,u){let s=vt.get(i);if(!s)throw new Error(`Unsupported ONNX data type: ${i}`);let c=this.tensorManager.registerTensor(t,r,s,u);return pe("verbose",()=>`[WebNN] registerMLTensor {tensor: ${r}, dataType: ${s}, dimensions: ${u}} -> {tensorId: ${c}}`),c}registerMLConstant(t,r,i,u,s,c,f=!1){if(!c)throw new Error("External mounted files are not available.");let m=t;t.startsWith("./")&&(m=t.substring(2));let h=c.get(m);if(!h)throw new Error(`File with name ${m} not found in preloaded files.`);if(r+i>h.byteLength)throw new Error("Out of bounds: data offset and length exceed the external file data size.");let y=h.slice(r,r+i).buffer,g;switch(s.dataType){case"float32":g=new Float32Array(y);break;case"float16":g=typeof Float16Array<"u"?new Float16Array(y):new Uint16Array(y);break;case"int32":g=new Int32Array(y);break;case"uint32":g=new Uint32Array(y);break;case"int64":if(f){let v=Sr(new Uint8Array(y),"int64");g=new Int32Array(v.buffer),s.dataType="int32"}else g=new BigInt64Array(y);break;case"uint64":g=new BigUint64Array(y);break;case"int8":g=new Int8Array(y);break;case"int4":case"uint4":case"uint8":g=new Uint8Array(y);break;default:throw new Error(`Unsupported data type: ${s.dataType} in creating WebNN Constant from external data.`)}return pe("verbose",()=>`[WebNN] registerMLConstant {dataType: ${s.dataType}, shape: ${s.shape}}} ${f?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),u.constant(s,g)}registerGraphInput(t){this.temporaryGraphInputs.push(t)}registerGraphOutput(t){this.temporaryGraphOutputs.push(t)}isGraphInput(t,r){let i=this.sessionGraphInputs.get(t);return i?i.includes(r):!1}isGraphOutput(t,r){let i=this.sessionGraphOutputs.get(t);return i?i.includes(r):!1}isGraphInputOutputTypeSupported(t,r,i=!0){let u=vt.get(Ke(r)),s=this.mlOpSupportLimitsBySessionId.get(t);return typeof u>"u"?!1:i?!!s?.input.dataTypes.includes(u):!!s?.output.dataTypes.includes(u)}flush(){}}}),$a,Rr,$r,De,Pa,Pr,Dt,_r,kr,Nr,Dr,Gr,Wr,_a=q(()=>{Xe(),Us(),Bs(),st(),Ze(),Tr(),ya(),$a=(t,r)=>{X()._OrtInit(t,r)!==0&&j("Can't initialize onnxruntime.")},Rr=async t=>{$a(t.wasm.numThreads,Nt(t.logLevel))},$r=async(t,r)=>{X().asyncInit?.();let i=t.webgpu.adapter;if(r==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");if(i){if(typeof i.limits!="object"||typeof i.features!="object"||typeof i.requestDevice!="function")throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let u=t.webgpu.powerPreference;if(u!==void 0&&u!=="low-power"&&u!=="high-performance")throw new Error(`Invalid powerPreference setting: "${u}"`);let s=t.webgpu.forceFallbackAdapter;if(s!==void 0&&typeof s!="boolean")throw new Error(`Invalid forceFallbackAdapter setting: "${s}"`);if(i=await navigator.gpu.requestAdapter({powerPreference:u,forceFallbackAdapter:s}),!i)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}}if(r==="webnn"&&(typeof navigator>"u"||!navigator.ml))throw new Error("WebNN is not supported in current environment");if(r==="webgpu"&&X().webgpuInit(u=>{t.webgpu.device=u}),r==="webnn"){let u=new($s(),Bt(Ba)).WebNNBackend(t);X().webnnInit([u,()=>u.reserveTensorId(),s=>u.releaseTensorId(s),async(s,c,f,m,h)=>u.ensureTensor(s,c,f,m,h),(s,c)=>{u.uploadTensor(s,c)},async(s,c)=>u.downloadTensor(s,c),(s,c)=>u.registerMLContext(s,c),!!t.trace])}},De=new Map,Pa=t=>{let r=X(),i=r.stackSave();try{let u=r.PTR_SIZE,s=r.stackAlloc(2*u);r._OrtGetInputOutputCount(t,s,s+u)!==0&&j("Can't get session input/output count.");let c=u===4?"i32":"i64";return[Number(r.getValue(s,c)),Number(r.getValue(s+u,c))]}finally{r.stackRestore(i)}},Pr=(t,r)=>{let i=X(),u=i.stackSave(),s=0;try{let c=i.PTR_SIZE,f=i.stackAlloc(2*c);i._OrtGetInputOutputMetadata(t,r,f,f+c)!==0&&j("Can't get session input/output metadata.");let m=Number(i.getValue(f,"*"));s=Number(i.getValue(f+c,"*"));let h=i.HEAP32[s/4];if(h===0)return[m,0];let y=i.HEAPU32[s/4+1],g=[];for(let v=0;v<y;v++){let T=Number(i.getValue(s+8+v*c,"*"));g.push(T!==0?i.UTF8ToString(T):Number(i.getValue(s+8+(v+y)*c,"*")))}return[m,h,g]}finally{i.stackRestore(u),s!==0&&i._OrtFree(s)}},Dt=t=>{let r=X(),i=r._malloc(t.byteLength);if(i===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${t.byteLength}.`);return r.HEAPU8.set(t,i),[i,t.byteLength]},_r=async(t,r)=>{let i,u,s=X();Array.isArray(t)?[i,u]=t:t.buffer===s.HEAPU8.buffer?[i,u]=[t.byteOffset,t.byteLength]:[i,u]=Dt(t);let c=0,f=0,m=0,h=[],y=[],g=[];try{if([f,h]=await ga(r),r?.externalData&&s.mountExternalData){let U=[];for(let D of r.externalData){let Z=typeof D=="string"?D:D.path;U.push(Cr(typeof D=="string"?D:D.data).then(d=>{s.mountExternalData(Z,d)}))}await Promise.all(U)}for(let U of r?.executionProviders??[])if((typeof U=="string"?U:U.name)==="webnn"){if(s.shouldTransferToMLTensor=!1,typeof U!="string"){let D=U,Z=D?.context,d=D?.gpuDevice,W=D?.deviceType,R=D?.powerPreference;Z?s.currentContext=Z:d?s.currentContext=await s.webnnCreateMLContext(d):s.currentContext=await s.webnnCreateMLContext({deviceType:W,powerPreference:R})}else s.currentContext=await s.webnnCreateMLContext();break}c=await s._OrtCreateSession(i,u,f),s.webgpuOnCreateSession?.(c),c===0&&j("Can't create a session."),s.jsepOnCreateSession?.(),s.currentContext&&(s.webnnRegisterMLContext(c,s.currentContext),s.currentContext=void 0,s.shouldTransferToMLTensor=!0);let[v,T]=Pa(c),x=!!r?.enableGraphCapture,O=[],C=[],N=[],L=[],M=[];for(let U=0;U<v;U++){let[D,Z,d]=Pr(c,U);D===0&&j("Can't get an input name."),y.push(D);let W=s.UTF8ToString(D);O.push(W),N.push(Z===0?{name:W,isTensor:!1}:{name:W,isTensor:!0,type:kt(Z),shape:d})}for(let U=0;U<T;U++){let[D,Z,d]=Pr(c,U+v);D===0&&j("Can't get an output name."),g.push(D);let W=s.UTF8ToString(D);C.push(W),L.push(Z===0?{name:W,isTensor:!1}:{name:W,isTensor:!0,type:kt(Z),shape:d});{if(x&&r?.preferredOutputLocation===void 0){M.push("gpu-buffer");continue}let R=typeof r?.preferredOutputLocation=="string"?r.preferredOutputLocation:r?.preferredOutputLocation?.[W]??"cpu",H=s.webnnIsGraphOutput;if(R==="cpu"&&H&&H(c,W)){M.push("ml-tensor-cpu-output");continue}if(R!=="cpu"&&R!=="cpu-pinned"&&R!=="gpu-buffer"&&R!=="ml-tensor")throw new Error(`Not supported preferred output location: ${R}.`);if(x&&R!=="gpu-buffer")throw new Error(`Not supported preferred output location: ${R}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);M.push(R)}}let G=null;return M.some(U=>U==="gpu-buffer"||U==="ml-tensor"||U==="ml-tensor-cpu-output")&&(m=s._OrtCreateBinding(c),m===0&&j("Can't create IO binding."),G={handle:m,outputPreferredLocations:M,outputPreferredLocationsEncoded:M.map(U=>U==="ml-tensor-cpu-output"?"ml-tensor":U).map(U=>Ar(U))}),De.set(c,[c,y,g,G,x,!1]),[c,O,C,N,L]}catch(v){throw y.forEach(T=>s._OrtFree(T)),g.forEach(T=>s._OrtFree(T)),m!==0&&s._OrtReleaseBinding(m)!==0&&j("Can't release IO binding."),c!==0&&s._OrtReleaseSession(c)!==0&&j("Can't release session."),v}finally{s._free(i),f!==0&&s._OrtReleaseSessionOptions(f)!==0&&j("Can't release session options."),h.forEach(v=>s._free(v)),s.unmountExternalData?.()}},kr=t=>{let r=X(),i=De.get(t);if(!i)throw new Error(`cannot release session. invalid session id: ${t}`);let[u,s,c,f,m]=i;f&&(m&&r._OrtClearBoundOutputs(f.handle)!==0&&j("Can't clear bound outputs."),r._OrtReleaseBinding(f.handle)!==0&&j("Can't release IO binding.")),r.jsepOnReleaseSession?.(t),r.webnnOnReleaseSession?.(t),r.webgpuOnReleaseSession?.(t),s.forEach(h=>r._OrtFree(h)),c.forEach(h=>r._OrtFree(h)),r._OrtReleaseSession(u)!==0&&j("Can't release session."),De.delete(t)},Nr=async(t,r,i,u,s,c,f=!1)=>{if(!t){r.push(0);return}let m=X(),h=m.PTR_SIZE,y=t[0],g=t[1],v=t[3],T=v,x,O;if(y==="string"&&(v==="gpu-buffer"||v==="ml-tensor"))throw new Error("String tensor is not supported on GPU.");if(f&&v!=="gpu-buffer")throw new Error(`External buffer must be provided for input/output index ${c} when enableGraphCapture is true.`);if(v==="gpu-buffer"){let L=t[2].gpuBuffer;O=it(Ke(y),g);{let M=m.webgpuRegisterBuffer;if(!M)throw new Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');x=M(L,u)}}else if(v==="ml-tensor"){let L=t[2].mlTensor;O=it(Ke(y),g);let M=m.webnnRegisterMLTensor;if(!M)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');x=M(u,L,Ke(y),g)}else{let L=t[2];if(Array.isArray(L)){O=h*L.length,x=m._malloc(O),i.push(x);for(let M=0;M<L.length;M++){if(typeof L[M]!="string")throw new TypeError(`tensor data at index ${M} is not a string`);m.setValue(x+M*h,be(L[M],i),"*")}}else{let M=m.webnnIsGraphInput,G=m.webnnIsGraphOutput;if(y!=="string"&&M&&G){let U=m.UTF8ToString(s);if(M(u,U)||G(u,U)){let D=Ke(y);O=it(D,g),T="ml-tensor";let Z=m.webnnCreateTemporaryTensor,d=m.webnnUploadTensor;if(!Z||!d)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');let W=await Z(u,D,g);d(W,new Uint8Array(L.buffer,L.byteOffset,L.byteLength)),x=W}else O=L.byteLength,x=m._malloc(O),i.push(x),m.HEAPU8.set(new Uint8Array(L.buffer,L.byteOffset,O),x)}else O=L.byteLength,x=m._malloc(O),i.push(x),m.HEAPU8.set(new Uint8Array(L.buffer,L.byteOffset,O),x)}}let C=m.stackSave(),N=m.stackAlloc(4*g.length);try{g.forEach((M,G)=>m.setValue(N+G*h,M,h===4?"i32":"i64"));let L=m._OrtCreateTensor(Ke(y),x,O,N,g.length,Ar(T));L===0&&j(`Can't create tensor for input/output. session=${u}, index=${c}.`),r.push(L)}finally{m.stackRestore(C)}},Dr=async(t,r,i,u,s,c)=>{let f=X(),m=f.PTR_SIZE,h=De.get(t);if(!h)throw new Error(`cannot run inference. invalid session id: ${t}`);let y=h[0],g=h[1],v=h[2],T=h[3],x=h[4],O=h[5],C=r.length,N=u.length,L=0,M=[],G=[],U=[],D=[],Z=[],d=f.stackSave(),W=f.stackAlloc(C*m),R=f.stackAlloc(C*m),H=f.stackAlloc(N*m),ve=f.stackAlloc(N*m);try{[L,M]=pa(c),He("wasm prepareInputOutputTensor");for(let P=0;P<C;P++)await Nr(i[P],G,D,t,g[r[P]],r[P],x);for(let P=0;P<N;P++)await Nr(s[P],U,D,t,v[u[P]],C+u[P],x);Ye("wasm prepareInputOutputTensor");for(let P=0;P<C;P++)f.setValue(W+P*m,G[P],"*"),f.setValue(R+P*m,g[r[P]],"*");for(let P=0;P<N;P++)f.setValue(H+P*m,U[P],"*"),f.setValue(ve+P*m,v[u[P]],"*");if(T&&!O){let{handle:P,outputPreferredLocations:ne,outputPreferredLocationsEncoded:le}=T;if(g.length!==C)throw new Error(`input count from feeds (${C}) is expected to be always equal to model's input count (${g.length}).`);He("wasm bindInputsOutputs");for(let Y=0;Y<C;Y++){let de=r[Y];await f._OrtBindInput(P,g[de],G[Y])!==0&&j(`Can't bind input[${Y}] for session=${t}.`)}for(let Y=0;Y<N;Y++){let de=u[Y];s[Y]?.[3]?(Z.push(U[Y]),f._OrtBindOutput(P,v[de],U[Y],0)!==0&&j(`Can't bind pre-allocated output[${Y}] for session=${t}.`)):f._OrtBindOutput(P,v[de],0,le[de])!==0&&j(`Can't bind output[${Y}] to ${ne[Y]} for session=${t}.`)}Ye("wasm bindInputsOutputs"),De.set(t,[y,g,v,T,x,!0])}f.jsepOnRunStart?.(y),f.webnnOnRunStart?.(y);let K;T?K=await f._OrtRunWithBinding(y,T.handle,N,H,L):K=await f._OrtRun(y,R,W,C,ve,N,H,L),K!==0&&j("failed to call OrtRun().");let S=[],A=[];He("wasm ProcessOutputTensor");for(let P=0;P<N;P++){let ne=Number(f.getValue(H+P*m,"*"));if(ne===U[P]||Z.includes(U[P])){S.push(s[P]),ne!==U[P]&&f._OrtReleaseTensor(ne)!==0&&j("Can't release tensor.");continue}let le=f.stackSave(),Y=f.stackAlloc(4*m),de=!1,ae,ie=0;try{f._OrtGetTensorData(ne,Y,Y+m,Y+2*m,Y+3*m)!==0&&j(`Can't access output tensor data on index ${P}.`);let We=m===4?"i32":"i64",me=Number(f.getValue(Y,We));ie=f.getValue(Y+m,"*");let At=f.getValue(Y+m*2,"*"),zt=Number(f.getValue(Y+m*3,We)),xe=[];for(let oe=0;oe<zt;oe++)xe.push(Number(f.getValue(At+oe*m,We)));f._OrtFree(At)!==0&&j("Can't free memory for tensor dims.");let Ce=xe.reduce((oe,ee)=>oe*ee,1);ae=kt(me);let Fe=T?.outputPreferredLocations[u[P]];if(ae==="string"){if(Fe==="gpu-buffer"||Fe==="ml-tensor")throw new Error("String tensor is not supported on GPU.");let oe=[];for(let ee=0;ee<Ce;ee++){let Ee=f.getValue(ie+ee*m,"*"),Q=f.getValue(ie+(ee+1)*m,"*"),J=ee===Ce-1?void 0:Q-Ee;oe.push(f.UTF8ToString(Ee,J))}S.push([ae,xe,oe,"cpu"])}else if(Fe==="gpu-buffer"&&Ce>0){let oe=f.webgpuGetBuffer;if(!oe)throw new Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let ee=oe(ie),Ee=it(me,Ce);if(Ee===void 0||!xr(ae))throw new Error(`Unsupported data type: ${ae}`);de=!0;{f.webgpuRegisterBuffer(ee,t,ie);let Q=f.webgpuCreateDownloader(ee,Ee,t);S.push([ae,xe,{gpuBuffer:ee,download:async()=>{let J=await Q();return new(bt(ae))(J)},dispose:()=>{f._OrtReleaseTensor(ne)!==0&&j("Can't release tensor.")}},"gpu-buffer"])}}else if(Fe==="ml-tensor"&&Ce>0){let oe=f.webnnEnsureTensor,ee=f.webnnIsGraphInputOutputTypeSupported;if(!oe||!ee)throw new Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if(it(me,Ce)===void 0||!Er(ae))throw new Error(`Unsupported data type: ${ae}`);if(!ee(t,ae,!1))throw new Error(`preferredLocation "ml-tensor" for ${ae} output is not supported by current WebNN Context.`);let Ee=await oe(t,ie,me,xe,!1);de=!0,S.push([ae,xe,{mlTensor:Ee,download:f.webnnCreateMLTensorDownloader(ie,ae),dispose:()=>{f.webnnReleaseTensorId(ie),f._OrtReleaseTensor(ne)}},"ml-tensor"])}else if(Fe==="ml-tensor-cpu-output"&&Ce>0){let oe=f.webnnCreateMLTensorDownloader(ie,ae)(),ee=S.length;de=!0,A.push((async()=>{let Ee=[ee,await oe];return f.webnnReleaseTensorId(ie),f._OrtReleaseTensor(ne),Ee})()),S.push([ae,xe,[],"cpu"])}else{let oe=bt(ae),ee=new oe(Ce);new Uint8Array(ee.buffer,ee.byteOffset,ee.byteLength).set(f.HEAPU8.subarray(ie,ie+ee.byteLength)),S.push([ae,xe,ee,"cpu"])}}finally{f.stackRestore(le),ae==="string"&&ie&&f._free(ie),de||f._OrtReleaseTensor(ne)}}T&&!x&&(f._OrtClearBoundOutputs(T.handle)!==0&&j("Can't clear bound outputs."),De.set(t,[y,g,v,T,x,!1]));for(let[P,ne]of await Promise.all(A))S[P][2]=ne;return Ye("wasm ProcessOutputTensor"),S}finally{f.webnnOnRunEnd?.(y),f.stackRestore(d),i.forEach(K=>{K&&K[3]==="gpu-buffer"&&f.webgpuUnregisterBuffer(K[2].gpuBuffer)}),s.forEach(K=>{K&&K[3]==="gpu-buffer"&&f.webgpuUnregisterBuffer(K[2].gpuBuffer)}),G.forEach(K=>f._OrtReleaseTensor(K)),U.forEach(K=>f._OrtReleaseTensor(K)),D.forEach(K=>f._free(K)),L!==0&&f._OrtReleaseRunOptions(L),M.forEach(K=>f._free(K))}},Gr=t=>{let r=X(),i=De.get(t);if(!i)throw new Error("invalid session id");let u=i[0],s=r._OrtEndProfiling(u);s===0&&j("Can't get an profile file name."),r._OrtFree(s)},Wr=t=>{let r=[];for(let i of t){let u=i[2];!Array.isArray(u)&&"buffer"in u&&r.push(u.buffer)}return r}}),Ge,Te,ut,Tt,xt,Gt,Fr,Wt,Qe,Je,ka,Na,Da,Ga,Wa,Fa,Va,qa,za=q(()=>{Xe(),_a(),Ze(),gr(),Ge=()=>!!re.wasm.proxy&&typeof document<"u",ut=!1,Tt=!1,xt=!1,Wt=new Map,Qe=(t,r)=>{let i=Wt.get(t);i?i.push(r):Wt.set(t,[r])},Je=()=>{if(ut||!Tt||xt||!Te)throw new Error("worker not ready")},ka=t=>{switch(t.data.type){case"init-wasm":ut=!1,t.data.err?(xt=!0,Fr[1](t.data.err)):(Tt=!0,Fr[0]()),Gt&&(URL.revokeObjectURL(Gt),Gt=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let r=Wt.get(t.data.type);t.data.err?r.shift()[1](t.data.err):r.shift()[0](t.data.out);break}}},Na=async()=>{if(!Tt){if(ut)throw new Error("multiple calls to 'initWasm()' detected.");if(xt)throw new Error("previous call to 'initWasm()' failed.");if(ut=!0,Ge())return new Promise((t,r)=>{Te?.terminate(),sa().then(([i,u])=>{try{Te=u,Te.onerror=c=>r(c),Te.onmessage=ka,Fr=[t,r];let s={type:"init-wasm",in:re};!s.in.wasm.wasmPaths&&(i||dr)&&(s.in.wasm.wasmPaths={wasm:new URL("/assets/ort-wasm-simd-threaded.asyncify-CvvOzbbq.wasm",self.location.href).href}),Te.postMessage(s),Gt=i}catch(s){r(s)}},r)});try{await vr(re.wasm),await Rr(re),Tt=!0}catch(t){throw xt=!0,t}finally{ut=!1}}},Da=async t=>{if(Ge())return Je(),new Promise((r,i)=>{Qe("init-ep",[r,i]);let u={type:"init-ep",in:{epName:t,env:re}};Te.postMessage(u)});await $r(re,t)},Ga=async t=>Ge()?(Je(),new Promise((r,i)=>{Qe("copy-from",[r,i]);let u={type:"copy-from",in:{buffer:t}};Te.postMessage(u,[t.buffer])})):Dt(t),Wa=async(t,r)=>{if(Ge()){if(r?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return Je(),new Promise((i,u)=>{Qe("create",[i,u]);let s={type:"create",in:{model:t,options:{...r}}},c=[];t instanceof Uint8Array&&c.push(t.buffer),Te.postMessage(s,c)})}else return _r(t,r)},Fa=async t=>{if(Ge())return Je(),new Promise((r,i)=>{Qe("release",[r,i]);let u={type:"release",in:t};Te.postMessage(u)});kr(t)},Va=async(t,r,i,u,s,c)=>{if(Ge()){if(i.some(f=>f[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(s.some(f=>f))throw new Error("pre-allocated output tensor is not supported for proxy.");return Je(),new Promise((f,m)=>{Qe("run",[f,m]);let h=i,y={type:"run",in:{sessionId:t,inputIndices:r,inputs:h,outputIndices:u,options:c}};Te.postMessage(y,Wr(h))})}else return Dr(t,r,i,u,s,c)},qa=async t=>{if(Ge())return Je(),new Promise((r,i)=>{Qe("end-profiling",[r,i]);let u={type:"end-profiling",in:t};Te.postMessage(u)});Gr(t)}}),Vr,ja,Ha,Ps=q(()=>{Xe(),za(),st(),lr(),ya(),Vr=(t,r)=>{switch(t.location){case"cpu":return[t.type,t.dims,t.data,"cpu"];case"gpu-buffer":return[t.type,t.dims,{gpuBuffer:t.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[t.type,t.dims,{mlTensor:t.mlTensor},"ml-tensor"];default:throw new Error(`invalid data location: ${t.location} for ${r()}`)}},ja=t=>{switch(t[3]){case"cpu":return new he(t[0],t[2],t[1]);case"gpu-buffer":{let r=t[0];if(!xr(r))throw new Error(`not supported data type: ${r} for deserializing GPU tensor`);let{gpuBuffer:i,download:u,dispose:s}=t[2];return he.fromGpuBuffer(i,{dataType:r,dims:t[1],download:u,dispose:s})}case"ml-tensor":{let r=t[0];if(!Er(r))throw new Error(`not supported data type: ${r} for deserializing MLTensor tensor`);let{mlTensor:i,download:u,dispose:s}=t[2];return he.fromMLTensor(i,{dataType:r,dims:t[1],download:u,dispose:s})}default:throw new Error(`invalid data location: ${t[3]}`)}},Ha=class{async fetchModelAndCopyToWasmMemory(t){return Ga(await Cr(t))}async loadModel(t,r){nt();let i;typeof t=="string"?i=await this.fetchModelAndCopyToWasmMemory(t):i=t,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await Wa(i,r),at()}async dispose(){return Fa(this.sessionId)}async run(t,r,i){nt();let u=[],s=[];Object.entries(t).forEach(v=>{let T=v[0],x=v[1],O=this.inputNames.indexOf(T);if(O===-1)throw new Error(`invalid input '${T}'`);u.push(x),s.push(O)});let c=[],f=[];Object.entries(r).forEach(v=>{let T=v[0],x=v[1],O=this.outputNames.indexOf(T);if(O===-1)throw new Error(`invalid output '${T}'`);c.push(x),f.push(O)});let m=u.map((v,T)=>Vr(v,()=>`input "${this.inputNames[s[T]]}"`)),h=c.map((v,T)=>v?Vr(v,()=>`output "${this.outputNames[f[T]]}"`):null),y=await Va(this.sessionId,s,m,f,h,i),g={};for(let v=0;v<y.length;v++)g[this.outputNames[f[v]]]=c[v]??ja(y[v]);return at(),g}startProfiling(){}endProfiling(){qa(this.sessionId)}}}),Ya={};mt(Ya,{OnnxruntimeWebAssemblyBackend:()=>zr,initializeFlags:()=>qr,wasmBackend:()=>Xa});var qr,zr,Xa,_s=q(()=>{Xe(),za(),Ps(),qr=()=>{(typeof re.wasm.initTimeout!="number"||re.wasm.initTimeout<0)&&(re.wasm.initTimeout=0);let t=re.wasm.simd;if(typeof t!="boolean"&&t!==void 0&&t!=="fixed"&&t!=="relaxed"&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${t}". Reset it to \`false\` and ignore SIMD feature checking.`),re.wasm.simd=!1),typeof re.wasm.proxy!="boolean"&&(re.wasm.proxy=!1),typeof re.wasm.trace!="boolean"&&(re.wasm.trace=!1),typeof re.wasm.numThreads!="number"||!Number.isInteger(re.wasm.numThreads)||re.wasm.numThreads<=0)if(typeof self<"u"&&!self.crossOriginIsolated)re.wasm.numThreads=1;else{let r=typeof navigator>"u"?ps("node:os").cpus().length:navigator.hardwareConcurrency;re.wasm.numThreads=Math.min(4,Math.ceil((r||1)/2))}},zr=class{async init(t){qr(),await Na(),await Da(t)}async createInferenceSessionHandler(t,r){let i=new Ha;return await i.loadModel(t,r),i}},Xa=new zr});Xe(),Xe(),Xe();var ks="1.27.0";{let t=(_s(),Bt(Ya)).wasmBackend;rt("webgpu",t,5),rt("webnn",t,5),rt("cpu",t,10),rt("wasm",t,10)}Object.defineProperty(re.versions,"web",{value:ks,enumerable:!0});const Ns=1/Math.sqrt(1/(4*Math.PI)),Ds=1;function Gs(t){return t<=0?0:t>=1?1:t}function jr(t){const r=Gs(t);return r<=.0031308?12.92*r:1.055*r**(1/2.4)-.055}function Hr(t){return(t-.5)*Ns}function Yr(t,r=1e-8){return Math.log(Math.max(t,r))}function Ws(t,r=1e-6){const i=Math.min(1-r,Math.max(r,t));return Math.log(i/(1-i))}function Za(t,r){if(t.length===0)return 0;const i=Array.from(t);i.sort((s,c)=>s-c);const u=Math.min(i.length-1,Math.max(0,Math.round((i.length-1)*r)));return i[u]??0}function Fs(t){return["ply","format binary_little_endian 1.0",`element vertex ${t}`,"property float x","property float y","property float z","property float f_dc_0","property float f_dc_1","property float f_dc_2","property float opacity","property float scale_0","property float scale_1","property float scale_2","property float rot_0","property float rot_1","property float rot_2","property float rot_3","element extrinsic 16","property float extrinsic","element intrinsic 9","property float intrinsic","element image_size 2","property uint image_size","element frame 2","property int frame","element disparity 2","property float disparity","element color_space 1","property uchar color_space","element version 3","property uchar version","end_header",""].join(` | |
| `)}function Vs(t){const{count:r,meanVectors:i,singularValues:u,quaternions:s,colors:c,opacities:f,focalPx:m,imageWidth:h,imageHeight:y}=t;if(i.length!==r*3)throw new Error("meanVectors length does not match count * 3");if(u.length!==r*3)throw new Error("singularValues length does not match count * 3");if(s.length!==r*4)throw new Error("quaternions length does not match count * 4");if(c.length!==r*3)throw new Error("colors length does not match count * 3");if(f.length!==r)throw new Error("opacities length does not match count");const g=Fs(r),T=new TextEncoder().encode(g),O=r*56,Z=T.byteLength+O+64+36+8+8+8+1+3,d=new Uint8Array(Z);d.set(T,0);const W=new DataView(d.buffer);let R=T.byteLength;const H=new Float32Array(r);for(let S=0;S<r;S+=1){const A=S*3,P=S*4,ne=i[A],le=i[A+1],Y=i[A+2];H[S]=1/Math.max(Y,1e-6);const de=jr(c[A]),ae=jr(c[A+1]),ie=jr(c[A+2]),We=[ne,le,Y,Hr(de),Hr(ae),Hr(ie),Ws(f[S]),Yr(u[A]),Yr(u[A+1]),Yr(u[A+2]),s[P],s[P+1],s[P+2],s[P+3]];for(const me of We)W.setFloat32(R,me,!0),R+=4}const ve=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);for(const S of ve)W.setFloat32(R,S,!0),R+=4;const K=new Float32Array([m,0,h*.5,0,m,y*.5,0,0,1]);for(const S of K)W.setFloat32(R,S,!0),R+=4;if(W.setUint32(R,h,!0),R+=4,W.setUint32(R,y,!0),R+=4,W.setInt32(R,1,!0),R+=4,W.setInt32(R,r,!0),R+=4,W.setFloat32(R,Za(H,.1),!0),R+=4,W.setFloat32(R,Za(H,.9),!0),R+=4,W.setUint8(R,Ds),R+=1,W.setUint8(R,1),R+=1,W.setUint8(R,5),R+=1,W.setUint8(R,0),R+=1,R!==d.byteLength)throw new Error(`PLY writer size mismatch (${R} != ${d.byteLength})`);return d}const Ft=1536,Xr=self,Vt=new Map;re.wasm.numThreads=self.crossOriginIsolated?Math.max(1,Math.min(4,self.navigator.hardwareConcurrency||2)):1,re.wasm.simd=!0;const Ka=new URL("/ort/",self.location.origin).href;re.wasm.wasmPaths={mjs:new URL("ort-wasm-simd-threaded.asyncify.mjs",Ka).href,wasm:new URL("ort-wasm-simd-threaded.asyncify.wasm",Ka).href};function qt(t,r){if(r&&r.length>0){Xr.postMessage(t,r);return}Xr.postMessage(t)}function lt(t,r,i,u){qt({type:"status",stage:t,message:r,requestId:i,progress:u})}function qs(t,r){const i=r instanceof Error?r.message:String(r);qt({type:"reply",requestId:t,ok:!1,error:i})}function Qa(t,r){const i=Vt.get(t);if(i)return i;const u=zs(t,r);return Vt.set(t,u),u.catch(()=>{Vt.get(t)===u&&Vt.delete(t)}),u}async function zs(t,r){const i={graphOptimizationLevel:"all"};try{const f=new URL(t,self.location.href);if(f.pathname.endsWith(".onnx")){const m=new URL(f.href);m.pathname=`${f.pathname}.data`;const h=`${f.pathname.split("/").pop()??"model.onnx"}.data`;i.externalData=[{path:h,data:m.href}]}}catch{}let u=null;const s=performance.now(),c=()=>{const f=Math.floor((performance.now()-s)/1e3),m=String(Math.floor(f/60)).padStart(2,"0"),h=String(f%60).padStart(2,"0");lt("loading-model",`Loading model (${m}:${h}) — this can take several minutes`,r)};c(),u=setInterval(c,1e3);try{try{return await Rt.create(t,{...i,executionProviders:["webgpu","wasm"]})}catch(f){return await Rt.create(t,{...i,executionProviders:["wasm"]}).catch(m=>{throw new Error(`Could not create ONNX Runtime session with WebGPU or WASM. WebGPU error: ${String(f)}. WASM error: ${String(m)}`)})}}finally{u!==null&&clearInterval(u)}}function Ja(t,r){const i=t[r];if(!i){const u=Object.keys(t);throw new Error(`Missing output tensor '${r}'. Available outputs: ${u.join(", ")}`)}return i}function Zr(t,r){for(const u of r){const s=t[u];if(s)return{tensor:s,key:u}}const i=Object.keys(t);throw new Error(`Missing required output tensor. Tried: ${r.join(", ")}. Available: ${i.join(", ")}`)}function js(t,r){const i=r.data;if(!(i instanceof Float32Array))throw new Error(`Expected '${t}' tensor to be Float32Array, got ${Object.prototype.toString.call(i)}`);return i}function Kr(t,r){const i=new Float32Array(r.length*3);let u=0;for(const s of r){const c=s*3;i[u]=t[c],i[u+1]=t[c+1],i[u+2]=t[c+2],u+=3}return i}function Hs(t,r){const i=new Float32Array(r.length*4);let u=0;for(const s of r){const c=s*4;i[u]=t[c],i[u+1]=t[c+1],i[u+2]=t[c+2],i[u+3]=t[c+3],u+=4}return i}function Ys(t,r){const i=new Float32Array(r.length);for(let u=0;u<r.length;u+=1)i[u]=t[r[u]];return i}function Et(t,r,i){const u=t.dims,s=js(i,t);if(u.length<2)throw new Error(`Output '${i}' should have rank >= 2. Got dims=${u.join("x")}`);const c=r===1?s.length:Math.floor(s.length/r);if(c<=0)throw new Error(`Output '${i}' has no data.`);if(r>1&&c*r!==s.length)throw new Error(`Output '${i}' length (${s.length}) is not divisible by ${r}.`);return{data:s,count:c}}function Xs(t,r,i,u,s,c,f){const m=s.length,h=Number.isFinite(c)?c:0,y=Number.isFinite(f)&&f>0?Math.floor(f):0,g=[];for(let T=0;T<m;T+=1)s[T]>=h&&g.push(T);if(g.length===0)for(let T=0;T<m;T+=1)g.push(T);return y>0&&g.length>y&&(g.sort((T,x)=>s[x]-s[T]),g.length=y,g.sort((T,x)=>T-x)),{pruned:{count:g.length,meanVectors:Kr(t,g),singularValues:Kr(r,g),quaternions:Hs(i,g),colors:Kr(u,g),opacities:Ys(s,g)},totalCount:m}}function Zs(t,r,i,u){const s=Math.hypot(t,r,i,u)||1,c=t/s,f=r/s,m=i/s,h=u/s,y=c*c,g=f*f,v=m*m,T=h*h,x=c*f,O=c*m,C=c*h,N=f*m,L=f*h,M=m*h;return[y+g-v-T,2*(N-C),2*(L+O),2*(N+C),y-g+v-T,2*(M-x),2*(L-O),2*(M+x),y-g-v+T]}function Qr(t,r,i,u){const s=i*3+i,c=u*3+u,f=i*3+u,m=u*3+i,h=t[s],y=t[c],g=t[f];if(Math.abs(g)<1e-18)return;const v=(y-h)/(2*g),T=v>=0?1/(v+Math.sqrt(1+v*v)):-1/(-v+Math.sqrt(1+v*v)),x=1/Math.sqrt(1+T*T),O=T*x;for(let C=0;C<3;C+=1){if(C===i||C===u)continue;const N=C*3+i,L=i*3+C,M=C*3+u,G=u*3+C,U=t[N],D=t[M],Z=x*U-O*D,d=O*U+x*D;t[N]=Z,t[L]=Z,t[M]=d,t[G]=d}t[s]=x*x*h-2*O*x*g+O*O*y,t[c]=O*O*h+2*O*x*g+x*x*y,t[f]=0,t[m]=0;for(let C=0;C<3;C+=1){const N=C*3+i,L=C*3+u,M=r[N],G=r[L];r[N]=x*M-O*G,r[L]=O*M+x*G}}function Ks(t,r){r.fill(0),r[0]=1,r[4]=1,r[8]=1;for(let i=0;i<8&&!(Math.abs(t[1])+Math.abs(t[2])+Math.abs(t[5])<1e-14);i+=1)Qr(t,r,0,1),Qr(t,r,0,2),Qr(t,r,1,2)}function Jr(t,r,i){for(let u=0;u<3;u+=1){const s=u*3+r,c=u*3+i,f=t[s];t[s]=t[c],t[c]=f}}function Qs(t,r){if(t[0]<t[1]){const i=t[0];t[0]=t[1],t[1]=i,Jr(r,0,1)}if(t[1]<t[2]){const i=t[1];t[1]=t[2],t[2]=i,Jr(r,1,2)}if(t[0]<t[1]){const i=t[0];t[0]=t[1],t[1]=i,Jr(r,0,1)}}function Js(t){const r=t[0],i=t[1],u=t[2],s=t[3],c=t[4],f=t[5],m=t[6],h=t[7],y=t[8];r*(c*y-f*h)-i*(s*y-f*m)+u*(s*h-c*m)<0&&(t[2]*=-1,t[5]*=-1,t[8]*=-1)}function eu(t,r,i,u,s,c,f,m,h){const y=t+s+h;let g,v,T,x;if(y>0){const C=2*Math.sqrt(Math.max(1e-12,y+1));g=.25*C,v=(m-c)/C,T=(i-f)/C,x=(u-r)/C}else if(t>s&&t>h){const C=2*Math.sqrt(Math.max(1e-12,1+t-s-h));g=(m-c)/C,v=.25*C,T=(r+u)/C,x=(i+f)/C}else if(s>h){const C=2*Math.sqrt(Math.max(1e-12,1+s-t-h));g=(i-f)/C,v=(r+u)/C,T=.25*C,x=(c+m)/C}else{const C=2*Math.sqrt(Math.max(1e-12,1+h-t-s));g=(u-r)/C,v=(i+f)/C,T=(c+m)/C,x=.25*C}const O=Math.hypot(g,v,T,x)||1;return[g/O,v/O,T/O,x/O]}function tu(t,r,i){const u=new Float64Array(9),s=new Float64Array(9),c=new Float64Array(3);for(let f=0;f<t.count;f+=1){const m=f*3,h=f*4;t.meanVectors[m]*=r,t.meanVectors[m+1]*=i;const[y,g,v,T,x,O,C,N,L]=Zs(t.quaternions[h],t.quaternions[h+1],t.quaternions[h+2],t.quaternions[h+3]),M=t.singularValues[m]**2,G=t.singularValues[m+1]**2,U=t.singularValues[m+2]**2,D=y*y*M+g*g*G+v*v*U,Z=y*T*M+g*x*G+v*O*U,d=y*C*M+g*N*G+v*L*U,W=T*T*M+x*x*G+O*O*U,R=T*C*M+x*N*G+O*L*U,H=C*C*M+N*N*G+L*L*U;u[0]=D*r*r,u[1]=Z*r*i,u[2]=d*r,u[3]=u[1],u[4]=W*i*i,u[5]=R*i,u[6]=u[2],u[7]=u[5],u[8]=H,Ks(u,s),c[0]=u[0],c[1]=u[4],c[2]=u[8],Qs(c,s),Js(s),t.singularValues[m]=Math.sqrt(Math.max(c[0],1e-12)),t.singularValues[m+1]=Math.sqrt(Math.max(c[1],1e-12)),t.singularValues[m+2]=Math.sqrt(Math.max(c[2],1e-12));const[ve,K,S,A]=eu(s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8]);t.quaternions[h]=ve,t.quaternions[h+1]=K,t.quaternions[h+2]=S,t.quaternions[h+3]=A}}function ru(t){const r=Zr(t,["mean_vectors_ndc","mean_vectors"]),i=Zr(t,["singular_values_ndc","singular_values"]),u=Zr(t,["quaternions_ndc","quaternions"]),s=Ja(t,"colors"),c=Ja(t,"opacities"),f=r.key==="mean_vectors_ndc"||i.key==="singular_values_ndc"||u.key==="quaternions_ndc";return{meanVectors:r.tensor,singularValues:i.tensor,quaternions:u.tensor,colors:s,opacities:c,isNdcOutput:f}}function eo(t){if(t.inputNames.length<2)throw new Error(`Unexpected model inputs (${t.inputNames.join(", ")}). Expected at least image + disparity_factor inputs.`);if(t.inputNames.length!==2&&t.inputNames.length<5)throw new Error(`Unsupported model input count ${t.inputNames.length}. Expected 2 (raw predictor export) or 5 (legacy wrapper export).`);return{supportsWrapperScalars:t.inputNames.length>=5}}async function nu(t,r){lt("loading-model","Starting model download…",t);const i=await Qa(r.modelUrl,t);eo(i);const u={type:"reply",requestId:t,ok:!0,result:{modelUrl:r.modelUrl}};qt(u)}async function au(t,r){if(r.imageWidth<=0||r.imageHeight<=0)throw new Error("Image width/height must be > 0.");if(r.focalPx<=0||!Number.isFinite(r.focalPx))throw new Error("Focal length must be a positive finite number.");const i=await Qa(r.modelUrl,t),{supportsWrapperScalars:u}=eo(i),s=new Float32Array(r.imageTensor),c=3*Ft*Ft;if(s.length!==c)throw new Error(`Unexpected image tensor size ${s.length}. Expected ${c}.`);lt("running-inference","Running SHARP inference in the browser…",t);const f={[i.inputNames[0]]:new he("float32",s,[1,3,Ft,Ft]),[i.inputNames[1]]:new he("float32",new Float32Array([r.disparityFactor]),[1])};u&&(f[i.inputNames[2]]=new he("float32",new Float32Array([r.focalPx]),[1]),f[i.inputNames[3]]=new he("float32",new Float32Array([r.imageWidth]),[1]),f[i.inputNames[4]]=new he("float32",new Float32Array([r.imageHeight]),[1]));const m=await i.run(f),h=ru(m),{data:y,count:g}=Et(h.meanVectors,3,h.isNdcOutput?"mean_vectors_ndc":"mean_vectors"),{data:v,count:T}=Et(h.singularValues,3,h.isNdcOutput?"singular_values_ndc":"singular_values"),{data:x,count:O}=Et(h.quaternions,4,h.isNdcOutput?"quaternions_ndc":"quaternions"),{data:C,count:N}=Et(h.colors,3,"colors"),{data:L,count:M}=Et(h.opacities,1,"opacities");if(g!==T||g!==O||g!==N||g!==M)throw new Error(`Output count mismatch: means=${g}, scales=${T}, quat=${O}, colors=${N}, opacities=${M}`);lt("filtering","Filtering and capping Gaussians for browser preview/export…",t);const{pruned:G,totalCount:U}=Xs(y,v,x,C,L,r.opacityThreshold,r.maxGaussians);if(h.isNdcOutput){lt("filtering","Converting NDC Gaussians to metric space in-browser…",t);const W=r.imageWidth/(2*r.focalPx),R=r.imageHeight/(2*r.focalPx);tu(G,W,R)}lt("building-ply","Building binary .ply for preview and download…",t);const D=Vs({...G,imageWidth:r.imageWidth,imageHeight:r.imageHeight,focalPx:r.focalPx}),Z={plyBuffer:D.buffer.slice(D.byteOffset,D.byteOffset+D.byteLength),selectedGaussians:G.count,totalGaussians:U};qt({type:"reply",requestId:t,ok:!0,result:Z},[Z.plyBuffer])}Xr.onmessage=async t=>{const{data:r}=t;try{if(r.type==="load-model"){await nu(r.requestId,r.payload);return}if(r.type==="run-inference"){await au(r.requestId,r.payload);return}throw new Error(`Unknown worker request type: ${r.type??"undefined"}`)}catch(i){qs(r.requestId,i)}}})(); | |