PageSourceSearch

https://textremover.org/assets/ml.worker-_xNzMYXh.js

js textremover.org collected 2026-10-05 21:32:28 UTC 1,418,057 bytes, 5,633 lines download raw bytes

1(function(){"use strict";const Vu=new Map,Di=[],YS=(e,t,r)=>{if(t&&typeof t.init=="function"&&typeof t.createInferenceSessionHandler=="function"){const n=Vu.get(e);if(n===void 0)Vu.set(e,{backend:t,priority:r});else{if(n.priority>r)return;if(n.priority===r&&n.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${r}`)}if(r>=0){const s=Di.indexOf(e);s!==-1&&Di.splice(s,1);for(let a=0;a<Di.length;a++)if(Vu.get(Di[a]).priority<=r){Di.splice(a,0,e);return}Di.push(e)}return}throw new TypeError("not a valid backend")},NS=async e=>{const t=Vu.get(e);if(!t)return"backend not found.";if(t.initialized)return t.backend;if(t.aborted)return t.error;{const r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(n){return r||(t.error=`${n}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},jS=async e=>{const t=e.executionProviders||[],r=t.map(l=>typeof l=="string"?l:l.name),n=r.length===0?Di:r;let s;const a=[],i=new Set;for(const l of n){const u=await NS(l);typeof u=="string"?a.push({name:l,err:u}):(s||(s=u),s===u&&i.add(l))}if(!s)throw new Error(`no available backend found. ERR: ${a.map(l=>`[${l.name}] ${l.err}`).join(", ")}`);for(const{name:l,err:u}of a)r.includes(l)&&console.warn(`removing requested execution provider "${l}" from session options because it is not available: ${u}`);const o=t.filter(l=>i.has(typeof l=="string"?l:l.name));return[s,new Proxy(e,{get:(l,u)=>u==="executionProviders"?o:Reflect.get(l,u)})]},US="1.24.3";let tf="warning";const Gn={wasm:{},webgl:{},webgpu:{},versions:{common:US},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);tf=e}},get logLevel(){return tf}};Object.defineProperty(Gn,"logLevel",{enumerable:!0});const WS=Gn,VS=(e,t)=>{const r=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];const n=r.getContext("2d");if(n!=null){let s,a;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[3]):(s=e.dims[3],a=e.dims[2]);const i=t?.format!==void 0?t.format:"RGB",o=t?.norm;let l,u;o===void 0||o.mean===void 0?l=[255,255,255,255]:typeof o.mean=="number"?l=[o.mean,o.mean,o.mean,o.mean]:(l=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(l[3]=o.mean[3])),o===void 0||o.bias===void 0?u=[0,0,0,0]:typeof o.bias=="number"?u=[o.bias,o.bias,o.bias,o.bias]:(u=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(u[3]=o.bias[3]));const p=a*s;let d=0,c=p,g=p*2,A=-1;i==="RGBA"?(d=0,c=p,g=p*2,A=p*3):i==="RGB"?(d=0,c=p,g=p*2):i==="RBG"&&(d=0,g=p,c=p*2);for(let m=0;m<a;m++)for(let B=0;B<s;B++){const f=(e.data[d++]-u[0])*l[0],h=(e.data[c++]-u[1])*l[1],P=(e.data[g++]-u[2])*l[2],_=A===-1?255:(e.data[A++]-u[3])*l[3];n.fillStyle="rgba("+f+","+h+","+P+","+_+")",n.fillRect(B,m,1,1)}if("toDataURL"in r)return r.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},QS=(e,t)=>{const r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d");let n;if(r!=null){let s,a,i;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[1],i=e.dims[3]):(s=e.dims[3],a=e.dims[2],i=e.dims[1]);const o=t!==void 0&&t.format!==void 0?t.format:"RGB",l=t?.norm;let u,p;l===void 0||l.mean===void 0?u=[255,255,255,255]:typeof l.mean=="number"?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],255],l.mean[3]!==void 0&&(u[3]=l.mean[3])),l===void 0||l.bias===void 0?p=[0,0,0,0]:typeof l.bias=="number"?p=[l.bias,l.bias,l.bias,l.bias]:(p=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(p[3]=l.bias[3]));const d=a*s;if(t!==void 0&&(t.format!==void 0&&i===4&&t.format!=="RGBA"||i===3&&t.format!=="RGB"&&t.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");const c=4;let g=0,A=1,m=2,B=3,f=0,h=d,P=d*2,_=-1;o==="RGBA"?(f=0,h=d,P=d*2,_=d*3):o==="RGB"?(f=0,h=d,P=d*2):o==="RBG"&&(f=0,P=d,h=d*2),n=r.createImageData(s,a);for(let w=0;w<a*s;g+=c,A+=c,m+=c,B+=c,w++)n.data[g]=(e.data[f++]-p[0])*u[0],n.data[A]=(e.data[h++]-p[1])*u[1],n.data[m]=(e.data[P++]-p[2])*u[2],n.data[B]=_===-1?255:(e.data[_++]-p[3])*u[3]}else throw new Error("Can not access image data");return n},Jd=(e,t)=>{if(e===void 0)throw new Error("Image buffer must be defined");if(t.height===void 0||t.width===void 0)throw new Error("Image height and width must be defined");if(t.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");const{height:r,width:n}=t,s=t.norm??{mean:255,bias:0};let a,i;typeof s.mean=="number"?a=[s.mean,s.mean,s.mean,s.mean]:a=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?i=[s.bi
vendor: 10,365 bytes, line 1
1as,s.bias,s.bias,s.bias]:i=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];const o=t.format!==void 0?t.format:"RGBA",l=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:"RGB",u=r*n,p=l==="RGBA"?new Float32Array(u*4):new Float32Array(u*3);let d=4,c=0,g=1,A=2,m=3,B=0,f=u,h=u*2,P=-1;o==="RGB"&&(d=3,c=0,g=1,A=2,m=-1),l==="RGBA"?P=u*3:l==="RBG"?(B=0,h=u,f=u*2):l==="BGR"&&(h=0,f=u,B=u*2);for(let w=0;w<u;w++,c+=d,A+=d,g+=d,m+=d)p[B++]=(e[c]+i[0])/a[0],p[f++]=(e[g]+i[1])/a[1],p[h++]=(e[A]+i[2])/a[2],P!==-1&&m!==-1&&(p[P++]=(e[m]+i[3])/a[3]);return l==="RGBA"?new ms("float32",p,[1,4,r,n]):new ms("float32",p,[1,3,r,n])},HS=async(e,t)=>{const r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,n=typeof ImageData<"u"&&e instanceof ImageData,s=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,a=typeof e=="string";let i,o=t??{};const l=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},u=p=>typeof HTMLCanvasElement<"u"&&p instanceof HTMLCanvasElement||p instanceof OffscreenCanvas?p.getContext("2d"):null;if(r){const p=l();p.width=e.width,p.height=e.height;const d=u(p);if(d!=null){let c=e.height,g=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(c=t.resizedHeight,g=t.resizedWidth),t!==void 0){if(o=t,t.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=c,o.width=g}else o.tensorFormat="RGBA",o.height=c,o.width=g;d.drawImage(e,0,0),i=d.getImageData(0,0,g,c).data}else throw new Error("Can not access image data")}else if(n){let p,d;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(p=t.resizedHeight,d=t.resizedWidth):(p=e.height,d=e.width),t!==void 0&&(o=t),o.format="RGBA",o.height=p,o.width=d,t!==void 0){const c=l();c.width=d,c.height=p;const g=u(c);if(g!=null)g.putImageData(e,0,0),i=g.getImageData(0,0,d,p).data;else throw new Error("Can not access image data")}else i=e.data}else if(s){if(t===void 0)throw new Error("Please provide image config with format for Imagebitmap");const p=l();p.width=e.width,p.height=e.height;const d=u(p);if(d!=null){const c=e.height,g=e.width;return d.drawImage(e,0,0,g,c),i=d.getImageData(0,0,g,c).data,o.height=c,o.width=g,Jd(i,o)}else throw new Error("Can not access image data")}else{if(a)return new Promise((p,d)=>{const c=l(),g=u(c);if(!e||!g)return d();const A=new Image;A.crossOrigin="Anonymous",A.src=e,A.onload=()=>{c.width=A.width,c.height=A.height,g.drawImage(A,0,0,c.width,c.height);const m=g.getImageData(0,0,c.width,c.height);o.height=c.height,o.width=c.width,p(Jd(m.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(i!==void 0)return Jd(i,o);throw new Error("Input data provided is not supported - aborted tensor creation")},KS=(e,t)=>{const{width:r,height:n,download:s,dispose:a}=t,i=[1,n,r,4];return new ms({location:"texture",type:"float32",texture:e,dims:i,download:s,dispose:a})},qS=(e,t)=>{const{dataType:r,dims:n,download:s,dispose:a}=t;return new ms({location:"gpu-buffer",type:r??"float32",gpuBuffer:e,dims:n,download:s,dispose:a})},XS=(e,t)=>{const{dataType:r,dims:n,download:s,dispose:a}=t;return new ms({location:"ml-tensor",type:r??"float32",mlTensor:e,dims:n,download:s,dispose:a})},ZS=(e,t,r)=>new ms({location:"cpu-pinned",type:e,data:t,dims:r??[t.length]}),Po=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),Qu=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]);let rf=!1;const JS=()=>{if(!rf){rf=!0;const e=typeof BigInt64Array<"u"&&BigInt64Array.from,t=typeof BigUint64Array<"u"&&BigUint64Array.from,r=globalThis.Float16Array,n=typeof r<"u"&&r.from;e&&(Po.set("int64",BigInt64Array),Qu.set(BigInt64Array,"int64")),t&&(Po.set("uint64",BigUint64Array),Qu.set(BigUint64Array,"uint64")),n?(Po.set("float16",r),Qu.set(r,"float16")):Po.set("float16",Uint16Array)}},ek=e=>{let t=1;for(let r=0;r<e.length;r++){const n=e[r];if(typeof n!="number"||!Number.isSafeInteger(n))throw new TypeError(`dims[${r}] must be an integer, got: ${n}`);if(n<0)throw new RangeError(`dims[${r}] must be a non-negative integer, got: ${n}`);t*=n}return t},tk=(e,t)=>{switch(e.location){case"cpu":return new ms(e.type,e.data,t);case"cpu-pinned":return new ms({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new ms({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new ms({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case"ml-tensor":return new ms({location:"ml-tensor",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}};let ms=class{constructor(t,r,n){JS();let s,a;if(typeof t=="object"&&"location"in t)switch(this.dataLocation=t.location,s=t.type,a=t.dims,t.location){case"cpu-pinned":{const o=Po.get(s);if(!o)throw new TypeError(`unsupported type "${s}" to create tensor from pinned buffer`);if(!(t.data instanceof o))throw new TypeError(`buffer should be of type ${o.name}`);this.cpuData=t.data;break}case"texture":{if(s!=="float32")throw new TypeError(`unsupported type "${s}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case"gpu-buffer":{if(s!=="float32"&&s!=="float16"&&s!=="int32"&&s!=="int64"&&s!=="uint32"&&s!=="uint8"&&s!=="bool"&&s!=="uint4"&&s!=="int4")throw new TypeError(`unsupported type "${s}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}case"ml-tensor":{if(s!=="float32"&&s!=="float16"&&s!=="int32"&&s!=="int64"&&s!=="uint32"&&s!=="uint64"&&s!=="int8"&&s!=="uint8"&&s!=="bool"&&s!=="uint4"&&s!=="int4")throw new TypeError(`unsupported type "${s}" 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 o,l;if(typeof t=="string")if(s=t,l=n,t==="string"){if(!Array.isArray(r))throw new TypeError("A string tensor's data must be a string array.");o=r}else{const u=Po.get(t);if(u===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if(t==="float16"&&u===Uint16Array||t==="uint4"||t==="int4")throw new TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${u.name} as data.`);t==="uint64"||t==="int64"?o=u.from(r,BigInt):o=u.from(r)}else if(r instanceof u)o=r;else if(r instanceof Uint8ClampedArray)if(t==="uint8")o=Uint8Array.from(r);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(t==="float16"&&r instanceof Uint16Array&&u!==Uint16Array)o=new globalThis.Float16Array(r.buffer,r.byteOffset,r.length);else throw new TypeError(`A ${s} tensor's data must be type of ${u}`)}else if(l=r,Array.isArray(t)){if(t.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");const u=typeof t[0];if(u==="string")s="string",o=t;else if(u==="boolean")s="bool",o=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${u}.`)}else if(t instanceof Uint8ClampedArray)s="uint8",o=Uint8Array.from(t);else{const u=Qu.get(t.constructor);if(u===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);s=u,o=t}if(l===void 0)l=[o.length];else if(!Array.isArray(l))throw new TypeError("A tensor's dims must be a number array");a=l,this.cpuData=o,this.dataLocation="cpu"}const i=ek(a);if(this.cpuData&&i!==this.cpuData.length&&!((s==="uint4"||s==="int4")&&Math.ceil(i/2)===this.cpuData.length))throw new Error(`Tensor's size(${i}) does not match data length(${this.cpuData.length}).`);this.type=s,this.dims=a,this.size=i}static async fromImage(t,r){return HS(t,r)}static fromTexture(t,r){return KS(t,r)}static fromGpuBuffer(t,r){return qS(t,r)}static fromMLTensor(t,r){return XS(t,r)}static fromPinnedBuffer(t,r,n){return ZS(t,r,n)}toDataURL(t){return VS(this,t)}toImageData(t){return QS(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;const 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 tk(this,t)}};const Mo=ms,nf=(e,t)=>
1{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||console.timeStamp(`${e}::ORT::${t}`)},sf=(e,t)=>{const r=new Error().stack?.split(/\r\n|\r|\n/g)||[];let n=!1;for(let s=0;s<r.length;s++){if(n&&!r[s].includes("TRACE_FUNC")){let a=`FUNC_${e}::${r[s].trim().split(" ")[1]}`;t&&(a+=`::${t}`),nf("CPU",a);return}r[s].includes("TRACE_FUNC")&&(n=!0)}},ep=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||sf("BEGIN",e)},tp=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||sf("END",e)},rp=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||console.time(`ORT::${e}`)},np=e=>{(typeof Gn.trace>"u"?!Gn.wasm.trace:!Gn.trace)||console.timeEnd(`ORT::${e}`)};var rk=Object.freeze({__proto__:null,InferenceSession:class GS{constructor(t){this.handler=t}async run(t,r,n){ep(),rp("InferenceSession.run");const s={};let a={};if(typeof t!="object"||t===null||t instanceof Mo||Array.isArray(t))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if(typeof r=="object"){if(r===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof Mo)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(r.length===0)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(const u of r){if(typeof u!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(u)===-1)throw new RangeError(`'fetches' contains invalid output name: ${u}.`);s[u]=null}if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let u=!1;const p=Object.getOwnPropertyNames(r);for(const d of this.outputNames)if(p.indexOf(d)!==-1){const c=r[d];(c===null||c instanceof Mo)&&(u=!0,i=!1,s[d]=c)}if(u){if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(const u of this.inputNames)if(typeof t[u]>"u")throw new Error(`input '${u}' is missing in 'feeds'.`);if(i)for(const u of this.outputNames)s[u]=null;const o=await this.handler.run(t,s,a),l={};for(const u in o)if(Object.hasOwnProperty.call(o,u)){const p=o[u];p instanceof Mo?l[u]=p:l[u]=new Mo(p.type,p.data,p.dims)}return np("InferenceSession.run"),tp(),l}async release(){return this.handler.dispose()}static async create(t,r,n,s){ep(),rp("InferenceSession.create");let a,i={};if(typeof t=="string"){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer){const p=t;let d=0,c=t.byteLength;if(typeof r=="object"&&r!==null)i=r;else if(typeof r=="number"){if(d=r,!Number.isSafeInteger(d))throw new RangeError("'byteOffset' must be an integer.");if(d<0||d>=p.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${p.byteLength}).`);if(c=t.byteLength-d,typeof n=="number"){if(c=n,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||d+c>p.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${p.byteLength-d}].`);if(typeof s=="object"&&s!==null)i=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof n<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof r<"u")throw new TypeError("'options' must be an object.");a=new Uint8Array(p,d,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");const[o,l]=await jS(i),u=await o.createInferenceSessionHandler(a,l);return np("InferenceSession.create"),tp(),new GS(u)}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}},TRACE:nf,TRACE_EVENT_BEGIN:rp,TRACE_EVENT_END:np,TRACE_FUNC_BEGIN:ep,TRACE_FUNC_END:tp,Tensor:Mo,env:WS,registerBackend:YS});var sp=Object.defineProperty,nk=Object.getOwnPropertyDescriptor,sk=Object.getOwnPropertyNames,ak=Object.prototype.hasOwnProperty,ik=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),Je=(e,t)=>
vendor: 19,235 bytes, line 1
1()=>(e&&(t=e(e=0)),t),vo=(e,t)=>{for(var r in t)sp(e,r,{get:t[r],enumerable:!0})},ok=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of sk(t))!ak.call(e,s)&&s!==r&&sp(e,s,{get:()=>t[s],enumerable:!(n=nk(t,s))||n.enumerable});return e},_l=e=>ok(sp({},"__esModule",{value:!0}),e),wl,Ua,Ii,af,of,lf=Je(()=>{wl=new Map,Ua=[],Ii=(e,t,r)=>{if(t&&typeof t.init=="function"&&typeof t.createInferenceSessionHandler=="function"){let n=wl.get(e);if(n===void 0)wl.set(e,{backend:t,priority:r});else{if(n.priority>r)return;if(n.priority===r&&n.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${r}`)}if(r>=0){let s=Ua.indexOf(e);s!==-1&&Ua.splice(s,1);for(let a=0;a<Ua.length;a++)if(wl.get(Ua[a]).priority<=r){Ua.splice(a,0,e);return}Ua.push(e)}return}throw new TypeError("not a valid backend")},af=async e=>{let t=wl.get(e);if(!t)return"backend not found.";if(t.initialized)return t.backend;if(t.aborted)return t.error;{let r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(n){return r||(t.error=`${n}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},of=async e=>{let t=e.executionProviders||[],r=t.map(l=>typeof l=="string"?l:l.name),n=r.length===0?Ua:r,s,a=[],i=new Set;for(let l of n){let u=await af(l);typeof u=="string"?a.push({name:l,err:u}):(s||(s=u),s===u&&i.add(l))}if(!s)throw new Error(`no available backend found. ERR: ${a.map(l=>`[${l.name}] ${l.err}`).join(", ")}`);for(let{name:l,err:u}of a)r.includes(l)&&console.warn(`removing requested execution provider "${l}" from session options because it is not available: ${u}`);let o=t.filter(l=>i.has(typeof l=="string"?l:l.name));return[s,new Proxy(e,{get:(l,u)=>u==="executionProviders"?o:Reflect.get(l,u)})]}}),lk=Je(()=>{lf()}),uf,uk=Je(()=>{uf="1.22.0-dev.20250409-89f8206ba4"}),ap,fs,cf=Je(()=>{uk(),ap="warning",fs={wasm:{},webgl:{},webgpu:{},versions:{common:uf},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);ap=e}},get logLevel(){return ap}},Object.defineProperty(fs,"logLevel",{enumerable:!0})}),jr,ck=Je(()=>{cf(),jr=fs}),df,pf,dk=Je(()=>{df=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);r.width=e.dims[3],r.height=e.dims[2];let n=r.getContext("2d");if(n!=null){let s,a;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[3]):(s=e.dims[3],a=e.dims[2]);let i=t?.format!==void 0?t.format:"RGB",o=t?.norm,l,u;o===void 0||o.mean===void 0?l=[255,255,255,255]:typeof o.mean=="number"?l=[o.mean,o.mean,o.mean,o.mean]:(l=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(l[3]=o.mean[3])),o===void 0||o.bias===void 0?u=[0,0,0,0]:typeof o.bias=="number"?u=[o.bias,o.bias,o.bias,o.bias]:(u=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(u[3]=o.bias[3]));let p=a*s,d=0,c=p,g=p*2,A=-1;i==="RGBA"?(d=0,c=p,g=p*2,A=p*3):i==="RGB"?(d=0,c=p,g=p*2):i==="RBG"&&(d=0,g=p,c=p*2);for(let m=0;m<a;m++)for(let B=0;B<s;B++){let f=(e.data[d++]-u[0])*l[0],h=(e.data[c++]-u[1])*l[1],P=(e.data[g++]-u[2])*l[2],_=A===-1?255:(e.data[A++]-u[3])*l[3];n.fillStyle="rgba("+f+","+h+","+P+","+_+")",n.fillRect(B,m,1,1)}if("toDataURL"in r)return r.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},pf=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),n;if(r!=null){let s,a,i;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[1],i=e.dims[3]):(s=e.dims[3],a=e.dims[2],i=e.dims[1]);let o=t!==void 0&&t.format!==void 0?t.format:"RGB",l=t?.norm,u,p;l===void 0||l.mean===void 0?u=[255,255,255,255]:typeof l.mean=="number"?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],255],l.mean[3]!==void 0&&(u[3]=l.mean[3])),l===void 0||l.bias===void 0?p=[0,0,0,0]:typeof l.bias=="number"?p=[l.bias,l.bias,l.bias,l.bias]:(p=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(p[3]=l.bias[3]));let d=a*s;if(t!==void 0&&(t.format!==void 0&&i===4&&t.format!=="RGBA"||i===3&&t.format!=="RGB"&&t.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let c=4,g=0,A=1,m=2,B=3,f=0,h=d,P=d*2,_=-1;o==="RGBA"?(f=0,h=d,P=d*2,_=d*3):o==="RGB"?(f=0,h=d,P=d*2):o==="RBG"&&(f=0,P=d,h=d*2),n=r.createImageData(s,a);for(let w=0;w<a*s;g+=c,A+=c,m+=c,B+=c,w++)n.data[g]=(e.data[f++]-p[0])*u[0],n.data[A]=(e.data[h++]-p[1])*u[1],n.data[m]=(e.data[P++]-p[2])*u[2],n.data[B]=_===-1?255:(e.data[_++]-p[3])*u[3]}else throw new Error("Can not access image data");return n}}),Hu,gf,Af,hf,mf,ff,pk=Je(()=>{op(),Hu=(e,t)=>{if(e===void 0)throw new Error("Image buffer must be defined");if(t.height===void 0||t.width===void 0)throw new Error("Image height and width must be defined");if(t.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:r,width:n}=t,s=t.norm??{mean:255,bias:0},a,i;typeof s.mean=="number"?a=[s.mean,s.mean,s.mean,s.mean]:a=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?i=[s.bias,s.bias,s.bias,s.bias]:i=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let o=t.format!==void 0?t.format:"RGBA",l=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:"RGB",u=r*n,p=l==="RGBA"?new Float32Array(u*4):new Float32Array(u*3),d=4,c=0,g=1,A=2,m=3,B=0,f=u,h=u*2,P=-1;o==="RGB"&&(d=3,c=0,g=1,A=2,m=-1),l==="RGBA"?P=u*3:l==="RBG"?(B=0,h=u,f=u*2):l==="BGR"&&(h=0,f=u,B=u*2);for(let _=0;_<u;_++,c+=d,A+=d,g+=d,m+=d)p[B++]=(e[c]+i[0])/a[0],p[f++]=(e[g]+i[1])/a[1],p[h++]=(e[A]+i[2])/a[2],P!==-1&&m!==-1&&(p[P++]=(e[m]+i[3])/a[3]);return l==="RGBA"?new ts("float32",p,[1,4,r,n]):new ts("float32",p,[1,3,r,n])},gf=async(e,t)=>{let r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,n=typeof ImageData<"u"&&e instanceof ImageData,s=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,a=typeof e=="string",i,o=t??{},l=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},u=p=>typeof HTMLCanvasElement<"u"&&p instanceof HTMLCanvasElement||p instanceof OffscreenCanvas?p.getContext("2d"):null;if(r){let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(c=t.resizedHeight,g=t.resizedWidth),t!==void 0){if(o=t,t.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=c,o.width=g}else o.tensorFormat="RGBA",o.height=c,o.width=g;d.drawImage(e,0,0),i=d.getImageData(0,0,g,c).data}else throw new Error("Can not access image data")}else if(n){let p,d;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(p=t.resizedHeight,d=t.resizedWidth):(p=e.height,d=e.width),t!==void 0&&(o=t),o.format="RGBA",o.height=p,o.width=d,t!==void 0){let c=l();c.width=d,c.height=p;let g=u(c);if(g!=null)g.putImageData(e,0,0),i=g.getImageData(0,0,d,p).data;else throw new Error("Can not access image data")}else i=e.data}else if(s){if(t===void 0)throw new Error("Please provide image config with format for Imagebitmap");let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;return d.drawImage(e,0,0,g,c),i=d.getImageData(0,0,g,c).data,o.height=c,o.width=g,Hu(i,o)}else throw new Error("Can not access image data")}else{if(a)return new Promise((p,d)=>{let c=l(),g=u(c);if(!e||!g)return d();let A=new Image;A.crossOrigin="Anonymous",A.src=e,A.onload=()=>{c.width=A.width,c.height=A.height,g.drawImage(A,0,0,c.width,c.height);let m=g.getImageData(0,0,c.width,c.height);o.height=c.height,o.width=c.width,p(Hu(m.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(i!==void 0)return Hu(i,o);throw new Error("Input data provided is not supported - aborted tensor creation")},Af=(e,t)=>{let{width:r,height:n,download:s,dispose:a}=t,i=[1,n,r,4];return new ts({location:"texture",type:"float32",texture:e,dims:i,download:s,dispose:a})},hf=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ts({location:"gpu-buffer",type:r??"float32",gpuBuffer:e,dims:n,download:s,dispose:a})},mf=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ts({location:"ml-tensor",type:r??"float32",mlTensor:e,dims:n,download:s,dispose:a})},ff=(e,t,r)=>new ts({location:"cpu-pinned",type:e,data:t,dims:r??[t.length]})}),Ti,yl,ip,_f,gk=Je(()=>{Ti=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),yl=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),ip=!1,_f=()=>{if(!ip){ip=!0;let e=typeof BigInt64Array<"u"&&BigInt64Array.from,t=typeof BigUint64Array<"u"&&BigUint64Array.from,r=globalThis.Float16Array,n=typeof r<"u"&&r.from;e&&(Ti.set("int64",BigInt64Array),yl.set(BigInt64Array,"int64")),t&&(Ti.set("uint64",BigUint64Array),yl.set(BigUint64Array,"uint64")),n?(Ti.set("float16",r),yl.set(r,"float16")):Ti.set("float16",Uint16Array)}}}),wf,yf,Ak=Je(()=>{op(),wf=e=>{let t=1;for(let r=0;r<e.length;r++){let n=e[r];if(typeof n!="number"||!Number.isSafeInteger(n))throw new TypeError(`dims[${r}] must be an integer, got: ${n}`);if(n<0)throw new RangeError(`dims[${r}] must be a non-negative integer, got: ${n}`);t*=n}return t},yf=(e,t)=>{switch(e.location){case"cpu":return new ts(e.type,e.data,t);case"cpu-pinned":return new ts({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new ts({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new ts({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case"ml-tensor":return new ts({location:"ml-tensor",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}}),ts,op=Je(()=>{dk(),pk(),gk(),Ak(),ts=class{constructor(e,t,r){_f();let n,s;if(typeof e=="object"&&"location"in e)switch(this.dataLocation=e.location,n=e.type,s=e.dims,e.location){case"cpu-pinned":{let i=Ti.get(n);if(!i)throw new TypeError(`unsupported type "${n}" to create tensor from pinned buffer`);if(!(e.data instanceof i))throw new TypeError(`buffer should be of type ${i.name}`);this.cpuData=e.data;break}case"texture":{if(n!=="float32")throw new TypeError(`unsupported type "${n}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break}case"gpu-buffer":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break}case"ml-tensor":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint64"&&n!=="int8"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from MLTensor`);this.mlTensorData=e.mlTensor,this.downloader=e.download,this.disposer=e.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let i,o;if(typeof e=="string")if(n=e,o=r,e==="string"){if(!Array.isArray(t))throw new TypeError("A string tensor's data must be a string array.");i=t}else{let l=Ti.get(e);if(l===void 0)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if(e==="float16"&&l===Uint16Array||e==="uint4"||e==="int4")throw new TypeError(`Creating a ${e} tensor from number array is not supported. Please use ${l.name} as data.`);e==="uint64"||e==="int64"?i=l.from(t,BigInt):i=l.from(t)}else if(t instanceof l)i=t;else if(t instanceof Uint8ClampedArray)if(e==="uint8")i=Uint8Array.from(t);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(e==="float16"&&t instanceof Uint16Array&&l!==Uint16Array)i=new globalThis.Float16Array(t.buffer,t.byteOffset,t.length);else throw new TypeError(`A ${n} tensor's data must be type of ${l}`)}else if(o=t,Array.isArray(e)){if(e.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let l=typeof e[0];if(l==="string")n="string",i=e;else if(l==="boolean")n="bool",i=Uint8Array.from(e);else throw new TypeError(`Invalid element type of data array: ${l}.`)}else if(e instanceof Uint8ClampedArray)n="uint8",i=Uint8Array.from(e);else{let l=yl.get(e.constructor);if(l===void 0)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);n=l,i=e}if(o===void 0)o=[i.length];else if(!Array.isArray(o))throw new TypeError("A tensor's dims must be a number array");s=o,this.cpuData=i,this.dataLocation="cpu"}let a=wf(s);if(this.cpuData&&a!==this.cpuData.length&&!((n==="uint4"||n==="int4")&&Math.ceil(a/2)===this.cpuData.length))throw new Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=n,this.dims=s,this.size=a}static async fromImage(e,t){return gf(e,t)}static fromTexture(e,t){return Af(e,t)}static fromGpuBuffer(e,t){return hf(e,t)}static fromMLTensor(e,t){return mf(e,t)}static fromPinnedBuffer(e,t,r){return ff(e,t,r)}toDataURL(e){return df(this,e)}toImageData(e){return pf(this,e)}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(e){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 t=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}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(e){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return yf(this,e)}}}),ks,bf=Je(()=>{op(),ks=ts}),bl,lp,Os,_s,Pf=Je(()=>{cf(),bl=(e,t)=>{(typeof fs.trace>"u"?!fs.wasm.trace:!fs.trace)||console.timeStamp(`${e}::ORT::${t}`)},lp=(e,t)=>{let r=new Error().stack?.split(/\r\n|\r|\n/g)||[],n=!1;for(let s=0;s<r.length;s++){if(n&&!r[s].includes("TRACE_FUNC")){let a=`FUNC_${e}::${r[s].trim().split(" ")[1]}`;t&&(a+=`::${t}`),bl("CPU",a);return}r[s].includes("TRACE_FUNC")&&(n=!0)}},Os=e=>{(typeof fs.trace>"u"?!fs.wasm.trace:!fs.trace)||lp("BEGIN",e)},_s=e=>{(typeof fs.trace>"u"?!fs.wasm.trace:!fs.trace)||lp("END",e)}}),Mf,hk=Je(()=>{lf(),bf(),Pf(),Mf=class zS{constructor(t){this.handler=t}async run(t,r,n){Os();let s={},a={};if(typeof t!="object"||t===null||t instanceof ks||Array.isArray(t))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if(typeof r=="object"){if(r===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof ks)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(r.length===0)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(let u of r){if(typeof u!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(u)===-1)throw new RangeError(`'fetches' contains invalid output name: ${u}.`);s[u]=null}if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let u=!1,p=Object.getOwnPropertyNames(r);for(let d of this.outputNames)if(p.indexOf(d)!==-1){let c=r[d];(c===null||c instanceof ks)&&(u=!0,i=!1,s[d]=c)}if(u){if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let u of this.inputNames)if(typeof t[u]>"u")throw new Error(`input '${u}' is missing in 'feeds'.`);if(i)for(let u of this.outputNames)s[u]=null;let o=await this.handler.run(t,s,a),l={};for(let u in o)if(Object.hasOwnProperty.call(o,u)){let p=o[u];p instanceof ks?l[u]=p:l[u]=new ks(p.type,p.data,p.dims)}return _s(),l}async release(){return this.handler.dispose()}static async create(t,r,n,s){Os();let a,i={};if(typeof t=="string"){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer){let p=t,d=0,c=t.byteLength;if(typeof r=="object"&&r!==null)i=r;else if(typeof r=="number"){if(d=r,!Number.isSafeInteger(d))throw new RangeError("'byteOffset' must be an integer.");if(d<0||d>=p.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${p.byteLength}).`);if(c=t.byteLength-d,typeof n=="number"){if(c=n,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||d+c>p.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${p.byteLength-d}].`);if(typeof s=="object"&&s!==null)i=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof n<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof r<"u")throw new TypeError("'options' must be an object.");a=new Uint8Array(p,d,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[o,l]=await of(i),u=await o.createInferenceSessionHandler(a,l);return _s(),new zS(u)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}
1get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),up,mk=Je(()=>{hk(),up=Mf}),fk=Je(()=>{}),_k=Je(()=>{}),wk=Je(()=>{}),yk=Je(()=>{}),vf={};vo(vf,{InferenceSession:()=>up,TRACE:()=>bl,TRACE_FUNC_BEGIN:()=>Os,TRACE_FUNC_END:()=>_s,Tensor:()=>ks,env:()=>jr,registerBackend:()=>Ii});var Gs=Je(()=>{lk(),ck(),mk(),bf(),fk(),_k(),Pf(),wk(),yk()}),cp=Je(()=>{}),Bf={};vo(Bf,{default:()=>xf});var dp,pp,xf,bk=Je(()=>{aM(),Ci(),yp(),dp="ort-wasm-proxy-worker",pp=globalThis.self?.name===dp,pp&&(self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case"init-wasm":Mp(r.wasm).then(()=>{Gg(r).then(()=>{postMessage({type:t})},n=>{postMessage({type:t,err:n})})},n=>{postMessage({type:t,err:n})});break;case"init-ep":{let{epName:n,env:s}=r;zg(s,n).then(()=>{postMessage({type:t})},a=>{postMessage({type:t,err:a})});break}case"copy-from":{let{buffer:n}=r,s=gc(n);postMessage({type:t,out:s});break}case"create":{let{model:n,options:s}=r;Lg(n,s).then(a=>{postMessage({type:t,out:a})},a=>{postMessage({type:t,err:a})});break}case"release":Rg(r),postMessage({type:t});break;case"run":{let{sessionId:n,inputIndices:s,inputs:a,outputIndices:i,options:o}=r;Ng(n,s,a,i,new Array(i.length).fill(null),o).then(l=>{l.some(u=>u[3]!=="cpu")?postMessage({type:t,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:t,out:l},Ug([...a,...l]))},l=>{postMessage({type:t,err:l})});break}case"end-profiling":jg(r),postMessage({type:t});break;default:}}catch(n){postMessage({type:t,err:n})}}),xf=pp?null:e=>new Worker(e??rs,{type:"module",name:dp})}),Ef={};vo(Ef,{default:()=>Df});var gp,Ap,Df,If,Pk=Je(()=>{Ap=(gp=self.location.href,async function(e={}){var t,r,n=e,s=new Promise((x,C)=>{t=x,r=C}),a=typeof window=="object",i=typeof WorkerGlobalScope<"u",o=i&&self.name?.startsWith("em-pthread");n.mountExternalData=(x,C)=>{x.startsWith("./")&&(x=x.substring(2)),(n.Eb||(n.Eb=new Map)).set(x,C)},n.unmountExternalData=()=>{delete n.Eb};var l=globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,pc:!0}).buffer.constructor;let u=x=>async(...C)=>{try{if(n.Fb)throw Error("Session already started");let Y=n.Fb={dc:C[0],errors:[]},K=await x(...C);if(n.Fb!==Y)throw Error("Session mismatch");n.Jb?.flush();let ee=Y.errors;if(0<ee.length){let he=await Promise.all(ee);if(he=he.filter(Le=>Le),0<he.length)throw Error(he.join(`
2`))}return K}finally{n.Fb=null}};n.jsepInit=(x,C)=>{if(x==="webgpu"){[n.Jb,n.Ub,n.Yb,n.Kb,n.Xb,n.jb,n.Zb,n.ac,n.Vb,n.Wb,n.$b]=C;let Y=n.Jb;n.jsepRegisterBuffer=(K,ee,he,Le)=>Y.registerBuffer(K,ee,he,Le),n.jsepGetBuffer=K=>Y.getBuffer(K),n.jsepCreateDownloader=(K,ee,he)=>Y.createDownloader(K,ee,he),n.jsepOnCreateSession=K=>{Y.onCreateSession(K)},n.jsepOnReleaseSession=K=>{Y.onReleaseSession(K)},n.jsepOnRunStart=K=>Y.onRunStart(K),n.bc=(K,ee)=>{Y.upload(K,ee)}}else if(x==="webnn"){let Y=C[0];[n.nc,n.Nb,n.webnnEnsureTensor,n.Ob,n.webnnDownloadTensor]=C.slice(1),n.webnnReleaseTensorId=n.Nb,n.webnnUploadTensor=n.Ob,n.webnnOnRunStart=K=>Y.onRunStart(K),n.webnnOnRunEnd=Y.onRunEnd.bind(Y),n.webnnRegisterMLContext=(K,ee)=>{Y.registerMLContext(K,ee)},n.webnnOnReleaseSession=K=>{Y.onReleaseSession(K)},n.webnnCreateMLTensorDownloader=(K,ee)=>Y.createMLTensorDownloader(K,ee),n.webnnRegisterMLTensor=(K,ee,he,Le)=>Y.registerMLTensor(K,ee,he,Le),n.webnnCreateMLContext=K=>Y.createMLContext(K),n.webnnRegisterMLConstant=(K,ee,he,Le,Qe,ot)=>Y.registerMLConstant(K,ee,he,Le,Qe,n.Eb,ot),n.webnnRegisterGraphInput=Y.registerGraphInput.bind(Y),n.webnnIsGraphInput=Y.isGraphInput.bind(Y),n.webnnCreateTemporaryTensor=Y.createTemporaryTensor.bind(Y),n.webnnIsInt64Supported=Y.isInt64Supported.bind(Y)}};let p=()=>{let x=(C,Y,K)=>(...ee)=>{let he=Br,Le=Y?.();ee=C(...ee);let Qe=Y?.();return Le!==Qe&&(C=Qe,K(Le),Y=K=null),Br!=he?new Promise((ot,wt)=>{Wr={resolve:ot,reject:wt}}):ee};(()=>{for(let C of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])n[C]=x(n[C],()=>n[C],Y=>n[C]=Y)})(),u!==void 0&&(n._OrtRun=u(n._OrtRun),n._OrtRunWithBinding=u(n._OrtRunWithBinding)),p=void 0};n.asyncInit=()=>{p?.()};var d,c,g=Object.assign({},n),A=(x,C)=>{throw C},m="";(a||i)&&(i?m=self.location.href:typeof document<"u"&&document.currentScript&&(m=document.currentScript.src),gp&&(m=gp),m=m.startsWith("blob:")?"":m.slice(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1),i&&(c=x=>{var C=new XMLHttpRequest;return C.open("GET",x,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),d=async x=>{if(ce(x))return new Promise((Y,K)=>{var ee=new XMLHttpRequest;ee.open("GET",x,!0),ee.responseType="arraybuffer",ee.onload=()=>
2{ee.status==200||ee.status==0&&ee.response?Y(ee.response):K(ee.status)},ee.onerror=K,ee.send(null)});var C=await fetch(x,{credentials:"same-origin"});if(C.ok)return C.arrayBuffer();throw Error(C.status+" : "+C.url)});var B=console.log.bind(console),f=console.error.bind(console),h=B,P=f;Object.assign(n,g),g=null;var _,w,b,v,y,$,k,W,j,F,R,L,Q,ne=n.wasmBinary,re=!1,ce=x=>x.startsWith("file://");function ge(){return _.buffer!=v.buffer&&Me(),v}function q(){return _.buffer!=v.buffer&&Me(),y}function V(){return _.buffer!=v.buffer&&Me(),$}function U(){return _.buffer!=v.buffer&&Me(),k}function N(){return _.buffer!=v.buffer&&Me(),W}function oe(){return _.buffer!=v.buffer&&Me(),j}function fe(){return _.buffer!=v.buffer&&Me(),F}function De(){return _.buffer!=v.buffer&&Me(),Q}if(o){let x=function(C){try{var Y=C.data,K=Y.Bb;if(K==="load"){let ee=[];self.onmessage=he=>ee.push(he),self.startWorker=()=>{postMessage({Bb:"loaded"});for(let he of ee)x(he);self.onmessage=x};for(let he of Y.Rb)n[he]&&!n[he].proxy||(n[he]=(...Le)=>{postMessage({Bb:"callHandler",Qb:he,args:Le})},he=="print"&&(h=n[he]),he=="printErr"&&(P=n[he]));_=Y.kc,Me(),Ie(Y.lc)}else if(K==="run"){ma(Y.Ab),la(Y.Ab,0,0,1,0,0),hn(),de(Y.Ab),je||(oa(),je=!0);try{fa(Y.fc,Y.Hb)}catch(ee){if(ee!="unwind")throw ee}}else Y.target!=="setimmediate"&&(K==="checkMailbox"?je&&pe():K&&(P(`worker: received unknown command ${K}`),P(Y)))}catch(ee){throw yi(),ee}};var Ie,je=!1;P=function(...C){C=C.join(" "),console.error(C)},self.alert=function(...C){postMessage({Bb:"alert",text:C.join(" "),ic:va()})},self.onunhandledrejection=C=>{throw C.reason||C},self.onmessage=x}function Me(){var x=_.buffer;n.HEAP8=v=new Int8Array(x),n.HEAP16=$=new Int16Array(x),n.HEAPU8=y=new Uint8Array(x),n.HEAPU16=k=new Uint16Array(x),n.HEAP32=W=new Int32Array(x),n.HEAPU32=j=new Uint32Array(x),n.HEAPF32=F=new Float32Array(x),n.HEAPF64=Q=new Float64Array(x),n.HEAP64=R=new BigInt64Array(x),n.HEAPU64=L=new BigUint64Array(x)}function se(){o?startWorker(n):vt.Ca()}o||(_=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),Me());var H,we=0,be=null;function Ce(){if(--we==0&&be){var x=be;be=null,x()}}function Se(x){throw P(x="Aborted("+x+")"),re=!0,x=new WebAssembly.RuntimeError(x+". Build with -sASSERTIONS for more info."),r(x),x}function ze(){return{a:{L:Be,Aa:Ve,b:Ur,$:Nn,A:us,pa:cs,X:ds,Z:S,qa:ie,n
vendor: 10,045 bytes, line 2
2a:X,ga:ae,ma:le,J:_e,Y:Oe,V:gt,oa:Et,W:at,va:St,E:vs,Q:ps,O:ea,D:xs,u:Es,r:_n,P:wn,z:ii,R:ye,ja:O,T:xe,aa:ct,M:ut,F:pt,ia:de,sa:st,t:Or,Ba:un,w:gs,o:es,l:rn,c:qr,n:zn,j:Yo,v:No,p:io,f:jo,s:ya,m:Uo,e:Wo,k:Vo,i:Qo,g:Ho,d:ba,da:oo,ea:Ko,fa:ui,ba:ci,ca:na,N:di,xa:qo,ua:po,h:go,C:gi,G:Xo,ta:co,x:Zo,ra:Jo,U:el,q:uo,y:Ts,K:Ga,S:Ai,za:tl,ya:Pa,ka:hs,la:mi,_:We,B:Ao,I:fi,ha:rl,H:_i,a:_,wa:At}}}var ve={829644:(x,C,Y,K,ee)=>{if(n===void 0||!n.Eb)return 1;if((x=Er(Number(x>>>0))).startsWith("./")&&(x=x.substring(2)),!(x=n.Eb.get(x)))return 2;if(C=Number(C>>>0),Y=Number(Y>>>0),K=Number(K>>>0),C+Y>x.byteLength)return 3;try{let he=x.subarray(C,C+Y);switch(ee){case 0:q().set(he,K>>>0);break;case 1:n.mc?n.mc(K,he):n.bc(K,he);break;default:return 4}return 0}catch{return 4}},830468:(x,C,Y)=>{n.Ob(x,q().subarray(C>>>0,C+Y>>>0))},830532:()=>n.nc(),830574:x=>{n.Nb(x)},830611:()=>{n.Vb()},830642:()=>{n.Wb()},830671:()=>{n.$b()},830696:x=>n.Ub(x),830729:x=>n.Yb(x),830761:(x,C,Y)=>{n.Kb(Number(x),Number(C),Number(Y),!0)},830824:(x,C,Y)=>{n.Kb(Number(x),Number(C),Number(Y))},830881:()=>typeof wasmOffsetConverter<"u",830938:x=>{n.jb("Abs",x,void 0)},830989:x=>{n.jb("Neg",x,void 0)},831040:x=>{n.jb("Floor",x,void 0)},831093:x=>{n.jb("Ceil",x,void 0)},831145:x=>{n.jb("Reciprocal",x,void 0)},831203:x=>{n.jb("Sqrt",x,void 0)},831255:x=>{n.jb("Exp",x,void 0)},831306:x=>{n.jb("Erf",x,void 0)},831357:x=>{n.jb("Sigmoid",x,void 0)},831412:(x,C,Y)=>{n.jb("HardSigmoid",x,{alpha:C,beta:Y})},831491:x=>{n.jb("Log",x,void 0)},831542:x=>{n.jb("Sin",x,void 0)},831593:x=>{n.jb("Cos",x,void 0)},831644:x=>{n.jb("Tan",x,void 0)},831695:x=>{n.jb("Asin",x,void 0)},831747:x=>{n.jb("Acos",x,void 0)},831799:x=>{n.jb("Atan",x,void 0)},831851:x=>{n.jb("Sinh",x,void 0)},831903:x=>{n.jb("Cosh",x,void 0)},831955:x=>{n.jb("Asinh",x,void 0)},832008:x=>{n.jb("Acosh",x,void 0)},832061:x=>{n.jb("Atanh",x,void 0)},832114:x=>{n.jb("Tanh",x,void 0)},832166:x=>{n.jb("Not",x,void 0)},832217:(x,C,Y)=>{n.jb("Clip",x,{min:C,max:Y})},832286:x=>{n.jb("Clip",x,void 0)},832338:(x,C)=>{n.jb("Elu",x,{alpha:C})},832396:x=>{n.jb("Gelu",x,void 0)},832448:x=>{n.jb("Relu",x,void 0)},832500:(x,C)=>{n.jb("LeakyRelu",x,{alpha:C})},832564:(x,C)=>{n.jb("ThresholdedRelu",x,{alpha:C})},832634:(x,C)=>{n.jb("Cast",x,{to:C})},832692:x=>{n.jb("Add",x,void 0)},832743:x=>{n.jb("Sub",x,void 0)},832794:x=>{n.jb("Mul",x,void 0)},832845:x=>{n.jb("Div",x,void 0)},832896:x=>{n.jb("Pow",x,void 0)},832947:x=>{n.jb("Equal",x,void 0)},833e3:x=>{n.jb("Greater",x,void 0)},833055:x=>{n.jb("GreaterOrEqual",x,void 0)},833117:x=>{n.jb("Less",x,void 0)},833169:x=>{n.jb("LessOrEqual",x,void 0)},833228:(x,C,Y,K,ee)=>{n.jb("ReduceMean",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833403:(x,C,Y,K,ee)=>{n.jb("ReduceMax",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833577:(x,C,Y,K,ee)=>{n.jb("ReduceMin",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833751:(x,C,Y,K,ee)=>{n.jb("ReduceProd",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},833926:(x,C,Y,K,ee)=>{n.jb("ReduceSum",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834100:(x,C,Y,K,ee)=>{n.jb("ReduceL1",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834273:(x,C,Y,K,ee)=>{n.jb("ReduceL2",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834446:(x,C,Y,K,ee)=>{n.jb("ReduceLogSum",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834623:(x,C,Y,K,ee)=>{n.jb("ReduceSumSquare",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834803:(x,C,Y,K,ee)=>{n.jb("ReduceLogSumExp",x,{keepDims:!!C,noopWithEmptyAxes:!!Y,axes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},834983:x=>{n.jb("Where",x,void 0)},835036:(x,C,Y)=>{n.jb("Transpose",x,{perm:C?Array.from(N().subarray(Number(C)>>>0,Number(Y)>>>0)):[]})},835160:(x,C,Y,K)=>{n.jb("DepthToSpace",x,{blocksize:C,mode:Er(Y),format:K?"NHWC":"NCHW"})},835293:(x,C,Y,K)=>{n.jb("DepthToSpace",x,{blocksize:C,mode:Er(Y),format:K?"NHWC":"NCHW"})},835426:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s)=>{n.jb("ConvTranspose",x,{format:ot?"NHWC":"NCHW",autoPad:C,dilations:[Y],group:K,kernelShape:[ee],pads:[he,Le],strides:[Qe],wIsConst:()=>!!ge()[wt>>>0],outputPadding:Lt?Array.from(N().subarray(Number(Lt)>>>0,Number(sr)>>>0)):[],outputShape:mr?Array.from(N().subarray(Number(mr)>>>0,Number(nn)>>>0)):[],activation:Er($s)})},835859:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("ConvTranspose",x,{format:Qe?"NHWC":"NCHW",autoPad:C,dilations:Array.from(N().subarray(Number(Y)>>>0,2+(Number(Y)>>>0)>>>0)),group:K,kernelShape:Array.from(N().subarray(Number(ee)>>>0,2+(Number(ee)>>>0)>>>0)),pads:Array.from(N().subarray(Number(he)>>>0,4+(Number(he)>>>0)>>>0)),strides:Array.from(N().subarray(Number(Le)>>>0,2+(Number(Le)>>>0)>>>0)),wIsConst:()=>!!ge()[ot>>>0],outputPadding:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],outputShape:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[],activation:Er(nn)})},836520:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s)=>{n.jb("ConvTranspose",x,{format:ot?"NHWC":"NCHW",autoPad:C,dilations:[Y],group:K,kernelShape:[ee],pads:[he,Le],strides:[Qe],wIsConst:()=>!!ge()[wt>>>0],outputPadding:Lt?Array.from(N().subarray(Number(Lt)>>>0,Number(sr)>>>0)):[],outputShape:mr?Array.from(N().subarray(Number(mr)>>>0,Number(nn)>>>0)):[],activation:Er($s)})},836953:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("ConvTranspose",x,{format:Qe?"NHWC":"NCHW",autoPad:C,dilations:Array.from(N().subarray(Number(Y)>>>0,2+(Number(Y)>>>0)>>>0)),group:K,kernelShape:Array.from(N().subarray(Number(ee)>>>0,2+(Number(ee)>>>0)>>>0)),pads:Array.from(N().subarray(Number(he)>>>0,4+(Number(he)>>>0)>>>0)),strides:Array.from(N().subarray(Number(Le)>>>0,2+(Number(Le)>>>0)>>>0)),wIsConst:()=>!!ge()[ot>>>0],outputPadding:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],outputShape:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[],activation:Er(nn)})},837614:(x,C)=>{n.jb("GlobalAveragePool",x,{format:C?"NHWC":"NCHW"})},837705:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("AveragePool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},838184:(x,C)=>{n.jb("GlobalAveragePool",x,{format:C?"NHWC":"NCHW"})},838275:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("AveragePool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},838754:(x,C)=>{n.jb("GlobalMaxPool",x,{format:C?"NHWC":"NCHW"})},838841:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("MaxPool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},839316:(x,C)=>{n.jb("GlobalMaxPool",x,{format:C?"NHWC":"NCHW"})},839403:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn)=>{n.jb("MaxPool",x,{format:nn?"NHWC":"NCHW",auto_pad:C,ceil_mode:Y,count_include_pad:K,storage_order:ee,dilations:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],kernel_shape:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],pads:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],strides:sr?Array.from(N().subarray(Number(sr)>>>0,Number(mr)>>>0)):[]})},839878:(x,C,Y,K,ee)=>{n.jb("Gemm",x,{alpha:C,beta:Y,transA:K,transB:ee})},839982:x=>{n.jb("MatMul",x,void 0)},840036:(x,C,Y,K)=>{n.jb("ArgMax",x,{keepDims:!!C,selectLastIndex:!!Y,axis:K})},840144:(x,C,Y,K)=>{n.jb("ArgMin",x,{keepDims:!!C,selectLastIndex:!!Y,axis:K})},840252:(x,C)=>{n.jb("Softmax",x,{axis:C})},840315:(x,C)=>{n.jb("Concat",x,{axis:C})},840375:(x,C,Y,K,ee)=>{n.jb("Split",x,{axis:C,numOutputs:Y,splitSizes:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},840531:x=>{n.jb("Expand",x,void 0)},840585:(x,C)=>{n.jb("Gather",x,{axis:Number(C)})},840656:(x,C)=>{n.jb("GatherElements",x,{axis:Number(C)})},840735:(x,C)=>{n.jb("GatherND",x,{batch_dims:Number(C)})},840814:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt)=>{n.jb("Resize",x,{antialias:C,axes:Y?Array.from(N().subarray(Number(Y)>>>0,Number(K)>>>0)):[],coordinateTransformMode:Er(ee),cubicCoeffA:he,excludeOutside:Le,extrapolationValue:Qe,keepAspectRatioPolicy:Er(ot),mode:Er(wt),nearestMode:Er(Lt)})},841176:(x,C,Y,K,ee,he,Le)=>{n.jb("Slice",x,{starts:C?Array.from(N().subarray(Number(C)>>>0,Number(Y)>>>0)):[],ends:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[],axes:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[]})},841440:x=>{n.jb("Tile",x,void 0)},841492:(x,C,Y)=>{n.jb("InstanceNormalization",x,{epsilon:C,format:Y?"NHWC":"NCHW"})},841606:(x,C,Y)=>{n.jb("InstanceNormalization",x,{epsilon:C,format:Y?"NHWC":"NCHW"})},841720:x=>{n.jb("Range",x,void 0)},841773:(x,C)=>{n.jb("Einsum",x,{equation:Er(C)})},841854:(x,C,Y,K,ee)=>{n.jb("Pad",x,{mode:C,value:Y,pads:K?Array.from(N().subarray(Number(K)>>>0,Number(ee)>>>0)):[]})},841997:(x,C,Y,K,ee,he)=>
2{n.jb("BatchNormalization",x,{epsilon:C,momentum:Y,spatial:!!ee,trainingMode:!!K,format:he?"NHWC":"NCHW"})},842166:(x,C,Y,K,ee,he)=>{n.jb("BatchNormalization",x,{epsilon:C,momentum:Y,spatial:!!ee,trainingMode:!!K,format:he?"NHWC":"NCHW"})},842335:(x,C,Y)=>{n.jb("CumSum",x,{exclusive:Number(C),reverse:Number(Y)})},842432:(x,C,Y)=>{n.jb("DequantizeLinear",x,{axis:C,blockSize:Y})},842522:(x,C,Y,K,ee)=>{n.jb("GridSample",x,{align_corners:C,mode:Er(Y),padding_mode:Er(K),format:ee?"NHWC":"NCHW"})},842692:(x,C,Y,K,ee)=>{n.jb("GridSample",x,{align_corners:C,mode:Er(Y),padding_mode:Er(K),format:ee?"NHWC":"NCHW"})},842862:(x,C)=>{n.jb("ScatterND",x,{reduction:Er(C)})},842947:(x,C,Y,K,ee,he,Le,Qe,ot)=>{n.jb("Attention",x,{numHeads:C,isUnidirectional:Y,maskFilterValue:K,scale:ee,doRotary:he,qkvHiddenSizes:Le?Array.from(N().subarray(Number(Qe)>>>0,Number(Qe)+Le>>>0)):[],pastPresentShareBuffer:!!ot})},843219:x=>{n.jb("BiasAdd",x,void 0)},843274:x=>{n.jb("BiasSplitGelu",x,void 0)},843335:x=>{n.jb("FastGelu",x,void 0)},843391:(x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s,mo)=>{n.jb("Conv",x,{format:sr?"NHWC":"NCHW",auto_pad:C,dilations:Y?Array.from(N().subarray(Number(Y)>>>0,Number(K)>>>0)):[],group:ee,kernel_shape:he?Array.from(N().subarray(Number(he)>>>0,Number(Le)>>>0)):[],pads:Qe?Array.from(N().subarray(Number(Qe)>>>0,Number(ot)>>>0)):[],strides:wt?Array.from(N().subarray(Number(wt)>>>0,Number(Lt)>>>0)):[],w_is_const:()=>!!ge()[Number(mr)>>>0],activation:Er(nn),activation_params:$s?Array.from(fe().subarray(Number($s)>>>0,Number(mo)>>>0)):[]})},843975:x=>{n.jb("Gelu",x,void 0)},844027:(x,C,Y,K,ee,he,Le,Qe,ot)=>{n.jb("GroupQueryAttention",x,{numHeads:C,kvNumHeads:Y,scale:K,softcap:ee,doRotary:he,rotaryInterleaved:Le,smoothSoftmax:Qe,localWindowSize:ot})},844244:(x,C,Y,K)=>{n.jb("LayerNormalization",x,{axis:C,epsilon:Y,simplified:!!K})},844355:(x,C,Y,K)=>{n.jb("LayerNormalization",x,{axis:C,epsilon:Y,simplified:!!K})},844466:(x,C,Y,K,ee,he)=>{n.jb("MatMulNBits",x,{k:C,n:Y,accuracyLevel:K,bits:ee,blockSize:he})},844593:(x,C,Y,K,ee,he)=>{n.jb("MultiHeadAttention",x,{numHeads:C,isUnidirectional:Y,maskFilterValue:K,scale:ee,doRotary:he})},844752:(x,C)=>{n.jb("QuickGelu",x,{alpha:C})},844816:(x,C,Y,K,ee)=>{n.jb("RotaryEmbedding",x,{interleaved:!!C,numHeads:Y,rotaryEmbeddingDim:K,scale:ee})},844955:(x,C,Y)=>{n.jb("SkipLayerNormalization",x,{epsilon:C,simplified:!!Y})},845057:(x,C,Y)=>{n.jb("SkipLayerNormalization",x,{epsilon:C,simplified:!!Y})},845159:(x,C,Y,K)=>{n.jb("GatherBlockQuantized",x,{gatherAxis:C,quantizeAxis:Y,blockSize:K})},845280:x=>{n.Zb(x)},845314:(x,C)=>n.ac(Number(x),Number(C),n.Fb.dc,n.Fb.errors)};function Ve(x,C,Y){return Wn(async()=>{await n.Xb(Number(x),Number(C),Number(Y))})}function Be(){return typeof wasmOffsetConverter<"u"}class ke{name="ExitStatus";constructor(C){this.message=`Program terminated with exit(${C})`,this.status=C}}var rt=x=>{x.terminate(),x.onmessage=()=>{}},Ue=[],ht=x=>{yt.length==0&&(On(),ar(yt[0]));var C=yt.pop();if(!C)return 6;Mt.push(C),Vt[x.Ab]=C,C.Ab=x.Ab;var Y={Bb:"run",fc:x.ec,Hb:x.Hb,Ab:x.Ab};return C.postMessage(Y,x.Mb),0},He=0,dt=(x,C,...Y)=>{for(var K=2*Y.length,ee=Ea(),he=xa(8*K),Le=he>>>3,Qe=0;Qe<Y.length;Qe++){var ot=Y[Qe];typeof ot=="bigint"?(R[Le+2*Qe]=1n,R[Le+2*Qe+1]=ot):(R[Le+2*Qe]=0n,De()[Le+2*Qe+1>>>0]=ot)}return x=bi(x,0,K,he,C),Wt(ee),x};function At(x){if(o)return dt(0,1,x);if(b=x,!(0<He)){for(var C of Mt)rt(C);for(C of yt)rt(C);yt=[],Mt=[],Vt={},re=!0}A(0,new ke(x))}function Xe(x){if(o)return dt(1,0,x);We(x)}var We=x=>{if(b=x,o)throw Xe(x),"unwind";At(x)},yt=[],Mt=[],hr=[],Vt={},tn=x=>{var C=x.Ab;delete Vt[C],yt.push(x),Mt.splice(Mt.indexOf(x),1),x.Ab=0,Zt(C)};function hn(){hr.forEach(x=>x())}var ar=x=>new Promise(C=>{x.onmessage=ee=>{var he=(ee=ee.data).Bb;if(ee.Gb&&ee.Gb!=va()){var Le=Vt[ee.Gb];Le?Le.postMessage(ee,ee.Mb):P(`Internal error! Worker sent a message "${he}" to target pthread ${ee.Gb}, but that thread no longer exists!`)}else he==="checkMailbox"?pe():he==="spawnThread"?ht(ee):he==="cleanupThread"?tn(Vt[ee.hc]):he==="loaded"?(x.loaded=!0,C(x)):he==="alert"?alert(`Thread ${ee.ic}: ${ee.text}`):ee.target==="setimmediate"?x.postMessage(ee):he==="callHandler"?n[ee.Qb](...ee.args):he&&P(`worker sent an unknown command ${he}`)},x.onerror=ee=>{throw P(`worker sent an error! ${ee.filename}:${ee.lineno}: ${ee.message}`),ee};var Y,K=[];for(Y of[])n.propertyIsEnumerable(Y)&&K.push(Y);x.postMessage({Bb:"load",Rb:K,kc:_,lc:w})});function On(){var x=new Worker((()=>{let C=URL;return self.location.href>"file:"&&self.location.href<"file;"?new C("ort.bundle.min.mjs",self.location.href):new URL(self.location.href)})(),{type:"module",workerData:"em-pthread",name:"em-pthread"});yt.push(x)}var ma=x=>{Me();
2var C=oe()[x+52>>>2>>>0];x=oe()[x+56>>>2>>>0],Ra(C,C-x),Wt(C)},fa=(x,C)=>{He=0,x=Mi(x,C),0<He?b=x:Cs(x)};class _a{constructor(C){this.Ib=C-24}}function Ur(x,C,Y){var K=new _a(x>>>=0);throw C>>>=0,Y>>>=0,oe()[K.Ib+16>>>2>>>0]=0,oe()[K.Ib+4>>>2>>>0]=C,oe()[K.Ib+8>>>2>>>0]=Y,x}function mn(x,C,Y,K){return o?dt(2,1,x,C,Y,K):Nn(x,C,Y,K)}function Nn(x,C,Y,K){if(x>>>=0,Y>>>=0,K>>>=0,l===void 0)return 6;var ee=[];return o&&ee.length===0?mn(x,C>>>=0,Y,K):(x={ec:Y,Ab:x,Hb:K,Mb:ee},o?(x.Bb="spawnThread",postMessage(x,ee),0):ht(x))}var Ms=typeof TextDecoder<"u"?new TextDecoder:void 0,kt=(x,C=0,Y=NaN)=>{var K=(C>>>=0)+Y;for(Y=C;x[Y]&&!(Y>=K);)++Y;if(16<Y-C&&x.buffer&&Ms)return Ms.decode(x.buffer instanceof ArrayBuffer?x.subarray(C,Y):x.slice(C,Y));for(K="";C<Y;){var ee=x[C++];if(128&ee){var he=63&x[C++];if((224&ee)==192)K+=String.fromCharCode((31&ee)<<6|he);else{var Le=63&x[C++];65536>(ee=(240&ee)==224?(15&ee)<<12|he<<6|Le:(7&ee)<<18|he<<12|Le<<6|63&x[C++])?K+=String.fromCharCode(ee):(ee-=65536,K+=String.fromCharCode(55296|ee>>10,56320|1023&ee))}}else K+=String.fromCharCode(ee)}return K},Er=(x,C)=>(x>>>=0)?kt(q(),x,C):"";function us(x,C,Y){return o?dt(3,1,x,C,Y):0}function cs(x,C){if(o)return dt(4,1,x,C)}var pr=x=>{for(var C=0,Y=0;Y<x.length;++Y){var K=x.charCodeAt(Y);127>=K?C++:2047>=K?C+=2:55296<=K&&57343>=K?(C+=4,++Y):C+=3}return C},Ft=(x,C,Y)=>{var K=q();if(C>>>=0,0<Y){var ee=C;Y=C+Y-1;for(var he=0;he<x.length;++he){var Le=x.charCodeAt(he);if(55296<=Le&&57343>=Le&&(Le=65536+((1023&Le)<<10)|1023&x.charCodeAt(++he)),127>=Le){if(C>=Y)break;K[C++>>>0]=Le}else{if(2047>=Le){if(C+1>=Y)break;K[C++>>>0]=192|Le>>6}else{if(65535>=Le){if(C+2>=Y)break;K[C++>>>0]=224|Le>>12}else{if(C+3>=Y)break;K[C++>>>0]=240|Le>>18,K[C++>>>0]=128|Le>>12&63}K[C++>>>0]=128|Le>>6&63}K[C++>>>0]=128|63&Le}}K[C>>>0]=0,x=C-ee}else x=0;return x};function ds(x,C){if(o)return dt(5,1,x,C)}function S(x,C,Y){if(o)return dt(6,1,x,C,Y)}function ie(x,C,Y){return o?dt(7,1,x,C,Y):0}function X(x,C){if(o)return dt(8,1,x,C)}function ae(x,C,Y){if(o)return dt(9,1,x,C,Y)}function le(x,C,Y,K){if(o)return dt(10,1,x,C,Y,K)}function _e(x,C,Y,K){if(o)return dt(11,1,x,C,Y,K)}function Oe(x,C,Y,K){if(o)return dt(12,1,x,C,Y,K)}function gt(x){if(o)return dt(13,1,x)}function Et(x,C){if(o)return dt(14,1,x,C)}function at(x,C,Y){if(o)return dt(15,1,x,C,Y)}var Ot,lt,St=()=>Se(""),rr=x=>{for(var C="";q()[x>>>0];)C+=Ot[q()[x++>>>0]];return C},Hr={},kr={};function yr(x,C,Y={}){return(function(K,ee,he={}){var Le=ee.name;if(!K)throw new lt(`type "${Le}" must have a positive integer typeid pointer`);if(kr.hasOwnProperty(K)){if(he.Sb)return;throw new lt(`Cannot register type '${Le}' twice`)}kr[K]=ee,Hr.hasOwnProperty(K)&&(ee=Hr[K],delete Hr[K],ee.forEach(Qe=>Qe()))})(x,C,Y)}var ln=(x,C,Y)=>{switch(C){case 1:return Y?K=>ge()[K>>>0]:K=>q()[K>>>0];case 2:return Y?K=>V()[K>>>1>>>0]:K=>U()[K>>>1>>>0];case 4:return Y?K=>N()[K>>>2>>>0]:K=>oe()[K>>>2>>>0];case 8:return Y?K=>R[K>>>3]:K=>L[K>>>3];default:throw new TypeError(`invalid integer width (${C}): ${x}`)}};function vs(x,C,Y){Y>>>=0,yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:K=>K,toWireType:function(K,ee){if(typeof ee!="bigint"&&typeof ee!="number")throw ee=ee===null?"null":(K=typeof ee)=="object"||K==="array"||K==="function"?ee.toString():""+ee,new TypeError(`Cannot convert "${ee}" to ${this.name}`);return typeof ee=="number"&&(ee=BigInt(ee)),ee},Cb:En,readValueFromPointer:ln(C,Y,C.indexOf("u")==-1),Db:null})}var En=8;function ps(x,C,Y,K){yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:function(ee){return!!ee},toWireType:function(ee,he){return he?Y:K},Cb:En,readValueFromPointer:function(ee){return this.fromWireType(q()[ee>>>0])},Db:null})}var Kr=[],fn=[];function qr(x){9<(x>>>=0)&&--fn[x+1]==0&&(fn[x]=void 0,Kr.push(x))}var vr=x=>{if(!x)throw new lt("Cannot use deleted val. handle = "+x);return fn[x]},Rr=x=>{switch(x){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let C=Kr.pop()||fn.length;return fn[C]=x,fn[C+1]=1,C}};function jn(x){return this.fromWireType(oe()[x>>>2>>>0])}var Zn={name:"emscripten::val",fromWireType:x=>{var C=vr(x);return qr(x),C},toWireType:(x,C)=>Rr(C),Cb:En,readValueFromPointer:jn,Db:null};function ea(x){return yr(x>>>0,Zn)}var Bs=(x,C)=>{switch(C){case 4:return function(Y){return this.fromWireType(fe()[Y>>>2>>>0])};case 8:return function(Y){return this.fromWireType(De()[Y>>>3>>>
20])};default:throw new TypeError(`invalid float width (${C}): ${x}`)}};function xs(x,C,Y){Y>>>=0,yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:K=>K,toWireType:(K,ee)=>ee,Cb:En,readValueFromPointer:Bs(C,Y),Db:null})}function Es(x,C,Y,K,ee){if(x>>>=0,Y>>>=0,C=rr(C>>>0),ee===-1&&(ee=4294967295),ee=Qe=>Qe,K===0){var he=32-8*Y;ee=Qe=>Qe<<he>>>he}var Le=C.includes("unsigned")?function(Qe,ot){return ot>>>0}:function(Qe,ot){return ot};yr(x,{name:C,fromWireType:ee,toWireType:Le,Cb:En,readValueFromPointer:ln(C,Y,K!==0),Db:null})}function _n(x,C,Y){function K(he){var Le=oe()[he>>>2>>>0];return he=oe()[he+4>>>2>>>0],new ee(ge().buffer,he,Le)}var ee=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][C];yr(x>>>=0,{name:Y=rr(Y>>>0),fromWireType:K,Cb:En,readValueFromPointer:K},{Sb:!0})}function wn(x,C){yr(x>>>=0,{name:C=rr(C>>>0),fromWireType:function(Y){for(var K,ee=oe()[Y>>>2>>>0],he=Y+4,Le=he,Qe=0;Qe<=ee;++Qe){var ot=he+Qe;Qe!=ee&&q()[ot>>>0]!=0||(Le=Er(Le,ot-Le),K===void 0?K=Le:(K+="\0",K+=Le),Le=ot+1)}return Vn(Y),K},toWireType:function(Y,K){K instanceof ArrayBuffer&&(K=new Uint8Array(K));var ee=typeof K=="string";if(!(ee||K instanceof Uint8Array||K instanceof Uint8ClampedArray||K instanceof Int8Array))throw new lt("Cannot pass non-string to std::string");var he=ee?pr(K):K.length,Le=Ba(4+he+1),Qe=Le+4;if(oe()[Le>>>2>>>0]=he,ee)Ft(K,Qe,he+1);else if(ee)for(ee=0;ee<he;++ee){var ot=K.charCodeAt(ee);if(255<ot)throw Vn(Le),new lt("String has UTF-16 code units that do not fit in 8 bits");q()[Qe+ee>>>0]=ot}else for(ee=0;ee<he;++ee)q()[Qe+ee>>>0]=K[ee];return Y!==null&&Y.push(Vn,Le),Le},Cb:En,readValueFromPointer:jn,Db(Y){Vn(Y)}})}var Ke=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Ze=(x,C)=>{for(var Y=x>>1,K=Y+C/2;!(Y>=K)&&U()[Y>>>0];)++Y;if(32<(Y<<=1)-x&&Ke)return Ke.decode(q().slice(x,Y));for(Y="",K=0;!(K>=C/2);++K){var ee=V()[x+2*K>>>1>>>0];if(ee==0)break;Y+=String.fromCharCode(ee)}return Y},ft=(x,C,Y)=>{if(Y??=2147483647,2>Y)return 0;var K=C;Y=(Y-=2)<2*x.length?Y/2:x.length;for(var ee=0;ee<Y;++ee){var he=x.charCodeAt(ee);V()[C>>>1>>>0]=he,C+=2}return V()[C>>>1>>>0]=0,C-K},Dr=x=>2*x.length,ta=(x,C)=>{for(var Y=0,K="";!(Y>=C/4);){var ee=N()[x+4*Y>>>2>>>0];if(ee==0)break;++Y,65536<=ee?(ee-=65536,K+=String.fromCharCode(55296|ee>>10,56320|1023&ee)):K+=String.fromCharCode(ee)}return K},Ds=(x,C,Y)=>{if(C>>>=0,Y??=2147483647,4>Y)return 0;var K=C;Y=K+Y-4;for(var ee=0;ee<x.length;++ee){var he=x.charCodeAt(ee);if(55296<=he&&57343>=he&&(he=65536+((1023&he)<<10)|1023&x.charCodeAt(++ee)),N()[C>>>2>>>0]=he,(C+=4)+4>Y)break}return N()[C>>>2>>>0]=0,C-K},ra=x=>{for(var C=0,Y=0;Y<x.length;++Y){var K=x.charCodeAt(Y);55296<=K&&57343>=K&&++Y,C+=4}return C};function ii(x,C,Y){if(x>>>=0,C>>>=0,Y=rr(Y>>>=0),C===2)var K=Ze,ee=ft,he=Dr,Le=Qe=>U()[Qe>>>1>>>0];else C===4&&(K=ta,ee=Ds,he=ra,Le=Qe=>oe()[Qe>>>2>>>0]);yr(x,{name:Y,fromWireType:Qe=>{for(var ot,wt=oe()[Qe>>>2>>>0],Lt=Qe+4,sr=0;sr<=wt;++sr){var mr=Qe+4+sr*C;sr!=wt&&Le(mr)!=0||(Lt=K(Lt,mr-Lt),ot===void 0?ot=Lt:(ot+="\0",ot+=Lt),Lt=mr+C)}return Vn(Qe),ot},toWireType:(Qe,ot)=>{if(typeof ot!="string")throw new lt(`Cannot pass non-string to C++ string type ${Y}`);var wt=he(ot),Lt=Ba(4+wt+C);return oe()[Lt>>>2>>>0]=wt/C,ee(ot,Lt+4,wt+C),Qe!==null&&Qe.push(Vn,Lt),Lt},Cb:En,readValueFromPointer:jn,Db(Qe){Vn(Qe)}})}function ye(x,C){yr(x>>>=0,{Tb:!0,name:C=rr(C>>>0),Cb:0,fromWireType:()=>{},toWireType:()=>{}})}function O(x){la(x>>>0,!i,1,!a,131072,!1),hn()}var te=x=>{if(!re)try{if(x(),!(0<He))try{o?Cs(b):We(b)}catch(C){C instanceof ke||C=="unwind"||A(0,C)}}catch(C){C instanceof ke||C=="unwind"||A(0,C)}};function de(x){x>>>=0,typeof Atomics.jc=="function"&&(Atomics.jc(N(),x>>>2,x).value.then(pe),x+=128,Atomics.store(N(),x>>>2,1))}var pe=()=>{var x=va();x&&(de(x),te(Ut))};function xe(x,C){(x>>>=0)==C>>>0?setTimeout(pe):o?postMessage({Gb:x,Bb:"checkMailbox"}):(x=Vt[x])&&x.postMessage({Bb:"checkMailbox"})}var Fe=[];function ct(x,C,Y,K,ee){for(C>>>=0,K/=2,Fe.length=K,Y=ee>>>0>>>3,ee=0;ee<K;ee++)Fe[ee]=R[Y+2*ee]?R[Y+2*ee+1]:De()[Y+2*ee+1>>>0];return(C?ve[C]:Kn[x])(...Fe)}var ut=()=>{He=0};function pt(x){x>>>=0,o?postMessage({Bb:"cleanupThread",hc:x}):tn(Vt[x])}function st(x){}var Xt=(x,C)=>{var Y=kr[x];if(Y===void 0)throw x=ia(x),Y=rr(x),Vn(x),new lt(`${C} has unknown type ${Y}`);return Y},jt=(x,C,Y)=>{var K=[];return x=x.toWireType(K,Y),K.length&&(oe()[C>>>2>>>0]=Rr(K)),x};function Or(x,C,Y){return C>>>=0,Y>>>=0,x=vr(x>>>0),C=Xt(C,"emval::as"),jt(C,Y,x)}function un(x,C){return C>>>=0,x=vr(x>>>0),(C=Xt(C,"emval::as")).toWireType(null,x)}var gr=x=>{try{x()}catch(C){Se(C)}}
2,Ar=0,Br=null,Dn=0,Un=[],cn={},Jn={},Yr=0,Wr=null,yn=[];function Wn(x){return(function(C){if(!re){if(Ar===0){var Y=!1,K=!1;C((ee=0)=>{if(!re&&(Dn=ee,Y=!0,K)){Ar=2,gr(()=>Na(Br)),typeof MainLoop<"u"&&MainLoop.Pb&&MainLoop.resume(),ee=!1;try{var he=(function(){var ot=N()[Br+8>>>2>>>0];return ot=vt[Jn[ot]],--He,ot()})()}catch(ot){he=ot,ee=!0}var Le=!1;if(!Br){var Qe=Wr;Qe&&(Wr=null,(ee?Qe.reject:Qe.resolve)(he),Le=!0)}if(ee&&!Le)throw he}}),K=!0,Y||(Ar=1,Br=(function(){var ee=Ba(65548),he=ee+12;oe()[ee>>>2>>>0]=he,oe()[ee+4>>>2>>>0]=he+65536,he=Un[0];var Le=cn[he];return Le===void 0&&(Le=Yr++,cn[he]=Le,Jn[Le]=he),he=Le,N()[ee+8>>>2>>>0]=he,ee})(),typeof MainLoop<"u"&&MainLoop.Pb&&MainLoop.pause(),gr(()=>Ya(Br)))}else Ar===2?(Ar=0,gr(ja),Vn(Br),Br=null,yn.forEach(te)):Se(`invalid state: ${Ar}`);return Dn}})(C=>{x().then(C)})}function gs(x){return x>>>=0,Wn(async()=>{var C=await vr(x);return Rr(C)})}var Xr=[];function es(x,C,Y,K){return Y>>>=0,K>>>=0,(x=Xr[x>>>0])(null,C=vr(C>>>0),Y,K)}var dn={},Nr=x=>{var C=dn[x];return C===void 0?rr(x):C};function rn(x,C,Y,K,ee){return Y>>>=0,K>>>=0,ee>>>=0,(x=Xr[x>>>0])(C=vr(C>>>0),C[Y=Nr(Y)],K,ee)}var zr=()=>typeof globalThis=="object"?globalThis:Function("return this")();function zn(x){return(x>>>=0)==0?Rr(zr()):(x=Nr(x),Rr(zr()[x]))}var wa=x=>{var C=Xr.length;return Xr.push(x),C},Is=(x,C)=>{for(var Y=Array(x),K=0;K<x;++K)Y[K]=Xt(oe()[C+4*K>>>2>>>0],"parameter "+K);return Y},ao=(x,C)=>Object.defineProperty(C,"name",{value:x});function Yo(x,C,Y){var K=(C=Is(x,C>>>0)).shift();x--;var ee=`return function (obj, func, destructorsRef, args) {
3`,he=0,Le=[];Y===0&&Le.push("obj");for(var Qe=["retType"],ot=[K],wt=0;wt<x;++wt)Le.push("arg"+wt),Qe.push("argType"+wt),ot.push(C[wt]),ee+=`  var arg${wt} = argType${wt}.readValueFromPointer(args${he?"+"+he:""});
4`,he+=C[wt].Cb;return ee+=`  var rv = ${Y===1?"new func":"func.call"}(${Le.join(", ")});
5`,K.Tb||(Qe.push("emval_returnValue"),ot.push(jt),ee+=`  return emval_returnValue(retType, destructorsRef, rv);
6`),Qe.push(ee+`};
7`),x=(function(Lt){var sr=Function;if(!(sr instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof sr} which is not a function`);var mr=ao(sr.name||"unknownFunctionName",function(){});return mr.prototype=sr.prototype,mr=new mr,(Lt=sr.apply(mr,Lt))instanceof Object?Lt:mr})(Qe)(...ot),Y=`methodCaller<(${C.map(Lt=>Lt.name).join(", ")}) => ${K.name}>`,wa(ao(Y,x))}function No(x){return x=Nr(x>>>0),Rr(n[x])}function io(x,C){return C>>>=0,x=vr(x>>>0),C=vr(C),Rr(x[C])}function jo(x){9<(x>>>=0)&&(fn[x+1]+=1)}function ya(){return Rr([])}function Uo(x){x=vr(x>>>0);for(var C=Array(x.length),Y=0;Y<x.length;Y++)C[Y]=x[Y];return Rr(C)}function Wo(x){return Rr(Nr(x>>>0))}function Vo(){return Rr({})}function Qo(x){for(var C=vr(x>>>=0);C.length;){var Y=C.pop();C.pop()(Y)}qr(x)}function Ho(x,C,Y){C>>>=0,Y>>>=0,x=vr(x>>>0),C=vr(C),Y=vr(Y),x[C]=Y}function ba(x,C){return C>>>=0,x=(x=Xt(x>>>0,"_emval_take_value")).readValueFromPointer(C),Rr(x)}function oo(x,C){x=-9007199254740992>x||9007199254740992<x?NaN:Number(x),C>>>=0,x=new Date(1e3*x),N()[C>>>2>>>0]=x.getUTCSeconds(),N()[C+4>>>2>>>0]=x.getUTCMinutes(),N()[C+8>>>2>>>0]=x.getUTCHours(),N()[C+12>>>2>>>0]=x.getUTCDate(),N()[C+16>>>2>>>0]=x.getUTCMonth(),N()[C+20>>>2>>>0]=x.getUTCFullYear()-1900,N()[C+24>>>2>>>0]=x.getUTCDay(),x=(x.getTime()-Date.UTC(x.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,N()[C+28>>>2>>>0]=x}var oi=x=>x%4==0&&(x%100!=0||x%400==0),li=[0,31,60,91,121,152,182,213,244,274,305,335],lo=[0,31,59,90,120,151,181,212,243,273,304,334];function Ko(x,C){x=-9007199254740992>x||9007199254740992<x?NaN:Number(x),C>>>=0,x=new Date(1e3*x),N()[C>>>2>>>0]=x.getSeconds(),N()[C+4>>>2>>>0]=x.getMinutes(),N()[C+8>>>2>>>0]=x.getHours(),N()[C+12>>>2>>>0]=x.getDate(),N()[C+16>>>2>>>0]=x.getMonth(),N()[C+20>>>2>>>0]=x.getFullYear()-1900,N()[C+24>>>2>>>0]=x.getDay();var Y=(oi(x.getFullYear())?li:lo)[x.getMonth()]+x.getDate()-1|0;N()[C+28>>>2>>>0]=Y,N()[C+36>>>2>>>0]=-60*x.getTimezoneOffset(),Y=new Date(x.getFullYear(),6,1).getTimezoneOffset();var K=new Date(x.getFullYear(),0,1).getTimezoneOffset();x=0|(Y!=K&&x.getTimezoneOffset()==Math.min(K,Y)),N()[C+32>>>2>>>0]=x}function ui(x){x>>>=0;var C=new Date(N()[x+20>>>2>>>0]+1900,N()[x+16>>>2>>>0],N()[x+12>>>2>>>0],N()[x+8>>>2>>>0],N()[x+4>>>2>>>0],N()[x>>>2>>>0],0),Y=N()[x+32>>>2>>>0],K=C.getTimezoneOffset(),ee=new Date(C.getFullYear(),6,1).getTimezoneOffset(),he=new Date(C.getFullYear(),0,1).getTimezoneOffset(),Le=Math.min(he,ee);return 0>Y?N()[x+32>>>2>>>
70]=+(ee!=he&&Le==K):0<Y!=(Le==K)&&(ee=Math.max(he,ee),C.setTime(C.getTime()+6e4*((0<Y?Le:ee)-K))),N()[x+24>>>2>>>0]=C.getDay(),Y=(oi(C.getFullYear())?li:lo)[C.getMonth()]+C.getDate()-1|0,N()[x+28>>>2>>>0]=Y,N()[x>>>2>>>0]=C.getSeconds(),N()[x+4>>>2>>>0]=C.getMinutes(),N()[x+8>>>2>>>0]=C.getHours(),N()[x+12>>>2>>>0]=C.getDate(),N()[x+16>>>2>>>0]=C.getMonth(),N()[x+20>>>2>>>0]=C.getYear(),x=C.getTime(),BigInt(isNaN(x)?-1:x/1e3)}function ci(x,C,Y,K,ee,he,Le){return o?dt(16,1,x,C,Y,K,ee,he,Le):-52}function na(x,C,Y,K,ee,he){if(o)return dt(17,1,x,C,Y,K,ee,he)}var sa={},uo=()=>performance.timeOrigin+performance.now();function di(x,C){if(o)return dt(18,1,x,C);if(sa[x]&&(clearTimeout(sa[x].id),delete sa[x]),!C)return 0;var Y=setTimeout(()=>{delete sa[x],te(()=>Pi(x,performance.timeOrigin+performance.now()))},C);return sa[x]={id:Y,qc:C},0}function qo(x,C,Y,K){x>>>=0,C>>>=0,Y>>>=0,K>>>=0;var ee=new Date().getFullYear(),he=new Date(ee,0,1).getTimezoneOffset();ee=new Date(ee,6,1).getTimezoneOffset();var Le=Math.max(he,ee);oe()[x>>>2>>>0]=60*Le,N()[C>>>2>>>0]=+(he!=ee),x=(C=Qe=>{var ot=Math.abs(Qe);return`UTC${0<=Qe?"-":"+"}${String(Math.floor(ot/60)).padStart(2,"0")}${String(ot%60).padStart(2,"0")}`})(he),C=C(ee),ee<he?(Ft(x,Y,17),Ft(C,K,17)):(Ft(x,K,17),Ft(C,Y,17))}var co=()=>Date.now();function po(x,C,Y){return 0<=x&&3>=x?(x===0?x=Date.now():x=performance.timeOrigin+performance.now(),R[Y>>>0>>>3]=BigInt(Math.round(1e6*x)),0):28}var Oa=[],pi=(x,C)=>{Oa.length=0;for(var Y;Y=q()[x++>>>0];){var K=Y!=105;C+=(K&=Y!=112)&&C%8?4:0,Oa.push(Y==112?oe()[C>>>2>>>0]:Y==106?R[C>>>3]:Y==105?N()[C>>>2>>>0]:De()[C>>>3>>>0]),C+=K?8:4}return Oa};function go(x,C,Y){return x>>>=0,C=pi(C>>>0,Y>>>0),ve[x](...C)}function gi(x,C,Y){return x>>>=0,C=pi(C>>>0,Y>>>0),ve[x](...C)}var Xo=()=>{};function Zo(x,C){return P(Er(x>>>0,C>>>0))}var Jo=()=>{throw He+=1,"unwind"};function el(){return 4294901760}var Ts=()=>navigator.hardwareConcurrency;function Ga(){return Se("Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER"),0}function Ai(x){x>>>=0;var C=q().length;if(x<=C||4294901760<x)return!1;for(var Y=1;4>=Y;Y*=2){var K=C*(1+.2/Y);K=Math.min(K,x+100663296);e:{K=(Math.min(4294901760,65536*Math.ceil(Math.max(x,K)/65536))-_.buffer.byteLength+65535)/65536|0;try{_.grow(K),Me();var ee=1;break e}catch{}ee=void 0}if(ee)return!0}return!1}var za=()=>(Se("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER"),0),As={},hi=x=>{x.forEach(C=>{za()})};function tl(){var x=Error().stack.toString().split(`
8`);return x[0]=="Error"&&x.shift(),hi(x),As.Lb=za(),As.cc=x,As.Lb}function Pa(x,C,Y){if(x>>>=0,C>>>=0,As.Lb==x)var K=As.cc;else(K=Error().stack.toString().split(`
9`))[0]=="Error"&&K.shift(),hi(K);for(var ee=3;K[ee]&&za()!=x;)++ee;for(x=0;x<Y&&K[x+ee];++x)N()[C+4*x>>>2>>>0]=za();return x}var aa,Fa={},La=()=>{if(!aa){var x,C={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"};for(x in Fa)Fa[x]===void 0?delete C[x]:C[x]=Fa[x];var Y=[];for(x in C)Y.push(`${x}=${C[x]}`);aa=Y}return aa};function hs(x,C){if(o)return dt(19,1,x,C);x>>>=0,C>>>=0;var Y=0;return La().forEach((K,ee)=>{var he=C+Y;for(ee=oe()[x+4*ee>>>2>>>0]=he,he=0;he<K.length;++he)ge()[ee++>>>0]=K.charCodeAt(he);ge()[ee>>>0]=0,Y+=K.length+1}),0}function mi(x,C){if(o)return dt(20,1,x,C);x>>>=0,C>>>=0;var Y=La();oe()[x>>>2>>>0]=Y.length;var K=0;return Y.forEach(ee=>K+=ee.length+1),oe()[C>>>2>>>0]=K,0}function Ao(x){return o?dt(21,1,x):52}function fi(x,C,Y,K){return o?dt(22,1,x,C,Y,K):52}function rl(x,C,Y,K){return o?dt(23,1,x,C,Y,K):70}var ho=[null,[],[]];function _i(x,C,Y,K){if(o)return dt(24,1,x,C,Y,K);C>>>=0,Y>>>=0,K>>>=0;for(var ee=0,he=0;he<Y;he++){var Le=oe()[C>>>2>>>0],Qe=oe()[C+4>>>2>>>0];C+=8;for(var ot=0;ot<Qe;ot++){var wt=q()[Le+ot>>>0],Lt=ho[x];wt===0||wt===10?((x===1?h:P)(kt(Lt)),Lt.length=0):Lt.push(wt)}ee+=Qe}return oe()[K>>>2>>>0]=ee,0}o||(function(){for(var x=n.numThreads-1;x--;)On();Ue.unshift(()=>{we++,(function(C){o?C():Promise.all(yt.map(ar)).then(C)})(()=>Ce())})})();for(var wi=Array(256),Ma=0;256>Ma;++Ma)wi[Ma]=String.fromCharCode(Ma);
9Ot=wi,lt=n.BindingError=class extends Error{constructor(x){super(x),this.name="BindingError"}},n.InternalError=class extends Error{constructor(x){super(x),this.name="InternalError"}},fn.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=()=>fn.length/2-5-Kr.length;var vt,Kn=[At,Xe,mn,us,cs,ds,S,ie,X,ae,le,_e,Oe,gt,Et,at,ci,na,di,hs,mi,Ao,fi,rl,_i];(async function(){function x(K,ee){return vt=K.exports,vt=(function(){var he=vt,Le={};for(let[Qe,ot]of Object.entries(he))Le[Qe]=typeof ot=="function"?(...wt)=>{Un.push(Qe);try{return ot(...wt)}finally{re||(Un.pop(),Br&&Ar===1&&Un.length===0&&(Ar=0,He+=1,gr(vi),typeof Fibers<"u"&&Fibers.rc()))}}:ot;return Le})(),vt=(function(){var he=vt,Le=ot=>wt=>ot(wt)>>>0,Qe=ot=>()=>ot()>>>0;return(he=Object.assign({},he)).Da=Le(he.Da),he.fb=Qe(he.fb),he.hb=Le(he.hb),he.tb=Le(he.tb),he.ub=Qe(he.ub),he.__cxa_get_exception_ptr=Le(he.__cxa_get_exception_ptr),he})(),hr.push(vt.ib),w=ee,Ce(),vt}we++;var C=ze();if(n.instantiateWasm)return new Promise(K=>{n.instantiateWasm(C,(ee,he)=>{x(ee,he),K(ee.exports)})});if(o)return new Promise(K=>{Ie=ee=>{var he=new WebAssembly.Instance(ee,ze());K(x(he,ee))}});H??=n.locateFile?n.locateFile?n.locateFile("ort-wasm-simd-threaded.jsep.wasm",m):m+"ort-wasm-simd-threaded.jsep.wasm":new URL("/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm",self.location.href).href;try{var Y=await(async function(K){var ee=H;if(!ne&&typeof WebAssembly.instantiateStreaming=="function"&&!ce(ee))try{var he=fetch(ee,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(he,K)}
9catch(Le){P(`wasm streaming compile failed: ${Le}`),P("falling back to ArrayBuffer instantiation")}return(async function(Le,Qe){try{var ot=await(async function(wt){if(!ne)try{var Lt=await d(wt);return new Uint8Array(Lt)}catch{}if(wt==H&&ne)wt=new Uint8Array(ne);else{if(!c)throw"both async and sync fetching of the wasm failed";wt=c(wt)}return wt})(Le);return await WebAssembly.instantiate(ot,Qe)}catch(wt){P(`failed to asynchronously prepare wasm: ${wt}`),Se(wt)}})(ee,K)})(C);return x(Y.instance,Y.module)}catch(K){return r(K),Promise.reject(K)}})();var ia=x=>(ia=vt.Da)(x),oa=()=>(oa=vt.Ea)();n._OrtInit=(x,C)=>(n._OrtInit=vt.Fa)(x,C),n._OrtGetLastError=(x,C)=>(n._OrtGetLastError=vt.Ga)(x,C),n._OrtCreateSessionOptions=(x,C,Y,K,ee,he,Le,Qe,ot,wt)=>(n._OrtCreateSessionOptions=vt.Ha)(x,C,Y,K,ee,he,Le,Qe,ot,wt),n._OrtAppendExecutionProvider=(x,C,Y,K,ee)=>(n._OrtAppendExecutionProvider=vt.Ia)(x,C,Y,K,ee),n._OrtAddFreeDimensionOverride=(x,C,Y)=>(n._OrtAddFreeDimensionOverride=vt.Ja)(x,C,Y),n._OrtAddSessionConfigEntry=(x,C,Y)=>(n._OrtAddSessionConfigEntry=vt.Ka)(x,C,Y),n._OrtReleaseSessionOptions=x=>(n._OrtReleaseSessionOptions=vt.La)(x),n._OrtCreateSession=(x,C,Y)=>(n._OrtCreateSession=vt.Ma)(x,C,Y),n._OrtReleaseSession=x=>(n._OrtReleaseSession=vt.Na)(x),n._OrtGetInputOutputCount=(x,C,Y)=>(n._OrtGetInputOutputCount=vt.Oa)(x,C,Y),n._OrtGetInputOutputMetadata=(x,C,Y,K)=>(n._OrtGetInputOutputMetadata=vt.Pa)(x,C,Y,K),n._OrtFree=x=>(n._OrtFree=vt.Qa)(x),n._OrtCreateTensor=(x,C,Y,K,ee,he)=>(n._OrtCreateTensor=vt.Ra)(x,C,Y,K,ee,he),n._OrtGetTensorData=(x,C,Y,K,ee)=>(n._OrtGetTensorData=vt.Sa)(x,C,Y,K,ee),n._OrtReleaseTensor=x=>(n._OrtReleaseTensor=vt.Ta)(x),n._OrtCreateRunOptions=(x,C,Y,K)=>(n._OrtCreateRunOptions=vt.Ua)(x,C,Y,K),n._OrtAddRunConfigEntry=(x,C,Y)=>(n._OrtAddRunConfigEntry=vt.Va)(x,C,Y),n._OrtReleaseRunOptions=x=>(n._OrtReleaseRunOptions=vt.Wa)(x),n._OrtCreateBinding=x=>(n._OrtCreateBinding=vt.Xa)(x),n._OrtBindInput=(x,C,Y)=>(n._OrtBindInput=vt.Ya)(x,C,Y),n._OrtBindOutput=(x,C,Y,K)=>(n._OrtBindOutput=vt.Za)(x,C,Y,K),n._OrtClearBoundOutputs=x=>(n._OrtClearBoundOutputs=vt._a)(x),n._OrtReleaseBinding=x=>(n._OrtReleaseBinding=vt.$a)(x),n._OrtRunWithBinding=(x,C,Y,K,ee)=>(n._OrtRunWithBinding=vt.ab)(x,C,Y,K,ee),n._OrtRun=(x,C,Y,K,ee,he,Le,Qe)=>(n._OrtRun=vt.bb)(x,C,Y,K,ee,he,Le,Qe),n._OrtEndProfiling=x=>(n._OrtEndProfiling=vt.cb)(x),n._JsepOutput=(x,C,Y)=>(n._JsepOutput=vt.db)(x,C,Y),n._JsepGetNodeName=x=>(n._JsepGetNodeName=vt.eb)(x);var va=()=>(va=vt.fb)(),Vn=n._free=x=>(Vn=n._free=vt.gb)(x),Ba=n._malloc=x=>(Ba=n._malloc=vt.hb)(x),la=(x,C,Y,K,ee,he)=>(la=vt.kb)(x,C,Y,K,ee,he),yi=()=>(yi=vt.lb)(),bi=(x,C,Y,K,ee)=>(bi=vt.mb)(x,C,Y,K,ee),Zt=x=>(Zt=vt.nb)(x),Cs=x=>(Cs=vt.ob)(x),Pi=(x,C)=>(Pi=vt.pb)(x,C),Ut=()=>(Ut=vt.qb)(),Ra=(x,C)=>(Ra=vt.rb)(x,C),Wt=x=>(Wt=vt.sb)(x),xa=x=>(xa=vt.tb)(x),Ea=()=>(Ea=vt.ub)(),Mi=n.dynCall_ii=(x,C)=>(Mi=n.dynCall_ii=vt.vb)(x,C),Ya=x=>(Ya=vt.wb)(x),vi=()=>(vi=vt.xb)(),Na=x=>(Na=vt.yb)(x),ja=()=>(ja=vt.zb)();return n.stackSave=()=>Ea(),n.stackRestore=x=>Wt(x),n.stackAlloc=x=>xa(x),n.setValue=function(x,C,Y="i8"){switch(Y.endsWith("*")&&(Y="*"),Y){case"i1":case"i8":ge()[x>>>0]=C;break;case"i16":V()[x>>>1>>>0]=C;break;case"i32":N()[x>>>2>>>0]=C;break;case"i64":R[x>>>3]=BigInt(C);break;case"float":fe()[x>>>2>>>0]=C;break;case"double":De()[x>>>3>>>0]=C;break;case"*":oe()[x>>>2>>>0]=C;break;default:Se(`invalid type for setValue: ${Y}`)}},n.getValue=function(x,C="i8"){switch(C.endsWith("*")&&(C="*"),C){case"i1":case"i8":return ge()[x>>>0];case"i16":return V()[x>>>1>>>0];case"i32":return N()[x>>>2>>>0];case"i64":return R[x>>>3];case"float":return fe()[x>>>2>>>0];case"double":return De()[x>>>3>>>0];case"*":return oe()[x>>>2>>>0];default:Se(`invalid type for getValue: ${C}`)}},n.UTF8ToString=Er,n.stringToUTF8=Ft,n.lengthBytesUTF8=pr,(function x(){if(0<we)be=x;else if(o)t(n),se();else{for(;0<Ue.length;)Ue.shift()(n);0<we?be=x:(n.calledRun=!0,re||(se(),t(n)))}})(),n.PTR_SIZE=4,s}),Df=Ap,If=globalThis.self?.name?.startsWith("em-pthread"),If&&Ap()}),hp,mp,Tf,rs,Cf,Ku,$f,Sf,fp,kf,_p,Of,wp,Gf,yp=Je(()=>{cp(),hp=typeof location>"u"?void 0:location.origin,mp=self.location.href>"file:"&&self.location.href<"file;",Tf=()=>{{if(mp){let e=URL;return new URL(new e("ort.bundle.min.mjs",self.location.href).href,hp).href}return self.location.href}},rs=Tf(),Cf=()=>{if(rs&&!rs.startsWith("blob:"))return rs.substring(0,rs.lastIndexOf("/")+1)},Ku=(e,t)=>{try{let r=t??rs;return(r?new URL(e,r):new URL(e)).origin===hp}catch{return!1}},$f=(e,t)=>{let r=t??rs;try{return(r?new URL(e,r):new URL(e)).href}catch{return}},Sf=(e,t)=>
vendor: 4,194 bytes, line 9
9`${t??"./"}${e}`,fp=async e=>{let t=await(await fetch(e,{credentials:"same-origin"})).blob();return URL.createObjectURL(t)},kf=async e=>(await import(e)).default,_p=(bk(),_l(Bf)).default,Of=async()=>{if(!rs)throw new Error("Failed to load proxy worker: cannot determine the script source URL.");if(Ku(rs))return[void 0,_p()];let e=await fp(rs);return[e,_p(e)]},wp=(Pk(),_l(Ef)).default,Gf=async(e,t,r)=>{if(!e&&!t&&wp&&rs&&Ku(rs))return[void 0,wp];{let n="ort-wasm-simd-threaded.jsep.mjs",s=e??$f(n,t),a=r&&s&&!Ku(s,t),i=a?await fp(s):s??Sf(n,t);return[a?i:void 0,await kf(i)]}}}),bp,qu,Pl,Pp,zf,Ff,Lf,Mp,Fr,Ci=Je(()=>{yp(),qu=!1,Pl=!1,Pp=!1,zf=()=>{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}},Ff=()=>{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}},Lf=()=>{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}},Mp=async e=>{if(qu)return Promise.resolve();if(Pl)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(Pp)throw new Error("previous call to 'initializeWebAssembly()' failed.");Pl=!0;let t=e.initTimeout,r=e.numThreads;if(e.simd!==!1){if(e.simd==="relaxed"){if(!Lf())throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!Ff())throw new Error("WebAssembly SIMD is not supported in the current environment.")}let n=zf();r>1&&!n&&(typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+r+", 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."),e.numThreads=r=1);let s=e.wasmPaths,a=typeof s=="string"?s:void 0,i=s?.mjs,o=i?.href??i,l=s?.wasm,u=l?.href??l,p=e.wasmBinary,[d,c]=await Gf(o,a,r>1),g=!1,A=[];if(t>0&&A.push(new Promise(m=>{setTimeout(()=>{g=!0,m()},t)})),A.push(new Promise((m,B)=>{let f={numThreads:r};if(p)f.wasmBinary=p;else if(u||a)f.locateFile=h=>u??a+h;else if(o&&o.indexOf("blob:")!==0)f.locateFile=h=>new URL(h,o).href;else if(d){let h=Cf();h&&(f.locateFile=P=>h+P)}c(f).then(h=>{Pl=!1,qu=!0,bp=h,m(),d&&URL.revokeObjectURL(d)},h=>{Pl=!1,Pp=!0,B(h)})})),await Promise.race(A),g)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Fr=()=>{if(qu&&bp)return bp;throw new Error("WebAssembly is not initialized yet.")}}),zs,Xu,$r,vp=Je(()=>{Ci(),zs=(e,t)=>{let r=Fr(),n=r.lengthBytesUTF8(e)+1,s=r._malloc(n);return r.stringToUTF8(e,s,n),t.push(s),s},Xu=(e,t,r,n)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([s,a])=>{let i=t?t+s:s;if(typeof a=="object")Xu(a,i+".",r,n);else if(typeof a=="string"||typeof a=="number")n(i,a.toString());else if(typeof a=="boolean")n(i,a?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof a}`)})},$r=e=>{let t=Fr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetLastError(s,s+n);let a=Number(t.getValue(s,n===4?"i32":"i64")),i=t.getValue(s+n,"*"),o=i?t.UTF8ToString(i):"";throw new Error(`${e} ERROR_CODE: ${a}, ERROR_MESSAGE: ${o}`)}finally{t.stackRestore(r)}}}),Rf,Mk=Je(()=>{Ci(),vp(),Rf=e=>{let t=Fr(),r=0,n=[],s=e||{};try{if(e?.logSeverityLevel===void 0)s.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)s.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not val
9id: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(s.terminate=!1);let a=0;return e?.tag!==void 0&&(a=zs(e.tag,n)),r=t._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,a),r===0&&$r("Can't create run options."),e?.extra!==void 0&&Xu(e.extra,"",new WeakSet,(i,o)=>{let l=zs(i,n),u=zs(o,n);t._OrtAddRunConfigEntry(r,l,u)!==0&&$r(`Can't set a run config entry: ${i} - ${o}.`)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseRunOptions(r),n.forEach(i=>t._free(i)),a}}}),Yf,Nf,jf,Ml,Uf,Wf,vk=Je(()=>{Ci(),vp(),Yf=e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}},Nf=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},jf=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},Ml=(e,t,r,n)=>
vendor: 10,993 bytes, line 9
9{let s=zs(t,n),a=zs(r,n);Fr()._OrtAddSessionConfigEntry(e,s,a)!==0&&$r(`Can't set a session config entry: ${t} - ${r}.`)},Uf=async(e,t,r)=>{for(let n of t){let s=typeof n=="string"?n:n.name,a=[];switch(s){case"webnn":if(s="WEBNN",typeof n!="string"){let p=n?.deviceType;p&&Ml(e,"deviceType",p,r)}break;case"webgpu":if(s="JS",typeof n!="string"){let p=n;if(p?.preferredLayout){if(p.preferredLayout!=="NCHW"&&p.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${p.preferredLayout}`);Ml(e,"preferredLayout",p.preferredLayout,r)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${s}`)}let i=zs(s,r),o=a.length,l=0,u=0;if(o>0){l=Fr()._malloc(o*Fr().PTR_SIZE),r.push(l),u=Fr()._malloc(o*Fr().PTR_SIZE),r.push(u);for(let p=0;p<o;p++)Fr().setValue(l+p*Fr().PTR_SIZE,a[p][0],"*"),Fr().setValue(u+p*Fr().PTR_SIZE,a[p][1],"*")}await Fr()._OrtAppendExecutionProvider(e,i,l,u,o)!==0&&$r(`Can't append execution provider: ${s}.`)}},Wf=async e=>{let t=Fr(),r=0,n=[],s=e||{};jf(s);try{let a=Yf(s.graphOptimizationLevel??"all"),i=Nf(s.executionMode??"sequential"),o=typeof s.logId=="string"?zs(s.logId,n):0,l=s.logSeverityLevel??2;if(!Number.isInteger(l)||l<0||l>4)throw new Error(`log serverity level is not valid: ${l}`);let u=s.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log verbosity level is not valid: ${u}`);let p=typeof s.optimizedModelFilePath=="string"?zs(s.optimizedModelFilePath,n):0;if(r=t._OrtCreateSessionOptions(a,!!s.enableCpuMemArena,!!s.enableMemPattern,i,!!s.enableProfiling,0,o,l,u,p),r===0&&$r("Can't create session options."),s.executionProviders&&await Uf(r,s.executionProviders,n),s.enableGraphCapture!==void 0){if(typeof s.enableGraphCapture!="boolean")throw new Error(`enableGraphCapture must be a boolean value: ${s.enableGraphCapture}`);Ml(r,"enableGraphCapture",s.enableGraphCapture.toString(),n)}if(s.freeDimensionOverrides)for(let[d,c]of Object.entries(s.freeDimensionOverrides)){if(typeof d!="string")throw new Error(`free dimension override name must be a string: ${d}`);if(typeof c!="number"||!Number.isInteger(c)||c<0)throw new Error(`free dimension override value must be a non-negative integer: ${c}`);let g=zs(d,n);t._OrtAddFreeDimensionOverride(r,g,c)!==0&&$r(`Can't set a free dimension override: ${d} - ${c}.`)}return s.extra!==void 0&&Xu(s.extra,"",new WeakSet,(d,c)=>{Ml(r,d,c,n)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseSessionOptions(r)!==0&&$r("Can't release session options."),n.forEach(i=>t._free(i)),a}}}),Bo,Da,$i,Bp,Zu,xp,Ep,Dp,zt=Je(()=>{Bo=e=>{switch(e){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: ${e}`)}},Da=e=>{switch(e){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: ${e}`)}},$i=(e,t)=>{let r=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],n=typeof t=="number"?t:t.reduce((s,a)=>s*a,1);return r>0?Math.ceil(n*r):void 0},Bp=e=>{switch(e){case"float16":return typeof Float16Array<"u"&&Float16Array.from?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: ${e}`)}},Zu=e=>{switch(e){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: ${e}`)}},xp=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",Ep=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint64"||e==="int8"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",Dp=e=>{switch(e){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: ${e}`)}}}),Ip,Vf=Je(()=>{cp(),Ip=async e=>{if(typeof e=="string"){let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),n=r?parseInt(r,10):0;if(n<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let s=t.body.getReader(),a;try{a=new ArrayBuffer(n)}catch(o){if(o instanceof RangeError){let l=Math.ceil(n/65536);a=new WebAssembly.Memory({initial:l,maximum:l}).buffer}else throw o}let i=0;for(;;){let{done:o,value:l}=await s.read();if(o)break;let u=l.byteLength;new Uint8Array(a,i,u).set(l),i+=u}return new Uint8Array(a,0,n)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}}),Qf,Hf,Kf,qf,Tp,Xf,lr,Ia=Je(()=>{zt(),Qf=["V","I","W","E","F"],Hf=(e,t)=>{console.log(`[${Qf[e]},${new Date().toISOString()}]${t}`)},Tp=(e,t)=>{Kf=e,qf=t},Xf=(e,t)=>{let r=Zu(e),n=Zu(Kf);r>=n&&Hf(r,typeof t=="function"?t():t)},lr=(...e)=>{qf&&Xf(...e)}}),Zf,xo,Te,Ju,Jf,e_,t_,Kt=Je(()=>{Zf=class{static calcMatMulShape(e,t){return e[1]!==t[0]?void 0:[e[0],t[1]]}},xo=class{static calcShape(e,t,r=!1){let n=e.length,s=t.length;if(n===0)return t;if(s===0)return e;let a=Math.max(e.length,t.length),i=new Array(a);if(r){if(n<2||s<2)return;let o=Zf.calcMatMulShape([e[n-2],e[n-1]],[t[s-2],t[s-1]]);if(o===void 0)return;[i[a-2],i[a-1]]=o}for(let o=r?3:1;o<=a;o++){let l=n-o<0?1:e[n-o],u=s-o<0?1:t[s-o];if(l!==u&&l>1&&u>1)return;let p=Math.max(l,u);if(l&&u)i[a-o]=Math.max(l,u);else{if(p>1)return;i[a-o]=0}}return i}static isValidBroadcast(e,t){let r=e.length,n=t.length;if(r>n)return!1;for(let s=1;s<=r;s++)if(e[r-s]!==1&&e[r-s]!==t[n-s])return!1;return!0}},Te=class Xd{static size(t){return Xd.getSizeFromDimensionRange(t,0,t.length)}static convertShape(t,r=4){let n=t.length;if(n===0)return[];let s=new Array(n),a=n-1;for(;a>=0;){if(t[a]%r===0){s[a]=t[a]/r;break}if(r%t[a]!==0)throw new Error("cannot convert shape");s[a]=1,r/=t[a],a--}for(a--;a>=0;a--)s[a]=t[a];return s}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return Xd.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return Xd.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,n){let s=1;for(let a=r;a<n;a++){if(t[a]<0)throw new Error("cannot get valid size from specified dimension range. Most likely the range contains negative values in them.");s*=Number(t[a])}return s}static computeStrides(t){let r=t.length;if(r===0)return[];if(r===1)return[1];let n=new Array(r);n[r-1]=1,n[r-2]=t[r-1];for(let s=r-3;s>=0;--s)n[s]=n[s+1]*t[s+1];return n}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(n=>this.normalizeAxis(n,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(n=>t[n]):t.slice().reverse()}static padShape(t,r){let n=t.length;return t.map((s,a)=>s+r[a]+r[a+n])}static areEqual(t,r){return t.length!==r.length?!1:t.every((n,s)=>n===r[s])}},Ju=class Uu{static adjustPoolAttributes(t,r,n,s,a,i){if(!t&&n.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let o=0;o<r.length-2;o++)o>=n.length?n.push(r[o+2]):n[o]=r[o+2];for(let o=0;o<n.length;o++)if(o<s.length){if(s[o]<0)throw new Error("strides should be greater than or equal to 1")}else s.push(1);for(let o=0;o<n.length;o++)if(o<a.length){if(a[o]<0)throw new Error("dilations should be greater than or equal to 1")}else a.push(1);for(let o=0;o<n.length*2;o++)if(o<i.length){if(i[o]<0)throw new Error("pad should be greater than or equal to 1")}else i.push(0);for(let o=0;o<n.length;o++){if(n[o]<=0)throw new Error("kernel shapes need to be greater than 0");if(i[o]>=n[o]||i[o+n.length]>=n[o])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,n,s,a,i,o){if(o){if(a.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(s.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let l=0;l<t.length-2;l++)Uu.adjustPadAndReturnShape(t[l+(i?1:2)],r[l],n[l],s[l],a,l,l+t.length-2,o)}}static computePoolOutputShape(t,r,n,s,a,i,o){if(r.length<=0)throw new Error("input shape must be of size greater than 0");let l=[r[0],r[1]];return Uu.computeShapeHelper(t,r,l,n,s,a,i,o),l}static computeConvOutputShape(t,r,n,s,a,i,o){if(t.length<=0||r.length<=0)throw new Error("invalid input tensor dims or invalid filter tensor dims");let l=[t[0],r[0]];return Uu.computeShapeHelper(!1,t,l,n,s,a,i,o),l}static computeShapeHelper(t,r,n,s,a,i,o,l){if(t)for(let u=0;u<r.length-2;u++)n.push(1);else for(let u=0;u<r.length-2;u++)n.push(Uu.adjustPadAndReturnShape(r[u+2],s[u],a[u],i[u],o,u,u+r.length-2,l))}static adjustPadAndReturnShape(t,r,n,s,a,i,o,l){let u=n*(s-1)+1;if(l&&l!=="NOTSET")switch(l){case"VALID":return a[i]=0,a[o]=0,Math.floor((t-u)/r+1);case"SAME_LOWER":case"SAME_UPPER":if(n!==1)throw new Error("Dilation not supported for SAME_UPPER or SAME_LOWER");{let p=((t+r-1)/r-1)*r+s-t;return a[i]=Math.floor(l==="SAME_LOWER"?(p+1)/2:p/2),a[o]=p-a[i],Math.floor((t+p-s)/r+1)}default:throw new Error("Unsupported AutoPad type")}else return Math.floor((t+a[i]+a[o]-u)/r+1)}},Jf=class{static getShapeOfGemmResult(e,t,r,n,s){if(e.length!==2||r.length!==2)throw new Error("shape need to be of size 2");let a,i,o;t?(a=e[1],i=e[0]):(a=e[0],i=e[1]);let l=-1;if(n?(o=r[0],l=1):(o=r[1],l=0),r[l]!==i)throw new Error("dimension mismatch");if(a<=0||o<=0||i<=0)throw new Error("invalid shape specified");if(s&&!xo.isValidBroadcast(s,[a,o]))throw new Error("gemm: invalid bias shape for broadcast");return[a,o,i]}},e_=-34028234663852886e22,t_=34028234663852886e22}),Cp,r_=Je(()=>{zt(),Cp=(e,t)=>new(Bp(t))(e)}),$p,Sp,n_,kp,s_,Op,Gp,zp,a_,i_,Bk=Je(()=>{Ia(),$p=(e,t=!0)=>
9{if(e.byteLength%8!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 8 (BigInt).");let r=e.byteLength/8,n=new BigInt64Array(e.buffer,e.byteOffset,r),s=new Int32Array(r);for(let a=0;a<r;a++){let i=n[a];if(i>2147483647n||i<-2147483648n)throw new Error(`Overflow occurred when converting BigInt to Int32 at index ${a}: ${i}`);s[a]=Number(i)}return t?new Uint8Array(s.buffer):s},Sp=(e,t=!0)=>{if(e.byteLength%4!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 4 (Int32).");let r=e.byteLength/4,n=new Int32Array(e.buffer,e.byteOffset,r),s=BigInt64Array.from(n,BigInt);return t?new Uint8Array(s.buffer):s},n_=1,kp=()=>n_++,s_=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),Op=(e,t)=>{let r=s_.get(e);if(!r)throw new Error("Unsupported data type.");return t.length>0?Math.ceil(t.reduce((n,s)=>n*s)*r/8):0},Gp=class{constructor(e){this.shouldConvertInt64toInt32=!1,this.isInt64ToInt32Converted=!1;let{sessionId:t,context:r,tensor:n,dataType:s,shape:a,shouldConvertInt64toInt32:i=!1}=e;this.sessionId=t,this.mlContext=r,this.mlTensor=n,this.dataType=s,this.tensorShape=a,this.shouldConvertInt64toInt32=i}get tensor(){return this.mlTensor}get type(){return this.dataType}get shape(){return this.tensorShape}get byteLength(){return Op(this.dataType,this.tensorShape)}destroy(){lr("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(e){this.mlContext.writeTensor(this.mlTensor,e)}async read(e,t){if(e){let r=await this.mlContext.readTensor(this.mlTensor),n=Sp(new Uint8Array(r));if(t){(t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).set(n);return}else return n.buffer}else return t?this.mlContext.readTensor(this.mlTensor,t):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(e,t,r){return this.mlContext===e&&this.dataType===t&&this.tensorShape.length===r.length&&this.tensorShape.every((n,s)=>n===r[s])}setIsInt64ToInt32Converted(e){this.isInt64ToInt32Converted=e}},zp=class{constructor(e,t){this.tensorManager=e,this.wrapper=t}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(e,t,r,n){let s=t,a=this.tensorManager.getMLContext(e),i=s==="int64"&&!a.opSupportLimits().input.dataTypes.includes("int64");if(i&&(s="int32",lr("verbose",()=>"[WebNN] TensorIdTracker.ensureTensor: convert dataType from int64 to int32")),this.wrapper){if(this.wrapper.canReuseTensor(a,s,r))return this.wrapper.tensor;if(n){if(this.wrapper.byteLength!==Op(s,r))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 o=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(e,s,r,o,!0,!0,i),n&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(e){let t=e;if(this.wrapper)if(this.wrapper.shouldConvertInt64toInt32&&(t=$p(e,!0),this.wrapper.setIsInt64ToInt32Converted(!0)),t.byteLength===this.wrapper.byteLength){this.wrapper.write(t);return}else lr("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor();this.activeUpload?this.activeUpload.set(t):this.activeUpload=new Uint8Array(t)}async download(e){if(this.activeUpload){let t=this.wrapper?.isInt64ToInt32Converted?Sp(this.activeUpload):this.activeUpload;if(e){e instanceof ArrayBuffer?new Uint8Array(e).set(t):new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(t);return}else return t.buffer}if(!this.wrapper)throw new Error("Tensor has not been created.");return e?this.wrapper.read(this.wrapper?.shouldConvertInt64toInt32,e):this.wrapper.read(this.wrapper?.shouldConvertInt64toInt32)}},a_=class{constructor(e){this.backend=e,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(e){let t=this.backend.getMLContext(e);if(!t)throw new Error("MLContext not found for session.");return t}
9reserveTensorId(){let e=kp();return this.tensorTrackersById.set(e,new zp(this)),e}releaseTensorId(e){let t=this.tensorTrackersById.get(e);t&&(this.tensorTrackersById.delete(e),t.tensorWrapper&&this.releaseTensor(t.tensorWrapper))}async ensureTensor(e,t,r,n,s){lr("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${t}, dataType: ${r}, shape: ${n}, copyOld: ${s}}`);let a=this.tensorTrackersById.get(t);if(!a)throw new Error("Tensor not found.");return a.ensureTensor(e,r,n,s)}upload(e,t){let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");r.upload(t)}async download(e,t){lr("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${e}, dstBuffer: ${t?.byteLength}}`);let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");return r.download(t)}releaseTensorsForSession(e){for(let t of this.freeTensors)t.sessionId===e&&t.destroy();this.freeTensors=this.freeTensors.filter(t=>t.sessionId!==e)}registerTensor(e,t,r,n){let s=this.getMLContext(e),a=kp(),i=new Gp({sessionId:e,context:s,tensor:t,dataType:r,shape:n});return this.tensorTrackersById.set(a,new zp(this,i)),this.externalTensors.add(i),a}async getCachedTensor(e,t,r,n,s,a,i=!1){let o=this.getMLContext(e);for(let[u,p]of this.freeTensors.entries())if(p.canReuseTensor(o,t,r)){lr("verbose",()=>`[WebNN] Reusing tensor {dataType: ${t}, shape: ${r}}`);let d=this.freeTensors.splice(u,1)[0];return d.sessionId=e,d}lr("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${t}, shape: ${r}}`);let l=await o.createTensor({dataType:t,shape:r,dimensions:r,usage:n,writable:s,readable:a});return new Gp({sessionId:e,context:o,tensor:l,dataType:t,shape:r,shouldConvertInt64toInt32:i})}releaseTensor(e){this.externalTensors.has(e)&&this.externalTensors.delete(e),this.freeTensors.push(e)}},i_=(...e)=>new a_(...e)}),ec,o_,l_,xk=Je(()=>{zt(),Ci(),r_(),Bk(),Ia(),ec=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),o_=(e,t)=>{if(e===t)return!0;if(e===void 0||t===void 0)return!1;let r=Object.keys(e).sort(),n=Object.keys(t).sort();return r.length===n.length&&r.every((s,a)=>s===n[a]&&e[s]===t[s])},l_=class{constructor(e){this.tensorManager=i_(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.temporaryGraphInputs=[],this.temporarySessionTensorIds=new Map,Tp(e.logLevel,!!e.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw new Error("No active session");return this.activeSessionId}onRunStart(e){lr("verbose",()=>`[WebNN] onRunStart {sessionId: ${e}}`),this.activeSessionId=e}onRunEnd(e){lr("verbose",()=>`[WebNN] onRunEnd {sessionId: ${e}}`);let t=this.temporarySessionTensorIds.get(e);if(t){for(let r of t)lr("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${r}}`),this.tensorManager.releaseTensorId(r);this.temporarySessionTensorIds.delete(e),this.activeSessionId=void 0}}async createMLContext(e){if(e instanceof GPUDevice){let r=this.mlContextCache.findIndex(n=>n.gpuDevice===e);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext(e);return this.mlContextCache.push({gpuDevice:e,mlContext:n}),n}}else if(e===void 0){let r=this.mlContextCache.findIndex(n=>n.options===void 0&&n.gpuDevice===void 0);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:n}),n}}let t=this.mlContextCache.findIndex(r=>o_(r.options,e));if(t!==-1)return this.mlContextCache[t].mlContext;{let r=await navigator.ml.createContext(e);return this.mlContextCache.push({options:e,mlContext:r}),r}}registerMLContext(e,t){this.mlContextBySessionId.set(e,t);let r=this.sessionIdsByMLContext.get(t);r||(r=new Set,this.sessionIdsByMLContext.set(t,r)),r.add(e),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(e,this.temporaryGraphInputs),this.temporaryGraphInputs=[])}onReleaseSession(e){this.sessionGraphInputs.delete(e);let t=this.mlContextBySessionId.get(e);if(!t)return;this.tensorManager.releaseTensorsForSession(e),this.mlContextBySessionId.delete(e);let r=this.sessionIdsByMLContext.get(t);if(r.delete(e),r.size===0){this.sessionIdsByMLContext.delete(t);let n=this.mlContextCache.findIndex(s=>s.mlContext===t);n!==-1&&this.mlContextCache.splice(n,1)}}getMLContext(e){return this.mlContextBySessionId.get(e)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(e){lr("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e)}async ensureTensor(e,t,r,n,s){let a=ec.get(r);if(!a)throw new Error(`Unsupported ONNX data type: ${r}`);return this.tensorManager.ensureTensor(e??this.currentSessionId,t,a,n,s)}async createTemporaryTensor(e,t,r){lr("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${t}, shape: ${r}}`);let n=ec.get(t);if(!n)throw new Error(`Unsupported ONNX data type: ${t}`);let s=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(e,s,n,r,!1);let a=this.temporarySessionTensorIds.get(e);return a?a.push(s):this.temporarySessionTensorIds.set(e,[s]),s}uploadTensor(e,t){if(!Fr().shouldTransferToMLTensor)throw new Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");lr("verbose",()=>`[WebNN] uploadTensor {tensorId: ${e}, data: ${t.byteLength}}`),this.tensorManager.upload(e,t)}async downloadTensor(e,t){return this.tensorManager.download(e,t)}createMLTensorDownloader(e,t){return async()=>{let r=await this.tensorManager.download(e);return Cp(r,t)}}registerMLTensor(e,t,r,n){let s=ec.get(r);if(!s)throw new Error(`Unsupported ONNX data type: ${r}`);let a=this.tensorManager.registerTensor(e,t,s,n);return lr("verbose",()=>`[WebNN] registerMLTensor {tensor: ${t}, dataType: ${s}, dimensions: ${n}} -> {tensorId: ${a}}`),a}registerMLConstant(e,t,r,n,s,a,i=!1){if(!a)throw new Error("External mounted files are not available.");let o=e;e.startsWith("./")&&(o=e.substring(2));let l=a.get(o);if(!l)throw new Error(`File with name ${o} not found in preloaded files.`);if(t+r>l.byteLength)throw new Error("Out of bounds: data offset and length exceed the external file data size.");let u=l.slice(t,t+r).buffer,p;switch(s.dataType){case"float32":p=new Float32Array(u);break;case"float16":p=typeof Float16Array<"u"&&Float16Array.from?new Float16Array(u):new Uint16Array(u);break;case"int32":p=new Int32Array(u);break;case"uint32":p=new Uint32Array(u);break;case"int64":i?(p=$p(new Uint8Array(u),!1),s.dataType="int32"):p=new BigInt64Array(u);break;case"uint64":p=new BigUint64Array(u);break;case"int8":p=new Int8Array(u);break;case"int4":case"uint4":case"uint8":p=new Uint8Array(u);break;default:throw new Error(`Unsupported data type: ${s.dataType} in creating WebNN Constant from external data.`)}return lr("verbose",()=>`[WebNN] registerMLConstant {dataType: ${s.dataType}, shape: ${s.shape}}} ${i?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),n.constant(s,p)}registerGraphInput(e){this.temporaryGraphInputs.push(e)}isGraphInput(e,t){let r=this.sessionGraphInputs.get(e);return r?r.includes(t):!1}isInt64Supported(e){return!!this.mlContextBySessionId.get(e)?.opSupportLimits().input.dataTypes.includes("int64")}flush(){}}}),Fp=Je(()=>{}),Lp,tc,rc,u_,c_,Rp,Yp,d_,p_,Ek=Je(()=>{Ia(),Fp(),Lp=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200
vendor: 20,596 bytes, lines 9-94
9],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),tc=[],rc=e=>Math.ceil(Number(e)/16)*16,u_=e=>{for(let t=0;t<tc.length;t++){let r=tc[t];if(e<=r)return r}return Math.ceil(e/16)*16},c_=1,Rp=()=>c_++,Yp=async(e,t,r,n)=>{let s=rc(r),a=e.device.createBuffer({size:s,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let i=e.getCommandEncoder();e.endComputePass(),i.copyBufferToBuffer(t,0,a,0,s),e.flush(),await a.mapAsync(GPUMapMode.READ);let o=a.getMappedRange();if(n){let l=n();return l.set(new Uint8Array(o,0,r)),l}else return new Uint8Array(o.slice(0,r))}finally{a.destroy()}},d_=class{constructor(e){this.backend=e,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map;for(let[t]of Lp)tc.push(t),this.freeBuffers.set(t,[]),this.freeUniformBuffers.set(t,[]);this.sessionCount=0}upload(e,t){let r=t.buffer,n=t.byteOffset,s=t.byteLength,a=rc(s),i=this.storageCache.get(e);if(!i)throw new Error("gpu data for uploading does not exist");if(Number(i.originalSize)!==s)throw new Error(`inconsistent data size. gpu data size=${i.originalSize}, data size=${s}`);let o=this.backend.device.createBuffer({mappedAtCreation:!0,size:a,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),l=o.getMappedRange();new Uint8Array(l).set(new Uint8Array(r,n,s)),o.unmap();let u=this.backend.device.createCommandEncoder();u.copyBufferToBuffer(o,0,i.gpuData.buffer,0,a),this.backend.device.queue.submit([u.finish()]),o.destroy(),lr("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${e})`)}memcpy(e,t){let r=this.storageCache.get(e);if(!r)throw new Error("source gpu data for memcpy does not exist");let n=this.storageCache.get(t);if(!n)throw new Error("destination gpu data for memcpy does not exist");if(r.originalSize!==n.originalSize)throw new Error("inconsistent source and destination gpu data size");let s=rc(r.originalSize),a=this.backend.getCommandEncoder();this.backend.endComputePass(),a.copyBufferToBuffer(r.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(e,t,r){let n;if(r){if(n=r[0],e===r[1])return lr("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, buffer is the same, skip.`),n;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet.
10             Please use the previous external buffer!`)}else n=Rp();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:e},originalSize:t}),lr("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, registered.`),n}unregisterExternalBuffer(e){e!==void 0&&(this.storageCache.delete(e),lr("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${e}`))}create(e,t=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let r=u_(e),n,s=(t&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,a=(t&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||a){let o=(s?this.freeBuffers:this.freeUniformBuffers).get(r);o?o.length>0?n=o.pop():n=this.backend.device.createBuffer({size:r,usage:t}):n=this.backend.device.createBuffer({size:r,usage:t})}else n=this.backend.device.createBuffer({size:r,usage:t});let i={id:Rp(),type:0,buffer:n};return this.storageCache.set(i.id,{gpuData:i,originalSize:Number(e)}),lr("verbose",()=>`[WebGPU] GpuDataManager.create(size=${e}) => id=${i.id}`),i}get(e){return this.storageCache.get(e)?.gpuData}release(e){let t=typeof e=="bigint"?Number(e):e,r=this.storageCache.get(t);if(!r){if(this.storageCache.size===0)return 0;throw new Error("releasing data does not exist")}return lr("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(e,t){let r=this.storageCache.get(Number(e));if(!r)throw new Error("data does not exist");await Yp(this.backend,r.gpuData.buffer,r.originalSize,t)}refreshPendingBuffers(){if(this.buffersPending.length!==0)if(this.backend.sessionStatus==="default"){for(let e of this.buffersPending){let t=Lp.get(e.size);if((e.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let r=this.freeBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else if((e.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let r=this.freeUniformBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else e.destroy()}this.buffersPending=[]}else{let e=this.capturedPendingBuffers.get(this.backend.currentSessionId);e||(e=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,e));for(let t of this.buffersPending)e.push(t);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.freeUniformBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache.forEach(e=>{e.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(e){let t=this.capturedPendingBuffers.get(e);t&&(t.forEach(r=>{r.destroy()}),this.capturedPendingBuffers.delete(e)),this.sessionCount-=1,this.sessionCount===0&&(lr("warning",()=>"[WebGPU] Clearing webgpu buffer cache"),this.storageCache.forEach(r=>{r.gpuData.buffer.destroy()}),this.storageCache=new Map)}},p_=(...e)=>new d_(...e)}),g_,br,an=Je(()=>{g_=class{constructor(e){Object.assign(this,e)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(e=>`${this[e]}`).join(";")),this.key}},br=e=>new g_(e)}),Eo,nc,vn,Ln,Dt,Jr,Np,Do,Wa,Bt,vl,Ye,bt,A_,jp,h_,m_,er=Je(()=>{zt(),Kt(),Eo=64,nc=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(Number(e)){case 10:return t>1?`vec${t}<f16>`:"f16";case 1:return t>1?`vec${t}<f32>`:"f32";case 6:return t>1?`vec${t}<i32>`:"i32";case 12:return t>1?`vec${t}<u32>`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4<bool>"];case 22:return"i32";case 21:return"u32";default:throw new Error(`Unknown data type: ${e}`)}},vn=(e,t=1)=>{let r=nc(e,t);return typeof r=="string"?r:r[0]},Ln=(e,t=1)=>{let r=nc(e,t);return typeof r=="string"?r:r[1]},Dt=(...e)=>{let t=[];return e.forEach(r=>{r.length!==0&&t.push({type:12,data:r},{type:12,data:Te.computeStrides(r)})}),t},Jr=e=>e%4===0?4:e%2===0?2:1,Np=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,Do=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}<f32>(${r})`,Wa=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,Bt=(e,t,r,n)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?n==="f16"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:n==="f16"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,vl=(e,t,r,n,s)=>{let a=typeof r=="number",i=a?r:r.length,o=[...new Array(i).keys()],l=i<2?"u32":i<=4?`vec${i}<u32>`:`array<u32, ${i}>`,u=nc(t,s),p=typeof u=="string"?u:u[1],d=typeof u=="string"?u:u[0],c={indices:l,value:p,storage:d,tensor:t},g=q=>typeof q=="string"?q:`${q}u`,A={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=a?"uniforms.":"",B=`${m}${e}_shape`,f=`${m}${e}_strides`,h="";for(let q=0;q<i-1;q++)h+=`
11    let dim${q} = current / ${Bt(f,q,i)};
12    let rest${q} = current % ${Bt(f,q,i)};
13    indices[${q}] = dim${q};
14    current = rest${q};
15    `;h+=`indices[${i-1}] = current;`;let P=i<2?"":`
16  fn o2i_${e}(offset: u32) -> ${c.indices} {
17    var indices: ${c.indices};
18    var current = offset;
19    ${h}
20    return indices;
21  }`,_=q=>(A.offsetToIndices=!0,i<2?q:`o2i_${e}(${q})`),w=[];if(i>=2)for(let q=i-1;q>=0;q--)w.push(`${Bt(f,q,i)} * (indices[${q}])`);let b=i<2?"":`
22  fn i2o_${e}(indices: ${c.indices}) -> u32 {
23    return ${w.join("+")};
24  }`,v=q=>(A.indicesToOffset=!0,i<2?q:`i2o_${e}(${q})`),y=(...q)=>i===0?"0u":`${c.indices}(${q.map(g).join(",")})`,$=(q,V)=>i<2?`${q}`:`${Bt(q,V,i)}`,k=(q,V,U)=>i<2?`${q}=${U};`:`${Bt(q,V,i)}=${U};`,W={},j=(q,V)=>{A.broadcastedIndicesToOffset=!0;let U=`${V.name}broadcastedIndicesTo${e}Offset`;if(U in W)return`${U}(${q})`;let N=[];for(let oe=i-1;oe>=0;oe--){let fe=V.indicesGet("outputIndices",oe+V.rank-i);N.push(`${$(f,oe)} * (${fe} % ${$(B,oe)})`)}return W[U]=`fn ${U}(outputIndices: ${V.type.indices}) -> u32 {
25             return ${N.length>0?N.join("+"):"0u"};
26           }`,`${U}(${q})`},F=(q,V)=>(()=>{if(c.storage===c.value)return`${e}[${q}]=${V};`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`${e}[${q}]=vec2<u32>(u32(${V}), select(0u, 0xFFFFFFFFu, ${V} < 0));`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`${e}[${q}]=vec2<u32>(u32(${V}), 0u);`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`${e}[${q}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${V}));`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),R=q=>(()=>{if(c.storage===c.value)return`${e}[${q}]`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`i32(${e}[${q}].x)`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`u32(${e}[${q}].x)`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`vec4<bool>(bool(${e}[${q}] & 0xFFu), bool(${e}[${q}] & 0xFF00u), bool(${e}[${q}] & 0xFF0000u), bool(${e}[${q}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),L=i<2?"":`
27  fn get_${e}ByIndices(indices: ${c.indices}) -> ${p} {
28    return ${R(`i2o_${e}(indices)`)};
29  }`,Q=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return`
30  fn get_${e}(${q}) -> ${p} {
31    return get_${e}ByIndices(${y(V)});
32  }`})(),ne=(...q)=>{if(q.length!==i)throw new Error(`indices length must be ${i}`);let V=q.map(g).join(",");return i===0?R("0u"):i===1?R(V[0]):(A.get=!0,A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}(${V})`)},re=q=>i<2?R(q):(A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}ByIndices(${q})`),ce=i<2?"":`
33  fn set_${e}ByIndices(indices: ${c.indices}, value: ${p}) {
34    ${F(`i2o_${e}(indices)`,"value")}
35  }`,ge=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return`
36  fn set_${e}(${q}, value: ${p}) {
37    set_${e}ByIndices(${y(V)}, value);
38  }`})();return{impl:()=>{let q=[],V=!1;return A.offsetToIndices&&(q.push(P),V=!0),A.indicesToOffset&&(q.push(b),V=!0),A.broadcastedIndicesToOffset&&(Object.values(W).forEach(U=>q.push(U)),V=!0),A.set&&(q.push(ge),V=!0),A.setByIndices&&(q.push(ce),V=!0),A.get&&(q.push(Q),V=!0),A.getByIndices&&(q.push(L),V=!0),!a&&V&&q.unshift(`const ${B} = ${c.indices}(${r.join(",")});`,`const ${f} = ${c.indices}(${Te.computeStrides(r).join(",")});`),q.join(`
39`)},type:c,offsetToIndices:_,indicesToOffset:v,broadcastedIndicesToOffset:j,indices:y,indicesGet:$,indicesSet:k,set:(...q)=>{if(q.length!==i+1)throw new Error(`indices length must be ${i}`);let V=q[i];if(typeof V!="string")throw new Error("value must be string");let U=q.slice(0,i).map(g).join(",");return i===0?F("0u",V):i===1?F(U[0],V):(A.set=!0,A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}(${U}, ${V})`)},setByOffset:F,setByIndices:(q,V)=>i<2?F(q,V):(A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}ByIndices(${q}, ${V});`),get:ne,getByOffset:R,getByIndices:re,usage:n,name:e,strides:f,shape:B,rank:i}},Ye=(e,t,r,n=1)=>vl(e,t,r,"input",n),bt=(e,t,r,n=1)=>vl(e,t,r,"output",n),A_=(e,t,r)=>vl(e,t,r,"atomicOutput",1),jp=(e,t,r,n=1)=>vl(e,t,r,"internal",n),h_=class{constructor(e,t){this.normalizedDispatchGroup=e,this.limits=t,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(e){return`if (global_idx >= ${typeof e=="number"?`${e}u`:e}) { return; }`}mainStart(e=Eo){let t=typeof e=="number"?e:e[0],r=typeof e=="number"?1:e[1],n=typeof e=="number"?1:e[2];if(t>this.limits.maxComputeWorkgroupSizeX||r>this.limits.maxComputeWorkgroupSizeY||n>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(t*r*n>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,a=s?`@builtin(global_invocation_id) global_id : vec3<u32>,
40    @builtin(workgroup_id) workgroup_id : vec3<u32>,
41    @builtin(local_invocation_index) local_idx : u32,
42    @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>,
43                                             @builtin(local_invocation_id) local_id : vec3<u32>,
44    @builtin(local_invocation_index) local_idx : u32,
45    @builtin(workgroup_id) workgroup_id : vec3<u32>,
46    @builtin(num_workgroups) num_workgroups : vec3<u32>`,i=s?`let global_idx = global_id.x;
47         let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] +
48             workgroup_id.y * num_workgroups[0] + workgroup_id.x;
49         let global_idx = workgroup_index * ${t*r*n}u + local_idx;`;return`@compute @workgroup_size(${t}, ${r}, ${n})
50  fn main(${a}) {
51    ${i}
52  `}appendVariableUniforms(e){e.rank!==0&&(e.shape.startsWith("uniforms.")&&this.uniforms.push({name:e.shape.replace("uniforms.",""),type:"u32",length:e.rank}),e.strides.startsWith("uniforms.")&&this.uniforms.push({name:e.strides.replace("uniforms.",""),type:"u32",length:e.rank}))}declareVariable(e,t){if(e.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(e),this.appendVariableUniforms(e);let r=e.usage==="input"?"read":"read_write",n=e.usage==="atomicOutput"?"atomic<i32>":e.type.storage;return`@group(0) @binding(${t}) var<storage, ${r}> ${e.name}: array<${n}>;`}declareVariables(...e){return e.map(t=>this.declareVariable(t,this.variableIndex++)).join(`
53`)}registerInternalVariable(e){if(e.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(e),this.appendVariableUniforms(e)}registerInternalVariables(...e){return e.forEach(t=>this.registerInternalVariable(t)),this}registerUniform(e,t,r=1){return this.uniforms.push({name:e,type:t,length:r}),this}registerUniforms(e){return this.uniforms=this.uniforms.concat(e),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let e=[];for(let{name:t,type:r,length:n}of this.uniforms)if(n&&n>4)r==="f16"?e.push(`@align(16) ${t}:array<mat2x4<${r}>, ${Math.ceil(n/8)}>`):e.push(`${t}:array<vec4<${r}>, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?r:`vec${n}<${r}>`;e.push(`${t}:${s}`)}return`
54      struct Uniforms { ${e.join(", ")} };
55      @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(e=>e.impl()).join(`
56`)+this.internalVariables.map(e=>e.impl()).join(`
57`)}get variablesInfo(){if(this.uniforms.length===0)return;let e=t=>[12,10,1,6][["u32","f16","f32","i32"].indexOf(t)];return this.uniforms.map(t=>[e(t.type),t.length??1])}},m_=(e,t)=>new h_(e,t)}),f_,Up,__,w_,y_,b_,ns,P_,M_,Va=Je(()=>{zt(),Kt(),an(),er(),f_=(e,t)=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.");if(t.length!==0&&t.length!==e[0].dims.length)throw new Error(`perm size ${t.length} does not match input rank ${e[0].dims.length}`)},Up=(e,t)=>t.length!==0?t:[...new Array(e).keys()].reverse(),__=(e,t)=>Te.sortBasedOnPerm(e,Up(e.length,t)),w_=(e,t,r,n)=>{let s=`fn perm(i: ${n.type.indices}) -> ${r.type.indices} {
58    var a: ${r.type.indices};`;for(let a=0;a<t;++a)s+=`a[${e[a]}]=i[${a}];`;return s+="return a;}"},y_=(e,t)=>{let r=[],n=[];for(let s=0;s<e.length;++s)e[s]!==1&&r.push(e[s]),e[t[s]]!==1&&n.push(t[s]);return{newShape:r,newPerm:n}},b_=(e,t)=>{let r=0;for(let n=0;n<e.length;++n)if(t[e[n]]!==1){if(e[n]<r)return!1;r=e[n]}return!0},ns=(e,t)=>{let r=e.dataType,n=e.dims.length,s=Up(n,t),a=__(e.dims,s),i=e.dims,o=a,l=n<2||b_(s,e.dims),u;if(l)return u=A=>{let m=Ye("input",r,i,4),B=bt("output",r,o,4);return`
59  ${A.registerUniform("output_size","u32").declareVariables(m,B)}
60  ${A.mainStart()}
61    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
62    output[global_idx] = input[global_idx];
63  }`},{name:"TransposeCopy",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let A=Te.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64/4)},programUniforms:[{type:12,data:Math.ceil(A/4)}]}},getShaderSource:u};let{newShape:p,newPerm:d}=y_(e.dims,s),c=Te.areEqual(d,[2,3,1]),g=Te.areEqual(d,[3,1,2]);if(p.length===2||c||g){i=c?[p[0],p[1]*p[2]]:g?[p[0]*p[1],p[2]]:p,o=[i[1],i[0]];let A=16;return u=m=>{let B=Ye("a",r,i.length),f=bt("output",r,o.length);return`
64  ${m.registerUniform("output_size","u32").declareVariables(B,f)}
65  var<workgroup> tile : array<array<${f.type.value}, ${A+1}>, ${A}>;
66  ${m.mainStart([A,A,1])}
67    let stride = (uniforms.output_shape[1] - 1) / ${A} + 1;
68    let workgroup_id_x = workgroup_index % stride;
69    let workgroup_id_y = workgroup_index / stride;
70    let input_col = workgroup_id_y * ${A}u + local_id.x;
71    let input_row = workgroup_id_x * ${A}u + local_id.y;
72    if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) {
73      tile[local_id.y][local_id.x] = ${B.getByIndices(`${B.type.indices}(input_row, input_col)`)};
74    }
75    workgroupBarrier();
76
77    let output_col = workgroup_id_x * ${A}u + local_id.x;
78    let output_row = workgroup_id_y * ${A}u + local_id.y;
79    if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) {
80      ${f.setByIndices(`${f.type.indices}(output_row, output_col)`,"tile[local_id.x][local_id.y]")}
81    }
82  }`},{name:"TransposeShared",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let m=Te.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(o[1]/A),y:Math.ceil(o[0]/A)},programUniforms:[{type:12,data:m},...Dt(i,o)]}},getShaderSource:u}}return u=A=>{let m=Ye("a",r,i.length),B=bt("output",r,o.length);return`
83  ${A.registerUniform("output_size","u32").declareVariables(m,B)}
84
85  ${w_(s,n,m,B)}
86
87  ${A.mainStart()}
88    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
89
90    let indices = ${B.offsetToIndices("global_idx")};
91    let aIndices = perm(indices);
92
93    ${B.setByOffset("global_idx",m.getByIndices("aIndices"))}
94  }`},{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:["rank"]},getRunData:()=>{let A=Te.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...Dt(i,o)]}},getShaderSource:u}},P_=(e,t)=>{f_(e.inputs,t.perm),e.compute(ns(e.inputs[0],t.perm))},M_=e=>br({perm:e.perm})}),v_,B_,x_,E_,D_,I_,T_,C_,$_,S_,Fs,k_,O_,G_,z_,F_,L_,R_,Y_,N_,j_,Dk=Je(()=>{zt(),Kt(),er(),Vp(),Va(),v_={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},B_={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},x_={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"
940",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},E_={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},D_=(e,t)=>{let r=[];for(let n=t-e;n<t;++n)r.push(n);return r},I_=(e,t)=>{let r=[],n=e.length;for(let a=0;a<n;a++)t.indexOf(a)===-1&&r.push(e[a]);let s=t.map(a=>e[a]);return[r,s]},T_=(e,t)=>{let r=e.length+t.length,n=[],s=0;for(let a=0;a<r;a++)t.indexOf(a)===-1?n.push(e[s++]):n.push(1);return n},C_=(e,t)=>{for(let r=0;r<e.length;++r)if(e[e.length-r-1]!==t-1-r)return!1;return!0},$_=(e,t)=>{let r=[];if(!C_(e,t)){for(let n=0;n<t;++n)e.indexOf(n)===-1&&r.push(n);e.forEach(n=>r.push(n))}return r},S_=(e,t,r,n,s,a,i)=>{let o=r[0].dims,l=Te.size(a),u=Te.size(i),p=Ye("_A",r[0].dataType,o),d=bt("output",s,a),c=64;l===1&&(c=256);let g=`
95          var<workgroup> aBestValues : array<f32, ${c}>;
96       `,A=m=>`
97        ${m.registerUniform("reduceSize","u32").declareVariables(p,d)}
98        ${g}
99        fn DIV_CEIL(a : u32, b : u32) -> u32 {
100          return ((a - 1u) / b + 1u);
101         }
102         ${m.mainStart(c)}
103
104          let outputIndex = global_idx / ${c};
105          let offset = outputIndex * uniforms.reduceSize;
106
107          var bestValue = f32(${x_[n]});
108          let Length = uniforms.reduceSize;
109          for (var k = local_idx; k < Length; k = k + ${c}) {
110           let candidate = f32(${p.getByOffset("offset + k")});
111           bestValue = ${v_[n]};
112          }
113          aBestValues[local_idx] = bestValue;
114          workgroupBarrier();
115
116         var reduceSize = min(Length, ${c}u);
117         for (var currentSize = reduceSize / 2u; reduceSize > 1u;
118             currentSize = reduceSize / 2u) {
119           let interval = DIV_CEIL(reduceSize, 2u);
120           if (local_idx < currentSize) {
121            let candidate = aBestValues[local_idx + interval];
122            bestValue = ${B_[n]};
123            aBestValues[local_idx] = bestValue;
124           }
125           reduceSize = interval;
126           workgroupBarrier();
127         }
128
129         if (local_idx == 0u) {
130          ${d.setByOffset("outputIndex",`${n==="mean"?`${d.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${d.type.storage}(${E_[n]})`}`)};
131         }
132        }`;return{name:e,shaderCache:{hint:`${t};${c}`,inputDependencies:["type"]},getShaderSource:A,getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:l},programUniforms:[{type:12,data:u}]})}},Fs=(e,t,r,n)=>{let s=e.inputs.length===1?r:Wp(e.inputs,r),a=s.axes;a.length===0&&!s.noopWithEmptyAxes&&(a=e.inputs[0].dims.map((g,A)=>A));let i=Te.normalizeAxes(a,e.inputs[0].dims.length),o=i,l=e.inputs[0],u=$_(o,e.inputs[0].dims.length);u.length>0&&(l=e.compute(ns(e.inputs[0],u),{inputs:[0],outputs:[-1]})[0],o=D_(o.length,l.dims.length));let[p,d]=I_(l.dims,o),c=p;s.keepDims&&(c=T_(p,i)),e.compute(S_(t,s.cacheKey,[l],n,e.inputs[0].dataType,c,d),{inputs:[l]})},k_=(e,t)=>{Fs(e,"ReduceMeanShared",t,"mean")},O_=(e,t)=>{Fs(e,"ReduceL1Shared",t,"l1")},G_=(e,t)=>{Fs(e,"ReduceL2Shared",t,"l2")},z_=(e,t)=>{Fs(e,"ReduceLogSumExpShared",t,"logSumExp")},F_=(e,t)=>{Fs(e,"ReduceMaxShared",t,"max")},L_=(e,t)=>{Fs(e,"ReduceMinShared",t,"min")},R_=(e,t)=>{Fs(e,"ReduceProdShared",t,"prod")},Y_=(e,t)=>{Fs(e,"ReduceSumShared",t,"sum")},N_=(e,t)=>{Fs(e,"ReduceSumSquareShared",t,"sumSquare")},j_=(e,t)=>{Fs(e,"ReduceLogSumShared",t,"logSum")}}),Ls,U_,sc,Wp,Rs,W_,V_,Q_,H_,K_,q_,X_,Z_,J_,ew,Ys,tw,rw,nw,sw,aw,iw,ow,lw,uw,cw,Vp=Je(()=>{zt(),Kt(),an(),er(),Dk(),Ls=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},U_=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],sc=(e,t,r,n,s,a,i=!1,o=!1)=>{let l=[],u=r[0].dims,p=u.length,d=Te.normalizeAxes(s,p),c=!o&&d.length===0;u.forEach((m,B)=>{c||d.indexOf(B)>=0?i&&l.push(1):l.push(m)});let g=l.length,A=Te.size(l);return{name:e,shaderCache:t,getShaderSource:m=>{let B=[],f=Ye("_A",r[0].dataType,p),h=bt("output",a,g),P=n(f,h,d),_=P[2];for(let w=0,b=0;w<p;w++)c||d.indexOf(w)>=0?(i&&b++,_=`for(var j${w}: u32 = 0; j${w} < ${u[w]}; j${w}++) {
133                  ${P[2].includes("last_index")?`let last_index = j${w};`:""}
134                  ${f.indicesSet("input_indices",w,`j${w}`)}
135                  ${_}
136                }`):(B.push(`${f.indicesSet("input_indices",w,h.indicesGet("output_indices",b))};`),b++);return`
137
138        ${m.registerUniform("output_size","u32").declareVariables(f,h)}
139
140        ${m.mainStart()}
141          ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
142          var input_indices: ${f.type.indices};
143          let output_indices = ${h.offsetToIndices("global_idx")};
144
145          ${B.join(`
146`)}
147          ${P[0]}       // init ops for reduce max/min
148          ${P[1]}
149          ${_}
150          ${P[3]}
151          ${P.length===4?h.setByOffset("global_idx","value"):P.slice(4).join(`
152`)}
153        }`},getRunData:()=>({outputs:[{dims:l,dataType:a}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...Dt(u,l)]})}},Wp=(e,t)=>{let r=[];return e[1].dims[0]>
vendor: 22,074 bytes, lines 153-343
1530&&e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),br({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},Rs=(e,t,r,n)=>{let s=e.inputs,a=s.length===1?r:Wp(s,r);e.compute(sc(t,{hint:a.cacheKey,inputDependencies:["rank"]},[s[0]],a.noopWithEmptyAxes&&a.axes.length===0?U_:n,a.axes,s[0].dataType,a.keepDims,a.noopWithEmptyAxes),{inputs:[0]})},W_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceLogSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,"value = log(value);"])},V_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceL1",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += abs(${r.getByIndices("input_indices")});`,""])},Q_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceL2",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},H_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceLogSumExp",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += exp(${r.getByIndices("input_indices")});`,"value = log(value);"])},K_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceMax",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(r.indicesSet("input_indices",i,0));return[`${a.join(`
154`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = max(value, ${r.getByIndices("input_indices")});`,""]})},q_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceMean",t,(r,n,s)=>{let a=1;for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&(a*=e.inputs[0].dims[i]);return["var sum = f32(0);","",`sum += f32(${r.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${a});`]})},X_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceMin",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(`input_indices[${i}] = 0;`);return[`${a.join(`
155`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = min(value, ${r.getByIndices("input_indices")});`,""]})},Z_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceProd",t,(r,n)=>[`var value = ${n.type.storage}(1);`,"",`value *= ${r.getByIndices("input_indices")};`,""])},J_=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,""])},ew=(e,t)=>{Ls(e.inputs),Rs(e,"ReduceSumSquare",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += t * t;`,""])},Ys=(e,t,r)=>{if(t.length===0)return r;let n=1,s=1;for(let a=0;a<t.length;a++)t.indexOf(a)===-1?n*=e[a]:s*=e[a];return s<32&&n>1024},tw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?q_(e,t):k_(e,t)},rw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?V_(e,t):O_(e,t)},nw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Q_(e,t):G_(e,t)},sw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?H_(e,t):z_(e,t)},aw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?K_(e,t):F_(e,t)},iw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?X_(e,t):L_(e,t)},ow=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?Z_(e,t):R_(e,t)},lw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?J_(e,t):Y_(e,t)},uw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?ew(e,t):N_(e,t)},cw=(e,t)=>{Ys(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?W_(e,t):j_(e,t)}}),Qp,dw,pw,Hp,Ik=Je(()=>{zt(),an(),Vp(),Qp=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},dw=(e,t)=>{Qp(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(`
156`)}`,`var value = ${n.getByIndices("input_indices")};
157var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) {
158         value = ${n.getByIndices("input_indices")};
159         best_index = i32(last_index);
160       }`,"",s.setByOffset("global_idx","best_index")]};e.compute(sc("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},pw=(e,t)=>{Qp(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(`
161`)}`,`var value = ${n.getByIndices("input_indices")};
162var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) {
163         value = ${n.getByIndices("input_indices")};
164         best_index = i32(last_index);
165       }`,"",s.setByOffset("global_idx","best_index")]};e.compute(sc("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},Hp=e=>br(e)}),gw,ac,Aw,hw,mw,Bl,fw,_w,Kp=Je(()=>{zt(),Kt(),Fp(),er(),gw=(e,t)=>{let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4],o=e[5];if(i&&o)throw new Error("Attention cannot have both past and attention_bias");if(r.dims.length!==3)throw new Error('Input "input" must have 3 dimensions');let l=r.dims[0],u=r.dims[1],p=r.dims[2];if(s.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimensions');if(n.dims.length!==2)throw new Error('Input "weights" is expected to have 2 dimensions');if(n.dims[0]!==p)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(s.dims[0]!==n.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let d=s.dims[0]/3,c=d,g=c;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let P of t.qkvHiddenSizes)if(P%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");d=t.qkvHiddenSizes[0],c=t.qkvHiddenSizes[1],g=t.qkvHiddenSizes[2]}let A=u;if(d!==c)throw new Error("qkv_hidden_sizes first element should be same as the second");if(s.dims[0]!==d+c+g)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(i){if(c!==g)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(i.dims.length!==5)throw new Error('Input "past" must have 5 dimensions');if(i.dims[0]!==2)throw new Error('Input "past" first dimension must be 2');if(i.dims[1]!==l)throw new Error('Input "past" second dimension must be batch_size');if(i.dims[2]!==t.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(i.dims[4]!==c/t.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(m=i.dims[3])}let B=A+m,f=-1,h=0;if(a)throw new Error("Mask not supported");if(i)throw new Error("past is not supported");if(o){if(o.dims.length!==4)throw new Error('Input "attention_bias" must have 4 dimensions');if(o.dims[0]!==l||o.dims[1]!==t.numHeads||o.dims[2]!==u||o.dims[3]!==B)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:l,sequenceLength:u,pastSequenceLength:m,kvSequenceLength:A,totalSequenceLength:B,maxSequenceLength:f,inputHiddenSize:p,hiddenSize:d,vHiddenSize:g,headSize:Math.floor(d/t.numHeads),vHeadSize:Math.floor(g/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},ac=(e,t,r)=>t&&e?`
166      let total_sequence_length_input = u32(${t.getByOffset("0")});
167      let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length);
168      let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input;
169      let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input;
170      total_sequence_length = u32(${e?.getByOffset("batchIdx")}) + 1;
171      var past_sequence_length: u32 = 0;
172      if (is_first_prompt == false) {
173        past_sequence_length = total_sequence_length - sequence_length;
174      }
175       `:`
176    ${r?"let past_sequence_length = uniforms.past_sequence_length":""};
177    let present_sequence_length = total_sequence_length;
178    `,Aw=(e,t,r,n,s,a,i,o)=>{let l=Jr(i?1:a),u=64,p=a/l;p<u&&(u=32);let d=Math.ceil(a/l/u),c=[{type:12,data:t},{type:12,data:r},{type:12,data:n},{type:12,data:s},{type:12,data:p},{type:12,data:d}],g=vn(e.dataType,l),A=Ln(1,l),m=["type"];i&&m.push("type"),o&&m.push("type");let B=f=>{let h=bt("x",e.dataType,e.dims,l),P=[h],_=i?Ye("seq_lens",i.dataType,i.dims):void 0;_&&P.push(_);let w=o?Ye("total_sequence_length_input",o.dataType,o.dims):void 0;w&&P.push(w);let b=Ln(e.dataType),v=[{name:"batch_size",type:"u32"},{name:"num_heads",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"sequence_length",type:"u32"},{name:"total_sequence_length",type:"u32"},{name:"elements_per_thread",type:"u32"}];return`
179  var<workgroup> thread_max: array<f32, ${u}>;
180  var<workgroup> thread_sum: array<f32, ${u}>;
181  ${f.registerUniforms(v).declareVariables(...P)}
182  ${f.mainStart([u,1,1])}
183    let batchIdx = workgroup_id.z / uniforms.num_heads;
184    let headIdx = workgroup_id.z % uniforms.num_heads;
185    let sequence_length = uniforms.sequence_length;
186    var total_sequence_length = uniforms.total_sequence_length;
187    ${ac(_,w,!1)}
188    let local_offset = local_idx * uniforms.elements_per_thread;
189    let offset = (global_idx / ${u}) * uniforms.total_sequence_length + local_offset;
190    let seq_causal_length = ${i?"u32(past_sequence_length + workgroup_id.y + 1)":"total_sequence_length"};
191    var thread_max_vector = ${A}(-3.402823e+38f);
192    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
193      thread_max_vector = max(${A}(x[offset + i]), thread_max_vector);
194    }
195    thread_max[local_idx] = ${(()=>{switch(l){case 1:return"thread_max_vector";case 2:return"max(thread_max_vector.x, thread_max_vector.y)";case 4:return"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))";default:throw new Error(`Unsupported components: ${l}`)}})()};
196    workgroupBarrier();
197
198    var max_value =  f32(-3.402823e+38f);
199    for (var i = 0u; i < ${u}; i++) {
200      max_value = max(thread_max[i], max_value);
201    }
202
203    var sum_vector = ${A}(0);
204    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
205      sum_vector += exp(${A}(x[offset + i]) - max_value);
206    }
207    thread_sum[local_idx] = ${(()=>{switch(l){case 1:return"sum_vector";case 2:return"sum_vector.x + sum_vector.y";case 4:return"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w";default:throw new Error(`Unsupported components: ${l}`)}})()};
208    workgroupBarrier();
209
210    var sum: f32 = 0;
211    for (var i = 0u; i < ${u}; i++) {
212      sum += thread_sum[i];
213    }
214
215    if (sum == 0) {
216      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
217        x[offset + i] = ${h.type.value}(${b}(1.0) / ${b}(seq_causal_length));
218      }
219    } else {
220      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
221        var f32input = ${A}(x[offset + i]);
222        x[offset + i] = ${h.type.value}(exp(f32input - max_value) / sum);
223      }
224    }
225      ${i?`
226        for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) {
227          x[offset + total_seq_id] = ${h.type.value}(${b}(0));
228        }`:""};
229  }`};return{name:"AttentionProbsSoftmax",shaderCache:{hint:`${u};${g};${l}`,inputDependencies:m},getShaderSource:B,getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:s,z:t*r},programUniforms:c})}},hw=(e,t,r,n,s,a,i,o,l)=>{let u=i+a.kvSequenceLength,p=[a.batchSize,a.numHeads,a.sequenceLength,u],d=e>1&&n,c=a.kvNumHeads?a.kvNumHeads:a.numHeads,g=d?[a.batchSize,c,u,a.headSize]:void 0,A=a.nReps?a.nReps:1,m=a.scale===0?1/Math.sqrt(a.headSize):a.scale,B=Jr(a.headSize),f=a.headSize/B,h=12,P={x:Math.ceil(u/h),y:Math.ceil(a.sequenceLength/h),z:a.batchSize*a.numHeads},_=[{type:12,data:a.sequenceLength},{type:12,data:f},{type:12,data:u},{type:12,data:a.numHeads},{type:12,data:a.headSize},{type:1,data:m},{type:12,data:i},{type:12,data:a.kvSequenceLength},{type:12,data:A}],w=d&&n&&Te.size(n.dims)>0,b=["type","type"];w&&b.push("type"),s&&b.push("type"),o&&b.push("type"),l&&b.push("type");let v=[{dims:p,dataType:t.dataType,gpuDataType:0}];d&&v.push({dims:g,dataType:t.dataType,gpuDataType:0});let y=$=>{let k=Ye("q",t.dataType,t.dims,B),W=Ye("key",r.dataType,r.dims,B),j=[k,W];if(w){let ce=Ye("past_key",n.dataType,n.dims,B);j.push(ce)}s&&j.push(Ye("attention_bias",s.dataType,s.dims));let F=o?Ye("seq_lens",o.dataType,o.dims):void 0;F&&j.push(F);let R=l?Ye("total_sequence_length_input",l.dataType,l.dims):void 0;R&&j.push(R);let L=bt("output",t.dataType,p),Q=[L];d&&Q.push(bt("present_key",t.dataType,g,B));let ne=Ln(1,B),re=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"alpha",type:"f32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return`
230  const TILE_SIZE = ${h}u;
231
232  var<workgroup> tileQ: array<${k.type.storage}, ${h*h}>;
233  var<workgroup> tileK: array<${k.type.storage}, ${h*h}>;
234  ${$.registerUniforms(re).declareVariables(...j,...Q)}
235  ${$.mainStart([h,h,1])}
236    // x holds the N and y holds the M
237    let headIdx = workgroup_id.z % uniforms.num_heads;
238    let kvHeadIdx = ${A===1?"headIdx":"headIdx / uniforms.n_reps"};
239    let kv_num_heads = ${A===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"};
240    let batchIdx = workgroup_id.z / uniforms.num_heads;
241    let m = workgroup_id.y * TILE_SIZE;
242    let n = workgroup_id.x * TILE_SIZE;
243    let sequence_length = uniforms.M;
244    var total_sequence_length = uniforms.N;
245    ${ac(F,R,!0)}
246    let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx;
247    let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;
248    ${w&&d?"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;":""};
249    let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K;
250    ${d?"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;":""}
251    var value = ${ne}(0);
252    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
253      if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) {
254        tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];
255      }
256      if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {
257        var idx = TILE_SIZE * local_id.y + local_id.x;
258      ${w&&d?`
259              if (n + local_id.y < past_sequence_length) {
260                tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x];
261              } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {
262                tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x];
263              }`:`
264          if (n + local_id.y < uniforms.kv_sequence_length) {
265            tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x];
266          }`}
267      ${d?`if (n + local_id.y < present_sequence_length) {
268        present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx];
269      }`:""}
270      }
271      workgroupBarrier();
272
273      for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {
274          value += ${ne}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]);
275      }
276
277      workgroupBarrier();
278    }
279
280    if (global_id.y < uniforms.M && global_id.x < total_sequence_length) {
281      let headOffset = workgroup_id.z * uniforms.M * uniforms.N;
282      let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x;
283      var sum: f32 = ${(()=>{switch(B){case 1:return"value";case 2:return"value.x + value.y";case 4:return"value.x + value.y + value.z + value.w";default:throw new Error(`Unsupported components: ${B}`)}})()};
284        output[outputIdx] = ${L.type.value} (sum * uniforms.alpha) + ${s?"attention_bias[outputIdx]":"0.0"};
285    }
286  }`};return{name:"AttentionProbs",shaderCache:{hint:`${B};${s!==void 0};${n!==void 0};${e}`,inputDependencies:b},getRunData:()=>({outputs:v,dispatchGroup:P,programUniforms:_}),getShaderSource:y}},mw=(e,t,r,n,s,a,i=void 0,o=void 0)=>{let l=a+s.kvSequenceLength,u=s.nReps?s.nReps:1,p=s.vHiddenSize*u,d=e>1&&n,c=s.kvNumHeads?s.kvNumHeads:s.numHeads,g=d?[s.batchSize,c,l,s.headSize]:void 0,A=[s.batchSize,s.sequenceLength,p],m=12,B={x:Math.ceil(s.vHeadSize/m),y:Math.ceil(s.sequenceLength/m),z:s.batchSize*s.numHeads},f=[{type:12,data:s.sequenceLength},{type:12,data:l},{type:12,data:s.vHeadSize},{type:12,data:s.numHeads},{type:12,data:s.headSize},{type:12,data:p},{type:12,data:a},{type:12,data:s.kvSequenceLength},{type:12,data:u}],h=d&&n&&Te.size(n.dims)>0,P=["type","type"];h&&P.push("type"),i&&P.push("type"),o&&P.push("type");let _=[{dims:A,dataType:t.dataType,gpuDataType:0}];d&&_.push({dims:g,dataType:t.dataType,gpuDataType:0});let w=b=>{let v=Ye("probs",t.dataType,t.dims),y=Ye("v",r.dataType,r.dims),$=[v,y];h&&$.push(Ye("past_value",n.dataType,n.dims));let k=i?Ye("seq_lens",i.dataType,i.dims):void 0;i&&$.push(k);let W=o?Ye("total_sequence_length_input",o.dataType,o.dims):void 0;o&&$.push(W);let j=[bt("output",t.dataType,A)];d&&j.push(bt("present_value",t.dataType,g));let F=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"v_hidden_size",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return`
287  const TILE_SIZE = ${m}u;
288  var<workgroup> tileQ: array<${v.type.value}, ${m*m}>;
289  var<workgroup> tileV: array<${v.type.value}, ${m*m}>;
290  ${b.registerUniforms(F).declareVariables(...$,...j)}
291  ${b.mainStart([m,m,1])}
292   let headIdx = workgroup_id.z % uniforms.num_heads;
293   let batchIdx = workgroup_id.z / uniforms.num_heads;
294   let kvHeadIdx = ${u===1?"headIdx":"headIdx / uniforms.n_reps"};
295   let kv_num_heads = ${u===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"};
296   let m = global_id.y;
297   let n = global_id.x;
298   let sequence_length = uniforms.M;
299   var total_sequence_length = uniforms.K;
300   ${ac(k,W,!0)}
301   let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;
302   let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch
303   ${h&&d?"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;":""};
304   let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n;
305   ${d?"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;":""}
306   var value = ${v.type.storage}(0);
307   for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
308      if (m < uniforms.M && w + local_id.x < uniforms.K) {
309        tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];
310      }
311      if (n < uniforms.N && w + local_id.y < uniforms.K) {
312        var idx = TILE_SIZE * local_id.y + local_id.x;
313        ${h&&d?`
314        if (w + local_id.y < past_sequence_length) {
315          tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N];
316        } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {
317          tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N];
318        }
319      `:`
320            if (w + local_id.y < uniforms.kv_sequence_length) {
321              tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N];
322            }`}
323        ${d?`
324            if (w + local_id.y < present_sequence_length) {
325          present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx];
326        }`:""}
327      }
328     workgroupBarrier();
329     for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) {
330       value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x];
331     }
332     workgroupBarrier();
333   }
334
335   // we need to transpose output from BNSH_v to BSND_v
336   if (m < uniforms.M && n < uniforms.N) {
337     let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size
338       + headIdx * uniforms.N + n;
339     output[outputIdx] = value;
340   }
341  }`};return{name:"AttentionScore",shaderCache:{hint:`${n!==void 0};${e}`,inputDependencies:P},getRunData:()=>({outputs:_,dispatchGroup:B,programUniforms:f}),getShaderSource:w}},Bl=(e,t,r,n,s,a,i,o,l,u,p=void 0,d=void 0)=>{let c=Math.min(e.outputCount,1+(i?1:0)+(o?1:0)),g=c>1?u.pastSequenceLength:0,A=g+u.kvSequenceLength,m=l&&Te.size(l.dims)>0?l:void 0,B=[t,r];c>1&&i&&Te.size(i.dims)>0&&B.push(i),m&&B.push(m),p&&B.push(p),d&&B.push(d);let f=e.compute(hw(c,t,r,i,m,u,g,p,d),{inputs:B,outputs:c>1?[-1,1]:[-1]})[0];e.compute(Aw(f,u.batchSize,u.numHeads,g,u.sequenceLength,A,p,d),{inputs:p&&d?[f,p,d]:[f],outputs:[]});let h=[f,n];c>1&&o&&Te.size(o.dims)>0&&h.push(o),p&&h.push(p),d&&h.push(d),e.compute(mw(c,f,n,o,u,g,p,d),{inputs:h,outputs:c>1?[0,2]:[0]})},fw=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],n=t.sequenceLength,s=t.inputHiddenSize,a=t.headSize,i=12,o={x:Math.ceil(t.headSize/i),y:Math.ceil(t.sequenceLength/i),z:t.batchSize*t.numHeads},l=[e.inputs[0],e.inputs[1],e.inputs[2]],u=[{type:12,data:n},{type:12,data:s},{type:12,data:a},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:12,data:t.hiddenSize},{type:12,data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],p=d=>{let c=bt("output_q",l[0].dataType,r),g=bt("output_k",l[0].dataType,r),A=bt("output_v",l[0].dataType,r),m=Ye("input",l[0].dataType,l[0].dims),B=Ye("weight",l[1].dataType,l[1].dims),f=Ye("bias",l[2].dataType,l[2].dims),h=m.type.storage,P=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return`
342  const TILE_SIZE = ${i}u;
343  var<workgroup> tileInput: array<${h}, ${i*i}>;
344  var<workgroup> tileWeightQ: array<${h}, ${i*i}>;
345  var<workgroup> tileWeightK: array<${h}, ${i*i}>;
346  var<workgroup> tileWeightV: array<${h}, ${i*i}>;
347  ${d.registerUniforms(P).declareVariables(m,B,f,c,g,A)}
348  ${d.mainStart([i,i,1])}
349    let batchIndex = workgroup_id.z / uniforms.num_heads;
350    let headNumber = workgroup_id.z % uniforms.num_heads;
351    let m = global_id.y;
352    let n = global_id.x;
353
354    let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;
355    let biasOffsetQ = headNumber * uniforms.head_size;
356    let biasOffsetK = uniforms.hidden_size + biasOffsetQ;
357    let biasOffsetV = uniforms.hidden_size + biasOffsetK;
358
359    var valueQ = ${h}(0);
360    var valueK = ${h}(0);
361    var valueV = ${h}(0);
362    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
363      if (m < uniforms.M && w + local_id.x < uniforms.K) {
364        tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];
365      }
366      if (n < uniforms.N && w + local_id.y < uniforms.K) {
367        let offset = n + (w + local_id.y) * uniforms.ldb;
368        tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];
369        tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];
370        tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];
371      }
372      workgroupBarrier();
373      for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) {
374        let inputTileOffset = TILE_SIZE * local_id.y + k;
375        let weightTileOffset = TILE_SIZE * k + local_id.x;
376        valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset];
377        valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset];
378        valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset];
379      }
380
381      workgroupBarrier();
382    }
383
384    let headOffset = (m * uniforms.N + n) % uniforms.head_size;
385    valueQ += bias[headOffset + biasOffsetQ];
386    valueK += bias[headOffset + biasOffsetK];
387    valueV += bias[headOffset + biasOffsetV];
388
389    let offset = workgroup_id.z * uniforms.M * uniforms.N;
390    if (m < uniforms.M && n < uniforms.N) {
391      let outputIdx = offset + m * uniforms.N + n;
392      output_q[outputIdx] = valueQ;
393      output_k[outputIdx] = valueK;
394      output_v[outputIdx] = valueV;
395    }
396  }`};return e.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:u}),getShaderSource:p},{inputs:l,outputs:[-1,-1,-1]})},_w=(e,t)=>{let r=gw(e.inputs,t),[n,s,a]=fw(e,r);return Bl(e,n,s,a,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r)}}),ww,yw,bw,Pw,Tk=Je(()=>{Gs(),zt(),Kt(),an(),er(),ww=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(n,s,a)=>{let i=s.length;if(i!==n.length)throw new Error(`${a}: num dimensions != ${i}`);s.forEach((o,l)=>{if(o!==n[l])throw new Error(`${a}: dim[${l}] do not match`)})};if(e[0].dims.length>1){let n=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,n,"Invalid input scale"),r(e[2].dims,n,"Invalid input B"),r(e[3].dims,n,"Invalid input mean"),r(e[4].dims,n,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},yw=(e,t)=>{let{epsilon:r,spatial:n,format:s}=t,a=e[0].dims,i=n?Jr(a[a.length-1]):1,o=s==="NHWC"&&a.length>1?i:1,l=Te.size(a)/i,u=n,p=u?a.length:a,d=Ye("x",e[0].dataType,e[0].dims,i),c=Ye("scale",e[1].dataType,e[1].dims,o),g=Ye("bias",e[2].dataType,e[2].dims,o),A=Ye("inputMean",e[3].dataType,e[3].dims,o),m=Ye("inputVar",e[4].dataType,e[4].dims,o),B=bt("y",e[0].dataType,p,i),f=()=>{let P="";if(n)P=`let cOffset = ${a.length===1?"0u":s==="NHWC"?`outputIndices[${a.length-1}] / ${i}`:"outputIndices[1]"};`;else if(s==="NCHW")P=`
397            ${B.indicesSet("outputIndices","0","0")}
398            let cOffset = ${B.indicesToOffset("outputIndices")};`;else{P=`var cIndices = ${c.type.indices}(0);
399                       cIndices[0] = outputIndices[${a.length-1}];`;for(let _=1;_<c.rank;_++)P+=`cIndices[${_}] = outputIndices[${_}];`;P+=`let cOffset = ${c.indicesToOffset("cIndices")};`}return P},h=P=>`
400  const epsilon = ${r};
401  ${P.registerUniform("outputSize","u32").declareVariables(d,c,g,A,m,B)}
402  ${P.mainStart()}
403  ${P.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
404    var outputIndices = ${B.offsetToIndices(`global_idx * ${i}`)};
405    ${f()}
406    let scale = ${c.getByOffset("cOffset")};
407    let bias = ${g.getByOffset("cOffset")};
408    let inputMean = ${A.getByOffset("cOffset")};
409    let inputVar = ${m.getByOffset("cOffset")};
410    let x = ${d.getByOffset("global_idx")};
411    let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;
412    ${B.setByOffset("global_idx","value")}
413  }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${n}_${i}`,inputDependencies:u?["rank","type","type","type","type"]:void 0},getShaderSource:h,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u?[{type:12,data:l},...Dt(a)]:[{type:12,data:l}]})}},bw=e=>br(e),Pw=(e,t)=>{let{inputs:r,outputCount:n}=e,s=bw({...t,outputCount:n});if(jr.webgpu.validateInputContent&&ww(r,s),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(yw(r,s))}}),Mw,vw,Bw,Ck=Je(()=>{Kt(),er(),Mw=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},vw=e=>{let t=e[0].dims,r=e[0].dims[2],n=Te.size(t)/4,s=e[0].dataType,a=Ye("input",s,t,4),i=Ye("bias",s,[r],4),o=Ye("residual",s,t,4),l=bt("output",s,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)}}),getShaderSource:u=>`
414  const channels = ${r}u / 4;
415  ${u.declareVariables(a,i,o,l)}
416
417  ${u.mainStart()}
418    ${u.guardAgainstOutOfBoundsWorkgroupSizes(n)}
419    let value = ${a.getByOffset("global_idx")}
420      + ${i.getByOffset("global_idx % channels")} + ${o.getByOffset("global_idx")};
421    ${l.setByOffset("global_idx","value")}
422  }`}},Bw=e=>{Mw(e.inputs),e.compute(vw(e.inputs))}}),xw,_r,Ew,Dw,Iw,Tw,Cw,$w,Sw,kw,Ow,Gw,zw,Fw,Lw,Rw,xl,Yw,ic,Nw,jw,Uw,Ww,Vw,Qw,Hw,Kw,qw,Xw,Zw,Jw,ey,ty,ry,ny,qp,sy,Xp,Zp,ay,iy,oy,ly,uy,cy,Jp=Je(()=>{zt(),Kt(),an(),er(),xw=(e,t,r,n,s,a,i)=>{let o=Math.ceil(t/4),l="";typeof s=="string"?l=`${s}(a)`:l=s("a");let u=Ye("inputData",r,[o],4),p=bt("outputData",n,[o],4),d=[{name:"vec_size",type:"u32"}];return i&&d.push(...i),`
423      ${e.registerUniforms(d).declareVariables(u,p)}
424
425  ${a??""}
426
427  ${e.mainStart()}
428    ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
429
430    let a = ${u.getByOffset("global_idx")};
431    ${p.setByOffset("global_idx",l)}
432  }`},_r=(e,t,r,n,s,a=e.dataType,i,o)=>{let l=[{type:12,data:Math.ceil(Te.size(e.dims)/4)}];return i&&l.push(...i),{name:t,shaderCache:{hint:s,inputDependencies:["type"]},getShaderSource:u=>xw(u,Te.size(e.dims),e.dataType,a,r,n,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:a}],dispatchGroup:{x:Math.ceil(Te.size(u[0].dims)/64/4)},programUniforms:l})}},Ew=e=>{e.compute(_r(e.inputs[0],"Abs","abs"))},Dw=e=>{e.compute(_r(e.inputs[0],"Acos","acos"))},Iw=e=>{e.compute(_r(e.inputs[0],"Acosh","acosh"))},Tw=e=>{e.compute(_r(e.inputs[0],"Asin","asin"))},Cw=e=>{e.compute(_r(e.inputs[0],"Asinh","asinh"))},$w=e=>{e.compute(_r(e.inputs[0],"Atan","atan"))},Sw=e=>{e.compute(_r(e.inputs[0],"Atanh","atanh"))},kw=e=>br(e),Ow=(e,t)=>{let r;switch(t.to){case 10:r="vec4<f16>";break;case 1:r="vec4<f32>";break;case 12:r="vec4<u32>";break;case 6:r="vec4<i32>";break;case 9:r="vec4<bool>";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}
vendor: 4,262 bytes, lines 432-478
432e.compute(_r(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},Gw=e=>{let t,r,n=e.length>=2&&e[1].data!==0,s=e.length>=3&&e[2].data!==0;switch(e[0].dataType){case 1:t=n?e[1].getFloat32Array()[0]:-34028234663852886e22,r=s?e[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:t=n?e[1].getUint16Array()[0]:64511,r=s?e[2].getUint16Array()[0]:31743;break;default:throw new Error("Unsupport data type")}return br({min:t,max:r})},zw=(e,t)=>{let r=t||Gw(e.inputs),n=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Clip",s=>`clamp(${s}, vec4<${n}>(uniforms.min), vec4<${n}>(uniforms.max))`,void 0,r.cacheKey,void 0,[{type:e.inputs[0].dataType,data:r.min},{type:e.inputs[0].dataType,data:r.max}],[{name:"min",type:n},{name:"max",type:n}]),{inputs:[0]})},Fw=e=>{e.compute(_r(e.inputs[0],"Ceil","ceil"))},Lw=e=>{e.compute(_r(e.inputs[0],"Cos","cos"))},Rw=e=>{e.compute(_r(e.inputs[0],"Cosh","cosh"))},xl=e=>br(e),Yw=(e,t)=>{let r=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Elu",n=>`elu_vf32(${n})`,`
433  const elu_alpha_ = ${r}(${t.alpha});
434
435  fn elu_f32(a: ${r}) -> ${r} {
436  return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);
437  }
438
439  fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {
440  return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));
441  }`,t.cacheKey))},ic=(e="f32")=>`
442const r0: ${e} = 0.3275911;
443const r1: ${e} = 0.254829592;
444const r2: ${e} = -0.284496736;
445const r3: ${e} = 1.421413741;
446const r4: ${e} = -1.453152027;
447const r5: ${e} = 1.061405429;
448
449fn erf_vf32(v: vec4<${e}>) -> vec4<${e}> {
450  let absv = abs(v);
451  let x = 1.0 / (1.0 + r0 * absv);
452  return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));
453}`,Nw=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,ic(t)))},jw=e=>{e.compute(_r(e.inputs[0],"Exp","exp"))},Uw=e=>{e.compute(_r(e.inputs[0],"Floor","floor"))},Ww=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,ic(t)))},Vw=(e,t)=>{let r=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"LeakyRelu",n=>`select(leaky_relu_alpha_ * ${n}, ${n}, ${n} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},Qw=e=>{e.compute(_r(e.inputs[0],"Not",t=>`!${t}`))},Hw=e=>{e.compute(_r(e.inputs[0],"Neg",t=>`-${t}`))},Kw=e=>{e.compute(_r(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},qw=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},Xw=e=>{e.compute(_r(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},Zw=e=>br(e),Jw=(e,t)=>{let r=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"HardSigmoid",n=>`max(vec4<${r}>(0.0), min(vec4<${r}>(1.0), ${t.alpha} * ${n} + vec4<${r}>(${t.beta})))`,void 0,t.cacheKey))},ey=e=>{e.compute(_r(e.inputs[0],"Sin","sin"))},ty=e=>{e.compute(_r(e.inputs[0],"Sinh","sinh"))},ry=e=>{e.compute(_r(e.inputs[0],"Sqrt","sqrt"))},ny=e=>{e.compute(_r(e.inputs[0],"Tan","tan"))},qp=e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`,sy=e=>{e.compute(_r(e.inputs[0],"Tanh",qp))},Xp=(e="f32")=>`
454const fast_gelu_a: ${e} = 0.5;
455const fast_gelu_b: ${e} = 0.7978845608028654;
456const fast_gelu_c: ${e} = 0.035677408136300125;
457
458fn tanh_v(v: vec4<${e}>) -> vec4<${e}> {
459  return ${qp("v")};
460}
461`,Zp=e=>`(fast_gelu_a + fast_gelu_a * tanh_v(${e} * (fast_gelu_c * ${e} * ${e} + fast_gelu_b))) * ${e}`,ay=e=>{let t=Ln(e.inputs[0].dataType);e.compute(_r(e.inputs[0],"FastGelu",Zp,Xp(t),void 0,e.inputs[0].dataType))},iy=(e,t)=>{let r=Ln(e.inputs[0].dataType);return e.compute(_r(e.inputs[0],"ThresholdedRelu",n=>`select(vec4<${r}>(0.0), ${n}, ${n} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},oy=e=>{e.compute(_r(e.inputs[0],"Log","log"))},ly=(e,t)=>`
462const alpha = vec4<${e}>(${t});
463const one = ${e}(1.0);
464const zero = ${e}(0.0);
465
466fn quick_gelu_impl(x: vec4<${e}>) -> vec4<${e}> {
467  let v = x *alpha;
468  var x1 : vec4<${e}>;
469  for (var i = 0; i < 4; i = i + 1) {
470    if (v[i] >= zero) {
471      x1[i] = one / (one + exp(-v[i]));
472    } else {
473      x1[i] = one - one / (one + exp(v[i]));
474    }
475  }
476  return x * x1;
477}
478`,uy=e=>`quick_gelu_impl(${e})`,cy=(e,t)=>{let r=Ln(e.inputs[0].dataType);
478e.compute(_r(e.inputs[0],"QuickGelu",uy,ly(r,t.alpha),t.cacheKey,e.inputs[0].dataType))}}),dy,py,gy,$k=Je(()=>{Kt(),er(),Jp(),dy=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},py=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=Ye("input",e[0].dataType,e[0].dims,4),n=Ye("bias",e[0].dataType,[e[0].dims[2]],4),s=bt("output",e[0].dataType,t,4),a=Te.size(t)/4,i=vn(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:o=>`
479  const M_SQRT2 = sqrt(2.0);
480  const halfChannels = ${e[0].dims[2]/4/2}u;
481
482  ${o.declareVariables(r,n,s)}
483
484  ${ic(i)}
485
486  ${o.mainStart()}
487    ${o.guardAgainstOutOfBoundsWorkgroupSizes(a)}
488    let biasIdx = global_idx % halfChannels;
489    let batchIndex = global_idx / halfChannels;
490    let inputOffset = biasIdx + batchIndex * halfChannels * 2;
491    let valueLeft = input[inputOffset] + bias[biasIdx];
492    let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];
493    let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);
494
495    ${s.setByOffset("global_idx","valueLeft * geluRight")}
496  }`}},gy=e=>{dy(e.inputs),e.compute(py(e.inputs))}}),Ay,hy,Ns,my,fy,_y,wy,yy,by,Py,My,vy,By,Sk=Je(()=>{zt(),Kt(),er(),Ay=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c,g;typeof o=="string"?c=g=(h,P)=>`${o}((${h}),(${P}))`:typeof o=="function"?c=g=o:(c=o.scalar,g=o.vector);let A=bt("outputData",p,n.length,4),m=Ye("aData",l,t.length,4),B=Ye("bData",u,r.length,4),f;if(s)if(a){let h=Te.size(t)===1,P=Te.size(r)===1,_=t.length>0&&t[t.length-1]%4===0,w=r.length>0&&r[r.length-1]%4===0;h||P?f=A.setByOffset("global_idx",g(h?`${m.type.value}(${m.getByOffset("0")}.x)`:m.getByOffset("global_idx"),P?`${B.type.value}(${B.getByOffset("0")}.x)`:B.getByOffset("global_idx"))):f=`
497            let outputIndices = ${A.offsetToIndices("global_idx * 4u")};
498            let offsetA = ${m.broadcastedIndicesToOffset("outputIndices",A)};
499            let offsetB = ${B.broadcastedIndicesToOffset("outputIndices",A)};
500            ${A.setByOffset("global_idx",g(i||_?m.getByOffset("offsetA / 4u"):`${m.type.value}(${m.getByOffset("offsetA / 4u")}[offsetA % 4u])`,i||w?B.getByOffset("offsetB / 4u"):`${B.type.value}(${B.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}
501          `}else f=A.setByOffset("global_idx",g(m.getByOffset("global_idx"),B.getByOffset("global_idx")));else{if(!a)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let h=(P,_,w="")=>{let b=`aData[indexA${_}][componentA${_}]`,v=`bData[indexB${_}][componentB${_}]`;return`
502            let outputIndices${_} = ${A.offsetToIndices(`global_idx * 4u + ${_}u`)};
503            let offsetA${_} = ${m.broadcastedIndicesToOffset(`outputIndices${_}`,A)};
504            let offsetB${_} = ${B.broadcastedIndicesToOffset(`outputIndices${_}`,A)};
505            let indexA${_} = offsetA${_} / 4u;
506            let indexB${_} = offsetB${_} / 4u;
507            let componentA${_} = offsetA${_} % 4u;
508            let componentB${_} = offsetB${_} % 4u;
509            ${P}[${_}] = ${w}(${c(b,v)});
510          `};p===9?f=`
511            var data = vec4<u32>(0);
512            ${h("data",0,"u32")}
513            ${h("data",1,"u32")}
514            ${h("data",2,"u32")}
515            ${h("data",3,"u32")}
516            outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:f=`
517            ${h("outputData[global_idx]",0)}
518            ${h("outputData[global_idx]",1)}
519            ${h("outputData[global_idx]",2)}
520            ${h("outputData[global_idx]",3)}
521          `}return`
522        ${e.registerUniform("vec_size","u32").declareVariables(m,B,A)}
523
524        ${d??""}
525
526        ${e.mainStart()}
527        ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
528        ${f}
529      }`},hy=(e,t,r,n,s,a,i=r.dataType)=>{let o=r.dims.map(m=>Number(m)??1),l=n.dims.map(m=>Number(m)??1),u=!Te.areEqual(o,l),p=o,d=Te.size(o),c=!1,g=!1,A=[u];
vendor: 19,242 bytes, lines 529-834
529if(u){let m=xo.calcShape(o,l,!1);if(!m)throw new Error("Can't perform binary op on the given tensors");p=m.slice(),d=Te.size(p);let B=Te.size(o)===1,f=Te.size(l)===1,h=o.length>0&&o[o.length-1]%4===0,P=l.length>0&&l[l.length-1]%4===0;A.push(B),A.push(f),A.push(h),A.push(P);let _=1;for(let w=1;w<p.length;w++){let b=o[o.length-w],v=l[l.length-w];if(b===v)_*=b;else break}_%4===0?(g=!0,c=!0):(B||f||h||P)&&(c=!0)}else c=!0;return A.push(c),{name:e,shaderCache:{hint:t+A.map(m=>m.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:m=>Ay(m,o,l,p,c,u,g,s,r.dataType,n.dataType,i,a),getRunData:()=>({outputs:[{dims:p,dataType:i}],dispatchGroup:{x:Math.ceil(d/64/4)},programUniforms:[{type:12,data:Math.ceil(Te.size(p)/4)},...Dt(o,l,p)]})}},Ns=(e,t,r,n,s,a)=>{e.compute(hy(t,s??"",e.inputs[0],e.inputs[1],r,n,a))},my=e=>{Ns(e,"Add",(t,r)=>`${t}+${r}`)},fy=e=>{Ns(e,"Div",(t,r)=>`${t}/${r}`)},_y=e=>{Ns(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},wy=e=>{Ns(e,"Mul",(t,r)=>`${t}*${r}`)},yy=e=>{let t=Ye("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;Ns(e,"Pow",{scalar:(r,n)=>`pow_custom(${r},${n})`,vector:(r,n)=>`pow_vector_custom(${r},${n})`},`
530    fn pow_custom(a : ${t}, b : ${t}) -> ${t} {
531      if (b == ${t}(0.0)) {
532        return ${t}(1.0);
533      } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {
534        return ${t}(pow(f32(a), f32(b))); // NaN
535      }
536      return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b))));
537    }
538    fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {
539      // TODO: implement vectorized pow
540      return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));
541    }
542      `)},by=e=>{Ns(e,"Sub",(t,r)=>`${t}-${r}`)},Py=e=>{Ns(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},My=e=>{Ns(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},vy=e=>{Ns(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},By=e=>{Ns(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}}),xy,Ey,Dy,Iy,Ty,Cy,kk=Je(()=>{zt(),Kt(),an(),er(),xy=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");let r=0,n=e[r],s=n.dataType,a=n.dims.length;e.forEach((i,o)=>{if(o!==r){if(i.dataType!==s)throw new Error("input tensors should be one type");if(i.dims.length!==a)throw new Error("input tensors should have the same shape");i.dims.forEach((l,u)=>{if(u!==t&&l!==n.dims[u])throw new Error("non concat dimensions must match")})}})},Ey=(e,t)=>`
543  fn calculateInputIndex(index: u32) -> u32 {
544    let sizeInConcatAxis = array<u32, ${e}u>(${t});
545    for (var i: u32 = 0u; i < ${e}; i += 1u ) {
546      if (index < sizeInConcatAxis[i]) {
547        return i;
548      }
549    }
550    return ${e}u;
551  }`,Dy=(e,t)=>{let r=e.length,n=[];for(let s=0;s<r;++s){let a=t.setByOffset("global_idx",e[s].getByIndices("indices"));r===1?n.push(a):s===0?n.push(`if (inputIndex == ${s}u) { ${a} }`):s===r-1?n.push(`else { ${a} }`):n.push(`else if (inputIndex == ${s}) { ${a} }`)}return n.join(`
552`)},Iy=(e,t,r,n)=>{let s=Te.size(r),a=new Array(e.length),i=new Array(e.length),o=0,l=[],u=[],p=[{type:12,data:s}];for(let m=0;m<e.length;++m)o+=e[m].dims[t],a[m]=o,u.push(e[m].dims.length),i[m]=Ye(`input${m}`,n,u[m]),l.push("rank"),p.push({type:12,data:a[m]});for(let m=0;m<e.length;++m)p.push(...Dt(e[m].dims));p.push(...Dt(r));let d=bt("output",n,r.length),c=d.indicesGet("indices",t),g=Array.from(Array(a.length).keys()).map(m=>`uniforms.sizeInConcatAxis${m}`).join(","),A=m=>`
553
554  ${(()=>{m.registerUniform("outputSize","u32");for(let B=0;B<e.length;B++)m.registerUniform(`sizeInConcatAxis${B}`,"u32");return m.declareVariables(...i,d)})()}
555
556  ${Ey(a.length,g)}
557
558  ${m.mainStart()}
559    ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
560
561    var indices = ${d.offsetToIndices("global_idx")};
562
563    let inputIndex = calculateInputIndex(${c});
564    if (inputIndex != 0u) {
565      let sizeInConcatAxis = array<u32, ${a.length}u>(${g});
566      ${c} -= sizeInConcatAxis[inputIndex - 1u];
567    }
568
569    ${Dy(i,d)}
570  }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:l},getRunData:()=>({outputs:[{dims:r,dataType:n}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:p}),getShaderSource:A}},Ty=(e,t)=>{let r=e.inputs,n=r[0].dims,s=Te.normalizeAxis(t.axis,n.length);xy(r,s);let a=n.slice();a[s]=r.reduce((o,l)=>o+(l.dims.length>s?l.dims[s]:0),0);let i=r.filter(o=>Te.size(o.dims)>0);e.compute(Iy(i,s,a,r[0].dataType),{inputs:i})},Cy=e=>br({axis:e.axis})}),Si,ki,Oi,eg,Gi=Je(()=>{zt(),Kt(),Si=(e,t,r="f32")=>{switch(e.activation){case"Relu":return`value = max(value, ${t}(0.0));`;case"Sigmoid":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${t}(${r}(uniforms.clip_min)), ${t}(${r}(uniforms.clip_max)));`;case"HardSigmoid":return`value = max(${t}(0.0), min(${t}(1.0), ${r}(uniforms.alpha) * value + ${r}(uniforms.beta)));`;case"LeakyRelu":return`value = select(${r}(uniforms.alpha) * value, value, value >= ${t}(0.0));`;case"Tanh":return`let e2x = exp(-2.0 * abs(value));
571              value = sign(value) * (1.0 - e2x) / (1.0 + e2x);
572        `;case"":return"";default:throw new Error(`Unsupported activation ${e.activation}`)}},ki=(e,t)=>{e.activation==="Clip"?t.push({type:1,data:e.clipMax},{type:1,data:e.clipMin}):e.activation==="HardSigmoid"?t.push({type:1,data:e.alpha},{type:1,data:e.beta}):e.activation==="LeakyRelu"&&t.push({type:1,data:e.alpha})},Oi=(e,t)=>{e.activation==="Clip"?t.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}):e.activation==="HardSigmoid"?t.push({name:"alpha",type:"f32"},{name:"beta",type:"f32"}):e.activation==="LeakyRelu"&&t.push({name:"alpha",type:"f32"})},eg=e=>{let t=e?.activation||"";if(t==="HardSigmoid"){let[r,n]=e?.activation_params||[.2,.5];return{activation:t,alpha:r,beta:n}}else if(t==="Clip"){let[r,n]=e?.activation_params||[e_,t_];return{activation:t,clipMax:n,clipMin:r}}else if(t==="LeakyRelu"){let[r]=e?.activation_params||[.01];return{activation:t,alpha:r}}return{activation:t}}}),Cn,$y,tg=Je(()=>{Cn=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},$y=e=>`
573      ${e?"value = value + getBiasByOutputCoords(coords);":""}
574      `}),Sy,Ok=Je(()=>{Sy=e=>`
575fn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 {
576  return dot(coords, vec4<i32>(
577      shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));
578}
579fn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 {
580  return dot(coords, vec4<i32>(
581    i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));
582}
583`}),El,rg,ng=Je(()=>{zt(),Kt(),er(),Gi(),El=(e,t,r,n,s)=>{let a=n-r;return`
584      ${Array.from({length:r}).map((i,o)=>`
585      if (${Bt(t.shape,o,t.rank)} != 1) {
586        ${t.indicesSet(e,o,Bt(s,o+a,n))}
587      } else {
588        ${t.indicesSet(e,o,0)}
589      }`).join("")}
590`},rg=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i[i.length-2],u=o[o.length-1],p=i[i.length-1],d=Jr(u),c=Jr(p),g=Jr(l),A=Te.size(r)/d/g,m=e.length>2,B=n?n.slice(0,-2):r.slice(0,-2),f=[Te.size(B),l,u],h=[{type:12,data:A},{type:12,data:l},{type:12,data:u},{type:12,data:p}];ki(t,h),h.push(...Dt(B,i,o)),m&&h.push(...Dt(e[2].dims)),h.push(...Dt(f));let P=_=>{let w=jp("batch_dims",e[0].dataType,B.length),b=Ye("a",e[0].dataType,i.length,c),v=Ye("b",e[1].dataType,o.length,d),y=bt("output",e[0].dataType,f.length,d),$=vn(y.type.tensor),k=Si(t,y.type.value,$),W=[b,v],j="";if(m){let L=s?d:1;W.push(Ye("bias",e[2].dataType,e[2].dims.length,L)),j=`${s?`value += bias[col / ${L}];`:`value += ${y.type.value}(bias[row + i]);`}`}let F=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];Oi(t,F);let R=()=>{let L=`var a_data: ${b.type.value};`;for(let Q=0;Q<c;Q++)L+=`
591              let b_data${Q} = b[(b_offset + (k + ${Q}) * uniforms.N + col) / ${d}];`;for(let Q=0;Q<g;Q++){L+=`a_data = a[(a_offset + (row + ${Q}) * uniforms.K + k) / ${c}];`;for(let ne=0;ne<c;ne++)L+=`
592            values[${Q}] = fma(${v.type.value}(a_data${c===1?"":`[${ne}]`}), b_data${ne}, values[${Q}]);
593`}return L};return`
594  ${_.registerUniforms(F).registerInternalVariables(w).declareVariables(...W,y)}
595  ${_.mainStart()}
596    ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
597    let col = (global_idx % (uniforms.N / ${d})) * ${d};
598    var index1 = global_idx / (uniforms.N / ${d});
599    let stride1 = uniforms.M / ${g};
600    let row = (index1 % stride1) * ${g};
601    let batch = index1 / stride1;
602
603    ${r.length===2?"":`let batch_indices = ${w.offsetToIndices("batch")};`}
604
605    var a_indices: ${b.type.indices};
606    ${El("a_indices",b,b.rank-2,w.rank,"batch_indices")}
607    ${b.indicesSet("a_indices",b.rank-2,0)}
608    ${b.indicesSet("a_indices",b.rank-1,0)}
609    let a_offset = ${b.indicesToOffset("a_indices")};
610
611    var b_indices: ${v.type.indices};
612    ${El("b_indices",v,v.rank-2,w.rank,"batch_indices")}
613    ${v.indicesSet("b_indices",v.rank-2,0)}
614    ${v.indicesSet("b_indices",v.rank-1,0)}
615    let b_offset = ${v.indicesToOffset("b_indices")};
616    var values: array<${y.type.value}, ${g}>;
617    for (var k: u32 = 0u; k < uniforms.K; k = k + ${c}) {
618      ${R()}
619    }
620    for (var i = 0u; i < ${g}u; i++) {
621      var value = values[i];
622      ${j}
623      ${k}
624      let cur_indices = ${y.type.indices}(batch, row + i, col);
625      let offset = ${y.indicesToOffset("cur_indices")};
626      ${y.setByOffset(`offset / ${d}`,"value")};
627    }
628  }
629  `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activation};${d};${c};${g};${s}`,inputDependencies:m?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:h}),getShaderSource:P}}}),ky,Oy,sg,ag,Gy,ig,zy,oc,og=Je(()=>{zt(),Kt(),er(),Gi(),ng(),tg(),ky=(e,t)=>e?`
630        mm_Asub[inputRow][inputCol] = mm_readA(batch,
631          kStart + inputRow,
632          globalRowStart / innerElementSize + inputCol${t?", batchIndices":""});
633        `:`
634        mm_Asub[inputRow][inputCol] = mm_readA(batch,
635          globalRow + innerRow,
636          kStart / innerElementSize + inputCol${t?", batchIndices":""});
637        `,Oy=(e,t)=>e?`
638        let ACached0 = mm_Asub[k * innerElementSize][localRow];
639        let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];
640        let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];
641        ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}
642        for (var i = 0; i < rowPerThread; i = i + 1) {
643          acc[i] = BCached0 * ACached0[i] + acc[i];
644          acc[i] = BCached1 * ACached1[i] + acc[i];
645          acc[i] = BCached2 * ACached2[i] + acc[i];
646          ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}
647        }`:`
648        for (var i = 0; i < rowPerThread; i = i + 1) {
649          let ACached = mm_Asub[tileRow + i][k];
650          acc[i] = BCached0 * ACached.x + acc[i];
651          acc[i] = BCached1 * ACached.y + acc[i];
652          acc[i] = BCached2 * ACached.z + acc[i];
653          ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"}
654        }`,sg=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32)=>{let l=t[1]*e[1],u=t[0]*e[0],p=s?l:a,d=s?a:l,c=p/t[0],g=a/t[1];if(!((s&&c===4&&e[1]===4||!s&&(c===3||c===4))&&p%t[0]===0&&a%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${s} is true, innerElementSize ${c} and workPerThread[1] ${e[1]} must be 4.
655      Otherwise, innerElementSize ${c} must be 3 or 4.
656  tileAWidth ${p} must be divisible by workgroupSize[0]${t[0]}. tileInner ${a} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`
657var<workgroup> mm_Asub: array<array<vec${c}<${r}>, ${p/c}>, ${d}>;
658var<workgroup> mm_Bsub: array<array<vec4<${r}>, ${u/e[0]}>, ${a}>;
659
660const rowPerThread = ${e[1]};
661const colPerThread = ${e[0]};
662const innerElementSize = ${c};
663const tileInner = ${a};
664
665@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})
666fn main(@builtin(local_invocation_id) localId : vec3<u32>,
667        @builtin(global_invocation_id) globalId : vec3<u32>,
668        @builtin(workgroup_id) workgroupId : vec3<u32>) {
669  let localRow = i32(localId.y);
670  let tileRow = localRow * rowPerThread;
671  let tileCol = i32(localId.x);
672
673  let globalRow =i32(globalId.y) * rowPerThread;
674  let globalCol = i32(globalId.x);
675  let batch = ${i?"0":"i32(globalId.z)"};
676  ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""}
677  let globalRowStart = i32(workgroupId.y) * ${l};
678
679  let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};
680  var kStart = ${i?`i32(globalId.z) * ${o}`:"0"};
681
682  var acc: array<vec4<${r}>, rowPerThread>;
683
684  // Loop over shared dimension.
685  let tileRowB = localRow * ${g};
686  for (var t = 0; t < num_tiles; t = t + 1) {
687      // Load one tile of A into local memory.
688      for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
689          let inputRow = tileRow + innerRow;
690          let inputCol = tileCol;
691          ${ky(s,n)}
692      }
693
694      // Load one tile of B into local memory.
695      for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) {
696          let inputRow = tileRowB + innerRow;
697          let inputCol = tileCol;
698          mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${n?", batchIndices":""});
699      }
700      kStart = kStart + tileInner;
701      workgroupBarrier();
702
703      // Compute acc values for a single thread.
704      for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {
705          let BCached0 = mm_Bsub[k * innerElementSize][tileCol];
706          let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];
707          let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];
708          ${c===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}
709
710          ${Oy(s,c)}
711      }
712
713      workgroupBarrier();
714  }
715
716  for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
717      mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);
718  }
719}`},ag=(e,t)=>e?`
720            mm_Asub[inputRow][inputCol] = mm_readA(batch,
721              kStart + inputRow,
722              globalRowStart + inputCol${t?", batchIndices":""});
723            `:`
724            mm_Asub[inputRow][inputCol] = mm_readA(batch,
725              globalRowStart + inputRow,
726              kStart + inputCol${t?", batchIndices":""});
727            `,Gy=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",ig=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32,l=!1)=>{let u=e[1]*t[1],p=e[0]*t[0],d=s?u:a,c=s?a:u;if(!(c%t[1]===0&&d%t[0]===0&&a%t[1]===0))throw new Error(`tileAHight ${c} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}, tileInner ${a} must be divisible by workgroupSize[1]${t[1]}`);let g=c/t[1],A=d/t[0],m=a/t[1],B=l?`
728    let localRow = i32(localId.y);
729    let localCol = i32(localId.x);
730    let globalRowStart = i32(workgroupId.y) * ${u};
731    let globalColStart = i32(workgroupId.x) * ${p};
732
733    // Loop over shared dimension.
734    for (var t = 0; t < num_tiles; t = t + 1) {
735      // Load one tile of A into local memory.
736      for (var inputRow = localRow; inputRow < ${c}; inputRow = inputRow + ${t[1]}) {
737        for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) {
738          ${ag(s,n)}
739        }
740      }
741      // Load one tile of B into local memory.
742      for (var inputRow = localRow; inputRow < ${a}; inputRow = inputRow + ${t[1]}) {
743            for (var inputCol = localCol; inputCol < ${p}; inputCol = inputCol + ${t[0]}) {
744          mm_Bsub[inputRow][inputCol] = mm_readB(batch,
745            kStart + inputRow,
746            globalColStart + inputCol${n?", batchIndices":""});
747        }
748      }
749      kStart = kStart + tileInner;
750      workgroupBarrier();
751
752      // Compute acc values for a single thread.
753      var BCached : array<${r}, colPerThread>;
754      for (var k = 0; k < tileInner; k = k + 1) {
755        for (var inner = 0; inner < colPerThread; inner = inner + 1) {
756          BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];
757        }
758        for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
759          let ACached = ${s?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}
760          for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
761            acc[innerRow][innerCol] = acc[innerRow][innerCol] +
762                ACached * BCached[innerCol];
763          }
764        }
765      }
766      workgroupBarrier();
767    }
768    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
769      let gRow = globalRowStart + localRow + innerRow * ${t[1]};
770      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
771        let gCol = globalColStart + localCol + innerCol * ${t[0]};
772        mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);
773      }
774    }
775    `:`
776let tileRow = i32(localId.y) * rowPerThread;
777let tileCol = i32(localId.x) * colPerThread;
778
779let globalRow = i32(globalId.y) * rowPerThread;
780let globalCol = i32(globalId.x) * colPerThread;
781let globalRowStart = i32(workgroupId.y) * ${u};
782
783let tileRowA = i32(localId.y) * ${g};
784let tileColA = i32(localId.x) * ${A};
785let tileRowB = i32(localId.y) * ${m};
786// Loop over shared dimension.
787for (var t = 0; t < num_tiles; t = t + 1) {
788  // Load one tile of A into local memory.
789  for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) {
790    for (var innerCol = 0; innerCol < ${A}; innerCol = innerCol + 1) {
791      let inputRow = tileRowA + innerRow;
792      let inputCol = tileColA + innerCol;
793      ${ag(s,n)}
794    }
795  }
796
797  // Load one tile of B into local memory.
798  for (var innerRow = 0; innerRow < ${m}; innerRow = innerRow + 1) {
799    for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
800      let inputRow = tileRowB + innerRow;
801      let inputCol = tileCol + innerCol;
802      mm_Bsub[inputRow][inputCol] = mm_readB(batch,
803        kStart + inputRow,
804        globalCol + innerCol${n?", batchIndices":""});
805    }
806  }
807  kStart = kStart + tileInner;
808  workgroupBarrier();
809
810  // Compute acc values for a single thread.
811  var BCached : array<${r}, colPerThread>;
812  for (var k = 0; k < tileInner; k = k + 1) {
813    for (var inner = 0; inner < colPerThread; inner = inner + 1) {
814      BCached[inner] = mm_Bsub[k][tileCol + inner];
815    }
816
817    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
818      ${Gy(s)}
819      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
820        acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];
821      }
822    }
823  }
824
825  workgroupBarrier();
826}
827
828for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
829  for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
830    mm_write(batch, globalRow + innerRow, globalCol + innerCol,
831        acc[innerRow][innerCol]);
832  }
833}
834`;return`
835  var<workgroup> mm_Asub : array<array<${r}, ${d}>, ${c}>;
836  var<workgroup> mm_Bsub : array<array<${r}, ${p}>, ${a}>;
837  const rowPerThread = ${e[1]};
838  const colPerThread = ${e[0]};
839  const tileInner = ${a};
840
841@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})
842fn main(@builtin(local_invocation_id) localId : vec3<u32>,
843        @builtin(global_invocation_id) globalId : vec3<u32>,
844        @builtin(workgroup_id) workgroupId : vec3<u32>) {
845    let batch = ${i?"0":"i32(globalId.z)"};
846    ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""}
847    let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};
848    var kStart = ${i?`i32(globalId.z) * ${o}`:"0"};
849
850    var acc : array<array<${r}, colPerThread>, rowPerThread>;
851    ${B}
852  }
853`},zy=(e,t,r,n,s=!1)=>{let[a,i,o,l]=n,u=vn(n[0].type.tensor);return`
854    fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Cn(e,u)} {
855      var value = ${Cn(e,u)}(0.0);
856      let col = colIn * ${e};
857      if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)
858      {
859        var aIndices: ${i.type.indices};
860        ${El("aIndices",i,i.rank-2,a.rank,"batchIndices")}
861        ${i.indicesSet("aIndices",i.rank-2,"u32(row)")}
862        ${i.indicesSet("aIndices",i.rank-1,"u32(colIn)")}
863        value = ${i.getByIndices("aIndices")};
864      }
865      return value;
866    }
867
868    fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Cn(e,u)} {
869      var value = ${Cn(e,u)}(0.0);
870      let col = colIn * ${e};
871      if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)
872      {
873        var bIndices: ${o.type.indices};
874        ${El("bIndices",o,o.rank-2,a.rank,"batchIndices")}
875        ${o.indicesSet("bIndices",o.rank-2,"u32(row)")}
876        ${o.indicesSet("bIndices",o.rank-1,"u32(colIn)")}
877        value = ${o.getByIndices("bIndices")};
878      }
879      return value;
880    }
881
882    fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Cn(e,u)}) {
883      let col = colIn * ${e};
884      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {
885        var value = valueIn;
886        let coords = vec3<i32>(batch, row, colIn);
887        ${t?`value = value + ${s?"bias[colIn]":`${Cn(e,u)}(bias[row])`};`:""}
888        ${r}
889        ${l.setByIndices("vec3<u32>(coords)","value")}
890      }
891    }
892    `},oc=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i.slice(0,-2),u=o.slice(0,-2),p=n?n.slice(0,-2):r.slice(0,-2),d=Te.size(p),c=i[i.length-2],g=i[i.length-1],A=o[o.length-1],m=g%4===0&&A%4===0,B=c<=8?[4,1,1]:[4,4,1],f=[8,8,1],h=[Math.ceil(A/f[0]/B[0]),Math.ceil(c/f[1]/B[1]),Math.ceil(d/f[2]/B[2])],P=m?4:1,_=[...l,c,g/P],w=_.length,b=[...u,g,A/P],v=b.length,y=[d,c,A/P],$=[{type:6,data:c},{type:6,data:A},{type:6,data:g}];ki(t,$),$.push(...Dt(p,_,b));let k=["rank","rank"],W=e.length>2;W&&($.push(...Dt(e[2].dims)),k.push("rank")),$.push(...Dt(y));let j=F=>{let R=p.length,L=jp("batchDims",e[0].dataType,R,1),Q=vn(e[0].dataType),ne=Ye("a",e[0].dataType,w,P),re=Ye("b",e[1].dataType,v,P),ce=bt("result",e[0].dataType,y.length,P),ge=[ne,re];if(W){let oe=s?P:1;ge.push(Ye("bias",e[2].dataType,e[2].dims.length,oe))}let q=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];Oi(t,q);let V=vn(ce.type.tensor),U=Si(t,ce.type.value,V),N=zy(P,W,U,[L,ne,re,ce],s);return`
893  ${F.registerUniforms(q).registerInternalVariables(L).declareVariables(...ge,ce)}
894  ${N}
895  ${m?sg(B,f,Q,L):ig(B,f,Q,L)}
896                   `};return{name:"MatMul",shaderCache:{hint:`${B};${t.activation};${m};${s}`,inputDependencies:k},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:h[0],y:h[1],z:h[2]},programUniforms:$}),getShaderSource:j}}}),Fy,Ly,Gk=Je(()=>{zt(),Ia(),er(),Gi(),tg(),Ok(),og(),Fy=(e,t,r,n,s=!1,a,i=4,o=4,l=4,u="f32")=>{let p=$=>{switch($){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${u}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},d=$=>{switch($){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},c=e?`
897    let coord = vec4<i32>(batch, xRow, xCol, xCh);
898    `:`
899    let coord = vec4<i32>(batch, xCh, xRow, xCol);
900    `,g=e?`
901    let coords = vec4<i32>(
902      batch,
903      row / outWidth,
904      row % outWidth,
905      col);
906    `:`
907    let coords = vec4<i32>(
908      batch,
909      row,
910      col / outWidth,
911      col % outWidth);
912    `,A=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",m=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",B=e?"row":"col",f=e?"col":"row",h=`
913    let inChannels = i32(uniforms.w_shape[2]);
914    let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};
915    let outRow = ${B} / outWidth;
916    let outCol = ${B} % outWidth;
917
918    let WRow = ${f} / (i32(uniforms.w_shape[1]) * inChannels);
919    let WCol = ${f} / inChannels % i32(uniforms.w_shape[1]);
920    let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];
921    let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];
922    let xCh = ${f} % inChannels;
923    var resData = ${Cn(i,u)}(0.0);
924    // The bounds checking is always needed since we use it to pad zero for
925    // the 'same' padding type.
926    if (xRow >= 0 && xRow < ${A} && xCol >= 0 && xCol < ${m}) {
927      ${c}
928      let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape));
929      ${p(i)}
930    }
931    return resData;`,P=e?t&&n?`
932    let col = colIn * ${i};
933    ${h}`:`
934    let col = colIn * ${i};
935    if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {
936      ${h}
937    }
938    return ${Cn(i,u)}(0.0);`:n&&r?`
939    let col = colIn * ${i};
940    ${h}`:`
941    let col = colIn * ${i};
942    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {
943      ${h}
944    }
945    return ${Cn(i,u)}(0.0);`,_=e?n&&r?d(o):`
946    let col = colIn * ${o};
947    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {
948      ${d(o)}
949    }
950    return ${Cn(o,u)}(0.0);`:`
951    let col = colIn * ${o};
952    if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) {
953      ${d(o)}
954    }
955    return ${Cn(o,u)}(0.0);`,w=Cn(l,u),b=Cn(e?i:o,u),v=Cn(e?o:i,u),y=Si(a,w,u);return`
956    fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${b} {
957      ${e?P:_}
958    }
959
960    fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${v} {
961      ${e?_:P}
962    }
963
964    fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${w}) {
965      let col = colIn * ${l};
966      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)
967      {
968      var value = valueIn;
969      let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};
970      ${g}
971      ${$y(s)}
972      ${y}
973      setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);
974      }
975    }`},Ly=(e,t,r,n,s,a,i,o,l)=>{let u=t.format==="NHWC",p=u?e[0].dims[3]:e[0].dims[1],d=r[0],c=u?r[2]:r[3],g=u?r[1]:r[2],A=u?r[3]:r[1],m=u&&(p%4===0||p%3===0)&&A%4===0,B=u?A:c*g,f=u?c*g:A,h=[8,8,1],P=n<=8?[4,1,1]:[4,4,1],_=[Math.ceil(B/h[0]/P[0]),Math.ceil(f/h[1]/P[1]),Math.ceil(d/h[2]/P[2])];lr("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${_}`);let w=m?u&&p%4!==0?3:4:1,b=h[1]*P[1],v=h[0]*P[0],y=Math.max(h[0]*w,h[1]),$=n%b===0,k=s%v===0,W=a%y===0,j=m?[w,4,4]:[1,1,1],F=[{type:6,data:n},{type:6,data:s},{type:6,data:a},{type:6,data:[t.pads[0],t.pads[1]]},{type:6,data:t.strides},{type:6,data:t.dilations}];ki(t,F),F.push(...Dt(e[0].dims,e[1].dims));let R=["rank","rank"];i&&(F.push(...Dt(e[2].dims)),R.push("rank")),F.push(...Dt(r));let L=Q=>{let ne=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];Oi(t,ne);let re=m?4:1,ce=vn(e[0].dataType),ge=`
976      fn setOutputAtIndex(flatIndex : i32, value : ${m?`vec4<${ce}>`:ce}) {
977        result[flatIndex] = ${m?`vec4<${ce}>`:ce}(value);
978      }
979      fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${m?`vec4<${ce}>`:ce}) {
980        let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3));
981        setOutputAtIndex(flatIndex ${m?"/ 4":""}, value);
982      }`,q=Ye("x",e[0].dataType,e[0].dims.length,w===3?1:w),V=Ye("w",e[1].dataType,e[1].dims.length,re),U=[q,V],N=bt("result",e[0].dataType,r.length,re);if(i){let oe=Ye("bias",e[2].dataType,e[2].dims.length,re);U.push(oe),ge+=`
983        fn getBiasByOutputCoords(coords : vec4<i32>) -> ${m?`vec4<${ce}>`:ce} {
984          return bias[coords.${u?"w":"y"}${m?"/ 4":""}];
985        }`}return`
986        ${Sy("uniforms.result_strides")}
987        //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>,
988        //  outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>,
989        //  dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };
990        ${Q.registerUniforms(ne).declareVariables(...U,N)}
991        ${ge}
992        ${Fy(u,$,k,W,i,t,j[0],j[1],j[2],ce)}
993        ${m?sg(P,h,ce,void 0,!u,y):ig(P,h,ce,void 0,!u,y,!1,void 0,o)}`};return{name:"Conv2DMatMul",shaderCache:{hint:`${t.cacheKey};${w};${m};${$};${k};${W};${b};${v};${y}`,inputDependencies:R},getRunData:()=>({outputs:[{dims:l?l(r):r,dataType:e[0].dataType}],dispatchGroup:{x:_[0],y:_[1],z:_[2]},programUniforms:F}),getShaderSource:L}}}),Ry,lg,Dl,Yy,ug,Ny,jy,Uy,zk=Je(()=>{zt(),Ia(),Kt(),er(),Gi(),tg(),Ry=e=>{let t=1;for(let r=0;r<e.length;r++)t*=e[r];return t},lg=e=>typeof e=="number"?[e,e,e]:e,Dl=(e,t)=>t<=1?e:e+(e-1)*(t-1),Yy=(e,t,r,n=1)=>{let s=Dl(t,n);return Math.floor((e[0]*(r-1)-r+s)/2)},ug=(e,t,r,n,s)=>{s==null&&(s=Yy(e,t[0],n[0]));let a=[0,0,0,r];for(let i=0;i<3;i++)e[i]+2*s>=t[i]&&(a[i]=Math.trunc((e[i]-t[i]+2*s)/n[i]+1));return a},Ny=(e,t,r,n,s,a,i,o,l,u)=>{let p,d,c,g;if(e==="VALID"&&(e=0),typeof e=="number"){p={top:e,bottom:e,left:e,right:e,front:e,back:e};let A=ug([t,r,n,1],[o,l,u],1,[s,a,i],e);d=A[0],c=A[1],g=A[2]}else if(Array.isArray(e)){if(!e.every((m,B,f)=>m===f[0]))throw Error(`Unsupported padding parameter: ${e}`);p={top:e[0],bottom:e[1],left:e[2],right:e[3],front:e[4],back:e[5]};let A=ug([t,r,n,1],[o,l,u],1,[s,a,i],e[0]);d=A[0],c=A[1],g=A[2]}else if(e==="SAME_UPPER"){d=Math.ceil(t/s),c=Math.ceil(r/a),g=Math.ceil(n/i);let A=(d-1)*s+o-t,m=(c-1)*a+l-r,B=(g-1)*i+u-n,f=Math.floor(A/2),h=A-f,P=Math.floor(m/2),_=m-P,w=Math.floor(B/2),b=B-w;p={top:P,bottom:_,left:w,right:b,front:f,back:h}}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:p,outDepth:d,outHeight:c,outWidth:g}},jy=(e,t,r,n,s,a=!1,i="channelsLast")=>{let o,l,u,p,d;if(i==="channelsLast")[o,l,u,p,d]=e;else if(i==="channelsFirst")[o,d,l,u,p]=e;else throw new Error(`Unknown dataFormat ${i}`);let[c,,g,A,m]=t,[B,f,h]=lg(r),[P,_,w]=lg(n),b=Dl(g,P),v=Dl(A,_),y=Dl(m,w),{padInfo:$,outDepth:k,outHeight:W,outWidth:j}=Ny(s,l,u,p,B,f,h,b,v,y),F=a?c*d:c,R=[0,0,0,0,0];return i==="channelsFirst"?R=[o,F,k,W,j]:i==="channelsLast"&&(R=[o,k,W,j,F]),{batchSize:o,dataFormat:i,inDepth:l,inHeight:u,inWidth:p,inChannels:d,outDepth:k,outHeight:W,outWidth:j,outChannels:F,padInfo:$,strideDepth:B,strideHeight:f,strideWidth:h,filterDepth:g,filterHeight:A,filterWidth:m,effectiveFilterDepth:b,effectiveFilterHeight:v,effectiveFilterWidth:y,dilationDepth:P,dilationHeight:_,dilationWidth:w,inShape:e,outShape:R,filterShape:t}},Uy=(e,t,r,n,s,a)=>{let i=a==="channelsLast";i?e[0].dims[3]:e[0].dims[1];let o=[64,1,1],l={x:r.map((B,f)=>f)},u=[Math.ceil(Ry(l.x.map(B=>r[B]))/o[0]),1,1];lr("verbose",()=>`[conv3d_naive_webgpu] dispatch = ${u}`);let p=1,d=Te.size(r),c=[{type:12,data:d}
vendor: 4,555 bytes, lines 993-1064
993,{type:12,data:n},{type:12,data:s},{type:12,data:t.strides},{type:12,data:t.dilations}];ki(t,c),c.push(...Dt(e[0].dims,e[1].dims));let g=["rank","rank"],A=e.length===3;A&&(c.push(...Dt(e[2].dims)),g.push("rank")),c.push(...Dt(r));let m=B=>{let f=[{name:"output_size",type:"u32"},{name:"filter_dims",type:"u32",length:n.length},{name:"pads",type:"u32",length:s.length},{name:"strides",type:"u32",length:t.strides.length},{name:"dilations",type:"u32",length:t.dilations.length}];Oi(t,f);let h=1,P=vn(e[0].dataType),_=Ye("x",e[0].dataType,e[0].dims.length,p),w=Ye("W",e[1].dataType,e[1].dims.length,h),b=[_,w],v=bt("result",e[0].dataType,r.length,h),y="";if(A){let W=Ye("bias",e[2].dataType,e[2].dims.length,h);b.push(W),y+=`
994        fn getBiasByOutputCoords(coords : array<u32, 5>) -> ${P} {
995          return bias[${i?Bt("coords",4,5):Bt("coords",1,5)}];
996        }`}let $=Cn(p,P),k=Si(t,$,P);return`
997            ${y}
998            fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {
999              let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);
1000              return ${_.getByIndices("aIndices")};
1001            }
1002            fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {
1003              let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);
1004              return ${w.getByIndices("aIndices")};
1005            }
1006          ${B.registerUniforms(f).declareVariables(...b,v)}
1007          ${B.mainStart()}
1008          ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1009              let coords = ${v.offsetToIndices("global_idx")};
1010              let batch = ${Bt("coords",0,_.rank)};
1011              let d2 = ${i?Bt("coords",_.rank-1,_.rank):Bt("coords",1,_.rank)};
1012              let xFRCCorner = vec3<u32>(${i?Bt("coords",1,_.rank):Bt("coords",2,_.rank)},
1013              ${i?Bt("coords",2,_.rank):Bt("coords",3,_.rank)},
1014              ${i?Bt("coords",3,_.rank):Bt("coords",4,_.rank)}) * uniforms.strides - uniforms.pads;
1015              let xFCorner = xFRCCorner.x;
1016              let xRCorner = xFRCCorner.y;
1017              let xCCorner = xFRCCorner.z;
1018              let xShapeY = ${i?Bt("uniforms.x_shape",1,_.rank):Bt("uniforms.x_shape",2,_.rank)};
1019              let xShapeZ = ${i?Bt("uniforms.x_shape",2,_.rank):Bt("uniforms.x_shape",3,_.rank)};
1020              let xShapeW = ${i?Bt("uniforms.x_shape",3,_.rank):Bt("uniforms.x_shape",4,_.rank)};
1021              let xShapeU = ${i?Bt("uniforms.x_shape",4,_.rank):Bt("uniforms.x_shape",1,_.rank)};
1022              let inputDepthNearestVec4 = (xShapeU / 4) * 4;
1023              let inputDepthVec4Remainder = xShapeU % 4;
1024
1025              var value = 0.0;
1026              for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) {
1027                let xF = xFCorner + wF * uniforms.dilations[0];
1028                if (xF < 0 || xF >= xShapeY) {
1029                  continue;
1030                }
1031
1032                for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) {
1033                  let xR = xRCorner + wR * uniforms.dilations[1];
1034                  if (xR < 0 || xR >= xShapeZ) {
1035                    continue;
1036                  }
1037
1038                  for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) {
1039                    let xC = xCCorner + wC * uniforms.dilations[2];
1040                    if (xC < 0 || xC >= xShapeW) {
1041                      continue;
1042                    }
1043
1044                    for (var d1 = 0u; d1 < inputDepthNearestVec4; d1 += 4) {
1045                      ${i?`let xValues = vec4<f32>(
1046                               getX(batch, xF, xR, xC, d1),
1047                               getX(batch, xF, xR, xC, d1 + 1),
1048                               getX(batch, xF, xR, xC, d1 + 2),
1049                               getX(batch, xF, xR, xC, d1 + 3));
1050                            `:`let xValues = vec4<f32>(
1051                               getX(batch, d1, xF, xR, xC),
1052                               getX(batch, d1 + 1, xF, xR, xC),
1053                               getX(batch, d1 + 2, xF, xR, xC),
1054                               getX(batch, d1 + 3, xF, xR, xC));
1055                            `}
1056                            let wValues = vec4<f32>(
1057                              getW(d2, d1, wF, wR, wC),
1058                              getW(d2, d1 + 1, wF, wR, wC),
1059                              getW(d2, d1 + 2, wF, wR, wC),
1060                              getW(d2, d1 + 3, wF, wR, wC));
1061                      value += dot(xValues, wValues);
1062                    }
1063                    if (inputDepthVec4Remainder == 1) {
1064                        ${i?`value += getX(batch, xF, xR, xC, inputDepthNearest
1064Vec4)
1065                          * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC)
1066                          * getW(d2, inputDepthNearestVec4, wF, wR, wC);`}
1067                    } else if (inputDepthVec4Remainder == 2) {
1068                      ${i?`let xValues = vec2<f32>(
1069                        getX(batch, xF, xR, xC, inputDepthNearestVec4),
1070                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1));
1071                      `:`let xValues = vec2<f32>(
1072                        getX(batch, inputDepthNearestVec4, xF, xR, xC),
1073                        getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC));
1074                    `}
1075                    let wValues = vec2<f32>(
1076                      getW(d2, inputDepthNearestVec4, wF, wR, wC),
1077                      getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC));
1078                      value += dot(xValues, wValues);
1079                    } else if (inputDepthVec4Remainder == 3) {
1080                      ${i?`let xValues = vec3<f32>(
1081                        getX(batch, xF, xR, xC, inputDepthNearestVec4),
1082                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1),
1083                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2));
1084                      `:`let xValues = vec3<f32>(
1085                        getX(batch, inputDepthNearestVec4, xF, xR, xC),
1086                        getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC),
1087                        getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC));
1088                    `}
1089                    let wValues = vec3<f32>(
1090                      getW(d2, inputDepthNearestVec4, wF, wR, wC),
1091                      getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC),
1092                      getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC));
1093                      value += dot(xValues, wValues);
1094                    }
1095                  }
1096                }
1097              }
1098              ${A?"value = value + getBiasByOutputCoords(coords)":""};
1099              ${k}
1100              result[global_idx] = f32(value);
1101          }`};return{name:"Conv3DNaive",shaderCache:{hint:`${t.cacheKey};${i};${p};${A}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:u[0],y:u[1],z:u[2]},programUniforms:c}),getShaderSource:m}}}),Wy,Vy,Fk=Je(()=>{zt(),Kt(),er(),Gi(),Wy=(e,t,r,n)=>{let s=e.length>2,a=s?"value += b[output_channel];":"",i=e[0].dims,o=e[1].dims,l=t.format==="NHWC",u=l?r[3]:r[1],p=u/t.group,d=l&&p>=4?Jr(u):1,c=Te.size(r)/d,g=[{type:12,data:c},{type:12,data:t.dilations},{type:12,data:[t.strides[0],t.strides[1]]},{type:12,data:[t.pads[0],t.pads[1]]},{type:12,data:p}];ki(t,g),g.push(...Dt(i,[o[0],o[1],o[2],o[3]/d]));let A=s?["rank","rank","rank"]:["rank","rank"];g.push(...Dt([r[0],r[1],r[2],r[3]/d]));let m=B=>{let f=bt("output",e[0].dataType,r.length,d),h=vn(f.type.tensor),P=Si(t,f.type.value,h),_=Ye("x",e[0].dataType,i.length),w=Ye("w",e[1].dataType,o.length,d),b=[_,w];s&&b.push(Ye("b",e[2].dataType,e[2].dims,d));let v=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:t.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];Oi(t,v);let y=l?`
1102      for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) {
1103        let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];
1104
1105        if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) {
1106          continue;
1107        }
1108
1109        for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) {
1110          let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];
1111          if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) {
1112            continue;
1113          }
1114
1115          for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) {
1116            let input_channel = in_channel_offset + wInChannel;
1117            let xVal = ${_.get("batch","xHeight","xWidth","input_channel")};
1118            let wVal = ${w.get("wHeight","wWidth","wInChannel","output_channel")};
1119            value += xVal * wVal;
1120          }
1121        }
1122      }
1123      `:`
1124      for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {
1125        let input_channel = in_channel_offset + wInChannel;
1126        for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {
1127          let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];
1128
1129          if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) {
1130            continue;
1131          }
1132
1133          for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {
1134            let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];
1135            if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) {
1136              continue;
1137            }
1138
1139            let xVal = ${_.get("batch","input_channel","xHeight","xWidth")};
1140            let wVal = ${w.get("output_channel","wInChannel","wHeight","wWidth")};
1141            value += xVal * wVal;
1142          }
1143        }
1144      }
1145      `;return`
1146  ${B.registerUniforms(v).declareVariables(...b,f)}
1147
1148  ${B.mainStart()}
1149    ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1150
1151    let outputIndices = ${f.offsetToIndices("global_idx")};
1152    let batch: u32 = outputIndices[0];
1153    let output_channel: u32 = outputIndices[${l?3:1}];
1154    let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${l?1:2}
1154], outputIndices[${l?2:3}]) * uniforms.strides - uniforms.pads;
1155    let group_id: u32 = output_channel * ${d} / uniforms.output_channels_per_group;
1156    var in_channel_offset = group_id * uniforms.w_shape[${l?2:1}];
1157
1158    var value: ${f.type.value} = ${f.type.value}(0);
1159    ${y}
1160    ${a}
1161    ${P}
1162    ${f.setByOffset("global_idx","value")}
1163  }`};return{name:"GroupedConv",shaderCache:{hint:`${t.cacheKey}_${d}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},Vy=(e,t,r,n)=>{let s=e.length>2,a=Jr(r[3]),i=Jr(r[2]),o=Te.size(r)/a/i,l=[e[0].dims[0],e[0].dims[1],e[0].dims[2],e[0].dims[3]/a],u=[e[1].dims[0],e[1].dims[1],e[1].dims[2],e[1].dims[3]/a],p=[r[0],r[1],r[2],r[3]/a],d=[{type:12,data:o},{type:6,data:[t.strides[0],t.strides[1]]},{type:6,data:[t.pads[0],t.pads[1]]}];ki(t,d),d.push(...Dt(l,u,p));let c=(i-1)*t.strides[1]+u[1],g=A=>{let m=bt("output",e[0].dataType,p.length,a),B=vn(m.type.tensor),f=Si(t,m.type.value,B),h=Ye("x",e[0].dataType,l.length,a),P=Ye("w",e[1].dataType,u.length,a),_=[h,P];s&&_.push(Ye("b",e[2].dataType,e[2].dims,a));let w=s?"value += b[output_channel];":"",b=[{name:"output_size",type:"u32"},{name:"strides",type:"i32",length:2},{name:"pads",type:"i32",length:2}];return Oi(t,b),`
1164  ${A.registerUniforms(b).declareVariables(..._,m)}
1165  ${A.mainStart()}
1166    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1167    let width0 = uniforms.output_shape[3];
1168    let output_channel = global_idx % width0;
1169    var index1 = global_idx / width0;
1170    let width1 = uniforms.output_shape[2] / ${i}u;
1171    let col = (index1 % width1) * ${i}u;
1172    index1 = index1 / width1;
1173    let row = index1 % uniforms.output_shape[1];
1174    let batch = index1 / uniforms.output_shape[1];
1175
1176    let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads;
1177
1178    var x_vals: array<${h.type.value}, ${c}>;
1179    var values: array<${m.type.value}, ${i}>;
1180    let input_channel = output_channel;
1181    // Use constant instead of uniform can give better performance for w's height/width.
1182    for (var w_height: u32 = 0u; w_height < ${u[0]}; w_height++) {
1183      let x_height = x_corner.x + i32(w_height);
1184      if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) {
1185        for (var i = 0; i < ${c}; i++) {
1186          let x_width = x_corner.y + i;
1187          if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) {
1188            x_vals[i] = ${h.get("batch","u32(x_height)","u32(x_width)","input_channel")};
1189          } else {
1190            x_vals[i] = ${h.type.value}(0);
1191          }
1192        }
1193        for (var w_width: u32 = 0u; w_width < ${u[1]}; w_width++) {
1194          let w_val = ${P.get("w_height","w_width","0","output_channel")};
1195          for (var i = 0u; i < ${i}u; i++) {
1196            values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]);
1197          }
1198        }
1199      }
1200    }
1201
1202    for (var i = 0u; i < ${i}u; i++) {
1203      var value = values[i];
1204      ${w}
1205      ${f}
1206      ${m.set("batch","row","col + i","output_channel","value")};
1207    }
1208  }`};return{name:"GroupedConv-Vectorize",shaderCache:{hint:`${t.cacheKey};${a};${i};${c};${u[0]};${u[1]}`,inputDependencies:s?["rank","rank","type"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:d}),getShaderSource:g}}}),Qy,lc,Hy,uc,cg,dg,Ky,qy,pg,Lk=Je(()=>{Kt(),Gk(),zk(),og(),Fk(),Gi(),ng(),Va(),Qy=(e,t,r,n,s,a)=>{let i=e[0],o=e.slice(a?1:2,a?3:4),l=o.length,u=t[0],p=t.slice(2).map((c,g)=>c+(c-1)*(r[g]-1)),d=o.map((c,g)=>c+n[g]+n[g+l]).map((c,g)=>Math.floor((c-p[g]+s[g])/s[g]));return d.splice(0,0,i),d.splice(a?3:1,0,u),d},lc=[2,3,1,0],Hy=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length>5)throw new Error("greater than 5D is not supported");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[1]*t.group;if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[
vendor: 20,888 bytes, lines 1208-1323
12080]))throw new Error("invalid bias");let s=e[0].dims.length-2;if(t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},uc=(e,t)=>{let r=e.kernelShape.slice();r.length<t[1].dims.length-2&&r.push(...Array(t[1].dims.length-2-r.length).fill(0));for(let a=2;a<t[1].dims.length;++a)r[a-2]===0&&(r[a-2]=t[1].dims[a]);let n=e.pads.slice();Ju.adjustPadsBasedOnAutoPad(t[0].dims,e.strides,e.dilations,r,n,e.format==="NHWC",e.autoPad);let s=Object.assign({},e);return Object.assign(s,{kernelShape:r,pads:n}),s},cg=e=>{let t=eg(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],s=e.dilations,a=e.group,i=e.kernel_shape,o=e.pads,l=e.strides,u=e.w_is_const();return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},dg=(e,t,r,n)=>{let s=r.format==="NHWC",a=Qy(t[0].dims,t[1].dims,r.dilations,r.pads,r.strides,s);if(r.group!==1){let b=[t[0]];if(s){let v=e.kernelCustomData.wT??e.compute(ns(t[1],lc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=v),b.push(v)}else b.push(t[1]);t.length===3&&b.push(t[2]),!e.adapterInfo.isArchitecture("ampere")&&s&&t[1].dims[0]===r.group&&t[1].dims[1]===1&&r.dilations[0]===1&&r.dilations[1]===1?e.compute(Vy(b,r,a,n),{inputs:b}):e.compute(Wy(b,r,a,n),{inputs:b});return}let i=t.length===3,o=t[0].dims[s?1:2],l=t[0].dims[s?2:3],u=t[0].dims[s?3:1],p=t[1].dims[2],d=t[1].dims[3],c=a[s?1:2],g=a[s?2:3],A=a[s?3:1],m=s&&p===o&&d===l&&r.pads[0]===0&&r.pads[1]===0;if(m||p===1&&d===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let b=a[0],v,y,$,k=[];if(s){let F=e.kernelCustomData.wT??e.compute(ns(t[1],lc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=F),m){let R=o*l*u;v=t[0].reshape([1,b,R]),y=F.reshape([1,R,A]),$=[1,b,A]}else v=t[0].reshape([b,o*l,u]),y=F.reshape([1,u,A]),$=[b,c*g,A];k.push(v),k.push(y)}else v=t[0].reshape([b,u,o*l]),y=t[1].reshape([1,A,u]),$=[b,A,c*g],k.push(y),k.push(v);i&&k.push(t[2]);let W=$[2],j=k[0].dims[k[0].dims.length-1];W<8&&j<8?e.compute(rg(k,r,a,$,s,n),{inputs:k}):e.compute(oc(k,r,a,$,s,n),{inputs:k});return}let B=!0,f=e.kernelCustomData.wT??e.compute(ns(t[1],lc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=f);let h=[t[0],f];i&&h.push(t[2]);let P=s?c*g:A,_=s?A:c*g,w=p*d*u;e.compute(Ly(h,r,a,P,_,w,i,B,n),{inputs:h})},Ky=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=[0,t.pads[0],0,t.pads[1]],a=[1].concat(t.strides),i=[1].concat(t.dilations),o=[1].concat(t.kernelShape),l=uc({...t,pads:s,strides:a,dilations:i,kernelShape:o},n);dg(e,n,l,u=>r?[u[0],u[2],u[3]]:[u[0],u[1],u[3]])},qy=(e,t,r)=>{let n=r.format==="NHWC"?"channelsLast":"channelsFirst",s=uc(r,t),a=r.autoPad==="NOTSET"?r.pads:r.autoPad,i=jy(t[0].dims,t[1].dims,r.strides,r.dilations,a,!1,n);e.compute(Uy(t,s,i.outShape,[i.filterDepth,i.filterHeight,i.filterWidth],[i.padInfo.front,i.padInfo.top,i.padInfo.left],n))},pg=(e,t)=>{if(Hy(e.inputs,t),e.inputs[0].dims.length===3)Ky(e,t);else if(e.inputs[0].dims.length===5)qy(e,e.inputs,t);else{let r=uc(t,e.inputs);dg(e,e.inputs,r)}}}),Xy,Rk=Je(()=>{zt(),Ia(),Kt(),er(),Xy=(e,t,r)=>{let n=e.length>2,s=t.outputShape,a=t.format==="NHWC",i=t.group,o=e[1].dims,l=o[2]/i,u=o[3],p=a?Jr(l):1,d=a&&u===1&&l>=4,c=d?Math.floor(l/4)*4:Math.floor(l/p)*p,g=l-c,A=a?Jr(u):1,m=a?u===1?p:A:1,B=Te.size(s)/A,f=[Math.ceil(B/64),1,1];lr("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${f}`);let h=["rank","rank"],P=[t.strides[0],t.strides[1]],_=[t.kernelShape[a?1:2],t.kernelShape[a?2:3]],w=[t.dilations[0],t.dilations[1]],b=[_[0]+(t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)),_[1]+(t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1))],v=[b[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),b[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],y=[{type:12,data:B},{type:12,data:P},{type:12,data:_},{type:12,data:w},{type:12,data:b},{type:6,data:v},{type:12,data:c},{type:12,data:l},{type:12,data:u},...Dt(e[0].dims,e[1].dims)];n&&(y.push(...Dt(e[2].dims)),h.push("rank")),y.push(...Dt(s));let $=k=>{let W=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:P.length},{name:"filter_dims",type:"u32",length:_.length},{name:"dilations",type:"u32",length:_.length},{name:"effective_filter_dims",type:"u32",length:b.length},{name:"pads",type:"i32",length:v.length},{name:"input_channels_per_group_int",type:"u32"},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],j=vn(e[0].dataType),F=a?1:2,R=a?2:3,L=a?3:1,Q=Ye("W",e[1].dataType,e[1].dims.length,m),ne=Ye("Dy",e[0].dataType,e[0].dims.length,p),re=[ne,Q];n&&re.push(Ye("bias",e[2].dataType,[s[L]].length,A));let ce=bt("result",e[0].dataType,s.length,A),ge=()=>{let U="";if(d)p===4?U+=`
1209        let xValue = ${ne.getByOffset("x_offset")};
1210        let wValue = ${Q.getByOffset("w_offset")};
1211        dotProd = dotProd + dot(xValue, wValue);
1212        x_offset += 1u;
1213        w_offset += 1u;`:p===2?U+=`
1214          dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")}));
1215          x_offset += 2u;
1216          w_offset += 2u;`:p===1&&(U+=`
1217          dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}, ${ne.getByOffset("x_offset + 2u")}, ${ne.getByOffset("x_offset + 3u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")}, ${Q.getByOffset("w_offset + 2u")}, ${Q.getByOffset("w_offset + 3u")}));
1218          x_offset += 4u;
1219          w_offset += 4u;`);else if(U+=`
1220                  let xValue = ${a?ne.getByOffset(`${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p}`):ne.get("batch","inputChannel","idyR","idyC")};
1221        `,p===1)U+=`
1222          let w_offset = ${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)};
1223          let wValue = ${Q.getByOffset(`w_offset / ${m}`)};
1224          dotProd = dotProd + xValue * wValue;`;else for(let N=0;N<p;N++)U+=`
1225            let wValue${N} = ${Q.getByOffset(`${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel + ${N}, wOutChannel)`)} / ${m}`)};
1226            dotProd = dotProd + xValue[${N}] * wValue${N};`;return U},q=()=>{if(g===0)return"";if(!d)throw new Error(`packInputAs4 ${d} is not true.`);let U="";if(p===1){U+="dotProd = dotProd";for(let N=0;N<g;N++)U+=`
1227            + ${ne.getByOffset(`x_offset + ${N}`)} * ${Q.getByOffset(`w_offset + ${N}`)}`;U+=";"}else if(p===2){if(g!==2)throw new Error(`Invalid inputChannelsRemainder ${g}.`);U+=`
1228          let xValue = ${ne.getByOffset("x_offset")};
1229          let wValue = ${Q.getByOffset("w_offset")};
1230          dotProd = dotProd + dot(xValue, wValue);`}return U},V=`
1231            let outputIndices = ${ce.offsetToIndices(`global_idx * ${A}`)};
1232            let batch = ${ce.indicesGet("outputIndices",0)};
1233            let d1 = ${ce.indicesGet("outputIndices",L)};
1234            let r = ${ce.indicesGet("outputIndices",F)};
1235            let c = ${ce.indicesGet("outputIndices",R)};
1236            let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads;
1237            let dyRCorner = dyCorner.x;
1238            let dyCCorner = dyCorner.y;
1239            let groupId = d1 / uniforms.output_channels_per_group;
1240            let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;
1241            // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).
1242            // ? = to be determined. : = across all values in that axis.
1243            var dotProd = ${ce.type.value}(0.0);
1244            var wR: u32 = 0;
1245            if (uniforms.dilations.x == 1) {
1246              // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0
1247              wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner);
1248            }
1249            for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {
1250              if (wR % uniforms.dilations.x != 0) {
1251                continue;
1252              }
1253              let dyR = (${j}(dyRCorner) + ${j}(wR)) / ${j}(uniforms.strides[0]);
1254              let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;
1255              if (dyR < 0.0 || dyR >= ${j}(uniforms.Dy_shape[${F}]) || fract(dyR) > 0.0 ||
1256                  wRPerm < 0) {
1257                continue;
1258              }
1259              let idyR: u32 = u32(dyR);
1260              var wC: u32 = 0;
1261              if (uniforms.dilations.y == 1) {
1262                // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0
1263                wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner);
1264              }
1265              for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {
1266                if (wC % uniforms.dilations.y != 0) {
1267                  continue;
1268                }
1269                let dyC = (${j}(dyCCorner) + ${j}(wC)) / ${j}(uniforms.strides.y);
1270                let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;
1271                if (dyC < 0.0 || dyC >= ${j}(uniforms.Dy_shape[${R}]) ||
1272                    fract(dyC) > 0.0 || wCPerm < 0) {
1273                  continue;
1274                }
1275                let idyC: u32 = u32(dyC);
1276                var inputChannel = groupId * uniforms.input_channels_per_group;
1277                ${d?`
1278                var x_offset = ${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p};
1279                var w_offset = ${Q.indicesToOffset(`${Q.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${m};
1280                  `:""}
1281                for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${d?4:p}) {
1282                  ${ge()}
1283                  inputChannel = inputChannel + ${d?4:p};
1284                }
1285                ${q()}
1286                wC = wC + uniforms.strides.y - 1;
1287              }
1288              wR = wR + uniforms.strides[0] - 1;
1289            }
1290            let value = dotProd${n?` + bias[d1 / ${A}]`:""};
1291            ${ce.setByOffset("global_idx","value")};
1292          `;return`
1293    ${k.registerUniforms(W).declareVariables(...re,ce)}
1294      ${k.mainStart()}
1295      ${k.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")};
1296    ${V}}`};return{name:"ConvTranspose2D",shaderCache:{hint:`${t.cacheKey};${p}${m}${A}${d}${g}`,inputDependencies:h},getRunData:()=>({dispatchGroup:{x:f[0],y:f[1],z:f[2]},outputs:[{dims:r?r(s):s,dataType:e[0].dataType}],programUniforms:y}),getShaderSource:$}}}),Zy,Jy,e0,gg,t0,r0,Ag,n0,s0,Yk=Je(()=>{Rk(),Gi(),Va(),Zy=(e,t,r,n,s,a)=>(e-1)*t+r+(n-1)*s+1-a,Jy=(e,t,r,n,s)=>{let a=Math.floor(e/2);t==="SAME_UPPER"?(r[n]=a,r[s]=e-a):t==="SAME_LOWER"&&(r[n]=e-a,r[s]=a)},e0=(e,t,r,n,s,a,i,o,l,u)=>{let p=e.length-2,d=u.length===0;l.length<p&&l.push(...Array(p-l.length).fill(0));let c=e[0],g=t[o?3:1]*s;for(let A=0,m=e.length-p-(o?1:0);A<p;++A,++m){let B=e[m],f=d?B*i[A]:u[A],h=Zy(B,i[A],a[A],t[m],r[A],f);Jy(h,n,a,A,A+p),d&&u.push(i[A]*(B-1)+l[A]+(t[m]-1)*r[A]+1-a[A]-a[A+p])}u.splice(0,0,c),u.splice(o?3:1,0,g)},gg=(e,t)=>{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((d,c)=>d*c,1)===0){r.length=0;for(let d=2;d<t[1].dims.length;++d)r.push(t[1].dims[d])}let n=e.format==="NHWC";r.splice(0,0,t[1].dims[0]),r.splice(n?3:1,0,t[1].dims[1]);let s=e.pads.slice(),a=e.outputShape.slice(),i=e.outputPadding.slice(),o=t[0].dims,l=e.dilations.slice();if(l.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;l=new Array(d).fill(1)}let u=e.strides.slice();if(u.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;u=new Array(d).fill(1)}e0(o,r,l,e.autoPad,e.group,s,u,n,i,a);let p=Object.assign({},e);return Object.assign(p,{kernelShape:r,pads:s,outputPadding:i,outputShape:a,dilations:l,strides:u}),p},t0=e=>{let t=eg(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],s=e.dilations,a=e.group,i=e.kernelShape,o=e.pads,l=e.strides,u=e.wIsConst(),p=e.outputPadding,d=e.outputShape;return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,outputPadding:p,outputShape:d,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},r0=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[0];if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let s=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==s))throw new Error("invalid bias");let a=e[0].dims.length-2;if(t.dilations.reduce((i,o)=>i+o,0)>0&&t.dilations.length!==a)throw new Error(`dilations should be ${a}D`);if(t.strides.reduce((i,o)=>i+o,0)>0&&t.strides.length!==a)throw new Error(`strides should be ${a}D`);if(t.pads.reduce((i,o)=>i+o,0)>0&&t.pads.length!==a*2)throw new Error(`pads should be ${a*2}D`);if(t.outputPadding.length!==a&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${a}D`);if(t.kernelShape.reduce((i,o)=>i+o,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},Ag=(e,t,r,n)=>{let s=e.kernelCustomData.wT??e.compute(ns(t[1],[2,3,0,1]),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=s);let a=[t[0],s];t.length===3&&a.push(t[2]),e.compute(Xy(a,r,n),{inputs:a})},n0=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=t.kernelShape;(s.length===0||s[0]===0)&&(s=[e.inputs[1].dims[2]]);let a=t.dilations;(a.length===0||a[0]===0)&&(a=[1]);let i=t.strides;(i.length===0||i[0]===0)&&(i=[1]);let o=t.pads;o.length===0&&(o=[0,0]),o=[0,o[0],0,o[1]],i=[1].concat(i),a=[1].concat(a),s=[1].concat(s);let l=t.outputPadding;l=[0].concat(l);let u=gg({...t,pads:o,strides:i,dilations:a,kernelShape:s,outputPadding:l},n);Ag(e,n,u,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]])},s0=(e,t)=>{if(r0(e.inputs,t),e.inputs[0].dims.length===3)n0(e,t);else{let r=gg(t,e.inputs);Ag(e,e.inputs,r)}}}),a0,i0,o0,Nk=Je(()=>{zt(),Kt(),an(),er(),a0=(e,t,r,n)=>{let s=Te.size(t),a=t.length,i=Ye("input",e,a),o=bt("output",e,a),l=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),u=Te.normalizeAxis(l,a),p=d=>{let c=` i32(${i.indicesGet("inputIndices","uniforms.axis")}) `,g=Bt("uniforms.input_shape","uniforms.axis",a),A=n.reverse?c+(n.exclusive?" + 1":""):"0",m=n.reverse?g:c+(n.exclusive?"":" + 1");return`
1297                ${d.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(i,o)}
1298                ${d.mainStart()}
1299                  ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1300                  var inputIndices = ${o.offsetToIndices("global_idx")};
1301                  var sum = ${o.type.value}(0);
1302                  let first : i32 = ${A};
1303                  let last : i32 = ${m};
1304                  for (var i : i32 = first; i < last; i++) {
1305                    ${i.indicesSet("inputIndices","uniforms.axis","u32(i)")};
1306                    sum = sum + ${i.getByIndices("inputIndices")};
1307                  }
1308                  ${o.setByOffset("global_idx","sum")};
1309                }`};return{name:"CumSum",shaderCache:{hint:n.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:[{type:12,data:s},{type:12,data:u},...Dt(t,t)]}),getShaderSource:p}},i0=(e,t)=>{let r=e.inputs[0].dims,n=e.inputs[0].dataType,s=e.inputs[1];e.compute(a0(n,r,s,t),{inputs:[0]})},o0=e=>{let t=e.exclusive===1,r=e.reverse===1;return br({exclusive:t,reverse:r})}}),l0,u0,c0,d0,p0,jk=Je(()=>{zt(),Kt(),an(),er(),l0=e=>{if(!e||e.length!==1)throw new Error("DepthToSpace requires 1 input.");if(e[0].dims.length!==4)throw new Error("DepthToSpace requires 4D input.")},u0=(e,t,r,n)=>{let s=[];s.push(`fn perm(i: ${n.type.indices}) -> ${r.type.indices} {
1310    var a: ${r.type.indices};`);for(let a=0;a<t;++a)s.push(r.indicesSet("a",e[a],`i[${a}]`));return s.push("return a;}"),s.join(`
1311`)},c0=(e,t)=>{let r,n,s,a,i,o,l=t.format==="NHWC",u=t.blocksize,p=t.mode==="DCR";l?([r,n,s,a]=e.dims,i=p?[r,n,s,u,u,a/u**2]:[r,n,s,a/u**2,u,u],o=p?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([r,n,s,a]=[e.dims[0],e.dims[2],e.dims[3],e.dims[1]],i=p?[r,u,u,a/u**2,n,s]:[r,a/u**2,u,u,n,s],o=p?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let d=e.reshape(i),c=d.dims.length,g=e.dataType,A=Ye("a",g,c),m=bt("output",g,c),B=f=>`
1312  ${f.registerUniform("output_size","u32").declareVariables(A,m)}
1313
1314  ${u0(o,c,A,m)}
1315
1316  ${f.mainStart()}
1317    ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1318
1319    let indices = ${m.offsetToIndices("global_idx")};
1320    let aIndices = perm(indices);
1321
1322    ${m.setByOffset("global_idx",A.getByIndices("aIndices"))}
1323  }`;return{name:"DepthToSpace",shaderCache:{hint:`${e.dims};${t.blocksize};${t.mode}`,inputDependencies:["rank"]},getRunData:f=>{let h=l?[r,n*u,s*u,a/u**2]:[r,a/u**2,n*u,s*u],P=Te.size(h),_=d.dims,w=Te.sortBasedOnPerm(_,o);return{outputs:[{dims:h,dataType:f[0].dataType}],dispatchGroup:{x:Math.ceil(P/64)},programUniforms:[{type:12,data:P},...Dt(_,w)]}},getShaderSource:B}},d0=(e,t)=>{l0(e.inputs),e.compute(c0(e.inputs[0],t))},p0=e=>br({blocksize:e.blocksize,mode:e.mode,format:e.format})}),cc,Il,hg,g0,A0,h0,m0,mg,f0,_0,w0,Uk=Je(()=>{zt(),Kt(),an(),er(),cc="[a-zA-Z]|\\.\\.\\.",Il="("+cc+")+",hg="^"+Il+"$",g0="("+Il+",)*"+Il,A0="^"+g0+"$",h0=class{constructor(e=-1){this.symbolToIndices=new Map,this.inputIndex=e}addSymbol(e,t){let r=this.symbolToIndices.get(e);r===void 0?r=[t]:r.push(t),this.symbolToIndices.set(e,r)}},m0=class{constructor(e,t){this.equation=t,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[r,n]=t.includes("->")?t.split("->",2):[t,""];if(!r.match(RegExp(A0)))throw new Error("Invalid LHS term");if(r.split(",").forEach((s,a)=>{let i=e[a].dims.slice();if(!s.match(RegExp(hg)))throw new Error("Invalid LHS term");let o=this.processTerm(s,!0,i,a);this.lhs.push(o)}),n==="")n+=[...this.symbolToInfo.entries()].filter(([s,a])=>a.count===1||s==="...").map(([s])=>s).join("");else if(!n.match(RegExp(Il)))throw new Error("Invalid RHS");n.match(RegExp(cc,"g"))?.forEach(s=>{if(s==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(s);if(a===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(e,t,r){let n=this.symbolToInfo.get(e);if(n!==void 0){if(n.dimValue!==t&&n.count!==1)throw new Error("Dimension mismatch");n.count++,n.inputIndices.push(r)}else n={count:1,dimValue:t,inputIndices:[r]};this.symbolToInfo.set(e,n)}processTerm(e,t,r,n=-1){let s=r.length,a=!1,i=[],o=0;if(!e.match(RegExp(hg))&&!t&&e!=="")throw new Error("Invalid LHS term");let l=e.match(RegExp(cc,"g")),u=new h0(n);return l?.forEach((p,d)=>{if(p==="..."){if(a)throw new Error("Only one ellipsis is allowed per input term");a=!0;let c=s-l.length+1;if(c<0)throw new Error("Ellipsis out of bounds");if(i=r.slice(o,o+c),this.hasEllipsis){if(this.ellipsisDims.length!==i.length||this.ellipsisDims.toString()!==i.toString())throw new Error("Ellipsis dimensions mismatch")}else if(t)this.hasEllipsis=!0,this.ellipsisDims=i;else throw new Error("Ellipsis must be specified in the LHS");for(let g=0;g<i.length;g++){let A=String.fromCharCode(48+g);u.addSymbol(A,d+g),this.addSymbol(A,r[o++],n)}}else u.addSymbol(p,d+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(p,r[o++],n)}),u}},mg=e=>e+"_max",f0=(e,t,r,n)=>{let s=e.map(u=>u.length).map((u,p)=>Ye(`input${p}
1323`,t,u)),a=Te.size(n),i=bt("output",t,n.length),o=[...r.symbolToInfo.keys()].filter(u=>!r.rhs.symbolToIndices.has(u)),l=u=>{let p=[],d="var prod = 1.0;",c="var sum = 0.0;",g="sum += prod;",A=[],m=[],B=[],f=[],h=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach((_,w)=>{if(r.rhs.symbolToIndices.has(w)){let b=r.rhs.symbolToIndices.get(w)?.[0];b!==void 0&&r.lhs.forEach((v,y)=>{if(_.inputIndices.includes(y)){let $=v.symbolToIndices.get(w);if($===void 0)throw new Error("Invalid symbol error");$.forEach(k=>{p.push(`${s[y].indicesSet(`input${y}Indices`,k,i.indicesGet("outputIndices",b))}`)})}})}else r.lhs.forEach((b,v)=>{if(_.inputIndices.includes(v)){let y=b.symbolToIndices.get(w);if(y===void 0)throw new Error("Invalid symbol error");y.forEach($=>{A.push(`${s[v].indicesSet(`input${v}Indices`,$,`${w}`)}`)}),f.push(`prod *= ${s[v].getByIndices(`input${v}Indices`)};`)}}),m.push(`for(var ${w}: u32 = 0; ${w} < uniforms.${mg(w)}; ${w}++) {`),B.push("}")});let P=h?[...p,`let sum = ${s.map((_,w)=>_.getByIndices(`input${w}Indices`)).join(" * ")};`]:[...p,c,...m,...A,d,...f,g,...B];return`
1324            ${u.registerUniforms(o.map(_=>({name:`${mg(_)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...s,i)}
1325
1326            ${u.mainStart()}
1327            ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1328            var outputIndices = ${i.offsetToIndices("global_idx")};
1329            ${s.map((_,w)=>`var input${w}Indices: ${s[w].type.indices};`).join(`
1330`)}
1331            ${P.join(`
1332`)};
1333            ${i.setByOffset("global_idx","sum")};
1334          }`};return{name:"Einsum",shaderCache:{hint:r.equation,inputDependencies:e.map(()=>"rank")},getRunData:()=>{let u=o.filter(d=>r.symbolToInfo.has(d)).map(d=>({type:12,data:r.symbolToInfo.get(d)?.dimValue||0}));u.push({type:12,data:a});let p=e.map((d,c)=>[...Dt(d)]).reduce((d,c)=>d.concat(c),u);return p.push(...Dt(n)),{outputs:[{dims:n,dataType:t}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}},getShaderSource:l}},_0=(e,t)=>{let r=new m0(e.inputs,t.equation),n=r.outputDims,s=e.inputs.map((a,i)=>a.dims);e.compute(f0(s,e.inputs[0].dataType,r,n))},w0=e=>{let t=e.equation.replace(/\s+/g,"");return br({equation:t})}}),y0,fg,b0,P0,M0,Wk=Je(()=>{zt(),Kt(),er(),y0=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=r.length<t.length?0:r.length-t.length,s=t.length<r.length?0:t.length-r.length;for(;n<r.length&&s<t.length;++n,++s)if(r[n]!==t[s]&&r[n]!==1&&t[s]!==1)throw new Error("Expand requires shape to be broadcastable to input")},fg=(e,t)=>{let r=e.length-t.length,n=[];for(let s=0;s<r;++s)n.push(e[s]);for(let s=0;s<t.length;++s)n.push(t[s]===1?e[s+r]:t[s]);return n},b0=(e,t)=>e.length>t.length?fg(e,t):fg(t,e),P0=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=b0(t,r),s=e[0].dataType,a=s===9||Te.size(t)===1,i=s===9||t.length>0&&t[t.length-1]%4===0?4:1,o=a||n.length>0&&n[n.length-1]%4===0?4:1,l=Math.ceil(Te.size(n)/o),u=d=>{let c=Ye("input",s,t.length,i),g=bt("output",s,n.length,o),A;if(s===9){let m=(B,f,h="")=>`
1335          let outputIndices${f} = ${g.offsetToIndices(`outputOffset + ${f}u`)};
1336          let offset${f} = ${c.broadcastedIndicesToOffset(`outputIndices${f}`,g)};
1337          let index${f} = offset${f} / 4u;
1338          let component${f} = offset${f} % 4u;
1339          ${B}[${f}] = ${h}(${c.getByOffset(`index${f}`)}[component${f}]);
1340        `;A=`
1341        let outputOffset = global_idx * ${o};
1342        var data = vec4<u32>(0);
1343        ${m("data",0,"u32")}
1344        ${m("data",1,"u32")}
1345        ${m("data",2,"u32")}
1346        ${m("data",3,"u32")}
1347        ${g.setByOffset("global_idx","data")}
1348      }`}else A=`
1349        let outputIndices = ${g.offsetToIndices(`global_idx * ${o}`)};
1350        let inputOffset = ${c.broadcastedIndicesToOffset("outputIndices",g)};
1351        let data = ${g.type.value}(${c.getByOffset(`inputOffset / ${i}`)});
1352        ${g.setByOffset("global_idx","data")}
1353      }`;return`
1354    ${d.registerUniform("vec_size","u32").declareVariables(c,g)}
1355    ${d.mainStart()}
1356    ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
1357    ${A}`},p=[{type:12,data:l},...Dt(t,n)];return{name:"Expand",shaderCache:{hint:`${n.length};${i}${o}`,inputDependencies:["rank"]},getShaderSource:u,getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:p})}},M0=e=>{y0(e.inputs),e.compute(P0(e.inputs),{inputs:[0]})}}),v0,B0,Vk=Je(()=>{zt(),Kt(),er(),Jp(),v0=e=>{let t=e[0].dataType,r=Te.size(e[0].dims),n=Te.size(e[1].dims),s=n%4===0,a=i=>{let o=Ye("x",t,[1],4),l=Ye("bias",t,[1],4),u=bt("y",t,[1],4),p=[{name:"output_vec_size",type:"u32"},{name:"bias_size",type:"u32"}],d=g=>`
1358      let bias${g}_offset: u32 = (global_idx * 4 + ${g}
1358) % uniforms.bias_size;
1359      let bias${g} = ${l.getByOffset(`bias${g}_offset / 4`)}[bias${g}_offset % 4];`,c=s?`
1360      let bias = ${l.getByOffset("global_idx % (uniforms.bias_size / 4)")};`:`${d(0)}${d(1)}${d(2)}${d(3)}
1361      let bias = ${o.type.value}(bias0, bias1, bias2, bias3);`;return`${i.registerUniforms(p).declareVariables(o,l,u)}
1362
1363    ${Xp(Ln(t))}
1364
1365    ${i.mainStart(Eo)}
1366      ${i.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_vec_size")}
1367
1368      let x = ${o.getByOffset("global_idx")};
1369      ${c}
1370      let x_in = x + bias;
1371      ${u.setByOffset("global_idx",Zp("x_in"))}
1372    }`};return{name:"FastGeluWithBias",shaderCache:{hint:`${s}`,inputDependencies:["type","type"]},getShaderSource:a,getRunData:i=>({outputs:[{dims:i[0].dims,dataType:i[0].dataType}],programUniforms:[{type:12,data:Math.ceil(r/4)},{type:12,data:n}],dispatchGroup:{x:Math.ceil(r/Eo/4)}})}},B0=e=>{e.inputs.length<2||Te.size(e.inputs[1].dims)===0?ay(e):e.compute(v0(e.inputs))}}),x0,E0,D0,I0,Qk=Je(()=>{zt(),Kt(),an(),er(),x0=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},E0=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=Te.normalizeAxis(t.axis,s),i=r.slice(0);i.splice(a,1,...n);let o=r[a],l=e[0].dataType===9?4:1,u=Math.ceil(Te.size(i)/l),p=[{type:12,data:u},{type:6,data:o},{type:12,data:a},...Dt(e[0].dims,e[1].dims,i)],d=c=>{let g=Ye("data",e[0].dataType,e[0].dims.length,l),A=Ye("inputIndices",e[1].dataType,e[1].dims.length),m=bt("output",e[0].dataType,i.length,l),B=h=>{let P=n.length,_=`var indicesIndices${h}  = ${A.type.indices}(0);`;for(let w=0;w<P;w++)_+=`${P>1?`indicesIndices${h}[${w}]`:`indicesIndices${h}`} = ${i.length>1?`outputIndices${h}[uniforms.axis + ${w}]`:`outputIndices${h}`};`;_+=`
1373          var idx${h} = ${A.getByIndices(`indicesIndices${h}`)};
1374          if (idx${h} < 0) {
1375            idx${h} = idx${h} + uniforms.axisDimLimit;
1376          }
1377          var dataIndices${h} : ${g.type.indices};
1378        `;for(let w=0,b=0;w<s;w++)w===a?(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = u32(idx${h});`,b+=P):(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = ${i.length>1?`outputIndices${h}[${b}]`:`outputIndices${h}`};`,b++);return _},f;if(e[0].dataType===9){let h=(P,_,w="")=>`
1379          let outputIndices${_} = ${m.offsetToIndices(`outputOffset + ${_}u`)};
1380          ${B(_)};
1381          let offset${_} = ${g.indicesToOffset(`dataIndices${_}`)};
1382          let index${_} = offset${_} / 4u;
1383          let component${_} = offset${_} % 4u;
1384          ${P}[${_}] = ${w}(${g.getByOffset(`index${_}`)}[component${_}]);
1385        `;f=`
1386        let outputOffset = global_idx * ${l};
1387        var value = vec4<u32>(0);
1388        ${h("value",0,"u32")}
1389        ${h("value",1,"u32")}
1390        ${h("value",2,"u32")}
1391        ${h("value",3,"u32")}
1392        ${m.setByOffset("global_idx","value")}
1393      `}else f=`
1394      let outputIndices = ${m.offsetToIndices("global_idx")};
1395      ${B("")};
1396      let value = ${g.getByIndices("dataIndices")};
1397      ${m.setByOffset("global_idx","value")};
1398      `;return`
1399      ${c.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(g,A,m)}
1400      ${c.mainStart()}
1401        ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1402        ${f}
1403      }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:i,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:d}},D0=e=>br({axis:e.axis}),I0=(e,t)=>{let r=e.inputs;x0(r),e.compute(E0(e.inputs,t))}}),T0,C0,$0,Hk=Je(()=>{zt(),Kt(),er(),T0=(e,t,r,n,s,a,i,o,l)=>{let u=[{type:12,data:a},{type:12,data:n},{type:12,data:s},{type:12,data:r},{type:12,data:i},{type:12,data:o},{type:12,data:l}],p=[a];u.push(...Dt(t.dims,p));let d=c=>{let g=Ye("indices_data",t.dataType,t.dims.length),A=bt("input_slice_offsets_data",12,1,1),m=[g,A],B=[{name:"output_size",type:"u32"},{name:"batch_dims",type:"u32"},{name:"input_dims",type:"u32",length:s.length},{name:"sizes_from_slice_dims_data",type:"u32",length:r.length},{name:"num_slices_per_batch",type:"u32"},{name:"input_batch_stride",type:"u32"},{name:"num_slice_dims",type:"u32"}];return`
1404  ${c.registerUniforms(B).declareVariables(...m)}
1405  ${c.mainStart()}
1406    ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1407    let batch_idx = global_idx / uniforms.num_slices_per_batch;
1408    let base_offset = batch_idx * uniforms.input_batch_stride;
1409
1410    let slice_indices_base_offset = global_idx * uniforms.num_slice_dims;
1411    var relative_slice_offset = 0;
1412    for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) {
1413      var index = i32(indices_data[dim_idx + slice_indices_base_offset].x);
1414      let input_dim_idx = uniforms.batch_dims + dim_idx;
1415      if (index < 0) {
1416        ${s.length===1?"index += i32(uniforms.input_dims);":"index += i32(uniforms.input_dims[input_dim_idx]);"}
1417      }
1418      ${r.length===1?"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);":"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);"}
1419    }
1420
1421    input_slice_offsets_data[global_idx] =  base_offset + u32(relative_slice_offset);
1422  }`};return e.compute({name:"computeSliceOffsets",shaderCache:{hint:`${s.length}_${r.length}`,inputDependencies:["rank"]},getRunData:()=>
vendor: 13,294 bytes, lines 1422-1573
1422({outputs:[{dims:p,dataType:e.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:u}),getShaderSource:d},{inputs:[t],outputs:[-1]})[0]},C0=(e,t)=>{let r=e.inputs,n=r[0].dims,s=r[0].dataType,a=r[1].dims,i=a[a.length-1],o=Te.sizeToDimension(a,a.length-1),l=Te.sizeFromDimension(n,t.batchDims+i),u=Te.sizeToDimension(n,t.batchDims),p=Te.sizeFromDimension(n,t.batchDims),d=o/u,c=new Array(i),g=l;for(let _=0;_<i;++_)c[i-1-_]=g,g*=n[t.batchDims+i-1-_];let A=T0(e,r[1],c,t.batchDims,n,o,d,p,i),m=t.batchDims+i;if(m>n.length)throw new Error("last dimension of indices must not be larger than rank of input tensor");let B=a.slice(0,-1).concat(n.slice(m)),f=Te.size(B),h=[{type:12,data:f},{type:12,data:l},...Dt(r[0].dims,A.dims,B)],P=_=>{let w=Ye("data",r[0].dataType,r[0].dims.length),b=Ye("slice_offsets",12,A.dims.length),v=bt("output",r[0].dataType,B.length);return`
1423          ${_.registerUniform("output_size","u32").registerUniform("slice_size","u32").declareVariables(w,b,v)}
1424            ${_.mainStart()}
1425            ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1426          let slice_offset = slice_offsets[global_idx / uniforms.slice_size];
1427          output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size];
1428        }`};e.compute({name:"GatherND",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:B,dataType:s}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:h}),getShaderSource:P},{inputs:[r[0],A]})},$0=e=>({batchDims:e.batch_dims,cacheKey:""})}),S0,k0,O0,G0,Kk=Je(()=>{zt(),Kt(),an(),er(),S0=(e,t)=>{if(e.length<3||e.length>4)throw new Error("GatherBlockQuantized requires 3 or 4 inputs.");let r=Te.normalizeAxis(t.quantizeAxis,e[0].dims.length),n=t.blockSize,s=e[0],a=e[2],i=e.length===4?e[3]:void 0;if(a.dims.length!==s.dims.length||!s.dims.map((o,l)=>l===r?Math.ceil(o/n)===a.dims[l]:o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.");if(i){if(i.dataType!==s.dataType)throw new Error("Zero point must have the same data type as the input tensor.");if(i.dims.length!==a.dims.length||!i.dims.map((o,l)=>o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.")}},k0=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=Te.normalizeAxis(t.gatherAxis,s),i=Te.normalizeAxis(t.quantizeAxis,s),o=r.slice(0);o.splice(a,1,...n);let l=Te.size(o),u=e[2].dataType,p=e[0].dataType===22,d=[{type:12,data:l},{type:12,data:i},{type:12,data:a},{type:12,data:t.blockSize},...Dt(...e.map((g,A)=>g.dims),o)],c=g=>{let A=Ye("data",e[0].dataType,e[0].dims.length),m=Ye("inputIndices",e[1].dataType,e[1].dims.length),B=Ye("scales",e[2].dataType,e[2].dims.length),f=e.length>3?Ye("zeroPoint",e[3].dataType,e[3].dims.length):void 0,h=bt("output",u,o.length),P=[A,m,B];f&&P.push(f);let _=[{name:"output_size",type:"u32"},{name:"quantize_axis",type:"u32"},{name:"gather_axis",type:"u32"},{name:"block_size",type:"u32"}];return`
1429        ${g.registerUniforms(_).declareVariables(...P,h)}
1430        ${g.mainStart()}
1431        let output_indices = ${h.offsetToIndices("global_idx")};
1432        var indices_indices = ${m.type.indices}(0);
1433        ${n.length>1?`
1434          for (var i: u32 = 0; i < ${n.length}; i++) {
1435            let index = ${h.indicesGet("output_indices","uniforms.gather_axis + i")};
1436            ${m.indicesSet("indices_indices","i","index")};
1437          }`:`indices_indices = ${h.indicesGet("output_indices","uniforms.gather_axis")};`};
1438        var data_indices = ${A.type.indices}(0);
1439        for (var i: u32 = 0; i < uniforms.gather_axis; i++) {
1440          let index = ${h.indicesGet("output_indices","i")};
1441          ${A.indicesSet("data_indices","i","index")};
1442        }
1443        var index_from_indices = ${m.getByIndices("indices_indices")};
1444        if (index_from_indices < 0) {
1445          index_from_indices += ${r[a]};
1446        }
1447        ${A.indicesSet("data_indices","uniforms.gather_axis","u32(index_from_indices)")};
1448        for (var i = uniforms.gather_axis + 1; i < ${o.length}; i++) {
1449          let index = ${h.indicesGet("output_indices",`i + ${n.length} - 1`)};
1450          ${A.indicesSet("data_indices","i","index")};
1451        }
1452        let data_offset = ${A.indicesToOffset("data_indices")};
1453        let data_index = data_offset % 8;
1454        // Convert 4-bit packed data to 8-bit packed data.
1455        let packed_4bit_quantized_data = ${A.getByOffset("data_offset / 8")};
1456        let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f;
1457        let quantized_data_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_quantized_data));
1458        let quantized_data = quantized_data_vec[data_index / 2];
1459        var scale_indices = data_indices;
1460        let quantize_axis_index = ${B.indicesGet("data_indices","uniforms.quantize_axis")} / uniforms.block_size;
1461        ${B.indicesSet("scale_indices","uniforms.quantize_axis","quantize_axis_index")};
1462        var scale = ${B.getByIndices("scale_indices")};
1463        ${f?`
1464              let zero_point_indices = scale_indices;
1465              let zero_point_offset = ${f.indicesToOffset("zero_point_indices")};
1466              let zero_point_index = zero_point_offset % 8;
1467              let packed_4bit_zero_points = ${f.getByOffset("zero_point_offset / 8")};
1468              let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f;
1469              let zero_point_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_zero_points));
1470              let zero_point = zero_point_vec[zero_point_index / 2];`:"var zero_point = 0"};
1471        let dequantized_data = ${Ln(u)}(quantized_data - zero_point) * scale;
1472        ${h.setByOffset("global_idx","dequantized_data")};
1473    }`};return{name:"GatherBlockQuantized",shaderCache:{hint:`${t.cacheKey};${e.filter((g,A)=>A!==1).map(g=>g.dims.join("_")).join(";")}`,inputDependencies:Array.from({length:e.length},(g,A)=>"rank")},getRunData:()=>({outputs:[{dims:o,dataType:u}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:d}),getShaderSource:c}},O0=(e,t)=>{let r=e.inputs;S0(r,t),e.compute(k0(e.inputs,t))},G0=e=>br({blockSize:e.blockSize,gatherAxis:e.gatherAxis,quantizeAxis:e.quantizeAxis})}),z0,F0,L0,R0,qk=Je(()=>{zt(),Kt(),an(),er(),z0=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and
1474                     indices input tensors be of same rank.`)},F0=(e,t)=>{let r=e[0].dims,n=e[0].dataType,s=r.length,a=e[1].dims,i=e[1].dataType,o=Te.normalizeAxis(t.axis,s),l=r[o],u=a.slice(0),p=Te.size(u),d=Ye("input",n,s),c=Ye("indicesInput",i,a.length),g=bt("output",n,u.length),A=[{type:12,data:p},{type:6,data:l},{type:12,data:o}];return A.push(...Dt(r,a,u)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:A}),getShaderSource:m=>`
1475      ${m.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(d,c,g)}
1476      ${m.mainStart()}
1477      ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1478
1479      let outputIndices = ${g.offsetToIndices("global_idx")};
1480
1481      var idx = ${c.getByOffset("global_idx")};
1482      if (idx < 0) {
1483        idx = idx + uniforms.axisDimLimit;
1484      }
1485      var inputIndices = ${d.type.indices}(outputIndices);
1486      ${d.indicesSet("inputIndices","uniforms.axis","u32(idx)")};
1487      let value = ${d.getByIndices("inputIndices")};
1488
1489      ${g.setByOffset("global_idx","value")};
1490  }`}},L0=e=>br({axis:e.axis}),R0=(e,t)=>{let r=e.inputs;z0(r),e.compute(F0(e.inputs,t))}}),Y0,N0,j0,U0,Xk=Je(()=>{zt(),Kt(),er(),Y0=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},N0=(e,t)=>{let r=e[0].dims.slice(),n=e[1].dims.slice(),[s,a,i]=Jf.getShapeOfGemmResult(r,t.transA,n,t.transB,e.length===3?e[2].dims:void 0),o=[s,a];if(!o)throw new Error("Can't use gemm on the given tensors");let l=16,u=Math.ceil(a/l),p=Math.ceil(s/l),d=!0,c=Te.size(o),g=[{type:12,data:d?u:c},{type:12,data:s},{type:12,data:a},{type:12,data:i},{type:1,data:t.alpha},{type:1,data:t.beta}],A=["type","type"];e.length===3&&(g.push(...Dt(e[2].dims)),A.push("rank")),g.push(...Dt(o));let m=f=>{let h="";t.transA&&t.transB?h="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?h="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?h="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(h="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let P=t.alpha===1?"":"value *= uniforms.alpha;",_=Ye("a",e[0].dataType,e[0].dims),w=Ye("b",e[1].dataType,e[1].dims),b=_.type.value,v=null,y=[_,w];e.length===3&&(v=Ye("c",e[2].dataType,e[2].dims.length),y.push(v));let $=bt("output",e[0].dataType,o.length);y.push($);let k=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return`
1491  ${f.registerUniforms(k).declareVariables(...y)}
1492
1493  ${f.mainStart()}
1494    ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1495
1496    let m = global_idx / uniforms.N;
1497    let n = global_idx % uniforms.N;
1498
1499    var value = ${b}(0);
1500    for (var k: u32 = 0u; k < uniforms.K; k++) {
1501      ${h}
1502    }
1503
1504    ${P}
1505    ${v!=null?`let cOffset = ${v.broadcastedIndicesToOffset("vec2(m, n)",$)}; value += ${b}(uniforms.beta) * ${v.getByOffset("cOffset")};`:""}
1506    output[global_idx] = value;
1507  }`},B=f=>{let h=Ye("a",e[0].dataType,e[0].dims),P=Ye("b",e[1].dataType,e[1].dims),_=null,w=[h,P];e.length===3&&(_=Ye("c",e[2].dataType,e[2].dims.length),w.push(_));let b=bt("output",e[0].dataType,o.length);w.push(b);let v=[{name:"num_tile_n",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}],y="",$="";t.transA&&t.transB?($=`
1508      var col = tile_row_start + local_id.x;
1509      var row = k_start + local_id.y;
1510      if (col < uniforms.M && row < uniforms.K) {
1511        tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];
1512      } else {
1513        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
1514      }
1515
1516      col = k_start + local_id.x;
1517      row = tile_col_start + local_id.y;
1518      if (col < uniforms.K && row < uniforms.N) {
1519        tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];
1520      } else {
1521        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
1522      }
1523      `,y="value += tile_a[k][local_id.y] * tile_b[local_id.x][k];"):t.transA&&!t.transB?($=`
1524      var col = tile_row_start + local_id.x;
1525      var row = k_start + local_id.y;
1526      if (col < uniforms.M && row < uniforms.K) {
1527        tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];
1528      } else {
1529        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
1530      }
1531
1532      col = tile_col_start + local_id.x;
1533      row = k_start + local_id.y;
1534      if (col < uniforms.N && row < uniforms.K) {
1535        tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];
1536      } else {
1537        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
1538      }
1539      `,y="value += tile_a[k][local_id.y] * tile_b[k][local_id.x];"):!t.transA&&t.transB?($=`
1540      var col = k_start + local_id.x;
1541      var row = tile_row_start + local_id.y;
1542      if (col < uniforms.K && row < uniforms.M) {
1543        tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];
1544      } else {
1545        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
1546      }
1547
1548      col = k_start + local_id.x;
1549      row = tile_col_start + local_id.y;
1550      if (col < uniforms.K && row < uniforms.N) {
1551        tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];
1552      } else {
1553        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
1554      }
1555      `,y="value += tile_a[local_id.y][k] * tile_b[local_id.x][k];"):!t.transA&&!t.transB&&($=`
1556      var col = k_start + local_id.x;
1557      var row = tile_row_start + local_id.y;
1558      if (col < uniforms.K && row < uniforms.M) {
1559        tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];
1560      } else {
1561        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
1562      }
1563
1564      col = tile_col_start + local_id.x;
1565      row = k_start + local_id.y;
1566      if (col < uniforms.N && row < uniforms.K) {
1567        tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];
1568      } else {
1569        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
1570      }
1571      `,y="value += tile_a[local_id.y][k] * tile_b[k][local_id.x];");let k=t.alpha===1?"":"value *= uniforms.alpha;";return`
1572  ${f.registerUniforms(v).declareVariables(...w)}
1573  var<workgroup> tile_a: array<array<${h.type.storage}, ${l}>, ${l}>;
1574  var<workgroup> tile_b: array<array<${P.type.storage}, ${l}>, ${l}>;
1575  ${f.mainStart([l,l,1])}
1576    let tile_col_start = (workgroup_index % uniforms.num_tile_n) * ${l};
1577    let tile_row_start = (workgroup_index / uniforms.num_tile_n) * ${l};
1578    let num_tiles = (uniforms.K - 1) / ${l} + 1;
1579    var k_start = 0u;
1580    var value = ${b.type.value}(0);
1581    for (var t: u32 = 0u; t < num_tiles; t++) {
1582      ${$}
1583      k_start = k_start + ${l};
1584      workgroupBarrier();
1585
1586      for (var k: u32 = 0u; k < ${l}; k++) {
1587        ${y}
1588      }
1589      workgroupBarrier();
1590    }
1591
1592    ${k}
1593    let m = tile_row_start + local_id.y;
1594    let n = tile_col_start + local_id.x;
1595    ${_!=null?`let cOffset = ${_.broadcastedIndicesToOffset("vec2(m, n)",b)}; value += ${b.type.value}(uniforms.beta) * ${_.getByOffset("cOffset")};`:""}
1596    if (m < uniforms.M && n < uniforms.N) {
1597      output[m * uniforms.N + n] = value;
1598    }
1599  }`};return d?{name:"GemmShared",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:u*p},programUniforms:g}),getShaderSource:B}:{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},j0=e=>{let t=e.transA,r=e.transB,n=e.alpha,s=e.beta;return{transA:t,transB:r,alpha:n,beta:s,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},U0=(e,t)=>{Y0(e.inputs),e.compute(N0(e.inputs,t))}}),pa,Ta,zi,Fi,W0,V0,Q0,H0,K0,q0,X0,Z0,J0,eb,Zk=Je(()=>{zt(),Kt(),an(),er(),[pa,Ta,zi,Fi]=[0,1,2,3],W0=e=>{if(e[0].dims.length!==4)throw new Error("only 4-D tensor is supported.");if(e[0].dims.length!==e[1].dims.length)throw new Error("input dimensions must be equal to grid dimensions");if(e[0].dims.length-2!==e[1].dims[e[1].dims.length-1])throw new Error(`last dimension of grid must be equal to ${e[0].dims.length-2}`);if(e[0].dims[0]!==e[1].dims[0])throw new Error("grid batch size must match input batch size")},V0=`
1600  fn gs_get_cubic_coeffs(x: f32) -> vec4<f32> {
1601    let cubic_alpha = -0.75f;
1602    let x_abs = abs(x);
1603    var coeffs: vec4<f32>;
1604    coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha);
1605    coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1);
1606    coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1);
1607    coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha);
1608    return coeffs;
1609  }
1610`,Q0=e=>`
1611  fn gs_bicubic_interpolate(p: mat4x4<${e}>, x: f32, y: f32) -> ${e} {
1612    var v: vec4<f32>;
1613    var coeffs = gs_get_cubic_coeffs(x);
1614    for (var i = 0; i < 4; i++) {
1615      v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3];
1616    }
1617    coeffs = gs_get_cubic_coeffs(y);
1618    let pixel = ${e}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]);
1619    return pixel;
1620  }
1621`,H0=e=>`
1622  fn gs_denormalize(n: f32, length: i32) -> f32 {
1623    ${e.alignCorners===0?`
1624    // alignCorners: false => [-1, 1] to [-0.5, length - 0.5]
1625    return ((n + 1.0) * f32(length) - 1.0) / 2.0;
1626    `:`
1627    // alignCorners: true => [-1, 1] to [0, length - 1]
1628    return (n + 1.0) / 2.0 * (f32(length - 1));
1629    `}
1630  }
1631`,K0=e=>`
1632  ${e.paddingMode==="reflection"?`
1633      fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 {
1634        var dx = 0.0;
1635        var fx = f32(x);
1636        let range = x_max - x_min;
1637        if (fx < x_min) {
1638          dx = x_min - fx;
1639          let n = u32(dx / range);
1640          let r = dx - f32(n) * range;
1641          if (n % 2 == 0) {
1642            fx = x_min + r;
1643          } else {
1644            fx = x_max - r;
1645          }
1646        } else if (fx > x_max) {
1647          dx = fx - x_max;
1648          let n = u32(dx / range);
1649          let r = dx - f32(n) * range;
1650          if (n % 2 == 0) {
1651            fx = x_max - r;
1652          } else {
1653            fx = x_min + r;
1654          }
1655        }
1656        return u32(fx);
1657      }`:""}
1658`,q0=(e,t,r)=>`
1659  fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4<f32>) -> ${t} {
1660     var pixel = ${t}(0);
1661     var indices = vec4<u32>(0);
1662     indices[${pa}] = batch;
1663     indices[${Ta}] = channel;`+(()=>{switch(r.paddingMode){case"zeros":return`
1664          if (r >= 0 && r < H && c >=0 && c < W) {
1665            indices[${zi}] = u32(r);
1666            indices[${Fi}] = u32(c);
1667          } else {
1668            return ${t}(0);
1669          }
1670        `;case"border":return`
1671          indices[${zi}] = u32(clamp(r, 0, H - 1));
1672          indices[${Fi}] = u32(clamp(c, 0, W - 1));
1673        `;case"reflection":return`
1674          indices[${zi}] = gs_reflect(r, border[1], border[3]);
1675          indices[${Fi}] = gs_reflect(c, border[0], border[2]);
1676        `;default:throw new Error(`padding mode ${r.paddingMode} is not supported`)}})()+`
1677    return ${e.getByIndices("indices")};
1678  }
1679`,X0=(e,t,r)=>(()=>{switch(r.mode){case"nearest":return`
1680          let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${pa}], indices[${Ta}], border);
1681        `;case"bilinear":return`
1682          let x1 = i32(floor(x));
1683          let y1 = i32(floor(y));
1684          let x2 = x1 + 1;
1685          let y2 = y1 + 1;
1686
1687          let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${pa}], indices[${Ta}], border);
1688          let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${pa}], indices[${Ta}], border);
1689          let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${pa}], indices[${Ta}], border);
1690          let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${pa}], indices[${Ta}], border);
1691
1692          let dx2 = ${t}(f32(x2) - x);
1693          let dx1 = ${t}(x - f32(x1));
1694          let dy2 = ${t}(f32(y2) - y);
1695          let dy1 = ${t}(y - f32(y1));
1696          let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22);
1697        `;case"bicubic":return`
1698          let x0 = i32(floor(x)) - 1;
1699          let y0 = i32(floor(y)) - 1;
1700          var p: mat4x4<${t}>;
1701          for (var h = 0; h < 4; h++) {
1702            for (var w = 0; w < 4; w++) {
1703              p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${pa}], indices[${Ta}], border);
1704            }
1705          }
1706
1707          let dx = x - f32(x0 + 1);
1708          let dy = y - f32(y0 + 1);
1709          let result = gs_bicubic_interpolate(p, dx, dy);
1710        `;default:throw new Error(`mode ${r.mode} is not supported`)}})()+`${e.setByOffset("global_idx","result")}`,Z0=(e,t)=>{let r=Ye("x",e[0].dataType,e[0].dims.length),n=[e[1].dims[0],e[1].dims[1],e[1].dims[2]],s=Ye("grid",e[1].dataType,n.length,2),a=[e[0].dims[0],e[0].dims[1],e[1].dims[1],e[1].dims[2]];t.format==="NHWC"&&(a=[e[0].dims[0],e[1].dims[1],e[1].dims[2],e[0].dims[3]],[pa,Ta,zi,Fi]=[0,3,1,2]);let i=bt("output",e[0].dataType,a.length),o=r.type.value,l=Te.size(a),u=[{type:12,data:l},...Dt(e[0].dims,n,a)],p=d=>`
1711  ${d.registerUniform("output_size","u32").declareVariables(r,s,i)}
1712  ${V0}
1713  ${Q0(o)}
1714  ${H0(t)}
1715  ${K0(t)}
1716  ${q0(r,o,t)}
1717
1718  ${d.mainStart()}
1719    ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1720      let H_in = i32(uniforms.x_shape[${zi}]);
1721      let W_in = i32(uniforms.x_shape[${Fi}]);
1722
1723      ${t.alignCorners===0?`
1724      let x_min = -0.5;
1725      let x_max = f32(W_in) - 0.5;
1726      let y_min = -0.5;
1727      let y_max = f32(H_in) - 0.5;
1728      `:`
1729      let x_min = 0.0;
1730      let x_max = f32(W_in) - 1.0;
1731      let y_min = 0.0;
1732      let y_max = f32(H_in) - 1.0;
1733      `};
1734      let border = vec4<f32>(x_min, y_min, x_max, y_max);
1735
1736      let indices = ${i.offsetToIndices("global_idx")};
1737      var grid_indices = vec3<u32>(indices[${pa}], indices[${zi}], indices[${Fi}]);
1738      let nxy = ${s.getByIndices("grid_indices")};
1739      var x = gs_denormalize(f32(nxy[0]), W_in);
1740      var y = gs_denormalize(f32(nxy[1]), H_in);
1741
1742      ${X0(i,o,t)}
1743  }`;return{name:"GridSample",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:["type","type"]},getRunData:d=>{let c=Te.size(a);return{outputs:[{dims:a,dataType:d[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:u}},getShaderSource:p}},J0=(e,t)=>{W0(e.inputs),e.compute(Z0(e.inputs,t))},eb=e=>br({alignCorners:e.align_corners,mode:e.mode,paddingMode:e.padding_mode,format:e.format})}),Qn,tb,rb,_g,nb,Tl,sb,ab=Je(()=>{zt(),Kt(),an(),Fp(),Kp(),er(),Va(),Qn=(e,t)=>e.length>t&&e[t].dims.length>0?e[t]:void 0,tb=(e,t)=>{let r=e[0],n=Qn(e,1),s=Qn(e,2),a=Qn(e,3),i=Qn(e,4),o=Qn(e,5),l=Qn(e,6),u=Qn(e,7);if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let p=r.dims[0],d=r.dims[1],c=r.dims.length===3?r.dims[2]:t.numHeads*r.dims[4],g=d,A=0,m=0,B=Math.floor(c/t.numHeads);if(l&&u&&Te.size(l.dims)&&Te.size(u.dims)){if(l.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(l.dims[0]!==p||l.dims[1]!==t.numHeads||l.dims[3]!==B)throw new Error('Input "past_key" shape (batch_size, num_heads, past_sequence_length, head_size)');if(u.dims[0]!==p||u.dims[1]!==t.numHeads||u.dims[3]!==B)throw new Error('Input "past_value" shape (batch_size, num_heads, past_sequence_length, head_size)');if(l.dims[2]!==u.dims[2])throw new Error('Input "past_key" and "past_value" shall have same dim 2 (past_sequence_length)');if(u.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');A=l.dims[2],m=l.dims[2]}else if(l&&Te.size(l.dims)||u&&Te.size(u.dims))throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f;if(n&&Te.size(n.dims)>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(n.dims[2]!==r.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');f=2,g=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==B)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');f=5,g=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==B)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');f=0,g=n.dims[2]}}else{if(r.dims.length!==5)throw new Error('Input "query" is expected to have 5 dimensions when key is empty');if(r.dims[2]!==t.numHeads||r.dims[3]!==3)throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}if(a&&Te.size(a.dims)>0){if(a.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimension');
vendor: 9,360 bytes, lines 1743-1791
1743if(n&&n.dims.length===5&&n.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let h=A+g,P=0;if(i&&Te.size(i.dims)>0){P=8;let v=i.dims;throw v.length===1?v[0]===p?P=1:v[0]===3*p+2&&(P=3):v.length===2&&v[0]===p&&v[1]===h&&(P=5),P===8?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, total_sequence_length)'):new Error("Mask not supported")}let _=!1,w=c;if(s&&Te.size(s.dims)>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(g!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');w=s.dims[2]}else{if(g!==s.dims[2])throw new Error('Input "key" and "value" shall have the same dim 2 (kv_sequence_length)');w=s.dims[1]*s.dims[3],_=!0}}let b=!1;if(i&&Te.size(i.dims)>0)throw new Error("Key padding mask is not supported");if(o&&Te.size(o.dims)>0){if(o.dims.length!==4)throw new Error('Input "attention_bias" is expected to have 4 dimensions');if(o.dims[0]!==p||o.dims[1]!==t.numHeads||o.dims[2]!==d||o.dims[3]!==h)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:p,sequenceLength:d,pastSequenceLength:A,kvSequenceLength:g,totalSequenceLength:h,maxSequenceLength:m,inputHiddenSize:0,hiddenSize:c,vHiddenSize:w,headSize:B,vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:P,scale:t.scale,broadcastResPosBias:b,passPastInKv:_,qkvFormat:f}},rb=e=>br({...e}),_g=br({perm:[0,2,1,3]}),nb=(e,t,r,n,s,a,i)=>{let o=[n,s,a],l=Te.size(o),u=[{type:12,data:l},{type:12,data:i},{type:12,data:a}],p=d=>{let c=bt("qkv_with_bias",t.dataType,o),g=Ye("qkv",t.dataType,o),A=Ye("bias",r.dataType,o),m=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return`
1744  ${d.registerUniforms(m).declareVariables(g,A,c)}
1745  ${d.mainStart()}
1746    ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1747    let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;
1748
1749    qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];
1750  }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u}),getShaderSource:p},{inputs:[t,r],outputs:[-1]})[0]},Tl=(e,t,r,n,s,a,i,o)=>{let l=a;if(i&&Te.size(i.dims)>0){if(n===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return l=nb(e,a,i,t,n,r*s,o),l=l.reshape([t,n,r,s]),r===1||n===1?l:e.compute(ns(l,_g.perm),{inputs:[l],outputs:[-1]})[0]}else return a.dims.length===3&&(l=a.reshape([t,n,r,s])),r===1||n===1?l:e.compute(ns(l,_g.perm),{inputs:[l],outputs:[-1]})[0]},sb=(e,t)=>{let r=tb(e.inputs,t),n=e.inputs[0],s=Qn(e.inputs,1),a=Qn(e.inputs,2),i=Qn(e.inputs,3),o=Qn(e.inputs,4),l=Qn(e.inputs,5),u=Qn(e.inputs,6),p=Qn(e.inputs,7);if(n.dims.length===5)throw new Error("Packed QKV is not implemented");if(s?.dims.length===5)throw new Error("Packed KV is not implemented");let d=s&&a&&s.dims.length===4&&a.dims.length===4,c=Tl(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,n,i,0);if(d)return Bl(e,c,s,a,o,void 0,u,p,l,r);if(!s||!a)throw new Error("key and value must be provided");let g=Tl(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,s,i,r.hiddenSize),A=Tl(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,a,i,2*r.hiddenSize);Bl(e,c,g,A,o,void 0,u,p,l,r)}}),ib,ob,lb,ub,wg,cb,db,pb=Je(()=>{zt(),Kt(),an(),er(),ib=e=>{if(!e||e.length<1)throw new Error("too few inputs")},ob=(e,t)=>{let r=[],n=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(s=>r.push(Number(s))),n=r.length),br({numOutputs:n,axis:t.axis,splitSizes:r})},lb=e=>`
1751fn calculateOutputIndex(index: u32) -> u32 {
1752    for (var i: u32 = 0u; i < ${e}u; i += 1u ) {
1753    if (index < ${Bt("uniforms.size_in_split_axis","i",e)}) {
1754        return i;
1755    }
1756    }
1757    return ${e}u;
1758}`,ub=e=>{let t=e.length,r=[];for(let n=0;n<t;++n){let s=e[n].setByIndices("indices","input[global_idx]");t===1?r.push(s):n===0?r.push(`if (output_number == ${n}u) { ${s} }`):n===t-1?r.push(`else { ${s} }`):r.push(`else if (output_number == ${n}) { ${s} }`)}return`
1759      fn writeBufferData(output_number: u32, indices: ${e[0].type.indices}, global_idx: u32) {
1760        ${r.join(`
1761`)}
1762      }`},wg=(e,t)=>{let r=e[0].dims,n=Te.size(r),s=e[0].dataType,a=Te.normalizeAxis(t.axis,r.length),i=new Array(t.numOutputs),o=Ye("input",s,r.length),l=new Array(t.numOutputs),u=[],p=[],d=0,c=[{type:12,data:n}];for(let A=0;A<t.numOutputs;A++){d+=t.splitSizes[A],l[A]=d;let m=r.slice();m[a]=t.splitSizes[A],p.push(m),i[A]=bt(`output${A}`,s,m.length),u.push({dims:p[A],dataType:e[0].dataType})}c.push({type:12,data:l},...Dt(r,...p));let g=A=>`
1763  ${A.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",l.length).declareVariables(o,...i)}
1764  ${lb(l.length)}
1765  ${ub(i)}
1766
1767  ${A.mainStart()}
1768    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}
1769
1770    var indices = ${o.offsetToIndices("global_idx")};
1771    var index = ${o.indicesGet("indices",a)};
1772    let output_number = calculateOutputIndex(index);
1773    if (output_number != 0) {
1774      index -= ${Bt("uniforms.size_in_split_axis","output_number - 1u",l.length)};
1775      ${o.indicesSet("indices",a,"index")};
1776    }
1777    writeBufferData(output_number, indices, global_idx);
1778  }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:g,getRunData:()=>({outputs:u,dispatchGroup:{x:Math.ceil(n/64)},programUniforms:c})}},cb=(e,t)=>{ib(e.inputs);let r=e.inputs.length===1?t:ob(e.inputs,t);e.compute(wg(e.inputs,r),{inputs:[0]})},db=e=>{let t=e.axis,r=e.splitSizes,n=e.numOutputs<0?r.length:e.numOutputs;if(n!==r.length)throw new Error("numOutputs and splitSizes lengh must be equal");return br({axis:t,numOutputs:n,splitSizes:r})}}),gb,dc,Ab,hb=Je(()=>{zt(),Kt(),an(),er(),gb=(e,t)=>{let[r,n,s,a]=e,{numHeads:i,rotaryEmbeddingDim:o}=t;if(r.dims.length!==3&&r.dims.length!==4)throw new Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${r.dims.length}`);if(!Te.areEqual(n.dims,[])&&!Te.areEqual(n.dims,[1])&&n.dims.length!==2)throw new Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${n.dims.length}`);if(s.dims.length!==2)throw new Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${s.dims.length}`);if(a.dims.length!==2)throw new Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${a.dims.length}`);if(!Te.areEqual(s.dims,a.dims))throw new Error("Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape");if(o>0&&i===0)throw new Error("num_heads must be provided if rotary_embedding_dim is specified");let l=r.dims[0],u=r.dims[r.dims.length-2],p=s.dims[0],d=Te.sizeFromDimension(r.dims,1)/u,c=o===0?s.dims[1]*2:d/i;if(o>c)throw new Error("rotary_embedding_dim must be less than or equal to head_size");if(n.dims.length===2){if(l!==n.dims[0])throw new Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${n.dims[0]}`);if(u!==n.dims[1])throw new Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${n.dims[1]}`)}if(c/2!==s.dims[1]&&o/2!==s.dims[1])throw new Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${s.dims[1]}`);if(u>p)throw new Error("Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported")},dc=(e,t)=>{let{interleaved:r,numHeads:n,rotaryEmbeddingDim:s,scale:a}=t,i=e[0].dims[0],o=Te.sizeFromDimension(e[0].dims,1),l=e[0].dims[e[0].dims.length-2],u=o/l,p=e[2].dims[1],d=s===0?p*2:u/n,c=new Array(i,l,u/d,d-p),g=Te.computeStrides(c),A=[{type:1,data:a},{type:12,data:c},{type:12,data:g},...e[0].dims.length===3?new Array({type:12,data:[o,u,d,1]}):[],...e[0].dims.length===4?new Array({type:12,data:[o,d,l*d,1]}):[],...Dt(e[0].dims,e[1].dims,e[2].dims,e[3].dims,e[0].dims)],m=B=>{let f=Ye("input",e[0].dataType,e[0].dims.length),h=Ye("position_ids",e[1].dataType,e[1].dims.length),P=Ye("cos_cache",e[2].dataType,e[2].dims.length),_=Ye("sin_cache",e[3].dataType,e[3].dims.length),w=bt("output",e[0].dataType,e[0].dims.length);return B.registerUniforms([{name:"scale",type:"f32"},{name:"global_shape",type:"u32",length:c.length},{name:"global_strides",type:"u32",length:g.length},{name:"input_output_strides",type:"u32",length:g.length}]),`
1779        ${B.declareVariables(f,h,P,_,w)}
1780
1781        ${B.mainStart(Eo)}
1782          let half_rotary_emb_dim = uniforms.${P.name}_shape[1];
1783          let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape;
1784          let size = uniforms.global_shape[0] * uniforms.global_strides[0];
1785          ${B.guardAgainstOutOfBoundsWorkgroupSizes("size")}
1786
1787          if (bsnh[3] < half_rotary_emb_dim) {
1788            let position_ids_idx =
1789                ${h.broadcastedIndicesToOffset("bsnh.xy",bt("",h.type.tensor,2))};
1790            let position_id =
1791                u32(${h.getByOffset("position_ids_idx")}) + select(0, bsnh[1], position_ids_idx == 0);
1792            let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${r});
1793            let j = i + select(half_rotary_emb_dim, 1, ${r});
1794            let re = ${f.getByOffset("i")} * ${P.get("position_id","bsnh[3]")} -
1795                ${f.getByOffset("j")} * ${_.get("position_id","bsnh[3]")};
1796            ${w.setByOffset("i","re")}
1797            let im = ${f.getByOffset("i")} * ${_.get("position_id","bsnh[3]")} +
1798                ${f.getByOffset("j")} * ${P.get("position_id","bsnh[3]")};
1799            ${w.setByOffset("j","im")}
1800          } else {
1801            let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim;
1802            ${w.setByOffset("k",f.getByOffset("k"))}
1803          }
1804        }`};return{name:"RotaryEmbedding",shaderCache:{hint:br({interleaved:r}).cacheKey,inputDependencies:["rank","rank","rank","rank"]},getShaderSource:m,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(Te.size(c)/Eo)},programUniforms:A})}},Ab=(e,t)=>{gb(e.inputs,t),e.compute(dc(e.inputs,t))}}),mb,fb,yg,_b,wb,Jk=Je(()=>{an(),zt(),Kp(),ab(),pb(),Va(),hb(),er(),mb=(e,t)=>{if(t.doRotary&&e.length<=7)throw new Error("cos_cache and sin_cache inputs are required if do_rotary is specified");let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4];if(t.doRotary!==0&&e.length<=7)throw new Error("cos_cast and sin_cache are expected if do_rotary attribute is non-zero");if(t.localWindowSize!==-1)throw new Error("Local attention is not supported");if(t.softcap!==0)throw new Error("Softcap is not supported");if(t.rotaryInterleaved!==0)throw new Error("Rotary interleaved is not supported");if(t.smoothSoftmax)throw new Error("Smooth softmax is not supported");if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let o=!1,l=r.dims[0],u=r.dims[1],p=r.dims.length===3?o?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],d=u,c=0,g=!n||n.dims.length===0,A=Math.floor(g?p/(t.numHeads+2*t.kvNumHeads):p/t.numHeads);g&&(p=A*t.numHeads);let m=a&&a.dims.length!==0,B=i&&i.dims.length!==0;if(m&&a.dims.length===4&&a.dims[0]===l&&a.dims[1]!==t.kvNumHeads&&a.dims[2]===t.kvNumHeads&&a.dims[3]===A)throw new Error("BSNH pastKey/pastValue is not supported");if(m&&B){if(a.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(i.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');c=a.dims[2]}else if(m||B)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f=1;if(n&&n.dims.length>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(r.dims[2]%n.dims[2]!==0)throw new Error('Dimension 2 of "query" should be a multiple of "key"');d=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==A)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');d=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==A)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');d=n.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}let h=0,P=!1,_=t.kvNumHeads?A*t.kvNumHeads:p;if(s&&s.dims.length>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(d!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');_=s.dims[2]}else{if(d!==s.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');_=s.dims[1]*s.dims[3],P=!0}}let w=e.length>4?e[5]:void 0;if(w&&w.dims.length!==1&&w.dims[0]!==l)throw new Error('Input "seqlens" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:l,sequenceLength:u,pastSequenceLength:c,kvSequenceLength:d,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:p,vHiddenSize:_,headSize:A,vHeadSize:Math.floor(_/t.kvNumHeads),numHeads:t.numHeads,kvNumHeads:t.kvNumHeads,nReps:t.numHeads/t.kvNumHeads,pastPresentShareBuffer:!1,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:P,qkvFormat:f}},fb=br({perm:[0,2,1,3]}),yg=(e,t,r)=>{let n=t,s=r.kvNumHeads;return t.dims.length===3&&r.kvSequenceLength!==0&&(n=t.reshape([r.batchSize,r.kvSequenceLength,s,r.headSize]),n=e.compute(ns(n,fb.perm),{inputs:[n],outputs:[-1]})[0]),n},_b=(e,t,r,n)=>{let s=7,a=["type","type"],i=[e*t],o=e*t,l=[{type:12,data:o},{type:12,data:t},{type:12,data:e}],u=p=>{let d=Ye("seq_lens",r.dataType,r.dims),c=Ye("total_seq_lens",n.dataType,n.dims),g=bt("pos_
1804ids",s,i),A=[{name:"output_size",type:"u32"},{name:"sequence_length",type:"u32"},{name:"batch_size",type:"u32"}];return`
1805  ${p.registerUniforms(A).declareVariables(d,c,g)}
1806  ${p.mainStart()}
1807    ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1808    let total_sequence_length = u32(${c.getByOffset("0")});
1809    let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length;
1810    let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length;
1811    let batch_idx = global_idx / uniforms.sequence_length;
1812    let sequence_idx = i32(global_idx % uniforms.sequence_length);
1813    var pos_id: i32 = 0;
1814    let seqlen = ${d.getByOffset("batch_idx")};
1815    let total_seqlen = seqlen + 1;
1816    if (is_first_prompt) {
1817      if (sequence_idx < total_seqlen) {
1818        pos_id = sequence_idx;
1819      } else {
1820        pos_id = 1;
1821      }
1822      ${g.setByOffset("global_idx","pos_id")}
1823    } else if (is_subsequent_prompt) {
1824      let past_seqlen = total_seqlen - i32(uniforms.sequence_length);
1825      if (past_seqlen + sequence_idx < total_seqlen) {
1826        pos_id = past_seqlen + sequence_idx;
1827      } else {
1828        pos_id = 1;
1829      }
1830      ${g.setByOffset("global_idx","pos_id")}
1831    } else if (global_idx < uniforms.batch_size) {
1832      ${g.setByOffset("global_idx","seqlen")}
1833    };
1834  }
1835  `};return{name:"GeneratePositionIds",shaderCache:{hint:`${e};${t}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:l}),getShaderSource:u}},wb=(e,t)=>
vendor: 5,767 bytes, lines 1835-1886
1835{let r=mb(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let n=e.inputs[0],s=e.inputs[1]&&e.inputs[1].dims.length>0?e.inputs[1]:void 0,a=e.inputs[2]&&e.inputs[2].dims.length>0?e.inputs[2]:void 0,i=e.inputs[3]&&e.inputs[3].dims.length!==0?e.inputs[3]:void 0,o=e.inputs[4]&&e.inputs[4].dims.length!==0?e.inputs[4]:void 0,l=e.inputs.length>4?e.inputs[5]:void 0,u=e.inputs.length>5?e.inputs[6]:void 0,p=r.kvNumHeads?r.kvNumHeads:r.numHeads,d=br({axis:2,numOutputs:3,splitSizes:[r.numHeads*r.headSize,p*r.headSize,p*r.headSize]}),[c,g,A]=!s&&!a?e.compute(wg([n],d),{inputs:[n],outputs:[-1,-1,-1]}):[n,s,a],m,B;if(t.doRotary){let _=e.compute(_b(r.batchSize,r.sequenceLength,l,u),{inputs:[l,u],outputs:[-1]})[0],w=e.inputs[7],b=e.inputs[8],v=br({interleaved:t.rotaryInterleaved!==0,numHeads:r.numHeads,rotaryEmbeddingDim:0,scale:t.scale}),y=[c,_,w,b],$=[-1];m=e.compute(dc(y,v),{inputs:y,outputs:$})[0],y.splice(0,1,g);let k=br({interleaved:t.rotaryInterleaved!==0,numHeads:r.kvNumHeads,rotaryEmbeddingDim:0,scale:t.scale});B=e.compute(dc(y,k),{inputs:y,outputs:$})[0]}let f=Tl(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,t.doRotary?m:c,void 0,0),h=yg(e,t.doRotary?B:g,r),P=yg(e,A,r);Bl(e,f,h,P,void 0,void 0,i,o,void 0,r,l,u)}}),bg,yb,bb,Pb,e4=Je(()=>{zt(),Kt(),Va(),er(),bg=(e,t,r,n,s,a,i,o)=>{let l=Jr(a),u=l===1?"f32":`vec${l}f`,p=l===1?"vec2f":`mat2x${l}f`,d=s*i,c=64;d===1&&(c=256);let g=[s,i,a/l],A=[s,i,2],m=["rank","type","type"],B=[];B.push(...Dt(g,A));let f=h=>{let P=Ye("x",t.dataType,3,l),_=Ye("scale",r.dataType,r.dims),w=Ye("bias",n.dataType,n.dims),b=bt("output",1,3,2),v=[P,_,w,b];return`
1836  var<workgroup> workgroup_shared : array<${p}, ${c}>;
1837  const workgroup_size = ${c}u;
1838  ${h.declareVariables(...v)}
1839  ${h.mainStart(c)}
1840    let batch = workgroup_index / uniforms.x_shape[1];
1841    let channel = workgroup_index % uniforms.x_shape[1];
1842    let hight = uniforms.x_shape[2];
1843    // initialize workgroup memory
1844    var sum = ${u}(0);
1845    var squared_sum = ${u}(0);
1846    for (var h = local_idx; h < hight; h += workgroup_size) {
1847      let value = ${u}(${P.get("batch","channel","h")});
1848      sum += value;
1849      squared_sum += value * value;
1850    }
1851    workgroup_shared[local_idx] = ${p}(sum, squared_sum);
1852    workgroupBarrier();
1853
1854    for (var currSize = workgroup_size >> 1;  currSize > 0; currSize = currSize >> 1) {
1855      if (local_idx < currSize) {
1856        workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize];
1857      }
1858      workgroupBarrier();
1859    }
1860    if (local_idx == 0) {
1861      let sum_final = ${Wa("workgroup_shared[0][0]",l)} / f32(hight * ${l});
1862      let squared_sum_final = ${Wa("workgroup_shared[0][1]",l)} / f32(hight * ${l});
1863
1864      let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${o}));
1865      let channel_scale = inv_std_dev * f32(scale[channel]);
1866      let channel_shift = f32(bias[channel]) - sum_final * channel_scale;
1867      output[workgroup_index] = vec2f(channel_scale, channel_shift);
1868    }
1869  }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${l};${o};${c}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:A,dataType:1}],dispatchGroup:{x:d},programUniforms:B}),getShaderSource:f},{inputs:[t,r,n],outputs:[-1]})[0]},yb=(e,t,r)=>{let n=t[0].dims,s=n,a=2,i=n[0],o=n[1],l=Te.sizeFromDimension(n,a),u=Jr(l),p=Te.size(s)/u,d=bg(e,t[0],t[1],t[2],i,l,o,r.epsilon),c=[i,o,l/u],g=[i,o],A=["type","none"],m=B=>{let f=Ye("x",t[0].dataType,c.length,u),h=Ye("scale_shift",1,g.length,2),P=bt("output",t[0].dataType,c.length,u),_=[f,h,P];return`
1870  ${B.registerUniform("output_size","u32").declareVariables(..._)}
1871  ${B.mainStart()}
1872  ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1873      let outputIndices = ${P.offsetToIndices("global_idx")};
1874      let batch = outputIndices[0];
1875      let channel = outputIndices[1];
1876      let scale_shift = ${h.getByIndices("vec2<u32>(batch, channel)")};
1877      let value = ${f.getByOffset("global_idx")} * ${P.type.value}(scale_shift.x) + ${P.type.value}(scale_shift.y);
1878      ${P.setByOffset("global_idx","value")};
1879  }`};e.compute({name:"InstanceNormalization",shaderCache:{hint:`${u}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:[{type:12,data:p},...Dt(c,g,c)]}),getShaderSource:m},{inputs:[t[0],d]})},bb=(e,t,r)=>{let n=t[0].dims,s=n,a=n[0],i=n[n.length-1],o=Te.sizeFromDimension(n,1)/i,l=Jr(i),u=Te.size(s)/l,p=[{type:12,data:o},{type:12,data:Math.floor(i/l)}],d=["type","type"],c=!1,g=[0,n.length-1];for(let f=0;f<n.length-2;f++)c=c||n[f+1]!==1,g.push(f+1);c=c&&n[n.length-1]!==1;let A=c?e.compute(ns(e.inputs[0],g),{inputs:[e.inputs[0]],outputs:[-1]})[0]:e.inputs[0].reshape(Array.from({length:n.length},(f,h)=>n[g[h]])),m=bg(e,A,t[1],t[2],a,o,i,r.epsilon),B=f=>{let h=vn(t[0].dataType),P=l===1?"vec2f":`mat${l}x2f`,_=v=>{let y=v===0?"x":"y",$=l===1?"f32":`vec${l}f`;switch(l){case 1:return`${h}(${$}(scale.${y}))`;case 2:return`vec2<${h}>(${$}(scale[0].${y}, scale[1].${y}))`;case 4:return`vec4<${h}>(${$}(scale[0].${y}, scale[1].${y}, scale[2].${y}, scale[3].${y}))`;default:throw new Error(`Not supported compoents ${l}`)}},w=Ye("input",t[0].dataType,t[0].dims,l),b=bt("output",t[0].dataType,s,l);return`
1880  @group(0) @binding(0) var<storage, read> input : array<${w.type.storage}>;
1881  @group(0) @binding(1) var<storage, read> scale_input : array<${P}>;
1882  @group(0) @binding(2) var<storage, read_write> output : array<${b.type.storage}>;
1883  struct Uniforms {H: u32, C : u32};
1884  @group(0) @binding(3) var<uniform> uniforms: Uniforms;
1885
1886  ${f.mainStart()}
1887    let current_image_number = global_idx / (uniforms.C * uniforms.H);
1888    let current_channel_number = global_idx % uniforms.C;
1889
1890    let scale_offset = current_image_number * uniforms.C + current_channel_number;
1891    let scale = scale_input[scale_offset];
1892    output[global_idx] = fma(input[global_idx], ${_(0)}, ${_(1)});
1893  }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${l}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:B},{inputs:[t[0],m]})},Pb=(e,t)=>{t.format==="NHWC"?bb(e,e.inputs,t):yb(e,e.inputs,t)}}),Mb,vb,Bb,t4=Je(()=>{zt(),Kt(),er(),Mb=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},vb=(e,t,r)=>{let n=t.simplified,s=e[0].dims,a=e[1],i=!n&&e[2],o=s,l=Te.normalizeAxis(t.axis,s.length),u=Te.sizeToDimension(s,l),p=Te.sizeFromDimension(s,l),d=Te.size(a.dims),c=i?Te.size(i.dims):0;if(d!==p||i&&c!==p)throw new Error(`Size of X.shape()[axis:] == ${p}.
1894       Size of scale and bias (if provided) must match this.
1895       Got scale size of ${d} and bias size of ${c}`);let g=[];for(let w=0;w<s.length;++w)w<l?g.push(s[w]):g.push(1);let A=Jr(p),m=["type","type"],B=[{type:12,data:u},{type:1,data:p},{type:12,data:Math.floor(p/A)},{type:1,data:t.epsilon}];i&&m.push("type");let f=r>1,h=r>2,P=w=>{let b=vn(e[0].dataType),v=[Ye("x",e[0].dataType,e[0].dims,A),Ye("scale",a.dataType,a.dims,A)];i&&v.push(Ye("bias",i.dataType,i.dims,A)),v.push(bt("output",e[0].dataType,o,A)),f&&v.push(bt("mean_data_output",1,g)),h&&v.push(bt("inv_std_output",1,g));let y=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return`
1896  ${w.registerUniforms(y).declareVariables(...v)}
1897  ${w.mainStart()}
1898    ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}
1899    let offset = global_idx * uniforms.norm_size_vectorized;
1900    var mean_vector = ${Np("f32",A)};
1901    var mean_square_vector = ${Np("f32",A)};
1902
1903    for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {
1904      let value = ${Do(b,A,"x[h + offset]")};
1905      mean_vector += value;
1906      mean_square_vector += value * value;
1907    }
1908    let mean = ${Wa("mean_vector",A)} / uniforms.norm_size;
1909    let inv_std_dev = inverseSqrt(${Wa("mean_square_vector",A)} / uniforms.norm_size ${n?"":"- mean * mean"} + uniforms.epsilon);
1910
1911    for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {
1912      let f32input = ${Do(b,A,"x[j + offset]")};
1913      let f32scale = ${Do(b,A,"scale[j]")};
1914      output[j + offset] = ${v[0].type.value}((f32input ${n?"":"- mean"}) * inv_std_dev * f32scale
1915        ${i?`+ ${Do(b,A,"bias[j]")}`:""}
1916      );
1917    }
1918
1919    ${f?"mean_data_output[global_idx] = mean":""};
1920    ${h?"inv_std_output[global_idx] = inv_std_dev":""};
1921  }`},_=[{dims:o,dataType:e[0].dataType}];return f&&_.push({dims:g,dataType:1}),h&&_.push({dims:g,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${A};${r};${n}`,inputDependencies:m},getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:B}),getShaderSource:P}},Bb=(e,t)=>{Mb(e.inputs),e.compute(vb(e.inputs,t,e.outputCount))}}),xb,Eb,r4=Je(()=>{Kt(),ng(),og(),xb=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},Eb=e=>{xb(e.inputs);let t=xo.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can't use matmul on the given tensors");let r=t[t.length-1],n=e.inputs[0].dims[e.inputs[0].dims.length-1];if(r<8&&n<8)e.compute(rg(e.inputs,{activation:""},t));else{let s=t[t.length-2],a=Te.size(e.inputs[0].dims.slice(0,-2)),i=Te.size(e.inputs[1].dims.slice(0,-2));if(a!==1&&s===1&&i===1){let o=e.inputs[0].reshape([1,a,n]),l=e.inputs[1].reshape([1,n,r]),u=[1,a,r],p=[o,l];e.compute(oc(p,{activation:""},t,u),{inputs:p})}else e.compute(oc(e.inputs,{activation:""},t))}}}),Db,Ib,Tb,Cb,$b,n4=Je(()=>{zt(),Kt(),an(),er(),Db=(e,t)=>{if(e.length<3||e.length>4)throw new Error("MatMulNBits requires 3 or 4 inputs");let r=e[0],n=r.dims.length;if(r.dims[n-1]!==t.k)throw new Error("The last dim of input shape does not match the k value");let s=Math.floor((t.k+t.blockSize-1)/t.blockSize),a=t.blockSize/8*t.bits,i=e[1];if(!Te.areEqual(i.dims,[t.n,s,a]))throw new Error("The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize");let o=e[2].dims;if(Te.size(o)!==t.n*s)throw new Error("scales input size error.");if(e.length===4){let l=e[3].dims,u=t.bits>4?t.n*s:t.n*Math.floor((s+1)/2);if(Te.size(l)!==u)throw new Error("zeroPoints input size error.")}},Ib=(e,t)=>
vendor: 4,086 bytes, lines 1921-1971
1921{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=Te.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=Jr(t.k),c=Jr(u),g=Jr(i),A=o.concat([s,i]),m=s>1&&i/g%2===0?2:1,B=Te.size(A)/g/m,f=64,h=[],P=[l,s,a/d],_=Te.convertShape(e[1].dims).slice();_.splice(-1,1,u/c),h.push(...Dt(P)),h.push(...Dt(_)),h.push(...Dt(e[2].dims)),e.length===4&&h.push(...Dt(Te.convertShape(e[3].dims)));let w=[l,s,i/g];h.push(...Dt(w));let b=v=>{let y=P.length,$=Ye("a",e[0].dataType,y,d),k=Ye("b",12,_.length,c),W=Ye("scales",e[2].dataType,e[2].dims.length),j=[$,k,W],F=e.length===4?Ye("zero_points",12,e[3].dims.length):void 0;F&&j.push(F);let R=w.length,L=bt("output",e[0].dataType,R,g),Q=vn(e[0].dataType),ne=(()=>{switch(d){case 1:return`array<${Q}, 8>`;case 2:return`mat4x2<${Q}>`;case 4:return`mat2x4<${Q}>`;default:throw new Error(`${d}-component is not supported.`)}})(),re=()=>{let q=`
1922          // reuse a data
1923            var input_offset = ${$.indicesToOffset(`${$.type.indices}(batch, row, word_offset)`)};
1924            var a_data: ${ne};
1925            for (var j: u32 = 0; j < ${8/d}; j++) {
1926              a_data[j] = ${$.getByOffset("input_offset")};
1927              input_offset++;
1928            }
1929          `;for(let V=0;V<g*m;V++)q+=`
1930            b_value = ${c===1?`b${V}_data`:`b${V}_data[i]`};
1931            b_value_lower = unpack4xU8(b_value & b_mask);
1932            b_value_upper = unpack4xU8((b_value >> 4) & b_mask);
1933            b_quantized_values = ${ne}(${Array.from({length:4},(U,N)=>`${Q}(b_value_lower[${N}]), ${Q}(b_value_upper[${N}])`).join(", ")});
1934            b_dequantized_values = ${d===1?`${ne}(${Array.from({length:8},(U,N)=>`(b_quantized_values[${N}] - ${F?`zero_point${V}`:"zero_point"}) * scale${V}`).join(", ")});`:`(b_quantized_values - ${ne}(${Array(8).fill(`${F?`zero_point${V}`:"zero_point"}`).join(",")})) * scale${V};`};
1935            workgroup_shared[local_id.x * ${m} + ${Math.floor(V/g)}]${g>1?`[${V%g}]`:""} += ${Array.from({length:8/d},(U,N)=>`${d===1?`a_data[${N}] * b_dequantized_values[${N}]`:`dot(a_data[${N}], b_dequantized_values[${N}])`}`).join(" + ")};
1936          `;return q},ce=()=>{let q=`
1937            var col_index = col * ${g};
1938            ${F?`
1939            let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2;
1940            var zero_point_byte_count: u32;
1941            var zero_point_word_index: u32;
1942            var zero_point_byte_offset: u32;
1943            let zero_point_nibble_offset: u32 = block & 0x1u;
1944            var zero_point_bits_offset: u32;
1945            var zero_point_word: u32;`:`
1946            // The default zero point is 8 for unsigned 4-bit quantization.
1947            let zero_point = ${Q}(8);`}
1948            `;for(let V=0;V<g*m;V++)q+=`
1949            let scale${V} = ${W.getByOffset("col_index * nBlocksPerCol + block")};
1950            ${F?`
1951            zero_point_byte_count = col_index * zero_point_bytes_per_col + (block >> 0x1u);
1952            zero_point_word_index = zero_point_byte_count >> 0x2u;
1953            zero_point_byte_offset = zero_point_byte_count & 0x3u;
1954            zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);
1955            zero_point_word = ${F.getByOffset("zero_point_word_index")} >> zero_point_bits_offset;
1956            let zero_point${V} = ${Q}((zero_point_word) & 0xFu);`:""}
1957            col_index += 1;`;return q},ge=()=>{let q=`col_index = col * ${g};`;for(let V=0;V<g*m;V++)q+=`
1958            let b${V}_data = ${k.getByIndices(`${k.type.indices}(col_index, block, word)`)};
1959            col_index += 1;`;return q+=`
1960            var b_value: u32;
1961            let b_mask: u32 = 0x0F0F0F0Fu;
1962            var b_value_lower: vec4<u32>;
1963            var b_value_upper: vec4<u32>;
1964            var b_quantized_values: ${ne};
1965            var b_dequantized_values: ${ne};`,q};return`
1966        var<workgroup> workgroup_shared: array<${L.type.value}, ${m*f}>;
1967        ${v.declareVariables(...j,L)}
1968        ${v.mainStart([f,1,1])}
1969          let output_indices = ${L.offsetToIndices(`(global_idx / ${f}) * ${m}`)};
1970          let col = output_indices[2];
1971          let row = output_indices[1];
1972          let batch = output_indices[0];
1973          let nBlocksPerCol = uniforms.b_shape[1];
1974
1975          for (var block = local_id.x; block < nBlocksPerCol; block += ${f}) {
1976            //process one block
1977            var word_offset: u32 = block * ${t.blockSize/d};
1978            ${ce()}
1979            for (var word: u32 = 0; word < ${u}; word += ${c}) {
1980              ${ge()}
1981              for (var i: u32 = 0; i < ${c}; i++) {
1982                ${re()}
1983                word_offset += ${8/d};
1984              }
1985            }
1986          }
1987          workgroupBarrier();
1988
1989          if (local_id.x < ${m}) {
1990            var output_value: ${L.type.value} = ${L.type.value}(0);
1991            var workgroup_shared_offset: u32 = local_id.x;
1992            for (var b: u32 = 0u; b < ${f}u; b++) {
1993              output_value += workgroup_shared[workgroup_shared_offset];
1994              workgroup_shared_offset += ${m};
1995            }
1996            ${L.setByIndices(`${L.type.indices}(batch, row, col + local_id.x)`,"output_value")};
1997          }
1998        }`};return{name:"MatMulNBits",shaderCache:{hint:`${t.blockSize};${t.bits};${d};${c};${g};${m};${f}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:A,dataType:p}],dispatchGroup:{x:B},programUniforms:h}),getShaderSource:b}},Tb=(e,t)=>{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=Te.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=Jr(t.k),c=Jr(u),g=o.concat([s,i]),A=128,m=i%8===0?8:i%4===0?4:1,B=A/m,f=B*c*8,h=f/d,P=f/t.blockSize,_=Te.size(g)/m,w=[],b=[l,s,a/d],v=Te.convertShape(e[1].dims).slice();v.splice(-1,1,u/c),w.push(...Dt(b)),w.push(...Dt(v)),w.push(...Dt(e[2].dims)),e.length===4&&w.push(...Dt(Te.convertShape(e[3].dims)));let y=[l,s,i];w.push(...Dt(y));let $=k=>{let W=b.length,j=Ye("a",e[0].dataType,W,d),F=Ye("b",12,v.length,c),R=Ye("scales",e[2].dataType,e[2].dims.length),L=[j,F,R],Q=e.length===4?Ye("zero_points",12,e[3].dims.length):void 0;Q&&L.push(Q);let ne=y.length,re=bt("output",e[0].dataType,ne),ce=vn(e[0].dataType),ge=()=>{switch(d){case 1:return`
1999          let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]);
2000          let a_data1 = vec4<${ce}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return`
2001          let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1]);
2002          let a_data1 = vec4<${ce}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return`
2003          let a_data0 = sub_a[word_offset];
2004          let a_data1 = sub_a[word_offset + 1];`;default:throw new Error(`${d}-component is not supported.`)}};return`
2005        var<workgroup> sub_a: array<${j.type.value}, ${h}>;
2006        var<workgroup> inter_results: array<array<${re.type.value}, ${B}>, ${m}>;
2007        ${k.declareVariables(...L,re)}
2008        ${k.mainStart([B,m,1])}
2009          let output_indices = ${re.offsetToIndices(`workgroup_index * ${m}`)};
2010          let col = output_indices[2];
2011          let row = output_indices[1];
2012          let batch = output_indices[0];
2013          let n_blocks_per_col = uniforms.b_shape[1];
2014          let num_tiles =  (n_blocks_per_col - 1) / ${P} + 1;
2015
2016          // Loop over shared dimension.
2017          for (var tile: u32 = 0; tile < num_tiles; tile += 1) {
2018            let a_col_start = tile * ${h};
2019            // load one tile A data into shared memory.
2020            for (var a_offset = local_idx; a_offset < ${h}; a_offset += ${A})
2021            {
2022              let a_col = a_col_start + a_offset;
2023              if (a_col < uniforms.a_shape[2])
2024              {
2025                sub_a[a_offset] = ${j.getByIndices(`${j.type.indices}(batch, row, a_col)`)};
2026              } else {
2027                sub_a[a_offset] = ${j.type.value}(0);
2028              }
2029            }
2030            workgroupBarrier();
2031
2032            // each thread process one block
2033            let b_row = col + local_id.y;
2034            let block = tile * ${P} + local_id.x;
2035            ${Q?`
2036            let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2;
2037            let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u);
2038            let zero_point_word_index = zero_point_byte_count >> 0x2u;
2039            let zero_point_byte_offset = zero_point_byte_count & 0x3u;
2040            let zero_point_nibble_offset: u32 = block & 0x1u;
2041            let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);
2042            let zero_point_word = ${Q.getByOffset("zero_point_word_index")} >> zero_point_bits_offset;
2043            let zero_point = ${ce}((zero_point_word) & 0xFu);`:`
2044            // The default zero point is 8 for unsigned 4-bit quantization.
2045            let zero_point = ${ce}(8);`}
2046            let scale = ${R.getByOffset("b_row * n_blocks_per_col + block")};
2047            let b_data = ${F.getByIndices(`${F.type.indices}(b_row, block, 0)`)};
2048            var word_offset = local_id.x * ${t.blockSize/d};
2049            for (var i: u32 = 0; i < ${c}; i++) {
2050              ${ge()}
2051              let b_value = ${c===1?"b_data":"b_data[i]"};
2052              let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu);
2053              let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu);
2054              let b_quantized_values = mat2x4<${ce}>(${Array.from({length:4},(q,V)=>`${ce}(b_value_lower[${V}]), ${ce}(b_value_upper[${V}])`).join(", ")});
2055              let b_dequantized_values = (b_quantized_values - mat2x4<${ce}>(${Array(8).fill("zero_point").join(",")})) * scale;
2056              inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(q,V)=>`${`dot(a_data${V}, b_dequantized_values[${V}])`}`).join(" + ")};
2057              word_offset += ${8/d};
2058            }
2059            workgroupBarrier();
2060          }
2061
2062          if (local_idx < ${m}) {
2063            var output_value: ${re.type.value} = ${re.type.value}(0);
2064            for (var b = 0u; b < ${B}; b++) {
2065              output_value += inter_results[local_idx][b];
2066            }
2067            if (col + local_idx < uniforms.output_shape[2])
2068            {
2069              ${re.setByIndices(`${re.type.indices}
vendor: 10,267 bytes, lines 2069-2215
2069(batch, row, col + local_idx)`,"output_value")}
2070            }
2071          }
2072        }`};return{name:"BlockwiseMatMulNBits32",shaderCache:{hint:`${t.blockSize};${d};${c};${B};${m}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:g,dataType:p}],dispatchGroup:{x:_},programUniforms:w}),getShaderSource:$}},Cb=(e,t)=>{Db(e.inputs,t),t.blockSize===32&&e.adapterInfo.isVendor("intel")&&e.adapterInfo.isArchitecture("gen-12lp")?e.compute(Tb(e.inputs,t)):e.compute(Ib(e.inputs,t))},$b=e=>br(e)}),Sb,kb,Ob,Gb,zb,Fb,Lb,Rb,Yb,s4=Je(()=>{zt(),Kt(),er(),Sb=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error("Input type must be float or float16.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},kb=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
2073            k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)};
2074            if (k < 0) {
2075              break;
2076            }
2077            if (k >= i32(${Bt("uniforms.x_shape",s,t)})) {
2078              break;
2079            }
2080            offset += k * i32(${Bt("uniforms.x_strides",s,t)});
2081        `;return`
2082          value = ${e.type.value}(uniforms.constant_value);
2083          for (var i = 0; i < 1; i++) {
2084            var offset = 0;
2085            var k = 0;
2086            ${n}
2087            value = x[offset];
2088          }
2089      `},Ob=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
2090                k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)};
2091                if (k < 0) {
2092                  k = -k;
2093                }
2094                {
2095                  let _2n_1 = 2 * (i32(${Bt("uniforms.x_shape",s,t)}) - 1);
2096                  k = k % _2n_1;
2097                  if(k >= i32(${Bt("uniforms.x_shape",s,t)})) {
2098                    k = _2n_1 - k;
2099                  }
2100                }
2101                offset += k * i32(${Bt("uniforms.x_strides",s,t)});
2102            `;return`
2103              var offset = 0;
2104              var k = 0;
2105              ${n}
2106              value = x[offset];
2107          `},Gb=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
2108                k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)};
2109                if (k < 0) {
2110                  k = 0;
2111                }
2112                if (k >= i32(${Bt("uniforms.x_shape",s,t)})) {
2113                  k = i32(${Bt("uniforms.x_shape",s,t)}) - 1;
2114                }
2115                offset += k * i32(${Bt("uniforms.x_strides",s,t)});
2116            `;return`
2117              var offset = 0;
2118              var k = 0;
2119              ${n}
2120              value = x[offset];
2121          `},zb=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
2122                k = i32(${e.indicesGet("indices",s)}) - ${Bt("uniforms.pads",s,r)};
2123                if (k < 0)  {
2124                  k += i32(${Bt("uniforms.x_shape",s,t)}]);
2125                }
2126                if (k >= i32(${Bt("uniforms.x_shape",s,t)})) {
2127                  k -= i32(${Bt("uniforms.x_shape",s,t)});
2128                }
2129                offset += k * i32(${Bt("uniforms.x_strides",s,t)});
2130            `;return`
2131              var offset = 0;
2132              var k = 0;
2133              ${n}
2134              value = x[offset];
2135          `},Fb=(e,t,r)=>{switch(r.mode){case 0:return kb(e,t,r.pads.length);case 1:return Ob(e,t,r.pads.length);case 2:return Gb(e,t,r.pads.length);case 3:return zb(e,t,r.pads.length);default:throw new Error("Invalid mode")}},Lb=(e,t)=>{let r=Te.padShape(e[0].dims.slice(),t.pads),n=e[0].dims,s=Te.size(r),a=[{type:12,data:s},{type:6,data:t.pads}],i=e.length>=3&&e[2].data;t.mode===0&&a.push({type:i?e[2].dataType:1,data:t.value}),a.push(...Dt(e[0].dims,r));let o=["rank"],l=u=>{let p=bt("output",e[0].dataType,r.length),d=Ye("x",e[0].dataType,n.length),c=d.type.value,g=Fb(p,n.length,t),A=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&A.push({name:"constant_value",type:i?c:"f32"}),`
2136            ${u.registerUniforms(A).declareVariables(d,p)}
2137            ${u.mainStart()}
2138            ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2139
2140            let indices = ${p.offsetToIndices("global_idx")};
2141
2142            var value = ${c}(0);
2143            ${g}
2144            output[global_idx] = value;
2145        }`};return{name:"Pad",shaderCache:{hint:`${t.mode}${i}`,inputDependencies:o},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(Te.size(r)/64)},programUniforms:a}),getShaderSource:l}},Rb=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),n=e.length>=3&&e[2].data?e[2].dataType===10?e[2].getUint16Array()[0]:e[2].getFloat32Array()[0]:0,s=e[0].dims.length,a=new Int32Array(2*s).fill(0);if(e.length>=4){let o=e[3].getBigInt64Array();for(let l=0;l<o.length;l++)a[Number(o[l])]=Number(r[l]),a[Number(o[l])+s]=Number(r[l+o.length])}else r.forEach((o,l)=>a[Number(l)]=Number(o));let i=[];return a.forEach(o=>i.push(o)),{mode:t.mode,value:n,pads:i}}else return t},Yb=(e,t)=>{Sb(e.inputs);let r=Rb(e.inputs,t);e.compute(Lb(e.inputs,r),{inputs:[0]})}}),Cl,Pg,Mg,vg,Bg,Nb,jb,xg,Eg,Ub,Wb,Dg,Vb,Qb,Ig,Hb,Kb,qb,Xb,a4=Je(()=>{Gs(),zt(),Kt(),er(),Cl=e=>{if(jr.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},Pg=(e,t,r)=>{let n=t.format==="NHWC",s=e.dims.slice();n&&s.splice(1,0,s.pop());let a=Object.hasOwnProperty.call(t,"dilations"),i=t.kernelShape.slice(),o=t.strides.slice(),l=a?t.dilations.slice():[],u=t.pads.slice();Ju.adjustPoolAttributes(r,s,i,o,l,u);let p=Ju.computePoolOutputShape(r,s,o,l,i,u,t.autoPad),d=Object.assign({},t);a?Object.assign(d,{kernelShape:i,strides:o,pads:u,dilations:l,cacheKey:t.cacheKey}):Object.assign(d,{kernelShape:i,strides:o,pads:u,cacheKey:t.cacheKey});let c=p.slice();return c.push(c.splice(1,1)[0]),[d,n?c:p]},Mg=(e,t)=>{let r=t.format==="NHWC",n=Te.size(e),s=Te.size(t.kernelShape),a=[{type:12,data:n},{type:12,data:s}],i=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let o=t.kernelShape[t.kernelShape.length-1],l=t.strides[t.strides.length-1],u=t.pads[t.pads.length/2-1],p=t.pads[t.pads.length-1],d=!!(u+p);a.push({type:12,data:o},{type:12,data:l},{type:12,data:u},{type:12,data:p}),i.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let c=!1;if(t.kernelShape.length===2){let g=t.kernelShape[t.kernelShape.length-2],A=t.strides[t.strides.length-2],m=t.pads[t.pads.length/2-2],B=t.pads[t.pads.length-2];c=!!(m+B),a.push({type:12,data:g},{type:12,data:A},{type:12,data:m},{type:12,data:B}),i.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[a,i,!0,d,c]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let o=Te.computeStrides(t.kernelShape);a.push({type:12,data:o},{type:12,data:t.pads},{type:12,data:t.strides}),i.push({name:"kernelStrides",type:"u32",length:o.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let l=t.pads.reduce((u,p)=>u+p);return[a,i,!!l,!1,!1]}},vg=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c=s.format==="NHWC",g=t.type.value,A=bt("output",t.type.tensor,n);if(s.kernelShape.length<=2){let m="",B="",f="",h=r-(c?2:1);if(p?m=`
2146                for (var i: u32 = 0u; i < uniforms.kw; i++) {
2147                  xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i;
2148                  if (xIndices[${h}] < 0 || xIndices[${h}]
2149                      >= uniforms.x_shape[${h}]) {
2150                    pad++;
2151                    continue;
2152                  }
2153                  let x_val = x[${t.indicesToOffset("xIndices")}];
2154                  ${a}
2155                }`:m=`
2156                for (var i: u32 = 0u; i < uniforms.kw; i++) {
2157                  xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i;
2158                  let x_val = x[${t.indicesToOffset("xIndices")}];
2159                  ${a}
2160                }`,s.kernelShape.length===2){let P=r-(c?3:2);d?B=`
2161                for (var j: u32 = 0u; j < uniforms.kh; j++) {
2162                  xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j;
2163                  if (xIndices[${P}] < 0 || xIndices[${P}] >= uniforms.x_shape[${P}]) {
2164                    pad += i32(uniforms.kw);
2165                    continue;
2166                  }
2167              `:B=`
2168                for (var j: u32 = 0u; j < uniforms.kh; j++) {
2169                  xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j;
2170                `,f=`
2171              }
2172            `}return`
2173            ${e.registerUniforms(l).declareVariables(t,A)}
2174
2175            ${e.mainStart()}
2176              ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2177
2178              let indices = ${A.offsetToIndices("global_idx")};
2179              var xIndices = ${A.offsetToIndices("global_idx")};
2180
2181              var value = ${g}(${o});
2182              var pad = 0;
2183              ${B}
2184              ${m}
2185              ${f}
2186              ${i}
2187
2188              output[global_idx] = value;
2189            }`}else{if(c)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let m=s.kernelShape.length,B=s.pads.length,f="";return u?f=`
2190                if (xIndices[j] >= uniforms.x_shape[j]) {
2191                  pad++;
2192                  isPad = true;
2193                  break;
2194                }
2195              }
2196              if (!isPad) {
2197                let x_val = x[${t.indicesToOffset("xIndices")}];
2198                ${a}
2199              }`:f=`
2200              }
2201              let x_val = x[${t.indicesToOffset("xIndices")}];
2202              ${a}
2203            `,`
2204            ${e.registerUniforms(l).declareVariables(t,A)}
2205
2206            ${e.mainStart()}
2207              ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2208              let indices = ${A.offsetToIndices("global_idx")};
2209              var xIndices = ${A.offsetToIndices("global_idx")};
2210
2211              var offsets: array<u32, ${m}>;
2212
2213              var value = ${g}(${o});
2214              var pad = 0;
2215              var isPad = false;
2216
2217              for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {
2218                var offset = i;
2219                for (var j = 0u; j < ${m-1}u; j++) {
2220                  offsets[j] = offset / ${Bt("uniforms.kernelStrides","j",m)};
2221                  offset -= offsets[j] * ${Bt("uniforms.kernelStrides","j",m)};
2222                }
2223                offsets[${m-1}] = offset;
2224
2225                isPad = false;
2226                for (var j = ${r-m}u; j < ${r}u; j++) {
2227                  xIndices[j] = indices[j] * ${Bt("uniforms.strides",`j - ${r-m}u`,m)}
2228                    + offsets[j - ${r-m}u] - ${Bt("uniforms.pads","j - 2u",B)};
2229                  ${f}
2230              }
2231              ${i}
2232
2233              output[global_idx] = value;
2234            }`}},Bg=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,Nb=e=>`${Bg(e)};${e.countIncludePad}`,jb=e=>`${Bg(e)};${e.storageOrder};${e.dilations}`,xg=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),Eg=(e,t,r,n)=>{let[s,a]=Pg(t,n,r),i=Ye("x",t.dataType,t.dims.length),o=i.type.value,l="value += x_val;",u="";s.countIncludePad?u+=`value /= ${o}(uniforms.kernelSize);`:u+=`value /= ${o}(i32(uniforms.kernelSize) - pad);`;let[p,d,c,g,A]=Mg(a,s);p.push(...Dt(t.dims,a));let m=["rank"];return{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(Te.size(a)/64)},programUniforms:p}),getShaderSource:B=>vg(B,i,t.dims.length,a.length,s,l,u,0,d,c,g,A)}},Ub=e=>{let t=e.count_include_pad!==0,r=xg(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let n={countIncludePad:t,...r,cacheKey:""};return{...n,cacheKey:Nb(n)}},Wb=(e,t)=>{Cl(e.inputs),e.compute(Eg("AveragePool",e.inputs[0],!1,t))},Dg={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},Vb=e=>{let t=e.format;return{format:t,...Dg,cacheKey:t}},Qb=(e,t)=>{Cl(e.inputs),e.compute(Eg("GlobalAveragePool",e.inputs[0],!0,t))},Ig=(e,t,r,n)=>{let[s,a]=Pg(t,n,r),i=`
2235      value = max(x_val, value);
2236    `,o="",l=Ye("x",t.dataType,t.dims.length),u=["rank"],[p,d,c,g,A]=Mg(a,s);return p.push(...Dt(t.dims,a)),{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(Te.size(a)/64)},programUniforms:p}),getShaderSource:m=>vg(m,l,t.dims.length,a.length,s,i,o,t.dataType===10?-65504:-1e5,d,c,g,A)}},Hb=(e,t)=>{Cl(e.inputs),e.compute(Ig("MaxPool",e.inputs[0],!1,t))},Kb=e=>{let t=e.storage_order,r=e.dilations,n=xg(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(n.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let s={storageOrder:t,dilations:r,...n,cacheKey:""};return{...s,cacheKey:jb(s)}},qb=e=>{let t=e.format;return{format:t,...Dg,cacheKey:t}},Xb=(e,t)=>{Cl(e.inputs),e.compute(Ig("GlobalMaxPool",e.inputs[0],!0,t))}}),Zb,Jb,eP,tP,i4=Je(()=>{zt(),Kt(),an(),er(),Zb=(e,t)=>{if(e.length<2||e.length>3)throw new Error("DequantizeLinear requires 2 or 3 inputs.");if(e.length===3&&e[1].dims===e[2].dims)throw new Error("x-scale and x-zero-point must have the same shape.");if(e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[0].dataType===6&&e.length>2)throw new Error("In the case of dequantizing int32 there is no zero point.");if(e[1].dims.length!==0&&e[1].dims.length!==1&&e[1].dims.length!==e[0].dims.length)throw new Error("scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.");if(e.length>2){if(e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[1].dims.length!==e[2].dims.length)throw new Error("scale and zero-point inputs must have the same rank.");if(!e[1].dims.map((r,n)=>r===e[2].dims[n]).reduce((r,n)=>r&&n,!0))throw new Error("scale and zero-point inputs must have the same shape.")}if(t.blockSize>0){if(e[1].dims.length===0||e[1].dims.length===1&&e[1].dims[0]===1)throw new Error("blockSize must be set only for block quantization.");
vendor: 8,418 bytes, lines 2236-2326
2236if(!e[1].dims.map((s,a)=>a===t.axis||s===e[0].dims[a]).reduce((s,a)=>s&&a,!0))throw new Error("For block qunatization, scale input shape to match the input shape except for the axis");if(e[1].dims.length!==e[0].dims.length)throw new Error("For block qunatization the scale input rank must be the same as the x rank.");let r=e[0].dims[t.axis],n=e[1].dims[t.axis];if(t.blockSize<Math.ceil(r/n)||t.blockSize>Math.ceil(r/(n-1)-1))throw new Error("blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].")}},Jb=(e,t)=>{let r=Te.normalizeAxis(t.axis,e[0].dims.length),n=e[0].dataType,s=n===3,a=e[0].dims,i=e[1].dataType,o=Te.size(a),l=n===3||n===2,u=l?[Math.ceil(Te.size(e[0].dims)/4)]:e[0].dims,p=e[1].dims,d=e.length>2?e[2]:void 0,c=d?l?[Math.ceil(Te.size(d.dims)/4)]:d.dims:void 0,g=p.length===0||p.length===1&&p[0]===1,A=g===!1&&p.length===1,m=Jr(o),B=g&&(!l||m===4),f=B?m:1,h=B&&!l?m:1,P=Ye("input",l?12:n,u.length,h),_=Ye("scale",i,p.length),w=d?Ye("zero_point",l?12:n,c.length):void 0,b=bt("output",i,a.length,f),v=[P,_];w&&v.push(w);let y=[u,p];d&&y.push(c);let $=[{type:12,data:o/f},{type:12,data:r},{type:12,data:t.blockSize},...Dt(...y,a)],k=W=>{let j=[{name:"output_size",type:"u32"},{name:"axis",type:"u32"},{name:"block_size",type:"u32"}];return`
2237      ${W.registerUniforms(j).declareVariables(...v,b)}
2238      ${W.mainStart()}
2239          ${W.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2240          let output_indices = ${b.offsetToIndices("global_idx")};
2241
2242          // Set input x
2243          ${l?`
2244            let input = ${P.getByOffset("global_idx / 4")};
2245            let x_vec = ${s?"unpack4xI8(input)":"unpack4xU8(input)"};
2246            let x_value = ${f===1?"x_vec[global_idx % 4]":"x_vec"};`:`let x_value = ${P.getByOffset("global_idx")};`};
2247
2248          // Set scale input
2249          ${g?`let scale_value= ${_.getByOffset("0")}`:A?`
2250            let scale_index = ${b.indicesGet("output_indices","uniforms.axis")};
2251            let scale_value= ${_.getByOffset("scale_index")};`:`
2252            var scale_indices: ${_.type.indices} = output_indices;
2253            let index = ${_.indicesGet("scale_indices","uniforms.axis")} / uniforms.block_size;
2254            ${_.indicesSet("scale_indices","uniforms.axis","index")};
2255            let scale_value= ${_.getByIndices("scale_indices")};`};
2256
2257          // Set zero-point input
2258          ${w?g?l?`
2259                let zero_point_input = ${w.getByOffset("0")};
2260                let zero_point_vec =  ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
2261                let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${w.getByOffset("0")}`:A?l?`
2262                let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")};
2263                let zero_point_input = ${w.getByOffset("zero_point_index / 4")};
2264                let zero_point_vec =  ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
2265                let zero_point_value = zero_point_vec[zero_point_index % 4]`:`
2266                let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")};
2267                let zero_point_value = ${w.getByOffset("zero_point_index")};`:l?`
2268                let zero_point_offset = ${_.indicesToOffset("scale_indices")};
2269                let zero_point_input = ${w.getByOffset("zero_point_offset / 4")};
2270                let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
2271                let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${w.getByIndices("scale_indices")};`:`let zero_point_value = ${l?s?"i32":"u32":P.type.value}(0);`};
2272      // Compute and write output
2273      ${b.setByOffset("global_idx",`${b.type.value}(x_value - zero_point_value) * scale_value`)};
2274      }`};return{name:"DequantizeLinear",shaderCache:{hint:t.cacheKey,inputDependencies:w?["rank","rank","rank"]:["rank","rank"]},getShaderSource:k,getRunData:()=>({outputs:[{dims:a,dataType:i}],dispatchGroup:{x:Math.ceil(o/f/64),y:1,z:1},programUniforms:$})}},eP=(e,t)=>{Zb(e.inputs,t),e.compute(Jb(e.inputs,t))},tP=e=>br({axis:e.axis,blockSize:e.blockSize})}),rP,nP,sP,o4=Je(()=>{Gs(),zt(),er(),rP=(e,t,r)=>{let n=e===t,s=e<t&&r<0,a=e>t&&r>0;if(n||s||a)throw new Error("Range these inputs' contents are invalid.")},nP=(e,t,r,n)=>{let s=Math.abs(Math.ceil((t-e)/r)),a=[s],i=s,o=[{type:12,data:i},{type:n,data:e},{type:n,data:r},...Dt(a)],l=u=>{let p=bt("output",n,a.length),d=p.type.value,c=[{name:"outputSize",type:"u32"},{name:"start",type:d},{name:"delta",type:d}];return`
2275        ${u.registerUniforms(c).declareVariables(p)}
2276        ${u.mainStart()}
2277        ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2278        output[global_idx] = uniforms.start + ${d}(global_idx) * uniforms.delta;
2279      }`};return{name:"Range",shaderCache:{hint:`${n}`},getShaderSource:l,getRunData:()=>({outputs:[{dims:a,dataType:n}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:o})}},sP=e=>{let t=0,r=0,n=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],n=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],n=e.inputs[2].getFloat32Array()[0]),jr.webgpu.validateInputContent&&rP(t,r,n),e.compute(nP(t,r,n,e.inputs[0].dataType),{inputs:[]})}}),aP,Tg,Cg,iP,oP,lP,l4=Je(()=>{zt(),Kt(),an(),er(),aP=(e,t,r,n)=>{if(e!=="none"&&n!=="i32"&&n!=="u32"&&n!=="f32")throw new Error(`Input ${n} is not supported with reduction ${e}.`);let s=`{
2280                var oldValue = 0;
2281                loop {
2282                  let newValueF32 =`,a=`;
2283                  let newValue = bitcast<i32>(newValueF32);
2284                  let res = atomicCompareExchangeWeak(&${t}, oldValue, newValue);
2285                  if res.exchanged {
2286                    break;
2287                  }
2288                  oldValue = res.old_value;
2289                }
2290              }`;switch(e){case"none":return`${t}=${r};`;case"add":return n==="i32"||n==="u32"?`atomicAdd(&${t}, bitcast<${n}>(${r}));`:`
2291              ${s}bitcast<${n}>(oldValue) + (${r})${a}`;case"max":return n==="i32"||n==="u32"?`atomicMax(&${t}, bitcast<${n}>(${r}));`:`
2292                ${s}max(bitcast<f32>(oldValue), (${r}))${a}`;case"min":return n==="i32"||n==="u32"?`atomicMin(&${t}, bitcast<${n}>(${r}));`:`${s}min(bitcast<${n}>(oldValue), (${r}))${a}`;case"mul":return`${s}(bitcast<${n}>(oldValue) * (${r}))${a}`;default:throw new Error(`Reduction ${e} is not supported.`)}},Tg=(e,t)=>`${e===1?`
2293    let element_count_dim = uniforms.output_strides;
2294    let dim_value = uniforms.output_shape;`:`
2295    let element_count_dim = uniforms.output_strides[${t?"i - indices_start":"i"}];
2296    let dim_value = uniforms.output_shape[${t?"i - indices_start":"i"} + uniforms.last_index_dimension];`}
2297    
2298    if (index >= 0) {
2299      if (index >= i32(dim_value)) {
2300        index = i32(dim_value - 1);
2301      }
2302    } else {
2303      if (index < -i32(dim_value)) {
2304        index = 0;
2305      } else {
2306        index += i32(dim_value);
2307      }
2308    }
2309    data_offset += u32((u32(index) * element_count_dim));`,Cg=(e,t,r)=>`for (var i = 0u; i < uniforms.num_updates_elements; i++) {
2310        let value = updates[uniforms.num_updates_elements * ${r?"global_idx":"idx"} + i];
2311        ${aP(e.reduction,"output[data_offset + i]","value",t)}
2312      }`,iP=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r,a=1,i=Math.ceil(Te.size(n)/a),o=n[n.length-1],l=Te.sizeFromDimension(r,o),u=Te.sizeFromDimension(n,0)/o,p=[{type:12,data:i},{type:12,data:o},{type:12,data:l},...Dt(e[1].dims,e[2].dims,s)],d=c=>{let g=Ye("indices",e[1].dataType,e[1].dims.length),A=Ye("updates",e[2].dataType,e[2].dims.length,a),m=t.reduction!=="none"&&t.reduction!==""?A_("output",e[0].dataType,s.length):bt("output",e[0].dataType,s.length,a);return`
2313      ${c.registerUniform("output_size","u32").registerUniform("last_index_dimension","u32").registerUniform("num_updates_elements","u32").declareVariables(g,A,m)}
2314      ${c.mainStart()}
2315        ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2316  var hasDuplicates = false;
2317  if (${t.reduction==="none"}) {
2318    for (var i = 0; i < ${u}; i = i + 1) {
2319      for (var j = i + 1; j < ${u}; j = j + 1) {
2320        var index_i = i32(indices[i].x);
2321        var index_j = i32(indices[j].x);
2322        if (index_i == index_j) {
2323          hasDuplicates = true;
2324          break;
2325        }
2326      }
2327      if (hasDuplicates) {
2328        break;
2329      }
2330    }
2331  }
2332
2333  if (${t.reduction==="none"} && hasDuplicates) {
2334    if (global_idx != 0u) {
2335      return;
2336    }
2337    // Process each index-update pair individually when duplicates exist
2338    for (var idx = 0u; idx < ${u}u; idx++) {
2339      var data_offset = 0u;
2340      for (var i = 0u; i < uniforms.last_index_dimension; i++) {
2341        var index = i32(indices[idx * uniforms.last_index_dimension + i].x);
2342        ${Tg(r.length,!1)}
2343      }
2344      ${Cg(t,m.type.value,!1)}
2345    }
2346    return;
2347  }
2348
2349  var data_offset = 0u;
2350  var indices_start = uniforms.last_index_dimension * global_idx;
2351  var indices_end = indices_start + uniforms.last_index_dimension;
2352  for (var i = indices_start; i < indices_end; i++) {
2353    var index = i32(indices[i].x);
2354    ${Tg(r.length,!0)}
2355  }
2356  ${Cg(t,m.type.value,!0)}
2357  }`};return{name:"ScatterND",shaderCache:{hint:`${t.cacheKey}_${t.reduction}`,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:p}),getShaderSource:d}},oP=e=>br({reduction:e.reduction}),lP=(e,t)=>{e.compute(iP(e.inputs,t),{inputs:[e.inputs[1],e.inputs[2]],outputs:[]})}}),uP,cP,dP,$g,pP,gP,AP,hP,mP,fP,_P,wP,Sg,yP,bP,PP,MP,vP,BP,xP,u4=Je(()=>{zt(),Kt(),an(),er(),uP=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and
2358            one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},cP=(e,t,r)=>{t.every(s=>s>=0&&s<r||(()=>{throw new Error("Resize requires axes input values to be positive and less than rank")}));let n=new Array(r).fill(1);return t.forEach((s,a)=>n[s]=e[a]),n},dP=(e,t,r,n,s,a)=>{let[i,o,l]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],u=e[0].dims.length;if(i>0&&e.length>i&&e[i].dims.length>0)e[i].getFloat32Array().forEach(p=>a.push(p));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(o>0&&e.length>o&&e[o].dims.length===1&&e[o].dims[0]>0){if(e[o].getFloat32Array().forEach(p=>n.push(p)),n.length!==0&&n.length!==u&&r>=18&&n.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");uP(n,t),t.axes.length>0&&cP(n,t.axes,u).forEach((p,d)=>n[d]=p)}if(l>0&&e.length>l&&e[l].dims.length===1&&e[l].dims[0]>0&&(e[l].getBigInt64Array().forEach(p=>s.push(Number(p))),s.length!==0&&s.length!==u&&r>=18&&s.length!==t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(n.length!==0&&n.length!==t.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(s.length!==0&&s.length!==t.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof n<"u"&&typeof s<"u"&&n.length>0&&s.length>u)throw new Error("Resize requires only of scales or sizes to be specified")},$g=(e,t,r,n)=>`
2359  // The whole part and the fractional part are calculated separately due to inaccuracy of floating
2360  // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an
2361  // offset-by-one error later in floor().
2362  let big = (${e}) * (${t});
2363  let whole = ${n}(big / (${r}));
2364  let fract = ${n}(big % (${r})) / ${n}(${r});
2365  return whole + fract;
2366`,pP=(e,t)=>
vendor: 5,121 bytes, lines 2366-2414
2366`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,
2367     lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`
2368          if (xScale < 1.0 || floor(xScale) != xScale) {
2369            return ${t}(xResized) / ${t}(xScale);
2370          } else {
2371            ${$g("xResized","lengthOriginal","lengthResized",t)}
2372          }
2373        `;case"pytorch_half_pixel":return`if (lengthResized > 1) {
2374                    return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;
2375                  } else {
2376                    return 0.0;
2377                  }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) {
2378                    return 0.0;
2379                  } else {
2380                    ${$g("xResized","lengthOriginal - 1","lengthResized - 1",t)}
2381                  }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {
2382                    return ${t}(roiStart) * ${t}(lengthOriginal - 1) +
2383                        (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /
2384                        ${t}(lengthResized - 1);
2385                  } else {
2386                    return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);
2387                  }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized);
2388                  const adjustment = ${t}(lengthResized) / outputWidth;
2389                  const center = ${t}(lengthOriginal) / 2;
2390                  const offset = center * (1 - adjustment);
2391                  return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",gP=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) {             return ceil(xOriginal);           } else {             return round(xOriginal);           }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) {                     return floor(xOriginal);                   } else {                     return round(xOriginal);                   }";default:if(t<11)return"if (isDownSample)                     {                       return ceil(xOriginal);                     } else {                       return xOriginal;                     }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",AP=(e,t,r)=>{let n=new Array(r).fill(0).concat(new Array(r).fill(1)),s=e.length===0?n:e.slice();return t.length>0?(t.forEach((a,i)=>{n[a]=s[i],n[i+r]=s[t.length+i]}),n):s},hP=(e,t,r,n)=>{let s=[];if(r.length>0)if(n.length>0){if(e.forEach(a=>s.push(a)),Math.max(...n)>e.length)throw new Error("axes is out of bound");n.forEach((a,i)=>s[a]=r[i])}else r.forEach(a=>s.push(a));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");s=e.map((a,i)=>Math.round(a*t[i]))}return s},mP=(e,t,r)=>{let n=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(a=>t[a]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(a=>t[a]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let s=e.slice();return r.axes.length>0?(r.axes.forEach(a=>t[a]=n),r.axes.forEach(a=>s[a]=Math.round(e[a]*t[a]))):(t.fill(n,0,t.length),s.forEach((a,i)=>s[i]=Math.round(a*t[i]))),s},fP=(e,t,r,n,s)=>`
2392    fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {
2393      var original_indices: array<${e.type.value}, ${r.length}>;
2394      for (var i:u32 = 0; i < ${r.length}; i++) {
2395        var output_index = ${e.indicesGet("output_indices","i")};
2396        var scale = ${Bt("uniforms.scales","i",n)};
2397        var roi_low = ${Bt("uniforms.roi","i",s)};
2398        var roi_hi = ${Bt("uniforms.roi",`i + ${t.length}`,s)};
2399        if (scale == 1.0) {
2400          original_indices[i] = ${e.type.value}(output_index);
2401        } else {
2402          var input_shape_i = ${Bt("uniforms.input_shape","i",t.length)};
2403          var output_shape_i = ${Bt("uniforms.output_shape","i",r.length)};
2404          original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,
2405                                                                           input_shape_i, roi_low, roi_hi);
2406        }
2407      }
2408      return original_indices;
2409    }`,_P=(e,t,r,n,s,a,i)=>`
2410    fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {
2411      var input_indices: ${e.type.indices};
2412      for (var i:u32 = 0; i < ${n.length}; i++) {
2413        var output_index = ${t.indicesGet("output_indices","i")};
2414        var input_index: u32;
2415        var scale = ${Bt("uniforms.scales","i",s)};
2416        if (scale == 1.0) {
2417          input_index = output_index;
2418        } else {
2419          var roi_low = ${Bt("uniforms.roi","i",a)};
2420          var roi_hi = ${Bt("uniforms.roi",`i + ${r.length}`,a)};
2421          var input_shape_i = ${Bt("uniforms.input_shape","i",r.length)};
2422          var output_shape_i = ${Bt("uniforms.output_shape","i",n.length)};
2423          var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,
2424                                                                        input_shape_i, roi_low, roi_hi);
2425          if (!${i} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {
2426            if (original_idx < 0) {
2427              input_index = 0;
2428            } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {
2429              input_index = input_shape_i - 1;
2430            } else {
2431              input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));
2432            }
2433          } else {
2434            input_index = u32(original_idx);
2435          }
2436        }
2437        ${e.indicesSet("input_indices","i","input_index")}
2438      }
2439      return input_indices;
2440    }`,wP=(e,t)=>`
2441    fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {
2442      for (var i:u32 = 0; i < ${t.length}; i++) {
2443        var input_index = ${e.indicesGet("input_indices","i")};
2444        if (input_index < 0 || input_index >= ${Bt("uniforms.input_shape","i",t.length)}) {
2445          return false;
2446        }
2447      }
2448      return true;
2449    }`,Sg=(e,t,r,n)=>e.rank>n?`
2450    ${e.indicesSet("input_indices",t,"channel")};
2451    ${e.indicesSet("input_indices",r,"batch")};
2452`:"",yP=(e,t,r,n,s)=>{let[a,i,o,l]=r.length===2?[-1,0,1,-1]:[0,2,3,1],u=e.type.value;return`
2453    fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${u} {
2454      var input_indices: ${e.type.indices};
2455      ${e.indicesSet("input_indices",i,`max(0, min(row, ${r[i]} - 1))`)};
2456      ${e.indicesSet("input_indices",o,`max(0, min(col, ${r[o]} - 1))`)};
2457      ${Sg(e,l,a,2)}
2458      return ${e.getByIndices("input_indices")};
2459    }
2460
2461    fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${u} {
2462      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);
2463      var row:${u} = originalIndices[${i}];
2464      var col:${u} = originalIndices[${o}];
2465      ${n?`if (row < 0 || row > (${r[i]} - 1) || col < 0 || col > (${r[o]} - 1)) {
2466        return ${s};
2467      }`:""};
2468      row = max(0, min(row, ${r[i]} - 1));
2469      col = max(0, min(col, ${r[o]} - 1));
2470      var row1: u32 = u32(row);
2471      var col1: u32 = u32(col);
2472      var row2: u32 = u32(row + 1);
2473      var col2: u32 = u32(col + 1);
2474      var channel: u32 = ${r.length>2?`u32(originalIndices[${l}])`:"0"};
2475      var batch: u32 =  ${r.length>2?`u32(originalIndices[${a}])`:"0"};
2476      var x11: ${u} = getInputValue(batch, channel, row1, col1);
2477      var x12: ${u} = getInputValue(batch, channel, row1, col2);
2478      var x21: ${u} = getInputValue(batch, channel, row2, col1);
2479      var x22: ${u} = getInputValue(batch, channel, row2, col2);
2480      var dx1: ${u} = abs(row - ${u}(row1));
2481      var dx2: ${u} = abs(${u}(row2) - row);
2482      var dy1: ${u} = abs(col - ${u}(col1));
2483      var dy2: ${u} = abs(${u}(col2) - col);
2484      if (row1 == row2) {
2485        dx1 = 0.5;
2486        dx2 = 0.5;
2487      }
2488      if (col1 == col2) {
2489        dy1 = 0.5;
2490        dy2 = 0.5;
2491      }
2492      return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);
2493    }`},bP=(e,t,r,n,s,a,i,o,l,u)=>{let p=r.length===2,[d,c]=p?[0,1]:[2,3],g=e.type.value,A=m=>{let B=m===d?"row":"col";return`
2494      fn ${B}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${g} {
2495        var output_index = ${t.indicesGet("output_indices",m)};
2496        var originalIdx: ${g} = getOriginalCoordinateFromResizedCoordinate(output_index, ${s[m]},
2497        ${n[m]}, ${r[m]}, ${a[m]}, ${a[m]} + ${r.length});
2498        var fractOriginalIdx: ${g} = originalIdx - floor(originalIdx);
2499        var coefs = getCubicInterpolationCoefs(fractOriginalIdx);
2500
2501        if (${o} && (originalIdx < 0 || originalIdx > (${r[m]} - 1))) {
2502          return ${l};
2503        }
2504        var data: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0);
2505        for (var i: i32 = -1; i < 3; i++) {
2506          var ${B}: ${g} = originalIdx + ${g}(i);
2507          if (${B} < 0 || ${B} >= ${r[m]}) {
2508            ${u?`coefs[i + 1] = 0.0;
2509                        continue;`:o?`return ${l};`:`${B} = max(0, min(${B}, ${r[m]} - 1));`};
2510          }
2511        var input_indices_copy: ${e.type.indices} = input_indices;
2512          ${e.indicesSet("input_indices_copy",m,`u32(${B})`)};
2513          data[i + 1] = ${m===d?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};
2514        }
2515        return cubicInterpolation1D(data, coefs);
2516      }`};return`
2517    ${A(d)};
2518    ${A(c)};
2519  fn getCubicInterpolationCoefs(s: ${g}) -> array<${g}, 4> {
2520    var absS = abs(s);
2521    var coeffs: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0);
2522    var oneMinusAbsS: ${g} = 1.0 - absS;
2523    var twoMinusAbsS: ${g} = 2.0 - absS;
2524    var onePlusAbsS: ${g} = 1.0 + absS;
2525    coeffs[0] = ((${i} * onePlusAbsS - 5 * ${i}) * onePlusAbsS + 8 * ${i}) * onePlusAbsS - 4 * ${i};
2526    coeffs[1] = ((${i} + 2) * absS - (${i} + 3)) * absS * absS + 1;
2527    coeffs[2] = ((${i} + 2) * oneMinusAbsS - (${i} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;
2528    coeffs[3] = ((${i} * twoMinusAbsS - 5 * ${i}) * twoMinusAbsS + 8 * ${i}) * twoMinusAbsS - 4 * ${i};
2529    return coeffs;
2530  }
2531
2532  fn cubicInterpolation1D(x: array<${g}, 4>, coefs: array<${g}, 4>) -> ${g} {
2533    var coefsSum: ${g} = coefs[0] + coefs[1] + coefs[2] + coefs[3];
2534    return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;
2535  }
2536
2537  fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${g} {
2538    var input_indices: ${e.type.indices} = output_indices;
2539    return colCubicInterpolation(input_indices, output_indices);
2540  }
2541    `},PP=(e,t,r,n,s)=>{let[a,i,o,l,u]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],p=e.type.value;return`
2542    fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${p} {
2543      var input_indices: ${e.type.indices};
2544      ${e.indicesSet("input_indices",i,`max(0, min(depth, ${r[i]} - 1))`)};
2545      ${e.indicesSet("input_indices",o,`max(0, min(height, ${r[o]} - 1))`)};
2546      ${e.indicesSet("input_indices",l,`max(0, min(width, ${r[l]} - 1))`)};
2547      ${Sg(e,u,a,3)}
2548      return ${e.getByIndices("input_indices")};
2549    }
2550
2551    fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${p} {
2552      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);
2553      var depth:${p} = originalIndices[${i}];
2554      var height:${p} = originalIndices[${o}];
2555      var width:${p} = originalIndices[${l}];
2556      ${n?`if (depth < 0 || depth > (${r[i]} - 1) || height < 0 || height > (${r[o]} - 1) || width < 0 || (width > ${r[l]} - 1)) {
2557      return ${s};
2558        }`:""};
2559
2560    depth = max(0, min(depth, ${r[i]} - 1));
2561      height = max(0, min(height, ${r[o]} - 1));
2562      width = max(0, min(width, ${r[l]} - 1));
2563      var depth1: u32 = u32(depth);
2564      var height1: u32 = u32(height);
2565      var width1: u32 = u32(width);
2566      var depth2: u32 = u32(depth + 1);
2567      var height2: u32 = u32(height + 1);
2568      var width2: u32 = u32(width + 1);
2569      var channel: u32 = ${r.length>3?`u32(originalIndices[${u}])`:"0"};
2570      var batch: u32 =  ${r.length>3?`u32(originalIndices[${a}])`:"0"};
2571
2572      var x111: ${p} = getInputValue(batch, channel, depth1, height1, width1);
2573      var x112: ${p} = getInputValue(batch, channel, depth1, height1, width2);
2574      var x121: ${p} = getInputValue(batch, channel, depth1, height2, width1);
2575      var x122: ${p} = getInputValue(batch, channel, depth1, height2, width2);
2576      var x211: ${p} = getInputValue(batch, channel, depth2, height1, width1);
2577      var x212: ${p} = getInputValue(batch, channel, depth2, height1, width2);
2578      var x221: ${p} = getInputValue(batch, channel, depth2, height2, width1);
2579      var x222: ${p} = getInputValue(batch, channel, depth2, height2, width2);
2580      var dx1: ${p} = abs(depth - ${p}(depth1));
2581      var dx2: ${p} = abs(${p}(depth2) - depth);
2582      var dy1: ${p} = abs(height - ${p}(height1));
2583      var dy2: ${p} = abs(${p}(height2) - height);
2584      var dz1: ${p} = abs(width - ${p}(width1));
2585      var dz2: ${p} = abs(${p}(width2) - width);
2586      if (depth1 == depth2) {
2587        dx1 = 0.5;
2588        dx2 = 0.5;
2589      }
2590      if (height1 == height2) {
2591        dy1 = 0.5;
2592        dy2 = 0.5;
2593      }
2594      if (width1 == width2) {
2595        dz1 = 0.5;
2596        dz2 = 0.5;
2597      }
2598      return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +
2599              x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);
2600    }`},MP=(e,t,r,n,s,a)=>{let i=e.dims,o=AP(a,t.axes,i.length),l=hP(i,n,s,t.axes),u=n.slice();n.length===0&&(u=i.map((h,P)=>h===0?1:l[P]/h),t.keepAspectRatioPolicy!=="stretch"&&(l=mP(i,u,t)));let p=bt("output",e.dataType,l.length),d=Ye("input",e.dataType,i.length),c=Te.size(l),g=i.length===l.length&&i.every((h,P)=>h===l[P]),A=t.coordinateTransformMode==="tf_crop_and_resize",m=t.extrapolationValue,B=d.type.value,f=h=>`
2601      ${g?"":`
2602      ${pP(t.coordinateTransformMode,B)};
2603      ${(()=>{switch(t.mode){case"nearest":return`
2604              ${wP(d,i)};
2605              ${gP(t.nearestMode,r,B)};
2606              ${_P(d,p,i,l,u.length,o.length,A)};
2607              `;case"linear":return`
2608              ${fP(p,i,l,u.length,o.length)};
2609              ${(()=>{if(i.length===2||i.length===4)return`${yP(d,p,i,A,m)}`;if(i.length===3||i.length===5)return`${PP(d,p,i,A,m)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};
2610            `;case"cubic":return`
2611            ${(()=>{if(i.length===2||i.length===4)return`${bP(d,p,i,l,u,o,t.cubicCoeffA,A,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};
2612            `;default:throw Error("Invalid resize mode")}})()};
2613      `}
2614      ${h.registerUniform("output_size","u32").registerUniform("scales","f32",u.length).registerUniform("roi","f32",o.length).declareVariables(d,p)}
2615      ${h.mainStart()}
2616        ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2617        ${g?"output[global_idx] = input[global_idx];":`
2618        let output_indices = ${p.offsetToIndices("global_idx")};
2619        var input_indices: ${d.type.indices};
2620        ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);
2621                if (checkInputIndices(input_indices)) {
2622                  output[global_idx] = ${d.getByIndices("input_indices")};
2623                } else {
2624                  output[global_idx] = ${t.extrapolationValue};
2625                }`;case"linear":return`output[global_idx] = ${i.length===2||i.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};
2626`}
2627      }`;
vendor: 18,403 bytes, lines 2627-2819
2627return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${u.length>0?t.mode==="cubic"?u:u.length:""}|${s.length>0?s:""}|${o.length>0?o:""}|${g}|${t.mode==="nearest"?i.length:i}`,inputDependencies:["rank"]},getShaderSource:f,getRunData:()=>({outputs:[{dims:l,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:12,data:c},{type:1,data:u},{type:1,data:o},...Dt(i,l)]})}},vP=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},BP=(e,t)=>{let r=[],n=[],s=[],a=vP(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");dP(e.inputs,t,a,r,n,s),e.compute(MP(e.inputs[0],t,a,r,n,s),{inputs:[0]})},xP=e=>{let t=e.antialias,r=e.axes,n=e.coordinateTransformMode,s=e.cubicCoeffA,a=e.excludeOutside!==0,i=e.extrapolationValue,o=e.keepAspectRatioPolicy,l=e.mode,u=e.nearestMode===""?"simple":e.nearestMode;return br({antialias:t,axes:r,coordinateTransformMode:n,cubicCoeffA:s,excludeOutside:a,extrapolationValue:i,keepAspectRatioPolicy:o,mode:l,nearestMode:u})}}),EP,DP,IP,c4=Je(()=>{zt(),Kt(),er(),EP=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],n=e[2];if(t.dataType!==r.dataType||t.dataType!==n.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let s=t.dims[t.dims.length-1],a=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==s)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==a)throw new Error("Skip must have the same sequence length as input");if(n.dims.length!==1)throw new Error("Gamma must be 1D");if(n.dims[n.dims.length-1]!==s)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let i=e[3];if(i.dims.length!==1)throw new Error("Beta must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let i=e[4];if(i.dims.length!==1)throw new Error("Bias must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Bias must have the same hidden size as input")}},DP=(e,t,r,n)=>{let s=t.simplified,a=e[0].dims,i=Te.size(a),o=a,l=i,u=a.slice(-1)[0],p=n?a.slice(0,-1).concat(1):[],d=!s&&e.length>3,c=e.length>4,g=n&&r>1,A=n&&r>2,m=r>3,B=64,f=Jr(u),h=[{type:12,data:l},{type:12,data:f},{type:12,data:u},{type:1,data:t.epsilon}],P=w=>{let b=[{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}],v=[Ye("x",e[0].dataType,e[0].dims,f),Ye("skip",e[1].dataType,e[1].dims,f),Ye("gamma",e[2].dataType,e[2].dims,f)];d&&v.push(Ye("beta",e[3].dataType,e[3].dims,f)),c&&v.push(Ye("bias",e[4].dataType,e[4].dims,f)),v.push(bt("output",e[0].dataType,o,f)),g&&v.push(bt("mean_output",1,p)),A&&v.push(bt("inv_std_output",1,p)),m&&v.push(bt("input_skip_bias_sum",e[0].dataType,o,f));let y=vn(e[0].dataType),$=vn(1,f);return`
2628
2629      ${w.registerUniforms(b).declareVariables(...v)}
2630      var<workgroup> sum_shared : array<${$}, ${B}>;
2631      var<workgroup> sum_squared_shared : array<${$}, ${B}>;
2632
2633      ${w.mainStart([B,1,1])}
2634        let ix = local_id.x;
2635        let iy = global_id.x / ${B};
2636
2637        let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;
2638        var stride = hidden_size_vectorized / ${B};
2639        let offset = ix * stride + iy * hidden_size_vectorized;
2640        let offset1d = stride * ix;
2641        if (ix == ${B-1}) {
2642          stride = hidden_size_vectorized - stride * ix;
2643        }
2644        for (var i: u32 = 0; i < stride; i++) {
2645          let skip_value = skip[offset + i];
2646          let bias_value = ${c?"bias[offset1d + i]":y+"(0.0)"};
2647          let input_value = x[offset + i];
2648          let value = input_value + skip_value + bias_value;
2649          ${m?"input_skip_bias_sum[offset + i] = value;":""}
2650          output[offset + i] = value;
2651          let f32_value = ${Do(y,f,"value")};
2652          sum_shared[ix] += f32_value;
2653          sum_squared_shared[ix] += f32_value * f32_value;
2654        }
2655        workgroupBarrier();
2656
2657        var reduce_size : u32 = ${B};
2658        for (var curr_size = reduce_size >> 1;  curr_size > 0; curr_size = reduce_size >> 1) {
2659          reduce_size = curr_size + (reduce_size & 1);
2660          if (ix < curr_size) {
2661            sum_shared[ix] += sum_shared[ix + reduce_size];
2662            sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size];
2663          }
2664          workgroupBarrier();
2665        }
2666
2667        let sum = sum_shared[0];
2668        let square_sum = sum_squared_shared[0];
2669        let mean = ${Wa("sum",f)} / f32(uniforms.hidden_size);
2670        let inv_std_dev = inverseSqrt(${Wa("square_sum",f)} / f32(uniforms.hidden_size) ${s?"":"- mean * mean"} + uniforms.epsilon);
2671        ${g?"mean_output[global_idx] = mean;":""}
2672        ${A?"inv_std_output[global_idx] = inv_std_dev;":""}
2673
2674        for (var i: u32 = 0; i < stride; i++) {
2675          output[offset + i] = (output[offset + i] ${s?"":`- ${y}(mean)`}) *
2676            ${y}(inv_std_dev) * gamma[offset1d + i]
2677            ${d?"+ beta[offset1d + i]":""};
2678        }
2679      }`},_=[{dims:o,dataType:e[0].dataType}];return r>1&&_.push({dims:p,dataType:1}),r>2&&_.push({dims:p,dataType:1}),r>3&&_.push({dims:a,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${f};${g};${A};${m}`,inputDependencies:e.map((w,b)=>"type")},getShaderSource:P,getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(l/u)},programUniforms:h})}},IP=(e,t)=>{EP(e.inputs);let r=[0];e.outputCount>1&&r.push(-3),e.outputCount>2&&r.push(-3),e.outputCount>3&&r.push(3),e.compute(DP(e.inputs,t,e.outputCount,!1),{outputs:r})}}),TP,$l,CP,kg,$P,SP,kP,OP,d4=Je(()=>{zt(),Kt(),an(),er(),TP=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,n)=>{if(e[n+1].dataType!==6&&e[n+1].dataType!==7)throw new Error(`Input ${n} must be an array of int32 or int64`)})},$l=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(n=>r.push(Number(n)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(n=>r.push(Number(n)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},CP=(e,t)=>{if(e.length>1){let r=$l(e,1),n=$l(e,2),s=$l(e,3);return s.length===0&&(s=[...Array(e[0].dims.length).keys()]),br({starts:r,ends:n,axes:s})}else return t},kg=(e,t,r,n,s)=>{let a=e;return e<0&&(a+=r[n[t]]),s[t]<0?Math.max(0,Math.min(a,r[n[t]]-1)):Math.max(0,Math.min(a,r[n[t]]))},$P=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {
2680          var input_indices: ${e.type.indices};
2681          var carry = 0u;
2682          for (var i = ${r.length}; i >= 0; i--) {
2683            let input_shape_i = ${Bt("uniforms.input_shape","i",r.length)};
2684            let steps_i = ${Bt("uniforms.steps","i",r.length)};
2685            let signs_i = ${Bt("uniforms.signs","i",r.length)};
2686            let starts_i = ${Bt("uniforms.starts","i",r.length)};
2687            var output_index = ${t.indicesGet("output_indices","i")};
2688            var input_index = output_index * steps_i + starts_i + carry;
2689            carry = input_index / input_shape_i;
2690            input_index = input_index % input_shape_i;
2691            if (signs_i < 0) {
2692              input_index = input_shape_i - input_index - 1u + starts_i;
2693            }
2694            ${e.indicesSet("input_indices","i","input_index")};
2695          }
2696          return input_indices;
2697      }`,SP=(e,t)=>{let r=e[0].dims,n=Te.size(r),s=t.axes.length>0?Te.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],a=$l(e,4);a.forEach(f=>f!==0||(()=>{throw new Error("step cannot be 0")})),a.length===0&&(a=Array(s.length).fill(1));let i=t.starts.map((f,h)=>kg(f,h,r,s,a)),o=t.ends.map((f,h)=>kg(f,h,r,s,a));if(s.length!==i.length||s.length!==o.length)throw new Error("start, ends and axes should have the same number of elements");if(s.length!==r.length)for(let f=0;f<r.length;++f)s.includes(f)||(i.splice(f,0,0),o.splice(f,0,r[f]),a.splice(f,0,1));let l=a.map(f=>Math.sign(f));a.forEach((f,h,P)=>{if(f<0){let _=(o[h]-i[h])/f,w=i[h],b=w+_*a[h];i[h]=b,o[h]=w,P[h]=-f}});let u=r.slice(0);s.forEach((f,h)=>{u[f]=Math.ceil((o[f]-i[f])/a[f])});let p={dims:u,dataType:e[0].dataType},d=bt("output",e[0].dataType,u.length),c=Ye("input",e[0].dataType,e[0].dims.length),g=Te.size(u),A=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:i.length},{name:"signs",type:"i32",length:l.length},{name:"steps",type:"u32",length:a.length}],m=[{type:12,data:g},{type:12,data:i},{type:6,data:l},{type:12,data:a},...Dt(e[0].dims,u)],B=f=>`
2698      ${f.registerUniforms(A).declareVariables(c,d)}
2699        ${$P(c,d,r)}
2700        ${f.mainStart()}
2701          ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2702          let output_indices = ${d.offsetToIndices("global_idx")};
2703          let input_indices = calculateInputIndices(output_indices);
2704          ${d.setByOffset("global_idx",c.getByIndices("input_indices"))}
2705      }`;return{name:"Slice",shaderCache:{hint:`${l.length}_${i.length}_${a.length}`,inputDependencies:["rank"]},getShaderSource:B,getRunData:()=>({outputs:[p],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:m})}},kP=(e,t)=>{TP(e.inputs,t);let r=CP(e.inputs,t);e.compute(SP(e.inputs,r),{inputs:[0]})},OP=e=>{let t=e.starts,r=e.ends,n=e.axes;return br({starts:t,ends:r,axes:n})}}),GP,zP,FP,LP,p4=Je(()=>{zt(),Kt(),an(),Va(),er(),GP=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},zP=(e,t)=>{let r=e.inputs[0],n=r.dims,s=Te.size(n),a=n.length,i=Te.normalizeAxis(t.axis,a),o=i<n.length-1,l,u=[];o?(u=Array.from({length:a},(v,y)=>y),u[i]=a-1,u[a-1]=i,l=e.compute(ns(r,u),{inputs:[r],outputs:[-1]})[0]):l=r;let p=l.dims,d=p[a-1],c=s/d,g=Jr(d),A=d/g,m=64;c===1&&(m=256);let B=(v,y)=>y===4?`max(max(${v}.x, ${v}.y), max(${v}.z, ${v}.w))`:y===2?`max(${v}.x, ${v}.y)`:y===3?`max(max(${v}.x, ${v}.y), ${v}.z)`:v,f=Ye("x",l.dataType,l.dims,g),h=bt("result",l.dataType,l.dims,g),P=f.type.value,_=vn(l.dataType)==="f32"?`var threadMax = ${P}(-3.402823e+38f);`:`var threadMax = ${P}(-65504.0h);`,w=v=>`
2706      var<workgroup> rowMaxShared : ${P};
2707      var<workgroup> rowSumShared : ${P};
2708      var<workgroup> threadShared : array<${P}, ${m}>;
2709
2710      fn getValue(row: i32, col: i32, row_stride: i32) -> ${P} {
2711        let index = row * row_stride + col;
2712        return x[index];
2713      }
2714
2715      fn setValue(row: i32, col: i32, row_stride: i32, value: ${P}) {
2716        let index = row * row_stride + col;
2717        result[index] = value;
2718      }
2719      ${v.registerUniform("packedCols","i32").declareVariables(f,h)}
2720      ${v.mainStart(m)}
2721        let gindex = i32(global_idx);
2722        let lindex = i32(local_idx);
2723        const wg = ${m};
2724        let row = gindex / wg;
2725        let cols = uniforms.packedCols;
2726        let row_stride : i32 = uniforms.packedCols;
2727
2728        // find the rows max
2729        ${_}
2730        for (var col = lindex; col < cols; col += wg) {
2731          let value = getValue(row, col, row_stride);
2732          threadMax = max(threadMax, value);
2733        }
2734        if (lindex < cols) {
2735          threadShared[lindex] = threadMax;
2736        }
2737        workgroupBarrier();
2738
2739        var reduceSize = min(cols, wg);
2740        for (var currSize = reduceSize >> 1;  currSize > 0; currSize = reduceSize >> 1) {
2741          reduceSize = currSize + (reduceSize & 1);
2742          if (lindex < currSize) {
2743            threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);
2744          }
2745          workgroupBarrier();
2746        }
2747        if (lindex == 0) {
2748          rowMaxShared = ${P}(${B("threadShared[0]",g)});
2749        }
2750        workgroupBarrier();
2751
2752        // find the rows sum
2753        var threadSum = ${P}(0.0);
2754        for (var col = lindex; col < cols; col += wg) {
2755          let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);
2756          threadSum += subExp;
2757        }
2758        threadShared[lindex] = threadSum;
2759        workgroupBarrier();
2760
2761        for (var currSize = wg >> 1;  currSize > 0; currSize = currSize >> 1) {
2762          if (lindex < currSize) {
2763            threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];
2764          }
2765          workgroupBarrier();
2766        }
2767        if (lindex == 0) {
2768          rowSumShared = ${P}(${Wa("threadShared[0]",g)});
2769        }
2770        workgroupBarrier();
2771
2772        // calculate final value for each element in the row
2773        for (var col = lindex; col < cols; col += wg) {
2774          let value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;
2775          setValue(row, col, row_stride, value);
2776        }
2777      }`,b=e.compute({name:"Softmax",shaderCache:{hint:`${g};${m}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:p,dataType:l.dataType}],dispatchGroup:{x:c},programUniforms:[{type:6,data:A}]}),getShaderSource:w},{inputs:[l],outputs:[o?-1:0]})[0];o&&e.compute(ns(b,u),{inputs:[b]})},FP=(e,t)=>{GP(e.inputs),zP(e,t)},LP=e=>br({axis:e.axis})}),Og,RP,YP,NP,jP,g4=Je(()=>{zt(),Kt(),er(),Og=e=>Array.from(e.getBigInt64Array(),Number),RP=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==10&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, float16, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(Og(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},YP=(e,t)=>{let r=[];for(let n=0;n<e.length;++n)r.push(e[n]*t[n]);return r},NP=(e,t)=>{let r=e[0].dims,n=t??Og(e[1]),s=YP(r,n),a=Te.size(s),i=e[0].dataType,o=Ye("input",i,r.length),l=bt("output",i,s.length),u=p=>`
2778      const inputShape = ${o.indices(...r)};
2779      ${p.registerUniform("output_size","u32").declareVariables(o,l)}
2780      ${p.mainStart()}
2781      ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2782      let output_indices = ${l.offsetToIndices("global_idx")};
2783      var input_indices: ${o.type.indices};
2784      for (var i = 0; i < ${r.length}; i++) {
2785        let input_dim_i = ${o.indicesGet("uniforms.input_shape","i")};
2786        let input_dim_value = ${l.indicesGet("output_indices","i")}  % input_dim_i;
2787
2788        ${o.indicesSet("input_indices","i","input_dim_value")}
2789      }
2790      ${l.setByOffset("global_idx",o.getByIndices("input_indices"))}
2791    }`;return{name:"Tile",shaderCache:{hint:`${n}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:12,data:a},...Dt(e[0].dims,s)]}),getShaderSource:u}},jP=e=>{RP(e.inputs),e.compute(NP(e.inputs),{inputs:[0]})}}),UP,WP,VP,A4=Je(()=>{zt(),Kt(),er(),UP=(e,t,r,n,s)=>{let a=bt("output_data",s,r.length,4),i=Ye("a_data",t[1].dataType,t[1].dims.length,4),o=Ye("b_data",t[2].dataType,t[2].dims.length,4),l=Ye("c_data",t[0].dataType,t[0].dims.length,4),u,p=(d,c,g)=>`select(${c}, ${d}, ${g})`;if(!n)u=a.setByOffset("global_idx",p(i.getByOffset("global_idx"),o.getByOffset("global_idx"),l.getByOffset("global_idx")));else{let d=(c,g,A="")=>{let m=`a_data[index_a${g}][component_a${g}]`,B=`b_data[index_b${g}][component_b${g}]`,f=`bool(c_data[index_c${g}] & (0xffu << (component_c${g} * 8)))`;return`
2792            let output_indices${g} = ${a.offsetToIndices(`global_idx * 4u + ${g}u`)};
2793            let offset_a${g} = ${i.broadcastedIndicesToOffset(`output_indices${g}`,a)};
2794            let offset_b${g} = ${o.broadcastedIndicesToOffset(`output_indices${g}`,a)};
2795            let offset_c${g} = ${l.broadcastedIndicesToOffset(`output_indices${g}`,a)};
2796            let index_a${g} = offset_a${g} / 4u;
2797            let index_b${g} = offset_b${g} / 4u;
2798            let index_c${g} = offset_c${g} / 4u;
2799            let component_a${g} = offset_a${g} % 4u;
2800            let component_b${g} = offset_b${g} % 4u;
2801            let component_c${g} = offset_c${g} % 4u;
2802            ${c}[${g}] = ${A}(${p(m,B,f)});
2803          `};s===9?u=`
2804            var data = vec4<u32>(0);
2805            ${d("data",0,"u32")}
2806            ${d("data",1,"u32")}
2807            ${d("data",2,"u32")}
2808            ${d("data",3,"u32")}
2809            output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:u=`
2810            ${d("output_data[global_idx]",0)}
2811            ${d("output_data[global_idx]",1)}
2812            ${d("output_data[global_idx]",2)}
2813            ${d("output_data[global_idx]",3)}
2814          `}return`
2815        ${e.registerUniform("vec_size","u32").declareVariables(l,i,o,a)}
2816        ${e.mainStart()}
2817        ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
2818        ${u}
2819      }`},WP=e=>{let t=e[1].dims,r=e[2].dims,n=e[0].dims,s=e[1].dataType,a=!(Te.areEqual(t,r)&&Te.areEqual(r,n)),i=t,o=Te.size(t);if(a){let u=xo.calcShape(xo.calcShape(t,r,!1),n,!1);if(!u)throw new Error("Can't perform where op on the given tensors");i=u,o=Te.size(i)}let l=Math.ceil(o/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:u=>UP(u,e,i,a,s),getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64/4)},programUniforms:[{type:12,data:l},...Dt(n,t,r,i)]})}},VP=e=>{e.compute(WP(e.inputs))}}),QP,h4=Je(()=>{Ik(),Kp(),Tk(),Ck(),$k(),Sk(),kk(),Lk(),Yk(),Nk(),jk(),Uk(),Wk(),Vk(),Qk(),Hk(),Kk(),qk(),Xk(),Zk(),Jk(),e4(),t4(),r4(),n4(),ab(),s4(),a4(),i4(),o4(),l4(),Vp(),u4(),hb(),c4(),d4(),p4(),pb(),g4(),Va(),Jp(),A4(),QP=new Map([["Abs",[Ew]],["Acos",[Dw]],["Acosh",[Iw]],["Add",[my]],["ArgMax",[pw,Hp]],["ArgMin",[dw,Hp]],["Asin",[Tw]],["Asinh",[Cw]],["Atan",[$w]],["Atanh",[Sw]],["Attention",[_w]],["AveragePool",[Wb,Ub]],["BatchNormalization",[Pw]],["BiasAdd",[Bw]],["BiasSplitGelu",[gy]],["Cast",[Ow,kw]],["Ceil",[Fw]],["Clip",[zw]],["Concat",[Ty,Cy]],["Conv",[pg,cg]],["ConvTranspose",[s0,t0]],["Cos",[Lw]],["Cosh",[Rw]],["CumSum",[i0,o0]],["DepthToSpace",[d0,p0]],["DequantizeLinear",[eP,tP]],["Div",[fy]],["Einsum",[_0,w0]],["Elu",[Yw,xl]],["
2819Equal",[_y]],["Erf",[Nw]],["Exp",[jw]],["Expand",[M0]],["FastGelu",[B0]],["Floor",[Uw]],["FusedConv",[pg,cg]],["Gather",[I0,D0]],["GatherElements",[R0,L0]],["GatherBlockQuantized",[O0,G0]],["GatherND",[C0,$0]],["Gelu",[Ww]],["Gemm",[U0,j0]],["GlobalAveragePool",[Qb,Vb]],["GlobalMaxPool",[Xb,qb]],["Greater",[Py]],["GreaterOrEqual",[vy]],["GridSample",[J0,eb]],["GroupQueryAttention",[wb]],["HardSigmoid",[Jw,Zw]],["InstanceNormalization",[Pb]],["LayerNormalization",[Bb]],["LeakyRelu",[Vw,xl]],["Less",[My]],["LessOrEqual",[By]],["Log",[oy]],["MatMul",[Eb]],["MatMulNBits",[Cb,$b]],["MaxPool",[Hb,Kb]],["Mul",[wy]],["MultiHeadAttention",[sb,rb]],["Neg",[Hw]],["Not",[Qw]],["Pad",[Yb]],["Pow",[yy]],["QuickGelu",[cy,xl]],["Range",[sP]],["Reciprocal",[Kw]],["ReduceMin",[iw]],["ReduceMean",[tw]],["ReduceMax",[aw]],["ReduceSum",[lw]],["ReduceProd",[ow]],["ReduceL1",[rw]],["ReduceL2",[nw]],["ReduceLogSum",[cw]],["ReduceLogSumExp",[sw]],["ReduceSumSquare",[uw]],["Relu",[qw]],["Resize",[BP,xP]],["RotaryEmbedding",[Ab]],["ScatterND",[lP,oP]],["Sigmoid",[Xw]],["Sin",[ey]],["Sinh",[ty]],["Slice",[kP,OP]],["Ski
2819pLayerNormalization",[IP]],["Split",[cb,db]],["Sqrt",[ry]],["Softmax",[FP,LP]],["Sub",[by]],["Tan",[ny]],["Tanh",[sy]],["ThresholdedRelu",[iy,xl]],["Tile",[jP]],["Transpose",[P_,M_]],["Where",[VP]]])}),HP,m4=Je(()=>{Gs(),Ia(),er(),HP=class{constructor(e){this.backend=e,this.repo=new Map,this.attributesBound=!1}getArtifact(e){return this.repo.get(e)}setArtifact(e,t){this.repo.set(e,t)}run(e,t,r,n,s){Os(e.programInfo.name);let a=this.backend.device,i=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let o=[];for(let u of t)o.push({binding:o.length,resource:{buffer:u.buffer}});for(let u of r)o.push({binding:o.length,resource:{buffer:u.buffer}});s&&o.push({binding:o.length,resource:s});let l=a.createBindGroup({layout:e.computePipeline.getBindGroupLayout(0),entries:o,label:e.programInfo.name});if(this.backend.sessionStatus==="capturing"){let u={kernelId:this.backend.currentKernelId,computePipeline:e.computePipeline,bindGroup:l,dispatchGroup:n};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(u)}i.setPipeline(e.computePipeline),i.setBindGroup(0,l),i.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),_s(e.programInfo.name)}dispose(){}build(e,t){Os(e.name);let r=this.backend.device,n=[];[{feature:"shader-f16",extension:"f16"},{feature:"subgroups",extension:"subgroups"}].forEach(u=>{r.features.has(u.feature)&&n.push(`enable ${u.extension};`)});let s=m_(t,this.backend.device.limits),a=e.getShaderSource(s),i=`${n.join(`
2820`)}
2821${s.additionalImplementations}
2822${a}`,o=r.createShaderModule({code:i,label:e.name});lr("verbose",()=>`[WebGPU] ${e.name} shader code: ${i}`);let l=r.createComputePipeline({compute:{module:o,entryPoint:"main"},layout:"auto",label:e.name});return _s(e.name),{programInfo:e,computePipeline:l,uniformVariablesInfo:s.variablesInfo}}normalizeDispatchGroupSize(e){let t=typeof e=="number"?e:e.x,r=typeof e=="number"?1:e.y||1,n=typeof e=="number"?1:e.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(t<=s&&r<=s&&n<=s)return[t,r,n];let a=t*r*n,i=Math.ceil(Math.sqrt(a));if(i>s){if(i=Math.ceil(Math.cbrt(a)),i>s)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[i,i,i]}else return[i,i,1]}}}),KP={};vo(KP,{WebGpuBackend:()=>JP});var qP,XP,ZP,JP,f4=Je(()=>{Gs(),zt(),Ia(),r_(),Ek(),h4(),m4(),qP=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let n=0;n<e.length;++n){let s=e[n].dataType;switch(t[n]){case"none":{r.push("");break}case"type":{r.push(`${s}`);break}case"rank":{let a=e[n].dims.length;r.push(`${s};${a}`);break}case"dims":{let a=e[n].dims.join(",");r.push(`${s};${a}`);break}default:throw new Error(`unsupported input dependency: ${t[n]}`)}}return r.join("|")},XP=(e,t,r)=>{let n=e.name;return e.shaderCache?.hint&&(n+="["+e.shaderCache.hint+"]"),n+=":"+r+`:${qP(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,n},ZP=class{constructor(e){e&&(this.architecture=e.architecture,this.vendor=e.vendor)}isArchitecture(e){return this.architecture===e}isVendor(e){return this.vendor===e}},JP=class{constructor(){this.currentSessionId=null,this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionStatus="default",this.capturedCommandList=new Map,this.capturedPendingKernels=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let e=this.kernelCustomData.get(this.currentKernelId);return e||(e={},this.kernelCustomData.set(this.currentKernelId,e)),e}async initialize(e,t){this.env=e;let r=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:t.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:t.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:t.limits.maxStorageBufferBindingSize,maxBufferSize:t.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:t.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:t.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:t.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:t.limits.maxComputeWorkgroupSizeZ},requiredFeatures:r},s=a=>t.features.has(a)&&r.push(a)&&!0;s("chromium-experimental-timestamp-query-inside-passes")||s("timestamp-query"),s("shader-f16"),s("subgroups"),this.device=await t.requestDevice(n),this.adapterInfo=new ZP(t.info||await t.requestAdapterInfo()),this.gpuDataManager=p_(this),this.programManager=new HP(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,Tp(e.logLevel,!!e.debug),this.device.onuncapturederror=a=>
vendor: 17,728 bytes, line 2822
2822{a.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${a.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,"adapter",{value:t,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let e=this.getCommandEncoder(),t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=e.beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;Os(),this.endComputePass();let e;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),e=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(e,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,e,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&e.mapAsync(GPUMapMode.READ).then(()=>{let t=new BigUint64Array(e.getMappedRange()),r=this.pendingQueries.get(e);for(let n=0;n<t.length/2;n++){let s=r[n],a=s.kernelId,i=this.kernels.get(a),o=i.kernelType,l=i.kernelName,u=s.programName,p=s.inputTensorViews,d=s.outputTensorViews,c=t[n*2],g=t[n*2+1];typeof this.queryTimeBase>"u"&&(this.queryTimeBase=c);let A=Number(c-this.queryTimeBase),m=Number(g-this.queryTimeBase);if(!Number.isSafeInteger(A)||!Number.isSafeInteger(m))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:p.map(B=>({dims:B.dims,dataType:Da(B.dataType)})),outputsMetadata:d.map(B=>({dims:B.dims,dataType:Da(B.dataType)})),kernelId:a,kernelType:o,kernelName:l,programName:u,startTime:A,endTime:m});else{let B="";p.forEach((h,P)=>{B+=`input[${P}]: [${h.dims}] | ${Da(h.dataType)}, `});let f="";d.forEach((h,P)=>{f+=`output[${P}]: [${h.dims}] | ${Da(h.dataType)}, `}),console.log(`[profiling] kernel "${a}|${o}|${l}|${u}" ${B}${f}execution time: ${m-A} ns`)}bl("GPU",`${u}::${c}::${g}`)}e.unmap(),this.pendingQueries.delete(e)}),_s()}run(e,t,r,n,s,a){Os(e.name);let i=[];for(let h=0;h<t.length;++h){let P=t[h].data;if(P===0)continue;let _=this.gpuDataManager.get(P);if(!_)throw new Error(`no GPU data for input: ${P}`);i.push(_)}let{outputs:o,dispatchGroup:l,programUniforms:u}=e.getRunData(t),p=r.length===0?o.map((h,P)=>P):r;if(p.length!==o.length)throw new Error(`Output size ${p.length} must be equal to ${o.length}.`);let d=[],c=[];for(let h=0;h<o.length;++h){if(!Number.isInteger(p[h])||p[h]<-3||p[h]>=a)throw new Error(`Invalid output index: ${p[h]}`);if(p[h]===-3)continue;let P=p[h]===-1,_=p[h]===-2,w=P||_?s(o[h].dataType,o[h].dims):n(p[h],o[h].dataType,o[h].dims);if(d.push(w),w.data===0)continue;let b=this.gpuDataManager.get(w.data);if(!b)throw new Error(`no GPU data for output: ${w.data}`);if(P&&this.temporaryData.push(b),_){let v=this.kernelPersistentData.get(this.currentKernelId);v||(v=[],this.kernelPersistentData.set(this.currentKernelId,v)),v.push(b)}c.push(b)}if(i.length!==t.length||c.length!==d.length){if(c.length===0)return _s(e.name),d;throw new Error(`Program ${e.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let g;if(u){let h=0,P=[];u.forEach(v=>{let y=typeof v.data=="number"?[v.data]:v.data;if(y.length===0)return;let $=v.type===10?2:4,k,W;v.type===10?(W=y.length>4?16:y.length>2?8:y.length*$,k=y.length>4?16:$*y.length):(W=y.length<=2?y.length*$:16,k=16),h=Math.ceil(h/W)*W,P.push(h);let j=v.type===10?8:4;h+=y.length>4?Math.ceil(y.length/j)*k:y.length*$});let _=16;h=Math.ceil(h/_)*_;let w=new ArrayBuffer(h);u.forEach((v,y)=>{let $=P[y],k=typeof v.data=="number"?[v.data]:v.data;if(v.type===6)new Int32Array(w,$,k.length).set(k);else if(v.type===12)new Uint32Array(w,$,k.length).set(k);else if(v.type===10)new Uint16Array(w,$,k.length).set(k);else if(v.type===1)new Float32Array(w,$,k.length).set(k);else throw new Error(`Unsupported uniform type: ${Da(v.type)}`)});let b=this.gpuDataManager.create(h,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(b.buffer,0,w,0,h),this.gpuDataManager.release(b.id),g={offset:0,size:h,buffer:b.buffer}}let A=this.programManager.normalizeDispatchGroupSize(l),m=A[1]===1&&A[2]===1,B=XP(e,t,m),f=this.programManager.getArtifact(B);if(f||(f=this.programManager.build(e,A),this.programManager.setArtifact(B,f),lr("info",()=>`[artifact] key: ${B}, programName: ${e.name}`)),u&&f.uniformVariablesInfo){if(u.length!==f.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${f.uniformVariablesInfo.length}, got ${u.length} in program "${f.programInfo.name}".`);for(let h=0;h<u.length;h++){let P=u[h],_=P.type,w=typeof P.data=="number"?1:P.data.length,[b,v]=f.uniformVariablesInfo[h];if(_!==b||w!==v)throw new Error(`Uniform variable ${h} mismatch: expect type ${b} with size ${v}, got type ${_} with size ${w} in program "${f.programInfo.name}".`)}}if(lr("info",()=>`[ProgramManager] run "${e.name}" (key=${B}) with ${A[0]}x${A[1]}x${A[2]}`),this.queryType!=="none"||this.sessionStatus==="capturing"){let h={kernelId:this.currentKernelId,programName:f.programInfo.name,inputTensorViews:t,outputTensorViews:d};this.pendingKernels.push(h),this.sessionStatus==="capturing"&&this.capturedPendingKernels.get(this.currentSessionId).push(h)}return this.programManager.run(f,i,c,A,g),_s(e.name),d}upload(e,t){this.gpuDataManager.upload(e,t)}memcpy(e,t){this.gpuDataManager.memcpy(e,t)}async download(e,t){await this.gpuDataManager.download(e,t)}alloc(e){return this.gpuDataManager.create(e).id}free(e){return this.gpuDataManager.release(e)}createKernel(e,t,r,n){let s=QP.get(e);if(!s)throw new Error(`kernel not implemented: ${e}`);let a={kernelType:e,kernelName:n,kernelEntry:s[0],attributes:[s[1],r]};this.kernels.set(t,a)}releaseKernel(e){let t=this.kernelPersistentData.get(e);if(t){for(let r of t)this.gpuDataManager.release(r.id);this.kernelPersistentData.delete(e)}this.kernelCustomData.delete(e),this.kernels.delete(e)}computeKernel(e,t,r){let n=this.kernels.get(e);if(!n)throw new Error(`kernel not created: ${e}`);let s=n.kernelType,a=n.kernelName,i=n.kernelEntry,o=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${s}] ${a}" is not allowed to be called recursively`);this.currentKernelId=e,o[0]&&(o[1]=o[0](o[1]),o[0]=void 0),lr("info",()=>`[WebGPU] Start to run kernel "[${s}] ${a}"...`);let l=this.env.debug;this.temporaryData=[];try{return l&&this.device.pushErrorScope("validation"),i(t,o[1]),0}catch(u){return r.push(Promise.resolve(`[WebGPU] Kernel "[${s}] ${a}" failed. ${u}`)),1}finally{l&&r.push(this.device.popErrorScope().then(u=>u?`GPU validation error for kernel "[${s}] ${a}": ${u.message}`:null));for(let u of this.temporaryData)this.gpuDataManager.release(u.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(e,t,r,n){let s=this.sessionExternalDataMapping.get(e);s||(s=new Map,this.sessionExternalDataMapping.set(e,s));let a=s.get(t),i=this.gpuDataManager.registerExternalBuffer(r,n,a);return s.set(t,[i,r]),i}unregisterBuffers(e){let t=this.sessionExternalDataMapping.get(e);t&&(t.forEach(r=>this.gpuDataManager.unregisterExternalBuffer(r[0])),this.sessionExternalDataMapping.delete(e))}getBuffer(e){let t=this.gpuDataManager.get(e);if(!t)throw new Error(`no GPU data for buffer: ${e}`);return t.buffer}createDownloader(e,t,r){return async()=>{let n=await Yp(this,e,t);return Cp(n.buffer,r)}}writeTimestamp(e){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,e)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||(typeof this.env.trace>"u"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){lr("info","captureBegin"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus="capturing"}captureEnd(){lr("info","captureEnd"),this.flush(),this.sessionStatus="default"}replay(){lr("info","replay"),this.sessionStatus="replaying";let e=this.capturedCommandList.get(this.currentSessionId),t=this.capturedPendingKernels.get(this.currentSessionId),r=e.length;this.pendingKernels=[];for(let n=0;n<r;n++){let s=this.getComputePassEncoder(),a=e[n];this.writeTimestamp(this.pendingDispatchNumber*2),s.setPipeline(a.computePipeline),s.setBindGroup(0,a.bindGroup),s.dispatchWorkgroups(...a.dispatchGroup),this.writeTimestamp(this.pendingDispatchNumber*2+1),this.pendingDispatchNumber++,this.queryType!=="none"&&this.pendingKernels.push(t[n]),(this.pendingDispatchNumber>=this.maxDispatchNumber||this.queryType==="at-passes")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus="default"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(e){this.unregisterBuffers(e),this.capturedCommandList.has(e)&&this.capturedCommandList.delete(e),this.capturedPendingKernels.has(e)&&this.capturedPendingKernels.delete(e),this.gpuDataManager.onReleaseSession(e)}onRunStart(e){this.currentSessionId=e,this.setQueryType()}}}),eM={};vo(eM,{init:()=>rM});var pc,tM,rM,_4=Je(()=>{zt(),Ia(),Kt(),xk(),pc=class FS{constructor(t,r,n,s){this.module=t,this.dataType=r,this.data=n,this.dims=s}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}getUint16Array(){if(this.dataType!==10&&this.dataType!==4)throw new Error("Invalid data type");let t=Te.size(this.dims);return t===0?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if(Te.size(t)!==Te.size(this.dims))throw new Error("Invalid new shape");return new FS(this.module,this.dataType,this.data,t)}},tM=class{constructor(e,t,r){this.module=e,this.backend=t,this.customDataOffset=0,this.customDataSize=0,this.adapterInfo=t.adapterInfo;let n=e.PTR_SIZE,s=r/e.PTR_SIZE,a=n===4?"i32":"i64";this.opKernelContext=Number(e.getValue(n*s++,a));let i=Number(e.getValue(n*s++,a));this.outputCount=Number(e.getValue(n*s++,a)),this.customDataOffset=Number(e.getValue(n*s++,"*")),this.customDataSize=Number(e.getValue(n*s++,a));let o=[];for(let l=0;l<i;l++){let u=Number(e.getValue(n*s++,a)),p=Number(e.getValue(n*s++,"*")),d=Number(e.getValue(n*s++,a)),c=[];for(let g=0;g<d;g++)c.push(Number(e.getValue(n*s++,a)));o.push(new pc(e,u,p,c))}this.inputs=o}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}compute(e,t){let r=t?.inputs?.map(i=>typeof i=="number"?this.inputs[i]:i)??this.inputs,n=t?.outputs??[],s=(i,o,l)=>new pc(this.module,o,this.output(i,l),l),a=(i,o)=>{let l=$i(i,o);if(!l)throw new Error(`Unsupported data type: ${i}`);let u=l>0?this.backend.gpuDataManager.create(l).id:0;return new pc(this.module,i,u,o)};return this.backend.run(e,r,n,s,a,this.outputCount)}output(e,t){let r=this.module.stackSave();try{let n=this.module.PTR_SIZE,s=n===4?"i32":"i64",a=this.module.stackAlloc((1+t.length)*n);this.module.setValue(a,t.length,s);for(let i=0;i<t.length;i++)this.module.setValue(a+n*(i+1),t[i],s);return this.module._JsepOutput(this.opKernelContext,e,a)}catch(n){throw new Error(`Failed to generate kernel's output[${e}] with dims [${t}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${n}`)}finally{this.module.stackRestore(r)}}},rM=async(e,t,r,n)=>{let s=t.jsepInit;if(!s)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");if(e==="webgpu"){let a=(f4(),_l(KP)).WebGpuBackend,i=new a;await i.initialize(r,n),s("webgpu",[i,o=>i.alloc(Number(o)),o=>i.free(o),(o,l,u,p=!1)=>{if(p)lr("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(o)}, dst=${Number(l)}, size=${Number(u)}`),i.memcpy(Number(o),Number(l));else{lr("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(o)}, gpuDataId=${Number(l)}, size=${Number(u)}`);let d=t.HEAPU8.subarray(Number(o>>>0),Number(o>>>0)+Number(u));i.upload(Number(l),d)}},async(o,l,u)=>{lr("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${l}, size=${u}`),await i.download(Number(o),()=>t.HEAPU8.subarray(Number(l)>>>0,Number(l+u)>>>0))},(o,l,u)=>i.createKernel(o,Number(l),u,t.UTF8ToString(t._JsepGetNodeName(Number(l)))),o=>i.releaseKernel(o),(o,l,u,p)=>{lr("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${u}, kernel=${o}, contextDataOffset=${l}`);let d=new tM(t,i,Number(l));return i.computeKernel(Number(o),d,p)},()=>i.captureBegin(),()=>i.captureEnd(),()=>i.replay()])}else{let a=new l_(r);s("webnn",[a,()=>a.reserveTensorId(),i=>a.releaseTensorId(i),async(i,o,l,u,p)=>a.ensureTensor(i,o,l,u,p),(i,o)=>{a.uploadTensor(i,o)},async(i,o)=>a.downloadTensor(i,o)])}}}),nM,Gg,zg,Qa,sM,Fg,gc,Lg,Rg,Yg,Ng,jg,Ug,aM=Je(()=>{Mk(),vk(),zt(),Ci(),vp(),Vf(),nM=(e,t)=>{Fr()._OrtInit(e,t)!==0&&$r("Can't initialize onnxruntime.")},Gg=async e=>{nM(e.wasm.numThreads,Zu(e.logLevel))},zg=async(e,t)=>{Fr().asyncInit?.();{let r=(_4(),_l(eM)).init;if(t==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");let n=e.webgpu.adapter;if(n){if(typeof n.limits!="object"||typeof n.features!="object"||typeof n.requestDevice!="function")throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let s=e.webgpu.powerPreference;if(s!==void 0&&s!=="low-power"&&s!=="high-performance")throw new Error(`Invalid powerPreference setting: "${s}"`);let a=e.webgpu.forceFallbackAdapter;if(a!==void 0&&typeof a!="boolean")throw new Error(`Invalid forceFallbackAdapter setting: "${a}"`);if(n=await navigator.gpu.requestAdapter({powerPreference:s,forceFallbackAdapter:a}),!n)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}await r("webgpu",Fr(),e,n)}if(t==="webnn"){if(typeof navigator>"u"||!navigator.ml)throw new Error("WebNN is not supported in current environment");await r("webnn",Fr(),e)}}},Qa=new Map,sM=e=>{let t=Fr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetInputOutputCount(e,s,s+n)!==0&&$r("Can't get session input/output count.");let a=n===4?"i32":"i64";return[Number(t.getValue(s,a)),Number(t.getValue(s+n,a))]}finally{t.stackRestore(r)}},Fg=(e,t)=>{let r=Fr(),n=r.stackSave(),s=0;try{let a=r.PTR_SIZE,i=r.stackAlloc(2*a);r._OrtGetInputOutputMetadata(e,t,i,i+a)!==0&&$r("Can't get session input/output metadata.");let o=Number(r.getValue(i,"*"));s=Number(r.getValue(i+a,"*"));let l=r.HEAP32[s/4];if(l===0)return[o,0];let u=r.HEAPU32[s/4+1],p=[];for(let d=0;d<u;d++){let c=Number(r.getValue(s+8+d*a,"*"));p.push(c!==0?r.UTF8ToString(c):Number(r.getValue(s+8+(d+u)*a,"*")))}return[o,l,p]}finally{r.stackRestore(n),s!==0&&r._OrtFree(s)}},gc=e=>{let t=Fr(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},Lg=async(e,t)=>{let r,n,s=Fr();Array.isArray(e)?[r,n]=e:e.buffer===s.HEAPU8.buffer?[r,n]=[e.byteOffset,e.byteLength]:[r,n]=gc(e);let a=0,i=0,o=0,l=[],u=[],p=[];try{if([i,l]=await Wf(t),t?.externalData&&s.mountExternalData){let _=[];for(let w of t.externalData){let b=typeof w=="string"?w:w.path;_.push(Ip(typeof w=="string"?w:w.data).then(v=>{s.mountExternalData(b,v)}))}await Promise.all(_)}for(let _ of t?.executionProviders??[])if((typeof _=="string"?_:_.name)==="webnn"){if(s.shouldTransferToMLTensor=!1,typeof _!="string"){let w=_,b=w?.context,v=w?.gpuDevice,y=w?.deviceType,$=w?.powerPreference;b?s.currentContext=b:v?s.currentContext=await s.webnnCreateMLContext(v):s.currentContext=await s.webnnCreateMLContext({deviceType:y,powerPreference:$})}else s.currentContext=await s.webnnCreateMLContext();break}a=await s._OrtCreateSession(r,n,i),s.webgpuOnCreateSession?.(a),a===0&&$r("C
2822an't create a session."),s.jsepOnCreateSession?.(),s.currentContext&&(s.webnnRegisterMLContext(a,s.currentContext),s.currentContext=void 0,s.shouldTransferToMLTensor=!0);let[d,c]=sM(a),g=!!t?.enableGraphCapture,A=[],m=[],B=[],f=[],h=[];for(let _=0;_<d;_++){let[w,b,v]=Fg(a,_);w===0&&$r("Can't get an input name."),u.push(w);let y=s.UTF8ToString(w);A.push(y),B.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Da(b),shape:v})}for(let _=0;_<c;_++){let[w,b,v]=Fg(a,_+d);w===0&&$r("Can't get an output name."),p.push(w);let y=s.UTF8ToString(w);m.push(y),f.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Da(b),shape:v});{if(g&&t?.preferredOutputLocation===void 0){h.push("gpu-buffer");continue}let $=typeof t?.preferredOutputLocation=="string"?t.preferredOutputLocation:t?.preferredOutputLocation?.[y]??"cpu";if($!=="cpu"&&$!=="cpu-pinned"&&$!=="gpu-buffer"&&$!=="ml-tensor")throw new Error(`Not supported preferred output location: ${$}.`);if(g&&$!=="gpu-buffer")throw new Error(`Not supported preferred output location: ${$}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);h.push($)}}let P=null;return h.some(_=>_==="gpu-buffer"||_==="ml-tensor")&&(o=s._OrtCreateBinding(a),o===0&&$r("Can't create IO binding."),P={handle:o,outputPreferredLocations:h,outputPreferredLocationsEncoded:h.map(_=>Dp(_))}),Qa.set(a,[a,u,p,P,g,!1]),[a,A,m,B,f]}catch(d){throw u.forEach(c=>s._OrtFree(c)),p.forEach(c=>s._OrtFree(c)),o!==0&&s._OrtReleaseBinding(o)!==0&&$r("Can't release IO binding."),a!==0&&s._OrtReleaseSession(a)!==0&&$r("Can't release session."),d}finally{s._free(r),i!==0&&s._OrtReleaseSessionOptions(i)!==0&&$r("Can't release session options."),l.forEach(d=>s._free(d)),s.unmountExternalData?.()}},Rg=e=>{let t=Fr(),r=Qa.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[n,s,a,i,o]=r;i&&(o&&t._OrtClearBoundOutputs(i.handle)!==0&&$r("Can't clear bound outputs."),t._OrtReleaseBinding(i.handle)!==0&&$r("Can't release IO binding.")),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),s.forEach(l=>t._OrtFree(l)),a.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(n)!==0&&$r("Can't release session."),Qa.delete(e)},Yg=async(e,t,r,n,s,a,i=!1)=>{if(!e){t.push(0);return}let o=Fr(),l=o.PTR_SIZE,u=e[0],p=e[1],d=e[3],c=d,g,A;if(u==="string"&&(d==="gpu-buffer"||d==="ml-tensor"))throw new Error("String tensor is not supported on GPU.");if(i&&d!=="gpu-buffer")throw new Error(`External buffer must be provided for input/output index ${a} when enableGraphCapture is true.`);if(d==="gpu-buffer"){let f=e[2].gpuBuffer;A=$i(Bo(u),p);{let h=o.jsepRegisterBuffer;if(!h)throw new Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');g=h(n,a,f,A)}}else if(d==="ml-tensor"){let f=e[2].mlTensor;A=$i(Bo(u),p);let h=o.webnnRegisterMLTensor;if(!h)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');g=h(n,f,Bo(u),p)}else{let f=e[2];if(Array.isArray(f)){A=l*f.length,g=o._malloc(A),r.push(g);for(let h=0;h<f.length;h++){if(typeof f[h]!="string")throw new TypeError(`tensor data at index ${h} is not a string`);o.setValue(g+h*l,zs(f[h],r),"*")}}else{let h=o.webnnIsGraphInput;if(u!=="string"&&h){let P=o.UTF8ToString(s);if(h(n,P)){let _=Bo(u);A=$i(_,p),c="ml-tensor";let w=o.webnnCreateTemporaryTensor,b=o.webnnUploadTensor;if(!w||!b)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');let v=await w(n,_,p);b(v,new Uint8Array(f.buffer,f.byteOffset,f.byteLength)),g=v}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}}let m=o.stackSave(),B=o.stackAlloc(4*p.length);try{p.forEach((h,P)=>o.setValue(B+P*l,h,l===4?"i32":"i64"));let f=o._OrtCreateTensor(Bo(u),g,A,B,p.length,Dp(c));f===0&&$r(`Can't create tensor for input/output. session=${n}, index=${a}.`),t.push(f)}finally{o.stackRestore(m)}},Ng=async(e,t,r,n,s,a)=>{let i=Fr(),o=i.PTR_SIZE,l=Qa.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let u=l[0],p=l[1],d=l[2],c=l[3],g=l[4],A=l[5],m=t.length,B=n.length,f=0,h=[],P=[],_=[],w=[],b=i.stackSave(),v=i.stackAlloc(m*o),y=i.stackAlloc(m*o),$=i.stackAlloc(B*o),k=i.stackAlloc(B*o);try{[f,h]=Rf(a);for(let F=0;F<m;F++)await Yg(r[F],P,w,e,p[t[F]],t[F],g);for(let F=0;F<B;F++)await Yg(s[F],_,w,e,d[n[F]],m+n[F],g);for(let F=0;F<m;F++)i.setValue(v+F*o,P[F],"*"),i.setValue(y+F*o,p[t[F]],"*");for(let F=0;F<B;F++)i.setValue($+F*o,_[F],"*"),i.setValue(k+F*o,d[n[F]],"*");if(c&&!A){let{handle:F,outputPreferredLocations:R,outputPreferredLocationsEncoded:L}=c;if(p.length!==m)throw new Error(`input count from feeds (${m}
2822) is expected to be always equal to model's input count (${p.length}).`);for(let Q=0;Q<m;Q++){let ne=t[Q];await i._OrtBindInput(F,p[ne],P[Q])!==0&&$r(`Can't bind input[${Q}] for session=${e}.`)}for(let Q=0;Q<B;Q++){let ne=n[Q];s[Q]?.[3]?i._OrtBindOutput(F,d[ne],_[Q],0)!==0&&$r(`Can't bind pre-allocated output[${Q}] for session=${e}.`):i._OrtBindOutput(F,d[ne],0,L[ne])!==0&&$r(`Can't bind output[${Q}] to ${R[Q]} for session=${e}.`)}Qa.set(e,[u,p,d,c,g,!0])}i.jsepOnRunStart?.(u),i.webnnOnRunStart?.(u);let W;c?W=await i._OrtRunWithBinding(u,c.handle,B,$,f):W=await i._OrtRun(u,y,v,m,k,B,$,f),W!==0&&$r("failed to call OrtRun().");let j=[];for(let F=0;F<B;F++){let R=Number(i.getValue($+F*o,"*"));if(R===_[F]){j.push(s[F]);continue}let L=i.stackSave(),Q=i.stackAlloc(4*o),ne=!1,re,ce=0;try{i._OrtGetTensorData(R,Q,Q+o,Q+2*o,Q+3*o)!==0&&$r(`Can't access output tensor data on index ${F}.`);let ge=o===4?"i32":"i64",q=Number(i.getValue(Q,ge));ce=i.getValue(Q+o,"*");let V=i.getValue(Q+o*2,"*"),U=Number(i.getValue(Q+o*3,ge)),N=[];for(let De=0;De<U;De++)N.push(Number(i.getValue(V+De*o,ge)));i._OrtFree(V)!==0&&$r("Can't free memory for tensor dims.");let oe=N.reduce((De,Ie)=>De*Ie,1);re=Da(q);let fe=c?.outputPreferredLocations[n[F]];if(re==="string"){if(fe==="gpu-buffer"||fe==="ml-tensor")throw new Error("String tensor is not supported on GPU.");let De=[];for(let Ie=0;Ie<oe;Ie++){let je=i.getValue(ce+Ie*o,"*"),Me=i.getValue(ce+(Ie+1)*o,"*"),se=Ie===oe-1?void 0:Me-je;De.push(i.UTF8ToString(je,se))}j.push([re,N,De,"cpu"])}else if(fe==="gpu-buffer"&&oe>0){let De=i.jsepGetBuffer;if(!De)throw new Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let Ie=De(ce),je=$i(q,oe);if(je===void 0||!xp(re))throw new Error(`Unsupported data type: ${re}`);ne=!0,j.push([re,N,{gpuBuffer:Ie,download:i.jsepCreateDownloader(Ie,je,re),dispose:()=>{i._OrtReleaseTensor(R)!==0&&$r("Can't release tensor.")}},"gpu-buffer"])}else if(fe==="ml-tensor"&&oe>0){let De=i.webnnEnsureTensor,Ie=i.webnnIsInt64Supported;if(!De||!Ie)throw new Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if($i(q,oe)===void 0||!Ep(re))throw new Error(`Unsupported data type: ${re}`);if(re==="int64"&&!Ie(e))throw new Error('preferredLocation "ml-tensor" for int64 output is not supported by current WebNN Context.');let je=await De(e,ce,q,N,!1);ne=!0,j.push([re,N,{mlTensor:je,download:i.webnnCreateMLTensorDownloader(ce,re),dispose:()=>{i.webnnReleaseTensorId(ce),i._OrtReleaseTensor(R)}},"ml-tensor"])}else{let De=Bp(re),Ie=new De(oe);new Uint8Array(Ie.buffer,Ie.byteOffset,Ie.byteLength).set(i.HEAPU8.subarray(ce,ce+Ie.byteLength)),j.push([re,N,Ie,"cpu"])}}finally{i.stackRestore(L),re==="string"&&ce&&i._free(ce),ne||i._OrtReleaseTensor(R),i.webnnOnRunEnd?.(u)}}return c&&!g&&(i._OrtClearBoundOutputs(c.handle)!==0&&$r("Can't clear bound outputs."),Qa.set(e,[u,p,d,c,g,!1])),j}finally{i.stackRestore(b),P.forEach(W=>i._OrtReleaseTensor(W)),_.forEach(W=>i._OrtReleaseTensor(W)),w.forEach(W=>i._free(W)),f!==0&&i._OrtReleaseRunOptions(f),h.forEach(W=>i._free(W))}},jg=e=>{let t=Fr(),r=Qa.get(e);if(!r)throw new Error("invalid session id");let n=r[0],s=t._OrtEndProfiling(n);s===0&&$r("Can't get an profile file name."),t._OrtFree(s)},Ug=e=>{let t=[];for(let r of e){let n=r[2];!Array.isArray(n)&&"buffer"in n&&t.push(n.buffer)}return t}}),Ha,ws,Io,Sl,kl,Ac,Wg,hc,Li,Ri,iM,oM,lM,uM,cM,dM,pM,gM,AM=Je(()=>{Gs(),aM(),Ci(),yp(),Ha=()=>!!jr.wasm.proxy&&typeof document<"u",Io=!1,Sl=!1,kl=!1,hc=new Map,Li=(e,t)=>{let r=hc.get(e);r?r.push(t):hc.set(e,[t])},Ri=()=>{if(Io||!Sl||kl||!ws)throw new Error("worker not ready")},iM=e=>{switch(e.data.type){case"init-wasm":Io=!1,e.data.err?(kl=!0,Wg[1](e.data.err)):(Sl=!0,Wg[0]()),Ac&&(URL.revokeObjectURL(Ac),Ac=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let t=hc.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}}},oM=async()=>{if(!Sl){if(Io)throw new Error("multiple calls to 'initWasm()' detected.");if(kl)throw new Error("previous call to 'initWasm()' failed.");
vendor: 3,402 bytes, line 2822
2822if(Io=!0,Ha())return new Promise((e,t)=>{ws?.terminate(),Of().then(([r,n])=>{try{ws=n,ws.onerror=a=>t(a),ws.onmessage=iM,Wg=[e,t];let s={type:"init-wasm",in:jr};!s.in.wasm.wasmPaths&&(r||mp)&&(s.in.wasm.wasmPaths={wasm:new URL("/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm",self.location.href).href}),ws.postMessage(s),Ac=r}catch(s){t(s)}},t)});try{await Mp(jr.wasm),await Gg(jr),Sl=!0}catch(e){throw kl=!0,e}finally{Io=!1}}},lM=async e=>{if(Ha())return Ri(),new Promise((t,r)=>{Li("init-ep",[t,r]);let n={type:"init-ep",in:{epName:e,env:jr}};ws.postMessage(n)});await zg(jr,e)},uM=async e=>Ha()?(Ri(),new Promise((t,r)=>{Li("copy-from",[t,r]);let n={type:"copy-from",in:{buffer:e}};ws.postMessage(n,[e.buffer])})):gc(e),cM=async(e,t)=>{if(Ha()){if(t?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return Ri(),new Promise((r,n)=>{Li("create",[r,n]);let s={type:"create",in:{model:e,options:{...t}}},a=[];e instanceof Uint8Array&&a.push(e.buffer),ws.postMessage(s,a)})}else return Lg(e,t)},dM=async e=>{if(Ha())return Ri(),new Promise((t,r)=>{Li("release",[t,r]);let n={type:"release",in:e};ws.postMessage(n)});Rg(e)},pM=async(e,t,r,n,s,a)=>{if(Ha()){if(r.some(i=>i[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(s.some(i=>i))throw new Error("pre-allocated output tensor is not supported for proxy.");return Ri(),new Promise((i,o)=>{Li("run",[i,o]);let l=r,u={type:"run",in:{sessionId:e,inputIndices:t,inputs:l,outputIndices:n,options:a}};ws.postMessage(u,Ug(l))})}else return Ng(e,t,r,n,s,a)},gM=async e=>{if(Ha())return Ri(),new Promise((t,r)=>{Li("end-profiling",[t,r]);let n={type:"end-profiling",in:e};ws.postMessage(n)});jg(e)}}),Vg,hM,mM,w4=Je(()=>{Gs(),AM(),zt(),cp(),Vf(),Vg=(e,t)=>{switch(e.location){case"cpu":return[e.type,e.dims,e.data,"cpu"];case"gpu-buffer":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[e.type,e.dims,{mlTensor:e.mlTensor},"ml-tensor"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},hM=e=>{switch(e[3]){case"cpu":return new ks(e[0],e[2],e[1]);case"gpu-buffer":{let t=e[0];if(!xp(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:n,dispose:s}=e[2];return ks.fromGpuBuffer(r,{dataType:t,dims:e[1],download:n,dispose:s})}case"ml-tensor":{let t=e[0];if(!Ep(t))throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:r,download:n,dispose:s}=e[2];return ks.fromMLTensor(r,{dataType:t,dims:e[1],download:n,dispose:s})}default:throw new Error(`invalid data location: ${e[3]}`)}},mM=class{async fetchModelAndCopyToWasmMemory(e){return uM(await Ip(e))}async loadModel(e,t){Os();let r;typeof e=="string"?r=await this.fetchModelAndCopyToWasmMemory(e):r=e,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await cM(r,t),_s()}async dispose(){return dM(this.sessionId)}async run(e,t,r){Os();let n=[],s=[];Object.entries(e).forEach(d=>{let c=d[0],g=d[1],A=this.inputNames.indexOf(c);if(A===-1)throw new Error(`invalid input '${c}'`);n.push(g),s.push(A)});let a=[],i=[];Object.entries(t).forEach(d=>{let c=d[0],g=d[1],A=this.outputNames.indexOf(c);if(A===-1)throw new Error(`invalid output '${c}'`);a.push(g),i.push(A)});let o=n.map((d,c)=>Vg(d,()=>`input "${this.inputNames[s[c]]}
2822"`)),l=a.map((d,c)=>d?Vg(d,()=>`output "${this.outputNames[i[c]]}"`):null),u=await pM(this.sessionId,s,o,i,l,r),p={};for(let d=0;d<u.length;d++)p[this.outputNames[i[d]]]=a[d]??hM(u[d]);return _s(),p}startProfiling(){}endProfiling(){gM(this.sessionId)}}}),fM={};vo(fM,{OnnxruntimeWebAssemblyBackend:()=>Hg,initializeFlags:()=>Qg,wasmBackend:()=>_M});var Qg,Hg,_M,y4=Je(()=>{Gs(),AM(),w4(),Qg=()=>{(typeof jr.wasm.initTimeout!="number"||jr.wasm.initTimeout<0)&&(jr.wasm.initTimeout=0);let e=jr.wasm.simd;if(typeof e!="boolean"&&e!==void 0&&e!=="fixed"&&e!=="relaxed"&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${e}". Reset it to \`false\` and ignore SIMD feature checking.`),jr.wasm.simd=!1),typeof jr.wasm.proxy!="boolean"&&(jr.wasm.proxy=!1),typeof jr.wasm.trace!="boolean"&&(jr.wasm.trace=!1),typeof jr.wasm.numThreads!="number"||!Number.isInteger(jr.wasm.numThreads)||jr.wasm.numThreads<=0)if(typeof self<"u"&&!self.crossOriginIsolated)jr.wasm.numThreads=1;else{let t=typeof navigator>"u"?ik("node:os").cpus().length:navigator.hardwareConcurrency;jr.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},Hg=class{async init(e){Qg(),await oM(),await lM(e)}async createInferenceSessionHandler(e,t){let r=new mM;return await r.loadModel(e,t),r}},_M=new Hg});Gs(),Gs(),Gs();var b4="1.22.0-dev.20250409-89f8206ba4",P4=vf;{let e=(y4(),_l(fM)).wasmBackend;Ii("webgpu",e,5),Ii("webnn",e,5),Ii("cpu",e,10),Ii("wasm",e,10)}Object.defineProperty(jr.versions,"web",{value:b4,enumerable:!0});var M4=Object.freeze({__proto__:null,get InferenceSession(){return up},get TRACE(){return bl},get TRACE_FUNC_BEGIN(){return Os},get TRACE_FUNC_END(){return _s},get Tensor(){return ks},default:P4,get env(){return jr},get registerBackend(){return Ii}}),Kg={},v4={"onnxruntime-common":(e=>{e.exports=rk}),"onnxruntime-web":(e=>{e.exports=M4}),"?2ce3":(()=>{}),"?7992":(()=>{}),"?5af5":(()=>{}),"?2b25":(()=>{}),"?db59":(()=>{}),"?383f":(()=>{}),"?fa4b":(()=>{}),
vendor: 47,907 bytes, lines 2822-2830
2822"./node_modules/@huggingface/jinja/dist/index.js":((e,t,r)=>{r.r(t),r.d(t,{Environment:()=>yt,Interpreter:()=>tn,Template:()=>ds,parse:()=>De,tokenize:()=>d});var n=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Comment:"Comment"}),s=class{constructor(S,ie){this.value=S,this.type=ie}};function a(S){return/\w/.test(S)}function i(S){return/[0-9]/.test(S)}function o(S){return/\s/.test(S)}var l=[["{%",n.OpenStatement],["%}",n.CloseStatement],["{{",n.OpenExpression],["}}",n.CloseExpression],["(",n.OpenParen],[")",n.CloseParen],["{",n.OpenCurlyBracket],["}",n.CloseCurlyBracket],["[",n.OpenSquareBracket],["]",n.CloseSquareBracket],[",",n.Comma],[".",n.Dot],[":",n.Colon],["|",n.Pipe],["<=",n.ComparisonBinaryOperator],[">=",n.ComparisonBinaryOperator],["==",n.ComparisonBinaryOperator],["!=",n.ComparisonBinaryOperator],["<",n.ComparisonBinaryOperator],[">",n.ComparisonBinaryOperator],["+",n.AdditiveBinaryOperator],["-",n.AdditiveBinaryOperator],["~",n.AdditiveBinaryOperator],["*",n.MultiplicativeBinaryOperator],["/",n.MultiplicativeBinaryOperator],["%",n.MultiplicativeBinaryOperator],["=",n.Equals]],u=new Map([["n",`
2823`],["t","	"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function p(S,ie={}){return S.endsWith(`
2824`)&&(S=S.slice(0,-1)),ie.lstrip_blocks&&(S=S.replace(/^[ \t]*({[#%-])/gm,"$1")),ie.trim_blocks&&(S=S.replace(/([#%-]})\n/g,"$1")),S.replace(/{%\s*(end)?generation\s*%}/gs,"")}function d(S,ie={}){const X=[],ae=p(S,ie);let le=0,_e=0;const Oe=at=>{let Ot="";for(;at(ae[le]);){if(ae[le]==="\\"){if(++le,le>=ae.length)throw new SyntaxError("Unexpected end of input");const lt=ae[le++],St=u.get(lt);if(St===void 0)throw new SyntaxError(`Unexpected escaped character: ${lt}`);Ot+=St;continue}if(Ot+=ae[le++],le>=ae.length)throw new SyntaxError("Unexpected end of input")}return Ot},gt=()=>{const at=X.at(-1);at&&at.type===n.Text&&(at.value=at.value.trimEnd(),at.value===""&&X.pop())},Et=()=>{for(;le<ae.length&&o(ae[le]);)++le};e:for(;le<ae.length;){const at=X.at(-1)?.type;if(at===void 0||at===n.CloseStatement||at===n.CloseExpression||at===n.Comment){let lt="";for(;le<ae.length&&!(ae[le]==="{"&&(ae[le+1]==="%"||ae[le+1]==="{"||ae[le+1]==="#"));)lt+=ae[le++];if(lt.length>0){X.push(new s(lt,n.Text));continue}}if(ae[le]==="{"&&ae[le+1]==="#"){le+=2;const lt=ae[le]==="-";lt&&++le;let St="";for(;ae[le]!=="#"||ae[le+1]!=="}";){if(le+2>=ae.length)throw new SyntaxError("Missing end of comment tag");St+=ae[le++]}const rr=St.endsWith("-");rr&&(St=St.slice(0,-1)),lt&&gt(),X.push(new s(St,n.Comment)),le+=2,rr&&Et();continue}if(ae.slice(le,le+3)==="{%-"){gt(),X.push(new s("{%",n.OpenStatement)),le+=3;continue}if(ae.slice(le,le+3)==="{{-"){gt(),X.push(new s("{{",n.OpenExpression)),_e=0,le+=3;continue}if(Oe(o),ae.slice(le,le+3)==="-%}"){X.push(new s("%}",n.CloseStatement)),le+=3,Et();continue}if(ae.slice(le,le+3)==="-}}"){X.push(new s("}}",n.CloseExpression)),le+=3,Et();continue}const Ot=ae[le];if(Ot==="-"||Ot==="+"){const lt=X.at(-1)?.type;if(lt===n.Text||lt===void 0)throw new SyntaxError(`Unexpected character: ${Ot}`);switch(lt){case n.Identifier:case n.NumericLiteral:case n.StringLiteral:case n.CloseParen:case n.CloseSquareBracket:break;default:{++le;const St=Oe(i);X.push(new s(`${Ot}${St}`,St.length>0?n.NumericLiteral:n.UnaryOperator));continue}}}for(const[lt,St]of l){if(lt==="}}"&&_e>0)continue;if(ae.slice(le,le+lt.length)===lt){X.push(new s(lt,St)),St===n.OpenExpression?_e=0:St===n.OpenCurlyBracket?++_e:St===n.CloseCurlyBracket&&--_e,le+=lt.length;continue e}}if(Ot==="'"||Ot==='"'){++le;const lt=Oe(St=>St!==Ot);X.push(new s(lt,n.StringLiteral)),++le;continue}if(i(Ot)){let lt=Oe(i);if(ae[le]==="."&&i(ae[le+1])){++le;const St=Oe(i);lt=`${lt}.${St}`}X.push(new s(lt,n.NumericLiteral));continue}if(a(Ot)){const lt=Oe(a);X.push(new s(lt,n.Identifier));continue}throw new SyntaxError(`Unexpected character: ${Ot}`)}return X}var c=class{type="Statement"},g=class extends c{constructor(S){super(),this.body=S}type="Program"},A=class extends c{constructor(S,ie,X){super(),this.test=S,this.body=ie,this.alternate=X}type="If"},m=class extends c{constructor(S,ie,X,ae){super(),this.loopvar=S,this.iterable=ie,this.body=X,this.defaultBlock=ae}type="For"},B=class extends c{type="Break"},f=class extends c{type="Continue"},h=class extends c{constructor(S,ie,X){super(),this.assignee=S,this.value=ie,this.body=X}type="Set"},P=class extends c{constructor(S,ie,X){super(),this.name=S,this.args=ie,this.body=X}type="Macro"},_=class extends c{constructor(S){super(),this.value=S}type="Comment"},w=class extends c{type="Expression"},b=class extends w{constructor(S,ie,X){super(),this.object=S,this.property=ie,this.computed=X}type="MemberExpression"},v=class extends w{constructor(S,ie){super(),this.callee=S,this.args=ie}type="CallExpression"},y=class extends w{constructor(S){super(),this.value=S}type="Identifier"},$=class extends w{constructor(S){super(),this.value=S}type="Literal"},k=class extends ${type="IntegerLiteral"},W=class extends ${type="FloatLiteral"},j=class extends ${type="StringLiteral"},F=class extends ${type="ArrayLiteral"},R=class extends ${type="TupleLiteral"},L=class extends ${type="ObjectLiteral"},Q=class extends w{constructor(S,ie,X){super(),this.operator=S,this.left=ie,this.right=X}type="BinaryExpression"},ne=class extends w{constructor(S,ie){super(),this.operand=S,this.filter=ie}type="FilterExpression"},re=class extends c{constructor(S,ie){super(),this.filter=S,this.body=ie}type="FilterStatement"},ce=class extends w{constructor(S,ie){super(),this.lhs=S,this.test=ie}type="SelectExpression"},ge=class extends w{constructor(S,ie,X){super(),this.operand=S,this.negate=ie,this.test=X}type="TestExpression"},q=class extends w{constructor(S,ie){super(),this.operator=S,this.argument=ie}type="UnaryExpression"},V=class extends w{constructor(S=void 0,ie=void 0,X=void 0){super(),this.start=S,this.stop=ie,this.step=X}type="SliceExpression"},U=class extends w{constructor(S,ie){super(),this.key=S,this.value=ie}type="KeywordArgumentExpression"},N=class extends w{constructor(S){super(),this.argument=S}type="SpreadExpression"},oe=class extends c{constructor(S,ie,X){super(),this.call=S,this.callerArgs=ie,this.body=X}type="CallStatement"},fe=class extends w{constructor(S,ie,X){super(),this.condition=S,this.trueExpr=ie,this.falseExpr=X}type="Ternary"};function De(S){const ie=new g([]);let X=0;function ae(Ke,Ze){const ft=S[X++];if(!ft||ft.type!==Ke)throw new Error(`Parser Error: ${Ze}. ${ft.type} !== ${Ke}.`);return ft}function le(Ke){if(!Et(Ke))throw new SyntaxError(`Expected ${Ke}`);++X}function _e(){switch(S[X].type){case n.Comment:return new _(S[X++].value);case n.Text:return at();case n.OpenStatement:return Ot();case n.OpenExpression:return lt();default:throw new SyntaxError(`Unexpected token type: ${S[X].type}`)}}function Oe(...Ke){return X+Ke.length<=S.length&&Ke.every((Ze,ft)=>Ze===S[X+ft].type)}function gt(...Ke){return S[X]?.type===n.OpenStatement&&S[X+1]?.type===n.Identifier&&Ke.includes(S[X+1]?.value)}function Et(...Ke){return X+Ke.length<=S.length&&Ke.every((Ze,ft)=>S[X+ft].type==="Identifier"&&Ze===S[X+ft].value)}function at(){return new j(ae(n.Text,"Expected text token").value)}function Ot(){if(ae(n.OpenStatement,"Expected opening statement token"),S[X].type!==n.Identifier)throw new SyntaxError(`Unknown statement, got ${S[X].type}`);const Ke=S[X].value;let Ze;switch(Ke){case"set":++X,Ze=St();break;case"if":++X,Ze=rr(),ae(n.OpenStatement,"Expected {% token"),le("endif"),ae(n.CloseStatement,"Expected %} token");break;case"macro":++X,Ze=Hr(),ae(n.OpenStatement,"Expected {% token"),le("endmacro"),ae(n.CloseStatement,"Expected %} token");break;case"for":++X,Ze=yr(),ae(n.OpenStatement,"Expected {% token"),le("endfor"),ae(n.CloseStatement,"Expected %} token");break;case"call":{++X;let ft=null;Oe(n.OpenParen)&&(ft=jn());const Dr=wn();if(Dr.type!=="Identifier")throw new SyntaxError("Expected identifier following call statement");const ta=jn();ae(n.CloseStatement,"Expected closing statement token");const Ds=[];for(;!gt("endcall");)Ds.push(_e());ae(n.OpenStatement,"Expected '{%'"),le("endcall"),ae(n.CloseStatement,"Expected closing statement token");const ra=new v(Dr,ta);Ze=new oe(ra,ft,Ds);break}case"break":++X,ae(n.CloseStatement,"Expected closing statement token"),Ze=new B;break;case"continue":++X,ae(n.CloseStatement,"Expected closing statement token"),Ze=new f;break;case"filter":{++X;let ft=wn();ft instanceof y&&Oe(n.OpenParen)&&(ft=Rr(ft)),ae(n.CloseStatement,"Expected closing statement token");const Dr=[];for(;!gt("endfilter");)Dr.push(_e());ae(n.OpenStatement,"Expected '{%'"),le("endfilter"),ae(n.CloseStatement,"Expected '%}'"),Ze=new re(ft,Dr);break}default:throw new SyntaxError(`Unknown statement type: ${Ke}`)}return Ze}function lt(){ae(n.OpenExpression,"Expected opening expression token");const Ke=ln();return ae(n.CloseExpression,"Expected closing expression token"),Ke}function St(){const Ke=kr();let Ze=null;const ft=[];if(Oe(n.Equals))++X,Ze=kr();else{for(ae(n.CloseStatement,"Expected %} token");!gt("endset");)ft.push(_e());ae(n.OpenStatement,"Expected {% token"),le("endset")}return ae(n.CloseStatement,"Expected closing statement token"),new h(Ke,Ze,ft)}function rr(){const Ke=ln();ae(n.CloseStatement,"Expected closing statement token");const Ze=[],ft=[];for(;!gt("elif","else","endif");)Ze.push(_e());if(gt("elif")){++X,++X;const Dr=rr();ft.push(Dr)}else if(gt("else"))for(++X,++X,ae(n.CloseStatement,"Expected closing statement token");!gt("endif");)ft.push(_e());return new A(Ke,Ze,ft)}function Hr(){const Ke=wn();if(Ke.type!=="Identifier")throw new SyntaxError("Expected identifier following macro statement");const Ze=jn();ae(n.CloseStatement,"Expected closing statement token");const ft=[];for(;!gt("endmacro");)ft.push(_e());return new P(Ke,Ze,ft)}function kr(Ke=!1){const Ze=Ke?wn:ln,ft=[Ze()],Dr=Oe(n.Comma);for(;Dr&&(++X,ft.push(Ze()),!!Oe(n.Comma)););return Dr?new R(ft):ft[0]}function yr(){const Ke=kr(!0);if(!(Ke instanceof y||Ke instanceof R))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${Ke.type} instead`);if(!Et("in"))throw new SyntaxError("Expected `in` keyword following loop variable");++X;const Ze=ln();ae(n.CloseStatement,"Expected closing statement token");const ft=[];for(;!gt("endfor","else");)ft.push(_e());const Dr=[];if(gt("else"))for(++X,++X,ae(n.CloseStatement,"Expected closing statement token");!gt("endfor");)Dr.push(_e());return new m(Ke,Ze,ft,Dr)}function ln(){return vs()}function vs(){const Ke=En();if(Et("if")){++X;const Ze=En();if(Et("else")){++X;const ft=vs();return new fe(Ze,Ke,ft)}else return new ce(Ke,Ze)}return Ke}function En(){let Ke=ps();for(;Et("or");){const Ze=S[X];++X;const ft=ps();Ke=new Q(Ze,Ke,ft)}return Ke}function ps(){let Ke=Kr();for(;Et("and");){const Ze=S[X];++X;const ft=Kr();Ke=new Q(Ze,Ke,ft)}return Ke}function Kr(){let Ke;for(;Et("not");){const Ze=S[X];++X;const ft=Kr();Ke=new q(Ze,ft)}return Ke??fn()}function fn(){let Ke=qr();for(;;){let Ze;if(Et("not","in"))Ze=new s("not in",n.Identifier),X+=2;else if(Et("in"))Ze=S[X++];else if(Oe(n.ComparisonBinaryOperator))Ze=S[X++];else break;const ft=qr();Ke=new Q(Ze,Ke,ft)}return Ke}function qr(){let Ke=xs();for(;Oe(n.AdditiveBinaryOperator);){const Ze=S[X];++X;const ft=xs();Ke=new Q(Ze,Ke,ft)}return Ke}function vr(){const Ke=Bs(wn());return Oe(n.OpenParen)?Rr(Ke):Ke}function Rr(Ke){let Ze=new v(Ke,jn());return Ze=Bs(Ze),Oe(n.OpenParen)&&(Ze=Rr(Ze)),Ze}function jn(){ae(n.OpenParen,"Expected opening parenthesis for arguments list");const Ke=Zn();return ae(n.CloseParen,"Expected closing parenthesis for arguments list"),Ke}function Zn(){const Ke=[];for(;!Oe(n.CloseParen);){let Ze;if(S[X].type===n.MultiplicativeBinaryOperator&&S[X].value==="*"){++X;const ft=ln();Ze=new N(ft)}else if(Ze=ln(),Oe(n.Equals)){if(++X,!(Ze instanceof y))throw new SyntaxError("Expected identifier for keyword argument");const ft=ln();Ze=new U(Ze,ft)}Ke.push(Ze),Oe(n.Comma)&&++X}return Ke}function ea(){const Ke=[];let Ze=!1;for(;!Oe(n.CloseSquareBracket);)Oe(n.Colon)?(Ke.push(void 0),++X,Ze=!0):(Ke.push(ln()),Oe(n.Colon)&&(++X,Ze=!0));if(Ke.length===0)throw new SyntaxError("Expected at least one argument for member/slice expression");if(Ze){if(Ke.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new V(...Ke)}return Ke[0]}function Bs(Ke){for(;Oe(n.Dot)||Oe(n.OpenSquareBracket);){const Ze=S[X];++X;let ft;const Dr=Ze.type===n.OpenSquareBracket;if(Dr)ft=ea(),ae(n.CloseSquareBracket,"Expected closing square bracket");else if(ft=wn(),ft.type!=="Identifier")throw new SyntaxError("Expected identifier following dot operator");Ke=new b(Ke,ft,Dr)}return Ke}function xs(){let Ke=Es();for(;Oe(n.MultiplicativeBinaryOperator);){const Ze=S[X++],ft=Es();Ke=new Q(Ze,Ke,ft)}return Ke}function Es(){let Ke=_n();for(;Et("is");){++X;const Ze=Et("not");Ze&&++X;const ft=wn();if(!(ft instanceof y))throw new SyntaxError("Expected identifier for the test");Ke=new ge(Ke,Ze,ft)}return Ke}function _n(){let Ke=vr();for(;Oe(n.Pipe);){++X;let Ze=wn();if(!(Ze instanceof y))throw new SyntaxError("Expected identifier for the filter");Oe(n.OpenParen)&&(Ze=Rr(Ze)),Ke=new ne(Ke,Ze)}return Ke}function wn(){const Ke=S[X++];switch(Ke.type){case n.NumericLiteral:{const Ze=Ke.value;return Ze.includes(".")?new W(Number(Ze)):new k(Number(Ze))}case n.StringLiteral:{let Ze=Ke.value;for(;Oe(n.StringLiteral);)Ze+=S[X++].value;return new j(Ze)}case n.Identifier:return new y(Ke.value);case n.OpenParen:{const Ze=kr();return ae(n.CloseParen,"Expected closing parenthesis, got ${tokens[current].type} instead."),Ze}case n.OpenSquareBracket:{const Ze=[];for(;!Oe(n.CloseSquareBracket);)Ze.push(ln()),Oe(n.Comma)&&++X;return++X,new F(Ze)}case n.OpenCurlyBracket:{const Ze=new Map;for(;!Oe(n.CloseCurlyBracket);){const ft=ln();ae(n.Colon,"Expected colon between key and value in object literal");const Dr=ln();Ze.set(ft,Dr),Oe(n.Comma)&&++X}return++X,new L(Ze)}default:throw new SyntaxError(`Unexpected token: ${Ke.type}`)}}for(;X<S.length;)ie.body.push(_e());return ie}function Ie(S,ie,X=1){ie===void 0&&(ie=S,S=0);const ae=[];for(let le=S;le<ie;le+=X)ae.push(le);return ae}function je(S,ie,X,ae=1){const le=Math.sign(ae);le>=0?(ie=(ie??=0)<0?Math.max(S.length+ie,0):Math.min(ie,S.length),X=(X??=S.length)<0?Math.max(S.length+X,0):Math.min(X,S.length)):(ie=(ie??=S.length-1)<0?Math.max(S.length+ie,-1):Math.min(ie,S.length-1),X=(X??=-1)<-1?Math.max(S.length+X,-1):Math.min(X,S.length-1));const _e=[];for(let Oe=ie;le*Oe<le*X;Oe+=ae)_e.push(S[Oe]);return _e}function Me(S){return S.replace(/\b\w/g,ie=>ie.toUpperCase())}function se(S){return H(new Date,S)}function H(S,ie){const X=new Intl.DateTimeFormat(void 0,{month:"long"}),ae=new Intl.DateTimeFormat(void 0,{month:"short"}),le=_e=>_e<10?"0"+_e:_e.toString();return ie.replace(/%[YmdbBHM%]/g,_e=>{switch(_e){case"%Y":return S.getFullYear().toString();case"%m":return le(S.getMonth()+1);case"%d":return le(S.getDate());case"%b":return ae.format(S);case"%B":return X.format(S);case"%H":return le(S.getHours());case"%M":return le(S.getMinutes());case"%%":return"%";default:return _e}})}function we(S){return S.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function be(S,ie,X,ae){if(ae===0)return S;let le=ae==null||ae<0?1/0:ae;const _e=ie.length===0?new RegExp("(?=)","gu"):new RegExp(we(ie),"gu");return S.replaceAll(_e,Oe=>le>0?(--le,X):Oe)}var Ce=class extends Error{},Se=class extends Error{},ze=class{type="RuntimeValue";value;builtins=new Map;constructor(S=void 0){this.value=S}__bool__(){return new ke(!!this.value)}toString(){return String(this.value)}},ve=class extends ze{type="IntegerValue"},Ve=class extends ze{type="FloatValue";toString(){return this.value%1===0?this.value.toFixed(1):this.value.toString()}},Be=class extends ze{type="StringValue";builtins=new Map([["upper",new At(()=>new Be(this.value.toUpperCase()))],["lower",new At(()=>new Be(this.value.toLowerCase()))],["strip",new At(()=>new Be(this.value.trim()))],["title",new At(()=>new Be(Me(this.value)))],["capitalize",new At(()=>new Be(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],["length",new ve(this.value.length)],["rstrip",new At(()=>new Be(this.value.trimEnd()))],["lstrip",new At(()=>new Be(this.value.trimStart()))],["startswith",new At(S=>{if(S.length===0)throw new Error("startswith() requires at least one argument");const ie=S[0];if(ie instanceof Be)return new ke(this.value.startsWith(ie.value));if(ie instanceof He){for(const X of ie.value){if(!(X instanceof Be))throw new Error("startswith() tuple elements must be strings");if(this.value.startsWith(X.value))return new ke(!0)}return new ke(!1)}throw new Error("startswith() argument must be a string or tuple of strings")})],["endswith",new At(S=>{if(S.length===0)throw new Error("endswith() requires at least one argument");const ie=S[0];if(ie instanceof Be)return new ke(this.value.endsWith(ie.value));if(ie instanceof He){for(const X of ie.value){if(!(X instanceof Be))throw new Error("endswith() tuple elements must be strings");if(this.value.endsWith(X.value))return new ke(!0)}return new ke(!1)}throw new Error("endswith() argument must be a string or tuple of strings")})],["split",new At(S=>{const ie=S[0]??new Xe;if(!(ie instanceof Be||ie instanceof Xe))throw new Error("sep argument must be a string or null");const X=S[1]??new ve(-1);if(!(X instanceof ve))throw new Error("maxsplit argument must be a number");let ae=[];if(ie instanceof Xe){const le=this.value.trimStart();for(const{0:_e,index:Oe}of le.matchAll(/\S+/g)){if(X.value!==-1&&ae.length>=X.value&&Oe!==void 0){ae.push(_e+le.slice(Oe+_e.length));break}ae.push(_e)}}else{if(ie.value==="")throw new Error("empty separator");ae=this.value.split(ie.value),X.value!==-1&&ae.length>X.value&&ae.push(ae.splice(X.value).join(ie.value))}return new He(ae.map(le=>new Be(le)))})],["replace",new At(S=>{if(S.length<2)throw new Error("replace() requires at least two arguments");const ie=S[0],X=S[1];if(!(ie instanceof Be&&X instanceof Be))throw new Error("replace() arguments must be strings");let ae;if(S.length>2?S[2].type==="KeywordArgumentsValue"?ae=S[2].value.get("count")??new Xe:ae=S[2]:ae=new Xe,!(ae instanceof ve||ae instanceof Xe))throw new Error("replace() count argument must be a number or null");return new Be(be(this.value,ie.value,X.value,ae.value))})]])},ke=class extends ze{type="BooleanValue"};function rt(S,ie,X,ae=!0){const le=X??0;switch(S.type){case"NullValue":return"null";case"UndefinedValue":return ae?"null":"undefined";case"IntegerValue":case"FloatValue":case"StringValue":case"BooleanValue":return JSON.stringify(S.value);case"ArrayValue":case"ObjectValue":{const _e=ie?" ".repeat(ie):"",Oe=`
2825`+_e.repeat(le),gt=Oe+_e;if(S.type==="ArrayValue"){const Et=S.value.map(at=>rt(at,ie,le+1,ae));return ie?`[${gt}${Et.join(`,${gt}`)}${Oe}]`:`[${Et.join(", ")}]`}else{const Et=Array.from(S.value.entries()).map(([at,Ot])=>{const lt=`"${at}": ${rt(Ot,ie,le+1,ae)}`;return ie?`${gt}${lt}`:lt});return ie?`{${Et.join(",")}${Oe}}`:`{${Et.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${S.type}`)}}var Ue=class extends ze{type="ObjectValue";__bool__(){return new ke(this.value.size>0)}builtins=new Map([["get",new At(([S,ie])=>{if(!(S instanceof Be))throw new Error(`Object key must be a string: got ${S.type}`);return this.value.get(S.value)??ie??new Xe})],["items",new At(()=>this.items())],["keys",new At(()=>this.keys())],["values",new At(()=>this.values())],["dictsort",new At(S=>{let ie=new Map;const X=S.filter(gt=>gt instanceof ht?(ie=gt.value,!1):!0),ae=X.at(0)??ie.get("case_sensitive")??new ke(!1);if(!(ae instanceof ke))throw new Error("case_sensitive must be a boolean");const le=X.at(1)??ie.get("by")??new Be("key");if(!(le instanceof Be))throw new Error("by must be a string");if(!["key","value"].includes(le.value))throw new Error("by must be either 'key' or 'value'");const _e=X.at(2)??ie.get("reverse")??new ke(!1);if(!(_e instanceof ke))throw new Error("reverse must be a boolean");const Oe=Array.from(this.value.entries()).map(([gt,Et])=>new He([new Be(gt),Et])).sort((gt,Et)=>{const at=le.value==="key"?0:1,Ot=gt.value[at],lt=Et.value[at],St=Vt(Ot,lt,ae.value);return _e.value?-St:St});return new He(Oe)})]]);items(){return new He(Array.from(this.value.entries()).map(([S,ie])=>new He([new Be(S),ie])))}keys(){return new He(Array.from(this.value.keys()).map(S=>new Be(S)))}values(){return new He(Array.from(this.value.values()))}toString(){return rt(this,null,0,!1)}},ht=class extends Ue{type="KeywordArgumentsValue"},He=class extends ze{type="ArrayValue";builtins=new Map([["length",new ve(this.value.length)]]);__bool__(){return new ke(this.value.length>0)}toString(){return rt(this,null,0,!1)}},dt=class extends He{type="TupleValue"},At=class extends ze{type="FunctionValue"},Xe=class extends ze{type="NullValue"},We=class extends ze{type="UndefinedValue"},yt=class{constructor(S){this.parent=S}variables=new Map([["namespace",new At(S=>{if(S.length===0)return new Ue(new Map);if(S.length!==1||!(S[0]instanceof Ue))throw new Error("`namespace` expects either zero arguments or a single object argument");return S[0]})]]);tests=new Map([["boolean",S=>S.type==="BooleanValue"],["callable",S=>S instanceof At],["odd",S=>{if(!(S instanceof ve))throw new Error(`cannot odd on ${S.type}`);return S.value%2!==0}],["even",S=>{if(!(S instanceof ve))throw new Error(`cannot even on ${S.type}`);return S.value%2===0}],["false",S=>S.type==="BooleanValue"&&!S.value],["true",S=>S.type==="BooleanValue"&&S.value],["none",S=>S.type==="NullValue"],["string",S=>S.type==="StringValue"],["number",S=>S instanceof ve||S instanceof Ve],["integer",S=>S instanceof ve],["iterable",S=>S.type==="ArrayValue"||S.type==="StringValue"],["mapping",S=>S.type==="ObjectValue"],["lower",S=>{const ie=S.value;return S.type==="StringValue"&&ie===ie.toLowerCase()}],["upper",S=>{const ie=S.value;return S.type==="StringValue"&&ie===ie.toUpperCase()}],["none",S=>S.type==="NullValue"],["defined",S=>S.type!=="UndefinedValue"],["undefined",S=>S.type==="UndefinedValue"],["equalto",(S,ie)=>S.value===ie.value],["eq",(S,ie)=>S.value===ie.value]]);set(S,ie){return this.declareVariable(S,hn(ie))}declareVariable(S,ie){if(this.variables.has(S))throw new SyntaxError(`Variable already declared: ${S}`);return this.variables.set(S,ie),ie}setVariable(S,ie){return this.variables.set(S,ie),ie}resolve(S){if(this.variables.has(S))return this;if(this.parent)return this.parent.resolve(S);throw new Error(`Unknown variable: ${S}`)}lookupVariable(S){try{return this.resolve(S).variables.get(S)??new We}catch{return new We}}};function Mt(S){S.set("false",!1),S.set("true",!0),S.set("none",null),S.set("raise_exception",ie=>{throw new Error(ie)}),S.set("range",Ie),S.set("strftime_now",se),S.set("True",!0),S.set("False",!1),S.set("None",null)}function hr(S,ie){const X=ie.split(".");let ae=S;for(const le of X)if(ae instanceof Ue)ae=ae.value.get(le)??new We;else if(ae instanceof He){const _e=parseInt(le,10);if(!isNaN(_e)&&_e>=0&&_e<ae.value.length)ae=ae.value[_e];else return new We}else return new We;return ae}function Vt(S,ie,X=!1){if(S instanceof Xe&&ie instanceof Xe)return 0;if(S instanceof Xe||ie instanceof Xe)throw new Error(`Cannot compare ${S.type} with ${ie.type}`);if(S instanceof We&&ie instanceof We)return 0;if(S instanceof We||ie instanceof We)throw new Error(`Cannot compare ${S.type} with ${ie.type}`);const ae=_e=>_e instanceof ve||_e instanceof Ve||_e instanceof ke,le=_e=>_e instanceof ke?_e.value?1:0:_e.value;if(ae(S)&&ae(ie)){const _e=le(S),Oe=le(ie);return _e<Oe?-1:_e>Oe?1:0}if(S.type!==ie.type)throw new Error(`Cannot compare different types: ${S.type} and ${ie.type}`);if(S.type==="StringValue"){let _e=S.value,Oe=ie.value;return X||(_e=_e.toLowerCase(),Oe=Oe.toLowerCase()),_e<Oe?-1:_e>Oe?1:0}else throw new Error(`Cannot compare type: ${S.type}`)}var tn=class{global;constructor(S){this.global=S??new yt}run(S){return this.evaluate(S,this.global)}evaluateBinaryExpression(S,ie){const X=this.evaluate(S.left,ie);switch(S.operator.value){case"and":return X.__bool__().value?this.evaluate(S.right,ie):X;case"or":return X.__bool__().value?X:this.evaluate(S.right,ie)}const ae=this.evaluate(S.right,ie);switch(S.operator.value){case"==":return new ke(X.value==ae.value);case"!=":return new ke(X.value!=ae.value)}if(X instanceof We||ae instanceof We){if(ae instanceof We&&["in","not in"].includes(S.operator.value))return new ke(S.operator.value==="not in");throw new Error(`Cannot perform operation ${S.operator.value} on undefined values`)}else{if(X instanceof Xe||ae instanceof Xe)throw new Error("Cannot perform operation on null values");if(S.operator.value==="~")return new Be(X.value.toString()+ae.value.toString());if((X instanceof ve||X instanceof Ve)&&(ae instanceof ve||ae instanceof Ve)){const le=X.value,_e=ae.value;switch(S.operator.value){case"+":case"-":case"*":{const Oe=S.operator.value==="+"?le+_e:S.operator.value==="-"?le-_e:le*_e;return X instanceof Ve||ae instanceof Ve?new Ve(Oe):new ve(Oe)}case"/":return new Ve(le/_e);case"%":{const Oe=le%_e;return X instanceof Ve||ae instanceof Ve?new Ve(Oe):new ve(Oe)}case"<":return new ke(le<_e);case">":return new ke(le>_e);case">=":return new ke(le>=_e);case"<=":return new ke(le<=_e)}}else if(X instanceof He&&ae instanceof He){if(S.operator.value==="+")return new He(X.value.concat(ae.value))}else if(ae instanceof He){const le=ae.value.find(_e=>_e.value===X.value)!==void 0;switch(S.operator.value){case"in":return new ke(le);case"not in":return new ke(!le)}}}if((X instanceof Be||ae instanceof Be)&&S.operator.value==="+")return new Be(X.value.toString()+ae.value.toString());if(X instanceof Be&&ae instanceof Be)switch(S.operator.value){case"in":return new ke(ae.value.includes(X.value));case"not in":return new ke(!ae.value.includes(X.value))}if(X instanceof Be&&ae instanceof Ue)switch(S.operator.value){case"in":return new ke(ae.value.has(X.value));case"not in":return new ke(!ae.value.has(X.value))}throw new SyntaxError(`Unknown operator "${S.operator.value}" between ${X.type} and ${ae.type}`)}evaluateArguments(S,ie){const X=[],ae=new Map;for(const le of S)if(le.type==="SpreadExpression"){const _e=le,Oe=this.evaluate(_e.argument,ie);if(!(Oe instanceof He))throw new Error(`Cannot unpack non-iterable type: ${Oe.type}`);for(const gt of Oe.value)X.push(gt)}else if(le.type==="KeywordArgumentExpression"){const _e=le;ae.set(_e.key.value,this.evaluate(_e.value,ie))}else{if(ae.size>0)throw new Error("Positional arguments must come before keyword arguments");X.push(this.evaluate(le,ie))}return[X,ae]}applyFilter(S,ie,X){if(ie.type==="Identifier"){const ae=ie;if(ae.value==="tojson")return new Be(rt(S));if(S instanceof He)switch(ae.value){case"list":return S;case"first":return S.value[0];case"last":return S.value[S.value.length-1];case"length":return new ve(S.value.length);case"reverse":return new He(S.value.slice().reverse());case"sort":return new He(S.value.slice().sort((le,_e)=>Vt(le,_e,!1)));case"join":return new Be(S.value.map(le=>le.value).join(""));case"string":return new Be(rt(S,null,0,!1));case"unique":{const le=new Set,_e=[];for(const Oe of S.value)le.has(Oe.value)||(le.add(Oe.value),_e.push(Oe));return new He(_e)}default:throw new Error(`Unknown ArrayValue filter: ${ae.value}`)}else if(S instanceof Be)switch(ae.value){case"length":case"upper":case"lower":case"title":case"capitalize":{const le=S.builtins.get(ae.value);if(le instanceof At)return le.value([],X);if(le instanceof ve)return le;throw new Error(`Unknown StringValue filter: ${ae.value}`)}case"trim":return new Be(S.value.trim());case"indent":return new Be(S.value.split(`
2826`).map((le,_e)=>_e===0||le.length===0?le:"    "+le).join(`
2827`));case"join":case"string":return S;case"int":{const le=parseInt(S.value,10);return new ve(isNaN(le)?0:le)}case"float":{const le=parseFloat(S.value);return new Ve(isNaN(le)?0:le)}default:throw new Error(`Unknown StringValue filter: ${ae.value}`)}else if(S instanceof ve||S instanceof Ve)switch(ae.value){case"abs":return S instanceof ve?new ve(Math.abs(S.value)):new Ve(Math.abs(S.value));case"int":return new ve(Math.floor(S.value));case"float":return new Ve(S.value);default:throw new Error(`Unknown NumericValue filter: ${ae.value}`)}else if(S instanceof Ue)switch(ae.value){case"items":return new He(Array.from(S.value.entries()).map(([le,_e])=>new He([new Be(le),_e])));case"length":return new ve(S.value.size);default:{const le=S.builtins.get(ae.value);if(le)return le instanceof At?le.value([],X):le;throw new Error(`Unknown ObjectValue filter: ${ae.value}`)}}else if(S instanceof ke)switch(ae.value){case"bool":return new ke(S.value);case"int":return new ve(S.value?1:0);case"float":return new Ve(S.value?1:0);case"string":return new Be(S.value?"true":"false");default:throw new Error(`Unknown BooleanValue filter: ${ae.value}`)}throw new Error(`Cannot apply filter "${ae.value}" to type: ${S.type}`)}else if(ie.type==="CallExpression"){const ae=ie;if(ae.callee.type!=="Identifier")throw new Error(`Unknown filter: ${ae.callee.type}`);const le=ae.callee.value;if(le==="tojson"){const[,_e]=this.evaluateArguments(ae.args,X),Oe=_e.get("indent")??new Xe;if(!(Oe instanceof ve||Oe instanceof Xe))throw new Error("If set, indent must be a number");return new Be(rt(S,Oe.value))}else if(le==="join"){let _e;if(S instanceof Be)_e=Array.from(S.value);else if(S instanceof He)_e=S.value.map(at=>at.value);else throw new Error(`Cannot apply filter "${le}" to type: ${S.type}`);const[Oe,gt]=this.evaluateArguments(ae.args,X),Et=Oe.at(0)??gt.get("separator")??new Be("");if(!(Et instanceof Be))throw new Error("separator must be a string");return new Be(_e.join(Et.value))}else if(le==="int"||le==="float"){const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e.at(0)??Oe.get("default")??(le==="int"?new ve(0):new Ve(0));if(S instanceof Be){const Et=le==="int"?parseInt(S.value,10):parseFloat(S.value);return isNaN(Et)?gt:le==="int"?new ve(Et):new Ve(Et)}else{if(S instanceof ve||S instanceof Ve)return S;if(S instanceof ke)return le==="int"?new ve(S.value?1:0):new Ve(S.value?1:0);throw new Error(`Cannot apply filter "${le}" to type: ${S.type}`)}}else if(le==="default"){const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e[0]??new Be(""),Et=_e[1]??Oe.get("boolean")??new ke(!1);if(!(Et instanceof ke))throw new Error("`default` filter flag must be a boolean");return S instanceof We||Et.value&&!S.__bool__().value?gt:S}if(S instanceof He){switch(le){case"sort":{const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e.at(0)??Oe.get("reverse")??new ke(!1);if(!(gt instanceof ke))throw new Error("reverse must be a boolean");const Et=_e.at(1)??Oe.get("case_sensitive")??new ke(!1);if(!(Et instanceof ke))throw new Error("case_sensitive must be a boolean");const at=_e.at(2)??Oe.get("attribute")??new Xe;if(!(at instanceof Be||at instanceof ve||at instanceof Xe))throw new Error("attribute must be a string, integer, or null");const Ot=lt=>{if(at instanceof Xe)return lt;const St=at instanceof ve?String(at.value):at.value;return hr(lt,St)};return new He(S.value.slice().sort((lt,St)=>{const rr=Ot(lt),Hr=Ot(St),kr=Vt(rr,Hr,Et.value);return gt.value?-kr:kr}))}case"selectattr":case"rejectattr":{const _e=le==="selectattr";if(S.value.some(lt=>!(lt instanceof Ue)))throw new Error(`\`${le}\` can only be applied to array of objects`);if(ae.args.some(lt=>lt.type!=="StringLiteral"))throw new Error(`arguments of \`${le}\` must be strings`);const[Oe,gt,Et]=ae.args.map(lt=>this.evaluate(lt,X));let at;if(gt){const lt=X.tests.get(gt.value);if(!lt)throw new Error(`Unknown test: ${gt.value}`);at=lt}else at=(...lt)=>lt[0].__bool__().value;const Ot=S.value.filter(lt=>{const St=lt.value.get(Oe.value),rr=St?at(St,Et):!1;return _e?rr:!rr});return new He(Ot)}case"map":{const[,_e]=this.evaluateArguments(ae.args,X);if(_e.has("attribute")){const Oe=_e.get("attribute");if(!(Oe instanceof Be))throw new Error("attribute must be a string");const gt=_e.get("default"),Et=S.value.map(at=>{if(!(at instanceof Ue))throw new Error("items in map must be an object");const Ot=hr(at,Oe.value);return Ot instanceof We?gt??new We:Ot});return new He(Et)}else throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${le}`)}else if(S instanceof Be){switch(le){case"indent":{const[_e,Oe]=this.evaluateArguments(ae.args,X),gt=_e.at(0)??Oe.get("width")??new ve(4);if(!(gt instanceof ve))throw new Error("width must be a number");const Et=_e.at(1)??Oe.get("first")??new ke(!1),at=_e.at(2)??Oe.get("blank")??new ke(!1),Ot=S.value.split(`
2828`),lt=" ".repeat(gt.value),St=Ot.map((rr,Hr)=>!Et.value&&Hr===0||!at.value&&rr.length===0?rr:lt+rr);return new Be(St.join(`
2829`))}case"replace":{const _e=S.builtins.get("replace");if(!(_e instanceof At))throw new Error("replace filter not available");const[Oe,gt]=this.evaluateArguments(ae.args,X);return _e.value([...Oe,new ht(gt)],X)}}throw new Error(`Unknown StringValue filter: ${le}`)}else if(S instanceof Ue){const _e=S.builtins.get(le);if(_e&&_e instanceof At){const[Oe,gt]=this.evaluateArguments(ae.args,X);return gt.size>0&&Oe.push(new ht(gt)),_e.value(Oe,X)}throw new Error(`Unknown ObjectValue filter: ${le}`)}else throw new Error(`Cannot apply filter "${le}" to type: ${S.type}`)}throw new Error(`Unknown filter: ${ie.type}`)}evaluateFilterExpression(S,ie){const X=this.evaluate(S.operand,ie);return this.applyFilter(X,S.filter,ie)}evaluateTestExpression(S,ie){const X=this.evaluate(S.operand,ie),ae=ie.tests.get(S.test.value);if(!ae)throw new Error(`Unknown test: ${S.test.value}`);const le=ae(X);return new ke(S.negate?!le:le)}evaluateSelectExpression(S,ie){return this.evaluate(S.test,ie).__bool__().value?this.evaluate(S.lhs,ie):new We}evaluateUnaryExpression(S,ie){const X=this.evaluate(S.argument,ie);if(S.operator.value==="not")return new ke(!X.value);throw new SyntaxError(`Unknown operator: ${S.operator.value}`)}evaluateTernaryExpression(S,ie){return this.evaluate(S.condition,ie).__bool__().value?this.evaluate(S.trueExpr,ie):this.evaluate(S.falseExpr,ie)}evalProgram(S,ie){return this.evaluateBlock(S.body,ie)}evaluateBlock(S,ie){let X="";for(const ae of S){const le=this.evaluate(ae,ie);le.type!=="NullValue"&&le.type!=="UndefinedValue"&&(X+=le.toString())}return new Be(X)}evaluateIdentifier(S,ie){return ie.lookupVariable(S.value)}evaluateCallExpression(S,ie){const[X,ae]=this.evaluateArguments(S.args,ie);ae.size>0&&X.push(new ht(ae));const le=this.evaluate(S.callee,ie);if(le.type!=="FunctionValue")throw new Error(`Cannot call something that is not a function: got ${le.type}`);return le.value(X,ie)}evaluateSliceExpression(S,ie,X){if(!(S instanceof He||S instanceof Be))throw new Error("Slice object must be an array or string");const ae=this.evaluate(ie.start,X),le=this.evaluate(ie.stop,X),_e=this.evaluate(ie.step,X);if(!(ae instanceof ve||ae instanceof We))throw new Error("Slice start must be numeric or undefined");if(!(le instanceof ve||le instanceof We))throw new Error("Slice stop must be numeric or undefined");if(!(_e instanceof ve||_e instanceof We))throw new Error("Slice step must be numeric or undefined");return S instanceof He?new He(je(S.value,ae.value,le.value,_e.value)):new Be(je(Array.from(S.value),ae.value,le.value,_e.value).join(""))}evaluateMemberExpression(S,ie){const X=this.evaluate(S.object,ie);let ae;if(S.computed){if(S.property.type==="SliceExpression")return this.evaluateSliceExpression(X,S.property,ie);ae=this.evaluate(S.property,ie)}else ae=new Be(S.property.value);let le;if(X instanceof Ue){if(!(ae instanceof Be))throw new Error(`Cannot access property with non-string: got ${ae.type}`);le=X.value.get(ae.value)??X.builtins.get(ae.value)}else if(X instanceof He||X instanceof Be)if(ae instanceof ve)le=X.value.at(ae.value),X instanceof Be&&(le=new Be(X.value.at(ae.value)));else if(ae instanceof Be)le=X.builtins.get(ae.value);else throw new Error(`Cannot access property with non-string/non-number: got ${ae.type}`);else{if(!(ae instanceof Be))throw new Error(`Cannot access property with non-string: got ${ae.type}`);le=X.builtins.get(ae.value)}return le instanceof ze?le:new We}evaluateSet(S,ie){const X=S.value?this.evaluate(S.value,ie):this.evaluateBlock(S.body,ie);if(S.assignee.type==="Identifier"){const ae=S.assignee.value;ie.setVariable(ae,X)}else if(S.assignee.type==="TupleLiteral"){const ae=S.assignee;if(!(X instanceof He))throw new Error(`Cannot unpack non-iterable type in set: ${X.type}`);const le=X.value;if(le.length!==ae.value.length)throw new Error(`Too ${ae.value.length>le.length?"few":"many"} items to unpack in set`);for(let _e=0;_e<ae.value.length;++_e){const Oe=ae.value[_e];if(Oe.type!=="Identifier")throw new Error(`Cannot unpack to non-identifier in set: ${Oe.type}`);ie.setVariable(Oe.value,le[_e])}}else if(S.assignee.type==="MemberExpression"){const ae=S.assignee,le=this.evaluate(ae.object,ie);if(!(le instanceof Ue))throw new Error("Cannot assign to member of non-object");if(ae.property.type!=="Identifier")throw new Error("Cannot assign to member with non-identifier property");le.value.set(ae.property.value,X)}else throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(S.assignee)}`);return new Xe}evaluateIf(S,ie){const X=this.evaluate(S.test,ie);return this.evaluateBlock(X.__bool__().value?S.body:S.alternate,ie)}evaluateFor(S,ie){const X=new yt(ie);let ae,le;if(S.iterable.type==="SelectExpression"){const at=S.iterable;le=this.evaluate(at.lhs,X),ae=at.test}else le=this.evaluate(S.iterable,X);if(!(le instanceof He||le instanceof Ue))throw new Error(`Expected iterable or object type in for loop: got ${le.type}`);le instanceof Ue&&(le=le.keys());const _e=[],Oe=[];for(let at=0;at<le.value.length;++at){const Ot=new yt(X),lt=le.value[at];let St;if(S.loopvar.type==="Identifier")St=rr=>rr.setVariable(S.loopvar.value,lt);else if(S.loopvar.type==="TupleLiteral"){const rr=S.loopvar;if(lt.type!=="ArrayValue")throw new Error(`Cannot unpack non-iterable type: ${lt.type}`);const Hr=lt;if(rr.value.length!==Hr.value.length)throw new Error(`Too ${rr.value.length>Hr.value.length?"few":"many"} items to unpack`);St=kr=>{for(let yr=0;yr<rr.value.length;++yr){if(rr.value[yr].type!=="Identifier")throw new Error(`Cannot unpack non-identifier type: ${rr.value[yr].type}`);kr.setVariable(rr.value[yr].value,Hr.value[yr])}}}else throw new Error(`Invalid loop variable(s): ${S.loopvar.type}`);ae&&(St(Ot),!this.evaluate(ae,Ot).__bool__().value)||(_e.push(lt),Oe.push(St))}let gt="",Et=!0;for(let at=0;at<_e.length;++at){const Ot=new Map([["index",new ve(at+1)],["index0",new ve(at)],["revindex",new ve(_e.length-at)],["revindex0",new ve(_e.length-at-1)],["first",new ke(at===0)],["last",new ke(at===_e.length-1)],["length",new ve(_e.length)],["previtem",at>0?_e[at-1]:new We],["nextitem",at<_e.length-1?_e[at+1]:new We]]);X.setVariable("loop",new Ue(Ot)),Oe[at](X);try{const lt=this.evaluateBlock(S.body,X);gt+=lt.value}catch(lt){if(lt instanceof Se)continue;if(lt instanceof Ce)break;throw lt}Et=!1}if(Et){const at=this.evaluateBlock(S.defaultBlock,X);gt+=at.value}return new Be(gt)}evaluateMacro(S,ie){return ie.setVariable(S.name.value,new At((X,ae)=>{const le=new yt(ae);X=X.slice();let _e;X.at(-1)?.type==="KeywordArgumentsValue"&&(_e=X.pop());for(let Oe=0;Oe<S.args.length;++Oe){const gt=S.args[Oe],Et=X[Oe];if(gt.type==="Identifier"){const at=gt;if(!Et)throw new Error(`Missing positional argument: ${at.value}`);le.setVariable(at.value,Et)}else if(gt.type==="KeywordArgumentExpression"){const at=gt,Ot=Et??_e?.value.get(at.key.value)??this.evaluate(at.value,le);le.setVariable(at.key.value,Ot)}else throw new Error(`Unknown argument type: ${gt.type}`)}return this.evaluateBlock(S.body,le)})),new Xe}evaluateCallStatement(S,ie){const X=new At((gt,Et)=>{const at=new yt(Et);if(S.callerArgs)for(let Ot=0;Ot<S.callerArgs.length;++Ot){const lt=S.callerArgs[Ot];if(lt.type!=="Identifier")throw new Error(`Caller parameter must be an identifier, got ${lt.type}`);at.setVariable(lt.value,gt[Ot]??new We)}return this.evaluateBlock(S.body,at)}),[ae,le]=this.evaluateArguments(S.call.args,ie);ae.push(new ht(le));const _e=this.evaluate(S.call.callee,ie);if(_e.type!=="FunctionValue")throw new Error(`Cannot call something that is not a function: got ${_e.type}`);const Oe=new yt(ie);return Oe.setVariable("caller",X),_e.value(ae,Oe)}evaluateFilterStatement(S,ie){const X=this.evaluateBlock(S.body,ie);return this.applyFilter(X,S.filter,ie)}evaluate(S,ie){if(!S)return new We;switch(S.type){case"Program":return this.evalProgram(S,ie);case"Set":return this.evaluateSet(S,ie);case"If":return this.evaluateIf(S,ie);case"For":return this.evaluateFor(S,ie);case"Macro":return this.evaluateMacro(S,ie);case"CallStatement":return this.evaluateCallStatement(S,ie);case"Break":throw new Ce;case"Continue":throw new Se;case"IntegerLiteral":return new ve(S.value);case"FloatLiteral":return new Ve(S.value);case"StringLiteral":return new Be(S.value);case"ArrayLiteral":return new He(S.value.map(X=>this.evaluate(X,ie)));case"TupleLiteral":return new dt(S.value.map(X=>this.evaluate(X,ie)));case"ObjectLiteral":{const X=new Map;for(const[ae,le]of S.value){const _e=this.evaluate(ae,ie);if(!(_e instanceof Be))throw new Error(`Object keys must be strings: got ${_e.type}`);X.set(_e.value,this.evaluate(le,ie))}return new Ue(X)}case"Identifier":return this.evaluateIdentifier(S,ie);case"CallExpression":return this.evaluateCallExpression(S,ie);case"MemberExpression":return this.evaluateMemberExpression(S,ie);case"UnaryExpression":return this.evaluateUnaryExpression(S,ie);case"BinaryExpression":return this.evaluateBinaryExpression(S,ie);case"FilterExpression":return this.evaluateFilterExpression(S,ie);case"FilterStatement":return this.evaluateFilterStatement(S,ie);case"TestExpression":return this.evaluateTestExpression(S,ie);case"SelectExpression":return this.evaluateSelectExpression(S,ie);case"Ternary":return this.evaluateTernaryExpression(S,ie);case"Comment":return new Xe;default:throw new SyntaxError(`Unknown node type: ${S.type}`)}}};function hn(S){switch(typeof S){case"number":return Number.isInteger(S)?new ve(S):new Ve(S);case"string":return new Be(S);case"boolean":return new ke(S);case"undefined":return new We;case"object":return S===null?new Xe:Array.isArray(S)?new He(S.map(hn)):new Ue(new Map(Object.entries(S).map(([ie,X])=>[ie,hn(X)])));case"function":return new At((ie,X)=>{const ae=S(...ie.map(le=>le.value))??null;return hn(ae)});default:throw new Error(`Cannot convert to runtime value: ${S}`)}}var ar=`
2830`,On="{%- ",ma=" -%}";function fa(S){switch(S.operator.type){case"MultiplicativeBinaryOperator":return 4;case"AdditiveBinaryOperator":return 3;case"ComparisonBinaryOperator":return 2;case"Identifier":return S.operator.value==="and"?1:S.operator.value==="in"||S.operator.value==="not in"?2:0}return 0}function _a(S,ie="	"){const X=typeof ie=="number"?" ".repeat(ie):ie;return mn(S.body,0,X).replace(/\n$/,"")}function Ur(...S){return On+S.join(" ")+ma}function mn(S,ie,X){return S.map(ae=>Nn(ae,ie,X)).join(ar)}function Nn(S,ie,X){const ae=X.repeat(ie);switch(S.type){case"Program":return mn(S.body,ie,X);case"If":return Ms(S,ie,X);case"For":return kt(S,ie,X);case"Set":return Er(S,ie,X);case"Macro":return us(S,ie,X);case"Break":return ae+Ur("break");case"Continue":return ae+Ur("continue");case"CallStatement":return cs(S,ie,X);case"FilterStatement":return pr(S,ie,X);case"Comment":return ae+"{# "+S.value+" #}";default:return ae+"{{- "+Ft(S)+" -}}"}}function Ms(S,ie,X){const ae=X.repeat(ie),le=[];let _e=S;for(;_e&&(le.push({test:_e.test,body:_e.body}),_e.alternate.length===1&&_e.alternate[0].type==="If");)_e=_e.alternate[0];let Oe=ae+Ur("if",Ft(le[0].test))+ar+mn(le[0].body,ie+1,X);for(let gt=1;gt<le.length;++gt)Oe+=ar+ae+Ur("elif",Ft(le[gt].test))+ar+mn(le[gt].body,ie+1,X);return _e&&_e.alternate.length>0&&(Oe+=ar+ae+Ur("else")+ar+mn(_e.alternate,ie+1,X)),Oe+=ar+ae+Ur("endif"),Oe}function kt(S,ie,X){const ae=X.repeat(ie);let le="";if(S.iterable.type==="SelectExpression"){const Oe=S.iterable;le=`${Ft(Oe.lhs)} if ${Ft(Oe.test)}`}else le=Ft(S.iterable);let _e=ae+Ur("for",Ft(S.loopvar),"in",le)+ar+mn(S.body,ie+1,X);return S.defaultBlock.length>0&&(_e+=ar+ae+Ur("else")+ar+mn(S.defaultBlock,ie+1,X)),_e+=ar+ae+Ur("endfor"),_e}function Er(S,ie,X){const ae=X.repeat(ie),le=Ft(S.assignee),_e=S.value?Ft(S.value):"",Oe=ae+Ur("set",`${le}${S.value?" = "+_e:""}`);return S.body.length===0?Oe:Oe+ar+mn(S.body,ie+1,X)+ar+ae+Ur("endset")}function us(S,ie,X){const ae=X.repeat(ie),le=S.args.map(Ft).join(", ");return ae+Ur("macro",`${S.name.value}(${le})`)+ar+mn(S.body,ie+1,X)+ar+ae+Ur("endmacro")}function cs(S,ie,X){const ae=X.repeat(ie),le=S.callerArgs&&S.callerArgs.length>0?`(${S.callerArgs.map(Ft).join(", ")})`:"",_e=Ft(S.call);let Oe=ae+Ur(`call${le}`,_e)+ar;return Oe+=mn(S.body,ie+1,X)+ar,Oe+=ae+Ur("endcall"),Oe}function pr(S,ie,X){const ae=X.repeat(ie),le=S.filter.type==="Identifier"?S.filter.value:Ft(S.filter);let _e=ae+Ur("filter",le)+ar;return _e+=mn(S.body,ie+1,X)+ar,_e+=ae+Ur("endfilter"),_e}function Ft(S,ie=-1){switch(S.type){case"SpreadExpression":return`*${Ft(S.argument)}`;case"Identifier":return S.value;case"IntegerLiteral":return`${S.value}`;case"FloatLiteral":return`${S.value}`;case"StringLiteral":return JSON.stringify(S.value);case"BinaryExpression":{const X=S,ae=fa(X),le=Ft(X.left,ae),_e=Ft(X.right,ae+1),Oe=`${le} ${X.operator.value} ${_e}`;return ae<ie?`(${Oe})`:Oe}case"UnaryExpression":{const X=S;return X.operator.value+(X.operator.value==="not"?" ":"")+Ft(X.argument,1/0)}case"CallExpression":{const X=S,ae=X.args.map(Ft).join(", ");return`${Ft(X.callee)}(${ae})`}case"MemberExpression":{const X=S;let ae=Ft(X.object);["Identifier","MemberExpression","CallExpression","StringLiteral","IntegerLiteral","FloatLiteral","ArrayLiteral","TupleLiteral","ObjectLiteral"].includes(X.object.type)||(ae=`(${ae})`);let le=Ft(X.property);return!X.computed&&X.property.type!=="Identifier"&&(le=`(${le})`),X.computed?`${ae}[${le}]`:`${ae}.${le}`}case"FilterExpression":{const X=S,ae=Ft(X.operand,1/0);return X.filter.type==="CallExpression"?`${ae} | ${Ft(X.filter)}`:`${ae} | ${X.filter.value}`}case"SelectExpression":{const X=S;return`${Ft(X.lhs)} if ${Ft(X.test)}`}case"TestExpression":{const X=S;return`${Ft(X.operand)} is${X.negate?" not":""} ${X.test.value}`}case"ArrayLiteral":case"TupleLiteral":{const X=S.value.map(Ft),ae=S.type==="ArrayLiteral"?"[]":"()";return`${ae[0]}${X.join(", ")}${ae[1]}`}case"ObjectLiteral":return`{${Array.from(S.value.entries()).map(([ae,le])=>`${Ft(ae)}: ${Ft(le)}`).join(", ")}}`;case"SliceExpression":{const X=S,ae=X.start?Ft(X.start):"",le=X.stop?Ft(X.stop):"",_e=X.step?`:${Ft(X.step)}`:"";return`${ae}:${le}${_e}`}case"KeywordArgumentExpression":{const X=S;return`${X.key.value}=${Ft(X.value)}`}case"Ternary":{const X=S,ae=`${Ft(X.trueExpr)} if ${Ft(X.condition,0)} else ${Ft(X.falseExpr)}`;return ie>-1?`(${ae})`:ae}default:throw new Error(`Unknown expression type: ${S.type}`)}}var ds=class{parsed;constructor(S){const ie=d(S,{lstrip_blocks:!0,trim_blocks:!0});this.parsed=De(ie)}render(S){const ie=new yt;if(Mt(ie),S)for(const[le,_e]of Object.entries(S))ie.set(le,_e);return new tn(ie).run(this.parsed).value}format(S){return _a(this.parsed,S?.indent||"	")}}}),
2830"./src/backends/onnx.js":((e,t,r)=>{var n;r.r(t),r.d(t,{Tensor:()=>o.Tensor,createInferenceSession:()=>B,deviceToExecutionProviders:()=>A,isONNXProxy:()=>b,isONNXTensor:()=>_,runInferenceSession:()=>P});var s=r("./src/env.js"),a=r("?2ce3"),i=r("onnxruntime-web"),o=r("onnxruntime-common");const l=Object.freeze({auto:null,gpu:null,cpu:"cpu",wasm:"wasm",webgpu:"webgpu",cuda:"cuda",dml:"dml",webnn:{name:"webnn",deviceType:"cpu"},"webnn-npu":{name:"webnn",deviceType:"npu"},"webnn-gpu":{name:"webnn",deviceType:"gpu"},"webnn-cpu":{name:"webnn",deviceType:"cpu"}}),u=[];let p,d;const c=Symbol.for("onnxruntime");if(c in globalThis)d=globalThis[c];else if(s.apis.IS_NODE_ENV){switch(d=a??(n||(n=r.t(a,2))),process.platform){case"win32":u.push("dml");break;case"linux":process.arch==="x64"&&u.push("cuda");break}u.push("cpu"),p=["cpu"]}else d=i,s.apis.IS_WEBNN_AVAILABLE&&u.push("webnn-npu","webnn-gpu","webnn-cpu","webnn"),s.apis.IS_WEBGPU_AVAILABLE&&u.push("webgpu"),u.push("wasm"),p=["wasm"];const g=d.InferenceSession;function A(v=null){if(!v)return p;switch(v){case"auto":return u;case"gpu":return u.filter(y=>["webgpu","cuda","dml","webnn-gpu"].includes(y))}if(u.includes(v))return[l[v]??v];throw new Error(`Unsupported device: "${v}". Should be one of: ${u.join(", ")}.`)}let m=null;async function B(v,y,$){m&&await m;const k=g.create(v,y);m??=k;const W=await k;return W.config=$,W}let f=Promise.resolve();const h=s.apis.IS_BROWSER_ENV||s.apis.IS_WEBWORKER_ENV;async function P(v,y){const $=()=>v.run(y);return await(h?f=f.then($):$())}function _(v){return v instanceof d.Tensor}const w=d?.env;w?.wasm&&(!(typeof ServiceWorkerGlobalScope<"u"&&self instanceof ServiceWorkerGlobalScope)&&!w.wasm.wasmPaths&&(w.wasm.wasmPaths=`https://cdn.jsdelivr.net/npm/@huggingface/transformers@${s.env.version}/dist/`),w.wasm.proxy=!1),w?.webgpu&&(w.webgpu.powerPreference="high-performance");function b(){return w?.wasm?.proxy}s.env.backends.onnx=w}),
2830"./src/base/feature_extraction_utils.js":((e,t,r)=>{r.r(t),r.d(t,{FeatureExtractor:()=>i,validate_audio_inputs:()=>o});var n=r("./src/utils/constants.js"),s=r("./src/utils/generic.js"),a=r("./src/utils/hub.js");class i extends s.Callable{constructor(u){super(),this.config=u}static async from_pretrained(u,p={}){const d=await(0,a.getModelJSON)(u,n.FEATURE_EXTRACTOR_NAME,!0,p);return new this(d)}}function o(l,u){if(!(l instanceof Float32Array||l instanceof Float64Array))throw new Error(`${u} expects input to be a Float32Array or a Float64Array, but got ${l?.constructor?.name??typeof l} instead. If using the feature extractor directly, remember to use \`read_audio(url, sampling_rate)\` to obtain the raw audio data of the file/url.`)}}),
2830"./src/base/image_processors_utils.js":((e,t,r)=>{r.r(t),r.d(t,{ImageProcessor:()=>_,center_to_corners_format:()=>d,post_process_instance_segmentation:()=>P,post_process_object_detection:()=>c,post_process_panoptic_segmentation:()=>h,post_process_semantic_segmentation:()=>g});var n=r("./src/utils/generic.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/maths.js");r("./src/utils/image.js");var i=r("./src/utils/core.js"),o=r("./src/utils/hub.js"),l=r("./src/utils/constants.js");function u(w,b,v=0,y=null){const $=w/b;let k=(0,a.bankers_round)($)*b;return y!==null&&k>y&&(k=Math.floor($)*b),k<v&&(k=Math.ceil($)*b),k}function p([w,b],v){return[Math.max(Math.floor(w/v),1)*v,Math.max(Math.floor(b/v),1)*v]}function d([w,b,v,y]){return[w-v/2,b-y/2,w+v/2,b+y/2]}function c(w,b=.5,v=null,y=!1){const $=w.logits,k=w.pred_boxes,[W,j,F]=$.dims;if(v!==null&&v.length!==W)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");let R=[];for(let L=0;L<W;++L){let Q=v!==null?v[L]:null,ne={boxes:[],classes:[],scores:[]},re=$[L],ce=k[L];for(let ge=0;ge<j;++ge){let q=re[ge],V=[],U;if(y){U=q.sigmoid().data;for(let N=0;N<U.length;++N)U[N]>b&&V.push(N)}else{let N=(0,a.max)(q.data)[1];if(N===F-1||(U=(0,a.softmax)(q.data),U[N]<b))continue;V.push(N)}for(const N of V){let oe=ce[ge].data;oe=d(oe),Q!==null&&(oe=oe.map((fe,De)=>fe*Q[(De+1)%2])),ne.boxes.push(oe),ne.classes.push(N),ne.scores.push(U[N])}}R.push(ne)}return R}function g(w,b=null){const v=w.logits,y=v.dims[0];if(b!==null&&b.length!==y)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");const $=[];for(let k=0;k<y;++k){const W=b!==null?b[k]:null;let j=v[k];W!==null&&(j=(0,s.interpolate)(j,W,"bilinear",!1));const[F,R]=W??j.dims.slice(-2),L=new s.Tensor("int32",new Int32Array(F*R),[F,R]),Q=j[0].data,ne=L.data;for(let ge=1;ge<j.dims[0];++ge){const q=j[ge].data;for(let V=0;V<q.length;++V)q[V]>Q[V]&&(Q[V]=q[V],ne[V]=ge)}const re=new Array(j.dims[0]);for(let ge=0;ge<ne.length;++ge){const q=ne[ge];re[q]=q}const ce=re.filter(ge=>ge!==void 0);$.push({segmentation:L,labels:ce})}return $}function A(w,b,v,y){const $=[],k=[],W=[];for(let j=0;j<w.dims[0];++j){const F=w[j],R=b[j],L=(0,a.max)(F.data)[1];if(L===y)continue;const ne=(0,a.softmax)(F.data)[L];ne>v&&($.push(R),k.push(ne),W.push(L))}return[$,k,W]}function m(w,b,v,y=.5,$=.8){const k=[];let W=0,j=0;const F=b[v].data;for(let L=0;L<w.length;++L)w[L]===v&&(k.push(L),++W),F[L]>=y&&++j;let R=W>0&&j>0;return R&&(R=W/j>$),[R,k]}function B(w,b,v,y,$,k=null,W=null){const[j,F]=W??w[0].dims,R=new s.Tensor("int32",new Int32Array(j*F),[j,F]),L=[];if(W!==null)for(let ge=0;ge<w.length;++ge)w[ge]=(0,s.interpolate)(w[ge],W,"bilinear",!1);const Q=new Int32Array(w[0].data.length),ne=new Float32Array(w[0].data.length);for(let ge=0;ge<w.length;++ge){let q=b[ge];const V=w[ge].data;for(let U=0;U<V.length;++U)V[U]*=q,V[U]>ne[U]&&(Q[U]=ge,ne[U]=V[U])}let re=0;const ce=R.data;for(let ge=0;ge<v.length;++ge){const q=v[ge],[V,U]=m(Q,w,ge,y,$);if(V){++re;for(const N of U)ce[N]=re;L.push({id:re,label_id:q,score:b[ge]})}}return[R,L]}function f(w,b,v=28,y=3136,$=784*1280){if(w<v||b<v)throw new Error(`height:${w} or width:${b} must be larger than factor:${v}`);if(Math.max(w,b)/Math.min(w,b)>200)throw new Error(`absolute aspect ratio must be smaller than 200, got ${Math.max(w,b)/Math.min(w,b)}`);let k=Math.round(w/v)*v,W=Math.round(b/v)*v;if(k*W>$){const j=Math.sqrt(w*b/$);k=Math.floor(w/j/v)*v,W=Math.floor(b/j/v)*v}else if(k*W<y){const j=Math.sqrt(y/(w*b));k=Math.ceil(w*j/v)*v,W=Math.ceil(b*j/v)*v}return[k,W]}function h(w,b=.5,v=.5,y=.8,$=null,k=null){$===null&&(console.warn("`label_ids_to_fuse` unset. No instance will be fused."),$=new Set);const W=w.class_queries_logits??w.logits,F=(w.masks_queries_logits??w.pred_masks).sigmoid();let[R,L,Q]=W.dims;if(Q-=1,k!==null&&k.length!==R)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");let ne=[];for(let re=0;re<R;++re){let ce=k!==null?k[re]:null,ge=W[re],q=F[re],[V,U,N]=A(ge,q,b,Q);if(N.length===0){let[De,Ie]=ce??q.dims.slice(-2),je=new s.Tensor("int32",new Int32Array(De*Ie).fill(-1),[De,Ie]);ne.push({segmentation:je,segments_info:[]});continue}let[oe,fe]=B(V,U,N,v,y,$,ce);ne.push({segmentation:oe,segments_info:fe})}return ne}function P(w,b=.5,v=null){throw new Error("`post_process_instance_segmentation` is not yet implemented.")}class _ extends n.Callable{constructor(b){super(),this.image_mean=b.image_mean??b.mean,this.image_std=b.image_std??b.std,this.resample=b.resample??2,this.do_rescale=b.do_rescale??!0,this.rescale_factor=b.rescale_factor??1/255,this.do_normalize=b.do_normalize,this.do_thumbnail=b.do_thumbnail,this.size=b.size??b.image_size,this.do_resize=b.do_resize??this.size!==void 0,this.size_divisibility=b.size_divisibility??b.size_divisor,this.do_center_crop=b.do_center_crop,this.crop_size=b.crop_size,this.do_convert_rgb=b.do_convert_rgb??!0,this.do_crop_margin=b.do_crop_margin,this.pad_size=b.pad_size,this.do_pad=b.do_pad,this.min_pixels=b.min_pixels,this.max_pixels=b.max_pixels,this.do_pad&&!this.pad_size&&this.size&&this.size.width!==void 0&&this.size.height!==void 0&&(this.pad_size=this.size),this.do_flip_channel_order=b.do_flip_channel_order??!1,this.config=b}async thumbnail(b,v,y=2){const $=b.height,k=b.width,W=v.height,j=v.width;let F=Math.min($,W),R=Math.min(k,j);return F===$&&R===k?b:($>k?R=Math.floor(k*F/$):k>$&&(F=Math.floor($*R/k)),await b.resize(R,F,{resample:y}))}async crop_margin(b,v=200){const y=b.clone().grayscale(),$=(0,a.min)(y.data)[0],W=(0,a.max)(y.data)[0]-$;if(W===0)return b;const j=v/255;let F=y.width,R=y.height,L=0,Q=0;const ne=y.data;for(let re=0;re<y.height;++re){const ce=re*y.width;for(let ge=0;ge<y.width;++ge)(ne[ce+ge]-$)/W<j&&(F=Math.min(F,ge),R=Math.min(R,re),L=Math.max(L,ge),Q=Math.max(Q,re))}return b=await b.crop([F,R,L,Q]),b}pad_image(b,v,y,{mode:$="constant",center:k=!1,constant_values:W=0}={}){const[j,F,R]=v;let L,Q;if(typeof y=="number"?(L=y,Q=y):y==="square"?L=Q=Math.max(j,F):(L=y.width,Q=y.height),L!==F||Q!==j){const ne=new Float32Array(L*Q*R);if(Array.isArray(W))for(let ge=0;ge<ne.length;++ge)ne[ge]=W[ge%R];else W!==0&&ne.fill(W);
2830const[re,ce]=k?[Math.floor((L-F)/2),Math.floor((Q-j)/2)]:[0,0];for(let ge=0;ge<j;++ge){const q=(ge+ce)*L,V=ge*F;for(let U=0;U<F;++U){const N=(q+U+re)*R,oe=(V+U)*R;for(let fe=0;fe<R;++fe)ne[N+fe]=b[oe+fe]}}if($==="symmetric"){if(k)throw new Error("`center` padding is not supported when `mode` is set to `symmetric`.");const ge=j-1,q=F-1;for(let V=0;V<Q;++V){const U=V*L,N=(0,i.calculateReflectOffset)(V,ge)*F;for(let oe=0;oe<L;++oe){if(V<j&&oe<F)continue;const fe=(U+oe)*R,De=(N+(0,i.calculateReflectOffset)(oe,q))*R;for(let Ie=0;Ie<R;++Ie)ne[fe+Ie]=b[De+Ie]}}}b=ne,v=[Q,L,R]}return[b,v]}rescale(b){for(let v=0;v<b.length;++v)b[v]=this.rescale_factor*b[v]}get_resize_output_image_size(b,v){const[y,$]=b.size;let k,W;if(this.do_thumbnail){const{height:j,width:F}=v;k=Math.min(j,F)}else Number.isInteger(v)?(k=v,W=this.config.max_size??k):v!==void 0&&(k=v.shortest_edge,W=v.longest_edge);if(k!==void 0||W!==void 0){const j=k===void 0?1:Math.max(k/y,k/$),F=y*j,R=$*j,L=W===void 0?1:Math.min(W/F,W/R);let Q=Math.floor(Number((F*L).toFixed(2))),ne=Math.floor(Number((R*L).toFixed(2)));return this.size_divisibility!==void 0&&([Q,ne]=p([Q,ne],this.size_divisibility)),[Q,ne]}else if(v!==void 0&&v.width!==void 0&&v.height!==void 0){let j=v.width,F=v.height;if(this.config.keep_aspect_ratio&&this.config.ensure_multiple_of){let R=F/$,L=j/y;Math.abs(1-L)<Math.abs(1-R)?R=L:L=R,F=u(R*$,this.config.ensure_multiple_of),j=u(L*y,this.config.ensure_multiple_of)}return[j,F]}else{if(this.size_divisibility!==void 0)return p([y,$],this.size_divisibility);if(this.min_pixels!==void 0&&this.max_pixels!==void 0){const j=this.config.patch_size*this.config.merge_size;return f($,y,j,this.min_pixels,this.max_pixels)}else throw new Error(`Could not resize image due to unsupported \`this.size\` option in config: ${JSON.stringify(v)}`)}}async resize(b){const[v,y]=this.get_resize_output_image_size(b,this.size);return await b.resize(v,y,{resample:this.resample})}async preprocess(b,{do_normalize:v=null,do_pad:y=null,do_convert_rgb:$=null,do_convert_grayscale:k=null,do_flip_channel_order:W=null}={}){this.do_crop_margin&&(b=await this.crop_margin(b));const[j,F]=b.size;if($??this.do_convert_rgb?b=b.rgb():k&&(b=b.grayscale()),this.do_resize&&(b=await this.resize(b)),this.do_thumbnail&&(b=await this.thumbnail(b,this.size,this.resample)),this.do_center_crop){let re,ce;Number.isInteger(this.crop_size)?(re=this.crop_size,ce=this.crop_size):(re=this.crop_size.width,ce=this.crop_size.height),b=await b.center_crop(re,ce)}const R=[b.height,b.width];let L=Float32Array.from(b.data),Q=[b.height,b.width,b.channels];if(this.do_rescale&&this.rescale(L),v??this.do_normalize){let re=this.image_mean;Array.isArray(this.image_mean)||(re=new Array(b.channels).fill(re));let ce=this.image_std;if(Array.isArray(this.image_std)||(ce=new Array(b.channels).fill(ce)),re.length!==b.channels||ce.length!==b.channels)throw new Error(`When set to arrays, the length of \`image_mean\` (${re.length}) and \`image_std\` (${ce.length}) must match the number of channels in the image (${b.channels}).`);for(let ge=0;ge<L.length;ge+=b.channels)for(let q=0;q<b.channels;++q)L[ge+q]=(L[ge+q]-re[q])/ce[q]}if(y??this.do_pad){if(this.pad_size)[L,Q]=this.pad_image(L,[b.height,b.width,b.channels],this.pad_size);else if(this.size_divisibility){const[re,ce]=p([Q[1],Q[0]],this.size_divisibility);[L,Q]=this.pad_image(L,Q,{width:re,height:ce})}}if(W??this.do_flip_channel_order){if(Q[2]!==3)throw new Error("Flipping channel order is only supported for RGB images.");for(let re=0;re<L.length;re+=3){const ce=L[re];L[re]=L[re+2],L[re+2]=ce}}const ne=new s.Tensor("float32",L,Q).permute(2,0,1);return{original_size:[F,j],reshaped_input_size:R,pixel_values:ne}}async _call(b,...v){Array.isArray(b)||(b=[b]);const y=await Promise.all(b.map(k=>this.preprocess(k)));return{pixel_values:(0,s.stack)(y.map(k=>k.pixel_values),0),original_sizes:y.map(k=>k.original_size),reshaped_input_sizes:y.map(k=>k.reshaped_input_size)}}static async from_pretrained(b,v={}){const y=await(0,o.getModelJSON)(b,l.IMAGE_PROCESSOR_NAME,!0,v);return new this(y)}}}),
2830"./src/base/processing_utils.js":((e,t,r)=>{r.r(t),r.d(t,{Processor:()=>i});var n=r("./src/utils/constants.js"),s=r("./src/utils/generic.js"),a=r("./src/utils/hub.js");class i extends s.Callable{static classes=["image_processor_class","tokenizer_class","feature_extractor_class"];static uses_processor_config=!1;static uses_chat_template_file=!1;constructor(l,u,p){super(),this.config=l,this.components=u,this.chat_template=p}get image_processor(){return this.components.image_processor}get tokenizer(){return this.components.tokenizer}get feature_extractor(){return this.components.feature_extractor}apply_chat_template(l,u={}){if(!this.tokenizer)throw new Error("Unable to apply chat template without a tokenizer.");return this.tokenizer.apply_chat_template(l,{tokenize:!1,chat_template:this.chat_template??void 0,...u})}batch_decode(...l){if(!this.tokenizer)throw new Error("Unable to decode without a tokenizer.");return this.tokenizer.batch_decode(...l)}decode(...l){if(!this.tokenizer)throw new Error("Unable to decode without a tokenizer.");return this.tokenizer.decode(...l)}async _call(l,...u){for(const p of[this.image_processor,this.feature_extractor,this.tokenizer])if(p)return p(l,...u);throw new Error("No image processor, feature extractor, or tokenizer found.")}static async from_pretrained(l,u={}){const[p,d,c]=await Promise.all([this.uses_processor_config?(0,a.getModelJSON)(l,n.PROCESSOR_NAME,!0,u):{},Promise.all(this.classes.filter(g=>g in this).map(async g=>{const A=await this[g].from_pretrained(l,u);return[g.replace(/_class$/,""),A]})).then(Object.fromEntries),this.uses_chat_template_file?(0,a.getModelText)(l,n.CHAT_TEMPLATE_NAME,!0,u):null]);return new this(p,d,c)}}}),
2830"./src/configs.js":((e,t,r)=>{r.r(t),r.d(t,{AutoConfig:()=>p,PretrainedConfig:()=>u,getCacheShapes:()=>o});var n=r("./src/utils/core.js"),s=r("./src/utils/hub.js");async function a(d,c){return await(0,s.getModelJSON)(d,"config.json",!0,c)}function i(d){const c={};let g={};switch(d.model_type){case"llava":case"paligemma":case"gemma3":case"florence2":case"llava_onevision":case"idefics3":case"ultravox":case"voxtral":case"smolvlm":case"gemma3n":case"mistral3":g=i(d.text_config);break;case"moondream1":g=i(d.phi_config);break;case"musicgen":g=i(d.decoder);break;case"multi_modality":g=i(d.language_config);break;case"gpt2":case"gptj":case"jais":case"codegen":case"gpt_bigcode":c.num_heads="n_head",c.num_layers="n_layer",c.hidden_size="n_embd";break;case"gpt_neox":case"stablelm":case"opt":case"falcon":case"modernbert-decoder":c.num_heads="num_attention_heads",c.num_layers="num_hidden_layers",c.hidden_size="hidden_size";break;case"llama":case"llama4_text":case"nanochat":case"arcee":case"lfm2":case"smollm3":case"olmo":case"olmo2":case"mobilellm":case"granite":case"granitemoehybrid":case"cohere":case"mistral":case"starcoder2":case"qwen2":case"qwen2_vl":case"phi":case"phi3":case"phi3_v":case"llava_qwen2":c.num_heads="num_key_value_heads",c.num_layers="num_hidden_layers",c.hidden_size="hidden_size",c.num_attention_heads="num_attention_heads",c.dim_kv="head_dim";break;case"qwen3":case"gemma":case"gemma2":case"vaultgemma":case"gemma3_text":case"gemma3n_text":case"glm":case"helium":case"ernie4_5":case"ministral":case"ministral3":c.num_heads="num_key_value_heads",c.num_layers="num_hidden_layers",c.dim_kv="head_dim";break;case"openelm":c.num_heads="num_kv_heads",c.num_layers="num_transformer_layers",c.dim_kv="head_dim";break;case"gpt_neo":case"donut-swin":c.num_heads="num_heads",c.num_layers="num_layers",c.hidden_size="hidden_size";break;case"bloom":c.num_heads="n_head",c.num_layers="n_layer",c.hidden_size="hidden_size";break;case"mpt":c.num_heads="n_heads",c.num_layers="n_layers",c.hidden_size="d_model";break;case"exaone":c.num_heads="num_key_value_heads",c.num_layers="num_layers",c.dim_kv="head_dim",c.num_attention_heads="num_attention_heads";break;case"t5":case"mt5":case"longt5":c.num_decoder_layers="num_decoder_layers",c.num_decoder_heads="num_heads",c.decoder_dim_kv="d_kv",c.num_encoder_layers="num_layers",c.num_encoder_heads="num_heads",c.encoder_dim_kv="d_kv";break;case"bart":case"mbart":case"marian":case"whisper":case"lite-whisper":case"m2m_100":case"blenderbot":case"blenderbot-small":case"florence2_language":c.num_decoder_layers="decoder_layers",c.num_decoder_heads="decoder_attention_heads",c.decoder_hidden_size="d_model",c.num_encoder_layers="encoder_layers",c.num_encoder_heads="encoder_attention_heads",c.encoder_hidden_size="d_model";break;case"speecht5":c.num_decoder_layers="decoder_layers",c.num_decoder_heads="decoder_attention_heads",c.decoder_hidden_size="hidden_size",c.num_encoder_layers="encoder_layers",c.num_encoder_heads="encoder_attention_heads",c.encoder_hidden_size="hidden_size";break;case"trocr":c.num_encoder_layers=c.num_decoder_layers="decoder_layers",c.num_encoder_heads=c.num_decoder_heads="decoder_attention_heads",c.encoder_hidden_size=c.decoder_hidden_size="d_model";break;case"musicgen_decoder":c.num_encoder_layers=c.num_decoder_layers="num_hidden_layers",c.num_encoder_heads=c.num_decoder_heads="num_attention_heads",c.encoder_hidden_size=c.decoder_hidden_size="hidden_size";break;case"moonshine":c.num_decoder_layers="decoder_num_hidden_layers",c.num_decoder_heads="decoder_num_key_value_heads",c.num_encoder_layers="encoder_num_hidden_layers",c.num_encoder_heads="encoder_num_key_value_heads",c.encoder_hidden_size=c.decoder_hidden_size="hidden_size";break;case"vision-encoder-decoder":const m=i(d.decoder),B="num_decoder_layers"in m,f=(0,n.pick)(d,["model_type","is_encoder_decoder"]);return B?(f.num_decoder_layers=m.num_decoder_layers,f.num_decoder_heads=m.num_decoder_heads,f.decoder_hidden_size=m.decoder_hidden_size,f.num_encoder_layers=m.num_encoder_layers,f.num_encoder_heads=m.num_encoder_heads,f.encoder_hidden_size=m.encoder_hidden_size):(f.num_layers=m.num_layers,f.num_heads=m.num_heads,f.hidden_size=m.hidden_size),f}const A={...g,...(0,n.pick)(d,["model_type","multi_query","is_encoder_decoder"])};for(const m in c)A[m]=d[c[m]];return A}function o(d,c){if(d.model_type==="lfm2"){const g=c?.prefix??"past_key_values",A=g==="present"?"present":"past",m={},{layer_types:B,num_attention_heads:f,num_key_value_heads:h,hidden_size:P,conv_L_cache:_}=d,w=P/f,b=c?.batch_size??1;for(let v=0;v<B.length;++v)if(B[v]==="full_attention")for(const y of["key","value"])m[`${g}.${v}.${y}`]=[b,h,0,w];else if(B[v]==="conv")m[`${A}_conv.${v}`]=[b,P,_];else throw new Error(`Unsupported layer type: ${B[v]}`);return m}return l(d,c)}function l(d,{prefix:c="past_key_values",batch_size:g=1}={}){const A={},m=d.normalized_config;if(m.is_encoder_decoder&&"num_encoder_heads"in m&&"num_decoder_heads"in m){const B=m.encoder_dim_kv??m.encoder_hidden_size/m.num_encoder_heads,f=m.decoder_dim_kv??m.decoder_hidden_size/m.num_decoder_heads,h=[g,m.num_encoder_heads,0,B],P=[g,m.num_decoder_heads,0,f];for(let _=0;_<m.num_decoder_layers;++_)A[`${c}.${_}.encoder.key`]=h,A[`${c}.${_}.encoder.value`]=h,A[`${c}.${_}.decoder.key`]=P,A[`${c}.${_}.decoder.value`]=P}else{const B=m.num_heads,f=m.num_layers,h=m.dim_kv??m.hidden_size/(m.num_attention_heads??B);if(m.model_type==="falcon"){const P=[g*B,0,h];for(let _=0;_<f;++_)A[`${c}.${_}.key`]=P,A[`${c}.${_}.value`]=P}
2830else if(m.multi_query){const P=[g*B,0,2*h];for(let _=0;_<f;++_)A[`${c}.${_}.key_value`]=P}else if(m.model_type==="bloom"){const P=[g*B,h,0],_=[g*B,0,h];for(let w=0;w<f;++w)A[`${c}.${w}.key`]=P,A[`${c}.${w}.value`]=_}else if(m.model_type==="openelm")for(let P=0;P<f;++P){const _=[g,B[P],0,h];A[`${c}.${P}.key`]=_,A[`${c}.${P}.value`]=_}else{const P=[g,B,0,h];for(let _=0;_<f;++_)A[`${c}.${_}.key`]=P,A[`${c}.${_}.value`]=P}}return A}class u{model_type=null;is_encoder_decoder=!1;max_position_embeddings;"transformers.js_config";constructor(c){Object.assign(this,c),this.normalized_config=i(this)}static async from_pretrained(c,{progress_callback:g=null,config:A=null,cache_dir:m=null,local_files_only:B=!1,revision:f="main"}={}){A&&!(A instanceof u)&&(A=new u(A));const h=A??await a(c,{progress_callback:g,config:A,cache_dir:m,local_files_only:B,revision:f});return new this(h)}}class p{static async from_pretrained(...c){return u.from_pretrained(...c)}}}),
2830"./src/env.js":((e,t,r)=>{r.r(t),r.d(t,{apis:()=>f,env:()=>v});var n=r("?db59"),s=r("?383f"),a=r("?fa4b");const i="3.8.1",o=typeof window<"u"&&typeof window.document<"u",l=typeof self<"u"&&["DedicatedWorkerGlobalScope","ServiceWorkerGlobalScope","SharedWorkerGlobalScope"].includes(self.constructor?.name),u=typeof self<"u"&&"caches"in self,p=typeof navigator<"u"&&"gpu"in navigator,d=typeof navigator<"u"&&"ml"in navigator,c=typeof process<"u",g=c&&process?.release?.name==="node",A=!y(n),m=!y(s),B=typeof globalThis.Deno<"u",f=Object.freeze({IS_BROWSER_ENV:o,IS_WEBWORKER_ENV:l,IS_WEB_CACHE_AVAILABLE:u,IS_WEBGPU_AVAILABLE:p,IS_WEBNN_AVAILABLE:d,IS_PROCESS_AVAILABLE:c,IS_NODE_ENV:g,IS_FS_AVAILABLE:A,IS_PATH_AVAILABLE:m}),h=A&&m;let P="./";if(h){const $=Object({url:self.location.href}).url;$?P=s.dirname(s.dirname(a.fileURLToPath($))):typeof __dirname<"u"&&(P=s.dirname(__dirname))}const _=h?s.join(P,"/.cache/"):null,w="/models/",b=h?s.join(P,w):w,v={version:i,backends:{onnx:{}},allowRemoteModels:!0,remoteHost:"https://huggingface.co/",remotePathTemplate:"{model}/resolve/{revision}/",allowLocalModels:!(o||l),localModelPath:b,useFS:A,useBrowserCache:u&&!B,useFSCache:A,cacheDir:_,useCustomCache:!1,customCache:null};function y($){return Object.keys($).length===0}}),
vendor: 7,426 bytes, line 2830
2830"./src/generation/configuration_utils.js":((e,t,r)=>{r.r(t),r.d(t,{GenerationConfig:()=>s});var n=r("./src/utils/core.js");class s{max_length=20;max_new_tokens=null;min_length=0;min_new_tokens=null;early_stopping=!1;max_time=null;do_sample=!1;num_beams=1;num_beam_groups=1;penalty_alpha=null;use_cache=!0;temperature=1;top_k=50;top_p=1;typical_p=1;epsilon_cutoff=0;eta_cutoff=0;diversity_penalty=0;repetition_penalty=1;encoder_repetition_penalty=1;length_penalty=1;no_repeat_ngram_size=0;bad_words_ids=null;force_words_ids=null;renormalize_logits=!1;constraints=null;forced_bos_token_id=null;forced_eos_token_id=null;remove_invalid_values=!1;exponential_decay_length_penalty=null;suppress_tokens=null;streamer=null;begin_suppress_tokens=null;forced_decoder_ids=null;guidance_scale=null;num_return_sequences=1;output_attentions=!1;output_hidden_states=!1;output_scores=!1;return_dict_in_generate=!1;pad_token_id=null;bos_token_id=null;eos_token_id=null;encoder_no_repeat_ngram_size=0;decoder_start_token_id=null;generation_kwargs={};constructor(i){Object.assign(this,(0,n.pick)(i,Object.getOwnPropertyNames(this)))}}}),"./src/generation/logits_process.js":((e,t,r)=>{r.r(t),r.d(t,{ClassifierFreeGuidanceLogitsProcessor:()=>f,ForcedBOSTokenLogitsProcessor:()=>l,ForcedEOSTokenLogitsProcessor:()=>u,LogitsProcessor:()=>a,LogitsProcessorList:()=>o,LogitsWarper:()=>i,MinLengthLogitsProcessor:()=>A,MinNewTokensLengthLogitsProcessor:()=>m,NoBadWordsLogitsProcessor:()=>B,NoRepeatNGramLogitsProcessor:()=>c,RepetitionPenaltyLogitsProcessor:()=>g,SuppressTokensAtBeginLogitsProcessor:()=>p,TemperatureLogitsWarper:()=>h,TopKLogitsWarper:()=>_,TopPLogitsWarper:()=>P,WhisperTimeStampLogitsProcessor:()=>d});var n=r("./src/utils/generic.js");r("./src/utils/tensor.js");var s=r("./src/utils/maths.js");class a extends n.Callable{_call(b,v){throw Error("`_call` should be implemented in a subclass")}}class i extends n.Callable{_call(b,v){throw Error("`_call` should be implemented in a subclass")}}class o extends n.Callable{constructor(){super(),this.processors=[]}push(b){this.processors.push(b)}extend(b){this.processors.push(...b)}_call(b,v){let y=v;for(const $ of this.processors)y=$(b,y);return y}[Symbol.iterator](){return this.processors.values()}}class l extends a{constructor(b){super(),this.bos_token_id=b}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length===1){const $=v[y].data;$.fill(-1/0),$[this.bos_token_id]=0}return v}}class u extends a{constructor(b,v){super(),this.max_length=b,this.eos_token_id=Array.isArray(v)?v:[v]}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length===this.max_length-1){const $=v[y].data;$.fill(-1/0);for(const k of this.eos_token_id)$[k]=0}return v}}class p extends a{constructor(b,v){super(),this.begin_suppress_tokens=b,this.begin_index=v}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length===this.begin_index){const $=v[y].data;for(const k of this.begin_suppress_tokens)$[k]=-1/0}return v}}class d extends a{constructor(b,v){super(),this.eos_token_id=Array.isArray(b.eos_token_id)?b.eos_token_id[0]:b.eos_token_id,this.no_timestamps_token_id=b.no_timestamps_token_id,this.timestamp_begin=this.no_timestamps_token_id+1,this.begin_index=v.length,v.at(-1)===this.no_timestamps_token_id&&(this.begin_index-=1),this.max_initial_timestamp_index=b.max_initial_timestamp_index}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data;if($[this.no_timestamps_token_id]=-1/0,b[y].length===this.begin_index-1){$.fill(-1/0),$[this.timestamp_begin]=0;continue}const k=b[y].slice(this.begin_index),W=k.length>=1&&k[k.length-1]>=this.timestamp_begin,j=k.length<2||k[k.length-2]>=this.timestamp_begin;if(W&&(j?$.subarray(this.timestamp_begin).fill(-1/0):$.subarray(0,this.eos_token_id).fill(-1/0)),b[y].length===this.begin_index&&this.max_initial_timestamp_index!==null){const Q=this.timestamp_begin+this.max_initial_timestamp_index;$.subarray(Q+1).fill(-1/0)}const F=(0,s.log_softmax)($),R=Math.log(F.subarray(this.timestamp_begin).map(Math.exp).reduce((Q,ne)=>Q+ne)),L=(0,s.max)(F.subarray(0,this.timestamp_begin))[0];R>L&&$.subarray(0,this.timestamp_begin).fill(-1/0)}return v}}class c extends a{constructor(b){super(),this.no_repeat_ngram_size=b}getNgrams(b){const v=b.length,y=[];for(let k=0;k<v+1-this.no_repeat_ngram_size;++k){const W=[];for(let j=0;j<this.no_repeat_ngram_size;++j)W.push(b[k+j]);y.push(W.map(Number))}const $=new Map;for(const k of y){const W=k.slice(0,k.length-1),j=JSON.stringify(W),F=$.get(j)??[];F.push(k[k.length-1]),$.set(j,F)}return $}getGeneratedNgrams(b,v){const y=v.slice(v.length+1-this.no_repeat_ngram_size,v.length);return b.get(JSON.stringify(y.map(Number)))??[]}calcBannedNgramTokens(b){const v=[];if(b.length+1<this.no_repeat_ngram_size)return v;{const y=this.getNgrams(b);return this.getGeneratedNgrams(y,b)}}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data,k=this.calcBannedNgramTokens(b[y]);for(const W of k)$[W]=-1/0}return v}}class g extends a{constructor(b){super(),this.penalty=b}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data;for(const k of new Set(b[y])){const W=Number(k);$[W]<0?$[W]*=this.penalty:$[W]/=this.penalty}}return v}}class A extends a{constructor(b,v){super(),this.min_length=b,this.eos_token_id=Array.isArray(v)?v:[v]}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length<this.min_length){const $=v[y].data;for(const k of this.eos_token_id)$[k]=-1/0}return v}}class m extends a{constructor(b,v,y){super(),this.prompt_length_to_skip=b,this.min_new_tokens=v,this.eos_token_id=Array.isArray(y)?y:[y]}_call(b,v){for(let y=0;y<b.length;++y)if(b[y].length-this.prompt_length_to_skip<this.min_new_tokens){const k=v[y].data;for(const W of this.eos_token_id)k[W]=-1/0}return v}}class B extends a{constructor(b,v){super(),this.bad_words_ids=b,this.eos_token_id=Array.isArray(v)?v:[v]}_call(b,v){for(let y=0;y<b.length;++y){const $=v[y].data,k=b[y];for(const W of this.bad_words_ids){if(k.length<W.length-1)continue;let j=!0;for(let F=1;F<=W.length-1;++F)if(W.at(-F-1)!=k.at(-F)){j=!1;break}j&&($[W.at(-1)]=-1/0)}}return v}}class f extends a{constructor(b){if(super(),b<=1)throw new Error(`Require guidance scale >1 to use the classifier free guidance processor, got guidance scale ${b}.`);this.guidance_scale=b}_call(b,v){if(v.dims[0]!==2*b.length)throw new Error(`Logits should have twice the batch size of the input ids, the first half of batches corresponding to the conditional inputs, and the second half of batches corresponding to the unconditional inputs. Got batch size ${v.dims[0]} for the logits and ${b.length} for the input ids.`);const y=b.length,$=v.slice([0,y],null),k=v.slice([y,v.dims[0]],null);for(let W=0;W<k.data.length;++W)k.data[W]+=($.data[W]-k.data[W])*this.guidance_scale;return k}}class h extends i{constructor(b){super(),this.temperature=b}_call(b,v){const y=v.data;for(let $=0;$<y.length;++$)y[$]/=this.temperature;return v}}class P extends i{constructor(b,{filter_value:v=-1/0,min_tokens_to_keep:y=1}={}){if(super(),b<0||b>1)throw new Error(`\`top_p\` must be a float > 0 and < 1, but is ${b}`);if(!Number.isInteger(y)||y<1)throw new Error(`\`min_tokens_to_keep\` must be a positive integer, but is ${y}`);this.top_p=b,this.filter_value=v,this.min_tokens_to_keep=y}}class _ extends i{constructor(b,{filter_value:v=-1/0,min_tokens_to_keep:y=1}={}){if(super(),!Number.isInteger(b)||b<0)throw new Error(`\`top_k\` must be a positive integer, but is ${b}`);this.top_k=Math.max(b,y),this.filter_value=v}}}),
2830"./src/generation/logits_sampler.js":((e,t,r)=>{r.r(t),r.d(t,{LogitsSampler:()=>i});var n=r("./src/utils/generic.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/maths.js");r("./src/generation/configuration_utils.js");class i extends n.Callable{constructor(d){super(),this.generation_config=d}async _call(d){return this.sample(d)}async sample(d){throw Error("sample should be implemented in subclasses.")}getLogits(d,c){let g=d.dims.at(-1),A=d.data;if(c===-1)A=A.slice(-g);else{let m=c*g;A=A.slice(m,m+g)}return A}randomSelect(d){let c=0;for(let A=0;A<d.length;++A)c+=d[A];let g=Math.random()*c;for(let A=0;A<d.length;++A)if(g-=d[A],g<=0)return A;return 0}static getSampler(d){if(d.do_sample)return new l(d);if(d.num_beams>1)return new u(d);if(d.num_return_sequences>1)throw Error(`num_return_sequences has to be 1 when doing greedy search, but is ${d.num_return_sequences}.`);return new o(d)}}class o extends i{async sample(d){const c=(0,a.max)(d.data)[1];return[[BigInt(c),0]]}}class l extends i{async sample(d){let c=d.dims.at(-1);this.generation_config.top_k>0&&(c=Math.min(this.generation_config.top_k,c));const[g,A]=await(0,s.topk)(d,c),m=(0,a.softmax)(g.data);return Array.from({length:this.generation_config.num_beams},()=>{const B=this.randomSelect(m);return[A.data[B],Math.log(m[B])]})}}class u extends i{async sample(d){let c=d.dims.at(-1);this.generation_config.top_k>0&&(c=Math.min(this.generation_config.top_k,c));const[g,A]=await(0,s.topk)(d,c),m=(0,a.softmax)(g.data);return Array.from({length:this.generation_config.num_beams},(B,f)=>[A.data[f],Math.log(m[f])])}}}),
2830"./src/generation/stopping_criteria.js":((e,t,r)=>{r.r(t),r.d(t,{EosTokenCriteria:()=>o,InterruptableStoppingCriteria:()=>l,MaxLengthCriteria:()=>i,StoppingCriteria:()=>s,StoppingCriteriaList:()=>a});var n=r("./src/utils/generic.js");class s extends n.Callable{_call(p,d){throw Error("StoppingCriteria needs to be subclassed")}}class a extends n.Callable{constructor(){super(),this.criteria=[]}push(p){this.criteria.push(p)}extend(p){p instanceof a?p=p.criteria:p instanceof s&&(p=[p]),this.criteria.push(...p)}_call(p,d){const c=new Array(p.length).fill(!1);for(const g of this.criteria){const A=g(p,d);for(let m=0;m<c.length;++m)c[m]||=A[m]}return c}[Symbol.iterator](){return this.criteria.values()}}class i extends s{constructor(p,d=null){super(),this.max_length=p,this.max_position_embeddings=d}_call(p){return p.map(d=>d.length>=this.max_length)}}class o extends s{constructor(p){super(),Array.isArray(p)||(p=[p]),this.eos_token_id=p}_call(p,d){return p.map(c=>{const g=c.at(-1);return this.eos_token_id.some(A=>g==A)})}}class l extends s{constructor(){super(),this.interrupted=!1}interrupt(){this.interrupted=!0}reset(){this.interrupted=!1}_call(p,d){return new Array(p.length).fill(this.interrupted)}}}),
2830"./src/generation/streamers.js":((e,t,r)=>{r.r(t),r.d(t,{BaseStreamer:()=>i,TextStreamer:()=>l,WhisperTextStreamer:()=>u});var n=r("./src/utils/core.js"),s=r("./src/tokenizers.js"),a=r("./src/env.js");class i{put(d){throw Error("Not implemented")}end(){throw Error("Not implemented")}}const o=a.apis.IS_PROCESS_AVAILABLE?p=>process.stdout.write(p):p=>console.log(p);class l extends i{constructor(d,{skip_prompt:c=!1,callback_function:g=null,token_callback_function:A=null,skip_special_tokens:m=!0,decode_kwargs:B={},...f}={}){super(),this.tokenizer=d,this.skip_prompt=c,this.callback_function=g??o,this.token_callback_function=A,this.decode_kwargs={skip_special_tokens:m,...B,...f},this.token_cache=[],this.print_len=0,this.next_tokens_are_prompt=!0}put(d){if(d.length>1)throw Error("TextStreamer only supports batch size of 1");const c=this.next_tokens_are_prompt;if(c&&(this.next_tokens_are_prompt=!1,this.skip_prompt))return;const g=d[0];this.token_callback_function?.(g),this.token_cache=(0,n.mergeArrays)(this.token_cache,g);const A=this.tokenizer.decode(this.token_cache,this.decode_kwargs);let m;c||A.endsWith(`
2831`)?(m=A.slice(this.print_len),this.token_cache=[],this.print_len=0):A.length>0&&(0,s.is_chinese_char)(A.charCodeAt(A.length-1))?(m=A.slice(this.print_len),this.print_len+=m.length):(m=A.slice(this.print_len,A.lastIndexOf(" ")+1),this.print_len+=m.length),this.on_finalized_text(m,!1)}end(){let d;this.token_cache.length>0?(d=this.tokenizer.decode(this.token_cache,this.decode_kwargs).slice(this.print_len),this.token_cache=[],this.print_len=0):d="",this.next_tokens_are_prompt=!0,this.on_finalized_text(d,!0)}on_finalized_text(d,c){d.length>0&&this.callback_function?.(d),c&&this.callback_function===o&&a.apis.IS_PROCESS_AVAILABLE&&this.callback_function?.(`
2832`)}}class u extends l{constructor(d,{skip_prompt:c=!1,callback_function:g=null,token_callback_function:A=null,on_chunk_start:m=null,on_chunk_end:B=null,on_finalize:f=null,time_precision:h=.02,skip_special_tokens:P=!0,decode_kwargs:_={}}={}){super(d,{skip_prompt:c,skip_special_tokens:P,callback_function:g,token_callback_function:A,decode_kwargs:_}),this.timestamp_begin=d.timestamp_begin,this.on_chunk_start=m,this.on_chunk_end=B,this.on_finalize=f,this.time_precision=h,this.waiting_for_timestamp=!1}put(d){if(d.length>1)throw Error("WhisperTextStreamer only supports batch size of 1");const c=d[0];if(c.length===1){const g=Number(c[0])-this.timestamp_begin;if(g>=0){const A=g*this.time_precision;this.waiting_for_timestamp?this.on_chunk_end?.(A):this.on_chunk_start?.(A),this.waiting_for_timestamp=!this.waiting_for_timestamp,this.token_callback_function?.(c);return}}return super.put(d)}end(){super.end(),this.on_finalize?.()}}}),
2832"./src/models.js":((e,t,r)=>{r.r(t),r.d(t,{ASTForAudioClassification:()=>na,ASTModel:()=>ci,ASTPreTrainedModel:()=>ui,AlbertForMaskedLM:()=>st,AlbertForQuestionAnswering:()=>pt,AlbertForSequenceClassification:()=>ut,AlbertModel:()=>ct,AlbertPreTrainedModel:()=>Fe,ArceeForCausalLM:()=>gu,ArceeModel:()=>pu,ArceePreTrainedModel:()=>nl,AutoModel:()=>Wz,AutoModelForAudioClassification:()=>c8,AutoModelForAudioFrameClassification:()=>p8,AutoModelForAudioTextToText:()=>b8,AutoModelForCTC:()=>u8,AutoModelForCausalLM:()=>Zz,AutoModelForDepthEstimation:()=>m8,AutoModelForDocumentQuestionAnswering:()=>g8,AutoModelForImageClassification:()=>r8,AutoModelForImageFeatureExtraction:()=>w8,AutoModelForImageMatting:()=>A8,AutoModelForImageSegmentation:()=>n8,AutoModelForImageTextToText:()=>y8,AutoModelForImageToImage:()=>h8,AutoModelForMaskGeneration:()=>l8,AutoModelForMaskedLM:()=>Jz,AutoModelForNormalEstimation:()=>f8,AutoModelForObjectDetection:()=>i8,AutoModelForPoseEstimation:()=>_8,AutoModelForQuestionAnswering:()=>e8,AutoModelForSemanticSegmentation:()=>s8,AutoModelForSeq2SeqLM:()=>Hz,AutoModelForSequenceClassification:()=>Vz,AutoModelForSpeechSeq2Seq:()=>Kz,AutoModelForTextToSpectrogram:()=>qz,AutoModelForTextToWaveform:()=>Xz,AutoModelForTokenClassification:()=>Qz,AutoModelForUniversalSegmentation:()=>a8,AutoModelForVision2Seq:()=>t8,AutoModelForXVector:()=>d8,AutoModelForZeroShotObjectDetection:()=>o8,BartForConditionalGeneration:()=>Yr,BartForSequenceClassification:()=>Wr,BartModel:()=>Jn,BartPretrainedModel:()=>cn,BaseModelOutput:()=>be,BeitForImageClassification:()=>XT,BeitModel:()=>qT,BeitPreTrainedModel:()=>om,BertForMaskedLM:()=>ze,BertForQuestionAnswering:()=>Be,BertForSequenceClassification:()=>ve,BertForTokenClassification:()=>Ve,BertModel:()=>Se,BertPreTrainedModel:()=>Ce,BlenderbotForConditionalGeneration:()=>rn,BlenderbotModel:()=>Nr,BlenderbotPreTrainedModel:()=>dn,BlenderbotSmallForConditionalGeneration:()=>wa,BlenderbotSmallModel:()=>zn,BlenderbotSmallPreTrainedModel:()=>zr,BloomForCausalLM:()=>M,BloomModel:()=>fo,BloomPreTrainedModel:()=>Ru,CLIPModel:()=>mi,CLIPPreTrainedModel:()=>hs,CLIPSegForImageSegmentation:()=>bi,CLIPSegModel:()=>yi,CLIPSegPreTrainedModel:()=>la,CLIPTextModel:()=>Ao,CLIPTextModelWithProjection:()=>fi,CLIPVisionModel:()=>rl,CLIPVisionModelWithProjection:()=>ho,CamembertForMaskedLM:()=>_e,CamembertForQuestionAnswering:()=>Et,CamembertForSequenceClassification:()=>Oe,CamembertForTokenClassification:()=>gt,CamembertModel:()=>le,CamembertPreTrainedModel:()=>ae,CausalLMOutput:()=>xi,CausalLMOutputWithPast:()=>M8,ChineseCLIPModel:()=>ia,ChineseCLIPPreTrainedModel:()=>Kn,ClapAudioModelWithProjection:()=>A2,ClapModel:()=>p2,ClapPreTrainedModel:()=>Fd,ClapTextModelWithProjection:()=>g2,CodeGenForCausalLM:()=>Qe,CodeGenModel:()=>Le,CodeGenPreTrainedModel:()=>he,CohereForCausalLM:()=>ud,CohereModel:()=>ld,CoherePreTrainedModel:()=>Tu,ConvBertForMaskedLM:()=>kt,ConvBertForQuestionAnswering:()=>cs,ConvBertForSequenceClassification:()=>Er,ConvBertForTokenClassification:()=>us,ConvBertModel:()=>Ms,ConvBertPreTrainedModel:()=>Nn,ConvNextForImageClassification:()=>WC,ConvNextModel:()=>UC,ConvNextPreTrainedModel:()=>Pm,ConvNextV2ForImageClassification:()=>QC,ConvNextV2Model:()=>VC,ConvNextV2PreTrainedModel:()=>Mm,DFineForObjectDetection:()=>cC,DFineModel:()=>uC,DFinePreTrainedModel:()=>gm,DINOv3ConvNextModel:()=>t$,DINOv3ConvNextPreTrainedModel:()=>e$,DINOv3ViTModel:()=>JC,DINOv3ViTPreTrainedModel:()=>ZC,DPTForDepthEstimation:()=>xC,DPTModel:()=>BC,DPTPreTrainedModel:()=>wm,DacDecoderModel:()=>rS,DacDecoderOutput:()=>J2,DacEncoderModel:()=>tS,DacEncoderOutput:()=>Z2,DacModel:()=>eS,DacPreTrainedModel:()=>Wd,DebertaForMaskedLM:()=>lt,DebertaForQuestionAnswering:()=>Hr,DebertaForSequenceClassification:()=>St,DebertaForTokenClassification:()=>rr,DebertaModel:()=>Ot,DebertaPreTrainedModel:()=>at,DebertaV2ForMaskedLM:()=>ln,DebertaV2ForQuestionAnswering:()=>ps,DebertaV2ForSequenceClassification:()=>vs,DebertaV2ForTokenClassification:()=>En,DebertaV2Model:()=>yr,DebertaV2PreTrainedModel:()=>kr,DecisionTransformerModel:()=>O2,DecisionTransformerPreTrainedModel:()=>k2,DeiTForImageClassification:()=>hC,DeiTModel:()=>AC,DeiTPreTrainedModel:()=>hm,DepthAnythingForDepthEstimation:()=>DC,DepthAnythingPreTrainedModel:()=>EC,DepthProForDepthEstimation:()=>SC,DepthProPreTrainedModel:()=>$C,DetrForObjectDetection:()=>JT,DetrForSegmentation:()=>lm,DetrModel:()=>ZT,DetrObjectDetectionOutput:()=>um,DetrPreTrainedModel:()=>Cd,DetrSegmentationOutput:()=>eC,Dinov2ForImageClassification:()=>KC,Dinov2Model:()=>HC,Dinov2PreTrainedModel:()=>vm,Dinov2WithRegistersForImageClassification:()=>XC,Dinov2WithRegistersModel:()=>qC,Dinov2WithRegistersPreTrainedModel:()=>Bm,DistilBertForMaskedLM:()=>jn,DistilBertForQuestionAnswering:()=>Rr,DistilBertForSequenceClassification:()=>qr,DistilBertForTokenClassification:()=>vr,DistilBertModel:()=>fn,DistilBertPreTrainedModel:()=>Kr,DonutSwinModel:()=>jC,DonutSwinPreTrainedModel:()=>NC,EdgeTamModel:()=>p$,EfficientNetForImageClassification:()=>b2,EfficientNetModel:()=>y2,EfficientNetPreTrainedModel:()=>
2832Lm,ElectraForMaskedLM:()=>ds,ElectraForQuestionAnswering:()=>X,ElectraForSequenceClassification:()=>S,ElectraForTokenClassification:()=>ie,ElectraModel:()=>Ft,ElectraPreTrainedModel:()=>pr,Ernie4_5ForCausalLM:()=>o2,Ernie4_5Model:()=>i2,Ernie4_5PreTrainedModel:()=>km,EsmForMaskedLM:()=>Bs,EsmForSequenceClassification:()=>xs,EsmForTokenClassification:()=>Es,EsmModel:()=>ea,EsmPreTrainedModel:()=>Zn,ExaoneForCausalLM:()=>Mu,ExaoneModel:()=>Pu,ExaonePreTrainedModel:()=>ll,FalconForCausalLM:()=>d2,FalconModel:()=>c2,FalconPreTrainedModel:()=>Gm,FastViTForImageClassification:()=>LT,FastViTModel:()=>FT,FastViTPreTrainedModel:()=>rm,Florence2ForConditionalGeneration:()=>el,Florence2PreTrainedModel:()=>Jo,GLPNForDepthEstimation:()=>YC,GLPNModel:()=>RC,GLPNPreTrainedModel:()=>bm,GPT2LMHeadModel:()=>Pi,GPT2Model:()=>Cs,GPT2PreTrainedModel:()=>Zt,GPTBigCodeForCausalLM:()=>ee,GPTBigCodeModel:()=>K,GPTBigCodePreTrainedModel:()=>Y,GPTJForCausalLM:()=>C,GPTJModel:()=>x,GPTJPreTrainedModel:()=>ja,GPTNeoForCausalLM:()=>Mi,GPTNeoModel:()=>Ea,GPTNeoPreTrainedModel:()=>xa,GPTNeoXForCausalLM:()=>Na,GPTNeoXModel:()=>vi,GPTNeoXPreTrainedModel:()=>Ya,Gemma2ForCausalLM:()=>gd,Gemma2Model:()=>pd,Gemma2PreTrainedModel:()=>$u,Gemma3ForCausalLM:()=>fd,Gemma3Model:()=>md,Gemma3PreTrainedModel:()=>ku,Gemma3nForConditionalGeneration:()=>hi,Gemma3nPreTrainedModel:()=>As,GemmaForCausalLM:()=>dd,GemmaModel:()=>cd,GemmaPreTrainedModel:()=>Cu,GlmForCausalLM:()=>bu,GlmModel:()=>yu,GlmPreTrainedModel:()=>ol,GraniteForCausalLM:()=>ad,GraniteModel:()=>sd,GraniteMoeHybridForCausalLM:()=>od,GraniteMoeHybridModel:()=>id,GraniteMoeHybridPreTrainedModel:()=>Iu,GranitePreTrainedModel:()=>Du,GroundingDinoForObjectDetection:()=>n$,GroundingDinoPreTrainedModel:()=>r$,GroupViTModel:()=>zT,GroupViTPreTrainedModel:()=>GT,HeliumForCausalLM:()=>wu,HeliumModel:()=>_u,HeliumPreTrainedModel:()=>il,HieraForImageClassification:()=>fC,HieraModel:()=>mC,HieraPreTrainedModel:()=>mm,HubertForCTC:()=>L$,HubertForSequenceClassification:()=>R$,HubertModel:()=>F$,HubertPreTrainedModel:()=>$z,IJepaForImageClassification:()=>Ir,IJepaModel:()=>ir,IJepaPreTrainedModel:()=>Qt,Idefics3ForConditionalGeneration:()=>Pa,Idefics3PreTrainedModel:()=>tl,ImageMattingOutput:()=>SS,JAISLMHeadModel:()=>Wt,JAISModel:()=>Ra,JAISPreTrainedModel:()=>Ut,JinaCLIPModel:()=>va,JinaCLIPPreTrainedModel:()=>oa,JinaCLIPTextModel:()=>Vn,JinaCLIPVisionModel:()=>Ba,Lfm2ForCausalLM:()=>hu,Lfm2Model:()=>Au,Lfm2PreTrainedModel:()=>sl,LiteWhisperForConditionalGeneration:()=>qo,Llama4ForCausalLM:()=>mr,Llama4PreTrainedModel:()=>sr,LlamaForCausalLM:()=>Lt,LlamaModel:()=>wt,LlamaPreTrainedModel:()=>ot,LlavaForConditionalGeneration:()=>gi,LlavaOnevisionForConditionalGeneration:()=>Xo,LlavaPreTrainedModel:()=>go,LlavaQwen2ForCausalLM:()=>Ai,LongT5ForConditionalGeneration:()=>Ar,LongT5Model:()=>gr,LongT5PreTrainedModel:()=>un,M2M100ForConditionalGeneration:()=>f$,M2M100Model:()=>m$,M2M100PreTrainedModel:()=>Dm,MBartForCausalLM:()=>es,MBartForConditionalGeneration:()=>gs,MBartForSequenceClassification:()=>Xr,MBartModel:()=>Wn,MBartPreTrainedModel:()=>yn,MPNetForMaskedLM:()=>Ds,MPNetForQuestionAnswering:()=>ye,MPNetForSequenceClassification:()=>ra,MPNetForTokenClassification:()=>ii,MPNetModel:()=>ta,MPNetPreTrainedModel:()=>Dr,MT5ForConditionalGeneration:()=>Un,MT5Model:()=>Dn,MT5PreTrainedModel:()=>Br,MarianMTModel:()=>h$,MarianModel:()=>A$,MarianPreTrainedModel:()=>Em,MaskFormerForInstanceSegmentation:()=>LC,MaskFormerModel:()=>FC,MaskFormerPreTrainedModel:()=>ym,MaskedLMOutput:()=>In,Metric3DForDepthEstimation:()=>OC,Metric3DPreTrainedModel:()=>kC,Metric3Dv2ForDepthEstimation:()=>zC,Metric3Dv2PreTrainedModel:()=>GC,MgpstrForSceneTextRecognition:()=>R2,MgpstrModelOutput:()=>F2,MgpstrPreTrainedModel:()=>L2,MimiDecoderModel:()=>X2,MimiDecoderOutput:()=>H2,MimiEncoderModel:()=>q2,MimiEncoderOutput:()=>Q2,MimiModel:()=>K2,MimiPreTrainedModel:()=>Ud,Ministral3ForCausalLM:()=>a2,Ministral3Model:()=>s2,Ministral3PreTrainedModel:()=>Sm,MinistralForCausalLM:()=>n2,MinistralModel:()=>r2,MinistralPreTrainedModel:()=>$m,Mistral3ForConditionalGeneration:()=>za,MistralForCausalLM:()=>t2,MistralModel:()=>e2,MistralPreTrainedModel:()=>Cm,MobileBertForMaskedLM:()=>Ke,MobileBertForQuestionAnswering:()=>ft,MobileBertForSequenceClassification:()=>Ze,MobileBertModel:()=>wn,MobileBertPreTrainedModel:()=>_n,MobileLLMForCausalLM:()=>Bu,MobileLLMModel:()=>vu,MobileLLMPreTrainedModel:()=>ul,MobileNetV1ForImageClassification:()=>M2,MobileNetV1ForSemanticSegmentation:()=>v2,MobileNetV1Model:()=>P2,MobileNetV1PreTrainedModel:()=>Rd,MobileNetV2ForImageClassification:()=>x2,MobileNetV2ForSemanticSegmentation:()=>E2,MobileNetV2Model:()=>B2,MobileNetV2PreTrainedModel:()=>Yd,MobileNetV3ForImageClassification:()=>I2,MobileNetV3ForSemanticSegmentation:()=>T2,MobileNetV3Model:()=>D2,MobileNetV3PreTrainedModel:()=>Nd,MobileNetV4ForImageClassification:()=>$2,MobileNetV4ForSemanticSegmentation:()=>S2,MobileNetV4Model:()=>C2,MobileNetV4PreTrainedModel:()=>jd,MobileViTForImageClassification:()=>jT,MobileViTModel:()=>NT,MobileViTPreTrainedModel:()=>nm,MobileViTV2ForImageClassification:()=>WT,MobileViTV2Model:()=>UT,MobileViTV2PreTrainedModel:()=>sm,ModelOutput:()=>we,ModernBertDecoderForCausalLM:()=>tn,ModernBertDecoderModel:()=>Vt,ModernBertDecoderPreTrainedModel:()=>hr,ModernBertForMaskedLM:()=>We,ModernBertForSequenceClassification:()=>yt,ModernBertForTokenClassification:()=>Mt,ModernBertModel:()=>Xe,ModernBertPreTrainedModel:()=>At,Moondream1ForConditionalGeneration:()=>Zo,MoonshineForConditionalGeneration:()=>Oa,MoonshineModel:()=>po,MoonshinePreTrainedModel:()=>co,MptForCausalLM:()=>G,MptModel:()=>z,MptPreTrainedModel:()=>T,MultiModalityCausalLM:()=>z2,MultiModalityPreTrainedModel:()=>G2,MusicgenForCausalLM:()=>Gz,MusicgenForConditionalGeneration:()=>Ym,MusicgenModel:()=>Oz,MusicgenPreTrainedModel:()=>Rm,NanoChatForCausalLM:()=>mo,NanoChatModel:()=>$s,NanoChatPreTrainedModel:()=>nn,NeoBertForMaskedLM:()=>Ue,NeoBertForQuestionAnswering:()=>dt,NeoBertForSequenceClassification:()=>ht,NeoBertForTokenClassification:()=>He,NeoBertModel:()=>rt,NeoBertPreTrainedModel:()=>ke,NomicBertModel:()=>ar,NomicBertPreTrainedModel:()=>hn,OPTForCausalLM:()=>me,OPTModel:()=>ue,OPTPreTrainedModel:()=>Z,Olmo2ForCausalLM:()=>nd,Olmo2Model:()=>dl,Olmo2PreTrainedModel:()=>Eu,OlmoForCausalLM:()=>Ss,OlmoModel:()=>xu,OlmoPreTrainedModel:()=>cl,OpenELMForCausalLM:()=>wd,OpenELMModel:()=>_d,OpenELMPreTrainedModel:()=>Ou,OwlViTForObjectDetection:()=>QT,OwlViTModel:()=>VT,OwlViTPreTrainedModel:()=>am,Owlv2ForObjectDetection:()=>KT,Owlv2Model:()=>HT,Owlv2PreTrainedModel:()=>im,PaliGemmaForConditionalGeneration:()=>Ga,PaliGemmaPreTrainedModel:()=>Ts,ParakeetForCTC:()=>M$,ParakeetPreTrainedModel:()=>P$,PatchTSMixerForPrediction:()=>U2,PatchTSMixerModel:()=>j2,PatchTSMixerPreTrainedModel:()=>jm,PatchTSTForPrediction:()=>N2,PatchTSTModel:()=>Y2,PatchTSTPreTrainedModel:()=>Nm,Phi3ForCausalLM:()=>Id,Phi3Model:()=>Dd,Phi3PreTrainedModel:()=>Lu,Phi3VForCausalLM:()=>La,Phi3VPreTrainedModel:()=>Fa,PhiForCausalLM:()=>Ed,PhiModel:()=>xd,PhiPreTrainedModel:()=>Fu,PreTrainedModel:()=>H,PretrainedMixin:()=>Tr,PvtForImageClassification:()=>pl,PvtModel:()=>Td,PvtPreTrainedModel:()=>_o,PyAnnoteForAudioFrameClassification:()=>B$,PyAnnoteModel:()=>v$,PyAnnotePreTrainedModel:()=>Im,QuestionAnsweringModelOutput:()=>Fn,Qwen2ForCausalLM:()=>
2832bd,Qwen2Model:()=>yd,Qwen2PreTrainedModel:()=>Gu,Qwen2VLForConditionalGeneration:()=>Bd,Qwen2VLPreTrainedModel:()=>vd,Qwen3ForCausalLM:()=>Md,Qwen3Model:()=>Pd,Qwen3PreTrainedModel:()=>zu,RFDetrForObjectDetection:()=>oC,RFDetrModel:()=>iC,RFDetrObjectDetectionOutput:()=>lC,RFDetrPreTrainedModel:()=>pm,RTDetrForObjectDetection:()=>rC,RTDetrModel:()=>tC,RTDetrObjectDetectionOutput:()=>Yu,RTDetrPreTrainedModel:()=>cm,RTDetrV2ForObjectDetection:()=>sC,RTDetrV2Model:()=>nC,RTDetrV2ObjectDetectionOutput:()=>aC,RTDetrV2PreTrainedModel:()=>dm,ResNetForImageClassification:()=>wC,ResNetModel:()=>_C,ResNetPreTrainedModel:()=>fm,RoFormerForMaskedLM:()=>fa,RoFormerForQuestionAnswering:()=>mn,RoFormerForSequenceClassification:()=>_a,RoFormerForTokenClassification:()=>Ur,RoFormerModel:()=>ma,RoFormerPreTrainedModel:()=>On,RobertaForMaskedLM:()=>Yo,RobertaForQuestionAnswering:()=>jo,RobertaForSequenceClassification:()=>No,RobertaForTokenClassification:()=>io,RobertaModel:()=>ao,RobertaPreTrainedModel:()=>Is,Sam2ImageSegmentationOutput:()=>c$,Sam2Model:()=>kd,Sam2PreTrainedModel:()=>d$,Sam3TrackerModel:()=>g$,SamImageSegmentationOutput:()=>u$,SamModel:()=>l$,SamPreTrainedModel:()=>o$,SapiensForDepthEstimation:()=>TC,SapiensForNormalEstimation:()=>CC,SapiensForSemanticSegmentation:()=>IC,SapiensPreTrainedModel:()=>Sd,SegformerForImageClassification:()=>m2,SegformerForSemanticSegmentation:()=>f2,SegformerModel:()=>kz,SegformerPreTrainedModel:()=>Ld,Seq2SeqLMOutput:()=>P8,SequenceClassifierOutput:()=>Ht,SiglipModel:()=>wi,SiglipPreTrainedModel:()=>_i,SiglipTextModel:()=>Ma,SiglipVisionModel:()=>vt,SmolLM3ForCausalLM:()=>fu,SmolLM3Model:()=>mu,SmolLM3PreTrainedModel:()=>al,SmolVLMForConditionalGeneration:()=>aa,SnacDecoderModel:()=>aS,SnacEncoderModel:()=>sS,SnacModel:()=>nS,SnacPreTrainedModel:()=>Vd,SpeechT5ForSpeechToText:()=>H$,SpeechT5ForTextToSpeech:()=>K$,SpeechT5HifiGan:()=>q$,SpeechT5Model:()=>Sz,SpeechT5PreTrainedModel:()=>zd,SqueezeBertForMaskedLM:()=>de,SqueezeBertForQuestionAnswering:()=>xe,SqueezeBertForSequenceClassification:()=>pe,SqueezeBertModel:()=>te,SqueezeBertPreTrainedModel:()=>O,StableLmForCausalLM:()=>w2,StableLmModel:()=>_2,StableLmPreTrainedModel:()=>Fm,Starcoder2ForCausalLM:()=>u2,Starcoder2Model:()=>l2,Starcoder2PreTrainedModel:()=>Om,StyleTextToSpeech2Model:()=>Q$,StyleTextToSpeech2PreTrainedModel:()=>V$,SupertonicForConditionalGeneration:()=>Tm,SupertonicPreTrainedModel:()=>X$,Swin2SRForImageSuperResolution:()=>vC,Swin2SRModel:()=>MC,Swin2SRPreTrainedModel:()=>_m,SwinForImageClassification:()=>bC,SwinForSemanticSegmentation:()=>PC,SwinModel:()=>yC,SwinPreTrainedModel:()=>$d,T5ForConditionalGeneration:()=>Or,T5Model:()=>jt,T5PreTrainedModel:()=>Xt,TableTransformerForObjectDetection:()=>pC,TableTransformerModel:()=>dC,TableTransformerObjectDetectionOutput:()=>gC,TableTransformerPreTrainedModel:()=>Am,TokenClassifierOutput:()=>Pn,TrOCRForCausalLM:()=>J$,TrOCRPreTrainedModel:()=>Z$,UltravoxModel:()=>Um,UltravoxPreTrainedModel:()=>W2,UniSpeechForCTC:()=>I$,UniSpeechForSequenceClassification:()=>T$,UniSpeechModel:()=>D$,UniSpeechPreTrainedModel:()=>Od,UniSpeechSatForAudioFrameClassification:()=>k$,UniSpeechSatForCTC:()=>$$,UniSpeechSatForSequenceClassification:()=>S$,UniSpeechSatModel:()=>C$,UniSpeechSatPreTrainedModel:()=>Nu,VaultGemmaForCausalLM:()=>hd,VaultGemmaModel:()=>Ad,VaultGemmaPreTrainedModel:()=>Su,ViTForImageClassification:()=>mt,ViTMAEModel:()=>ST,ViTMAEPreTrainedModel:()=>$T,ViTMSNForImageClassification:()=>OT,ViTMSNModel:()=>kT,ViTMSNPreTrainedModel:()=>tm,ViTModel:()=>it,ViTPreTrainedModel:()=>Ge,VisionEncoderDecoderModel:()=>pi,VitMatteForImageMatting:()=>YT,VitMattePreTrainedModel:()=>RT,VitPoseForPoseEstimation:()=>ua,VitPosePreTrainedModel:()=>Gr,VitsModel:()=>zm,VitsModelOutput:()=>kS,VitsPreTrainedModel:()=>h2,VoxtralForConditionalGeneration:()=>V2,Wav2Vec2BertForCTC:()=>G$,Wav2Vec2BertForSequenceClassification:()=>z$,Wav2Vec2BertModel:()=>O$,Wav2Vec2BertPreTrainedModel:()=>Gd,Wav2Vec2ForAudioFrameClassification:()=>b$,Wav2Vec2ForCTC:()=>w$,Wav2Vec2ForSequenceClassification:()=>y$,Wav2Vec2Model:()=>_$,Wav2Vec2PreTrainedModel:()=>Bi,WavLMForAudioFrameClassification:()=>W$,WavLMForCTC:()=>N$,WavLMForSequenceClassification:()=>j$,WavLMForXVector:()=>U$,WavLMModel:()=>Y$,WavLMPreTrainedModel:()=>gl,WeSpeakerResNetModel:()=>E$,WeSpeakerResNetPreTrainedModel:()=>x$,WhisperForConditionalGeneration:()=>di,WhisperModel:()=>uo,WhisperPreTrainedModel:()=>sa,XLMForQuestionAnswering:()=>Ho,XLMForSequenceClassification:()=>Vo,XLMForTokenClassification:()=>Qo,XLMModel:()=>Uo,XLMPreTrainedModel:()=>ya,XLMRobertaForMaskedLM:()=>oi,XLMRobertaForQuestionAnswering:()=>Ko,XLMRobertaForSequenceClassification:()=>li,XLMRobertaForTokenClassification:()=>
2832lo,XLMRobertaModel:()=>oo,XLMRobertaPreTrainedModel:()=>ba,XLMWithLMHeadModel:()=>Wo,XVectorOutput:()=>$S,YolosForObjectDetection:()=>a$,YolosModel:()=>s$,YolosObjectDetectionOutput:()=>i$,YolosPreTrainedModel:()=>xm});var n=r("./src/configs.js"),s=r("./src/backends/onnx.js"),a=r("./src/utils/dtypes.js"),i=r("./src/utils/generic.js"),o=r("./src/utils/core.js"),l=r("./src/utils/hub.js"),u=r("./src/utils/constants.js"),p=r("./src/generation/logits_process.js"),d=r("./src/generation/configuration_utils.js"),c=r("./src/utils/tensor.js"),g=r("./src/utils/image.js"),A=r("./src/utils/maths.js"),m=r("./src/generation/stopping_criteria.js"),B=r("./src/generation/logits_sampler.js"),f=r("./src/env.js"),h=r("./src/models/whisper/generation_whisper.js"),P=r("./src/models/whisper/common_whisper.js");const _={EncoderOnly:0,EncoderDecoder:1,Seq2Seq:2,Vision2Seq:3,DecoderOnly:4,MaskGeneration:5,ImageTextToText:6,Musicgen:7,MultiModality:8,Phi3V:9,AudioTextToText:10,AutoEncoder:11,ImageAudioTextToText:12,Supertonic:13},w=new Map,b=new Map,v=new Map;async function y(D,I,J){let Ae=J.config?.["transformers.js_config"]??{},Pe=J.device??Ae.device;Pe&&typeof Pe!="string"&&(Pe.hasOwnProperty(I)?Pe=Pe[I]:(console.warn(`device not specified for "${I}". Using the default device.`),Pe=null));const Ee=Pe??(f.apis.IS_NODE_ENV?"cpu":"wasm"),Re=(0,s.deviceToExecutionProviders)(Ee),qe=Ae.device_config??{};qe.hasOwnProperty(Ee)&&(Ae={...Ae,...qe[Ee]});let nt=J.dtype??Ae.dtype;if(typeof nt!="string"&&(nt&&nt.hasOwnProperty(I)?nt=nt[I]:(nt=a.DEFAULT_DEVICE_DTYPE_MAPPING[Ee]??a.DATA_TYPES.fp32,console.warn(`dtype not specified for "${I}". Using the default dtype (${nt}) for this device (${Ee}).`))),nt===a.DATA_TYPES.auto){let nr=Ae.dtype;typeof nr!="string"&&(nr=nr?.[I]),nr&&nr!==a.DATA_TYPES.auto&&a.DATA_TYPES.hasOwnProperty(nr)?nt=nr:nt=a.DEFAULT_DEVICE_DTYPE_MAPPING[Ee]??a.DATA_TYPES.fp32}const _t=nt;if(a.DEFAULT_DTYPE_SUFFIX_MAPPING.hasOwnProperty(_t)){if(_t===a.DATA_TYPES.fp16&&Ee==="webgpu"&&!await(0,a.isWebGpuFp16Supported)())throw new Error(`The device (${Ee}) does not support fp16.`)}else throw new Error(`Invalid dtype: ${_t}. Should be one of: ${Object.keys(a.DATA_TYPES).join(", ")}`);const Rt=Ae.kv_cache_dtype,Yt=Rt?typeof Rt=="string"?Rt:Rt[_t]??"float32":void 0;if(Yt&&!["float32","float16"].includes(Yt))throw new Error(`Invalid kv_cache_dtype: ${Yt}. Should be one of: float32, float16`);const Jt={dtype:_t,kv_cache_dtype:Yt,device:Ee},Ct=a.DEFAULT_DTYPE_SUFFIX_MAPPING[_t],fr=`${I}${Ct}.onnx`,$t=`${J.subfolder??""}/${fr}`,Tt={...J.session_options};Tt.executionProviders??=Re;const or=Ae.free_dimension_overrides;or?Tt.freeDimensionOverrides??=or:Ee.startsWith("webnn")&&!Tt.freeDimensionOverrides&&console.warn(`WebNN does not currently support dynamic shapes and requires 'free_dimension_overrides' to be set in config.json, preferably as a field within config["transformers.js_config"]["device_config"]["${Ee}"]. When 'free_dimension_overrides' is not set, you may experience significant performance degradation.`);const Cr=f.apis.IS_NODE_ENV&&f.env.useFSCache,Vr=(0,l.getModelFile)(D,$t,!0,J,Cr),Zr=J.use_external_data_format??Ae.use_external_data_format;let pn=[];if(Zr){let nr;typeof Zr=="object"?Zr.hasOwnProperty(fr)?nr=Zr[fr]:Zr.hasOwnProperty(I)?nr=Zr[I]:nr=!1:nr=Zr;const sn=+nr;if(sn>l.MAX_EXTERNAL_DATA_CHUNKS)throw new Error(`The number of external data chunks (${sn}) exceeds the maximum allowed value (${l.MAX_EXTERNAL_DATA_CHUNKS}).`);for(let Tn=0;Tn<sn;++Tn){const wo=`${fr}_data${Tn===0?"":"_"+Tn}`,qn=`${J.subfolder??""}/${wo}`;pn.push(new Promise(async(ca,hl)=>{const ml=await(0,l.getModelFile)(D,qn,!0,J,Cr);ca(ml instanceof Uint8Array?{path:wo,data:ml}:wo)}))}}else Tt.externalData!==void 0&&(pn=Tt.externalData.map(async nr=>{if(typeof nr.data=="string"){const sn=await(0,l.getModelFile)(D,nr.data,!0,J);return{...nr,data:sn}}return nr}));if(pn.length>0){const nr=await Promise.all(pn);f.apis.IS_NODE_ENV||(Tt.externalData=nr)}if(Ee==="webgpu"){const nr=(0,n.getCacheShapes)(J.config,{prefix:"present"});if(Object.keys(nr).length>0&&!(0,s.isONNXProxy)()){const sn={};for(const Tn in nr)sn[Tn]="gpu-buffer";Tt.preferredOutputLocation=sn}}return{buffer_or_path:await Vr,session_options:Tt,session_config:Jt}}async function $(D,I,J){return Object.fromEntries(await Promise.all(Object.keys(I).map(async Ae=>{const{buffer_or_path:Pe,session_options:Ee,session_config:Re}=await y(D,I[Ae],J),qe=await(0,s.createInferenceSession)(Pe,Ee,Re);return[Ae,qe]})))}async function k(D,I,J){return Object.fromEntries(await Promise.all(Object.keys(I).map(async Ae=>{const Pe=await(0,l.getModelJSON)(D,I[Ae],!1,J);return[Ae,Pe]})))}function W(D,I){const J=Object.create(null),Ae=[];for(const Re of D.inputNames){const qe=I[Re];if(!(qe instanceof c.Tensor)){Ae.push(Re);continue}J[Re]=(0,s.isONNXProxy)()?qe.clone():qe}if(Ae.length>0)throw new Error(`An error occurred during model execution: "Missing the following inputs: ${Ae.join(", ")}.`);const Pe=Object.keys(I).length,Ee=D.inputNames.length;if(Pe>Ee){let Re=Object.keys(I).filter(qe=>!D.inputNames.includes(qe));console.warn(`WARNING: Too many inputs were provided (${Pe} > ${Ee}). The following inputs will be ignored: "${Re.join(", ")}".`)}return J}async function j(D,I){const J=W(D,I);try{const Ae=Object.fromEntries(Object.entries(J).map(([Ee,Re])=>[Ee,Re.ort_tensor])),Pe=await(0,s.runInferenceSession)(D,Ae);return F(Pe)}catch(Ae){const Pe=Object.fromEntries(Object.entries(J).map(([Ee,Re])=>{const qe={type:Re.type,dims:Re.dims,location:Re.location};return qe.location!=="gpu-buffer"&&(qe.data=Re.data),[Ee,qe]}));throw console.error(`An error occurred during model execution: "${Ae}".`),console.error("Inputs given to model:",Pe),Ae}}function F(D){for(let I in D)(0,s.isONNXTensor)(D[I])?D[I]=new c.Tensor(D[I]):typeof D[I]=="object"&&F(D[I]);return D}function R(D){if(D instanceof c.Tensor)return D;if(D.length===0)throw Error("items must be non-empty");if(Array.isArray(D[0])){if(D.some(I=>I.length!==D[0].length))throw Error("Unable to create tensor, you should probably activate truncation and/or padding with 'padding=True' and/or 'truncation=True' to have batched tensors with the same length.");return new c.Tensor("int64",BigInt64Array.from(D.flat().map(I=>BigInt(I))),[D.length,D[0].length])}else return new c.Tensor("int64",BigInt64Array.from(D.map(I=>BigInt(I))),[1,D.length])}function L(D){return new c.Tensor("bool",[D],[1])}async function Q(D,I){let{encoder_outputs:J,input_ids:Ae,decoder_input_ids:Pe,...Ee}=I;if(!J){const qe=(0,o.pick)(I,D.sessions.model.inputNames);J=(await ne(D,qe)).last_hidden_state}return Ee.input_ids=Pe,Ee.encoder_hidden_states=J,D.sessions.decoder_model_merged.inputNames.includes("encoder_attention_mask")&&(Ee.encoder_attention_mask=I.attention_mask),await ce(D,Ee,!0)}async function ne(D,I){const J=D.sessions.model,Ae=(0,o.pick)(I,J.inputNames);if(J.inputNames.includes("inputs_embeds")&&!Ae.inputs_embeds){if(!I.input_ids)throw new Error("Both `input_ids` and `inputs_embeds` are missing in the model inputs.");Ae.inputs_embeds=await D.encode_text({input_ids:I.input_ids})}if(J.inputNames.includes("token_type_ids")&&!Ae.token_type_ids){if(!Ae.input_ids)throw new Error("Both `input_ids` and `token_type_ids` are missing in the model inputs.");Ae.token_type_ids=(0,c.zeros_like)(Ae.input_ids)}if(J.inputNames.includes("pixel_mask")&&!Ae.pixel_mask){if(!Ae.pixel_values)throw new Error("Both `pixel_values` and `pixel_mask` are missing in the model inputs.");const Pe=Ae.pixel_values.dims;Ae.pixel_mask=(0,c.ones)([Pe[0],Pe[2],Pe[3]])}return await j(J,Ae)}async function re(D,I){const J=await D.encode(I);return await D.decode(J)}async function ce(D,I,J=!1){const Ae=D.sessions[J?"decoder_model_merged":"model"],{past_key_values:Pe,...Ee}=I;if(Ae.inputNames.includes("use_cache_branch")&&(Ee.use_cache_branch=L(!!Pe)),Ae.inputNames.includes("position_ids")&&Ee.attention_mask&&!Ee.position_ids){const qe=["paligemma","gemma3_text","gemma3"].includes(D.config.model_type)?1:0;Ee.position_ids=De(Ee,Pe,qe)}D.addPastKeyValues(Ee,Pe);const Re=(0,o.pick)(Ee,Ae.inputNames);return await j(Ae,Re)}function ge({modality_token_id:D,inputs_embeds:I,modality_features:J,input_ids:Ae,attention_mask:Pe}){const Ee=Ae.tolist().map(_t=>_t.reduce((Rt,Yt,Jt)=>(Yt==D&&Rt.push(Jt),Rt),[])),Re=Ee.reduce((_t,Rt)=>_t+Rt.length,0),qe=J.dims[0];if(Re!==qe)throw new Error(`Number of tokens and features do not match: tokens: ${Re}, features ${qe}`);let nt=0;for(let _t=0;_t<Ee.length;++_t){const Rt=Ee[_t],Yt=I[_t];for(let Jt=0;Jt<Rt.length;
2832++Jt)Yt[Rt[Jt]].data.set(J[nt++].data)}return{inputs_embeds:I,attention_mask:Pe}}function q({image_token_id:D,inputs_embeds:I,image_features:J,input_ids:Ae,attention_mask:Pe}){return ge({modality_token_id:D,inputs_embeds:I,modality_features:J,input_ids:Ae,attention_mask:Pe})}function V({audio_token_id:D,inputs_embeds:I,audio_features:J,input_ids:Ae,attention_mask:Pe}){return ge({modality_token_id:D,inputs_embeds:I,modality_features:J,input_ids:Ae,attention_mask:Pe})}async function U(D,{encode_function:I,merge_function:J,modality_input_name:Ae,modality_output_name:Pe,input_ids:Ee=null,attention_mask:Re=null,position_ids:qe=null,inputs_embeds:nt=null,past_key_values:_t=null,generation_config:Rt=null,logits_processor:Yt=null,...Jt}){const Ct=Jt[Ae];if(!nt){if(nt=await D.encode_text({input_ids:Ee,...Jt}),Ct&&Ee.dims[1]!==1){const $t=await I({[Ae]:Ct,...Jt});({inputs_embeds:nt,attention_mask:Re}=J({[Pe]:$t,inputs_embeds:nt,input_ids:Ee,attention_mask:Re}))}else if(_t&&Ct&&Ee.dims[1]===1){const $t=Ee.dims[1],Tt=Object.values(_t)[0].dims.at(-2);Re=(0,c.cat)([(0,c.ones)([Ee.dims[0],Tt]),Re.slice(null,[Re.dims[1]-$t,Re.dims[1]])],1)}}if(!qe&&D.config.model_type==="qwen2_vl"){const{image_grid_thw:$t,video_grid_thw:Tt}=Jt;[qe]=D.get_rope_index(Ee,$t,Tt,Re)}return await ce(D,{inputs_embeds:nt,past_key_values:_t,attention_mask:Re,position_ids:qe,generation_config:Rt,logits_processor:Yt},!0)}async function N(D,I){return await U(D,{...I,modality_input_name:"audio_values",modality_output_name:"audio_features",encode_function:D.encode_audio.bind(D),merge_function:D._merge_input_ids_with_audio_features.bind(D)})}async function oe(D,I){return await U(D,{...I,modality_input_name:"pixel_values",modality_output_name:"image_features",encode_function:D.encode_image.bind(D),merge_function:D._merge_input_ids_with_image_features.bind(D)})}function fe(D,I=0){const[J,Ae]=D.dims,Pe=D.data,Ee=new BigInt64Array(Pe.length);for(let Re=0;Re<J;++Re){const qe=Re*Ae;let nt=BigInt(I);for(let _t=0;_t<Ae;++_t){const Rt=qe+_t;Pe[Rt]===0n?Ee[Rt]=BigInt(1):(Ee[Rt]=nt,nt+=Pe[Rt])}}return{data:Ee,dims:D.dims}}function De(D,I=null,J=0){const{input_ids:Ae,inputs_embeds:Pe,attention_mask:Ee}=D,{data:Re,dims:qe}=fe(Ee,J);let nt=new c.Tensor("int64",Re,qe);if(I){const _t=-(Ae??Pe).dims.at(1);nt=nt.slice(null,[_t,null])}return nt}function Ie(D,I,J,Ae){const Pe=J.past_key_values?Object.values(J.past_key_values)[0].dims.at(-2):0;if(!J.attention_mask){let Ee;for(const Re of["input_ids","inputs_embeds","position_ids"])if(J[Re]){Ee=J[Re].dims;break}if(!Ee)throw new Error("attention_mask is not provided, and unable to infer its shape from model inputs.");J.attention_mask=(0,c.ones)([Ee[0],Pe+Ee[1]])}if(J.past_key_values){const{input_ids:Ee,attention_mask:Re}=J;Re&&Re.dims[1]>Ee.dims[1]||Pe<Ee.dims[1]&&(J.input_ids=Ee.slice(null,[Pe,null]))}return J}function je(D,I,J,Ae){return J.past_key_values&&(I=I.map(Pe=>[Pe.at(-1)])),{...J,decoder_input_ids:R(I)}}function Me(D,...I){return D.config.is_encoder_decoder?je(D,...I):Ie(D,...I)}function se(D,I,J,Ae){const Pe=!!J.past_key_values;return Ae.guidance_scale!==null&&Ae.guidance_scale>1&&(Pe?J.input_ids=(0,c.cat)([J.input_ids,J.input_ids],0):(J.input_ids=(0,c.cat)([J.input_ids,(0,c.full_like)(J.input_ids,BigInt(Ae.pad_token_id))],0),J.attention_mask=(0,c.cat)([J.attention_mask,(0,c.full_like)(J.attention_mask,0n)],0))),(Pe||!J.pixel_values)&&(J.pixel_values=(0,c.full)([0,0,3,384,384],1)),Pe&&(J.images_seq_mask=new c.Tensor("bool",new Array(1).fill(!0).fill(!1,0,1),[1,1]),J.images_emb_mask=new c.Tensor("bool",new Array(0).fill(!1),[1,1,0])),J}class H extends i.Callable{main_input_name="input_ids";forward_params=["input_ids","attention_mask"];constructor(I,J,Ae){super(),this.config=I,this.sessions=J,this.configs=Ae;const Pe=v.get(this.constructor),Ee=w.get(Pe);switch(this.can_generate=!1,this._forward=null,this._prepare_inputs_for_generation=null,Ee){case _.DecoderOnly:this.can_generate=!0,this._forward=ce,this._prepare_inputs_for_generation=Ie;break;case _.Seq2Seq:case _.Vision2Seq:case _.Musicgen:this.can_generate=!0,this._forward=Q,this._prepare_inputs_for_generation=je;break;case _.EncoderDecoder:this._forward=Q;break;case _.ImageTextToText:this.can_generate=!0,this._forward=oe,this._prepare_inputs_for_generation=Me;break;case _.AudioTextToText:this.can_generate=!0,this._forward=N,this._prepare_inputs_for_generation=Me;break;case _.Phi3V:case _.ImageAudioTextToText:this.can_generate=!0,this._prepare_inputs_for_generation=Me;break;
2832case _.MultiModality:this.can_generate=!0,this._prepare_inputs_for_generation=se;break;case _.AutoEncoder:this._forward=re;break;default:this._forward=ne;break}this.can_generate&&this.forward_params.push("past_key_values"),this.custom_config=this.config["transformers.js_config"]??{}}async dispose(){const I=[];for(const J of Object.values(this.sessions))J?.handler?.dispose&&I.push(J.handler.dispose());return await Promise.all(I)}static async from_pretrained(I,{progress_callback:J=null,config:Ae=null,cache_dir:Pe=null,local_files_only:Ee=!1,revision:Re="main",model_file_name:qe=null,subfolder:nt="onnx",device:_t=null,dtype:Rt=null,use_external_data_format:Yt=null,session_options:Jt={}}={}){let Ct={progress_callback:J,config:Ae,cache_dir:Pe,local_files_only:Ee,revision:Re,model_file_name:qe,subfolder:nt,device:_t,dtype:Rt,use_external_data_format:Yt,session_options:Jt};const fr=v.get(this),$t=w.get(fr);Ae=Ct.config=await n.AutoConfig.from_pretrained(I,Ct);let Tt;if($t===_.DecoderOnly)Tt=await Promise.all([$(I,{model:Ct.model_file_name??"model"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.Seq2Seq||$t===_.Vision2Seq)Tt=await Promise.all([$(I,{model:"encoder_model",decoder_model_merged:"decoder_model_merged"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.MaskGeneration)Tt=await Promise.all([$(I,{model:"vision_encoder",prompt_encoder_mask_decoder:"prompt_encoder_mask_decoder"},Ct)]);else if($t===_.EncoderDecoder)Tt=await Promise.all([$(I,{model:"encoder_model",decoder_model_merged:"decoder_model_merged"},Ct)]);else if($t===_.ImageTextToText){const or={embed_tokens:"embed_tokens",vision_encoder:"vision_encoder",decoder_model_merged:"decoder_model_merged"};Ae.is_encoder_decoder&&(or.model="encoder_model"),Tt=await Promise.all([$(I,or,Ct),k(I,{generation_config:"generation_config.json"},Ct)])}else if($t===_.AudioTextToText){const or={embed_tokens:"embed_tokens",audio_encoder:"audio_encoder",decoder_model_merged:"decoder_model_merged"};Tt=await Promise.all([$(I,or,Ct),k(I,{generation_config:"generation_config.json"},Ct)])}else if($t===_.ImageAudioTextToText){const or={embed_tokens:"embed_tokens",audio_encoder:"audio_encoder",vision_encoder:"vision_encoder",decoder_model_merged:"decoder_model_merged"};Tt=await Promise.all([$(I,or,Ct),k(I,{generation_config:"generation_config.json"},Ct)])}else if($t===_.Musicgen)Tt=await Promise.all([$(I,{model:"text_encoder",decoder_model_merged:"decoder_model_merged",encodec_decode:"encodec_decode"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.MultiModality)Tt=await Promise.all([$(I,{prepare_inputs_embeds:"prepare_inputs_embeds",model:"language_model",lm_head:"lm_head",gen_head:"gen_head",gen_img_embeds:"gen_img_embeds",image_decode:"image_decode"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.Phi3V)Tt=await Promise.all([$(I,{prepare_inputs_embeds:"prepare_inputs_embeds",model:"model",vision_encoder:"vision_encoder"},Ct),k(I,{generation_config:"generation_config.json"},Ct)]);else if($t===_.AutoEncoder)Tt=await Promise.all([$(I,{encoder_model:"encoder_model",decoder_model:"decoder_model"},Ct)]);else if($t===_.Supertonic)Tt=await Promise.all([$(I,{text_encoder:"text_encoder",latent_denoiser:"latent_denoiser",voice_decoder:"voice_decoder"},Ct)]);else{if($t!==_.EncoderOnly){const or=fr??Ae?.model_type;or!=="custom"&&console.warn(`Model type for '${or}' not found, assuming encoder-only architecture. Please report this at ${u.GITHUB_ISSUE_URL}.`)}Tt=await Promise.all([$(I,{model:Ct.model_file_name??"model"},Ct)])}return new this(Ae,...Tt)}async _call(I){return await this.forward(I)}async forward(I){return await this._forward(this,I)}get generation_config(){return this.configs?.generation_config??null}_get_logits_processor(I,J,Ae=null){const Pe=new p.LogitsProcessorList;if(I.repetition_penalty!==null&&I.repetition_penalty!==1&&Pe.push(new p.RepetitionPenaltyLogitsProcessor(I.repetition_penalty)),I.no_repeat_ngram_size!==null&&I.no_repeat_ngram_size>0&&Pe.push(new p.NoRepeatNGramLogitsProcessor(I.no_repeat_ngram_size)),I.bad_words_ids!==null&&Pe.push(new p.NoBadWordsLogitsProcessor(I.bad_words_ids,I.eos_token_id)),I.min_length!==null&&I.eos_token_id!==null&&I.min_length>0&&Pe.push(new p.MinLengthLogitsProcessor(I.min_length,I.eos_token_id)),I.min_new_tokens!==null&&I.eos_token_id!==null&&I.min_new_tokens>0&&Pe.push(new p.MinNewTokensLengthLogitsProcessor(J,I.min_new_tokens,I.eos_token_id)),I.forced_bos_token_id!==null&&Pe.push(new p.ForcedBOSTokenLogitsProcessor(I.forced_bos_token_id)),I.forced_eos_token_id!==null&&Pe.push(new p.ForcedEOSTokenLogitsProcessor(I.max_length,I.forced_eos_token_id)),I.begin_suppress_tokens!==null){const Ee=J>1||I.forced_bos_token_id===null?J:J+1;Pe.push(new p.SuppressTokensAtBeginLogitsProcessor(I.begin_suppress_tokens,Ee))}return I.guidance_scale!==null&&I.guidance_scale>1&&Pe.push(new p.ClassifierFreeGuidanceLogitsProcessor(I.guidance_scale)),I.temperature===0&&I.do_sample&&(console.warn("`do_sample` changed to fal
2832se because `temperature: 0` implies greedy sampling (always selecting the most likely token), which is incompatible with `do_sample: true`."),I.do_sample=!1),I.do_sample&&I.temperature!==null&&I.temperature!==1&&Pe.push(new p.TemperatureLogitsWarper(I.temperature)),Ae!==null&&Pe.extend(Ae),Pe}_prepare_generation_config(I,J,Ae=d.GenerationConfig){const Pe={...this.config};for(const Re of["decoder","generator","text_config"])Re in Pe&&Object.assign(Pe,Pe[Re]);const Ee=new Ae(Pe);return Object.assign(Ee,this.generation_config??{}),I&&Object.assign(Ee,I),J&&Object.assign(Ee,(0,o.pick)(J,Object.getOwnPropertyNames(Ee))),Ee}_get_stopping_criteria(I,J=null){const Ae=new m.StoppingCriteriaList;return I.max_length!==null&&Ae.push(new m.MaxLengthCriteria(I.max_length,this.config.max_position_embeddings??null)),I.eos_token_id!==null&&Ae.push(new m.EosTokenCriteria(I.eos_token_id)),J&&Ae.extend(J),Ae}_validate_model_class(){if(!this.can_generate){const I=[Qm,Hm,Vm,Wm],J=v.get(this.constructor),Ae=new Set,Pe=this.config.model_type;for(const Re of I){const qe=Re.get(Pe);qe&&Ae.add(qe[0])}let Ee=`The current model class (${J}) is not compatible with \`.generate()\`, as it doesn't have a language model head.`;throw Ae.size>0&&(Ee+=` Please use the following class instead: ${[...Ae].join(", ")}`),Error(Ee)}}prepare_inputs_for_generation(...I){return this._prepare_inputs_for_generation(this,...I)}_update_model_kwargs_for_generation({generated_input_ids:I,outputs:J,model_inputs:Ae,is_encoder_decoder:Pe}){return Ae.past_key_values=this.getPastKeyValues(J,Ae.past_key_values),Ae.input_ids=new c.Tensor("int64",I.flat(),[I.length,1]),Pe||(Ae.attention_mask=(0,c.cat)([Ae.attention_mask,(0,c.ones)([Ae.attention_mask.dims[
28320],1])],1)),Ae.position_ids=null,Ae}_prepare_model_inputs({inputs:I,bos_token_id:J,model_kwargs:Ae}){const Pe=(0,o.pick)(Ae,this.forward_params),Ee=this.main_input_name;if(Ee in Pe){if(I)throw new Error("`inputs`: {inputs}` were passed alongside {input_name} which is not allowed. Make sure to either pass {inputs} or {input_name}=...")}else Pe[Ee]=I;return{inputs_tensor:Pe[Ee],model_inputs:Pe,model_input_name:Ee}}async _prepare_encoder_decoder_kwargs_for_generation({inputs_tensor:I,model_inputs:J,model_input_name:Ae,generation_config:Pe}){if(this.sessions.model.inputNames.includes("inputs_embeds")&&!J.inputs_embeds&&"_prepare_inputs_embeds"in this){const{input_ids:Re,pixel_values:qe,attention_mask:nt,..._t}=J,Rt=await this._prepare_inputs_embeds(J);J={..._t,...(0,o.pick)(Rt,["inputs_embeds","attention_mask"])}}let{last_hidden_state:Ee}=await ne(this,J);if(Pe.guidance_scale!==null&&Pe.guidance_scale>1)Ee=(0,c.cat)([Ee,(0,c.full_like)(Ee,0)],0),"attention_mask"in J&&(J.attention_mask=(0,c.cat)([J.attention_mask,(0,c.zeros_like)(J.attention_mask)],0));else if(J.decoder_input_ids){const Re=R(J.decoder_input_ids).dims[0];if(Re!==Ee.dims[0]){if(Ee.dims[0]!==1)throw new Error(`The encoder outputs have a different batch size (${Ee.dims[0]}) than the decoder inputs (${Re}).`);Ee=(0,c.cat)(Array.from({length:Re},()=>Ee),0)}}return J.encoder_outputs=Ee,J}_prepare_decoder_input_ids_for_generation({batch_size:I,model_input_name:J,model_kwargs:Ae,decoder_start_token_id:Pe,bos_token_id:Ee,generation_config:Re}){let{decoder_input_ids:qe,...nt}=Ae;if(!(qe instanceof c.Tensor)){if(qe)Array.isArray(qe[0])||(qe=Array.from({length:I},()=>qe));else if(Pe??=Ee,this.config.model_type==="musicgen")qe=Array.from({length:I*this.config.decoder.num_codebooks},()=>[Pe]);else if(Array.isArray(Pe)){if(Pe.length!==I)throw new Error(`\`decoder_start_token_id\` expcted to have length ${I} but got ${Pe.length}`);qe=Pe}else qe=Array.from({length:I},()=>[Pe]);qe=R(qe)}return Ae.decoder_attention_mask=(0,c.ones_like)(qe),{input_ids:qe,model_inputs:nt}}async generate({inputs:I=null,generation_config:J=null,logits_processor:Ae=null,stopping_criteria:Pe=null,streamer:Ee=null,...Re}){this._validate_model_class(),J=this._prepare_generation_config(J,Re);let{inputs_tensor:qe,model_inputs:nt,model_input_name:_t}=this._prepare_model_inputs({inputs:I,model_kwargs:Re});const Rt=this.config.is_encoder_decoder;Rt&&("encoder_outputs"in nt||(nt=await this._prepare_encoder_decoder_kwargs_for_generation({inputs_tensor:qe,model_inputs:nt,model_input_name:_t,generation_config:J})));let Yt;Rt?{input_ids:Yt,model_inputs:nt}=this._prepare_decoder_input_ids_for_generation({batch_size:nt[_t].dims.at(0),model_input_name:_t,model_kwargs:nt,decoder_start_token_id:J.decoder_start_token_id,bos_token_id:J.bos_token_id,generation_config:J}):Yt=nt[_t];let Jt=Yt.dims.at(-1);J.max_new_tokens!==null&&(J.max_length=Jt+J.max_new_tokens);const Ct=this._get_logits_processor(J,Jt,Ae),fr=this._get_stopping_criteria(J,Pe),$t=nt[_t].dims.at(0),Tt=B.LogitsSampler.getSampler(J),or=new Array($t).fill(0),Cr=Yt.tolist();Ee&&Ee.put(Cr);let Vr,Zr={};for(;;){if(nt=this.prepare_inputs_for_generation(Cr,nt,J),Vr=await this.forward(nt),J.output_attentions&&J.return_dict_in_generate){const qn=this.getAttentions(Vr);for(const ca in qn)ca in Zr||(Zr[ca]=[]),Zr[ca].push(qn[ca])}const nr=Vr.logits.slice(null,-1,null),sn=Ct(Cr,nr),Tn=[];for(let qn=0;qn<sn.dims.at(0);++qn){const ca=sn[qn],hl=await Tt(ca);for(const[ml,Qd]of hl){const ju=BigInt(ml);or[qn]+=Qd,Cr[qn].push(ju),Tn.push([ju]);break}}if(Ee&&Ee.put(Tn),fr(Cr).every(qn=>qn))break;nt=this._update_model_kwargs_for_generation({generated_input_ids:Tn,outputs:Vr,model_inputs:nt,is_encoder_decoder:Rt})}Ee&&Ee.end();const pn=this.getPastKeyValues(Vr,nt.past_key_values,!0),gn=new c.Tensor("int64",Cr.flat(),[Cr.length,Cr[0].length]);if(J.return_dict_in_generate)return{sequences:gn,past_key_values:pn,...Zr};for(const nr of Object.values(Vr))nr.location==="gpu-buffer"&&nr.dispose();return gn}getPastKeyValues(I,J,Ae=!1){const Pe=Object.create(null);for(const Ee in I)if(Ee.startsWith("present")){const Re=Ee.replace("present_conv","past_conv").replace("present","past_key_values"),qe=Ee.includes("encoder");if(qe&&J?Pe[Re]=J[Re]:Pe[Re]=I[Ee],J&&(!qe||Ae)){const nt=J[Re];nt.location==="gpu-buffer"&&nt.dispose()}}return Pe}getAttentions(I){const J={};for(const Ae of["cross_attentions","encoder_attentions","decoder_attentions"])for(const Pe in I)Pe.startsWith(Ae)&&(Ae in J||(J[Ae]=[]),J[Ae].push(I[Pe]));return J}addPastKeyValues(I,J){if(J)Object.assign(I,J);else{const Ae=this.sessions.decoder_model_merged??this.sessions.model,Pe=(I[this.main_input_name]??I.attention_mask)?.dims?.[0]??1,Ee=Ae?.config?.kv_cache_dtype??"float32",Re=Ee==="float16"?c.DataTypeMap.float16:c.DataTypeMap.float32,qe=(0,n.getCacheShapes)(this.config,{batch_size:Pe});for(const nt in qe){const _t=qe[nt].reduce((Rt,Yt)=>Rt*Yt,1);I[nt]=new c.Tensor(Ee,new Re(_t),qe[nt])}}}async encode_image({pixel_values:I}){return(await j(this.sessions.vision_encoder,{pixel_values:I})).image_features}async encode_text({input_ids:I}){return(await j(this.sessions.embed_tokens,{input_ids:I})).inputs_embeds}async encode_audio({audio_values:I}){return(await j(this.sessions.audio_encoder,{audio_values:I})).audio_features}}class we{}class be extends we{constructor({last_hidden_state:I,hidden_states:J=null,attentions:Ae=null}){super(),this.last_hidden_state=I,this.hidden_states=J,this.attentions=Ae}}class Ce extends H{}class Se extends Ce{}class ze extends Ce{async _call(I){return new In(await super._call(I))}}class ve extends Ce{async _call(I){return new Ht(await super._call(I))}}class Ve extends Ce{async _call(I){return new Pn(await super._call(I))}}class Be extends Ce{async _call(I){return new Fn(await super._call(I))}}class ke extends H{}class rt extends ke{}class Ue extends ke{async _call(I){return new In(await super._call(I))}}class ht extends ke{async _call(I){return new Ht(await super._call(I))}}class He extends ke{async _call(I){return new Pn(await super._call(I))}}class dt extends ke{async _call(I){return new Fn(await super._call(I))}}class At extends H{}class Xe extends At{}class We extends At{async _call(I){return new In(await super._call(I))}}class yt extends At{async _call(I){return new Ht(await super._call(I))}}class Mt extends At{async _call(I){return new Pn(await super._call(I))}}class hr extends H{}class Vt extends hr{}class tn extends hr{}class hn extends H{}class ar extends hn{}class On extends H{}class ma extends On{}class fa extends On{async _call(I){return new In(await super._call(I))}}class _a extends On{async _call(I){return new Ht(await super._call(I))}}class Ur extends On{async _call(I){return new Pn(await super._call(I))}}class mn extends On{async _call(I){return new Fn(await super._call(I))}}class Nn extends H{}class Ms extends Nn{}class kt extends Nn{async _call(I){return new In(await super._call(I))}}class Er extends Nn{async _call(I){return new Ht(await super._call(I))}}class us extends Nn{async _call(I){return new Pn(await super._call(I))}}class cs extends Nn{async _call(I){return new Fn(await super._call(I))}}class pr extends H{}class Ft extends pr{}class ds extends pr{async _call(I){return new In(await super._call(I))}}class S extends pr{async _call(I){return new Ht(await super._call(I))}}class ie extends pr{async _call(I){return new Pn(await super._call(I))}}class X extends pr{async _call(I){return new Fn(await super._call(I))}}class ae extends H{}class le extends ae{}class _e extends ae{async _call(I){return new In(await super._call(I))}}class Oe extends ae{async _call(I){return new Ht(await super._call(I))}}class gt extends ae{async _call(I){return new Pn(await super._call(I))}}class Et extends ae{async _call(I){return new Fn(await super._call(I))}}class at extends H{}class Ot extends at{}class lt extends at{async _call(I){return new In(await super._call(I))}}class St extends at{async _call(I){return new Ht(await super._call(I))}}class rr extends at{async _call(I){return new Pn(await super._call(I))}}class Hr extends at{async _call(I){return new Fn(await super._call(I))}}class kr extends H{}class yr extends kr{}class ln extends kr{async _call(I){return new In(await super._call(I))}}class vs extends kr{async _call(I){return new Ht(await super._call(I))}}class En extends kr{async _call(I){return new Pn(await super._call(I))}}class ps extends kr{async _call(I){return new Fn(await super._call(I))}}class Kr extends H{}class fn extends Kr{}class qr extends Kr{async _call(I){return new Ht(await super._call(I))}}class vr extends Kr{async _call(I){return new Pn(await super._call(I))}}class Rr extends Kr{async _call(I){return new Fn(await super._call(I))}}class jn extends Kr{async _call(I){return new In(await super._call(I))}}class Zn extends H{}class ea extends Zn{}class Bs extends Zn{async _call(I){return new In(await super._call(I))}}class xs extends Zn{async _call(I){return new Ht(await super._call(I))}}class Es extends Zn{async _call(I){return new Pn(await super._call(I))}}class _n extends H{}class wn extends _n{}class Ke extends _n{async _call(I){return new In(await super._call(I))}}class Ze extends _n{async _call(I){return new Ht(await super._call(I))}}class ft extends _n{async _call(I){return new Fn(await super._call(I))}}class Dr extends H{}class ta extends Dr{}class Ds extends Dr{async _call(I){return new In(await super._call(I))}}class ra extends Dr{async _call(I){return new Ht(await super._call(I))}}class ii extends Dr{async _call(I){return new Pn(await super._call(I))}}class ye extends Dr{async _call(I){return new Fn(await super._call(I))}}class O extends H{}class te extends O{}class de extends O{async _call(I){return new In(await super._call(I))}}class pe extends O{async _call(I){return new Ht(await super._call(I))}}class xe extends O{async _call(I){return new Fn(await super._call(I))}}class Fe extends H{}class ct extends Fe{}class ut extends Fe{async _call(I){return new Ht(await super._call(I))}}class pt extends Fe{async _call(I){return new Fn(await super._call(I))}}class st extends Fe{async _call(I){return new In(await super._call(I))}}class Xt extends H{forward_params=["input_ids","attention_mask","encoder_outputs","decoder_input_ids","decoder_attention_mask","past_key_values"]}class jt extends Xt{}class Or extends Xt{}class un extends H{}class gr extends un{}class Ar extends un{}class Br extends H{}class Dn extends Br{}class Un extends Br{}class cn extends H{}class Jn extends cn{}class Yr extends cn{}class Wr extends cn{async _call(I){return new Ht(await super._call(I))}}class yn extends H{}class Wn extends yn{}
2832class gs extends yn{}class Xr extends yn{async _call(I){return new Ht(await super._call(I))}}class es extends yn{}class dn extends H{}class Nr extends dn{}class rn extends dn{}class zr extends H{}class zn extends zr{}class wa extends zr{}class Is extends H{}class ao extends Is{}class Yo extends Is{async _call(I){return new In(await super._call(I))}}class No extends Is{async _call(I){return new Ht(await super._call(I))}}class io extends Is{async _call(I){return new Pn(await super._call(I))}}class jo extends Is{async _call(I){return new Fn(await super._call(I))}}class ya extends H{}class Uo extends ya{}class Wo extends ya{async _call(I){return new In(await super._call(I))}}class Vo extends ya{async _call(I){return new Ht(await super._call(I))}}class Qo extends ya{async _call(I){return new Pn(await super._call(I))}}class Ho extends ya{async _call(I){return new Fn(await super._call(I))}}class ba extends H{}class oo extends ba{}class oi extends ba{async _call(I){return new In(await super._call(I))}}class li extends ba{async _call(I){return new Ht(await super._call(I))}}class lo extends ba{async _call(I){return new Pn(await super._call(I))}}class Ko extends ba{async _call(I){return new Fn(await super._call(I))}}class ui extends H{}class ci extends ui{}class na extends ui{}class sa extends H{requires_attention_mask=!1;main_input_name="input_features";forward_params=["input_features","attention_mask","decoder_input_ids","decoder_attention_mask","past_key_values"]}class uo extends sa{}class di extends sa{_prepare_generation_config(I,J){return super._prepare_generation_config(I,J,h.WhisperGenerationConfig)}_retrieve_init_tokens(I){const J=[I.decoder_start_token_id];let Ae=I.language;const Pe=I.task;if(I.is_multilingual){Ae||(console.warn("No language specified - defaulting to English (en)."),Ae="en");const Re=`<|${(0,P.whisper_language_to_code)(Ae)}|>`;J.push(I.lang_to_id[Re]),J.push(I.task_to_id[Pe??"transcribe"])}else if(Ae||Pe)throw new Error("Cannot specify `task` or `language` for an English-only model. If the model is intended to be multilingual, pass `is_multilingual=true` to generate, or update the generation config.");return!I.return_timestamps&&I.no_timestamps_token_id&&J.at(-1)!==I.no_timestamps_token_id?J.push(I.no_timestamps_token_id):I.return_timestamps&&J.at(-1)===I.no_timestamps_token_id&&(console.warn("<|notimestamps|> prompt token is removed from generation_config since `return_timestamps` is set to `true`."),J.pop()),J.filter(Ee=>Ee!=null)}async generate({inputs:I=null,generation_config:J=null,logits_processor:Ae=null,stopping_criteria:Pe=null,...Ee}){J=this._prepare_generation_config(J,Ee);const Re=Ee.decoder_input_ids??this._retrieve_init_tokens(J);if(J.return_timestamps&&(Ae??=new p.LogitsProcessorList,Ae.push(new p.WhisperTimeStampLogitsProcessor(J,Re))),J.begin_suppress_tokens&&(Ae??=new p.LogitsProcessorList,Ae.push(new p.SuppressTokensAtBeginLogitsProcessor(J.begin_suppress_tokens,Re.length))),J.return_token_timestamps){if(!J.alignment_heads)throw new Error("Model generation config has no `alignment_heads`, token-level timestamps not available. See https://gist.github.com/hollance/42e32852f24243b748ae6bc1f985b13a on how to add this property to the generation config.");J.task==="translate"&&console.warn("Token-level timestamps may not be reliable for task 'translate'."),J.output_attentions=!0,J.return_dict_in_generate=!0}const qe=await super.generate({inputs:I,generation_config:J,logits_processor:Ae,decoder_input_ids:Re,...Ee});return J.return_token_timestamps&&(qe.token_timestamps=this._extract_token_timestamps(qe,J.alignment_heads,J.num_frames)),qe}_extract_token_timestamps(I,J,Ae=null,Pe=.02){if(!I.cross_attentions)throw new Error("Model outputs must contain cross attentions to extract timestamps. This is most likely because the model was not exported with `output_attentions=True`.");Ae==null&&console.warn("`num_frames` has not been set, meaning the entire audio will be analyzed. This may lead to inaccurate token-level timestamps for short audios (< 30 seconds).");let Ee=this.config.median_filter_width;Ee===void 0&&(console.warn("Model config has no `median_filter_width`, using default value of 7."),Ee=7);const Re=I.cross_attentions,qe=Array.from({length:this.config.decoder_layers},($t,Tt)=>(0,c.cat)(Re.map(or=>or[Tt]),2)),nt=(0,c.stack)(J.map(([$t,Tt])=>
2832{if($t>=qe.length)throw new Error(`Layer index ${$t} is out of bounds for cross attentions (length ${qe.length}).`);return Ae?qe[$t].slice(null,Tt,null,[0,Ae]):qe[$t].slice(null,Tt)})).transpose(1,0,2,3),[_t,Rt]=(0,c.std_mean)(nt,-2,0,!0),Yt=nt.clone();for(let $t=0;$t<Yt.dims[0];++$t){const Tt=Yt[$t];for(let or=0;or<Tt.dims[0];++or){const Cr=Tt[or],Vr=_t[$t][or][0].data,Zr=Rt[$t][or][0].data;for(let pn=0;pn<Cr.dims[0];++pn){let gn=Cr[pn].data;for(let nr=0;nr<gn.length;++nr)gn[nr]=(gn[nr]-Zr[nr])/Vr[nr];gn.set((0,A.medianFilter)(gn,Ee))}}}const Jt=[(0,c.mean)(Yt,1)],Ct=I.sequences.dims,fr=new c.Tensor("float32",new Float32Array(Ct[0]*Ct[1]),Ct);for(let $t=0;$t<Ct[0];++$t){const Tt=Jt[$t].neg().squeeze_(0),[or,Cr]=(0,A.dynamic_time_warping)(Tt.tolist()),Vr=Array.from({length:or.length-1},(gn,nr)=>or[nr+1]-or[nr]),Zr=(0,o.mergeArrays)([1],Vr).map(gn=>!!gn),pn=[];for(let gn=0;gn<Zr.length;++gn)Zr[gn]&&pn.push(Cr[gn]*Pe);fr[$t].data.set(pn,1)}return fr}}class qo extends di{}class co extends H{requires_attention_mask=!1;main_input_name="input_values";forward_params=["input_values","decoder_input_ids","past_key_values"]}class po extends co{}class Oa extends co{}class pi extends H{main_input_name="pixel_values";forward_params=["pixel_values","decoder_input_ids","encoder_hidden_states","past_key_values"]}class go extends H{forward_params=["input_ids","attention_mask","pixel_values","position_ids","past_key_values"]}class gi extends go{_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_index,...I,image_features:Ae})}}class Xo extends gi{}class Zo extends gi{}class Jo extends H{forward_params=["input_ids","inputs_embeds","attention_mask","pixel_values","encoder_outputs","decoder_input_ids","decoder_inputs_embeds","decoder_attention_mask","past_key_values"];main_input_name="inputs_embeds"}class el extends Jo{_merge_input_ids_with_image_features({inputs_embeds:I,image_features:J,input_ids:Ae,attention_mask:Pe}){return{inputs_embeds:(0,c.cat)([J,I],1),attention_mask:(0,c.cat)([(0,c.ones)(J.dims.slice(0,2)),Pe],1)}}async _prepare_inputs_embeds({input_ids:I,pixel_values:J,inputs_embeds:Ae,attention_mask:Pe}){if(!I&&!J)throw new Error("Either `input_ids` or `pixel_values` should be provided.");let Ee,Re;return I&&(Ee=await this.encode_text({input_ids:I})),J&&(Re=await this.encode_image({pixel_values:J})),Ee&&Re?{inputs_embeds:Ae,attention_mask:Pe}=this._merge_input_ids_with_image_features({inputs_embeds:Ee,image_features:Re,input_ids:I,attention_mask:Pe}):Ae=Ee||Re,{inputs_embeds:Ae,attention_mask:Pe}}async forward({input_ids:I,pixel_values:J,attention_mask:Ae,decoder_input_ids:Pe,decoder_attention_mask:Ee,encoder_outputs:Re,past_key_values:qe,inputs_embeds:nt,decoder_inputs_embeds:_t}){if(nt||({inputs_embeds:nt,attention_mask:Ae}=await this._prepare_inputs_embeds({input_ids:I,pixel_values:J,inputs_embeds:nt,attention_mask:Ae})),!Re){let{last_hidden_state:Jt}=await ne(this,{inputs_embeds:nt,attention_mask:Ae});Re=Jt}if(!_t){if(!Pe)throw new Error("Either `decoder_input_ids` or `decoder_inputs_embeds` should be provided.");_t=await this.encode_text({input_ids:Pe})}return await ce(this,{inputs_embeds:_t,attention_mask:Ee,encoder_attention_mask:Ae,encoder_hidden_states:Re,past_key_values:qe},!0)}}class Ts extends H{forward_params=["input_ids","attention_mask","pixel_values","position_ids","past_key_values"]}class Ga extends Ts{_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_index,...I,image_features:Ae})}}class Ai extends go{_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_index,...I,image_features:Ae})}}class za extends Ai{}class As extends H{forward_params=["input_ids","attention_mask","inputs_embeds","per_layer_inputs","position_ids","pixel_values","input_features","input_features_mask","past_key_values"]}class hi extends As{async forward({input_ids:I=null,attention_mask:J=null,pixel_values:Ae=null,input_features:Pe=null,input_features_mask:Ee=null,position_ids:Re=null,inputs_embeds:qe=null,per_layer_inputs:nt=null,past_key_values:_t=null,generation_config:Rt=null,logits_processor:Yt=null,...Jt}){if((!qe||!nt)&&({inputs_embeds:qe,per_layer_inputs:nt}=await j(this.sessions.embed_tokens,{input_ids:I}),I.dims[1]!==1)){if(Ae){const{image_features:fr}=await j(this.sessions.vision_encoder,{pixel_values:Ae});({inputs_embeds:qe,attention_mask:J}=this._merge_input_ids_with_image_features({image_features:fr,input
2832s_embeds:qe,input_ids:I,attention_mask:J}))}if(Pe){const{audio_features:fr}=await j(this.sessions.audio_encoder,{input_features:Pe,input_features_mask:Ee});({inputs_embeds:qe,attention_mask:J}=this._merge_input_ids_with_audio_features({audio_features:fr,inputs_embeds:qe,input_ids:I,attention_mask:J}))}}return await ce(this,{inputs_embeds:qe,per_layer_inputs:nt,past_key_values:_t,attention_mask:J,position_ids:Re,generation_config:Rt,logits_processor:Yt},!0)}_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_id,...I,image_features:Ae})}_merge_input_ids_with_audio_features(I){const J=I.audio_features.dims.at(-1),Ae=I.audio_features.view(-1,J);return V({audio_token_id:this.config.audio_token_id,...I,audio_features:Ae})}}class tl extends H{forward_params=["input_ids","attention_mask","pixel_values","pixel_attention_mask","position_ids","past_key_values"]}class Pa extends tl{async encode_image({pixel_values:I,pixel_attention_mask:J}){return(await j(this.sessions.vision_encoder,{pixel_values:I,pixel_attention_mask:J})).image_features}_merge_input_ids_with_image_features(I){const J=I.image_features.dims.at(-1),Ae=I.image_features.view(-1,J);return q({image_token_id:this.config.image_token_id,...I,image_features:Ae})}}class aa extends Pa{}class Fa extends H{forward_params=["input_ids","inputs_embeds","attention_mask","position_ids","pixel_values","image_sizes","past_key_values"]}class La extends Fa{async forward({input_ids:I=null,attention_mask:J=null,pixel_values:Ae=null,image_sizes:Pe=null,position_ids:Ee=null,inputs_embeds:Re=null,past_key_values:qe=null,generation_config:nt=null,logits_processor:_t=null,...Rt}){if(!Re){let Jt;if(Ae&&I.dims[1]!==1){if(!Pe)throw new Error("`image_sizes` must be provided when `pixel_values` is provided.");({image_features:Jt}=await j(this.sessions.vision_encoder,{pixel_values:Ae,image_sizes:Pe}))}else{const Ct=this.config.normalized_config.hidden_size;Jt=new c.Tensor("float32",[],[0,Ct])}({inputs_embeds:Re}=await j(this.sessions.prepare_inputs_embeds,{input_ids:I,image_features:Jt}))}return await ce(this,{inputs_embeds:Re,past_key_values:qe,attention_mask:J,position_ids:Ee,generation_config:nt,logits_processor:_t},!1)}}class hs extends H{}class mi extends hs{}class Ao extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class fi extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class rl extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class ho extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class _i extends H{}class wi extends _i{}class Ma extends _i{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class vt extends hs{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class Kn extends H{}class ia extends Kn{}class oa extends H{}class va extends oa{async forward(I){const J=!I.input_ids,Ae=!I.pixel_values;if(J&&Ae)throw new Error("Either `input_ids` or `pixel_values` should be provided.");if(J&&(I.input_ids=(0,c.ones)([I.pixel_values.dims[0],1])),Ae){const{image_size:_t}=this.config.vision_config;I.pixel_values=(0,c.full)([0,3,_t,_t],0)}const{text_embeddings:Pe,image_embeddings:Ee,l2norm_text_embeddings:Re,l2norm_image_embeddings:qe}=await super.forward(I),nt={};return J||(nt.text_embeddings=Pe,nt.l2norm_text_embeddings=Re),Ae||(nt.image_embeddings=Ee,nt.l2norm_image_embeddings=qe),nt}}class Vn extends oa{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class Ba extends oa{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"vision_model"})}}class la extends H{}class yi extends la{}class bi extends la{}class Zt extends H{}class Cs extends Zt{}class Pi extends Zt{}class Ut extends H{}class Ra extends Ut{}class Wt extends Ut{}class xa extends H{}class Ea extends xa{}class Mi extends xa{}class Ya extends H{}class vi extends Ya{}class Na extends Ya{}class ja extends H{}class x extends ja{}class C extends ja{}class Y extends H{}class K extends Y{}class ee extends Y{}class he extends H{}class Le extends he{}class Qe extends he{}class ot extends H{}class wt extends ot{}class Lt extends ot{}class sr extends H{}class mr extends sr{}class nn extends H{}class $s extends nn{}class mo extends nn{}class nl extends H{}class pu extends nl{}class gu extends nl{}class sl extends H{}class Au extends sl{}class hu extends sl{}class al extends H{}class mu extends al{}class fu extends al{}class il extends H{}class _u extends il{}class wu extends il{}class ol extends H{}class yu extends ol{}class bu extends ol{}class ll extends H{}class Pu extends ll{}class Mu extends ll{}class ul extends H{}class vu extends ul{}class Bu extends ul{}class cl extends H{}class xu extends cl{}class Ss extends cl{}class Eu extends H{}
2832class dl extends Eu{}class nd extends Eu{}class Du extends H{}class sd extends Du{}class ad extends Du{}class Iu extends H{}class id extends Iu{}class od extends Iu{}class Tu extends H{}class ld extends Tu{}class ud extends Tu{}class Cu extends H{}class cd extends Cu{}class dd extends Cu{}class $u extends H{}class pd extends $u{}class gd extends $u{}class Su extends H{}class Ad extends Su{}class hd extends Su{}class ku extends H{}class md extends ku{}class fd extends ku{}class Ou extends H{}class _d extends Ou{}class wd extends Ou{}class Gu extends H{}class yd extends Gu{}class bd extends Gu{}class zu extends H{}class Pd extends zu{}class Md extends zu{}class vd extends H{forward_params=["input_ids","attention_mask","position_ids","past_key_values","pixel_values","image_grid_thw"]}class Bd extends vd{get_rope_index(I,J,Ae,Pe){const{vision_config:Ee,image_token_id:Re,video_token_id:qe,vision_start_token_id:nt}=this.config,_t=Ee.spatial_merge_size??2,Rt=[];if(J||Ae){let Yt=I.tolist();Pe||(Pe=(0,c.ones_like)(I));const Jt=Pe.tolist(),Ct=Array.from({length:3},Cr=>Array.from({length:I.dims[0]},Vr=>Array.from({length:I.dims[1]},Zr=>1))),fr=J?J.tolist():[],$t=Ae?Ae.tolist():[];let Tt=0,or=0;for(let Cr=0;Cr<Yt.length;++Cr){const Vr=Yt[Cr].filter((Qr,Mn)=>Jt[Cr][Mn]==1),pn=Vr.reduce((Qr,Mn,Ei)=>(Mn==nt&&Qr.push(Ei),Qr),[]).map(Qr=>Vr[Qr+1]),gn=pn.filter(Qr=>Qr==Re).length,nr=pn.filter(Qr=>Qr==qe).length;let sn=[],Tn=0,wo=gn,qn=nr;for(let Qr=0;Qr<pn.length;++Qr){const Mn=Vr.findIndex((bo,da)=>da>Tn&&bo==Re),Ei=Vr.findIndex((bo,da)=>da>Tn&&bo==qe),yo=wo>0&&Mn!==-1?Mn:Vr.length+1,fl=qn>0&&Ei!==-1?Ei:Vr.length+1;let Hd,Km,qm,Xm;yo<fl?([Km,qm,Xm]=fr[Tt],++Tt,--wo,Hd=yo):([Km,qm,Xm]=$t[or],++or,--qn,Hd=fl);const[B8,Zm,Kd]=[Number(Km),Math.floor(Number(qm)/_t),Math.floor(Number(Xm)/_t)],Jm=Hd-Tn,OS=sn.length>0?(0,A.max)(sn.at(-1))[0]+1:0;sn.push(Array.from({length:3*Jm},(bo,da)=>OS+da%Jm));const ef=Jm+OS,qd=B8*Zm*Kd,x8=Array.from({length:qd},(bo,da)=>ef+Math.floor(da/(Zm*Kd))),E8=Array.from({length:qd},(bo,da)=>ef+Math.floor(da/Kd)%Zm),D8=Array.from({length:qd},(bo,da)=>ef+da%Kd);sn.push([x8,E8,D8].flat()),Tn=Hd+qd}if(Tn<Vr.length){const Qr=sn.length>0?(0,A.max)(sn.at(-1))[0]+1:0,Mn=Vr.length-Tn;sn.push(Array.from({length:3*Mn},(Ei,yo)=>Qr+yo%Mn))}const ca=sn.reduce((Qr,Mn)=>Qr+Mn.length,0),hl=new Array(ca);let ml=0;for(let Qr=0;Qr<3;++Qr)for(let Mn=0;Mn<sn.length;++Mn){const Ei=sn[Mn],yo=Ei.length/3;for(let fl=Qr*yo;fl<(Qr+1)*yo;++fl)hl[ml++]=Ei[fl]}let Qd=0;const ju=Jt[Cr];for(let Qr=0;Qr<ju.length;++Qr)if(ju[Qr]==1){for(let Mn=0;Mn<3;++Mn)Ct[Mn][Cr][Qr]=hl[Mn*ca/3+Qd];++Qd}const v8=(0,A.max)(hl)[0];Rt.push(v8+1-Yt[Cr].length)}return[new c.Tensor("int64",Ct.flat(1/0),[3,I.dims[0],I.dims[1]]),new c.Tensor("int64",Rt,[Rt.length,1])]}else if(Pe){const{data:Yt,dims:Jt}=fe(Pe),Ct=BigInt64Array.from({length:3*Yt.length},($t,Tt)=>Yt[Tt%Yt.length]),fr=Array.from({length:Jt[0]},($t,Tt)=>(0,A.max)(Yt.subarray(Jt[1]*Tt,Jt[1]*(Tt+1)))[0]+1n+BigInt(Jt[1]));return[new c.Tensor("int64",Ct,[3,...Jt]),new c.Tensor("int64",fr,[fr.length,1])]}else{const[Yt,Jt]=I.dims,Ct=BigInt64Array.from({length:3*Yt*Jt},(fr,$t)=>BigInt(Math.floor($t%Jt/Yt)));return[new c.Tensor("int64",Ct,[3,...I.dims]),(0,c.zeros)([Yt,1])]}}async encode_image({pixel_values:I,image_grid_thw:J}){return(await j(this.sessions.vision_encoder,{pixel_values:I,grid_thw:J})).image_features}_merge_input_ids_with_image_features(I){return q({image_token_id:this.config.image_token_id,...I})}prepare_inputs_for_generation(I,J,Ae){if(J.attention_mask&&!J.position_ids)if(!J.past_key_values)[J.position_ids,J.rope_deltas]=this.get_rope_index(J.input_ids,J.image_grid_thw,J.video_grid_thw,J.attention_mask);else{J.pixel_values=null;const Pe=BigInt(Object.values(J.past_key_values)[0].dims.at(-2)),Ee=J.rope_deltas.map(Re=>Pe+Re);J.position_ids=(0,c.stack)([Ee,Ee,Ee],0)}return J}}class Fu extends H{}class xd extends Fu{}class Ed extends Fu{}class Lu extends H{}class Dd extends Lu{}class Id extends Lu{}class Ru extends H{}class fo extends Ru{}class M extends Ru{}class T extends H{}class z extends T{}class G extends T{}class Z extends H{}class ue extends Z{}class me extends Z{}class Ge extends H{}class it extends Ge{}class mt extends Ge{async _call(I){return new Ht(await super._call(I))}}class Qt extends H{}class ir extends Qt{}class Ir extends Qt{async _call(I){return new Ht(await super._call(I))}}class Gr extends H{}class ua extends Gr{}class _o extends H{}class Td extends _o{}class pl extends _o{async _call(I){return new Ht(await super._call(I))}}class $T extends H{}class ST extends $T{}class tm extends H{}class kT extends tm{}class OT extends tm{async _call(I){return new Ht(await super._call(I))}}class GT extends H{}class zT extends GT{}class rm extends H{}class FT extends rm{}class LT extends rm{async _call(I){return new Ht(await super._call(I))}}class RT extends H{}class YT extends RT{async _call(I){return new SS(await super._call(I))}}class nm extends H{}class NT extends nm{}class jT extends nm{async _call(I){return new Ht(await super._call(I))}}class sm extends H{}class UT extends sm{}class WT extends sm{async _call(I){return new Ht(await super._call(I))}}class am extends H{}class VT extends am{}class QT extends am{}class im extends H{}class HT extends im{}class KT extends im{}class om extends H{}class qT extends om{}class XT extends om{async _call(I){return new Ht(await super._call(I))}}class Cd extends H{}class ZT extends Cd{}class JT extends Cd{async _call(I){return new um(await super._call(I))}}class lm extends Cd{async _call(I){return new eC(await super._call(I))}}class um extends we{constructor({logits:I,pred_boxes:J}){super(),this.logits=I,this.pred_boxes=J}}class eC extends we{constructor({logits:I,pred_boxes:J,pred_masks:Ae}){super(),this.logits=I,this.pred_boxes=J,this.pred_masks=Ae}}class cm extends H{}class tC extends cm{}class rC extends cm{async _call(I){return new Yu(await super._call(I))}}class Yu extends we{constructor({logits:I,pred_boxes:J}){super(),this.logits=I,this.pred_boxes=J}}class dm extends H{}class nC extends dm{}class sC extends dm{async _call(I){return new aC(await super._call(I))}}class aC extends Yu{}class pm extends H{}class iC extends pm{}class oC extends pm{async _call(I){return new lC(await super._call(I))}}class lC extends Yu{}class gm extends H{}class uC extends gm{}class cC extends gm{async _call(I){return new Yu(await super._call(I))}}class Am extends H{}class dC extends Am{}class pC extends Am{async _call(I){return new gC(await super._call(I))}}class gC extends um{}class hm extends H{}class AC extends hm{}class hC extends hm{async _call(I){return new Ht(await super._call(I))}}class mm extends H{}class mC extends mm{}class fC extends mm{async _call(I){return new Ht(await super._call(I))}}class fm extends H{}class _C extends fm{}class wC extends fm{async _call(I){return new Ht(await super._call(I))}}class $d extends H{}class yC extends $d{}class bC extends $d{async _call(I){return new Ht(await super._call(I))}}class PC extends $d{}class _m extends H{}class MC extends _m{}class vC extends _m{}class wm extends H{}class BC extends wm{}class xC extends wm{}class EC extends H{}
2832class DC extends EC{}class Sd extends H{}class IC extends Sd{}class TC extends Sd{}class CC extends Sd{}class $C extends H{}class SC extends $C{}class kC extends H{}class OC extends kC{}class GC extends H{}class zC extends GC{}class ym extends H{}class FC extends ym{}class LC extends ym{}class bm extends H{}class RC extends bm{}class YC extends bm{}class NC extends H{}class jC extends NC{}class Pm extends H{}class UC extends Pm{}class WC extends Pm{async _call(I){return new Ht(await super._call(I))}}class Mm extends H{}class VC extends Mm{}class QC extends Mm{async _call(I){return new Ht(await super._call(I))}}class vm extends H{}class HC extends vm{}class KC extends vm{async _call(I){return new Ht(await super._call(I))}}class Bm extends H{}class qC extends Bm{}class XC extends Bm{async _call(I){return new Ht(await super._call(I))}}class ZC extends H{}class JC extends ZC{}class e$ extends H{}class t$ extends e${}class r$ extends H{}class n$ extends r${}class xm extends H{}class s$ extends xm{}class a$ extends xm{async _call(I){return new i$(await super._call(I))}}class i$ extends we{constructor({logits:I,pred_boxes:J}){super(),this.logits=I,this.pred_boxes=J}}class o$ extends H{}class l$ extends o${async get_image_embeddings({pixel_values:I}){return await ne(this,{pixel_values:I})}async forward(I){!I.image_embeddings||!I.image_positional_embeddings?I={...I,...await this.get_image_embeddings(I)}:I={...I},I.input_labels??=(0,c.ones)(I.input_points.dims.slice(0,-1));const J={image_embeddings:I.image_embeddings,image_positional_embeddings:I.image_positional_embeddings};return I.input_points&&(J.input_points=I.input_points),I.input_labels&&(J.input_labels=I.input_labels),I.input_boxes&&(J.input_boxes=I.input_boxes),await j(this.sessions.prompt_encoder_mask_decoder,J)}async _call(I){return new u$(await super._call(I))}}class u$ extends we{constructor({iou_scores:I,pred_masks:J}){super(),this.iou_scores=I,this.pred_masks=J}}class c$ extends we{constructor({iou_scores:I,pred_masks:J,object_score_logits:Ae}){super(),this.iou_scores=I,this.pred_masks=J,this.object_score_logits=Ae}}class d$ extends H{}class kd extends d${async get_image_embeddings({pixel_values:I}){return await ne(this,{pixel_values:I})}async forward(I){const{num_feature_levels:J}=this.config.vision_config;if(Array.from({length:J},(Re,qe)=>`image_embeddings.${qe}`).some(Re=>!I[Re])?I={...I,...await this.get_image_embeddings(I)}:I={...I},I.input_points){if(I.input_boxes&&I.input_boxes.dims[1]!==1)throw new Error("When both `input_points` and `input_boxes` are provided, the number of boxes per image must be 1.");const Re=I.input_points.dims;I.input_labels??=(0,c.ones)(Re.slice(0,-1)),I.input_boxes??=(0,c.full)([Re[0],0,4],0)}else if(I.input_boxes){const Re=I.input_boxes.dims;I.input_labels=(0,c.full)([Re[0],Re[1],0],-1n),I.input_points=(0,c.full)([Re[0],1,0,2],0)}else throw new Error("At least one of `input_points` or `input_boxes` must be provided.");const Pe=this.sessions.prompt_encoder_mask_decoder,Ee=(0,o.pick)(I,Pe.inputNames);return await j(Pe,Ee)}async _call(I){return new c$(await super._call(I))}}class p$ extends kd{}class g$ extends kd{}class Em extends H{}class A$ extends Em{}class h$ extends Em{}class Dm extends H{}class m$ extends Dm{}class f$ extends Dm{}class Bi extends H{}class _$ extends Bi{}class w$ extends Bi{async _call(I){return new xi(await super._call(I))}}class y$ extends Bi{async _call(I){return new Ht(await super._call(I))}}class b$ extends Bi{async _call(I){return new Pn(await super._call(I))}}class P$ extends H{}class M$ extends P${async _call(I){return new xi(await super._call(I))}}class Im extends H{}class v$ extends Im{}class B$ extends Im{async _call(I){return new Pn(await super._call(I))}}class x$ extends H{}class E$ extends x${}class Od extends H{}class D$ extends Od{}class I$ extends Od{async _call(I){return new xi(await super._call(I))}}class T$ extends Od{async _call(I){return new Ht(await super._call(I))}}class Nu extends H{}class C$ extends Nu{}class $$ extends Nu{async _call(I){return new xi(await super._call(I))}}class S$ extends Nu{async _call(I){return new Ht(await super._call(I))}}class k$ extends Nu{async _call(I){return new Pn(await super._call(I))}}class Gd extends H{}class O$ extends Gd{}class G$ extends Gd{async _call(I){return new xi(await super._call(I))}}class z$ extends Gd{async _call(I){return new Ht(await super._call(I))}}class $z extends H{}class F$ extends Bi{}class L$ extends Bi{async _call(I){return new xi(await super._call(I))}}class R$ extends Bi{async _call(I){return new Ht(await super._call(I))}}class gl extends H{}class Y$ extends gl{}class N$ extends gl{async _call(I){return new xi(await super._call(I))}}class j$ extends gl{async _call(I){return new Ht(await super._call(I))}}class U$ extends gl{async _call(I){return new $S(await super._call(I))}}class W$ extends gl{async _call(I){return new Pn(await super._call(I))}}class V$ extends H{}class Q$ extends V${}class zd extends H{}class Sz extends zd{}class H$ extends zd{}class K$ extends zd{async generate_speech(I,J,{threshold:Ae=.5,minlenratio:Pe=0,maxlenratio:Ee=20,vocoder:Re=null}={}){const qe={input_ids:I},{encoder_outputs:nt,encoder_attention_mask:_t}=await ne(this,qe),Rt=nt.dims[1]/this.config.reduction_factor,Yt=Math.floor(Rt*Ee),Jt=Math.floor(Rt*Pe),Ct=this.config.num_mel_bins;let fr=[],$t=null,Tt=null,or=0;for(;;){++or;const Zr=L(!!Tt);let pn;Tt?pn=Tt.output_sequence_out:pn=new c.Tensor("float32",new Float32Array(Ct),[1,1,Ct]);let gn={use_cache_branch:Zr,output_sequence:pn,encoder_attention_mask:_t,speaker_embeddings:J,encoder_hidden_states:nt};this.addPastKeyValues(gn,$t),Tt=await j(this.sessions.decoder_model_merged,gn),$t=this.getPastKeyValues(Tt,$t);const{prob:nr,spectrum:sn}=Tt;if(fr.push(sn),or>=Jt&&(Array.from(nr.data).filter(Tn=>Tn>=Ae).length>0||or>=Yt))break}const Cr=(0,c.cat)(fr),{waveform:Vr}=await j(Re.sessions.model,{spectrogram:Cr});return{spectrogram:Cr,waveform:Vr}}}class q$ extends H{main_input_name="spectrogram"}class X$ extends H{}class Tm extends X${async generate_speech({input_ids:I,attention_mask:J,style:Ae,num_inference_steps:Pe=5,speed:Ee=1.05}){const{sampling_rate:Re,chunk_compress_factor:qe,base_chunk_size:nt,latent_dim:_t}=this.config,{last_hidden_state:Rt,durations:Yt}=await j(this.sessions.text_encoder,{input_ids:I,attention_mask:J,style:Ae});Yt.div_(Ee);const Jt=Yt.max().item()*Re,Ct=nt*qe,fr=Math.floor((Jt+Ct-1)/Ct),$t=I.dims[0],Tt=(0,c.ones)([$t,fr]),or=(0,
vendor: 8,746 bytes, line 2832
2832c.full)([$t],Pe);let Cr=(0,c.randn)([$t,_t*qe,fr]);for(let Zr=0;Zr<Pe;++Zr){const pn=(0,c.full)([$t],Zr);({denoised_latents:Cr}=await j(this.sessions.latent_denoiser,{style:Ae,noisy_latents:Cr,latent_mask:Tt,encoder_outputs:Rt,attention_mask:J,timestep:pn,num_inference_steps:or}))}const{waveform:Vr}=await j(this.sessions.voice_decoder,{latents:Cr});return{waveform:Vr,durations:Yt}}}class Z$ extends H{}class J$ extends Z${}class Cm extends H{}class e2 extends Cm{}class t2 extends Cm{}class $m extends H{}class r2 extends $m{}class n2 extends $m{}class Sm extends H{}class s2 extends Sm{}class a2 extends Sm{}class km extends H{}class i2 extends km{}class o2 extends km{}class Om extends H{}class l2 extends Om{}class u2 extends Om{}class Gm extends H{}class c2 extends Gm{}class d2 extends Gm{}class Fd extends H{}class p2 extends Fd{}class g2 extends Fd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"text_model"})}}class A2 extends Fd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"audio_model"})}}class h2 extends H{}class zm extends h2{async _call(I){return new kS(await super._call(I))}}class Ld extends H{}class kz extends Ld{}class m2 extends Ld{}class f2 extends Ld{}class Fm extends H{}class _2 extends Fm{}class w2 extends Fm{}class Lm extends H{}class y2 extends Lm{}class b2 extends Lm{async _call(I){return new Ht(await super._call(I))}}class Rm extends H{}class Oz extends Rm{}class Gz extends Rm{}class Ym extends H{forward_params=["input_ids","attention_mask","encoder_outputs","decoder_input_ids","decoder_attention_mask","past_key_values"];_apply_and_filter_by_delay_pattern_mask(I){const[J,Ae]=I.dims,Pe=this.config.decoder.num_codebooks,Ee=Ae-Pe;let Re=0;for(let _t=0;_t<I.size;++_t){if(I.data[_t]===this.config.decoder.pad_token_id)continue;const Rt=_t%Ae,Yt=Math.floor(_t/Ae)%Pe,Jt=Rt-Yt;Jt>0&&Jt<=Ee&&(I.data[Re++]=I.data[_t])}const qe=Math.floor(J/Pe),nt=Re/(qe*Pe);return new c.Tensor(I.type,I.data.slice(0,Re),[qe,Pe,nt])}prepare_inputs_for_generation(I,J,Ae){let Pe=structuredClone(I);for(let Re=0;Re<Pe.length;++Re)for(let qe=0;qe<Pe[Re].length;++qe)Re%this.config.decoder.num_codebooks>=qe&&(Pe[Re][qe]=BigInt(this.config.decoder.pad_token_id));return Ae.guidance_scale!==null&&Ae.guidance_scale>1&&(Pe=Pe.concat(Pe)),super.prepare_inputs_for_generation(Pe,J,Ae)}async generate(I){const J=await super.generate(I),Ae=this._apply_and_filter_by_delay_pattern_mask(J).unsqueeze_(0),{audio_values:Pe}=await j(this.sessions.encodec_decode,{audio_codes:Ae});return Pe}}class Rd extends H{}class P2 extends Rd{}class M2 extends Rd{async _call(I){return new Ht(await super._call(I))}}class v2 extends Rd{}class Yd extends H{}class B2 extends Yd{}class x2 extends Yd{async _call(I){return new Ht(await super._call(I))}}class E2 extends Yd{}class Nd extends H{}class D2 extends Nd{}class I2 extends Nd{async _call(I){return new Ht(await super._call(I))}}class T2 extends Nd{}class jd extends H{}class C2 extends jd{}class $2 extends jd{async _call(I){return new Ht(await super._call(I))}}class S2 extends jd{}class k2 extends H{}class O2 extends k2{}class G2 extends H{}class z2 extends G2{forward_params=["input_ids","pixel_values","images_seq_mask","images_emb_mask","attention_mask","position_ids","past_key_values"];constructor(...I){super(...I),this._generation_mode="text"}async forward(I){const J=this._generation_mode??"text";let Ae;if(J==="text"||!I.past_key_values){const nt=this.sessions.prepare_inputs_embeds,_t=(0,o.pick)(I,nt.inputNames);Ae=await j(nt,_t)}else{const nt=this.sessions.gen_img_embeds,_t=(0,o.pick)({image_ids:I.input_ids},nt.inputNames);Ae=await j(nt,_t)}const Pe={...I,...Ae},Ee=await ce(this,Pe),Re=this.sessions[J==="text"?"lm_head":"gen_head"];if(!Re)throw new Error(`Unable to find "${Re}" generation head`);const qe=await j(Re,(0,o.pick)(Ee,Re.inputNames));return{...Ae,...Ee,...qe}}async generate(I){return this._generation_mode="text",super.generate(I)}async generate_images(I){this._generation_mode="image";const J=(I.inputs??I[this.main_input_name]).dims[1],Pe=(await super.generate(I)).slice(null,[J,null]),Ee=this.sessions.image_decode,{decoded_image:Re}=await j(Ee,{generated_tokens:Pe}),qe=Re.add_(1).mul_(255/2).clamp_(0,255).to("uint8"),nt=[];for(const _t of qe){const Rt=g.RawImage.fromTensor(_t);nt.push(Rt)}return nt}}class F2 extends we{constructor({char_logits:I,bpe_logits:J,wp_logits:Ae}){super(),this.char_logits=I,this.bpe_logits=J,this.wp_logits=Ae}get logits(){return[this.char_logits,this.bpe_logits,this.wp_logits]}}class L2 extends H{}class R2 extends L2{async _call(I){return new F2(await super._call(I))}}class Nm extends H{}class Y2 extends Nm{}class N2 extends Nm{}class jm extends H{}class j2 extends jm{}class U2 extends jm{}class W2 extends H{forward_params=["input_ids","attention_mask","position_ids","audio_values","past_key_values"]}class Um extends W2{_merge_input_ids_with_audio_features(I){const J=I.audio_features.dims.at(-1),Ae=I.audio_features.view(-1,J);return V({audio_token_id:this.config.ignore_index??this.config.audio_token_id,...I,audio_features:Ae})}}class V2 extends Um{}class Ud extends H{main_input_name="input_values";forward_params=["input_values"]}class Q2 extends we{constructor({audio_codes:I}){super(),this.audio_codes=I}}class H2 extends we{constructor({audio_values:I}){super(),this.audio_values=I}}class K2 extends Ud{async encode(I){return new Q2(await j(this.sessions.encoder_model,I))}async decode(I){return new H2(await j(this.sessions.decoder_model,I))}}class q2 extends Ud{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"encoder_model"})}}class X2 extends Ud{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"decoder_model"})}}class Wd extends H{main_input_name="input_values";forward_params=["input_values"]}class Z2 extends we{constructor({audio_codes:I}){super(),this.audio_codes=I}}class J2 extends we{constructor({audio_values:I}){super(),this.audio_values=I}}class eS extends Wd{async encode(I){return new Z2(await j(this.sessions.encoder_model,I))}async decode(I){return new J2(await j(this.sessions.decoder_model,I))}}class tS extends Wd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"encoder_model"})}}class rS extends Wd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"decoder_model"})}}class Vd extends H{main_input_name="input_values";forward_params=["input_values"]}class nS extends Vd{async encode(I){return await j(this.sessions.encoder_model,I)}async decode(I){return await j(this.sessions.decoder_model,I)}}class sS extends Vd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"encoder_model"})}}class aS extends Vd{static async from_pretrained(I,J={}){return super.from_pretrained(I,{...J,model_file_name:J.model_file_name??"decoder_model"})}}class Tr{static MODEL_CLASS_MAPPINGS=null;static BASE_IF_FAIL=!1;static async from_pretrained(I,{progress_callback:J=null,config:Ae=null,cache_dir:Pe=null,local_files_only:Ee=!1,revision:Re="main",model_file_name:qe=null,subfolder:nt="onnx",device:_t=null,dtype:Rt=null,use_external_data_format:Yt=null,session_options:Jt={}}={}){const Ct={progress_callback:J,config:Ae,cache_dir:Pe,local_files_only:Ee,revision:Re,model_file_name:qe,subfolder:nt,device:_t,dtype:Rt,use_external_data_format:Yt,session_options:Jt};if(Ct.config=await n.AutoConfig.from_pretrained(I,Ct),!this.MODEL_CLASS_MAPPINGS)throw new Error("`MODEL_CLASS_MAPPINGS` not implemented for this type of `AutoClass`: "+this.name);const fr=Ct.config.model_type;for(const $t of this.MODEL_CLASS_MAPPINGS){let Tt=$t.get(fr);if(!Tt){for(const or of $t.values())if(or[0]===fr){Tt=or;break}if(!Tt)continue}return await Tt[1].from_pretrained(I,Ct)}if(this.BASE_IF_FAIL)return CS.has(fr)||console.warn(`Unknown model class "${fr}", attempting to construct from base class.`),await H.from_pretrained(I,Ct);throw Error(`Unsupported model type: ${fr}`)}}const zz=new Map([["bert",["BertModel",Se]],["neobert",["NeoBertModel",rt]],["modernbert",["ModernBertModel",Xe]],["nomic_bert",["NomicBertModel",ar]],["roformer",["RoFormerModel",ma]],["electra",["ElectraModel",Ft]],["esm",["EsmModel",ea]],["convbert",["ConvBertModel",Ms]],["camembert",["CamembertModel",le]],["deberta",["DebertaModel",Ot]],["deberta-v2",["DebertaV2Model",yr]],["mpnet",["MPNetModel",ta]],["albert",["AlbertModel",ct]],["distilbert",["DistilBertModel",fn]],["roberta",["RobertaModel",ao]],["xlm",["XLMMo
2832del",Uo]],["xlm-roberta",["XLMRobertaModel",oo]],["clap",["ClapModel",p2]],["clip",["CLIPModel",mi]],["clipseg",["CLIPSegModel",yi]],["chinese_clip",["ChineseCLIPModel",ia]],["siglip",["SiglipModel",wi]],["jina_clip",["JinaCLIPModel",va]],["mobilebert",["MobileBertModel",wn]],["squeezebert",["SqueezeBertModel",te]],["wav2vec2",["Wav2Vec2Model",_$]],["wav2vec2-bert",["Wav2Vec2BertModel",O$]],["unispeech",["UniSpeechModel",D$]],["unispeech-sat",["UniSpeechSatModel",C$]],["hubert",["HubertModel",F$]],["wavlm",["WavLMModel",Y$]],["audio-spectrogram-transformer",["ASTModel",ci]],["vits",["VitsModel",zm]],["pyannote",["PyAnnoteModel",v$]],["wespeaker-resnet",["WeSpeakerResNetModel",E$]],["detr",["DetrModel",ZT]],["rt_detr",["RTDetrModel",tC]],["rt_detr_v2",["RTDetrV2Model",nC]],["rf_detr",["RFDetrModel",iC]],["d_fine",["DFineModel",uC]],["table-transformer",["TableTransformerModel",dC]],["vit",["ViTModel",it]],["ijepa",["IJepaModel",ir]],["pvt",["PvtModel",Td]],["vit_msn",["ViTMSNModel",kT]],["vit_mae",["ViTMAEModel",ST]],["groupvit",["GroupViTModel",zT]],["fastvit",["FastViTModel",FT]],["mobilevit",["MobileViTModel",NT]],["mobilevitv2",["MobileViTV2Model",UT]],["owlvit",["OwlViTModel",VT]],["owlv2",["Owlv2Model",HT]],["beit",["BeitModel",qT]],["deit",["DeiTModel",AC]],["hiera",["HieraModel",mC]],["convnext",["ConvNextModel",UC]],["convnextv2",["ConvNextV2Model",VC]],["dinov2",["Dinov2Model",HC]],["dinov2_with_registers",["Dinov2WithRegistersModel",qC]],["dinov3_vit",["DINOv3ViTModel",JC]],["dinov3_convnext",["DINOv3ConvNextModel",t$]],["resnet",["ResNetModel",_C]],["swin",["SwinModel",yC]],["swin2sr",["Swin2SRModel",MC]],["donut-swin",["DonutSwinModel",jC]],["yolos",["YolosModel",s$]],["dpt",["DPTModel",BC]],["glpn",["GLPNModel",RC]],["hifigan",["SpeechT5HifiGan",q$]],["efficientnet",["EfficientNetModel",y2]],["decision_transformer",["DecisionTransformerModel",O2]],["patchtst",["PatchTSTForPrediction",Y2]],["patchtsmixer",["PatchTSMixerForPrediction",j2]],["mobilenet_v1",["MobileNetV1Model",P2]],["mobilenet_v2",["MobileNetV2Model",B2]],["mobilenet_v3",["MobileNetV3Model",D2]],["mobilenet_v4",["MobileNetV4Model",C2]],["maskformer",["MaskFormerModel",FC]],["mgp-str",["MgpstrForSceneTextRecognition",R2]],["style_text_to_speech_2",["StyleTextToSpeech2Model",Q$]]]),Fz=new Map([["t5",["T5Model",jt]],["longt5",["LongT5Model",gr]],["mt5",["MT5Model",Dn]],["bart",["BartModel",Jn]],["mbart",["MBartModel",Wn]],["marian",["MarianModel",A$]],["whisper",["WhisperModel",uo]],["m2m_100",["M2M100Model",m$]],["blenderbot",["BlenderbotModel",Nr]],["blenderbot-small",["BlenderbotSmallModel",zn]]]),Lz=new Map([["mimi",["MimiModel",K2]],["dac",["DacModel",eS]],["snac",["SnacModel",nS]]]),Rz=new Map([["bloom",["BloomModel",fo]],["jais",["JAISModel",Ra]],["gpt2",["GPT2Model",Cs]],["gptj",["GPTJModel",x]],["gpt_bigcode",["GPTBigCodeModel",K]],["gpt_neo",["GPTNeoModel",Ea]],["gpt_neox",["GPTNeoXModel",vi]],["codegen",["CodeGenModel",Le]],["llama",["LlamaModel",wt]],["nanochat",["NanoChatModel",$s]],["arcee",["ArceeModel",pu]],["lfm2",["Lfm2Model",Au]],["smollm3",["SmolLM3Model",mu]],["exaone",["ExaoneModel",Pu]],["olmo",["OlmoModel",xu]],["olmo2",["Olmo2Model",dl]],["mobilellm",["MobileLLMModel",vu]],["granite",["GraniteModel",sd]],["granitemoehybrid",["GraniteMoeHybridModel",id]],["cohere",["CohereModel",ld]],["gemma",["GemmaModel",cd]],["gemma2",["Gemma2Model",pd]],["vaultgemma",["VaultGemmaModel",Ad]],["gemma3_text",["Gemma3Model",md]],["helium",["HeliumModel",_u]],["glm",["GlmModel",yu]],["openelm",["OpenELMModel",_d]],["qwen2",["Qwen2Model",yd]],["qwen3",["Qwen3Model",Pd]],["phi",["PhiModel",xd]],["phi3",["Phi3Model",Dd]],["mpt",["MptModel",z]],["opt",["OPTModel",ue]],["mistral",["MistralModel",e2]],["ministral",["MinistralModel",r2]],["ministral3",["Ministral3Model",s2]],["ernie4_5",["Ernie4_5Model",i2]],["starcoder2",["Starcoder2Model",l2]],["falcon",["FalconModel",c2]],["stablelm",["StableLmModel",_2]],["modernbert-decoder",["ModernBertDecoderModel",Vt]]]),Wm=new Map([["speecht5",["SpeechT5ForSpeechToText",H$]],["whisper",["WhisperForConditionalGeneration",di]],["lite-whisper",["LiteWhisperForConditionalGeneration",qo]],["moonshine",["MoonshineForConditionalGeneration",Oa]]]),iS=new Map([["speecht5",["SpeechT5ForTextToSpeech",K$]]]),oS=new Map([["vits",["VitsModel",zm]],["musicgen",["MusicgenForConditionalGeneration",Ym]],["supertonic",["SupertonicForConditionalGeneration",Tm]]]),lS=new Map([["bert",["BertForSequenceClassification",ve]],["neobert",["NeoBertForSequenceClassification",ht]],["modernbert",["ModernBertForSequenceClassification",yt]],["roformer",["RoFormerForSequenceClassification",_a]],["electra",["ElectraF
2832orSequenceClassification",S]],["esm",["EsmForSequenceClassification",xs]],["convbert",["ConvBertForSequenceClassification",Er]],["camembert",["CamembertForSequenceClassification",Oe]],["deberta",["DebertaForSequenceClassification",St]],["deberta-v2",["DebertaV2ForSequenceClassification",vs]],["mpnet",["MPNetForSequenceClassification",ra]],["albert",["AlbertForSequenceClassification",ut]],["distilbert",["DistilBertForSequenceClassification",qr]],["roberta",["RobertaForSequenceClassification",No]],["xlm",["XLMForSequenceClassification",Vo]],["xlm-roberta",["XLMRobertaForSequenceClassification",li]],["bart",["BartForSequenceClassification",Wr]],["mbart",["MBartForSequenceClassification",Xr]],["mobilebert",["MobileBertForSequenceClassification",Ze]],["squeezebert",["SqueezeBertForSequenceClassification",pe]]]),uS=new Map([["bert",["BertForTokenClassification",Ve]],["neobert",["NeoBertForTokenClassification",He]],["modernbert",["ModernBertForTokenClassification",Mt]],["roformer",["RoFormerForTokenClassification",Ur]],["electra",["ElectraForTokenClassification",ie]],["esm",["EsmForTokenClassification",Es]],["convbert",["ConvBertForTokenClassification",us]],["camembert",["CamembertForTokenClassification",gt]],["deberta",["DebertaForTokenClassification",rr]],["deberta-v2",["DebertaV2ForTokenClassification",En]],["mpnet",["MPNetForTokenClassification",ii]],["distilbert",["DistilBertForTokenClassification",vr]],["roberta",["RobertaForTokenClassification",io]],["xlm",["XLMForTokenClassification",Qo]],["xlm-roberta",["XLMRobertaForTokenClassification",lo]]]),Vm=new Map([["t5",["T5ForConditionalGeneration",Or]],["longt5",["LongT5ForConditionalGeneration",Ar]],["mt5",["MT5ForConditionalGeneration",Un]],["bart",["BartForConditionalGeneration",Yr]],["mbart",["MBartForConditionalGeneration",gs]],["marian",["MarianMTModel",h$]],["m2m_100",["M2M100ForConditionalGeneration",f$]],["blenderbot",["BlenderbotForConditionalGeneration",rn]],["blenderbot-small",["BlenderbotSmallForConditionalGeneration",wa]]]),Qm=new Map([["bloom",["BloomForCausalLM",M]],["gpt2",["GPT2LMHeadModel",Pi]],["jais",["JAISLMHeadModel",Wt]],["gptj",["GPTJForCausalLM",C]],["gpt_bigcode",["GPTBigCodeForCausalLM",ee]],["gpt_neo",["GPTNeoForCausalLM",Mi]],["gpt_neox",["GPTNeoXForCausalLM",Na]],["codegen",["CodeGenForCausalLM",Qe]],["llama",["LlamaForCausalLM",Lt]],["nanochat",["NanoChatForCausalLM",mo]],["llama4_text",["Llama4ForCausalLM",mr]],["arcee",["ArceeForCausalLM",gu]],["lfm2",["Lfm2ForCausalLM",hu]],["smollm3",["SmolLM3ForCausalLM",fu]],["exaone",["ExaoneForCausalLM",Mu]],["olmo",["OlmoForCausalLM",Ss]],["olmo2",["Olmo2ForCausalLM",nd]],["mobilellm",["MobileLLMForCausalLM",Bu]],["granite",["GraniteForCausalLM",ad]],["granitemoehybrid",["GraniteMoeHybridForCausalLM",od]],["cohere",["CohereForCausalLM",ud]],["gemma",["GemmaForCausalLM",dd]],["gemma2",["Gemma2ForCausalLM",gd]],["vaultgemma",["VaultGemmaForCausalLM",hd]],["gemma3_text",["Gemma3ForCausalLM",fd]],["helium",["HeliumForCausalLM",wu]],["glm",["GlmForCausalLM",bu]],["openelm",["OpenELMForCausalLM",wd]],["qwen2",["Qwen2ForCausalLM",bd]],["qwen3",["Qwen3ForCausalLM",Md]],["phi",["PhiForCausalLM",Ed]],["phi3",["Phi3ForCausalLM",Id]],["mpt",["MptForCausalLM",G]],["opt",["OPTForCausalLM",me]],["mbart",["MBartForCausalLM",es]],["mistral",["MistralForCausalLM",t2]],["ministral",["MinistralForCausalLM",n2]],["ministral3",["Ministral3ForCausalLM",a2]],["ernie4_5",["Ernie4_5ForCausalLM",o2]],["starcoder2",["Starcoder2ForCausalLM",u2]],["falcon",["FalconForCausalLM",d2]],["trocr",["TrOCRForCausalLM",J$]],["stablelm",["StableLmForCausalLM",w2]],["modernbert-decoder",["ModernBertDecoderForCausalLM",tn]],["phi3_v",["Phi3VForCausalLM",La]]]),Yz=new Map([["multi_modality",["MultiModalityCausalLM",z2]]]),cS=new Map([["bert",["BertForMaskedLM",ze]],["neobert",["NeoBertForMaskedLM",Ue]],["modernbert",["ModernBertForMaskedLM",We]],["roformer",["RoFormerForMaskedLM",fa]],["electra",["ElectraForMaskedLM",ds]],["esm",["EsmForMaskedLM",Bs]],["convbert",["ConvBertForMaskedLM",kt]],["camembert",["CamembertForMaskedLM",_e]],["deberta",["DebertaForMaskedLM",lt]],["deberta-v2",["DebertaV2ForMaskedLM",ln]],["mpnet",["MPNetForMaskedLM",Ds]],["albert",["AlbertForMaskedLM",st]],["distilbert",["DistilBertForMaskedLM",jn]],["roberta",["RobertaF
2832orMaskedLM",Yo]],["xlm",["XLMWithLMHeadModel",Wo]],["xlm-roberta",["XLMRobertaForMaskedLM",oi]],["mobilebert",["MobileBertForMaskedLM",Ke]],["squeezebert",["SqueezeBertForMaskedLM",de]]]),dS=new Map([["bert",["BertForQuestionAnswering",Be]],["neobert",["NeoBertForQuestionAnswering",dt]],["roformer",["RoFormerForQuestionAnswering",mn]],["electra",["ElectraForQuestionAnswering",X]],["convbert",["ConvBertForQuestionAnswering",cs]],["camembert",["CamembertForQuestionAnswering",Et]],["deberta",["DebertaForQuestionAnswering",Hr]],["deberta-v2",["DebertaV2ForQuestionAnswering",ps]],["mpnet",["MPNetForQuestionAnswering",ye]],["albert",["AlbertForQuestionAnswering",pt]],["distilbert",["DistilBertForQuestionAnswering",Rr]],["roberta",["RobertaForQuestionAnswering",jo]],["xlm",["XLMForQuestionAnswering",Ho]],["xlm-roberta",["XLMRobertaForQuestionAnswering",Ko]],["mobilebert",["MobileBertForQuestionAnswering",ft]],["squeezebert",["SqueezeBertForQuestionAnswering",xe]]]),Hm=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",pi]],["idefics3",["Idefics3ForConditionalGeneration",Pa]],["smolvlm",["SmolVLMForConditionalGeneration",aa]]]),pS=new Map([["llava",["LlavaForConditionalGeneration",gi]],["llava_onevision",["LlavaOnevisionForConditionalGeneration",Xo]],["moondream1",["Moondream1ForConditionalGeneration",Zo]],["florence2",["Florence2ForConditionalGeneration",el]],["qwen2-vl",["Qwen2VLForConditionalGeneration",Bd]],["idefics3",["Idefics3ForConditionalGeneration",Pa]],["smolvlm",["SmolVLMForConditionalGeneration",aa]],["paligemma",["PaliGemmaForConditionalGeneration",Ga]],["llava_qwen2",["LlavaQwen2ForCausalLM",Ai]],["gemma3n",["Gemma3nForConditionalGeneration",hi]],["mistral3",["Mistral3ForConditionalGeneration",za]]]),gS=new Map([["ultravox",["UltravoxModel",Um]],["voxtral",["VoxtralForConditionalGeneration",V2]]]),Nz=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",pi]]]),AS=new Map([["vit",["ViTForImageClassification",mt]],["ijepa",["IJepaForImageClassification",Ir]],["pvt",["PvtForImageClassification",pl]],["vit_msn",["ViTMSNForImageClassification",OT]],["fastvit",["FastViTForImageClassification",LT]],["mobilevit",["MobileViTForImageClassification",jT]],["mobilevitv2",["MobileViTV2ForImageClassification",WT]],["beit",["BeitForImageClassification",XT]],["deit",["DeiTForImageClassification",hC]],["hiera",["HieraForImageClassification",fC]],["convnext",["ConvNextForImageClassification",WC]],["convnextv2",["ConvNextV2ForImageClassification",QC]],["dinov2",["Dinov2ForImageClassification",KC]],["dinov2_with_registers",["Dinov2WithRegistersForImageClassification",XC]],["resnet",["ResNetForImageClassification",wC]],["swin",["SwinForImageClassification",bC]],["segformer",["SegformerForImageClassification",m2]],["efficientnet",["EfficientNetForImageClassification",b2]],["mobilenet_v1",["MobileNetV1ForImageClassification",M2]],["mobilenet_v2",["MobileNetV2ForImageClassification",x2]],["mobilenet_v3",["MobileNetV3ForImageClassification",I2]],["mobilenet_v4",["MobileNetV4ForImageClassification",$2]]]),hS=new Map([["detr",["DetrForObjectDetection",JT]],["rt_detr",["RTDetrForObjectDetection",rC]],["rt_detr_v2",["RTDetrV2ForObjectDetection",sC]],["rf_detr",["RFDetrForObjectDetection",oC]],["d_fine",["DFineForObjectDetection",cC]],["table-transformer",["TableTransformerForObjectDetection",pC]],["yolos",["YolosForObjectDetection",a$]]]),mS=new Map([["owlvit",["OwlViTForObjectDetection",QT]],["owlv2",["Owlv2ForObjectDetection",KT]],["grounding-dino",["GroundingDinoForObjectDetection",n$]]]),Al=new Map([["detr",["DetrForSegmentation",lm]],["clipseg",["CLIPSegForImageSegmentation",bi]]]),fS=new Map([["segformer",["SegformerForSemanticSegmentation",f2]],["sapiens",["SapiensForSemanticSegmentation",IC]],["swin",["SwinForSemanticSegmentation",PC]],["mobilenet_v1",["MobileNetV1ForSemanticSegmentation",v2]],["mobilenet_v2",["MobileNetV2ForSemanticSegmentation",E2]],["mobilenet_v3",["MobileNetV3ForSemanticSegmentation",T2]],["mobilenet_v4",["MobileNetV4ForSemanticSegmentation",S2]]]),_S=new Map([["detr",["DetrForSegmentation",lm]],["maskformer",["MaskFormerForInstanceSegmentation",LC]]]),wS=new Map([["sam",["SamModel",l$]],["sam2",["Sam2Model",kd]],["edgetam",["EdgeTamModel",p$]],["sam3_tracker",["Sam3TrackerModel",g$]]]),yS=new Map([["wav2vec2",["Wav2Vec2ForCTC",w$]],["wav2vec2-bert",["Wav2Vec2BertForCTC",G$]],["unispeech",["UniSpeechForCTC",I$]],["unispeech-sat",["UniSpeechSatForCTC",$$]],["wavlm",["WavLMForCTC",N$]],["hubert",["HubertForCTC",L$]],["parakeet_ctc",["ParakeetForCTC",M$]]]),bS=new Map([["wav2vec2",["Wav2Vec2ForSequenceClassification",y$]],["wav2vec2-bert",["Wav2Vec2BertForSequenceClassification",z$]],["unispeech",["UniSpeechForSequenceClassification",T$]],["unispeech-sat",["UniSpeechSatForSequenceClassification",S$]],["wavlm",["WavLMForSequenceClassification",j$]],["hubert",["HubertForSequenceClassification",R$]],["audio-spectrogram-transformer",["ASTForAudioClassification",na]]]),PS=new Map([["wavlm",["WavLMForXVector",U$]]]),MS=new Map([["unispeech-sat",["UniSpeechSatForAudioFrameClassification",k$]],["wavlm",["WavLMForAudioFrameClassification",W$]],["wav2vec2",["Wav2Vec2ForAudioFrameClassification",b$]],["pyannote",["PyAnnoteForAudioFrameClassification",B$]]]),vS=new Map([["vitmatte",["VitMatteForImageMatting",YT]]]),jz=new Map([["patchtst",["PatchTSTForPrediction",N2]],["patchtsmixer",["PatchTSMixerForPrediction",U2]]]),BS=new Map([["swin2sr",["Swin2SRForImageSuperResolution",vC]]]),xS=new Map([["dpt",["DPTForDepthEstimation",xC]],["depth_anything",["DepthAnythingForDepthEstimation",DC]],["glpn",["GLPNForDepthEstimation",YC]],["sapiens",["SapiensForDepthEstimation",TC]],["depth_pro",["DepthProForDepthEstimation",SC]],["metric3d",["Metric3DForDepthEstimation",OC]],["metric3dv2",["Metric3Dv2ForDepthEstimation",zC]]]),ES=new Map([["sapiens",["SapiensForNormalEstimation",CC]]]),DS=new Map([["vitpose",["VitPoseForPoseEstimation",ua]]]),IS=new Map([["clip",["CLIPVisionModelWithProjection",ho]],["siglip",["SiglipVisionModel",vt]],["jina_clip",["JinaCLIPVisionModel",Ba]]]),TS=[[zz,_.EncoderOnly],[Fz,_.EncoderDecoder],[Rz,_.DecoderOnly],[Lz,_.AutoEncoder],[lS,_.EncoderOnly],[uS,_.EncoderOnly],[Vm,_.Seq2Seq],[Wm,_.Seq2Seq],[Qm,_.DecoderOnly],[Yz,_.MultiM
2832odality],[cS,_.EncoderOnly],[dS,_.EncoderOnly],[Hm,_.Vision2Seq],[pS,_.ImageTextToText],[gS,_.AudioTextToText],[AS,_.EncoderOnly],[Al,_.EncoderOnly],[_S,_.EncoderOnly],[fS,_.EncoderOnly],[vS,_.EncoderOnly],[jz,_.EncoderOnly],[BS,_.EncoderOnly],[xS,_.EncoderOnly],[ES,_.EncoderOnly],[DS,_.EncoderOnly],[hS,_.EncoderOnly],[mS,_.EncoderOnly],[wS,_.MaskGeneration],[yS,_.EncoderOnly],[bS,_.EncoderOnly],[iS,_.Seq2Seq],[oS,_.EncoderOnly],[PS,_.EncoderOnly],[MS,_.EncoderOnly],[IS,_.EncoderOnly]];for(const[D,I]of TS)for(const[J,Ae]of D.values())w.set(J,I),v.set(Ae,J),b.set(J,Ae);const Uz=[["MusicgenForConditionalGeneration",Ym,_.Musicgen],["Phi3VForCausalLM",La,_.Phi3V],["CLIPTextModelWithProjection",fi,_.EncoderOnly],["SiglipTextModel",Ma,_.EncoderOnly],["JinaCLIPTextModel",Vn,_.EncoderOnly],["ClapTextModelWithProjection",g2,_.EncoderOnly],["ClapAudioModelWithProjection",A2,_.EncoderOnly],["DacEncoderModel",tS,_.EncoderOnly],["DacDecoderModel",rS,_.EncoderOnly],["MimiEncoderModel",q2,_.EncoderOnly],["MimiDecoderModel",X2,_.EncoderOnly],["SnacEncoderModel",sS,_.EncoderOnly],["SnacDecoderModel",aS,_.EncoderOnly],["Gemma3nForConditionalGeneration",hi,_.ImageAudioTextToText],["SupertonicForConditionalGeneration",Tm,_.Supertonic]];for(const[D,I,J]of Uz)w.set(D,J),v.set(I,D),b.set(D,I);const CS=new Map([["modnet",Al],["birefnet",Al],["isnet",Al],["ben",Al]]);for(const[D,I]of CS.entries())I.set(D,["PreTrainedModel",H]),w.set(D,_.EncoderOnly),v.set(H,D),b.set(D,H);class Wz extends Tr{static MODEL_CLASS_MAPPINGS=TS.map(I=>I[0]);static BASE_IF_FAIL=!0}class Vz extends Tr{static MODEL_CLASS_MAPPINGS=[lS]}class Qz extends Tr{static MODEL_CLASS_MAPPINGS=[uS]}class Hz extends Tr{static MODEL_CLASS_MAPPINGS=[Vm]}class Kz extends Tr{static MODEL_CLASS_MAPPINGS=[Wm]}class qz extends Tr{static MODEL_CLASS_MAPPINGS=[iS]}class Xz extends Tr{static MODEL_CLASS_MAPPINGS=[oS]}class Zz extends Tr{static MODEL_CLASS_MAPPINGS=[Qm]}class Jz extends Tr{static MODEL_CLASS_MAPPINGS=[cS]}class e8 extends Tr{static MODEL_CLASS_MAPPINGS=[dS]}class t8 extends Tr{static MODEL_CLASS_MAPPINGS=[Hm]}class r8 extends Tr{static MODEL_CLASS_MAPPINGS=[AS]}class n8 extends Tr{static MODEL_CLASS_MAPPINGS=[Al]}class s8 extends Tr{static MODEL_CLASS_MAPPINGS=[fS]}class a8 extends Tr{static MODEL_CLASS_MAPPINGS=[_S]}class i8 extends Tr{static MODEL_CLASS_MAPPINGS=[hS]}class o8 extends Tr{static MODEL_CLASS_MAPPINGS=[mS]}class l8 extends Tr{static MODEL_CLASS_MAPPINGS=[wS]}class u8 extends Tr{static MODEL_CLASS_MAPPINGS=[yS]}class c8 extends Tr{static MODEL_CLASS_MAPPINGS=[bS]}class d8 extends Tr{static MODEL_CLASS_MAPPINGS=[PS]}class p8 extends Tr{static MODEL_CLASS_MAPPINGS=[MS]}class g8 extends Tr{static MODEL_CLASS_MAPPINGS=[Nz]}class A8 extends Tr{static MODEL_CLASS_MAPPINGS=[vS]}class h8 extends Tr{static MODEL_CLASS_MAPPINGS=[BS]}class m8 extends Tr{static MODEL_CLASS_MAPPINGS=[xS]}class f8 extends Tr{static MODEL_CLASS_MAPPINGS=[ES]}class _8 extends Tr{static MODEL_CLASS_MAPPINGS=[DS]}class w8 extends Tr{static MODEL_CLASS_MAPPINGS=[IS]}class y8 extends Tr{static MODEL_CLASS_MAPPINGS=[pS]}class b8 extends Tr{static MODEL_CLASS_MAPPINGS=[gS]}class P8 extends we{constructor({logits:I,past_key_values:J,encoder_outputs:Ae,decoder_attentions:Pe=null,cross_attentions:Ee=null}){super(),this.logits=I,this.past_key_values=J,this.encoder_outputs=Ae,this.decoder_attentions=Pe,this.cross_attentions=Ee}}class Ht extends we{constructor({logits:I,...J}){super(),this.logits=I;const Ae=Object.values(J);Ae.length>0&&(this.attentions=Ae)}}class $S extends we{constructor({logits:I,embeddings:J}){super(),this.logits=I,this.embeddings=J}}class Pn extends we{constructor({logits:I}){super(),this.logits=I}}class In extends we{constructor({logits:I}){super(),this.logits=I}}class Fn extends we{constructor({start_logits:I,end_logits:J}){super(),this.start_logits=I,this.end_logits=J}}class xi extends we{constructor({logits:I}){super(),this.logits=I}}class M8 extends we{constructor({logits:I,past_key_values:J}){super(),this.logits=I,this.past_key_values=J}}class SS extends we{constructor({alphas:I}){super(),this.alphas=I}}class kS extends we{constructor({waveform:I,spectrogram:J}){super(),this.waveform=I,this.spectrogram=J}}}),
2832"./src/models/audio_spectrogram_transformer/feature_extraction_audio_spectrogram_transformer.js":((e,t,r)=>{r.r(t),r.d(t,{ASTFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js");class a extends n.FeatureExtractor{constructor(o){super(o);const l=this.config.sampling_rate,u=(0,s.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(l/2),l,null,"kaldi",!0);this.mel_filters=u,this.window=(0,s.window_function)(400,"hann",{periodic:!1}),this.mean=this.config.mean,this.std=this.config.std}async _extract_fbank_features(o,l){return(0,s.spectrogram)(o,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,max_num_frames:l,transpose:!0})}async _call(o){(0,n.validate_audio_inputs)(o,"ASTFeatureExtractor");const l=await this._extract_fbank_features(o,this.config.max_length);if(this.config.do_normalize){const u=this.std*2,p=l.data;for(let d=0;d<p.length;++d)p[d]=(p[d]-this.mean)/u}return{input_values:l.unsqueeze_(0)}}}}),
2832"./src/models/auto/feature_extraction_auto.js":((e,t,r)=>{r.r(t),r.d(t,{AutoFeatureExtractor:()=>i});var n=r("./src/utils/constants.js"),s=r("./src/utils/hub.js");r("./src/base/feature_extraction_utils.js");var a=r("./src/models/feature_extractors.js");class i{static async from_pretrained(l,u={}){const p=await(0,s.getModelJSON)(l,n.FEATURE_EXTRACTOR_NAME,!0,u),d=p.feature_extractor_type,c=a[d];if(!c)throw new Error(`Unknown feature_extractor_type: '${d}'. Please report this at ${n.GITHUB_ISSUE_URL}.`);return new c(p)}}}),
2832"./src/models/auto/image_processing_auto.js":((e,t,r)=>{r.r(t),r.d(t,{AutoImageProcessor:()=>o});var n=r("./src/utils/constants.js"),s=r("./src/utils/hub.js"),a=r("./src/base/image_processors_utils.js"),i=r("./src/models/image_processors.js");class o{static async from_pretrained(u,p={}){const d=await(0,s.getModelJSON)(u,n.IMAGE_PROCESSOR_NAME,!0,p),c=d.image_processor_type??d.feature_extractor_type;let g=i[c?.replace(/Fast$/,"")];return g||(c!==void 0&&console.warn(`Image processor type '${c}' not found, assuming base ImageProcessor. Please report this at ${n.GITHUB_ISSUE_URL}.`),g=a.ImageProcessor),new g(d)}}}),
2832"./src/models/auto/processing_auto.js":((e,t,r)=>{r.r(t),r.d(t,{AutoProcessor:()=>u});var n=r("./src/utils/constants.js"),s=r("./src/utils/hub.js"),a=r("./src/base/processing_utils.js"),i=r("./src/models/processors.js"),o=r("./src/models/image_processors.js"),l=r("./src/models/feature_extractors.js");class u{static async from_pretrained(d,c={}){const g=await(0,s.getModelJSON)(d,n.IMAGE_PROCESSOR_NAME,!0,c),{image_processor_type:A,feature_extractor_type:m,processor_class:B}=g;if(B&&i[B])return i[B].from_pretrained(d,c);if(!A&&!m)throw new Error("No `image_processor_type` or `feature_extractor_type` found in the config.");const f={};if(A){const P=o[A.replace(/Fast$/,"")];if(!P)throw new Error(`Unknown image_processor_type: '${A}'.`);f.image_processor=new P(g)}if(m){const P=o[m];if(P)f.image_processor=new P(g);else{const _=l[m];if(!_)throw new Error(`Unknown feature_extractor_type: '${m}'.`);f.feature_extractor=new _(g)}}const h={};return new a.Processor(h,f,null)}}}),
2832"./src/models/beit/image_processing_beit.js":((e,t,r)=>{r.r(t),r.d(t,{BeitFeatureExtractor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/bit/image_processing_bit.js":((e,t,r)=>{r.r(t),r.d(t,{BitImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/chinese_clip/image_processing_chinese_clip.js":((e,t,r)=>{r.r(t),r.d(t,{ChineseCLIPFeatureExtractor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/clap/feature_extraction_clap.js":((e,t,r)=>{r.r(t),r.d(t,{ClapFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js");class a extends n.FeatureExtractor{constructor(o){super(o),this.mel_filters=(0,s.mel_filter_bank)(this.config.nb_frequency_bins,this.config.feature_size,this.config.frequency_min,this.config.frequency_max,this.config.sampling_rate,null,"htk"),this.mel_filters_slaney=(0,s.mel_filter_bank)(this.config.nb_frequency_bins,this.config.feature_size,this.config.frequency_min,this.config.frequency_max,this.config.sampling_rate,"slaney","slaney"),this.window=(0,s.window_function)(this.config.fft_window_size,"hann")}async _get_input_mel(o,l,u,p){let d;const c=o.length-l;if(c>0)if(u==="rand_trunc"){const g=Math.floor(Math.random()*(c+1));o=o.subarray(g,g+l),d=await this._extract_fbank_features(o,this.mel_filters_slaney,this.config.nb_max_samples)}else throw new Error(`Truncation strategy "${u}" not implemented`);else{if(c<0){let g=new Float64Array(l);if(g.set(o),p==="repeat")for(let A=o.length;A<l;A+=o.length)g.set(o.subarray(0,Math.min(o.length,l-A)),A);else if(p==="repeatpad")for(let A=o.length;A<-c;A+=o.length)g.set(o,A);o=g}if(u==="fusion")throw new Error(`Truncation strategy "${u}" not implemented`);d=await this._extract_fbank_features(o,this.mel_filters_slaney,this.config.nb_max_samples)}return d.unsqueeze_(0)}async _extract_fbank_features(o,l,u=null){return(0,s.spectrogram)(o,this.window,this.config.fft_window_size,this.config.hop_length,{power:2,mel_filters:l,log_mel:"dB",max_num_frames:u,do_pad:!1,transpose:!0})}async _call(o,{max_length:l=null}={}){return(0,n.validate_audio_inputs)(o,"ClapFeatureExtractor"),{input_features:(await this._get_input_mel(o,l??this.config.nb_max_samples,this.config.truncation,this.config.padding)).unsqueeze_(0)}}}}),
2832"./src/models/clip/image_processing_clip.js":((e,t,r)=>{r.r(t),r.d(t,{CLIPFeatureExtractor:()=>a,CLIPImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2832"./src/models/convnext/image_processing_convnext.js":((e,t,r)=>{r.r(t),r.d(t,{ConvNextFeatureExtractor:()=>a,ConvNextImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(o){super(o),this.crop_pct=this.config.crop_pct??224/256}async resize(o){const l=this.size?.shortest_edge;if(l===void 0)throw new Error("Size dictionary must contain 'shortest_edge' key.");if(l<384){const u=Math.floor(l/this.crop_pct),[p,d]=this.get_resize_output_image_size(o,{shortest_edge:u});o=await o.resize(p,d,{resample:this.resample}),o=await o.center_crop(l,l)}else o=await o.resize(l,l,{resample:this.resample});return o}}class a extends s{}}),
2832"./src/models/dac/feature_extraction_dac.js":((e,t,r)=>{r.r(t),r.d(t,{DacFeatureExtractor:()=>s});var n=r("./src/models/encodec/feature_extraction_encodec.js");class s extends n.EncodecFeatureExtractor{}}),
2832"./src/models/deit/image_processing_deit.js":((e,t,r)=>{r.r(t),r.d(t,{DeiTFeatureExtractor:()=>a,DeiTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
vendor: 651 bytes, line 2832
2832"./src/models/detr/image_processing_detr.js":((e,t,r)=>{r.r(t),r.d(t,{DetrFeatureExtractor:()=>i,DetrImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(l){const u=await super._call(l),p=[u.pixel_values.dims[0],64,64],d=(0,s.full)(p,1n);return{...u,pixel_mask:d}}post_process_object_detection(...l){return(0,n.post_process_object_detection)(...l)}post_process_panoptic_segmentation(...l){return(0,n.post_process_panoptic_segmentation)(...l)}post_process_instance_segmentation(...l){return(0,n.post_process_instance_segmentation)(...l)}}class i extends a{}}),
2832"./src/models/dinov3_vit/image_processing_dinov3_vit.js":((e,t,r)=>{r.r(t),r.d(t,{DINOv3ViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2832"./src/models/donut/image_processing_donut.js":((e,t,r)=>{r.r(t),r.d(t,{DonutFeatureExtractor:()=>a,DonutImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{pad_image(o,l,u,p={}){const[d,c,g]=l;let A=this.image_mean;Array.isArray(this.image_mean)||(A=new Array(g).fill(A));let m=this.image_std;Array.isArray(m)||(m=new Array(g).fill(A));const B=A.map((f,h)=>-f/m[h]);return super.pad_image(o,l,u,{center:!0,constant_values:B,...p})}}class a extends s{}}),
2832"./src/models/dpt/image_processing_dpt.js":((e,t,r)=>{r.r(t),r.d(t,{DPTFeatureExtractor:()=>a,DPTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2832"./src/models/efficientnet/image_processing_efficientnet.js":((e,t,r)=>{r.r(t),r.d(t,{EfficientNetImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(i){super(i),this.include_top=this.config.include_top??!0,this.include_top&&(this.image_std=this.image_std.map(o=>o*o))}}}),
2832"./src/models/encodec/feature_extraction_encodec.js":((e,t,r)=>{r.r(t),r.d(t,{EncodecFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js");class a extends n.FeatureExtractor{async _call(o){(0,n.validate_audio_inputs)(o,"EncodecFeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));const l=this.config.feature_size;if(o.length%l!==0)throw new Error(`The length of the audio data must be a multiple of the number of channels (${l}).`);const u=[1,l,o.length/l];return{input_values:new s.Tensor("float32",o,u)}}}}),
2832"./src/models/feature_extractors.js":((e,t,r)=>{r.r(t),r.d(t,{ASTFeatureExtractor:()=>n.ASTFeatureExtractor,ClapFeatureExtractor:()=>a.ClapFeatureExtractor,DacFeatureExtractor:()=>i.DacFeatureExtractor,EncodecFeatureExtractor:()=>s.EncodecFeatureExtractor,Gemma3nAudioFeatureExtractor:()=>o.Gemma3nAudioFeatureExtractor,ImageFeatureExtractor:()=>f.ImageProcessor,MoonshineFeatureExtractor:()=>l.MoonshineFeatureExtractor,ParakeetFeatureExtractor:()=>u.ParakeetFeatureExtractor,PyAnnoteFeatureExtractor:()=>p.PyAnnoteFeatureExtractor,SeamlessM4TFeatureExtractor:()=>d.SeamlessM4TFeatureExtractor,SnacFeatureExtractor:()=>c.SnacFeatureExtractor,SpeechT5FeatureExtractor:()=>g.SpeechT5FeatureExtractor,Wav2Vec2FeatureExtractor:()=>A.Wav2Vec2FeatureExtractor,WeSpeakerFeatureExtractor:()=>m.WeSpeakerFeatureExtractor,WhisperFeatureExtractor:()=>B.WhisperFeatureExtractor});var n=r("./src/models/audio_spectrogram_transformer/feature_extraction_audio_spectrogram_transformer.js"),s=r("./src/models/encodec/feature_extraction_encodec.js"),a=r("./src/models/clap/feature_extraction_clap.js"),i=r("./src/models/dac/feature_extraction_dac.js"),o=r("./src/models/gemma3n/feature_extraction_gemma3n.js"),l=r("./src/models/moonshine/feature_extraction_moonshine.js"),u=r("./src/models/parakeet/feature_extraction_parakeet.js"),p=r("./src/models/pyannote/feature_extraction_pyannote.js"),d=r("./src/models/seamless_m4t/feature_extraction_seamless_m4t.js"),c=r("./src/models/snac/feature_extraction_snac.js"),g=r("./src/models/speecht5/feature_extraction_speecht5.js"),A=r("./src/models/wav2vec2/feature_extraction_wav2vec2.js"),m=r("./src/models/wespeaker/feature_extraction_wespeaker.js"),B=r("./src/models/whisper/feature_extraction_whisper.js"),f=r("./src/base/image_processors_utils.js")}),
2832"./src/models/florence2/processing_florence2.js":((e,t,r)=>{r.r(t),r.d(t,{Florence2Processor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;constructor(l,u,p){super(l,u,p);const{tasks_answer_post_processing_type:d,task_prompts_without_inputs:c,task_prompts_with_input:g}=this.image_processor.config;this.tasks_answer_post_processing_type=new Map(Object.entries(d??{})),this.task_prompts_without_inputs=new Map(Object.entries(c??{})),this.task_prompts_with_input=new Map(Object.entries(g??{})),this.regexes={quad_boxes:/(.+?)<loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)>/gm,bboxes:/([^<]+)?<loc_(\d+)><loc_(\d+)><loc_(\d+)><loc_(\d+)>/gm},this.size_per_bin=1e3}construct_prompts(l){typeof l=="string"&&(l=[l]);const u=[];for(const p of l)if(this.task_prompts_without_inputs.has(p))u.push(this.task_prompts_without_inputs.get(p));else{for(const[d,c]of this.task_prompts_with_input)if(p.includes(d)){u.push(c.replaceAll("{input}",p).replaceAll(d,""));break}u.length!==l.length&&u.push(p)}return u}post_process_generation(l,u,p){const d=this.tasks_answer_post_processing_type.get(u)??"pure_text";l=l.replaceAll("<s>","").replaceAll("</s>","");let c;switch(d){case"pure_text":c=l;break;case"description_with_bboxes":case"bboxes":case"phrase_grounding":case"ocr":const g=d==="ocr"?"quad_boxes":"bboxes",A=l.matchAll(this.regexes[g]),m=[],B=[];for(const[f,h,...P]of A)m.push(h?h.trim():m.at(-1)??""),B.push(P.map((_,w)=>(Number(_)+.5)/this.size_per_bin*p[w%2]));c={labels:m,[g]:B};break;default:throw new Error(`Task "${u}" (of type "${d}") not yet implemented.`)}return{[u]:c}}async _call(l,u=null,p={}){if(!l&&!u)throw new Error("Either text or images must be provided");const d=await this.image_processor(l,p),c=u?this.tokenizer(this.construct_prompts(u),p):{};return{...d,...c}}}}),
2832"./src/models/gemma3n/feature_extraction_gemma3n.js":((e,t,r)=>{r.r(t),r.d(t,{Gemma3nAudioFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/audio.js");class i extends n.FeatureExtractor{constructor(l){super(l);const{fft_length:u,feature_size:p,min_frequency:d,max_frequency:c,sampling_rate:g,frame_length:A}=this.config,m=(0,a.mel_filter_bank)(Math.floor(1+u/2),p,d,c,g,null,"htk",!1);this.mel_filters=m,this.window=(0,a.window_function)(A,"hann")}async _extract_fbank_features(l,u){return(0,a.spectrogram)(l,this.window,this.config.frame_length,this.config.hop_length,{fft_length:this.config.fft_length,center:!1,onesided:!0,preemphasis:this.config.preemphasis,preemphasis_htk_flavor:this.config.preemphasis_htk_flavor,mel_filters:this.mel_filters,log_mel:"log",mel_floor:this.config.mel_floor,remove_dc_offset:!1,transpose:!0})}async _call(l,{max_length:u=48e4,truncation:p=!0,padding:d=!0,pad_to_multiple_of:c=128}={}){if((0,n.validate_audio_inputs)(l,"Gemma3nAudioFeatureExtractor"),p&&l.length>u&&(l=l.slice(0,u)),d&&l.length%c!==0){const m=c-l.length%c,B=new Float64Array(l.length+m);B.set(l),this.config.padding_value!==0&&B.fill(this.config.padding_value,l.length),l=B}const g=await this._extract_fbank_features(l,this.config.max_length),A=(0,s.full)([1,g.dims[0]],!0);return{input_features:g.unsqueeze_(0),input_features_mask:A}}}}),
2832"./src/models/gemma3n/processing_gemma3n.js":((e,t,r)=>{r.r(t),r.d(t,{Gemma3nProcessor:()=>o});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/models/auto/feature_extraction_auto.js"),i=r("./src/tokenizers.js");r("./src/utils/image.js"),r("./src/utils/audio.js");class o extends n.Processor{static image_processor_class=s.AutoImageProcessor;static feature_extractor_class=a.AutoFeatureExtractor;static tokenizer_class=i.AutoTokenizer;static uses_processor_config=!0;static uses_chat_template_file=!0;constructor(u,p,d){super(u,p,d),this.audio_seq_length=this.config.audio_seq_length,this.image_seq_length=this.config.image_seq_length;const{audio_token_id:c,boa_token:g,audio_token:A,eoa_token:m,image_token_id:B,boi_token:f,image_token:h,eoi_token:P}=this.tokenizer.config;this.audio_token_id=c,this.boa_token=g,this.audio_token=A;const _=A.repeat(this.audio_seq_length);this.full_audio_sequence=`
2833
2834${g}${_}${m}
2835
2836`,this.image_token_id=B,this.boi_token=f,this.image_token=h;const w=h.repeat(this.image_seq_length);this.full_image_sequence=`
2837
2838${f}${w}${P}
2839
2840`}async _call(u,p=null,d=null,c={}){typeof u=="string"&&(u=[u]);let g;d&&(g=await this.feature_extractor(d,c),u=u.map(B=>B.replaceAll(this.audio_token,this.full_audio_sequence)));let A;return p&&(A=await this.image_processor(p,c),u=u.map(B=>B.replaceAll(this.image_token,this.full_image_sequence))),{...this.tokenizer(u,c),...A,...g}}}}),
2840"./src/models/glpn/image_processing_glpn.js":((e,t,r)=>{r.r(t),r.d(t,{GLPNFeatureExtractor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2840"./src/models/grounding_dino/image_processing_grounding_dino.js":((e,t,r)=>{r.r(t),r.d(t,{GroundingDinoImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(o){const l=await super._call(o),u=l.pixel_values.dims,p=(0,s.ones)([u[0],u[2],u[3]]);return{...l,pixel_mask:p}}}}),
2840"./src/models/grounding_dino/processing_grounding_dino.js":((e,t,r)=>{r.r(t),r.d(t,{GroundingDinoProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js"),i=r("./src/base/image_processors_utils.js");function o(u,p){const c=u.dims.at(-1)-1,g=u.tolist();g.fill(!1,0,1),g.fill(!1,c);const A=p.tolist();return g.map((m,B)=>m?B:null).filter(m=>m!==null).map(m=>A[m])}class l extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;async _call(p,d,c={}){const g=p?await this.image_processor(p,c):{};return{...d?this.tokenizer(d,c):{},...g}}post_process_grounded_object_detection(p,d,{box_threshold:c=.25,text_threshold:g=.25,target_sizes:A=null}={}){const{logits:m,pred_boxes:B}=p,f=m.dims[0];if(A!==null&&A.length!==f)throw Error("Make sure that you pass in as many target sizes as the batch dimension of the logits");const h=m.dims.at(1),P=m.sigmoid(),_=P.max(-1).tolist(),w=B.tolist().map(v=>v.map(y=>(0,i.center_to_corners_format)(y))),b=[];for(let v=0;v<f;++v){const y=A!==null?A[v]:null;y!==null&&(w[v]=w[v].map(F=>F.map((R,L)=>R*y[(L+1)%2])));const $=_[v],k=[],W=[],j=[];for(let F=0;F<h;++F){const R=$[F];if(R<=c)continue;const L=w[v][F],Q=P[v][F];k.push(R),j.push(L);const ne=o(Q.gt(g),d[v]);W.push(ne)}b.push({scores:k,boxes:j,labels:this.batch_decode(W)})}return b}}}),
2840"./src/models/idefics3/image_processing_idefics3.js":((e,t,r)=>{r.r(t),r.d(t,{Idefics3ImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{constructor(o){super(o),this.do_image_splitting=o.do_image_splitting??!0,this.max_image_size=o.max_image_size}get_resize_for_vision_encoder(o,l){let[u,p]=o.dims.slice(-2);const d=p/u;return p>=u?(p=Math.ceil(p/l)*l,u=Math.floor(p/d),u=Math.ceil(u/l)*l):(u=Math.ceil(u/l)*l,p=Math.floor(u*d),p=Math.ceil(p/l)*l),{height:u,width:p}}async _call(o,{do_image_splitting:l=null,return_row_col_info:u=!1}={}){let p;if(!Array.isArray(o))p=[[o]];else{if(o.length===0||!o[0])throw new Error("No images provided.");Array.isArray(o[0])?p=o:p=[o]}let d=[],c=[],g=[];const A=[],m=[];for(const v of p){let y=await Promise.all(v.map(W=>this.preprocess(W)));A.push(...y.map(W=>W.original_size)),m.push(...y.map(W=>W.reshaped_input_size)),y.forEach(W=>W.pixel_values.unsqueeze_(0));const{longest_edge:$}=this.max_image_size;let k;if(l??this.do_image_splitting){let W=new Array(y.length),j=new Array(y.length);k=await Promise.all(y.map(async(F,R)=>{const L=this.get_resize_for_vision_encoder(F.pixel_values,$),Q=await(0,s.interpolate_4d)(F.pixel_values,{size:[L.height,L.width]}),{frames:ne,num_splits_h:re,num_splits_w:ce}=await this.split_image(Q,this.max_image_size);return W[R]=re,j[R]=ce,(0,s.cat)(ne,0)})),c.push(W),g.push(j)}else{const W=[$,$];k=await Promise.all(y.map(j=>(0,s.interpolate_4d)(j.pixel_values,{size:W}))),c.push(new Array(y.length).fill(0)),g.push(new Array(y.length).fill(0))}d.push((0,s.cat)(k,0))}const B=d.length,[f,h,P,_]=d[0].dims;let w,b;if(B===1)w=d[0].unsqueeze_(0),b=(0,s.full)([B,f,P,_],!0);else{const v=Math.max(...d.map(k=>k.dims.at(0)));b=(0,s.full)([B,v,P,_],!0);const y=b.data,$=v*P*_;for(let k=0;k<B;++k){const W=d[k].dims[0];if(W<v){d[k]=(0,s.cat)([d[k],(0,s.full)([v-W,h,P,_],0)],0);const j=k*$+W*P*_,F=(k+1)*$;y.fill(!1,j,F)}}w=(0,s.stack)(d,0)}return{pixel_values:w,pixel_attention_mask:b,original_sizes:A,reshaped_input_sizes:m,...u?{rows:c,cols:g}:{}}}async split_image(o,{longest_edge:l}){const u=l,p=l,d=[],[c,g]=o.dims.slice(-2);let A=0,m=0;if(c>u||g>p){A=Math.ceil(c/u),m=Math.ceil(g/p);const B=Math.ceil(c/A),f=Math.ceil(g/m);for(let _=0;_<A;++_)for(let w=0;w<m;++w){let b,v,y,$;_===A-1?(v=c-B,$=c):(v=_*B,$=(_+1)*B),w===m-1?(b=g-f,y=g):(b=w*f,y=(w+1)*f);const k=[v,b],W=[$,y],j=await(0,s.slice)(o,k,W,[2,3]);d.push(j)}const h=u,P=p;(c!==h||g!==P)&&(o=await(0,s.interpolate_4d)(o,{size:[h,P]}))}return d.push(o),{frames:d,num_splits_h:A,num_splits_w:m}}}}),
2840"./src/models/idefics3/processing_idefics3.js":((e,t,r)=>{r.r(t),r.d(t,{Idefics3Processor:()=>p});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");r("./src/utils/image.js");var i=r("./src/utils/core.js");function o(d,c,g,A,m,B){let f="";for(let h=0;h<c;++h){for(let P=0;P<g;++P)f+=A+`<row_${h+1}_col_${P+1}>`+m.repeat(d);f+=`
2841`}return f+=`
2842${A}${B}`+m.repeat(d)+`${A}`,f}function l(d,c,g,A){return`${c}${A}`+g.repeat(d)+`${c}`}function u(d,c,g,A,m,B){return d===0&&c===0?l(g,A,m,B):o(g,d,c,A,m,B)}class p extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;static uses_processor_config=!0;fake_image_token="<fake_token_around_image>";image_token="<image>";global_img_token="<global-img>";async _call(c,g=null,A={}){A.return_row_col_info??=!0;let m;g&&(m=await this.image_processor(g,A)),Array.isArray(c)||(c=[c]);const B=m.rows??[new Array(c.length).fill(0)],f=m.cols??[new Array(c.length).fill(0)],h=this.config.image_seq_len,P=[],_=[];for(let b=0;b<c.length;++b){const v=c[b],y=B[b],$=f[b];P.push((0,i.count)(v,this.image_token));const k=y.map((F,R)=>u(F,$[R],h,this.fake_image_token,this.image_token,this.global_img_token)),W=v.split(this.image_token);if(W.length===0)throw new Error("The image token should be present in the text.");let j=W[0];for(let F=0;F<k.length;++F)j+=k[F]+W[F+1];_.push(j)}return{...this.tokenizer(_),...m}}}}),
2842"./src/models/image_processors.js":((e,t,r)=>{r.r(t),r.d(t,{BeitFeatureExtractor:()=>n.BeitFeatureExtractor,BitImageProcessor:()=>s.BitImageProcessor,CLIPFeatureExtractor:()=>i.CLIPFeatureExtractor,CLIPImageProcessor:()=>i.CLIPImageProcessor,ChineseCLIPFeatureExtractor:()=>a.ChineseCLIPFeatureExtractor,ConvNextFeatureExtractor:()=>o.ConvNextFeatureExtractor,ConvNextImageProcessor:()=>o.ConvNextImageProcessor,DINOv3ViTImageProcessor:()=>p.DINOv3ViTImageProcessor,DPTFeatureExtractor:()=>c.DPTFeatureExtractor,DPTImageProcessor:()=>c.DPTImageProcessor,DeiTFeatureExtractor:()=>l.DeiTFeatureExtractor,DeiTImageProcessor:()=>l.DeiTImageProcessor,DetrFeatureExtractor:()=>u.DetrFeatureExtractor,DetrImageProcessor:()=>u.DetrImageProcessor,DonutFeatureExtractor:()=>d.DonutFeatureExtractor,DonutImageProcessor:()=>d.DonutImageProcessor,EfficientNetImageProcessor:()=>g.EfficientNetImageProcessor,GLPNFeatureExtractor:()=>A.GLPNFeatureExtractor,GroundingDinoImageProcessor:()=>m.GroundingDinoImageProcessor,Idefics3ImageProcessor:()=>B.Idefics3ImageProcessor,JinaCLIPImageProcessor:()=>h.JinaCLIPImageProcessor,LlavaOnevisionImageProcessor:()=>P.LlavaOnevisionImageProcessor,Mask2FormerImageProcessor:()=>_.Mask2FormerImageProcessor,MaskFormerFeatureExtractor:()=>w.MaskFormerFeatureExtractor,MaskFormerImageProcessor:()=>w.MaskFormerImageProcessor,MobileNetV1FeatureExtractor:()=>b.MobileNetV1FeatureExtractor,MobileNetV1ImageProcessor:()=>b.MobileNetV1ImageProcessor,MobileNetV2FeatureExtractor:()=>v.MobileNetV2FeatureExtractor,MobileNetV2ImageProcessor:()=>v.MobileNetV2ImageProcessor,MobileNetV3FeatureExtractor:()=>y.MobileNetV3FeatureExtractor,MobileNetV3ImageProcessor:()=>y.MobileNetV3ImageProcessor,MobileNetV4FeatureExtractor:()=>$.MobileNetV4FeatureExtractor,MobileNetV4ImageProcessor:()=>$.MobileNetV4ImageProcessor,MobileViTFeatureExtractor:()=>k.MobileViTFeatureExtractor,MobileViTImageProcessor:()=>k.MobileViTImageProcessor,NougatImageProcessor:()=>W.NougatImageProcessor,OwlViTFeatureExtractor:()=>F.OwlViTFeatureExtractor,OwlViTImageProcessor:()=>F.OwlViTImageProcessor,Owlv2ImageProcessor:()=>j.Owlv2ImageProcessor,Phi3VImageProcessor:()=>R.Phi3VImageProcessor,PixtralImageProcessor:()=>L.PixtralImageProcessor,PvtImageProcessor:()=>Q.PvtImageProcessor,Qwen2VLImageProcessor:()=>ne.Qwen2VLImageProcessor,RTDetrImageProcessor:()=>re.RTDetrImageProcessor,Sam2ImageProcessor:()=>ge.Sam2ImageProcessor,Sam3ImageProcessor:()=>q.Sam3ImageProcessor,SamImageProcessor:()=>ce.SamImageProcessor,SegformerFeatureExtractor:()=>V.SegformerFeatureExtractor,SegformerImageProcessor:()=>V.SegformerImageProcessor,SiglipImageProcessor:()=>U.SiglipImageProcessor,SmolVLMImageProcessor:()=>N.SmolVLMImageProcessor,Swin2SRImageProcessor:()=>oe.Swin2SRImageProcessor,VLMImageProcessor:()=>f.VLMImageProcessor,ViTFeatureExtractor:()=>fe.ViTFeatureExtractor,ViTImageProcessor:()=>fe.ViTImageProcessor,VitMatteImageProcessor:()=>De.VitMatteImageProcessor,VitPoseImageProcessor:()=>Ie.VitPoseImageProcessor,YolosFeatureExtractor:()=>je.YolosFeatureExtractor,YolosImageProcessor:()=>je.YolosImageProcessor});var n=r("./src/models/beit/image_processing_beit.js"),s=r("./src/models/bit/image_processing_bit.js"),a=r("./src/models/chinese_clip/image_processing_chinese_clip.js"),i=r("./src/models/clip/image_processing_clip.js"),o=r("./src/models/convnext/image_processing_convnext.js"),l=r("./src/models/deit/image_processing_deit.js"),u=r("./src/models/detr/image_processing_detr.js"),p=r("./src/models/dinov3_vit/image_processing_dinov3_vit.js"),d=r("./src/models/donut/image_processing_donut.js"),c=r("./src/models/dpt/image_processing_dpt.js"),g=r("./src/models/efficientnet/image_processing_efficientnet.js"),A=r("./src/models/glpn/image_processing_glpn.js"),m=r("./src/models/grounding_dino/image_processing_grounding_dino.js"),B=r("./src/models/idefics3/image_processing_idefics3.js"),f=r("./src/models/janus/image_processing_janus.js"),h=r("./src/models/jina_clip/image_processing_jina_clip.js"),P=r("./src/models/llava_onevision/image_processing_llava_onevision.js"),_=r("./src/models/mask2former/image_processing_mask2former.js"),w=r("./src/models/maskformer/image_processing_maskformer.js"),b=r("./src/models/mobilenet_v1/image_processing_mobilenet_v1.js"),v=r("./src/models/mobilenet_v2/image_processing_mobilenet_v2.js"),y=r("./src/models/mobilenet_v3/image_processing_mobilenet_v3.js"),$=r("./src/models/mobilenet_v4/image_processing_mobilenet_v4.js"),k=r("./src/models/mobilevit/image_processing_mobilevit.js"),W=r("./src/models/nougat/image_processing_nougat.js"),j=r("./src/models/owlv2/image_processing_owlv2.js"),F=r("./src/models/owlvit/image_processing_owlvit.js"),R=r("./src/models/phi3_v/image_processing_phi3_v.js"),L=r("./src/models/pixtral/image_processing_pixtral.js"),Q=r("./src/models/pvt/image_processing_pvt.js"),ne=r("./src/models/qwen2_vl/image_processing_qwen2_vl.js"),re=r("./src/models/rt_detr/image_processing_rt_detr.js"),ce=r("./src/models/sam/image_processing_sam.js"),ge=r("./src/models/sam2/image_processing_sam2.js"),q=r("./src/models/sam3/image_processing_sam3.js"),V=r("./src/models/segformer/image_processing_segformer.js"),U=r("./src/models/siglip/image_processing_siglip.js"),N=r("./src/models/smolvlm/image_processing_smolvlm.js"),oe=r("./src/models/swin2sr/image_processing_swin2sr.js"),fe=r("./src/models/vit/image_processing_vit.js"),De=r("./src/models/vitmatte/image_processing_vitmatte.js"),Ie=r("./src/models/vitpose/image_processing_vitpose.js"),je=r("./src/models/yolos/image_processing_yolos.js")}),
2842"./src/models/janus/image_processing_janus.js":((e,t,r)=>{r.r(t),r.d(t,{VLMImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(i){super({do_pad:!0,pad_size:{width:i.image_size,height:i.image_size},...i}),this.constant_values=this.config.background_color.map(o=>o*this.rescale_factor)}pad_image(i,o,l,u){return super.pad_image(i,o,l,{constant_values:this.constant_values,center:!0,...u})}}}),
2842"./src/models/janus/processing_janus.js":((e,t,r)=>{r.r(t),r.d(t,{VLChatProcessor:()=>u});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js"),i=r("./src/utils/core.js"),o=r("./src/utils/tensor.js"),l=r("./src/utils/image.js");class u extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;static uses_processor_config=!0;constructor(d,c,g){super(d,c,g),this.image_tag=this.config.image_tag,this.image_start_tag=this.config.image_start_tag,this.image_end_tag=this.config.image_end_tag,this.num_image_tokens=this.config.num_image_tokens}async _call(d,{images:c=null,chat_template:g="default"}={}){c?Array.isArray(c)||(c=[c]):c=await Promise.all(d.filter(k=>k.images).flatMap(k=>k.images).map(k=>l.RawImage.read(k)));const A=this.tokenizer,m=A.apply_chat_template(d,{tokenize:!1,add_generation_prompt:!0,chat_template:g}),B=k=>A.encode(k,{add_special_tokens:!1}),f=m.split(this.image_tag),h=f.length-1;if(c.length!==h)throw new Error(`Number of images provided (${c.length}) does not match number of "${this.image_tag}" image tags (${h})`);const[P,_,w]=A.model.convert_tokens_to_ids([this.image_tag,this.image_start_tag,this.image_end_tag]);let b=B(f[0]),v=new Array(b.length).fill(!1);for(let k=1;k<f.length;++k){const W=new Array(this.num_image_tokens).fill(P),j=B(f[k]);b=(0,i.mergeArrays)(b,[_],W,[w],j);const F=new Array(this.num_image_tokens).fill(!0);v=(0,i.mergeArrays)(v,[!1],F,[!1],new Array(j.length).fill(!1))}const y=[1,b.length],$={input_ids:new o.Tensor("int64",b,y),attention_mask:new o.Tensor("int64",new Array(b.length).fill(1),y),images_seq_mask:new o.Tensor("bool",v,y),images_emb_mask:new o.Tensor("bool",new Array(h*this.num_image_tokens).fill(!0),[1,h,this.num_image_tokens])};if(c&&c.length>0){const k=await this.image_processor(c);return k.pixel_values.unsqueeze_(0),{...$,...k}}return $}}}),
2842"./src/models/jina_clip/image_processing_jina_clip.js":((e,t,r)=>{r.r(t),r.d(t,{JinaCLIPImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{constructor(i){const{resize_mode:o,fill_color:l,interpolation:u,size:p,...d}=i,c=o==="squash"?{width:p,height:p}:o==="shortest"?{shortest_edge:p}:{longest_edge:p},g=u==="bicubic"?3:2;super({...d,size:c,resample:g,do_center_crop:!0,crop_size:p,do_normalize:!0})}}}),
2842"./src/models/jina_clip/processing_jina_clip.js":((e,t,r)=>{r.r(t),r.d(t,{JinaCLIPProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;async _call(l=null,u=null,p={}){if(!l&&!u)throw new Error("Either text or images must be provided");const d=l?this.tokenizer(l,p):{},c=u?await this.image_processor(u,p):{};return{...d,...c}}}}),
2842"./src/models/llava/processing_llava.js":((e,t,r)=>{r.r(t),r.d(t,{LlavaProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;static uses_processor_config=!0;async _call(l,u=null,p={}){const d=await this.image_processor(l,p);if(u){const[g,A]=d.pixel_values.dims.slice(-2),{image_token:m,patch_size:B,num_additional_image_tokens:f}=this.config,h=Math.floor(g/B)*Math.floor(A/B)+f;u=structuredClone(u),Array.isArray(u)||(u=[u]);for(let P=0;P<u.length;++P)u[P]=u[P].replace(m,m.repeat(h))}const c=u?this.tokenizer(u,p):{};return{...d,...c}}}}),
2842"./src/models/llava_onevision/image_processing_llava_onevision.js":((e,t,r)=>{r.r(t),r.d(t,{LlavaOnevisionImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2842"./src/models/mask2former/image_processing_mask2former.js":((e,t,r)=>{r.r(t),r.d(t,{Mask2FormerImageProcessor:()=>s});var n=r("./src/models/maskformer/image_processing_maskformer.js");class s extends n.MaskFormerImageProcessor{}}),
2842"./src/models/maskformer/image_processing_maskformer.js":((e,t,r)=>{r.r(t),r.d(t,{MaskFormerFeatureExtractor:()=>a,MaskFormerImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_panoptic_segmentation(...o){return(0,n.post_process_panoptic_segmentation)(...o)}post_process_instance_segmentation(...o){return(0,n.post_process_instance_segmentation)(...o)}}class a extends s{}}),
vendor: 1,964 bytes, line 2842
2842"./src/models/mgp_str/processing_mgp_str.js":((e,t,r)=>{r.r(t),r.d(t,{MgpstrProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js"),i=r("./src/utils/maths.js");const o={char:["char_decode",1],bpe:["bpe_decode",2],wp:["wp_decode",102]};class l extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;get char_tokenizer(){return this.components.char_tokenizer}get bpe_tokenizer(){return this.components.bpe_tokenizer}get wp_tokenizer(){return this.components.wp_tokenizer}_decode_helper(p,d){if(!o.hasOwnProperty(d))throw new Error(`Format ${d} is not supported.`);const[c,g]=o[d],A=this[c].bind(this),[m,B]=p.dims,f=[],h=[],P=p.tolist();for(let w=0;w<m;++w){const b=P[w],v=[],y=[];for(let k=1;k<B;++k){const[W,j]=(0,i.max)((0,i.softmax)(b[k]));if(y.push(W),j==g)break;v.push(j)}const $=y.length>0?y.reduce((k,W)=>k*W,1):0;h.push(v),f.push($)}return[A(h),f]}char_decode(p){return this.char_tokenizer.batch_decode(p).map(d=>d.replaceAll(" ",""))}bpe_decode(p){return this.bpe_tokenizer.batch_decode(p)}wp_decode(p){return this.wp_tokenizer.batch_decode(p).map(d=>d.replaceAll(" ",""))}batch_decode([p,d,c]){const[g,A]=this._decode_helper(p,"char"),[m,B]=this._decode_helper(d,"bpe"),[f,h]=this._decode_helper(c,"wp"),P=[],_=[];for(let w=0;w<g.length;++w){const[b,v]=(0,i.max)([A[w],B[w],h[w]]);P.push([g[w],m[w],f[w]][v]),_.push(b)}return{generated_text:P,scores:_,char_preds:g,bpe_preds:m,wp_preds:f}}static async from_pretrained(...p){const d=await super.from_pretrained(...p),c=await a.AutoTokenizer.from_pretrained("Xenova/gpt2"),g=await a.AutoTokenizer.from_pretrained("Xenova/bert-base-uncased");return d.components={image_processor:d.image_processor,char_tokenizer:d.tokenizer,bpe_tokenizer:c,wp_tokenizer:g},d}async _call(p,d=null){const c=await this.image_processor(p);return d&&(c.labels=this.tokenizer(d).input_ids),c}}}),
2842"./src/models/mobilenet_v1/image_processing_mobilenet_v1.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV1FeatureExtractor:()=>a,MobileNetV1ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilenet_v2/image_processing_mobilenet_v2.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV2FeatureExtractor:()=>a,MobileNetV2ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilenet_v3/image_processing_mobilenet_v3.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV3FeatureExtractor:()=>a,MobileNetV3ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilenet_v4/image_processing_mobilenet_v4.js":((e,t,r)=>{r.r(t),r.d(t,{MobileNetV4FeatureExtractor:()=>a,MobileNetV4ImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/mobilevit/image_processing_mobilevit.js":((e,t,r)=>{r.r(t),r.d(t,{MobileViTFeatureExtractor:()=>a,MobileViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2842"./src/models/moonshine/feature_extraction_moonshine.js":((e,t,r)=>{r.r(t),r.d(t,{MoonshineFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js");class a extends n.FeatureExtractor{async _call(o){(0,n.validate_audio_inputs)(o,"MoonshineFeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));const l=[1,o.length];return{input_values:new s.Tensor("float32",o,l)}}}}),
2842"./src/models/moonshine/processing_moonshine.js":((e,t,r)=>{r.r(t),r.d(t,{MoonshineProcessor:()=>i});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2842"./src/models/nougat/image_processing_nougat.js":((e,t,r)=>{r.r(t),r.d(t,{NougatImageProcessor:()=>s});var n=r("./src/models/donut/image_processing_donut.js");class s extends n.DonutImageProcessor{}}),
2842"./src/models/owlv2/image_processing_owlv2.js":((e,t,r)=>{r.r(t),r.d(t,{Owlv2ImageProcessor:()=>s});var n=r("./src/models/owlvit/image_processing_owlvit.js");class s extends n.OwlViTImageProcessor{}}),
2842"./src/models/owlvit/image_processing_owlvit.js":((e,t,r)=>{r.r(t),r.d(t,{OwlViTFeatureExtractor:()=>a,OwlViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_object_detection(...o){return(0,n.post_process_object_detection)(...o)}}class a extends s{}}),
2842"./src/models/owlvit/processing_owlvit.js":((e,t,r)=>{r.r(t),r.d(t,{OwlViTProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor}}),
2842"./src/models/paligemma/processing_paligemma.js":((e,t,r)=>{r.r(t),r.d(t,{PaliGemmaProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");const i="<image>";function o(u,p,d,c,g){return`${c.repeat(d*g)}${p}${u}
2843`}class l extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;static uses_processor_config=!1;async _call(p,d=null,c={}){d||(console.warn("You are using PaliGemma without a text prefix. It will perform as a picture-captioning model."),d=""),Array.isArray(p)||(p=[p]),Array.isArray(d)||(d=[d]);const g=this.tokenizer.bos_token,A=this.image_processor.config.image_seq_length;let m;d.some(h=>h.includes(i))?m=d.map(h=>{const P=h.replaceAll(i,i.repeat(A)),_=P.lastIndexOf(i),w=_===-1?0:_+i.length;return P.slice(0,w)+g+P.slice(w)+`
2844`}):(console.warn("You are passing both `text` and `images` to `PaliGemmaProcessor`. The processor expects special image tokens in the text, as many tokens as there are images per each text. It is recommended to add `<image>` tokens in the very beginning of your text. For this call, we will infer how many images each text has and add special tokens."),m=d.map(h=>o(h,g,A,i,p.length)));const B=this.tokenizer(m,c);return{...await this.image_processor(p,c),...B}}}}),
2844"./src/models/parakeet/feature_extraction_parakeet.js":((e,t,r)=>{r.r(t),r.d(t,{ParakeetFeatureExtractor:()=>o});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/audio.js");const i=1e-5;class o extends n.FeatureExtractor{constructor(u){super(u),this.config.mel_filters??=(0,a.mel_filter_bank)(Math.floor(1+this.config.n_fft/2),this.config.feature_size,0,this.config.sampling_rate/2,this.config.sampling_rate,"slaney","slaney");const p=(0,a.window_function)(this.config.win_length,"hann",{periodic:!1});this.window=new Float64Array(this.config.n_fft);const d=Math.floor((this.config.n_fft-this.config.win_length)/2);this.window.set(p,d)}async _extract_fbank_features(u){const p=this.config.preemphasis;u=new Float64Array(u);for(let c=u.length-1;c>=1;--c)u[c]-=p*u[c-1];return await(0,a.spectrogram)(u,this.window,this.window.length,this.config.hop_length,{fft_length:this.config.n_fft,power:2,mel_filters:this.config.mel_filters,log_mel:"log",mel_floor:-1/0,pad_mode:"constant",center:!0,transpose:!0,mel_offset:2**-24})}async _call(u){(0,n.validate_audio_inputs)(u,"ParakeetFeatureExtractor");const p=await this._extract_fbank_features(u),d=Math.floor((u.length+Math.floor(this.config.n_fft/2)*2-this.config.n_fft)/this.config.hop_length),c=p.data;c.fill(0,d*p.dims[1]);const[g,A]=p.dims,m=new Float64Array(A),B=new Float64Array(A);for(let P=0;P<d;++P){const _=P*A;for(let w=0;w<A;++w){const b=c[_+w];m[w]+=b,B[w]+=b*b}}const f=d>1?d-1:1;for(let P=0;P<A;++P){const _=m[P]/d,w=(B[P]-d*_*_)/f,v=1/(Math.sqrt(w)+i);for(let y=0;y<d;++y){const $=y*A+P;c[$]=(c[$]-_)*v}}const h=new BigInt64Array(g);return h.fill(1n,0,d),{input_features:p.unsqueeze_(0),attention_mask:new s.Tensor("int64",h,[1,g])}}}}),
2844"./src/models/phi3_v/image_processing_phi3_v.js":((e,t,r)=>{r.r(t),r.d(t,{Phi3VImageProcessor:()=>p});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");const a=336,i=[2,3],{ceil:o,floor:l,sqrt:u}=Math;class p extends n.ImageProcessor{constructor(c){super({...c,do_normalize:!0,do_pad:!0,pad_size:"custom",do_convert_rgb:!0,do_resize:!0}),this._num_crops=c.num_crops}calc_num_image_tokens_from_image_size(c,g){const{num_img_tokens:A}=this.config;return l((l(g/a)*l(c/a)+1)*A+1+(l(g/a)+1)*u(A))}get_resize_output_image_size(c,g){const A=this._num_crops,[m,B]=c.size;let f=m/B,h=1;for(;h*Math.ceil(h/f)<=A;)h+=1;h-=1;const P=Math.floor(h*336),_=Math.floor(P/f);return[P,_]}pad_image(c,g,A,m={}){const[B,f]=g,h=a*o(B/a),P=a*o(f/a),_=[1,1,1].map((w,b)=>(w-this.image_mean[b])/this.image_std[b]);return super.pad_image(c,g,{width:P,height:h},{center:!0,constant_values:_,...m})}async _call(c,{num_crops:g=null}={}){if(this._num_crops=g??=this.config.num_crops,g<4||u(g)%1!==0)throw new Error("num_crops must be a square number >= 4");Array.isArray(c)||(c=[c]);const A=c.length,m=await Promise.all(c.map(v=>this.preprocess(v))),B=m.map(v=>v.original_size),f=m.map(v=>v.reshaped_input_size),h=[];for(const{pixel_values:v}of m){v.unsqueeze_(0);const[y,$]=v.dims.slice(-2),k=await(0,s.interpolate_4d)(v,{size:[a,a],mode:"bicubic"});if(g>0){const W=[],j=u(g),F=l($/j),R=l(y/j);for(let Q=0;Q<j;++Q)for(let ne=0;ne<j;++ne){let re,ce,ge,q;Q===j-1?(ce=y-R,q=y):(ce=Q*R,q=(Q+1)*R),ne===j-1?(re=$-F,ge=$):(re=ne*F,ge=(ne+1)*F);const V=[ce,re],U=[q,ge],N=await(0,s.slice)(v,V,U,i);W.push(N)}const L=await(0,s.interpolate_4d)((0,s.cat)(W,0),{size:[a,a],mode:"bicubic"});h.push((0,s.cat)([k,L],0))}else h.push(k)}const P=(0,s.stack)(h,0),_=f.map(v=>v.map(y=>a*o(y/a))),w=new s.Tensor("int64",_.flat(),[A,2]),b=_.map(([v,y])=>this.calc_num_image_tokens_from_image_size(y,v));return{pixel_values:P,original_sizes:B,reshaped_input_sizes:f,image_sizes:w,num_img_tokens:b}}}}),
2844"./src/models/phi3_v/processing_phi3_v.js":((e,t,r)=>{r.r(t),r.d(t,{Phi3VProcessor:()=>l});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");r("./src/utils/image.js");const i="<|image|>",o=/<\|image_\d+\|>/g;class l extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;async _call(p,d=null,{padding:c=!0,truncation:g=!0,num_crops:A=null}={}){Array.isArray(p)||(p=[p]);let m,B;if(d){B=await this.image_processor(d,{num_crops:A});const{num_img_tokens:f}=B,h=p.map((_,w)=>_.split(o).join(i.repeat(f[w])));m=this.tokenizer(h,{padding:c,truncation:g});const P=this.tokenizer.model.convert_tokens_to_ids([i])[0];m.input_ids.map_(_=>_==P?-_:_)}else m=this.tokenizer(p);return{...m,...B}}}}),
2844"./src/models/pixtral/image_processing_pixtral.js":((e,t,r)=>{r.r(t),r.d(t,{PixtralImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{get_resize_output_image_size(i,o){const{longest_edge:l}=o;if(l===void 0)throw new Error("size must contain 'longest_edge'");const[u,p]=i.size,d=Math.max(u,p)/l;let c=u,g=p;d>1&&(c=Math.floor(u/d),g=Math.floor(p/d));const{patch_size:A,spatial_merge_size:m}=this.config;if(!m)throw new Error("config must contain 'spatial_merge_size'");const B=A*m,f=Math.floor((c-1)/B)+1,h=Math.floor((g-1)/B)+1;return[f*B,h*B]}}}),
2844"./src/models/pixtral/processing_pixtral.js":((e,t,r)=>{r.r(t),r.d(t,{PixtralProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");class i extends n.Processor{static tokenizer_class=a.AutoTokenizer;static image_processor_class=s.AutoImageProcessor;static uses_processor_config=!0;async _call(l,u=null,p={}){const d=await this.image_processor(l,p);if(u){const[g,A]=d.pixel_values.dims.slice(-2),{image_token:m,image_break_token:B,image_end_token:f,patch_size:h,spatial_merge_size:P}=this.config,_=h*P,w=Math.floor(g/_),b=Math.floor(A/_);u=structuredClone(u),Array.isArray(u)||(u=[u]);for(let v=0;v<u.length;++v){const y=m.repeat(b),$=y+B,k=y+f,W=$.repeat(w-1)+k;u[v]=u[v].replace(m,W)}}const c=u?this.tokenizer(u,p):{};return{...d,...c}}}}),
2844"./src/models/processors.js":((e,t,r)=>{r.r(t),r.d(t,{Florence2Processor:()=>n.Florence2Processor,Gemma3nProcessor:()=>s.Gemma3nProcessor,GroundingDinoProcessor:()=>a.GroundingDinoProcessor,Idefics3Processor:()=>i.Idefics3Processor,JinaCLIPProcessor:()=>l.JinaCLIPProcessor,LlavaProcessor:()=>u.LlavaProcessor,MgpstrProcessor:()=>p.MgpstrProcessor,MoonshineProcessor:()=>d.MoonshineProcessor,OwlViTProcessor:()=>c.OwlViTProcessor,PaliGemmaProcessor:()=>g.PaliGemmaProcessor,Phi3VProcessor:()=>A.Phi3VProcessor,PixtralProcessor:()=>m.PixtralProcessor,PyAnnoteProcessor:()=>B.PyAnnoteProcessor,Qwen2VLProcessor:()=>f.Qwen2VLProcessor,Sam2Processor:()=>P.Sam2Processor,Sam2VideoProcessor:()=>P.Sam2VideoProcessor,SamProcessor:()=>h.SamProcessor,SmolVLMProcessor:()=>_.SmolVLMProcessor,SpeechT5Processor:()=>w.SpeechT5Processor,UltravoxProcessor:()=>b.UltravoxProcessor,VLChatProcessor:()=>o.VLChatProcessor,VoxtralProcessor:()=>v.VoxtralProcessor,Wav2Vec2Processor:()=>y.Wav2Vec2Processor,Wav2Vec2ProcessorWithLM:()=>$.Wav2Vec2ProcessorWithLM,WhisperProcessor:()=>k.WhisperProcessor});var n=r("./src/models/florence2/processing_florence2.js"),s=r("./src/models/gemma3n/processing_gemma3n.js"),a=r("./src/models/grounding_dino/processing_grounding_dino.js"),i=r("./src/models/idefics3/processing_idefics3.js"),o=r("./src/models/janus/processing_janus.js"),l=r("./src/models/jina_clip/processing_jina_clip.js"),u=r("./src/models/llava/processing_llava.js"),p=r("./src/models/mgp_str/processing_mgp_str.js"),d=r("./src/models/moonshine/processing_moonshine.js"),c=r("./src/models/owlvit/processing_owlvit.js"),g=r("./src/models/paligemma/processing_paligemma.js"),A=r("./src/models/phi3_v/processing_phi3_v.js"),m=r("./src/models/pixtral/processing_pixtral.js"),B=r("./src/models/pyannote/processing_pyannote.js"),f=r("./src/models/qwen2_vl/processing_qwen2_vl.js"),h=r("./src/models/sam/processing_sam.js"),P=r("./src/models/sam2/processing_sam2.js"),_=r("./src/models/smolvlm/processing_smolvlm.js"),w=r("./src/models/speecht5/processing_speecht5.js"),b=r("./src/models/ultravox/processing_ultravox.js"),v=r("./src/models/voxtral/processing_voxtral.js"),y=r("./src/models/wav2vec2/processing_wav2vec2.js"),$=r("./src/models/wav2vec2_with_lm/processing_wav2vec2_with_lm.js"),k=r("./src/models/whisper/processing_whisper.js")}),
2844"./src/models/pvt/image_processing_pvt.js":((e,t,r)=>{r.r(t),r.d(t,{PvtImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
vendor: 949 bytes, line 2844
2844"./src/models/pyannote/feature_extraction_pyannote.js":((e,t,r)=>{r.r(t),r.d(t,{PyAnnoteFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/maths.js");class i extends n.FeatureExtractor{async _call(l){(0,n.validate_audio_inputs)(l,"PyAnnoteFeatureExtractor"),l instanceof Float64Array&&(l=new Float32Array(l));const u=[1,1,l.length];return{input_values:new s.Tensor("float32",l,u)}}samples_to_frames(l){return(l-this.config.offset)/this.config.step}post_process_speaker_diarization(l,u){const p=u/this.samples_to_frames(u)/this.config.sampling_rate,d=[];for(const c of l.tolist()){const g=[];let A=-1;for(let m=0;m<c.length;++m){const B=(0,a.softmax)(c[m]),[f,h]=(0,a.max)(B),[P,_]=[m,m+1];h!==A?(A=h,g.push({id:h,start:P,end:_,score:f})):(g.at(-1).end=_,g.at(-1).score+=f)}d.push(g.map(({id:m,start:B,end:f,score:h})=>({id:m,start:B*p,end:f*p,confidence:h/(f-B)})))}return d}}}),
2844"./src/models/pyannote/processing_pyannote.js":((e,t,r)=>{r.r(t),r.d(t,{PyAnnoteProcessor:()=>a});var n=r("./src/base/processing_utils.js"),s=r("./src/models/pyannote/feature_extraction_pyannote.js");class a extends n.Processor{static feature_extractor_class=s.PyAnnoteFeatureExtractor;async _call(o){return await this.feature_extractor(o)}post_process_speaker_diarization(...o){return this.feature_extractor.post_process_speaker_diarization(...o)}get sampling_rate(){return this.feature_extractor.config.sampling_rate}}}),
2844"./src/models/qwen2_vl/image_processing_qwen2_vl.js":((e,t,r)=>{r.r(t),r.d(t,{Qwen2VLImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(o,...l){const{pixel_values:u,original_sizes:p,reshaped_input_sizes:d}=await super._call(o,...l);let c=u;const{temporal_patch_size:g,merge_size:A,patch_size:m}=this.config;c.dims[0]===1&&(c=(0,s.cat)(Array.from({length:g},()=>c),0));const B=c.dims[0]/g,f=c.dims[1],h=Math.floor(c.dims[2]/m),P=Math.floor(c.dims[3]/m),_=c.view(B,g,f,Math.floor(h/A),A,m,Math.floor(P/A),A,m).permute(0,3,6,4,7,2,1,5,8).view(B*h*P,f*g*m*m),w=new s.Tensor("int64",[B,h,P],[1,3]);return{pixel_values:_,image_grid_thw:w,original_sizes:p,reshaped_input_sizes:d}}}}),
2844"./src/models/qwen2_vl/processing_qwen2_vl.js":((e,t,r)=>{r.r(t),r.d(t,{Qwen2VLProcessor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js"),a=r("./src/tokenizers.js");r("./src/utils/image.js");class i extends n.Processor{static image_processor_class=s.AutoImageProcessor;static tokenizer_class=a.AutoTokenizer;async _call(l,u=null,...p){Array.isArray(l)||(l=[l]);let d,c;if(u&&(d=await this.image_processor(u),c=d.image_grid_thw),c){let A=this.image_processor.config.merge_size**2,m=0;const B=c.tolist();l=l.map(f=>{for(;f.includes("<|image_pad|>");){const h=Number(B[m++].reduce((P,_)=>P*_,1n));f=f.replace("<|image_pad|>","<|placeholder|>".repeat(Math.floor(h/A)))}return f.replaceAll("<|placeholder|>","<|image_pad|>")})}return{...this.tokenizer(l),...d}}}}),
2844"./src/models/rt_detr/image_processing_rt_detr.js":((e,t,r)=>{r.r(t),r.d(t,{RTDetrImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_object_detection(...i){return(0,n.post_process_object_detection)(...i)}}}),
2844"./src/models/sam/image_processing_sam.js":((e,t,r)=>{r.r(t),r.d(t,{SamImageProcessor:()=>i});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/core.js"),a=r("./src/utils/tensor.js");class i extends n.ImageProcessor{reshape_input_points(l,u,p,d=!1){l=structuredClone(l);let c=(0,s.calculateDimensions)(l);if(c.length===3)d||(c=[1,...c]),l=[l];else if(c.length!==4)throw Error("The input_points must be a 4D tensor of shape `batch_size`, `point_batch_size`, `nb_points_per_image`, `2`.");for(let g=0;g<l.length;++g){const[A,m]=u[g],[B,f]=p[g],h=[f/m,B/A];for(let P=0;P<l[g].length;++P)for(let _=0;_<l[g][P].length;++_)for(let w=0;w<l[g][P][_].length;++w)l[g][P][_][w]*=h[w%2]}return new a.Tensor("float32",Float32Array.from(l.flat(1/0)),c)}add_input_labels(l,u){let p=(0,s.calculateDimensions)(l);if(p.length===2)p=[1,...p],l=[l];else if(p.length!==3)throw Error("The input_points must be a 4D tensor of shape `batch_size`, `point_batch_size`, `nb_points_per_image`, `2`.");if(p.some((d,c)=>d!==u.dims[c]))throw Error(`The first ${p.length} dimensions of 'input_points' and 'input_labels' must be the same.`);return new a.Tensor("int64",l.flat(1/0).map(BigInt),p)}async _call(l,{input_points:u=null,input_labels:p=null,input_boxes:d=null}={}){const c=await super._call(l);if(u&&(c.input_points=this.reshape_input_points(u,c.original_sizes,c.reshaped_input_sizes)),p){if(!c.input_points)throw Error("`input_points` must be provided if `input_labels` are provided.");c.input_labels=this.add_input_labels(p,c.input_points)}return d&&(c.input_boxes=this.reshape_input_points(d,c.original_sizes,c.reshaped_input_sizes,!0)),c}async post_process_masks(l,u,p,{mask_threshold:d=0,binarize:c=!0,pad_size:g=null}={}){const A=[];g=g??this.pad_size??this.size;const m=[g.height,g.width];for(let B=0;B<u.length;++B){const f=u[B],h=p[B];let P=await(0,a.interpolate_4d)(l[B],{mode:"bilinear",size:m});if(P=P.slice(null,null,[0,h[0]],[0,h[1]]),P=await(0,a.interpolate_4d)(P,{mode:"bilinear",size:f}),c){const _=P.data,w=new Uint8Array(_.length);for(let b=0;b<_.length;++b)_[b]>d&&(w[b]=1);P=new a.Tensor("bool",w,P.dims)}A.push(P)}return A}generate_crop_boxes(l,u,{crop_n_layers:p=0,overlap_ratio:d=512/1500,points_per_crop:c=32,crop_n_points_downscale_factor:g=1}={}){}}}),
2844"./src/models/sam/processing_sam.js":((e,t,r)=>{r.r(t),r.d(t,{SamProcessor:()=>a});var n=r("./src/base/processing_utils.js"),s=r("./src/models/auto/image_processing_auto.js");class a extends n.Processor{static image_processor_class=s.AutoImageProcessor;async _call(...o){return await this.image_processor(...o)}post_process_masks(...o){return this.image_processor.post_process_masks(...o)}reshape_input_points(...o){return this.image_processor.reshape_input_points(...o)}}}),
2844"./src/models/sam2/image_processing_sam2.js":((e,t,r)=>{r.r(t),r.d(t,{Sam2ImageProcessor:()=>n.SamImageProcessor});var n=r("./src/models/sam/image_processing_sam.js")}),
2844"./src/models/sam2/processing_sam2.js":((e,t,r)=>{r.r(t),r.d(t,{Sam2Processor:()=>s,Sam2VideoProcessor:()=>a});var n=r("./src/models/sam/processing_sam.js");class s extends n.SamProcessor{}class a extends s{}}),
2844"./src/models/sam3/image_processing_sam3.js":((e,t,r)=>{r.r(t),r.d(t,{Sam3ImageProcessor:()=>n.Sam2ImageProcessor});var n=r("./src/models/sam2/image_processing_sam2.js")}),
2844"./src/models/seamless_m4t/feature_extraction_seamless_m4t.js":((e,t,r)=>{r.r(t),r.d(t,{SeamlessM4TFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js"),a=r("./src/utils/audio.js");class i extends n.FeatureExtractor{constructor(l){super(l);const u=this.config.sampling_rate,p=(0,a.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(u/2),u,null,"kaldi",!0);this.mel_filters=p,this.window=(0,a.window_function)(400,"povey",{periodic:!1})}async _extract_fbank_features(l,u){return l=l.map(p=>p*32768),(0,a.spectrogram)(l,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,max_num_frames:u,transpose:!0})}async _call(l,{padding:u=!0,pad_to_multiple_of:p=2,do_normalize_per_mel_bins:d=!0,return_attention_mask:c=!0}={}){(0,n.validate_audio_inputs)(l,"SeamlessM4TFeatureExtractor");let g=await this._extract_fbank_features(l,this.config.max_length);if(d){const[w,b]=g.dims,v=g.data;for(let y=0;y<b;++y){let $=0;for(let F=0;F<w;++F)$+=v[F*b+y];const k=$/w;let W=0;for(let F=0;F<w;++F)W+=(v[F*b+y]-k)**2;W/=w-1;const j=Math.sqrt(W+1e-7);for(let F=0;F<w;++F){const R=F*b+y;v[R]=(v[R]-k)/j}}}let A;if(u){const[w,b]=g.dims,v=g.data,y=w%p;if(y>0){const $=new Float32Array(b*(w+y));$.set(v),$.fill(this.config.padding_value,v.length);const k=w+y;g=new s.Tensor(g.type,$,[k,b]),c&&(A=new s.Tensor("int64",new BigInt64Array(k),[1,k]),A.data.fill(1n,0,w))}}const[m,B]=g.dims,f=this.config.stride;if(m%f!==0)throw new Error(`The number of frames (${m}) must be a multiple of the stride (${f}).`);const P=g.view(1,Math.floor(m/f),B*f),_={input_features:P};if(c){const w=P.dims[1],b=new BigInt64Array(w);if(A){const v=A.data;for(let y=1,$=0;y<m;y+=f,++$)b[$]=v[y]}else b.fill(1n);_.attention_mask=new s.Tensor("int64",b,[1,w])}return _}}}),
2844"./src/models/segformer/image_processing_segformer.js":((e,t,r)=>{r.r(t),r.d(t,{SegformerFeatureExtractor:()=>a,SegformerImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_semantic_segmentation(...o){return(0,n.post_process_semantic_segmentation)(...o)}}class a extends s{}}),
2844"./src/models/siglip/image_processing_siglip.js":((e,t,r)=>{r.r(t),r.d(t,{SiglipImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}}),
2844"./src/models/smolvlm/image_processing_smolvlm.js":((e,t,r)=>{r.r(t),r.d(t,{SmolVLMImageProcessor:()=>n.Idefics3ImageProcessor});var n=r("./src/models/idefics3/image_processing_idefics3.js")}),
2844"./src/models/smolvlm/processing_smolvlm.js":((e,t,r)=>{r.r(t),r.d(t,{SmolVLMProcessor:()=>n.Idefics3Processor});var n=r("./src/models/idefics3/processing_idefics3.js")}),
2844"./src/models/snac/feature_extraction_snac.js":((e,t,r)=>{r.r(t),r.d(t,{SnacFeatureExtractor:()=>s});var n=r("./src/models/dac/feature_extraction_dac.js");class s extends n.DacFeatureExtractor{}}),
2844"./src/models/speecht5/feature_extraction_speecht5.js":((e,t,r)=>{r.r(t),r.d(t,{SpeechT5FeatureExtractor:()=>s});var n=r("./src/base/feature_extraction_utils.js");class s extends n.FeatureExtractor{}}),
2844"./src/models/speecht5/processing_speecht5.js":((e,t,r)=>{r.r(t),r.d(t,{SpeechT5Processor:()=>i});var n=r("./src/base/processing_utils.js"),s=r("./src/tokenizers.js"),a=r("./src/models/auto/feature_extraction_auto.js");class i extends n.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=a.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/swin2sr/image_processing_swin2sr.js":((e,t,r)=>{r.r(t),r.d(t,{Swin2SRImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{pad_image(i,o,l,u={}){const[p,d,c]=o;return super.pad_image(i,o,{width:d+(l-d%l)%l,height:p+(l-p%l)%l},{mode:"symmetric",center:!1,constant_values:-1,...u})}}}),
vendor: 937 bytes, line 2844
2844"./src/models/ultravox/processing_ultravox.js":((e,t,r)=>{r.r(t),r.d(t,{UltravoxProcessor:()=>i});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;static uses_processor_config=!0;async _call(l,u=null,p={}){if(Array.isArray(l))throw new Error("Batched inputs are not supported yet.");let d={};if(u){const g=u.length,{input_features:A}=await this.feature_extractor(u,{...p,max_length:g}),m=Math.round(g/this.config.encoder_ds_factor+1e-4),B=1+Math.ceil(m/this.config.stack_factor);d.audio_token_len=[B],d.audio_values=A;const f=this.config.audio_placeholder;if(!l.includes(f))throw new Error(`The input text does not contain the image token ${f}.`);l=l.replaceAll(f,f.repeat(B))}return{...this.tokenizer(l,{add_special_tokens:!1,...p}),...d}}}}),
2844"./src/models/vit/image_processing_vit.js":((e,t,r)=>{r.r(t),r.d(t,{ViTFeatureExtractor:()=>a,ViTImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{}class a extends s{}}),
2844"./src/models/vitmatte/image_processing_vitmatte.js":((e,t,r)=>{r.r(t),r.d(t,{VitMatteImageProcessor:()=>a});var n=r("./src/base/image_processors_utils.js"),s=r("./src/utils/tensor.js");class a extends n.ImageProcessor{async _call(o,l){Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const u=await Promise.all(o.map(c=>this.preprocess(c))),p=await Promise.all(l.map(c=>this.preprocess(c,{do_normalize:!1,do_convert_rgb:!1,do_convert_grayscale:!0})));return{pixel_values:(0,s.stack)(u.map((c,g)=>(0,s.cat)([c.pixel_values,p[g].pixel_values],0)),0),original_sizes:u.map(c=>c.original_size),reshaped_input_sizes:u.map(c=>c.reshaped_input_size)}}}}),
2844"./src/models/vitpose/image_processing_vitpose.js":((e,t,r)=>{r.r(t),r.d(t,{VitPoseImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_pose_estimation(i,o,{threshold:l=null}={}){const u=i.tolist(),[p,d,c,g]=i.dims,A=[];for(let m=0;m<p;++m){const B=u[m],f=o[m],h=[];for(let P=0;P<f.length;++P){const _=f[P],w=[],b=[],v=[],y=_.at(-2)/g,$=_.at(-1)/c;for(let k=0;k<B.length;++k){let[W,j]=[0,0],F=0,R=-1/0;const L=B[k];for(let ne=0;ne<L.length;++ne){const re=L[ne];for(let ce=0;ce<re.length;++ce){const ge=re[ce];F+=ge,R=Math.max(R,ge),W+=(ce+.5)*ge,j+=ne*ge}}if(l!=null&&R<l)continue;const Q=[y*W/F,$*j/F];w.push(Q),v.push(k),b.push(R)}h.push({bbox:_,scores:b,labels:v,keypoints:w})}A.push(h)}return A}}}),
2844"./src/models/voxtral/processing_voxtral.js":((e,t,r)=>{r.r(t),r.d(t,{VoxtralProcessor:()=>d});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js"),i=r("./src/utils/tensor.js");const o="[AUDIO]",l="[BEGIN_AUDIO]",u=375;function p(c,g){const A=[];for(let m=0;m<c.length;m+=g)A.push(c.subarray(m,Math.min(m+g,c.length)));return A}class d extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;static uses_processor_config=!1;async _call(g,A=null,m={}){if(Array.isArray(g))throw new Error("Batched inputs are not supported yet.");const B={};if(A){if(!g.includes(o))throw new Error(`The input text does not contain the audio token ${o}.`);Array.isArray(A)||(A=[A]);const h=g.split(o),P=h.length-1;if(P!==A.length)throw new Error(`The number of audio inputs (${A.length}) does not match the number of audio tokens in the text (${P}).`);const _=this.feature_extractor.config.n_samples,w=A.map(k=>p(k,_)),b=w.map(k=>k.length),v=w.flat(),y=(await Promise.all(v.map(k=>this.feature_extractor(k,m)))).map(k=>k.input_features);B.audio_values=y.length>1?(0,i.cat)(y,0):y[0];let $=h[0];for(let k=0;k<b.length;++k){$+=l;for(let W=0;W<b[k];++W)$+=o.repeat(u);$+=h[k+1]}g=$}return{...this.tokenizer(g,{add_special_tokens:!1,...m}),...B}}}}),
2844"./src/models/wav2vec2/feature_extraction_wav2vec2.js":((e,t,r)=>{r.r(t),r.d(t,{Wav2Vec2FeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js"),s=r("./src/utils/tensor.js");class a extends n.FeatureExtractor{_zero_mean_unit_var_norm(o){const u=o.reduce((d,c)=>d+c,0)/o.length,p=o.reduce((d,c)=>d+(c-u)**2,0)/o.length;return o.map(d=>(d-u)/Math.sqrt(p+1e-7))}async _call(o){(0,n.validate_audio_inputs)(o,"Wav2Vec2FeatureExtractor"),o instanceof Float64Array&&(o=new Float32Array(o));let l=o;this.config.do_normalize&&(l=this._zero_mean_unit_var_norm(l));const u=[1,l.length];return{input_values:new s.Tensor("float32",l,u),attention_mask:new s.Tensor("int64",new BigInt64Array(l.length).fill(1n),u)}}}}),
2844"./src/models/wav2vec2/processing_wav2vec2.js":((e,t,r)=>{r.r(t),r.d(t,{Wav2Vec2Processor:()=>i});var n=r("./src/tokenizers.js"),s=r("./src/models/auto/feature_extraction_auto.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=n.AutoTokenizer;static feature_extractor_class=s.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/wav2vec2_with_lm/processing_wav2vec2_with_lm.js":((e,t,r)=>{r.r(t),r.d(t,{Wav2Vec2ProcessorWithLM:()=>i});var n=r("./src/tokenizers.js"),s=r("./src/models/auto/feature_extraction_auto.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=n.AutoTokenizer;static feature_extractor_class=s.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/wespeaker/feature_extraction_wespeaker.js":((e,t,r)=>{r.r(t),r.d(t,{WeSpeakerFeatureExtractor:()=>a});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js");class a extends n.FeatureExtractor{constructor(o){super(o);const l=this.config.sampling_rate,u=(0,s.mel_filter_bank)(257,this.config.num_mel_bins,20,Math.floor(l/2),l,null,"kaldi",!0);this.mel_filters=u,this.window=(0,s.window_function)(400,"hamming",{periodic:!1}),this.min_num_frames=this.config.min_num_frames}async _extract_fbank_features(o){return o=o.map(l=>l*32768),(0,s.spectrogram)(o,this.window,400,160,{fft_length:512,power:2,center:!1,preemphasis:.97,mel_filters:this.mel_filters,log_mel:"log",mel_floor:1192092955078125e-22,remove_dc_offset:!0,transpose:!0,min_num_frames:this.min_num_frames})}async _call(o){(0,n.validate_audio_inputs)(o,"WeSpeakerFeatureExtractor");const l=(await this._extract_fbank_features(o)).unsqueeze_(0);if(this.config.fbank_centering_span===null){const u=l.mean(1).data,p=l.data,[d,c,g]=l.dims;for(let A=0;A<d;++A){const m=A*c*g,B=A*g;for(let f=0;f<c;++f){const h=m+f*g;for(let P=0;P<g;++P)p[h+P]-=u[B+P]}}}return{input_features:l}}}}),
2844"./src/models/whisper/common_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WHISPER_LANGUAGE_MAPPING:()=>s,WHISPER_TO_LANGUAGE_CODE_MAPPING:()=>a,whisper_language_to_code:()=>i});const n=[["en","english"],["zh","chinese"],["de","german"],["es","spanish"],["ru","russian"],["ko","korean"],["fr","french"],["ja","japanese"],["pt","portuguese"],["tr","turkish"],["pl","polish"],["ca","catalan"],["nl","dutch"],["ar","arabic"],["sv","swedish"],["it","italian"],["id","indonesian"],["hi","hindi"],["fi","finnish"],["vi","vietnamese"],["he","hebrew"],["uk","ukrainian"],["el","greek"],["ms","malay"],["cs","czech"],["ro","romanian"],["da","danish"],["hu","hungarian"],["ta","tamil"],["no","norwegian"],["th","thai"],["ur","urdu"],["hr","croatian"],["bg","bulgarian"],["lt","lithuanian"],["la","latin"],["mi","maori"],["ml","malayalam"],["cy","welsh"],["sk","slovak"],["te","telugu"],["fa","persian"],["lv","latvian"],["bn","bengali"],["sr","serbian"],["az","azerbaijani"],["sl","slovenian"],["kn","kannada"],["et","estonian"],["mk","macedonian"],["br","breton"],["eu","basque"],["is","icelandic"],["hy","armenian"],["ne","nepali"],["mn","mongolian"],["bs","bosnian"],["kk","kazakh"],["sq","albanian"],["sw","swahili"],["gl","galician"],["mr","marathi"],["pa","punjabi"],["si","sinhala"],["km","khmer"],["sn","shona"],["yo","yoruba"],["so","somali"],["af","afrikaans"],["oc","occitan"],["ka","georgian"],["be","belarusian"],["tg","tajik"],["sd","sindhi"],["gu","gujarati"],["am","amharic"],["yi","yiddish"],["lo","lao"],["uz","uzbek"],["fo","faroese"],["ht","haitian creole"],["ps","pashto"],["tk","turkmen"],["nn","nynorsk"],["mt","maltese"],["sa","sanskrit"],["lb","luxembourgish"],["my","myanmar"],["bo","tibetan"],["tl","tagalog"],["mg","malagasy"],["as","assamese"],["tt","tatar"],["haw","hawaiian"],["ln","lingala"],["ha","hausa"],["ba","bashkir"],["jw","javanese"],["su","sundanese"]],s=new Map(n),a=new Map([...n.map(([o,l])=>[l,o]),["burmese","my"],["valencian","ca"],["flemish","nl"],["haitian","ht"],["letzeburgesch","lb"],["pushto","ps"],["panjabi","pa"],["moldavian","ro"],["moldovan","ro"],["sinhalese","si"],["castilian","es"]]);function i(o){o=o.toLowerCase();let l=a.get(o);if(l===void 0){const u=o.match(/^<\|([a-z]{2})\|>$/);if(u&&(o=u[1]),s.has(o))l=o;else{const d=o.length===2?s.keys():s.values();throw new Error(`Language "${o}" is not supported. Must be one of: ${JSON.stringify(Array.from(d))}`)}}return l}}),
2844"./src/models/whisper/feature_extraction_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WhisperFeatureExtractor:()=>i});var n=r("./src/base/feature_extraction_utils.js");r("./src/utils/tensor.js");var s=r("./src/utils/audio.js"),a=r("./src/utils/maths.js");class i extends n.FeatureExtractor{constructor(l){super(l),this.config.mel_filters??=(0,s.mel_filter_bank)(Math.floor(1+this.config.n_fft/2),this.config.feature_size,0,8e3,this.config.sampling_rate,"slaney","slaney"),this.window=(0,s.window_function)(this.config.n_fft,"hann")}async _extract_fbank_features(l){const u=await(0,s.spectrogram)(l,this.window,this.config.n_fft,this.config.hop_length,{power:2,mel_filters:this.config.mel_filters,log_mel:"log10",max_num_frames:Math.min(Math.floor(l.length/this.config.hop_length),this.config.nb_max_frames)}),p=u.data,d=(0,a.max)(p)[0];for(let c=0;c<p.length;++c)p[c]=(Math.max(p[c],d-8)+4)/4;return u}async _call(l,{max_length:u=null}={}){(0,n.validate_audio_inputs)(l,"WhisperFeatureExtractor");let p;const d=u??this.config.n_samples;return l.length>d?(l.length>this.config.n_samples&&console.warn("Attempting to extract features for audio longer than 30 seconds. If using a pipeline to extract transcript from a long audio clip, remember to specify `chunk_length_s` and/or `stride_length_s`."),p=l.slice(0,d)):(p=new Float32Array(d),p.set(l)),{input_features:(await this._extract_fbank_features(p)).unsqueeze_(0)}}}}),
2844"./src/models/whisper/generation_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WhisperGenerationConfig:()=>s});var n=r("./src/generation/configuration_utils.js");class s extends n.GenerationConfig{return_timestamps=null;return_token_timestamps=null;num_frames=null;alignment_heads=null;task=null;language=null;no_timestamps_token_id=null;prompt_ids=null;is_multilingual=null;lang_to_id=null;task_to_id=null;max_initial_timestamp_index=1}}),
2844"./src/models/whisper/processing_whisper.js":((e,t,r)=>{r.r(t),r.d(t,{WhisperProcessor:()=>i});var n=r("./src/models/auto/feature_extraction_auto.js"),s=r("./src/tokenizers.js"),a=r("./src/base/processing_utils.js");class i extends a.Processor{static tokenizer_class=s.AutoTokenizer;static feature_extractor_class=n.AutoFeatureExtractor;async _call(l){return await this.feature_extractor(l)}}}),
2844"./src/models/yolos/image_processing_yolos.js":((e,t,r)=>{r.r(t),r.d(t,{YolosFeatureExtractor:()=>a,YolosImageProcessor:()=>s});var n=r("./src/base/image_processors_utils.js");class s extends n.ImageProcessor{post_process_object_detection(...o){return(0,n.post_process_object_detection)(...o)}}class a extends s{}}),
2844"./src/ops/registry.js":((e,t,r)=>{r.r(t),r.d(t,{TensorOpRegistry:()=>i});var n=r("./src/backends/onnx.js"),s=r("./src/utils/tensor.js");const a=async(o,l,u)=>{const p=await(0,n.createInferenceSession)(new Uint8Array(o),l);return(async d=>{const c=(0,n.isONNXProxy)(),g=Object.fromEntries(Object.entries(d).map(([m,B])=>[m,(c?B.clone():B).ort_tensor])),A=await(0,n.runInferenceSession)(p,g);return Array.isArray(u)?u.map(m=>new s.Tensor(A[m])):new s.Tensor(A[u])})};class i{static session_options={};static get nearest_interpolate_4d(){return this._nearest_interpolate_4d||(this._nearest_interpolate_4d=a([8,10,18,0,58,129,1,10,41,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,18,10,4,109,111,100,101,34,7,110,101,97,114,101,115,116,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,21],this.session_options,"y")),this._nearest_interpolate_4d}static get bilinear_interpolate_4d(){return this._bilinear_interpolate_4d||(this._bilinear_interpolate_4d=a([8,9,18,0,58,128,1,10,40,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,17,10,4,109,111,100,101,34,6,108,105,110,101,97,114,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,20],this.session_options,"y")),this._bilinear_interpolate_4d}static get bicubic_interpolate_4d(){return this._bicubic_interpolate_4d||(this._bicubic_interpolate_4d=a([8,9,18,0,58,127,10,39,10,1,120,10,0,10,0,10,1,115,18,1,121,34,6,82,101,115,105,122,101,42,16,10,4,109,111,100,101,34,5,99,117,98,105,99,160,1,3,18,1,114,90,31,10,1,120,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,90,15,10,1,115,18,10,10,8,8,7,18,4,10,2,8,4,98,31,10,1,121,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,99,10,3,18,1,104,10,3,18,1,119,66,2,16,20],this.session_options,"y")),this._bicubic_interpolate_4d}static get matmul(){return this._matmul||(this._matmul=a([8,9,18,0,58,55,10,17,10,1,97,10,1,98,18,1,99,34,6,77,97,116,77,117,108,18,1,114,90,9,10,1,97,18,4,10,2,8,1,90,9,10,1,98,18,4,10,2,8,1,98,9,10,1,99,18,4,10,2,8,1,66,2,16,20],this.session_options,"c")),this._matmul}static get stft(){return this._stft||(this._stft=a([8,7,18,0,58,148,1,10,38,10,1,115,10,1,106,10,1,119,10,1,108,18,1,111,34,4,83,84,70,84,42,15,10,8,111,110,101,115,105,100,101,100,24,1,160,1,2,18,1,115,90,26,10,1,115,18,21,10,19,8,1,18,15,10,3,18,1,98,10,3,18,1,115,10,3,18,1,99,90,11,10,1,106,18,6,10,4,8,7,18,0,90,16,10,1,119,18,11,10,9,8,1,18,5,10,3,18,1,119,90,11,10,1,108,18,6,10,4,8,7,18,0,98,31,10,1,111,18,26,10,24,8,1,18,20,10,3,18,1,98,10,3,18,1,102,10,3,18,1,100,10,3,18,1,99,66,2,16,17],this.session_options,"o")),this._stft}static get rfft(){return this._rfft||(this._rfft=a([8,9,18,0,58,97,10,33,10,1,120,10,0,10,1,97,18,1,121,34,3,68,70,84,42,15,10,8,111,110,101,115,105,100,101,100,24,1,160,1,2,18,1,100,90,21,10,1,120,18,16,10,14,8,1,18,10,10,3,18,1,115,10,3,18,1,99,90,11,10,1,97,18,6,10,4,8,7,18,0,98,21,10,1,121,18,16,10,14,8,1,18,10,10,3,18,1,115,10,3,18,1,99,66,2,16,20],this.session_options,"y")),this._rfft}static get top_k(){return this._top_k||(this._top_k=a([8,10,18,0,58,73,10,18,10,1,120,10,1,107,18,1,118,18,1,105,34,4,84,111,112,75,18,1,116,90,9,10,1,120,18,4,10,2,8,1,90,15,10,1,107,18,10,10,8,8,7,18,4,10,2,8,1,98,9,10,1,118,18,4,10,2,8,1,98,9,10,1,105,18,4,10,2,8,7,66,2,16,21],this.session_options,["v","i"])),this._top_k}static get slice(){return this._slice||(this._slice=a([8,7,18,0,58,96,10,25,10,1,120,10,1,115,10,1,101,10,1,97,10,1,116,18,1,121,34,5,83,108,105,99,101,18,1,114,90,9,10,1,120,18,4,10,2,8,1,90,9,10,1,115,18,4,10,2,8,7,90,9,10,1,101,18,4,10,2,8,7,90,9,10,1,97,18,4,10,2,8,7,90,9,10,1,116,18,4,10,2,8,7,98,9,10,1,121,18,4,10,2,8,1,66,2,16,13],this.session_options,"y")),this._slice}}}),
2844"./src/pipelines.js":((e,t,r)=>{r.r(t),r.d(t,{AudioClassificationPipeline:()=>j,AutomaticSpeechRecognitionPipeline:()=>R,BackgroundRemovalPipeline:()=>re,DepthEstimationPipeline:()=>oe,DocumentQuestionAnsweringPipeline:()=>V,FeatureExtractionPipeline:()=>k,FillMaskPipeline:()=>P,ImageClassificationPipeline:()=>Q,ImageFeatureExtractionPipeline:()=>W,ImageSegmentationPipeline:()=>ne,ImageToImagePipeline:()=>N,ImageToTextPipeline:()=>L,ObjectDetectionPipeline:()=>ge,Pipeline:()=>m,QuestionAnsweringPipeline:()=>h,SummarizationPipeline:()=>w,Text2TextGenerationPipeline:()=>_,TextClassificationPipeline:()=>B,TextGenerationPipeline:()=>y,TextToAudioPipeline:()=>U,TokenClassificationPipeline:()=>f,TranslationPipeline:()=>b,ZeroShotAudioClassificationPipeline:()=>F,ZeroShotClassificationPipeline:()=>$,ZeroShotImageClassificationPipeline:()=>ce,ZeroShotObjectDetectionPipeline:()=>q,pipeline:()=>Ie});var n=r("./src/tokenizers.js"),s=r("./src/models.js"),a=r("./src/models/auto/processing_auto.js");r("./src/base/processing_utils.js");var i=r("./src/utils/generic.js"),o=r("./src/utils/core.js"),l=r("./src/utils/maths.js"),u=r("./src/utils/audio.js"),p=r("./src/utils/tensor.js"),d=r("./src/utils/image.js");async function c(Me){return Array.isArray(Me)||(Me=[Me]),await Promise.all(Me.map(se=>d.RawImage.read(se)))}async function g(Me,se){return Array.isArray(Me)||(Me=[Me]),await Promise.all(Me.map(H=>typeof H=="string"||H instanceof URL?(0,u.read_audio)(H,se):H instanceof Float64Array?new Float32Array(H):H))}function A(Me,se){se&&(Me=Me.map(Se=>Se|0));const[H,we,be,Ce]=Me;return{xmin:H,ymin:we,xmax:be,ymax:Ce}}class m extends i.Callable{constructor({task:se,model:H,tokenizer:we=null,processor:be=null}){super(),this.task=se,this.model=H,this.tokenizer=we,this.processor=be}async dispose(){await this.model.dispose()}}class B extends m{constructor(se){super(se)}async _call(se,{top_k:H=1}={}){const we=this.tokenizer(se,{padding:!0,truncation:!0}),be=await this.model(we),Ce=this.model.config.problem_type==="multi_label_classification"?ve=>ve.sigmoid():ve=>new p.Tensor("float32",(0,l.softmax)(ve.data),ve.dims),Se=this.model.config.id2label,ze=[];for(const ve of be.logits){const Ve=Ce(ve),Be=await(0,p.topk)(Ve,H),ke=Be[0].tolist(),Ue=Be[1].tolist().map((ht,He)=>({label:Se?Se[ht]:`LABEL_${ht}`,score:ke[He]}));H===1?ze.push(...Ue):ze.push(Ue)}return Array.isArray(se)||H===1?ze:ze[0]}}class f extends m{constructor(se){super(se)}async _call(se,{ignore_labels:H=["O"]}={}){const we=Array.isArray(se),be=this.tokenizer(we?se:[se],{padding:!0,truncation:!0}),Se=(await this.model(be)).logits,ze=this.model.config.id2label,ve=[];for(let Ve=0;Ve<Se.dims[0];++Ve){const Be=be.input_ids[Ve],ke=Se[Ve],rt=[];for(let Ue=0;Ue<ke.dims[0];++Ue){const ht=ke[Ue],He=(0,l.max)(ht.data)[1],dt=ze?ze[He]:`LABEL_${He}`;if(H.includes(dt))continue;const At=this.tokenizer.decode([Be[Ue].item()],{skip_special_tokens:!0});if(At==="")continue;const Xe=(0,l.softmax)(ht.data);rt.push({entity:dt,score:Xe[He],index:Ue,word:At})}ve.push(rt)}return we?ve:ve[0]}}class h extends m{constructor(se){super(se)}async _call(se,H,{top_k:we=1}={}){const be=this.tokenizer(se,{text_pair:H,padding:!0,truncation:!0}),{start_logits:Ce,end_logits:Se}=await this.model(be),ze=be.input_ids.tolist(),ve=be.attention_mask.tolist(),Ve=this.tokenizer.all_special_ids,Be=[];for(let ke=0;ke<Ce.dims[0];++ke){const rt=ze[ke],Ue=rt.findIndex(We=>We==this.tokenizer.sep_token_id);ve[ke].map((We,yt)=>We==1&&(yt===0||yt>Ue&&Ve.findIndex(Mt=>Mt==rt[yt])===-1));const ht=Ce[ke].tolist(),He=Se[ke].tolist();for(let We=1;We<ht.length;++We)(ve[ke]==0||We<=Ue||Ve.findIndex(yt=>yt==rt[We])!==-1)&&(ht[We]=-1/0,He[We]=-1/0);const dt=(0,l.softmax)(ht).map((We,yt)=>[We,yt]),At=(0,l.softmax)(He).map((We,yt)=>[We,yt]);dt[0][0]=0,At[0][0]=0;const Xe=(0,o.product)(dt,At).filter(We=>We[0][1]<=We[1][1]).map(We=>[We[0][1],We[1][1],We[0][0]*We[1][0]]).sort((We,yt)=>yt[2]-We[2]);for(let We=0;We<Math.min(Xe.length,we);++We){const[yt,Mt,hr]=Xe[We],Vt=rt.slice(yt,Mt+1),tn=this.tokenizer.decode(Vt,{skip_special_tokens:!0});Be.push({answer:tn,score:hr})}}return we===1?Be[0]:Be}}class P extends m{constructor(se){super(se)}async _call(se,{top_k:H=5}={}){const we=this.tokenizer(se,{padding:!0,truncation:!0}
2844),{logits:be}=await this.model(we),Ce=[],Se=we.input_ids.tolist();for(let ze=0;ze<Se.length;++ze){const ve=Se[ze],Ve=ve.findIndex(ht=>ht==this.tokenizer.mask_token_id);if(Ve===-1)throw Error(`Mask token (${this.tokenizer.mask_token}) not found in text.`);const Be=be[ze][Ve],ke=await(0,p.topk)(new p.Tensor("float32",(0,l.softmax)(Be.data),Be.dims),H),rt=ke[0].tolist(),Ue=ke[1].tolist();Ce.push(Ue.map((ht,He)=>{const dt=ve.slice();return dt[Ve]=ht,{score:rt[He],token:Number(ht),token_str:this.tokenizer.decode([ht]),sequence:this.tokenizer.decode(dt,{skip_special_tokens:!0})}}))}return Array.isArray(se)?Ce:Ce[0]}}class _ extends m{_key="generated_text";constructor(se){super(se)}async _call(se,H={}){Array.isArray(se)||(se=[se]),this.model.config.prefix&&(se=se.map(ve=>this.model.config.prefix+ve));const we=this.model.config.task_specific_params;we&&we[this.task]&&we[this.task].prefix&&(se=se.map(ve=>we[this.task].prefix+ve));const be=this.tokenizer,Ce={padding:!0,truncation:!0};let Se;this instanceof b&&"_build_translation_inputs"in be?Se=be._build_translation_inputs(se,Ce,H):Se=be(se,Ce);const ze=await this.model.generate({...Se,...H});return be.batch_decode(ze,{skip_special_tokens:!0}).map(ve=>({[this._key]:ve}))}}class w extends _{_key="summary_text";constructor(se){super(se)}}class b extends _{_key="translation_text";constructor(se){super(se)}}function v(Me){return Array.isArray(Me)&&Me.every(se=>"role"in se&&"content"in se)}class y extends m{constructor(se){super(se)}async _call(se,H={}){let we=!1,be=!1,Ce=H.add_special_tokens??(this.tokenizer.add_bos_token||this.tokenizer.add_eos_token)??!1,Se;if(typeof se=="string")Se=se=[se];else if(Array.isArray(se)&&se.every(Ue=>typeof Ue=="string"))we=!0,Se=se;else{if(v(se))se=[se];else if(Array.isArray(se)&&se.every(v))we=!0;else throw new Error("Input must be a string, an array of strings, a Chat, or an array of Chats");be=!0,Se=se.map(Ue=>this.tokenizer.apply_chat_template(Ue,{tokenize:!1,add_generation_prompt:!0})),Ce=!1}const ze=be?!1:H.return_full_text??!0;this.tokenizer.padding_side="left";const ve=this.tokenizer(Se,{add_special_tokens:Ce,padding:!0,truncation:!0}),Ve=await this.model.generate({...ve,...H}),Be=this.tokenizer.batch_decode(Ve,{skip_special_tokens:!0});let ke;!ze&&ve.input_ids.dims.at(-1)>0&&(ke=this.tokenizer.batch_decode(ve.input_ids,{skip_special_tokens:!0}).map(Ue=>Ue.length));const rt=Array.from({length:se.length},Ue=>[]);for(let Ue=0;Ue<Be.length;++Ue){const ht=Math.floor(Ue/Ve.dims[0]*se.length);ke&&(Be[Ue]=Be[Ue].slice(ke[ht])),rt[ht].push({generated_text:be?[...se[ht],{role:"assistant",content:Be[Ue]}]:Be[Ue]})}return!we&&rt.length===1?rt[0]:rt}}class $ extends m{constructor(se){super(se),this.label2id=Object.fromEntries(Object.entries(this.model.config.label2id).map(([H,we])=>[H.toLowerCase(),we])),this.entailment_id=this.label2id.entailment,this.entailment_id===void 0&&(console.warn("Could not find 'entailment' in label2id mapping. Using 2 as entailment_id."),this.entailment_id=2),this.contradiction_id=this.label2id.contradiction??this.label2id.not_entailment,this.contradiction_id===void 0&&(console.warn("Could not find 'contradiction' in label2id mapping. Using 0 as contradiction_id."),this.contradiction_id=0)}async _call(se,H,{hypothesis_template:we="This example is {}.",multi_label:be=!1}={}){const Ce=Array.isArray(se);Ce||(se=[se]),Array.isArray(H)||(H=[H]);const Se=H.map(Ve=>we.replace("{}",Ve)),ze=be||H.length===1,ve=[];for(const Ve of se){const Be=[];for(const Ue of Se){const ht=this.tokenizer(Ve,{text_pair:Ue,padding:!0,truncation:!0}),He=await this.model(ht);ze?Be.push([He.logits.data[this.contradiction_id],He.logits.data[this.entailment_id]]):Be.push(He.logits.data[this.entailment_id])}const rt=(ze?Be.map(Ue=>(0,l.softmax)(Ue)[1]):(0,l.softmax)(Be)).map((Ue,ht)=>[Ue,ht]).sort((Ue,ht)=>ht[0]-Ue[0]);ve.push({sequence:Ve,labels:rt.map(Ue=>H[Ue[1]]),scores:rt.map(Ue=>Ue[0])})}return Ce?ve:ve[0]}}class k extends m{constructor(se){super(se)}async _call(se,{pooling:H="none",normalize:we=!1,quantize:be=!1,precision:Ce="binary"}={}){const Se=this.tokenizer(se,{padding:!0,truncation:!0}
2844),ze=await this.model(Se);let ve=ze.last_hidden_state??ze.logits??ze.token_embeddings;switch(H){case"none":break;case"mean":ve=(0,p.mean_pooling)(ve,Se.attention_mask);break;case"first_token":case"cls":ve=ve.slice(null,0);break;case"last_token":case"eos":ve=ve.slice(null,-1);break;default:throw Error(`Pooling method '${H}' not supported.`)}return we&&(ve=ve.normalize(2,-1)),be&&(ve=(0,p.quantize_embeddings)(ve,Ce)),ve}}class W extends m{constructor(se){super(se)}async _call(se,{pool:H=null}={}){const we=await c(se),{pixel_values:be}=await this.processor(we),Ce=await this.model({pixel_values:be});let Se;if(H){if(!("pooler_output"in Ce))throw Error("No pooled output was returned. Make sure the model has a 'pooler' layer when using the 'pool' option.");Se=Ce.pooler_output}else Se=Ce.last_hidden_state??Ce.logits??Ce.image_embeds;return Se}}class j extends m{constructor(se){super(se)}async _call(se,{top_k:H=5}={}){const we=this.processor.feature_extractor.config.sampling_rate,be=await g(se,we),Ce=this.model.config.id2label,Se=[];for(const ze of be){const ve=await this.processor(ze),Be=(await this.model(ve)).logits[0],ke=await(0,p.topk)(new p.Tensor("float32",(0,l.softmax)(Be.data),Be.dims),H),rt=ke[0].tolist(),ht=ke[1].tolist().map((He,dt)=>({label:Ce?Ce[He]:`LABEL_${He}`,score:rt[dt]}));Se.push(ht)}return Array.isArray(se)?Se:Se[0]}}class F extends m{constructor(se){super(se)}async _call(se,H,{hypothesis_template:we="This is a sound of {}."}={}){const be=!Array.isArray(se);be&&(se=[se]);const Ce=H.map(Be=>we.replace("{}",Be)),Se=this.tokenizer(Ce,{padding:!0,truncation:!0}),ze=this.processor.feature_extractor.config.sampling_rate,ve=await g(se,ze),Ve=[];for(const Be of ve){const ke=await this.processor(Be),rt=await this.model({...Se,...ke}),Ue=(0,l.softmax)(rt.logits_per_audio.data);Ve.push([...Ue].map((ht,He)=>({score:ht,label:H[He]})))}return be?Ve[0]:Ve}}class R extends m{constructor(se){super(se)}async _call(se,H={}){switch(this.model.config.model_type){case"whisper":case"lite-whisper":return this._call_whisper(se,H);case"wav2vec2":case"wav2vec2-bert":case"unispeech":case"unispeech-sat":case"hubert":case"parakeet_ctc":return this._call_wav2vec2(se,H);case"moonshine":return this._call_moonshine(se,H);default:throw new Error(`AutomaticSpeechRecognitionPipeline does not support model type '${this.model.config.model_type}'.`)}}async _call_wav2vec2(se,H){H.language&&console.warn('`language` parameter is not yet supported for `wav2vec2` models, defaulting to "English".'),H.task&&console.warn('`task` parameter is not yet supported for `wav2vec2` models, defaulting to "transcribe".');const we=!Array.isArray(se);we&&(se=[se]);const be=this.processor.feature_extractor.config.sampling_rate,Ce=await g(se,be),Se=[];for(const ze of Ce){const ve=await this.processor(ze),Be=(await this.model(ve)).logits[0],ke=[];for(const Ue of Be)ke.push((0,l.max)(Ue.data)[1]);const rt=this.tokenizer.decode(ke,{skip_special_tokens:!0}).trim();Se.push({text:rt})}return we?Se[0]:Se}async _call_whisper(se,H){const we=H.return_timestamps??!1,be=H.chunk_length_s??0,Ce=H.force_full_sequences??!1;let Se=H.stride_length_s??null;const ze={...H};we==="word"&&(ze.return_token_timestamps=!0,ze.return_timestamps=!1);const ve=!Array.isArray(se);ve&&(se=[se]);const Ve=this.processor.feature_extractor.config.chunk_length/this.model.config.max_source_positions,Be=this.processor.feature_extractor.config.hop_length,ke=this.processor.feature_extractor.config.sampling_rate,rt=await g(se,ke),Ue=[];for(const ht of rt){let He=[];if(be>0){if(Se===null)Se=be/6;else if(be<=Se)throw Error("`chunk_length_s` must be larger than `stride_length_s`.");const Xe=ke*be,We=ke*Se,yt=Xe-2*We;let Mt=0;for(;;){const hr=Mt+Xe,Vt=ht.subarray(Mt,hr),tn=await this.processor(Vt),hn=Mt===0,ar=hr>=ht.length;if(He.push({stride:[Vt.length,hn?0:We,ar?0:We],input_features:tn.input_features,is_last:ar}),ar)break;Mt+=yt}}else He=[{stride:[ht.length,0,0],input_features:(await this.processor(ht)).input_features,is_last:!0}];for(const Xe of He){ze.num_frames=Math.floor(Xe.stride[0]/Be);const We=await this.model.generate({inputs:Xe.input_features,...ze});we==="word"?(Xe.tokens=We.sequences.tolist()[0],Xe.token_timestamps=We.token_timestamps.tolist()[0].map(yt=>(0,l.round)(yt,2))):Xe.tokens=We[0].tolist(),Xe.stride=Xe.stride.map(yt=>yt/ke)}const[dt,At]=this.tokenizer._decode_asr(He,{time_precision:Ve,return_timestamps:we,force_full_sequences:Ce});Ue.push({text:dt,...At})}return ve?Ue[0]:Ue}async _call_moonshine(se,H){const we=!Array.isArray(se);we&&(se=[se]);const be=this.processor.feature_extractor.config.sampling_rate,Ce=await g(se,be),Se=[];for(const ze of Ce){const ve=await this.processor(ze),Ve=Math.floor(ze.length/be)*6,Be=await this.model.generate({max_new_tokens:Ve,...H,...ve}),ke=this.processor.batch_decode(Be,{skip_special_tokens:!0})[0];Se.push({text:ke})}return we?Se[0]:Se}}class L extends m{constructor(se){super(se)}async _call(se,H={}){const we=Array.isArray(se),be=await c(se),{pixel_values:Ce}=await this.processor(be),Se=[];for(const ze of Ce){ze.dims=[1,...ze.dims];const ve=await this.model.generate({inputs:ze,...H}),Ve=this.tokenizer.batch_decode(ve,{skip_special_tokens:!0}).map(Be=>({generated_text:Be.trim()}));Se.push(Ve)}return we?Se:Se[0]}}class Q extends m{constructor(se){super(se)}async _call(se,{top_k:H=5}={}){const we=await c(se),{pixel_values:be}=await this.processor(we),Ce=await this.model({pixel_values:be}),Se=this.model.config.id2label,ze=[];for(const ve of Ce.logits){const Ve=await(0,p.topk)(new p.Tensor("float32",(0,l.softmax)(ve.data),ve.dims),H),Be=Ve[0].tolist(),rt=Ve[1].tolist().map((Ue,ht)=>({label:Se?Se[Ue]:`LABEL_${Ue}`,score:Be[ht]}));ze.push(rt)}return Array.isArray(se)?ze:ze[0]}}class ne extends m{constructor(se){super(se),this.subtasks_mapping={panoptic:"post_process_panoptic_segmentation",instance:"post_process_instance_segmentation",semantic:"post_process_semantic_segmentation"}}async _call(se,{threshold:H=.5,mask_threshold:we=.5,overlap_mask_area_threshold:be=.8,label_ids_to_fuse:Ce=null,target_sizes:Se=null,subtask:ze=null}={}){if(Array.isArray(se)&&se.length!==1)throw Error("Image segmentation pipeline currently only supports a batch size of 1.");const Ve=await c(se),Be=Ve.map(Xe=>[Xe.height,Xe.width]),ke=await this.processor(Ve),{inputNames:rt,outputN
2844ames:Ue}=this.model.sessions.model;if(!rt.includes("pixel_values")){if(rt.length!==1)throw Error(`Expected a single input name, but got ${rt.length} inputs: ${rt}.`);const Xe=rt[0];if(Xe in ke)throw Error(`Input name ${Xe} already exists in the inputs.`);ke[Xe]=ke.pixel_values}const ht=await this.model(ke);let He=null;if(ze!==null)He=this.subtasks_mapping[ze];else if(this.processor.image_processor){for(const[Xe,We]of Object.entries(this.subtasks_mapping))if(We in this.processor.image_processor){He=this.processor.image_processor[We].bind(this.processor.image_processor),ze=Xe;break}}const dt=this.model.config.id2label,At=[];if(ze)if(ze==="panoptic"||ze==="instance"){const Xe=He(ht,H,we,be,Ce,Se??Be)[0],We=Xe.segmentation;for(const yt of Xe.segments_info){const Mt=new Uint8ClampedArray(We.data.length);for(let Vt=0;Vt<We.data.length;++Vt)We.data[Vt]===yt.id&&(Mt[Vt]=255);const hr=new d.RawImage(Mt,We.dims[1],We.dims[0],1);At.push({score:yt.score,label:dt[yt.label_id],mask:hr})}}else if(ze==="semantic"){const{segmentation:Xe,labels:We}=He(ht,Se??Be)[0];for(const yt of We){const Mt=new Uint8ClampedArray(Xe.data.length);for(let Vt=0;Vt<Xe.data.length;++Vt)Xe.data[Vt]===yt&&(Mt[Vt]=255);
2844const hr=new d.RawImage(Mt,Xe.dims[1],Xe.dims[0],1);At.push({score:null,label:dt[yt],mask:hr})}}else throw Error(`Subtask ${ze} not supported.`);else{const We=ht[Ue[0]];for(let yt=0;yt<Be.length;++yt){const Mt=Be[yt],hr=We[yt];hr.data.some(tn=>tn<-1e-5||tn>1+1e-5)&&hr.sigmoid_();const Vt=await d.RawImage.fromTensor(hr.mul_(255).to("uint8")).resize(Mt[1],Mt[0]);At.push({label:null,score:null,mask:Vt})}}return At}}class re extends ne{constructor(se){super(se)}async _call(se,H={}){if(Array.isArray(se)&&se.length!==1)throw Error("Background removal pipeline currently only supports a batch size of 1.");const be=await c(se),Ce=await super._call(se,H);return be.map((ze,ve)=>{const Ve=ze.clone();return Ve.putAlpha(Ce[ve].mask),Ve})}}class ce extends m{constructor(se){super(se)}async _call(se,H,{hypothesis_template:we="This is a photo of {}"}={}){const be=Array.isArray(se),Ce=await c(se),Se=H.map(rt=>we.replace("{}",rt)),ze=this.tokenizer(Se,{padding:this.model.config.model_type==="siglip"?"max_length":!0,truncation:!0}),{pixel_values:ve}=await this.processor(Ce),Ve=await this.model({...ze,pixel_values:ve}),Be=this.model.config.model_type==="siglip"?rt=>rt.sigmoid().data:rt=>(0,l.softmax)(rt.data),ke=[];for(const rt of Ve.logits_per_image){const ht=[...Be(rt)].map((He,dt)=>({score:He,label:H[dt]}));ht.sort((He,dt)=>dt.score-He.score),ke.push(ht)}return be?ke:ke[0]}}class ge extends m{constructor(se){super(se)}async _call(se,{threshold:H=.9,percentage:we=!1}={}){const be=Array.isArray(se);if(be&&se.length!==1)throw Error("Object detection pipeline currently only supports a batch size of 1.");const Ce=await c(se),Se=we?null:Ce.map(Ue=>[Ue.height,Ue.width]),{pixel_values:ze,pixel_mask:ve}=await this.processor(Ce),Ve=await this.model({pixel_values:ze,pixel_mask:ve}),Be=this.processor.image_processor.post_process_object_detection(Ve,H,Se),ke=this.model.config.id2label,rt=Be.map(Ue=>Ue.boxes.map((ht,He)=>({score:Ue.scores[He],label:ke[Ue.classes[He]],box:A(ht,!we)})));return be?rt:rt[0]}}class q extends m{constructor(se){super(se)}async _call(se,H,{threshold:we=.1,top_k:be=null,percentage:Ce=!1}={}){const Se=Array.isArray(se),ze=await c(se),ve=this.tokenizer(H,{padding:!0,truncation:!0}),Ve=await this.processor(ze),Be=[];for(let ke=0;ke<ze.length;++ke){const rt=ze[ke],Ue=Ce?null:[[rt.height,rt.width]],ht=Ve.pixel_values[ke].unsqueeze_(0),He=await this.model({...ve,pixel_values:ht});let dt;if("post_process_grounded_object_detection"in this.processor){const At=this.processor.post_process_grounded_object_detection(He,ve.input_ids,{box_threshold:we,text_threshold:we,target_sizes:Ue})[0];dt=At.boxes.map((Xe,We)=>({score:At.scores[We],label:At.labels[We],box:A(Xe,!Ce)}))}else{const At=this.processor.image_processor.post_process_object_detection(He,we,Ue,!0)[0];dt=At.boxes.map((Xe,We)=>({score:At.scores[We],label:H[At.classes[We]],box:A(Xe,!Ce)}))}dt.sort((At,Xe)=>Xe.score-At.score),be!==null&&(dt=dt.slice(0,be)),Be.push(dt)}return Se?Be:Be[0]}}class V extends m{constructor(se){super(se)}async _call(se,H,we={}){const be=(await c(se))[0],{pixel_values:Ce}=await this.processor(be),Se=`<s_docvqa><s_question>${H}</s_question><s_answer>`,ze=this.tokenizer(Se,{add_special_tokens:!1,padding:!0,truncation:!0}).input_ids,ve=await this.model.generate({inputs:Ce,max_length:this.model.config.decoder.max_position_embeddings,decoder_input_ids:ze,...we}),Be=this.tokenizer.batch_decode(ve)[0].match(/<s_answer>(.*?)<\/s_answer>/);let ke=null;return Be&&Be.length>=2&&(ke=Be[1].trim()),[{answer:ke}]}}class U extends m{DEFAULT_VOCODER_ID="Xenova/speecht5_hifigan";constructor(se){super(se),this.vocoder=se.vocoder??null}async _prepare_speaker_embeddings(se){if((typeof se=="string"||se instanceof URL)&&(se=new Float32Array(await(await fetch(se)).arrayBuffer())),se instanceof Float32Array)se=new p.Tensor("float32",se,[se.length]);else if(!(se instanceof p.Tensor))throw new Error("Speaker embeddings must be a `Tensor`, `Float32Array`, `string`, or `URL`.");return se}async _call(se,{speaker_embeddings:H=null,num_inference_steps:we,speed:be}={}){return this.processor?this._call_text_to_spectrogram(se,{speaker_embeddings:H}):this.model.config.model_type==="supertonic"?this._call_supertonic(se,{speaker_embeddings:H,num_inference_steps:we,speed:be}):this._call_text_to_waveform(se)}async _call_supertonic(se,{speaker_embeddings:H,num_inference_steps:we,speed:be}){if(!H)throw new Error("Speaker embeddings must be provided for Supertonic models.");H=await this._prepare_speaker_embeddings(H);const{sampling_rate:Ce,style_dim:Se}=this.model.config;H=H.view(1,-1,Se);const ze=this.tokenizer(se,{padding:!0,truncation:!0}
2844),{waveform:ve}=await this.model.generate_speech({...ze,style:H,num_inference_steps:we,speed:be});return new u.RawAudio(ve.data,Ce)}async _call_text_to_waveform(se){const H=this.tokenizer(se,{padding:!0,truncation:!0}),{waveform:we}=await this.model(H),be=this.model.config.sampling_rate;return new u.RawAudio(we.data,be)}async _call_text_to_spectrogram(se,{speaker_embeddings:H}){this.vocoder||(console.log("No vocoder specified, using default HifiGan vocoder."),this.vocoder=await s.AutoModel.from_pretrained(this.DEFAULT_VOCODER_ID,{dtype:"fp32"}));const{input_ids:we}=this.tokenizer(se,{padding:!0,truncation:!0});H=await this._prepare_speaker_embeddings(H),H=H.view(1,-1);const{waveform:be}=await this.model.generate_speech(we,H,{vocoder:this.vocoder}),Ce=this.processor.feature_extractor.config.sampling_rate;return new u.RawAudio(be.data,Ce)}}class N extends m{constructor(se){super(se)}async _call(se){const H=await c(se),we=await this.processor(H),be=await this.model(we),Ce=[];for(const Se of be.reconstruction){const ze=Se.squeeze().clamp_(0,1).mul_(255).round_().to("uint8");Ce.push(d.RawImage.fromTensor(ze))}return Ce.length>1?Ce:Ce[0]}}class oe extends m{constructor(se){super(se)}async _call(se){const H=await c(se),we=await this.processor(H),{predicted_depth:be}=await this.model(we),Ce=[];for(let Se=0;Se<H.length;++Se){const ze=be[Se],[ve,Ve]=ze.dims.slice(-2),[Be,ke]=H[Se].size,rt=(await(0,p.interpolate_4d)(ze.view(1,1,ve,Ve),{size:[ke,Be],mode:"bilinear"})).view(ke,Be),Ue=rt.min().item(),ht=rt.max().item(),He=rt.sub(Ue).div_(ht-Ue).mul_(255).to("uint8").unsqueeze(0),dt=d.RawImage.fromTensor(He);Ce.push({predicted_depth:rt,depth:dt})}return Ce.length>1?Ce:Ce[0]}}const fe=Object.freeze({"text-classification":{tokenizer:n.AutoTokenizer,pipeline:B,model:s.AutoModelForSequenceClassification,default:{model:"Xenova/distilbert-base-uncased-finetuned-sst-2-english"},type:"text"},"token-classification":{tokenizer:n.AutoTokenizer,pipeline:f,model:s.AutoModelForTokenClassification,default:{model:"Xenova/bert-base-multilingual-cased-ner-hrl"},type:"text"},"question-answering":{tokenizer:n.AutoTokenizer,pipeline:h,model:s.AutoModelForQuestionAnswering,default:{model:"Xenova/distilbert-base-cased-distilled-squad"},type:"text"},"fill-mask":{tokenizer:n.AutoTokenizer,pipeline:P,model:s.AutoModelForMaskedLM,default:{model:"Xenova/bert-base-uncased"},type:"text"},summarization:{tokenizer:n.AutoTokenizer,pipeline:w,model:s.AutoModelForSeq2SeqLM,default:{model:"Xenova/distilbart-cnn-6-6"},type:"text"},translation:{tokenizer:n.AutoTokenizer,pipeline:b,model:s.AutoModelForSeq2SeqLM,default:{model:"Xenova/t5-small"},type:"text"},"text2text-generation":{tokenizer:n.AutoTokenizer,pipeline:_,model:s.AutoModelForSeq2SeqLM,default:{model:"Xenova/flan-t5-small"},type:"text"},"text-generation":{tokenizer:n.AutoTokenizer,pipeline:y,model:s.AutoModelForCausalLM,default:{model:"Xenova/gpt2"},type:"text"},"zero-shot-classification":{tokenizer:n.AutoTokenizer,pipeline:$,model:s.AutoModelForSequenceClassification,default:{model:"Xenova/distilbert-base-uncased-mnli"},type:"text"},"audio-classification":{pipeline:j,model:s.AutoModelForAudioClassification,processor:a.AutoProcessor,default:{model:"Xenova/wav2vec2-base-superb-ks"},type:"audio"},"zero-shot-audio-classification":{tokenizer:n.AutoTokenizer,pipeline:F,model:s.AutoModel,processor:a.AutoProcessor,default:{model:"Xenova/clap-htsat-unfused"},type:"multimodal"},"automatic-speech-recognition":{tokenizer:n.AutoTokenizer,pipeline:R,model:[s.AutoModelForSpeechSeq2Seq,s.AutoModelForCTC],processor:a.AutoProcessor,default:{model:"Xenova/whisper-tiny.en"},type:"multimodal"},"text-to-audio":{tokenizer:n.AutoTokenizer,pipeline:U,model:[s.AutoModelForTextToWaveform,s.AutoModelForTextToSpectrogram],processor:[a.AutoProcessor,null],default:{model:"Xenova/speecht5_tts"},type:"text"},"image-to-text":{tokenizer:n.AutoTokenizer,pipeline:L,model:s.AutoModelForVision2Seq,processor:a.AutoProcessor,default:{model:"Xenova/vit-gpt2-image-captioning"},type:"multimodal"},"image-classification":{pipeline:Q,model:s.AutoModelForImageClassification,processor:a.AutoProcessor,default:{model:"Xenova/vit-base-patch16-224"},type:"multimodal"},"image-segmentation":{pipeline:ne,model:[s.AutoModelForImageSegmentation,s.AutoModelForSemanticSegmentation,s.AutoModelForUniversalSegmentation],processor:a.AutoProcessor,default:{model:"Xenova/detr-resnet-50-panoptic"},type:"multimodal"},"background-removal":{pipeline:re,model:[s.AutoModelForImageSegmentation,s.AutoModelForSemanticSegmentation,s.AutoModelForUniversalSegmentation],processor:a.AutoProcessor,default:{model:"Xenova/modnet"},type:"image"},"zero-shot-image-classification":{tokenizer:n.AutoTokenizer,pipeline:ce,model:s.AutoModel,processor:a.AutoProcessor,default:{model:"Xenova/clip-vit-base-patch32"},type:"multimodal"},"object-detection":{pipeline:ge,model:s.AutoModelForObjectDetection,processor:a.AutoProcessor,default:{model:"Xenova/detr-resnet-50"},type:"multimodal"},"zero-shot-object-detection":{tokenizer:n.AutoTokenizer,pipeline:q,model:s.AutoModelForZeroShotObjectDetection,processor:a.AutoProcessor,default:{model:"Xenova/owlvit-base-patch32"},type:"multimodal"},"document-question-answering":{tokenizer:n.AutoTokenizer,pipeline:V,model:s.AutoModelForDocumentQuestionAnswering,processor:a.AutoProcessor,default:{model:"Xenova/d
2844onut-base-finetuned-docvqa"},type:"multimodal"},"image-to-image":{pipeline:N,model:s.AutoModelForImageToImage,processor:a.AutoProcessor,default:{model:"Xenova/swin2SR-classical-sr-x2-64"},type:"image"},"depth-estimation":{pipeline:oe,model:s.AutoModelForDepthEstimation,processor:a.AutoProcessor,default:{model:"Xenova/dpt-large"},type:"image"},"feature-extraction":{tokenizer:n.AutoTokenizer,pipeline:k,model:s.AutoModel,default:{model:"Xenova/all-MiniLM-L6-v2"},type:"text"},"image-feature-extraction":{processor:a.AutoProcessor,pipeline:W,model:[s.AutoModelForImageFeatureExtraction,s.AutoModel],default:{model:"Xenova/vit-base-patch16-224-in21k"},type:"image"}}),De=Object.freeze({"sentiment-analysis":"text-classification",ner:"token-classification",asr:"automatic-speech-recognition","text-to-speech":"text-to-audio",embeddings:"feature-extraction"});async function Ie(Me,se=null,{progress_callback:H=null,config:we=null,cache_dir:be=null,local_files_only:Ce=!1,revision:Se="main",device:ze=null,dtype:ve=null,subfolder:Ve="onnx",use_external_data_format:Be=null,model_file_name:ke=null,session_options:rt={}}={}){Me=De[Me]??Me;const Ue=fe[Me.split("_",1)[0]];if(!Ue)throw Error(`Unsupported pipeline: ${Me}. Must be one of [${Object.keys(fe)}]`);se||(se=Ue.default.model,console.log(`No model specified. Using default model: "${se}".`));const ht={progress_callback:H,config:we,cache_dir:be,local_files_only:Ce,revision:Se,device:ze,dtype:ve,subfolder:Ve,use_external_data_format:Be,model_file_name:ke,session_options:rt},He=new Map([["tokenizer",Ue.tokenizer],["model",Ue.model],["processor",Ue.processor]]),dt=await je(He,se,ht);dt.task=Me,(0,o.dispatchCallback)(H,{status:"ready",task:Me,model:se});const At=Ue.pipeline;return new At(dt)}async function je(Me,se,H){const we=Object.create(null),be=[];for(const[Ce,Se]of Me.entries()){if(!Se)continue;let ze;Array.isArray(Se)?ze=new Promise(async(ve,Ve)=>{let Be;for(const ke of Se){if(ke===null){ve(null);return}try{ve(await ke.from_pretrained(se,H));return}catch(rt){if(rt.message?.includes("Unsupported model type"))Be=rt;else if(rt.message?.includes("Could not locate file"))Be=rt;else{Ve(rt);return}}}Ve(Be)}):ze=Se.from_pretrained(se,H),we[Ce]=ze,be.push(ze)}await Promise.all(be);for(const[Ce,Se]of Object.entries(we))we[Ce]=await Se;return we}}),
2844"./src/tokenizers.js":((e,t,r)=>{r.r(t),r.d(t,{AlbertTokenizer:()=>us,AutoTokenizer:()=>ii,BartTokenizer:()=>at,BertTokenizer:()=>Er,BlenderbotSmallTokenizer:()=>Ze,BlenderbotTokenizer:()=>Ke,BloomTokenizer:()=>rr,CLIPTokenizer:()=>xs,CamembertTokenizer:()=>le,CodeGenTokenizer:()=>Bs,CodeLlamaTokenizer:()=>yr,CohereTokenizer:()=>Ds,ConvBertTokenizer:()=>ie,DebertaTokenizer:()=>Ft,DebertaV2Tokenizer:()=>ds,DistilBertTokenizer:()=>ae,ElectraTokenizer:()=>Oe,EsmTokenizer:()=>Kr,FalconTokenizer:()=>En,GPT2Tokenizer:()=>Et,GPTNeoXTokenizer:()=>ps,GemmaTokenizer:()=>qr,Grok1Tokenizer:()=>vr,HerbertTokenizer:()=>S,LlamaTokenizer:()=>kr,M2M100Tokenizer:()=>Zn,MBart50Tokenizer:()=>lt,MBartTokenizer:()=>Ot,MPNetTokenizer:()=>vs,MarianTokenizer:()=>_n,MgpstrTokenizer:()=>ra,MobileBertTokenizer:()=>cs,NllbTokenizer:()=>jn,NougatTokenizer:()=>Dr,PreTrainedTokenizer:()=>kt,Qwen2Tokenizer:()=>fn,RoFormerTokenizer:()=>X,RobertaTokenizer:()=>St,SiglipTokenizer:()=>Es,SpeechT5Tokenizer:()=>ft,SqueezeBertTokenizer:()=>pr,T5Tokenizer:()=>gt,TokenizerModel:()=>W,VitsTokenizer:()=>ta,Wav2Vec2CTCTokenizer:()=>wn,WhisperTokenizer:()=>ea,XLMRobertaTokenizer:()=>ln,XLMTokenizer:()=>_e,is_chinese_char:()=>P});var n=r("./src/utils/generic.js"),s=r("./src/utils/core.js"),a=r("./src/utils/hub.js"),i=r("./src/utils/maths.js"),o=r("./src/utils/tensor.js"),l=r("./src/utils/data-structures.js"),u=r("./node_modules/@huggingface/jinja/dist/index.js"),p=r("./src/models/whisper/common_whisper.js");async function d(ye,O){const te=await Promise.all([(0,a.getModelJSON)(ye,"tokenizer.json",!0,O),(0,a.getModelJSON)(ye,"tokenizer_config.json",!0,O)]);return O.legacy!==null&&(te[1].legacy=O.legacy),te}function c(ye,O){const te=[];let de=0;for(const pe of ye.matchAll(O)){const xe=pe[0];de<pe.index&&te.push(ye.slice(de,pe.index)),xe.length>0&&te.push(xe),de=pe.index+xe.length}return de<ye.length&&te.push(ye.slice(de)),te}function g(ye,O=!0){if(ye.Regex!==void 0){let te=ye.Regex.replace(/\\([#&~])/g,"$1");for(const[de,pe]of $)te=te.replaceAll(de,pe);return new RegExp(te,"gu")}else if(ye.String!==void 0){const te=(0,s.escapeRegExp)(ye.String);return new RegExp(O?te:`(${te})`,"gu")}else return console.warn("Unknown pattern type:",ye),null}function A(ye){return new Map(Object.entries(ye))}function m(ye){const O=ye.dims;switch(O.length){case 1:return ye.tolist();case 2:if(O[0]!==1)throw new Error("Unable to decode tensor with `batch size !== 1`. Use `tokenizer.batch_decode(...)` for batched inputs.");return ye.tolist()[0];default:throw new Error(`Expected tensor to have 1-2 dimensions, got ${O.length}.`)}}function B(ye){return ye.replace(/ \./g,".").replace(/ \?/g,"?").replace(/ \!/g,"!").replace(/ ,/g,",").replace(/ \' /g,"'").replace(/ n\'t/g,"n't").replace(/ \'m/g,"'m").replace(/ \'s/g,"'s").replace(/ \'ve/g,"'ve").replace(/ \'re/g,"'re")}function f(ye){return ye.replace(new RegExp("\\p{M}","gu"),"")}function h(ye){return f(ye.toLowerCase())}function P(ye){return ye>=19968&&ye<=40959||ye>=13312&&ye<=19903||ye>=131072&&ye<=173791||ye>=173824&&ye<=177983||ye>=177984&&ye<=178207||ye>=178208&&ye<=183983||ye>=63744&&ye<=64255||ye>=194560&&ye<=195103}function _(ye,O,te){const de=[];let pe=0;for(;pe<ye.length;){if(de.push(ye[pe]),(O.get(ye[pe])??te)!==te){++pe;continue}for(;++pe<ye.length&&(O.get(ye[pe])??te)===te;)O.get(de.at(-1))!==te&&(de[de.length-1]+=ye[pe])}return de}function w(ye){return ye.match(/\S+/g)||[]}const b="\\p{P}\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E",v=new RegExp(`^[${b}]+$`,"gu"),y=".,!?…。,、।۔،",$=new Map([["(?i:'s|'t|'re|'ve|'m|'ll|'d)","(?:'([sS]|[tT]|[rR][eE]|[vV][eE]|[mM]|[lL][lL]|[dD]))"],["(?i:[sdmt]|ll|ve|re)","(?:[sS]|[dD]|[mM]|[tT]|[lL][lL]|[vV][eE]|[rR][eE])"],["[^\\r\\n\\p{L}\\p{N}]?+","[^\\r\\n\\p{L}\\p{N}]?"],["[^\\s\\p{L}\\p{N}]++","[^\\s\\p{L}\\p{N}]+"],[` ?[^(\\s|[${y}])]+`,` ?[^\\s${y}]+`]]);class k{constructor(O){this.content=O.content,this.id=O.id,this.single_word=O.single_word??!1,this.lstrip=O.lstrip??!1,this.rstrip=O.rstrip??!1,this.special=O.special??!1,this.normalized=O.normalized??null}}class W extends n.Callable{constructor(O){super(),this.config=O,this.vocab=[],this.tokens_to_ids=new Map,this.unk_token_id=void 0,this.unk_token=void 0,this.end_of_word_suffix=void 0,this.fuse_unk=this.config.fuse_unk??!1}static fromConfig(O,...te){switch(O.type){case"WordPiece":return new j(O);case"Unigram":return new F(O,...te);case"BPE":return new Q(O);default:if(O.vocab)return Array.isArray(O.vocab)?new F(O,...te):Object.hasOwn(O,"continuing_subword_prefix")&&Object.hasOwn(O,"unk_token")?Object.hasOwn(O,"merges")?new Q(O):new j(O):new ne(O,...te);throw new Error(`Unknown TokenizerModel type: ${O.type}`)}}_call(O){return O=this.encode(O),this.fuse_unk&&(O=_(O,this.tokens_to_ids,this.unk_token_id)),O}encode(O){throw Error("encode should be implemented in subclass.")}convert_tokens_to_ids(O){return O.map(te=>this.tokens_to_ids.get(te)??this.unk_token_id)}convert_ids_to_tokens(O){return O.map(te=>this.vocab[te]??this.unk_token)}}class j extends W{constructor(O){super(O),this.tokens_to_ids=A(O.vocab),this.unk_token_id=this.tokens_to_ids.get(O.unk_token),this.unk_token=O.unk_token,this.max_input_chars_per_word=O.max_input_chars_per_word??100,this.vocab=new Array(this.tokens_to_ids.size);for(const[te,de]of this.tokens_to_ids)this.vocab[de]=te}encode(O){const te=[];for(const de of O){const pe=[...de];if(pe.length>this.max_input_chars_per_word){te.push(this.unk_token);continue}let xe=!1,Fe=0;const ct=[];for(;Fe<pe.length;){let ut=pe.length,pt=null;for(;Fe<ut;){let st=pe.slice(Fe,ut).join("");if(Fe>0&&(st=this.config.continuing_subword_prefix+st),this.tokens_to_ids.has(st)){pt=st;break}--ut}if(pt===null){xe=!0;break}ct.push(pt),Fe=ut}xe?te.push(this.unk_token):te.push(...ct)}return te}}class F extends W{constructor(O,te){super(O);const de=O.vocab.length;this.vocab=new Array(de),this.scores=new Array(de);for(let pe=0;pe<de;++pe)[this.vocab[pe],this.scores[pe]]=O.vocab[pe];
2844this.unk_token_id=O.unk_id,this.unk_token=this.vocab[O.unk_id],this.tokens_to_ids=new Map(this.vocab.map((pe,xe)=>[pe,xe])),this.bos_token=" ",this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=te.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.unk_token=this.vocab[this.unk_token_id],this.minScore=(0,i.min)(this.scores)[0],this.unk_score=this.minScore-10,this.scores[this.unk_token_id]=this.unk_score,this.trie=new l.CharTrie,this.trie.extend(this.vocab),this.fuse_unk=!0}populateNodes(O){const te=O.chars,de=1;let pe=0;for(;pe<te.length;){let xe=!1;const Fe=te.slice(pe).join(""),ct=this.trie.commonPrefixSearch(Fe);for(const ut of ct){const pt=this.tokens_to_ids.get(ut),st=this.scores[pt],Xt=(0,s.len)(ut);O.insert(pe,Xt,st,pt),!xe&&Xt===de&&(xe=!0)}xe||O.insert(pe,de,this.unk_score,this.unk_token_id),pe+=de}}tokenize(O){const te=new l.TokenLattice(O,this.bos_token_id,this.eos_token_id);return this.populateNodes(te),te.tokens()}encode(O){const te=[];for(const de of O){const pe=this.tokenize(de);te.push(...pe)}return te}}const R=(()=>{const ye=[...Array.from({length:94},(pe,xe)=>xe+33),...Array.from({length:12},(pe,xe)=>xe+161),...Array.from({length:82},(pe,xe)=>xe+174)],O=ye.slice();let te=0;for(let pe=0;pe<256;++pe)ye.includes(pe)||(ye.push(pe),O.push(256+te),te+=1);const de=O.map(pe=>String.fromCharCode(pe));return Object.fromEntries(ye.map((pe,xe)=>[pe,de[xe]]))})(),L=(0,s.reverseDictionary)(R);class Q extends W{constructor(O){super(O),this.tokens_to_ids=A(O.vocab),this.unk_token_id=this.tokens_to_ids.get(O.unk_token),this.unk_token=O.unk_token,this.vocab=new Array(this.tokens_to_ids.size);for(const[de,pe]of this.tokens_to_ids)this.vocab[pe]=de;const te=Array.isArray(O.merges[0]);this.merges=te?O.merges:O.merges.map(de=>de.split(" ",2)),this.bpe_ranks=new Map(this.merges.map((de,pe)=>[JSON.stringify(de),pe])),this.end_of_word_suffix=O.end_of_word_suffix,this.continuing_subword_suffix=O.continuing_subword_suffix??null,this.byte_fallback=this.config.byte_fallback??!1,this.byte_fallback&&(this.text_encoder=new TextEncoder),this.ignore_merges=this.config.ignore_merges??!1,this.max_length_to_cache=256,this.cache_capacity=1e4,this.cache=new l.LRUCache(this.cache_capacity)}clear_cache(){this.cache.clear()}bpe(O){if(O.length===0)return[];const te=this.cache.get(O);if(te!==void 0)return te;const de=Array.from(O);this.end_of_word_suffix&&(de[de.length-1]+=this.end_of_word_suffix);let pe=[];if(de.length>1){const xe=new l.PriorityQueue((ut,pt)=>ut.score<pt.score);let Fe={token:de[0],bias:0,prev:null,next:null},ct=Fe;for(let ut=1;ut<de.length;++ut){const pt={bias:ut/de.length,token:de[ut],prev:ct,next:null};ct.next=pt,this._add_node(xe,ct),ct=pt}for(;!xe.isEmpty();){const ut=xe.pop();if(ut.deleted||!ut.next||ut.next.deleted)continue;if(ut.deleted=!0,ut.next.deleted=!0,ut.prev){const st={...ut.prev};ut.prev.deleted=!0,ut.prev=st,st.prev?st.prev.next=st:Fe=st}const pt={token:ut.token+ut.next.token,bias:ut.bias,prev:ut.prev,next:ut.next.next};pt.prev?(pt.prev.next=pt,this._add_node(xe,pt.prev)):Fe=pt,pt.next&&(pt.next.prev=pt,this._add_node(xe,pt))}for(let ut=Fe;ut!==null;ut=ut.next)pe.push(ut.token)}else pe=de;if(this.continuing_subword_suffix)for(let xe=0;xe<pe.length-1;++xe)pe[xe]+=this.continuing_subword_suffix;return O.length<this.max_length_to_cache&&this.cache.put(O,pe),pe}_add_node(O,te){const de=this.bpe_ranks.get(JSON.stringify([te.token,te.next.token]));de!==void 0&&(te.score=de+te.bias,O.push(te))}encode(O){const te=[];for(const de of O){if(this.ignore_merges&&this.tokens_to_ids.has(de)){te.push(de);continue}const pe=this.bpe(de);for(const xe of pe)if(this.tokens_to_ids.has(xe))te.push(xe);else if(this.byte_fallback){const Fe=Array.from(this.text_encoder.encode(xe)).map(ct=>`<0x${ct.toString(16).toUpperCase().padStart(2,"0")}>`);Fe.every(ct=>this.tokens_to_ids.has(ct))?te.push(...Fe):te.push(this.unk_token)}else te.push(this.unk_token)}return te}}class ne extends W{constructor(O,te){super(O),this.tokens_to_ids=A(te.target_lang?O.vocab[te.target_lang]:O.vocab),this.bos_token=te.bos_token,this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=te.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.pad_token=te.pad_token,this.pad_token_id=this.tokens_to_ids.get(this.pad_token),this.unk_token=te.unk_token,this.unk_token_id=this.tokens_to_ids.get(this.unk_token),this.vocab=new Array(this.tokens_to_ids.size);for(const[de,pe]of this.tokens_to_ids)this.vocab[pe]=de}encode(O){return O}}class re extends n.Callable{constructor(O){super(),this.config=O}static fromConfig(O){if(O===null)return null;
2844switch(O.type){case"BertNormalizer":return new Me(O);case"Precompiled":return new ar(O);case"Sequence":return new je(O);case"Replace":return new ce(O);case"NFC":return new q(O);case"NFD":return new V(O);case"NFKC":return new U(O);case"NFKD":return new N(O);case"Strip":return new oe(O);case"StripAccents":return new fe(O);case"Lowercase":return new De(O);case"Prepend":return new Ie(O);default:throw new Error(`Unknown Normalizer type: ${O.type}`)}}normalize(O){throw Error("normalize should be implemented in subclass.")}_call(O){return this.normalize(O)}}class ce extends re{normalize(O){const te=g(this.config.pattern);return te===null?O:O.replaceAll(te,this.config.content)}}class ge extends re{form=void 0;normalize(O){return O=O.normalize(this.form),O}}class q extends ge{form="NFC"}class V extends ge{form="NFD"}class U extends ge{form="NFKC"}class N extends ge{form="NFKD"}class oe extends re{normalize(O){return this.config.strip_left&&this.config.strip_right?O=O.trim():(this.config.strip_left&&(O=O.trimStart()),this.config.strip_right&&(O=O.trimEnd())),O}}class fe extends re{normalize(O){return O=f(O),O}}class De extends re{normalize(O){return O=O.toLowerCase(),O}}class Ie extends re{normalize(O){return O=this.config.prepend+O,O}}class je extends re{constructor(O){super(O),this.normalizers=O.normalizers.map(te=>re.fromConfig(te))}normalize(O){return this.normalizers.reduce((te,de)=>de.normalize(te),O)}}class Me extends re{_tokenize_chinese_chars(O){const te=[];for(let de=0;de<O.length;++de){const pe=O[de],xe=pe.charCodeAt(0);P(xe)?(te.push(" "),te.push(pe),te.push(" ")):te.push(pe)}return te.join("")}stripAccents(O){return O.normalize("NFD").replace(new RegExp("\\p{Mn}","gu"),"")}_is_control(O){switch(O){case"	":case`
2845`:case"\r":return!1;default:return new RegExp("^\\p{Cc}|\\p{Cf}|\\p{Co}|\\p{Cs}$","u").test(O)}}_clean_text(O){const te=[];for(const de of O){const pe=de.charCodeAt(0);pe===0||pe===65533||this._is_control(de)||(/^\s$/.test(de)?te.push(" "):te.push(de))}return te.join("")}normalize(O){return this.config.clean_text&&(O=this._clean_text(O)),this.config.handle_chinese_chars&&(O=this._tokenize_chinese_chars(O)),this.config.lowercase?(O=O.toLowerCase(),this.config.strip_accents!==!1&&(O=this.stripAccents(O))):this.config.strip_accents&&(O=this.stripAccents(O)),O}}class se extends n.Callable{static fromConfig(O){if(O===null)return null;switch(O.type){case"BertPreTokenizer":return new H(O);case"Sequence":return new On(O);case"Whitespace":return new ma(O);case"WhitespaceSplit":return new fa(O);case"Metaspace":return new tn(O);case"ByteLevel":return new we(O);case"Split":return new be(O);case"Punctuation":return new Ce(O);case"Digits":return new Se(O);case"Replace":return new _a(O);
2845case"FixedLength":return new Ur(O);default:throw new Error(`Unknown PreTokenizer type: ${O.type}`)}}pre_tokenize_text(O,te){throw Error("pre_tokenize_text should be implemented in subclass.")}pre_tokenize(O,te){return(Array.isArray(O)?O.map(de=>this.pre_tokenize_text(de,te)):this.pre_tokenize_text(O,te)).flat()}_call(O,te){return this.pre_tokenize(O,te)}}class H extends se{constructor(O){super(),this.pattern=new RegExp(`[^\\s${b}]+|[${b}]`,"gu")}pre_tokenize_text(O,te){return O.trim().match(this.pattern)||[]}}class we extends se{constructor(O){super(),this.config=O,this.add_prefix_space=this.config.add_prefix_space,this.trim_offsets=this.config.trim_offsets,this.use_regex=this.config.use_regex??!0,this.pattern=new RegExp("'s|'t|'re|'ve|'m|'ll|'d| ?\\p{L}+| ?\\p{N}+| ?[^\\s\\p{L}\\p{N}]+|\\s+(?!\\S)|\\s+","gu"),this.byte_encoder=R,this.text_encoder=new TextEncoder}pre_tokenize_text(O,te){return this.add_prefix_space&&!O.startsWith(" ")&&(O=" "+O),(this.use_regex?O.match(this.pattern)||[]:[O]).map(pe=>Array.from(this.text_encoder.encode(pe),xe=>this.byte_encoder[xe]).join(""))}}class be extends se{constructor(O){super(),this.config=O,this.pattern=g(this.config.pattern,this.config.invert)}pre_tokenize_text(O,te){return this.pattern===null?[]:this.config.invert?O.match(this.pattern)||[]:this.config.behavior?.toLowerCase()==="removed"?O.split(this.pattern).filter(de=>de):c(O,this.pattern)}}class Ce extends se{constructor(O){super(),this.config=O,this.pattern=new RegExp(`[^${b}]+|[${b}]+`,"gu")}pre_tokenize_text(O,te){return O.match(this.pattern)||[]}}class Se extends se{constructor(O){super(),this.config=O;const te=`[^\\d]+|\\d${this.config.individual_digits?"":"+"}`;this.pattern=new RegExp(te,"gu")}pre_tokenize_text(O,te){return O.match(this.pattern)||[]}}class ze extends n.Callable{constructor(O){super(),this.config=O}static fromConfig(O){if(O===null)return null;switch(O.type){case"TemplateProcessing":return new Be(O);case"ByteLevel":return new ke(O);case"RobertaProcessing":return new Ve(O);case"BertProcessing":return new ve(O);case"Sequence":return new rt(O);default:throw new Error(`Unknown PostProcessor type: ${O.type}`)}}post_process(O,...te){throw Error("post_process should be implemented in subclass.")}_call(O,...te){return this.post_process(O,...te)}}class ve extends ze{constructor(O){super(O),this.cls=O.cls[0],this.sep=O.sep[0]}post_process(O,te=null,{add_special_tokens:de=!0}={}){de&&(O=(0,s.mergeArrays)([this.cls],O,[this.sep]));let pe=new Array(O.length).fill(0);if(te!==null){const xe=de&&this instanceof Ve?[this.sep]:[],Fe=de?[this.sep]:[];O=(0,s.mergeArrays)(O,xe,te,Fe),pe=(0,s.mergeArrays)(pe,new Array(te.length+xe.length+Fe.length).fill(1))}return{tokens:O,token_type_ids:pe}}}class Ve extends ve{}class Be extends ze{constructor(O){super(O),this.single=O.single,this.pair=O.pair}post_process(O,te=null,{add_special_tokens:de=!0}={}){const pe=te===null?this.single:this.pair;let xe=[],Fe=[];for(const ct of pe)"SpecialToken"in ct?de&&(xe.push(ct.SpecialToken.id),Fe.push(ct.SpecialToken.type_id)):"Sequence"in ct&&(ct.Sequence.id==="A"?(xe=(0,s.mergeArrays)(xe,O),Fe=(0,s.mergeArrays)(Fe,new Array(O.length).fill(ct.Sequence.type_id))):ct.Sequence.id==="B"&&(xe=(0,s.mergeArrays)(xe,te),Fe=(0,s.mergeArrays)(Fe,new Array(te.length).fill(ct.Sequence.type_id))));return{tokens:xe,token_type_ids:Fe}}}class ke extends ze{post_process(O,te=null){return te&&(O=(0,s.mergeArrays)(O,te)),{tokens:O}}}class rt extends ze{constructor(O){super(O),this.processors=O.processors.map(te=>ze.fromConfig(te))}post_process(O,te=null,de={}){let pe;for(const xe of this.processors)if(xe instanceof ke)O=xe.post_process(O).tokens,te&&(te=xe.post_process(te).tokens);else{const Fe=xe.post_process(O,te,de);O=Fe.tokens,pe=Fe.token_type_ids}return{tokens:O,token_type_ids:pe}}}class Ue extends n.Callable{constructor(O){super(),this.config=O,this.added_tokens=[],this.end_of_word_suffix=null,this.trim_offsets=O.trim_offsets}static fromConfig(O){if(O===null)return null;switch(O.type){case"WordPiece":return new Xe(O);case"Metaspace":return new hn(O);case"ByteLevel":return new We(O);case"Replace":return new ht(O);case"ByteFallback":return new He(O);case"Fuse":return new dt(O);case"Strip":return new At(O);case"Sequence":return new Mt(O);case"CTC":return new yt(O);case"BPEDecoder":return new hr(O);
2845default:throw new Error(`Unknown Decoder type: ${O.type}`)}}_call(O){return this.decode(O)}decode(O){return this.decode_chain(O).join("")}decode_chain(O){throw Error("`decode_chain` should be implemented in subclass.")}}class ht extends Ue{decode_chain(O){const te=g(this.config.pattern);return te===null?O:O.map(de=>de.replaceAll(te,this.config.content))}}class He extends Ue{constructor(O){super(O),this.text_decoder=new TextDecoder}decode_chain(O){const te=[];let de=[];for(const pe of O){let xe=null;if(pe.length===6&&pe.startsWith("<0x")&&pe.endsWith(">")){const Fe=parseInt(pe.slice(3,5),16);isNaN(Fe)||(xe=Fe)}if(xe!==null)de.push(xe);else{if(de.length>0){const Fe=this.text_decoder.decode(Uint8Array.from(de));te.push(Fe),de=[]}te.push(pe)}}if(de.length>0){const pe=this.text_decoder.decode(Uint8Array.from(de));te.push(pe),de=[]}return te}}class dt extends Ue{decode_chain(O){return[O.join("")]}}class At extends Ue{constructor(O){super(O),this.content=this.config.content,this.start=this.config.start,this.stop=this.config.stop}decode_chain(O){return O.map(te=>{let de=0;for(let xe=0;xe<this.start&&te[xe]===this.content;++xe){de=xe+1;continue}let pe=te.length;for(let xe=0;xe<this.stop;++xe){const Fe=te.length-xe-1;if(te[Fe]===this.content){pe=Fe;continue}else break}return te.slice(de,pe)})}}class Xe extends Ue{constructor(O){super(O),this.cleanup=O.cleanup}decode_chain(O){return O.map((te,de)=>(de!==0&&(te.startsWith(this.config.prefix)?te=te.replace(this.config.prefix,""):te=" "+te),this.cleanup&&(te=B(te)),te))}}class We extends Ue{constructor(O){super(O),this.byte_decoder=L,this.text_decoder=new TextDecoder("utf-8",{fatal:!1,ignoreBOM:!0}),this.end_of_word_suffix=null}convert_tokens_to_string(O){const te=O.join(""),de=new Uint8Array([...te].map(xe=>this.byte_decoder[xe]));return this.text_decoder.decode(de)}decode_chain(O){const te=[];let de=[];for(const pe of O)this.added_tokens.find(xe=>xe.content===pe)!==void 0?(de.length>0&&(te.push(this.convert_tokens_to_string(de)),de=[]),te.push(pe)):de.push(pe);return de.length>0&&te.push(this.convert_tokens_to_string(de)),te}}class yt extends Ue{constructor(O){super(O),this.pad_token=this.config.pad_token,this.word_delimiter_token=this.config.word_delimiter_token,this.cleanup=this.config.cleanup}convert_tokens_to_string(O){if(O.length===0)return"";const te=[O[0]];for(let xe=1;xe<O.length;++xe)O[xe]!==te.at(-1)&&te.push(O[xe]);let pe=te.filter(xe=>xe!==this.pad_token).join("");return this.cleanup&&(pe=B(pe).replaceAll(this.word_delimiter_token," ").trim()),pe}decode_chain(O){return[this.convert_tokens_to_string(O)]}}class Mt extends Ue{constructor(O){super(O),this.decoders=O.decoders.map(te=>Ue.fromConfig(te))}decode_chain(O){return this.decoders.reduce((te,de)=>de.decode_chain(te),O)}}class hr extends Ue{constructor(O){super(O),this.suffix=this.config.suffix}decode_chain(O){return O.map((te,de)=>te.replaceAll(this.suffix,de===O.length-1?"":" "))}}class Vt extends Ue{decode_chain(O){let te="";for(let de=1;de<O.length;de+=2)te+=O[de];return[te]}}class tn extends se{constructor(O){super(),this.replacement=O.replacement,this.strRep=O.str_rep||this.replacement,this.prepend_scheme=O.prepend_scheme??"always"}pre_tokenize_text(O,{section_index:te=void 0}={}){let de=O.replaceAll(" ",this.strRep);return!de.startsWith(this.replacement)&&(this.prepend_scheme==="always"||this.prepend_scheme==="first"&&te===0)&&(de=this.strRep+de),[de]}}class hn extends Ue{constructor(O){super(O),this.replacement=O.replacement}decode_chain(O){const te=[];for(let de=0;de<O.length;++de){let pe=O[de].replaceAll(this.replacement," ");de==0&&pe.startsWith(" ")&&(pe=pe.substring(1)),te.push(pe)}return te}}class ar extends re{constructor(O){super(O),this.charsmap=O.precompiled_charsmap}normalize(O){return O=O.replace(/[\u0001-\u0008\u000B\u000E-\u001F\u007F\u008F\u009F]/gm,""),O=O.replace(/[\u0009\u000A\u000C\u000D\u00A0\u1680\u2000-\u200F\u2028\u2029\u202F\u205F\u2581\u3000\uFEFF\uFFFD]/gm," "),O.includes("~")?O=O.split("~").map(de=>de.normalize("NFKC")).join("~"):O=O.normalize("NFKC"),O}}class On extends se{constructor(O){super(),this.tokenizers=O.pretokenizers.map(te=>se.fromConfig(te))}pre_tokenize_text(O,te){return this.tokenizers.reduce((de,pe)=>pe.pre_tokenize(de,te),[O])}}class ma extends se{constructor(O){super()}pre_tokenize_text(O,te){return O.match(/\w+|[^\w\s]+/g)||[]}}class fa extends se{constructor(O){super()}pre_tokenize_text(O,te){return w(O)}}class _a extends se{constructor(O){super(),this.config=O,this.pattern=g(this.config.pattern),this.content=this.config.content}
2845pre_tokenize_text(O,te){return this.pattern===null?[O]:[O.replaceAll(this.pattern,this.config.content)]}}class Ur extends se{constructor(O){super(),this._length=O.length}pre_tokenize_text(O,te){const de=[];for(let pe=0;pe<O.length;pe+=this._length)de.push(O.slice(pe,pe+this._length));return de}}const mn=["bos_token","eos_token","unk_token","sep_token","pad_token","cls_token","mask_token"];function Nn(ye,O,te,de){for(const pe of Object.keys(ye)){const xe=O-ye[pe].length,Fe=te(pe),ct=new Array(xe).fill(Fe);ye[pe]=de==="right"?(0,s.mergeArrays)(ye[pe],ct):(0,s.mergeArrays)(ct,ye[pe])}}function Ms(ye,O){for(const te of Object.keys(ye))ye[te].length=O}class kt extends n.Callable{return_token_type_ids=!1;padding_side="right";constructor(O,te){super(),this.config=te,this.normalizer=re.fromConfig(O.normalizer),this.pre_tokenizer=se.fromConfig(O.pre_tokenizer),this.model=W.fromConfig(O.model,te),this.post_processor=ze.fromConfig(O.post_processor),this.decoder=Ue.fromConfig(O.decoder),this.special_tokens=[],this.all_special_ids=[],this.added_tokens=[];for(const de of O.added_tokens){const pe=new k(de);this.added_tokens.push(pe),this.model.tokens_to_ids.set(pe.content,pe.id),this.model.vocab[pe.id]=pe.content,pe.special&&(this.special_tokens.push(pe.content),this.all_special_ids.push(pe.id))}if(this.additional_special_tokens=te.additional_special_tokens??[],this.special_tokens.push(...this.additional_special_tokens),this.special_tokens=[...new Set(this.special_tokens)],this.decoder&&(this.decoder.added_tokens=this.added_tokens,this.decoder.end_of_word_suffix=this.model.end_of_word_suffix),this.added_tokens_splitter=new l.DictionarySplitter(this.added_tokens.map(de=>de.content)),this.added_tokens_map=new Map(this.added_tokens.map(de=>[de.content,de])),this.mask_token=this.getToken("mask_token"),this.mask_token_id=this.model.tokens_to_ids.get(this.mask_token),this.pad_token=this.getToken("pad_token","eos_token"),this.pad_token_id=this.model.tokens_to_ids.get(this.pad_token),this.sep_token=this.getToken("sep_token"),this.sep_token_id=this.model.tokens_to_ids.get(this.sep_token),this.unk_token=this.getToken("unk_token"),this.unk_token_id=this.model.tokens_to_ids.get(this.unk_token),this.bos_token=this.getToken("bos_token"),this.bos_token_id=this.model.tokens_to_ids.get(this.bos_token),this.eos_token=this.getToken("eos_token"),this.eos_token_id=this.model.tokens_to_ids.get(this.eos_token),this.model_max_length=te.model_max_length,this.remove_space=te.remove_space,this.clean_up_tokenization_spaces=te.clean_up_tokenization_spaces??!0,this.do_lowercase_and_remove_accent=te.do_lowercase_and_remove_accent??!1,te.padding_side&&(this.padding_side=te.padding_side),this.add_bos_token=te.add_bos_token,this.add_eos_token=te.add_eos_token,this.legacy=!1,this.chat_template=te.chat_template??null,Array.isArray(this.chat_template)){const de=Object.create(null);for(const{name:pe,template:xe}of this.chat_template){if(typeof pe!="string"||typeof xe!="string")throw new Error('Chat template must be a list of objects with "name" and "template" properties');de[pe]=xe}this.chat_template=de}this._compiled_template_cache=new Map}getToken(...O){for(const te of O){const de=this.config[te];if(de)if(typeof de=="object"){if(de.__type==="AddedToken")return de.content;throw Error(`Unknown token: ${de}`)}else return de}return null}static async from_pretrained(O,{progress_callback:te=null,config:de=null,cache_dir:pe=null,local_files_only:xe=!1,revision:Fe="main",legacy:ct=null}={}){const ut=await d(O,{progress_callback:te,config:de,cache_dir:pe,local_files_only:xe,revision:Fe,legacy:ct});return new this(...ut)}_call(O,{text_pair:te=null,add_special_tokens:de=!0,padding:pe=!1,truncation:xe=null,max_length:Fe=null,return_tensor:ct=!0,return_token_type_ids:ut=null}={}){const pt=Array.isArray(O);let st;if(pt){if(O.length===0)throw Error("text array must be non-empty");if(te!==null){if(Array.isArray(te)){if(O.length!==te.length)throw Error("text and text_pair must have the same length")}else throw Error("text_pair must also be an array");st=O.map((jt,Or)=>this._encode_plus(jt,{text_pair:te[Or],add_special_tokens:de,return_token_type_ids:ut}))}else st=O.map(jt=>this._encode_plus(jt,{add_special_tokens:de,return_token_type_ids:ut}))}else{if(O==null)throw Error("text may not be null or undefined");if(Array.isArray(te))throw Error("When specifying `text_pair`, since `text` is a string, `text_pair` must also be a string (i.e., not an array).");st=[this._encode_plus(O,{text_pair:te,add_special_tokens:de,return_token_type_ids:ut})]}if(Fe===null?Fe=this.model_max_length:xe===null&&(pe===!0?(console.warn("`max_length` is ignored when `padding: true` and there is no truncation strategy. To pad to max length, use `padding: 'max_length'`."),Fe=this.model_max_length):pe===!1&&(console.warn("Truncation was not explicitly activated but `max_length` is provided a specific value, please use `truncation: true` to explicitly truncate examples to max length."),xe=!0)),pe===!0&&(Fe=Math.min((0,i.max)(st.map(jt=>jt.input_ids.length))[0],Fe??1/0)),Fe=Math.min(Fe,this.model_max_length??1/0),pe||xe)for(let jt=0;jt<st.length;++jt)st[jt].input_ids.length!==Fe&&(st[jt].input_ids.length>Fe?xe&&Ms(st[jt],Fe):pe&&Nn(st[jt],Fe,Or=>Or==="input_ids"?this.pad_token_id:0,this.padding_side));const Xt={};if(ct){if(!(pe&&xe)&&st.some(Or=>{for(const un of Object.keys(Or))if(Or[un].length!==st[0][un]?.length)return!0;return!1}))throw Error("Unable to create tensor, you should probably activate truncation and/or padding with 'padding=true' and 'truncation=true' to have batched tensors with the same length.");const jt=[st.length,st[0].input_ids.length];for(const Or of Object.keys(st[0]))Xt[Or]=new o.Tensor("int64",BigInt64Array.from(st.flatMap(un=>un[Or]).map(BigInt)),jt)}
2845else{for(const jt of Object.keys(st[0]))Xt[jt]=st.map(Or=>Or[jt]);if(!pt)for(const jt of Object.keys(Xt))Xt[jt]=Xt[jt][0]}return Xt}_encode_text(O){if(O===null)return null;const te=this.added_tokens_splitter.split(O);for(let pe=0;pe<te.length;++pe){const xe=this.added_tokens_map.get(te[pe]);xe&&(xe.lstrip&&pe>0&&(te[pe-1]=te[pe-1].trimEnd()),xe.rstrip&&pe<te.length-1&&(te[pe+1]=te[pe+1].trimStart()))}return te.flatMap((pe,xe)=>{if(pe.length===0)return[];if(this.added_tokens_map.has(pe))return[pe];if(this.remove_space===!0&&(pe=pe.trim().split(/\s+/).join(" ")),this.do_lowercase_and_remove_accent&&(pe=h(pe)),this.normalizer!==null&&(pe=this.normalizer(pe)),pe.length===0)return[];const Fe=this.pre_tokenizer!==null?this.pre_tokenizer(pe,{section_index:xe}):[pe];return this.model(Fe)})}_encode_plus(O,{text_pair:te=null,add_special_tokens:de=!0,return_token_type_ids:pe=null}={}){const{tokens:xe,token_type_ids:Fe}=this._tokenize_helper(O,{pair:te,add_special_tokens:de}),ct=this.model.convert_tokens_to_ids(xe),ut={input_ids:ct,attention_mask:new Array(ct.length).fill(1)};return(pe??this.return_token_type_ids)&&Fe&&(ut.token_type_ids=Fe),ut}_tokenize_helper(O,{pair:te=null,add_special_tokens:de=!1}={}){const pe=this._encode_text(O),xe=this._encode_text(te);return this.post_processor?this.post_processor(pe,xe,{add_special_tokens:de}):{tokens:(0,s.mergeArrays)(pe??[],xe??[])}}tokenize(O,{pair:te=null,add_special_tokens:de=!1}={}){return this._tokenize_helper(O,{pair:te,add_special_tokens:de}).tokens}encode(O,{text_pair:te=null,add_special_tokens:de=!0,return_token_type_ids:pe=null}={}){return this._encode_plus(O,{text_pair:te,add_special_tokens:de,return_token_type_ids:pe}).input_ids}batch_decode(O,te={}){return O instanceof o.Tensor&&(O=O.tolist()),O.map(de=>this.decode(de,te))}decode(O,te={}){if(O instanceof o.Tensor&&(O=m(O)),!Array.isArray(O)||O.length===0||!(0,s.isIntegralNumber)(O[0]))throw Error("token_ids must be a non-empty array of integers.");return this.decode_single(O,te)}decode_single(O,{skip_special_tokens:te=!1,clean_up_tokenization_spaces:de=null}){let pe=this.model.convert_ids_to_tokens(O);te&&(pe=pe.filter(Fe=>!this.special_tokens.includes(Fe)));let xe=this.decoder?this.decoder(pe):pe.join(" ");return this.decoder&&this.decoder.end_of_word_suffix&&(xe=xe.replaceAll(this.decoder.end_of_word_suffix," "),te&&(xe=xe.trim())),(de??this.clean_up_tokenization_spaces)&&(xe=B(xe)),xe}get_chat_template({chat_template:O=null,tools:te=null}={}){if(this.chat_template&&typeof this.chat_template=="object"){const de=this.chat_template;if(O!==null&&Object.hasOwn(de,O))O=de[O];else if(O===null)if(te!==null&&"tool_use"in de)O=de.tool_use;else if("default"in de)O=de.default;else throw Error(`This model has multiple chat templates with no default specified! Please either pass a chat template or the name of the template you wish to use to the 'chat_template' argument. Available template names are ${Object.keys(de).sort()}.`)}else if(O===null)if(this.chat_template)O=this.chat_template;else throw Error("Cannot use apply_chat_template() because tokenizer.chat_template is not set and no template argument was passed! For information about writing templates and setting the tokenizer.chat_template attribute, please see the documentation at https://huggingface.co/docs/transformers/main/en/chat_templating");return O}apply_chat_template(O,{tools:te=null,documents:de=null,chat_template:pe=null,add_generation_prompt:xe=!1,tokenize:Fe=!0,padding:ct=!1,truncation:ut=!1,max_length:pt=null,return_tensor:st=!0,return_dict:Xt=!1,tokenizer_kwargs:jt={},...Or}={}){if(pe=this.get_chat_template({chat_template:pe,tools:te}),typeof pe!="string")throw Error(`chat_template must be a string, but got ${typeof pe}`);let un=this._compiled_template_cache.get(pe);un===void 0&&(un=new u.Template(pe),this._compiled_template_cache.set(pe,un));const gr=Object.create(null);for(const Br of mn){const Dn=this.getToken(Br);Dn&&(gr[Br]=Dn)}const Ar=un.render({messages:O,add_generation_prompt:xe,tools:te,documents:de,...gr,...Or});if(Fe){const Br=this._call(Ar,{add_special_tokens:!1,padding:ct,truncation:ut,max_length:pt,return_tensor:st,...jt});return Xt?Br:Br.input_ids}return Ar}}class Er extends kt{return_token_type_ids=!0}class us extends kt{return_token_type_ids=!0}class cs extends kt{return_token_type_ids=!0}class pr extends kt{return_token_type_ids=!0}class Ft extends kt{return_token_type_ids=!0}class ds extends kt{return_token_type_ids=!0}class S extends kt{return_token_type_ids=!0}class ie extends kt{return_token_type_ids=!0}class X extends kt{return_token_type_ids=!0}class ae extends kt{}class le extends kt{}class _e extends kt{return_token_type_ids=!0;constructor(O,te){super(O,te),console.warn('WARNING: `XLMTokenizer` is not yet supported by Hugging Face\'s "fast" tokenizers library. Therefore, you may experience slightly inaccurate results.')}}class Oe extends kt{return_token_type_ids=!0}class gt extends kt{}class Et extends kt{}class at extends kt{}class Ot extends kt{constructor(O,te){super(O,te),this.languageRegex=/^[a-z]{2}_[A-Z]{2}$/,this.language_codes=this.special_tokens.filter(de=>this.languageRegex.test(de)),this.lang_to_token=de=>de}_build_translation_inputs(O,te,de){return Rr(this,O,te,de)}}class lt extends Ot{}class St extends kt{}class rr extends kt{}const Hr="▁";class kr extends kt{padding_side="left";constructor(O,te){super(O,te),this.legacy=te.legacy??!0,this.legacy||(this.normalizer=null,this.pre_tokenizer=new tn({replacement:Hr,prepe
2845nd_scheme:"first"}))}_encode_text(O){if(O===null)return null;if(this.legacy||O.length===0)return super._encode_text(O);let te=super._encode_text(Hr+O.replaceAll(Hr," "));return te.length>1&&te[0]===Hr&&this.special_tokens.includes(te[1])&&(te=te.slice(1)),te}}class yr extends kt{}class ln extends kt{}class vs extends kt{}class En extends kt{}class ps extends kt{}class Kr extends kt{}class fn extends kt{}class qr extends kt{}class vr extends kt{}function Rr(ye,O,te,de){if(!("language_codes"in ye)||!Array.isArray(ye.language_codes))throw new Error("Tokenizer must have `language_codes` attribute set and it should be an array of language ids.");if(!("languageRegex"in ye)||!(ye.languageRegex instanceof RegExp))throw new Error("Tokenizer must have `languageRegex` attribute set and it should be a regular expression.");if(!("lang_to_token"in ye)||typeof ye.lang_to_token!="function")throw new Error("Tokenizer must have `lang_to_token` attribute set and it should be a function.");const pe=de.src_lang,xe=de.tgt_lang;if(!ye.language_codes.includes(xe))throw new Error(`Target language code "${xe}" is not valid. Must be one of: {${ye.language_codes.join(", ")}}`);if(pe!==void 0){if(!ye.language_codes.includes(pe))throw new Error(`Source language code "${pe}" is not valid. Must be one of: {${ye.language_codes.join(", ")}}`);for(const Fe of ye.post_processor.config.single)if("SpecialToken"in Fe&&ye.languageRegex.test(Fe.SpecialToken.id)){Fe.SpecialToken.id=ye.lang_to_token(pe);break}}return de.forced_bos_token_id=ye.model.convert_tokens_to_ids([ye.lang_to_token(xe)])[0],ye._call(O,te)}class jn extends kt{constructor(O,te){super(O,te),this.languageRegex=/^[a-z]{3}_[A-Z][a-z]{3}$/,this.language_codes=this.special_tokens.filter(de=>this.languageRegex.test(de)),this.lang_to_token=de=>de}_build_translation_inputs(O,te,de){return Rr(this,O,te,de)}}class Zn extends kt{constructor(O,te){super(O,te),this.languageRegex=/^__[a-z]{2,3}__$/,this.language_codes=this.special_tokens.filter(de=>this.languageRegex.test(de)).map(de=>de.slice(2,-2)),this.lang_to_token=de=>`__${de}__`}_build_translation_inputs(O,te,de){return Rr(this,O,te,de)}}class ea extends kt{get timestamp_begin(){return this.model.convert_tokens_to_ids(["<|notimestamps|>"])[0]+1}_decode_asr(O,{return_timestamps:te=!1,return_language:de=!1,time_precision:pe=null,force_full_sequences:xe=!0}={}){if(pe===null)throw Error("Must specify time_precision");let Fe=null;const ct=te==="word";function ut(){return{language:Fe,timestamp:[null,null],text:""}}const pt=[];let st=ut(),Xt=0;const jt=this.timestamp_begin,un=jt+1500;let gr=[],Ar=[],Br=!1,Dn=null;const Un=new Set(this.all_special_ids);for(const Yr of O){const Wr=Yr.tokens,yn=ct?Yr.token_timestamps:null;let Wn=null,gs=jt;if("stride"in Yr){const[dn,Nr,rn]=Yr.stride;if(Xt-=Nr,Dn=dn-rn,Nr&&(gs=Nr/pe+jt),rn)for(let zr=Wr.length-1;zr>=0;--zr){const zn=Number(Wr[zr]);if(zn>=jt){if(Wn!==null&&(zn-jt)*pe<Dn)break;Wn=zn}}}let Xr=[],es=[];for(let dn=0;dn<Wr.length;++dn){const Nr=Number(Wr[dn]);if(Un.has(Nr)){const rn=this.decode([Nr]),zr=p.WHISPER_LANGUAGE_MAPPING.get(rn.slice(2,-2));if(zr!==void 0){if(Fe!==null&&zr!==Fe&&!te){gr.push(Xr);const zn=this.findLongestCommonSequence(gr)[0],wa=this.decode(zn);st.text=wa,pt.push(st),gr=[],Xr=[],st=ut()}Fe=st.language=zr}}else if(Nr>
2845=jt&&Nr<=un){const rn=(Nr-jt)*pe+Xt,zr=(0,i.round)(rn,2);if(Wn!==null&&Nr>=Wn)Br=!0;else if(Br||gr.length>0&&Nr<gs)Br=!1;else if(st.timestamp[0]===null)st.timestamp[0]=zr;else if(zr!==st.timestamp[0]){st.timestamp[1]=zr,gr.push(Xr),ct&&Ar.push(es);const[zn,wa]=this.findLongestCommonSequence(gr,Ar),Is=this.decode(zn);st.text=Is,ct&&(st.words=this.collateWordTimestamps(zn,wa,Fe)),pt.push(st),gr=[],Xr=[],Ar=[],es=[],st=ut()}}else if(Xr.push(Nr),ct){let rn=(0,i.round)(yn[dn]+Xt,2),zr;if(dn+1<yn.length){zr=(0,i.round)(yn[dn+1]+Xt,2);const zn=this.decode([Nr]);v.test(zn)&&(zr=(0,i.round)(Math.min(rn+pe,zr),2))}else zr=null;es.push([rn,zr])}}if("stride"in Yr){const[dn,Nr,rn]=Yr.stride;Xt+=dn-rn}Xr.length>0?(gr.push(Xr),ct&&Ar.push(es)):gr.every(dn=>dn.length===0)&&(st=ut(),gr=[],Xr=[],Ar=[],es=[])}if(gr.length>0){if(xe&&te)throw new Error("Whisper did not predict an ending timestamp, which can happen if audio is cut off in the middle of a word. Also make sure WhisperTimeStampLogitsProcessor was used during generation.");const[Yr,Wr]=this.findLongestCommonSequence(gr,Ar),yn=this.decode(Yr);st.text=yn,ct&&(st.words=this.collateWordTimestamps(Yr,Wr,Fe)),pt.push(st)}let cn=Object.create(null);const Jn=pt.map(Yr=>Yr.text).join("");if(te||de){for(let Yr=0;Yr<pt.length;++Yr){const Wr=pt[Yr];te||delete Wr.timestamp,de||delete Wr.language}if(ct){const Yr=[];for(const Wr of pt)for(const yn of Wr.words)Yr.push(yn);cn={chunks:Yr}}else cn={chunks:pt}}return[Jn,cn]}findLongestCommonSequence(O,te=null){let de=O[0],pe=de.length,xe=[];const Fe=Array.isArray(te)&&te.length>0;let ct=Fe?[]:null,ut=Fe?te[0]:null;for(let pt=1;pt<O.length;++pt){const st=O[pt];let Xt=0,jt=[pe,pe,0,0];const Or=st.length;for(let cn=1;cn<pe+Or;++cn){const Jn=Math.max(0,pe-cn),Yr=Math.min(pe,pe+Or-cn),Wr=de.slice(Jn,Yr),yn=Math.max(0,cn-pe),Wn=Math.min(Or,cn),gs=st.slice(yn,Wn);if(Wr.length!==gs.length)throw new Error("There is a bug within whisper `decode_asr` function, please report it. Dropping to prevent bad inference.");let Xr;Fe?Xr=Wr.filter((Nr,rn)=>Nr===gs[rn]&&ut[Jn+rn]<=te[pt][yn+rn]).length:Xr=Wr.filter((Nr,rn)=>Nr===gs[rn]).length;const es=cn/1e4,dn=Xr/cn+es;Xr>1&&dn>Xt&&(Xt=dn,jt=[Jn,Yr,yn,Wn])}const[un,gr,Ar,Br]=jt,Dn=Math.floor((gr+un)/2),Un=Math.floor((Br+Ar)/2);xe.push(...de.slice(0,Dn)),de=st.slice(Un),pe=de.length,Fe&&(ct.push(...ut.slice(0,Dn)),ut=te[pt].slice(Un))}return xe.push(...de),Fe?(ct.push(...ut),[xe,ct]):[xe,[]]}collateWordTimestamps(O,te,de){const[pe,xe,Fe]=this.combineTokensIntoWords(O,de),ct=[];for(let ut=0;ut<pe.length;++ut){const pt=Fe[ut];ct.push({text:pe[ut],timestamp:[te[pt.at(0)][0],te[pt.at(-1)][1]]})}return ct}combineTokensIntoWords(O,te,de=`"'“¡¿([{-`,pe=`"'.。,,!!??::”)]}、`){te=te??"english";let xe,Fe,ct;return["chinese","japanese","thai","lao","myanmar"].includes(te)?[xe,Fe,ct]=this.splitTokensOnUnicode(O):[xe,Fe,ct]=this.splitTokensOnSpaces(O),this.mergePunctuations(xe,Fe,ct,de,pe)}decode(O,te){let de;return te?.decode_with_timestamps?(O instanceof o.Tensor&&(O=m(O)),de=this.decodeWithTimestamps(O,te)):de=super.decode(O,te),de}decodeWithTimestamps(O,te){const de=te?.time_precision??.02,pe=Array.from(this.all_special_ids).at(-1)+1;let xe=[[]];for(let Fe of O)if(Fe=Number(Fe),Fe>=pe){const ct=((Fe-pe)*de).toFixed(2);xe.push(`<|${ct}|>`),xe.push([])}else xe[xe.length-1].push(Fe);return xe=xe.map(Fe=>typeof Fe=="string"?Fe:super.decode(Fe,te)),xe.join("")}splitTokensOnUnicode(O){const te=this.decode(O,{decode_with_timestamps:!0}),de="�",pe=[],xe=[],Fe=[];let ct=[],ut=[],pt=0;for(let st=0;st<O.length;++st){const Xt=O[st];ct.push(Xt),ut.push(st);const jt=this.decode(ct,{decode_with_timestamps:!0});(!jt.includes(de)||te[pt+jt.indexOf(de)]===de)&&(pe.push(jt),xe.push(ct),Fe.push(ut),ct=[],ut=[],pt+=jt.length)}return[pe,xe,Fe]}splitTokensOnSpaces(O){const[te,de,pe]=this.splitTokensOnUnicode(O),xe=[],Fe=[],ct=[],ut=new RegExp(`^[${b}]$`,"gu");for(let pt=0;pt<te.length;++pt){const st=te[pt],Xt=de[pt],jt=pe[pt],Or=Xt[0]>=this.model.tokens_to_ids.get("<|endoftext|>"),un=st.startsWith(" "),gr=st.trim(),Ar=ut.test(gr);if(Or||un||Ar||xe.length===0)xe.push(st),Fe.push(Xt),ct.push(jt);else{const Br=xe.length-1;xe[Br]+=st,Fe[Br].push(...Xt),ct[Br].push(...jt)}}return[xe,Fe,ct]}mergePunctuations(O,te,de,pe,xe){const Fe=structuredClone(O),ct=structuredClone(te),ut=structuredClone(de);let pt=Fe.length-2,st=Fe.length-1;for(;pt>=0;)Fe[pt].startsWith(" ")&&pe.includes(Fe[pt].trim())?(Fe[st]=Fe[pt]+
2845Fe[st],ct[st]=(0,s.mergeArrays)(ct[pt],ct[st]),ut[st]=(0,s.mergeArrays)(ut[pt],ut[st]),Fe[pt]="",ct[pt]=[],ut[pt]=[]):st=pt,--pt;for(pt=0,st=1;st<Fe.length;)!Fe[pt].endsWith(" ")&&xe.includes(Fe[st])?(Fe[pt]+=Fe[st],ct[pt]=(0,s.mergeArrays)(ct[pt],ct[st]),ut[pt]=(0,s.mergeArrays)(ut[pt],ut[st]),Fe[st]="",ct[st]=[],ut[st]=[]):pt=st,++st;return[Fe.filter(Xt=>Xt),ct.filter(Xt=>Xt.length>0),ut.filter(Xt=>Xt.length>0)]}}class Bs extends kt{}class xs extends kt{}class Es extends kt{}class _n extends kt{constructor(O,te){super(O,te),this.languageRegex=/^(>>\w+<<)\s*/g,this.supported_language_codes=this.model.vocab.filter(de=>this.languageRegex.test(de)),console.warn('WARNING: `MarianTokenizer` is not yet supported by Hugging Face\'s "fast" tokenizers library. Therefore, you may experience slightly inaccurate results.')}_encode_text(O){if(O===null)return null;const[te,...de]=O.trim().split(this.languageRegex);if(de.length===0)return super._encode_text(te);if(de.length===2){const[pe,xe]=de;return this.supported_language_codes.includes(pe)||console.warn(`Unsupported language code "${pe}" detected, which may lead to unexpected behavior. Should be one of: ${JSON.stringify(this.supported_language_codes)}`),(0,s.mergeArrays)([pe],super._encode_text(xe))}}}class wn extends kt{}class Ke extends kt{}class Ze extends kt{}class ft extends kt{}class Dr extends kt{}class ta extends kt{constructor(O,te){super(O,te),this.decoder=new Vt({})}}class Ds extends kt{}class ra extends kt{}class ii{static TOKENIZER_CLASS_MAPPING={T5Tokenizer:gt,DistilBertTokenizer:ae,CamembertTokenizer:le,DebertaTokenizer:Ft,DebertaV2Tokenizer:ds,BertTokenizer:Er,HerbertTokenizer:S,ConvBertTokenizer:ie,RoFormerTokenizer:X,XLMTokenizer:_e,ElectraTokenizer:Oe,MobileBertTokenizer:cs,SqueezeBertTokenizer:pr,AlbertTokenizer:us,GPT2Tokenizer:Et,BartTokenizer:at,MBartTokenizer:Ot,MBart50Tokenizer:lt,RobertaTokenizer:St,WhisperTokenizer:ea,CodeGenTokenizer:Bs,CLIPTokenizer:xs,SiglipTokenizer:Es,MarianTokenizer:_n,BloomTokenizer:rr,NllbTokenizer:jn,M2M100Tokenizer:Zn,LlamaTokenizer:kr,CodeLlamaTokenizer:yr,XLMRobertaTokenizer:ln,MPNetTokenizer:vs,FalconTokenizer:En,GPTNeoXTokenizer:ps,EsmTokenizer:Kr,Wav2Vec2CTCTokenizer:wn,BlenderbotTokenizer:Ke,BlenderbotSmallTokenizer:Ze,SpeechT5Tokenizer:ft,NougatTokenizer:Dr,VitsTokenizer:ta,Qwen2Tokenizer:fn,GemmaTokenizer:qr,Grok1Tokenizer:vr,CohereTokenizer:Ds,MgpstrTokenizer:ra,PreTrainedTokenizer:kt};static async from_pretrained(O,{progress_callback:te=null,config:de=null,cache_dir:pe=null,local_files_only:xe=!1,revision:Fe="main",legacy:ct=null}={}){const[ut,pt]=await d(O,{progress_callback:te,config:de,cache_dir:pe,local_files_only:xe,revision:Fe,legacy:ct}),st=pt.tokenizer_class?.replace(/Fast$/,"")??"PreTrainedTokenizer";let Xt=this.TOKENIZER_CLASS_MAPPING[st];return Xt||(console.warn(`Unknown tokenizer class "${st}", attempting to construct from base class.`),Xt=kt),new Xt(ut,pt)}}}),
2845"./src/utils/audio.js":((e,t,r)=>{r.r(t),r.d(t,{RawAudio:()=>j,hamming:()=>c,hanning:()=>d,mel_filter_bank:()=>P,read_audio:()=>u,spectrogram:()=>y,window_function:()=>$});var n=r("./src/utils/hub.js"),s=r("./src/utils/maths.js"),a=r("./src/utils/core.js"),i=r("./src/env.js"),o=r("./src/utils/tensor.js"),l=r("?7992");async function u(F,R){if(typeof AudioContext>"u")throw Error("Unable to load audio from path/URL since `AudioContext` is not available in your environment. Instead, audio data should be passed directly to the pipeline/processor. For more information and some example code, see https://huggingface.co/docs/transformers.js/guides/node-audio-processing.");const L=await(await(0,n.getFile)(F)).arrayBuffer(),Q=new AudioContext({sampleRate:R});typeof R>"u"&&console.warn(`No sampling rate provided, using default of ${Q.sampleRate}Hz.`);const ne=await Q.decodeAudioData(L);let re;if(ne.numberOfChannels===2){const ce=Math.sqrt(2),ge=ne.getChannelData(0),q=ne.getChannelData(1);re=new Float32Array(ge.length);for(let V=0;V<ne.length;++V)re[V]=ce*(ge[V]+q[V])/2}else re=ne.getChannelData(0);return re}function p(F,R){if(F<1)return new Float64Array;if(F===1)return new Float64Array([1]);const L=1-R,Q=2*Math.PI/(F-1),ne=new Float64Array(F);for(let re=0;re<F;++re)ne[re]=R-L*Math.cos(re*Q);return ne}function d(F){return p(F,.5)}function c(F){return p(F,.54)}const g={htk:F=>2595*Math.log10(1+F/700),kaldi:F=>1127*Math.log(1+F/700),slaney:(F,R=1e3,L=15,Q=27/Math.log(6.4))=>F>=R?L+Math.log(F/R)*Q:3*F/200};function A(F,R="htk"){const L=g[R];if(!L)throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".');return typeof F=="number"?L(F):F.map(Q=>L(Q))}const m={htk:F=>700*(10**(F/2595)-1),kaldi:F=>700*(Math.exp(F/1127)-1),slaney:(F,R=1e3,L=15,Q=Math.log(6.4)/27)=>F>=L?R*Math.exp(Q*(F-L)):200*F/3};function B(F,R="htk"){const L=m[R];if(!L)throw new Error('mel_scale should be one of "htk", "slaney" or "kaldi".');return typeof F=="number"?L(F):F.map(Q=>L(Q))}function f(F,R){const L=Float64Array.from({length:R.length-1},(ce,ge)=>R[ge+1]-R[ge]),Q=Array.from({length:F.length},()=>new Array(R.length));for(let ce=0;ce<F.length;++ce){const ge=Q[ce];for(let q=0;q<R.length;++q)ge[q]=R[q]-F[ce]}const ne=R.length-2,re=Array.from({length:ne},()=>new Array(F.length));for(let ce=0;ce<F.length;++ce){const ge=Q[ce];for(let q=0;q<ne;++q){const V=-ge[q]/L[q],U=ge[q+2]/L[q+1];re[q][ce]=Math.max(0,Math.min(V,U))}}return re}function h(F,R,L){const Q=(R-F)/(L-1);return Float64Array.from({length:L},(ne,re)=>F+Q*re)}function P(F,R,L,Q,ne,re=null,ce="htk",ge=!1){if(re!==null&&re!=="slaney")throw new Error('norm must be one of null or "slaney"');if(F<2)throw new Error(`Require num_frequency_bins: ${F} >= 2`);if(L>Q)throw new Error(`Require min_frequency: ${L} <= max_frequency: ${Q}`);const q=A(L,ce),V=A(Q,ce),U=h(q,V,R+2);let N=B(U,ce),oe;if(ge){const De=ne/((F-1)*2);oe=A(Float64Array.from({length:F},(Ie,je)=>je*De),ce),N=U}else oe=h(0,Math.floor(ne/2),F);const fe=f(oe,N);if(re!==null&&re==="slaney")for(let De=0;De<R;++De){const Ie=fe[De],je=2/(N[De+2]-N[De]);for(let Me=0;Me<F;++Me)Ie[Me]*=je}return fe}function _(F,R,L){const Q=new F.constructor(F.length+R+L),ne=F.length-1;for(let re=0;re<F.length;++re)Q[R+re]=F[re];for(let re=1;re<=R;++re)Q[R-re]=F[(0,a.calculateReflectOffset)(re,ne)];for(let re=1;re<=L;++re)Q[ne+R+re]=F[(0,a.calculateReflectOffset)(ne-re,ne)];return Q}function w(F,R,L,Q,ne){if(L<=0)throw new Error("reference must be greater than zero");if(Q<=0)throw new Error("min_value must be greater than zero");L=Math.max(Q,L);const re=Math.log10(L);for(let ce=0;ce<F.length;++ce)F[ce]=R*Math.log10(Math.max(Q,F[ce])-re);if(ne!==null){if(ne<=0)throw new Error("db_range must be greater than zero");const ce=(0,s.max)(F)[0]-ne;for(let ge=0;ge<F.length;++ge)F[ge]=Math.max(F[ge],ce)}return F}function b(F,R=1,L=1e-5,Q=null){return w(F,20,R,L,Q)}function v(F,R=1,L=1e-10,Q=null){return w(F,10,R,L,Q)}async function y(F,R,L,Q,{fft_length:ne=null,power:re=1,center:ce=!0,pad_mode:ge="reflect",onesided:q=!0,preemphasis:V=null,preemphasis_htk_flavor:U=!0,mel_filters:N=null,mel_floor:oe=1e-10,log_mel:fe=null,reference:De=1,min_value:Ie=1e-10,db_range:je=null,remove_dc_offset:Me=null,min_num_frames:se=null,max_num_frames:H=null,do_pad:we=!0,transpose:be=!1,mel_offset:Ce=0}={}){const Se=R.length;if(ne===null&&(ne=L),L>ne)throw Error(`frame_length (${L}) may not be larger than fft_length (${ne})`);if(Se!==L)throw new Error(`Length of the window (${Se}) must equal frame_length (${L})`);
2845if(Q<=0)throw new Error("hop_length must be greater than zero");if(re===null&&N!==null)throw new Error("You have provided `mel_filters` but `power` is `None`. Mel spectrogram computation is not yet supported for complex-valued spectrogram. Specify `power` to fix this issue.");if(!U)throw new Error("`preemphasis_htk_flavor=false` is not currently supported.");if(ce)switch(ge){case"reflect":{const Xe=Math.floor((ne-1)/2)+1;F=_(F,Xe,Xe);break}case"constant":{const Xe=Math.floor(ne/2),We=new F.constructor(F.length+2*Xe);We.set(F,Xe),F=We;break}default:throw new Error(`pad_mode="${ge}" not implemented yet.`)}let ze=Math.floor(1+Math.floor((F.length-L)/Q));se!==null&&ze<se&&(ze=se);const ve=q?Math.floor(ne/2)+1:ne;let Ve=ze,Be=ze;H!==null&&(H>ze?we&&(Be=H):Be=Ve=H);const ke=new s.FFT(ne),rt=new Float64Array(ne),Ue=new Float64Array(ke.outputBufferSize),ht=new Float32Array(ve*Be);for(let Xe=0;Xe<Ve;++Xe){const We=Xe*Q,yt=Math.min(F.length-We,L);yt!==L&&rt.fill(0,0,L);for(let Mt=0;Mt<yt;++Mt)rt[Mt]=F[We+Mt];if(Me){let Mt=0;for(let Vt=0;Vt<yt;++Vt)Mt+=rt[Vt];const hr=Mt/yt;for(let Vt=0;Vt<yt;++Vt)rt[Vt]-=hr}if(V!==null){for(let Mt=yt-1;Mt>=1;--Mt)rt[Mt]-=V*rt[Mt-1];rt[0]*=1-V}for(let Mt=0;Mt<R.length;++Mt)rt[Mt]*=R[Mt];ke.realTransform(Ue,rt);for(let Mt=0;Mt<ve;++Mt){const hr=Mt<<1;ht[Mt*Be+Xe]=Ue[hr]**2+Ue[hr+1]**2}}if(re!==null&&re!==2){const Xe=re/2;for(let We=0;We<ht.length;++We)ht[We]**=Xe}const He=N.length;let dt=await(0,o.matmul)(new o.Tensor("float32",N.flat(),[He,ve]),new o.Tensor("float32",ht,[ve,Be]));be&&(dt=dt.transpose(1,0));const At=dt.data;for(let Xe=0;Xe<At.length;++Xe)At[Xe]=Ce+Math.max(oe,At[Xe]);if(re!==null&&fe!==null){const Xe=Math.min(At.length,Ve*He);switch(fe){case"log":for(let We=0;We<Xe;++We)At[We]=Math.log(At[We]);break;case"log10":for(let We=0;We<Xe;++We)At[We]=Math.log10(At[We]);break;case"dB":if(re===1)b(At,De,Ie,je);else if(re===2)v(At,De,Ie,je);else throw new Error(`Cannot use log_mel option '${fe}' with power ${re}`);break;default:throw new Error(`log_mel must be one of null, 'log', 'log10' or 'dB'. Got '${fe}'`)}}return dt}function $(F,R,{periodic:L=!0,frame_length:Q=null,center:ne=!0}={}){const re=L?F+1:F;let ce;switch(R){case"boxcar":ce=new Float64Array(re).fill(1);break;case"hann":case"hann_window":ce=d(re);break;case"hamming":ce=c(re);break;case"povey":ce=d(re).map(ge=>Math.pow(ge,.85));break;default:throw new Error(`Unknown window type ${R}.`)}if(L&&(ce=ce.subarray(0,F)),Q===null)return ce;if(F>Q)throw new Error(`Length of the window (${F}) may not be larger than frame_length (${Q})`);return ce}function k(F,R){let L=44;const Q=new ArrayBuffer(L+F.length*4),ne=new DataView(Q);W(ne,0,"RIFF"),ne.setUint32(4,36+F.length*4,!0),W(ne,8,"WAVE"),W(ne,12,"fmt "),ne.setUint32(16,16,!0),ne.setUint16(20,3,!0),ne.setUint16(22,1,!0),ne.setUint32(24,R,!0),ne.setUint32(28,R*4,!0),ne.setUint16(32,4,!0),ne.setUint16(34,32,!0),W(ne,36,"data"),ne.setUint32(40,F.length*4,!0);for(let re=0;re<F.length;++re,L+=4)ne.setFloat32(L,F[re],!0);return Q}function W(F,R,L){for(let Q=0;Q<L.length;++Q)F.setUint8(R+Q,L.charCodeAt(Q))}class j{constructor(R,L){this.audio=R,this.sampling_rate=L}toWav(){return k(this.audio,this.sampling_rate)}toBlob(){const R=this.toWav();return new Blob([R],{type:"audio/wav"})}async save(R){let L;if(i.apis.IS_BROWSER_ENV){if(i.apis.IS_WEBWORKER_ENV)throw new Error("Unable to save a file from a Web Worker.");L=a.saveBlob}else if(i.apis.IS_FS_AVAILABLE)L=async(Q,ne)=>{let re=await ne.arrayBuffer();l.writeFileSync(Q,Buffer.from(re))};else throw new Error("Unable to save because filesystem is disabled in this environment.");await L(R,this.toBlob())}}}),
2845"./src/utils/constants.js":((e,t,r)=>{r.r(t),r.d(t,{CHAT_TEMPLATE_NAME:()=>l,CONFIG_NAME:()=>s,FEATURE_EXTRACTOR_NAME:()=>a,GENERATION_CONFIG_NAME:()=>u,GITHUB_ISSUE_URL:()=>n,IMAGE_PROCESSOR_NAME:()=>i,PROCESSOR_NAME:()=>o});const n="https://github.com/huggingface/transformers.js/issues/new/choose",s="config.json",a="preprocessor_config.json",i=a,o="processor_config.json",l="chat_template.jinja",u="generation_config.json"}),
2845"./src/utils/core.js":((e,t,r)=>{r.r(t),r.d(t,{calculateDimensions:()=>u,calculateReflectOffset:()=>g,count:()=>f,dispatchCallback:()=>n,escapeRegExp:()=>a,isIntegralNumber:()=>o,isNullishDimension:()=>l,isTypedArray:()=>i,len:()=>B,mergeArrays:()=>d,pick:()=>m,pop:()=>p,product:()=>c,reverseDictionary:()=>s,saveBlob:()=>A});function n(h,P){h&&h(P)}function s(h){return Object.fromEntries(Object.entries(h).map(([P,_])=>[_,P]))}function a(h){return h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function i(h){return h?.prototype?.__proto__?.constructor?.name==="TypedArray"}function o(h){return Number.isInteger(h)||typeof h=="bigint"}function l(h){return h==null||h===-1}function u(h){const P=[];let _=h;for(;Array.isArray(_);)P.push(_.length),_=_[0];return P}function p(h,P,_=void 0){const w=h[P];if(w!==void 0)return delete h[P],w;if(_===void 0)throw Error(`Key ${P} does not exist in object.`);return _}function d(...h){return Array.prototype.concat.apply([],h)}function c(...h){return h.reduce((P,_)=>P.flatMap(w=>_.map(b=>[w,b])))}function g(h,P){return Math.abs((h+P)%(2*P)-P)}function A(h,P){const _=URL.createObjectURL(P),w=document.createElement("a");w.href=_,w.download=h,w.click(),w.remove(),URL.revokeObjectURL(_)}function m(h,P){return Object.assign({},...P.map(_=>{if(h[_]!==void 0)return{[_]:h[_]}}))}function B(h){let P=0;for(const _ of h)++P;return P}function f(h,P){let _=0;for(const w of h)w===P&&++_;return _}}),
2845"./src/utils/data-structures.js":((e,t,r)=>{r.r(t),r.d(t,{CharTrie:()=>s,DictionarySplitter:()=>l,LRUCache:()=>u,PriorityQueue:()=>n,TokenLattice:()=>i});class n{constructor(d=(g,A)=>g>A,c=1/0){this._heap=[],this._comparator=d,this._maxSize=c}get size(){return this._heap.length}isEmpty(){return this.size===0}peek(){return this._heap[0]}push(...d){return this.extend(d)}extend(d){for(const c of d)if(this.size<this._maxSize)this._heap.push(c),this._siftUp();else{const g=this._smallest();this._comparator(c,this._heap[g])&&(this._heap[g]=c,this._siftUpFrom(g))}return this.size}pop(){const d=this.peek(),c=this.size-1;return c>0&&this._swap(0,c),this._heap.pop(),this._siftDown(),d}replace(d){const c=this.peek();return this._heap[0]=d,this._siftDown(),c}_parent(d){return(d+1>>>1)-1}_left(d){return(d<<1)+1}_right(d){return d+1<<1}_greater(d,c){return this._comparator(this._heap[d],this._heap[c])}_swap(d,c){const g=this._heap[d];this._heap[d]=this._heap[c],this._heap[c]=g}_siftUp(){this._siftUpFrom(this.size-1)}_siftUpFrom(d){for(;d>0&&this._greater(d,this._parent(d));)this._swap(d,this._parent(d)),d=this._parent(d)}_siftDown(){let d=0;for(;this._left(d)<this.size&&this._greater(this._left(d),d)||this._right(d)<this.size&&this._greater(this._right(d),d);){const c=this._right(d)<this.size&&this._greater(this._right(d),this._left(d))?this._right(d):this._left(d);this._swap(d,c),d=c}}_smallest(){return 2**Math.floor(Math.log2(this.size))-1}}class s{constructor(){this.root=a.default()}extend(d){for(const c of d)this.push(c)}push(d){let c=this.root;for(const g of d){let A=c.children.get(g);A===void 0&&(A=a.default(),c.children.set(g,A)),c=A}c.isLeaf=!0}*commonPrefixSearch(d){let c=this.root;if(c===void 0)return;let g="";for(const A of d){if(g+=A,c=c.children.get(A),c===void 0)return;c.isLeaf&&(yield g)}}}class a{constructor(d,c){this.isLeaf=d,this.children=c}static default(){return new a(!1,new Map)}}class i{constructor(d,c,g){this.chars=Array.from(d),this.len=this.chars.length,this.bosTokenId=c,this.eosTokenId=g,this.nodes=[],this.beginNodes=Array.from({length:this.len+1},()=>[]),this.endNodes=Array.from({length:this.len+1},()=>[]);const A=new o(this.bosTokenId,0,0,0,0),m=new o(this.eosTokenId,1,this.len,0,0);this.nodes.push(A.clone()),this.nodes.push(m.clone()),this.beginNodes[this.len].push(m),this.endNodes[0].push(A)}insert(d,c,g,A){const m=this.nodes.length,B=new o(A,m,d,c,g);this.beginNodes[d].push(B),this.endNodes[d+c].push(B),this.nodes.push(B)}viterbi(){const d=this.len;let c=0;for(;c<=d;){if(this.beginNodes[c].length==0)return[];for(let f of this.beginNodes[c]){f.prev=null;let h=0,P=null;for(let _ of this.endNodes[c]){const w=_.backtraceScore+f.score;(P===null||w>h)&&(P=_.clone(),h=w)}if(P!==null)f.prev=P,f.backtraceScore=h;else return[]}++c}const g=[],m=this.beginNodes[d][0].prev;if(m===null)return[];let B=m.clone();for(;B.prev!==null;)g.push(B.clone()),B=B.clone().prev.clone();return g.reverse(),g}piece(d){return this.chars.slice(d.pos,d.pos+d.length).join("")}tokens(){return this.viterbi().map(c=>this.piece(c))}tokenIds(){return this.viterbi().map(c=>c.tokenId)}}class o{constructor(d,c,g,A,m){this.tokenId=d,this.nodeId=c,this.pos=g,this.length=A,this.score=m,this.prev=null,this.backtraceScore=0}clone(){const d=new o(this.tokenId,this.nodeId,this.pos,this.length,this.score);return d.prev=this.prev,d.backtraceScore=this.backtraceScore,d}}class l{constructor(d){this.trie=this._buildTrie(d)}_buildTrie(d){const c=Object.create(null);for(const g of d){let A=c;for(let m=0;m<g.length;++m)A=A[g[m]]??=Object.create(null);A.end=g}return c}split(d){const c=[],g=d.length;let A=0,m=0;for(;m<g;){let B=this.trie,f=null,h=m;for(;h<g&&(B=B[d[h]]);)B.end&&(f=B.end),++h;f?(m>A&&c.push(d.slice(A,m)),c.push(f),m+=f.length,A=m):++m}return A<g&&c.push(d.slice(A)),c}}class u{constructor(d){this.capacity=d,this.cache=new Map}get(d){if(!this.cache.has(d))return;const c=this.cache.get(d);return this.cache.delete(d),this.cache.set(d,c),c}put(d,c){this.cache.has(d)&&this.cache.delete(d),this.cache.set(d,c),this.cache.size>this.capacity&&this.cache.delete(this.cache.keys().next().value)}clear(){this.cache.clear()}}}),
2845"./src/utils/devices.js":((e,t,r)=>{r.r(t),r.d(t,{DEVICE_TYPES:()=>n});const n=Object.freeze({auto:"auto",gpu:"gpu",cpu:"cpu",wasm:"wasm",webgpu:"webgpu",cuda:"cuda",dml:"dml",webnn:"webnn","webnn-npu":"webnn-npu","webnn-gpu":"webnn-gpu","webnn-cpu":"webnn-cpu"})}),
2845"./src/utils/dtypes.js":((e,t,r)=>{r.r(t),r.d(t,{DATA_TYPES:()=>i,DEFAULT_DEVICE_DTYPE_MAPPING:()=>o,DEFAULT_DTYPE_SUFFIX_MAPPING:()=>l,isWebGpuFp16Supported:()=>a});var n=r("./src/env.js"),s=r("./src/utils/devices.js");const a=(function(){let u;return async function(){if(u===void 0)if(!n.apis.IS_WEBGPU_AVAILABLE)u=!1;else try{u=(await navigator.gpu.requestAdapter()).features.has("shader-f16")}catch{u=!1}return u}})(),i=Object.freeze({auto:"auto",fp32:"fp32",fp16:"fp16",q8:"q8",int8:"int8",uint8:"uint8",q4:"q4",bnb4:"bnb4",q4f16:"q4f16"}),o=Object.freeze({[s.DEVICE_TYPES.wasm]:i.q8}),l=Object.freeze({[i.fp32]:"",[i.fp16]:"_fp16",[i.int8]:"_int8",[i.uint8]:"_uint8",[i.q8]:"_quantized",[i.q4]:"_q4",[i.q4f16]:"_q4f16",[i.bnb4]:"_bnb4"})}),
2845"./src/utils/generic.js":((e,t,r)=>{r.r(t),r.d(t,{Callable:()=>n});const n=class{constructor(){let s=function(...a){return s._call(...a)};return Object.setPrototypeOf(s,new.target.prototype)}_call(...s){throw Error("Must implement _call method in subclass")}}}),
2845"./src/utils/hub.js":((e,t,r)=>{r.r(t),r.d(t,{MAX_EXTERNAL_DATA_CHUNKS:()=>o,getFile:()=>g,getModelFile:()=>h,getModelJSON:()=>_,getModelText:()=>P});var n=r("?7992"),s=r("?5af5"),a=r("./src/env.js"),i=r("./src/utils/core.js");const o=100,l={txt:"text/plain",html:"text/html",css:"text/css",js:"text/javascript",json:"application/json",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif"};class u{constructor(y){if(this.filePath=y,this.headers=new Headers,this.exists=n.existsSync(y),this.exists){this.status=200,this.statusText="OK";let $=n.statSync(y);this.headers.set("content-length",$.size.toString()),this.updateContentType();const k=n.createReadStream(y);this.body=new ReadableStream({start(W){k.on("data",j=>W.enqueue(j)),k.on("end",()=>W.close()),k.on("error",j=>W.error(j))},cancel(){k.destroy()}})}else this.status=404,this.statusText="Not Found",this.body=null}updateContentType(){const y=this.filePath.toString().split(".").pop().toLowerCase();this.headers.set("content-type",l[y]??"application/octet-stream")}clone(){let y=new u(this.filePath);return y.exists=this.exists,y.status=this.status,y.statusText=this.statusText,y.headers=new Headers(this.headers),y}async arrayBuffer(){return(await n.promises.readFile(this.filePath)).buffer}async blob(){const y=await n.promises.readFile(this.filePath);return new Blob([y],{type:this.headers.get("content-type")})}async text(){return await n.promises.readFile(this.filePath,"utf8")}async json(){return JSON.parse(await this.text())}}function p(v,y=null,$=null){let k;try{k=new URL(v)}catch{return!1}return!(y&&!y.includes(k.protocol)||$&&!$.includes(k.hostname))}const d=/^(\b[\w\-.]+\b\/)?\b[\w\-.]{1,96}\b$/;function c(v){return!(!d.test(v)||v.includes("..")||v.includes("--")||v.endsWith(".git")||v.endsWith(".ipynb"))}async function g(v){if(a.env.useFS&&!p(v,["http:","https:","blob:"]))return new u(v instanceof URL?v.protocol==="file:"?v.pathname:v.toString():v);if(typeof process<"u"&&process?.release?.name==="node"){const y=!!Kg?.TESTING_REMOTELY,$=a.env.version,k=new Headers;if(k.set("User-Agent",`transformers.js/${$}; is_ci/${y};`),p(v,["http:","https:"],["huggingface.co","hf.co"])){const j=Kg?.HF_TOKEN??Kg?.HF_ACCESS_TOKEN;j&&k.set("Authorization",`Bearer ${j}`)}return fetch(v,{headers:k})}else return fetch(v)}const A={400:"Bad request error occurred while trying to load file",401:"Unauthorized access to file",403:"Forbidden access to file",404:"Could not locate file",408:"Request timeout error occurred while trying to load file",500:"Internal server error error occurred while trying to load file",502:"Bad gateway error occurred while trying to load file",503:"Service unavailable error occurred while trying to load file",504:"Gateway timeout error occurred while trying to load file"};function m(v,y,$){if(!$)return null;const k=A[v]??`Error (${v}) occurred while trying to load file`;throw Error(`${k}: "${y}".`)}class B{constructor(y){this.path=y}async match(y){let $=s.join(this.path,y),k=new u($);if(k.exists)return k}async put(y,$,k=void 0){let W=s.join(this.path,y);try{const j=$.headers.get("Content-Length"),F=parseInt(j??"0");let R=0;await n.promises.mkdir(s.dirname(W),{recursive:!0});const L=n.createWriteStream(W),Q=$.body.getReader();for(;;){const{done:ne,value:re}=await Q.read();if(ne)break;await new Promise((ge,q)=>{L.write(re,V=>{if(V){q(V);return}ge()})}),R+=re.length;const ce=F?R/F*100:0;k?.({progress:ce,loaded:R,total:F})}L.close()}catch(j){try{await n.promises.unlink(W)}catch{}throw j}}}async function f(v,...y){for(let $ of y)try{let k=await v.match($);if(k)return k}catch{continue}}async function h(v,y,$=!0,k={},W=!1){if(!a.env.allowLocalModels){if(k.local_files_only)throw Error("Invalid configuration detected: local models are disabled (`env.allowLocalModels=false`) but you have requested to only use local models (`local_files_only=true`).");if(!a.env.allowRemoteModels)throw Error("Invalid configuration detected: both local and remote models are disabled. Fix by setting `env.allowLocalModels` or `env.allowRemoteModels` to `true`.")}(0,i.dispatchCallback)(k.progress_callback,{status:"initiate",name:v,file:y});let j;if(!j&&a.env.useCustomCache){if(!a.env.customCache)throw Error("`env.useCustomCache=true`, but `env.customCache` is not defined.");if(!a.env.customCache.match||!a.env.customCache.put)throw new Error("`env.customCache` must be an object which implements the `match` and `put` functions of the Web Cache API. For more information, see https://developer.mozilla.org/en-US/docs/Web/API/Cache");j=a.env.customCache}if(!j&&a.env.useBrowserCache){if(typeof caches>"u")throw Error("Browser cache is not available in this environment.");try{j=await caches.open("transformers-cache")}catch(oe){console.warn("An error occurred while opening the browser cache:",oe)}}if(!j&&a.env.useFSCache){if(!a.apis.IS_FS_AVAILABLE)throw Error("File System Cache is not available in this environment.");j=new B(k.cache_dir??a.env.cacheDir)}const F=k.revision??"main",R=b(v,y),L=c(v),Q=L?b(a.env.localModelPath,R):R,ne=b(a.env.remoteHost,a.env.remotePathTemplate.replaceAll("{model}",v).replaceAll("{revision}",encodeURIComponent(F)),y);let re;
2845const ce=j instanceof B?F==="main"?R:b(v,F,y):ne;let ge=!1,q;j&&(q=await f(j,Q,ce));const V=q!==void 0;if(q===void 0){if(a.env.allowLocalModels)if(p(R,["http:","https:"])){if(k.local_files_only)throw new Error(`\`local_files_only=true\`, but attempted to load a remote file from: ${R}.`);if(!a.env.allowRemoteModels)throw new Error(`\`env.allowRemoteModels=false\`, but attempted to load a remote file from: ${R}.`)}else try{q=await g(Q),re=Q}catch(fe){console.warn(`Unable to load from local path "${Q}": "${fe}"`)}if(q===void 0||q.status===404){if(k.local_files_only||!a.env.allowRemoteModels){if($)throw Error(`\`local_files_only=true\` or \`env.allowRemoteModels=false\` and file was not found locally at "${Q}".`);return null}if(!L)throw Error(`Local file missing at "${Q}" and download aborted due to invalid model ID "${v}".`);if(q=await g(ne),q.status!==200)return m(q.status,ne,$);re=ce}ge=j&&typeof Response<"u"&&q instanceof Response&&q.status===200}(0,i.dispatchCallback)(k.progress_callback,{status:"download",name:v,file:y});let U;if(!(a.apis.IS_NODE_ENV&&W)){let oe;k.progress_callback?V&&typeof navigator<"u"&&/firefox/i.test(navigator.userAgent)?(oe=new Uint8Array(await q.arrayBuffer()),(0,i.dispatchCallback)(k.progress_callback,{status:"progress",name:v,file:y,progress:100,loaded:oe.length,total:oe.length})):oe=await w(q,fe=>{(0,i.dispatchCallback)(k.progress_callback,{status:"progress",name:v,file:y,...fe})}):oe=new Uint8Array(await q.arrayBuffer()),U=oe}if(ge&&re&&await j.match(re)===void 0)if(U)await j.put(re,new Response(U,{headers:q.headers})).catch(oe=>{console.warn(`Unable to add response to browser cache: ${oe}.`)});else{const oe=k.progress_callback?fe=>(0,i.dispatchCallback)(k.progress_callback,{status:"progress",name:v,file:y,...fe}):void 0;await j.put(re,q,oe)}if((0,i.dispatchCallback)(k.progress_callback,{status:"done",name:v,file:y}),U){if(!a.apis.IS_NODE_ENV&&W)throw new Error("Cannot return path in a browser environment.");return U}if(q instanceof u)return q.filePath;const N=await j?.match(re);if(N instanceof u)return N.filePath;if(N instanceof Response)return new Uint8Array(await N.arrayBuffer());if(typeof N=="string")return N;throw new Error("Unable to get model file path or buffer.")}async function P(v,y,$=!0,k={}){const W=await h(v,y,$,k,!1);return W===null?null:new TextDecoder("utf-8").decode(W)}async function _(v,y,$=!0,k={}){const W=await P(v,y,$,k);return W===null?{}:JSON.parse(W)}async function w(v,y){const $=v.headers.get("Content-Length");$===null&&console.warn("Unable to determine content-length from response headers. Will expand buffer when needed.");let k=parseInt($??"0"),W=new Uint8Array(k),j=0;const F=v.body.getReader();async function R(){const{done:L,value:Q}=await F.read();if(L)return;const ne=j+Q.length;if(ne>k){k=ne;const ce=new Uint8Array(k);ce.set(W),W=ce}W.set(Q,j),j=ne;const re=j/k*100;return y({progress:re,loaded:j,total:k}),R()}return await R(),W}function b(...v){return v=v.map((y,$)=>($&&(y=y.replace(new RegExp("^/"),"")),$!==v.length-1&&(y=y.replace(new RegExp("/$"),"")),y)),v.join("/")}}),
2845"./src/utils/image.js":((e,t,r)=>{r.r(t),r.d(t,{RawImage:()=>A,load_image:()=>m});var n=r("./src/utils/core.js"),s=r("./src/utils/hub.js"),a=r("./src/env.js"),i=r("./src/utils/tensor.js"),o=r("?2b25");let l,u,p;const d=a.apis.IS_BROWSER_ENV||a.apis.IS_WEBWORKER_ENV;if(d)l=(B,f)=>{if(!self.OffscreenCanvas)throw new Error("OffscreenCanvas not supported by this browser.");return new self.OffscreenCanvas(B,f)},p=self.createImageBitmap,u=self.ImageData;else if(o)p=async B=>{const h=(await B.metadata()).channels,{data:P,info:_}=await B.rotate().raw().toBuffer({resolveWithObject:!0}),w=new A(new Uint8ClampedArray(P),_.width,_.height,_.channels);return h!==void 0&&h!==_.channels&&w.convert(h),w};else throw new Error("Unable to load image processing library.");const c={0:"nearest",1:"lanczos",2:"bilinear",3:"bicubic",4:"box",5:"hamming"},g=new Map([["png","image/png"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["gif","image/gif"]]);class A{constructor(f,h,P,_){this.data=f,this.width=h,this.height=P,this.channels=_}get size(){return[this.width,this.height]}static async read(f){if(f instanceof A)return f;if(typeof f=="string"||f instanceof URL)return await this.fromURL(f);if(f instanceof Blob)return await this.fromBlob(f);if(typeof HTMLCanvasElement<"u"&&f instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&f instanceof OffscreenCanvas)return this.fromCanvas(f);throw new Error(`Unsupported input type: ${typeof f}`)}static fromCanvas(f){if(!d)throw new Error("fromCanvas() is only supported in browser environments.");const P=f.getContext("2d").getImageData(0,0,f.width,f.height).data;return new A(P,f.width,f.height,4)}static async fromURL(f){const h=await(0,s.getFile)(f);if(h.status!==200)throw new Error(`Unable to read image from "${f}" (${h.status} ${h.statusText})`);const P=await h.blob();return this.fromBlob(P)}static async fromBlob(f){if(d){const h=await p(f),P=l(h.width,h.height).getContext("2d");return P.drawImage(h,0,0),new this(P.getImageData(0,0,h.width,h.height).data,h.width,h.height,4)}else{const h=o(await f.arrayBuffer());return await p(h)}}static fromTensor(f,h="CHW"){if(f.dims.length!==3)throw new Error(`Tensor should have 3 dimensions, but has ${f.dims.length} dimensions.`);if(h==="CHW")f=f.transpose(1,2,0);else if(h!=="HWC")throw new Error(`Unsupported channel format: ${h}`);if(!(f.data instanceof Uint8ClampedArray||f.data instanceof Uint8Array))throw new Error(`Unsupported tensor type: ${f.type}`);switch(f.dims[2]){case 1:case 2:case 3:case 4:return new A(f.data,f.dims[1],f.dims[0],f.dims[2]);default:throw new Error(`Unsupported number of channels: ${f.dims[2]}`)}}grayscale(){if(this.channels===1)return this;const f=new Uint8ClampedArray(this.width*this.height*1);switch(this.channels){case 3:case 4:for(let h=0,P=0;h<this.data.length;h+=this.channels){const _=this.data[h],w=this.data[h+1],b=this.data[h+2];f[P++]=Math.round(.2989*_+.587*w+.114*b)}break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this._update(f,this.width,this.height,1)}rgb(){if(this.channels===3)return this;const f=new Uint8ClampedArray(this.width*this.height*3);switch(this.channels){case 1:for(let h=0,P=0;h<this.data.length;++h)f[P++]=this.data[h],f[P++]=this.data[h],f[P++]=this.data[h];break;case 4:for(let h=0,P=0;h<this.data.length;h+=4)f[P++]=this.data[h],f[P++]=this.data[h+1],f[P++]=this.data[h+2];break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this._update(f,this.width,this.height,3)}rgba(){if(this.channels===4)return this;const f=new Uint8ClampedArray(this.width*this.height*4);switch(this.channels){case 1:for(let h=0,P=0;h<this.data.length;++h)f[P++]=this.data[h],f[P++]=this.data[h],f[P++]=this.data[h],f[P++]=255;break;case 3:for(let h=0,P=0;h<this.data.length;h+=3)f[P++]=this.data[h],f[P++]=this.data[h+1],f[P++]=this.data[h+2],f[P++]=255;break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this._update(f,this.width,this.height,4)}putAlpha(f){if(f.width!==this.width||f.height!==this.height)throw new Error(`Expected mask size to be ${this.width}x${this.height}, but got ${f.width}x${f.height}`);if(f.channels!==1)throw new Error(`Expected mask to have 1 channel, but got ${f.channels}`);const h=this.data,P=f.data,_=this.width*this.height;if(this.channels===3){const w=new Uint8ClampedArray(_*4);for(let b=0,v=0,y=0;b<_;++b)w[y++]=h[v++],w[y++]=h[v++],w[y++]=h[v++],w[y++]=P[b];return this._update(w,this.width,this.height,4)}else if(this.channels===4){for(let w=0;w<_;++w)h[4*w+3]=P[w];return this}throw new Error(`Expected image to have 3 or 4 channels, but got ${this.channels}`)}async resize(f,h,{resample:P=2}={}){if(this.width===f&&this.height===h)return this;let _=c[P]??P;const w=(0,n.isNullishDimension)(f),b=(0,n.isNullishDimension)(h);if(w&&b)return this;if(w?f=h/this.height*this.width:b&&(h=f/this.width*this.height),d){const v=this.channels,y=this.toCanvas(),$=l(f,h).getContext("2d");return $.drawImage(y,0,0,f,h),new A($.getImageData(0,0,f,h).data,f,h,4).convert(v)}else{let v=this.toSharp();switch(_){case"box":case"hamming":(_==="box"||_==="hamming")&&(console.warn(`Resampling method ${_} is not yet supported. Using bilinear instead.`),_="bilinear");case"nearest":case"bilinear":case"bicubic":v=v.affine([f/this.width,0,0,h/this.height],{interpolator:_});break;case"lanczos":v=v.resize({width:f,height:h,fit:"fill",kernel:"lanczos3"});break;default:throw new Error(`Resampling method ${_} is not supported.`)}return await p(v)}}async pad([f,h,P,_]){if(f=Math.max(f,0),h=Math.max(h,0),P=Math.max(P,0),_=Math.max(_,0),f===0&&h===0&&P===0&&_===0)return this;if(d){const w=this.channels,b=this.toCanvas(),v=this.width+f+h,y=this.height+P+_,$=l(v,y).getContext("2d");return $.drawImage(b,0,0,this.width,this.height,f,P,this.width,this.height),new A($.getImageData(0,0,v,y).data,v,y,4).convert(w)}else{const w=this.toSharp().extend({left:f,right:h,top:P,bottom:_});return await p(w)}}async crop([f,h,P,_]){if(f=Math.max(f,0),h=Math.max(h,0),P=Math.min(P,this.width-1),_=Math.min(_,this.height-1),f===0&&h===0&&P===this.width-1&&_===this.height-1)return this;const w=P-f+1,b=_-h+1;if(d){const v=this.channels,y=this.toCanvas(),$=l(w,b).getContext("2d");return $.drawImage(y,f,h,w,b,0,0,w,b),new A($.getImageData(0,0,w,b).data,w,b,4).convert(v)}else{const v=this.toSharp().extract({left:f,top:h,width:w,height:b});return await p(v)}}async center_crop(f,h){if(this.width===f&&this.height===h)return this;const P=(this.width-f)/2,_=(this.height-h)/2;if(d){const w=this.channels,b=this.toCanvas(),v=l(f,h).getContext("2d");let y=0,$=0,k=0,W=0;return P>=0?y=P:k=-P,_>=0?$=_:W=-_,v.drawImage(b,y,$,f,h,k,W,f,h),new A(v.getImageData(0,0,f,h).data,f,h,4).convert(w)}else{let w=this.toSharp();if(P>=0&&_>=0)w=w.extract({left:Math.floor(P),top:Math.floor(_),width:f,height:h});else if(P<=0&&_<=0){const b=Math.floor(-_),v=Math.floor(-P);w=w.extend({top:b,left:v,right:f-this.width-v,bottom:h-this.height-b})}else{let b=[0,0],v=0;_<0?(b[0]=Math.floor(-_),b[1]=h-this.height-b[0]):v=Math.floor(_);let y=[0,0],$=0;P<0?(y[0]=Math.floor(-P),y[1]=f-this.width-y[0]):$=Math.floor(P),w=w.extend({top:b[0],bottom:b[1],left:y[0],right:y[1]}).extract({left:$,top:v,width:f,height:h})}return await p(w)}}async toBlob(f="image/png",h=1){if(!d)throw new Error("toBlob() is only supported in browser environments.");return await this.toCanvas().convertToBlob({type:f,quality:h})}toTensor(f="CHW"){let h=new i.Tensor("uint8",new Uint8Array(this.data),[this.height,this.width,this.channels]);if(f!=="HWC")if(f==="CHW")h=h.permute(2,0,1);else throw new Error(`Unsupported channel format: ${f}`);return h}toCanvas(){if(!d)throw new Error("toCanvas() is only supported in browser environments.");const f=this.clone().rgba(),h=l(f.width,f.height),P=new u(f.data,f.width,f.height);
2845return h.getContext("2d").putImageData(P,0,0),h}split(){const{data:f,width:h,height:P,channels:_}=this,w=f.constructor,b=f.length/_,v=Array.from({length:_},()=>new w(b));for(let y=0;y<b;++y){const $=_*y;for(let k=0;k<_;++k)v[k][y]=f[$+k]}return v.map(y=>new A(y,h,P,1))}_update(f,h,P,_=null){return this.data=f,this.width=h,this.height=P,_!==null&&(this.channels=_),this}clone(){return new A(this.data.slice(),this.width,this.height,this.channels)}convert(f){if(this.channels===f)return this;switch(f){case 1:this.grayscale();break;case 3:this.rgb();break;case 4:this.rgba();break;default:throw new Error(`Conversion failed due to unsupported number of channels: ${this.channels}`)}return this}async save(f){if(d){if(a.apis.IS_WEBWORKER_ENV)throw new Error("Unable to save an image from a Web Worker.");const h=f.split(".").pop().toLowerCase(),P=g.get(h)??"image/png",_=await this.toBlob(P);(0,n.saveBlob)(f,_)}else{if(a.apis.IS_FS_AVAILABLE)return await this.toSharp().toFile(f);throw new Error("Unable to save the image because filesystem is disabled in this environment.")}}toSharp(){if(d)throw new Error("toSharp() is only supported in server-side environments.");return o(this.data,{raw:{width:this.width,height:this.height,channels:this.channels}})}}const m=A.read.bind(A)}),
2845"./src/utils/maths.js":((e,t,r)=>{r.r(t),r.d(t,{FFT:()=>m,bankers_round:()=>h,cos_sim:()=>l,dot:()=>o,dynamic_time_warping:()=>P,interpolate_data:()=>n,log_softmax:()=>i,magnitude:()=>u,max:()=>d,medianFilter:()=>B,min:()=>p,permute_data:()=>s,round:()=>f,softmax:()=>a});function n(_,[w,b,v],[y,$],k="bilinear",W=!1){const j=$/v,F=y/b,R=new _.constructor(y*$*w),L=b*v,Q=y*$;for(let ne=0;ne<y;++ne)for(let re=0;re<$;++re){const ce=ne*$+re,ge=(re+.5)/j-.5,q=(ne+.5)/F-.5;let V=Math.floor(ge),U=Math.floor(q);const N=Math.min(V+1,v-1),oe=Math.min(U+1,b-1);V=Math.max(V,0),U=Math.max(U,0);const fe=ge-V,De=q-U,Ie=(1-fe)*(1-De),je=fe*(1-De),Me=(1-fe)*De,se=fe*De,H=U*v,we=oe*v,be=H+V,Ce=H+N,Se=we+V,ze=we+N;for(let ve=0;ve<w;++ve){const Ve=ve*L;R[ve*Q+ce]=Ie*_[Ve+be]+je*_[Ve+Ce]+Me*_[Ve+Se]+se*_[Ve+ze]}}return R}function s(_,w,b){const v=new Array(b.length),y=new Array(b.length);for(let W=b.length-1,j=1;W>=0;--W)y[W]=j,v[W]=w[b[W]],j*=v[W];const $=b.map((W,j)=>y[b.indexOf(j)]),k=new _.constructor(_.length);for(let W=0;W<_.length;++W){let j=0;for(let F=w.length-1,R=W;F>=0;--F)j+=R%w[F]*$[F],R=Math.floor(R/w[F]);k[j]=_[W]}return[k,v]}function a(_){const w=d(_)[0],b=_.map($=>Math.exp($-w)),v=b.reduce(($,k)=>$+k,0);return b.map($=>$/v)}function i(_){const w=d(_)[0];let b=0;for(let $=0;$<_.length;++$)b+=Math.exp(_[$]-w);const v=Math.log(b);return _.map($=>$-w-v)}function o(_,w){let b=0;for(let v=0;v<_.length;++v)b+=_[v]*w[v];return b}function l(_,w){const b=o(_,w),v=u(_),y=u(w);return b/(v*y)}function u(_){return Math.sqrt(_.reduce((w,b)=>w+b*b,0))}function p(_){if(_.length===0)throw Error("Array must not be empty");let w=_[0],b=0;for(let v=1;v<_.length;++v)_[v]<w&&(w=_[v],b=v);return[w,b]}function d(_){if(_.length===0)throw Error("Array must not be empty");let w=_[0],b=0;for(let v=1;v<_.length;++v)_[v]>w&&(w=_[v],b=v);return[w,b]}function c(_){return _>0&&(_&_-1)===0}class g{constructor(w){if(this.size=w|0,this.size<=1||!c(this.size))throw new Error("FFT size must be a power of two larger than 1");this._csize=w<<1,this.table=new Float64Array(this.size*2);for(let v=0;v<this.table.length;v+=2){const y=Math.PI*v/this.size;this.table[v]=Math.cos(y),this.table[v+1]=-Math.sin(y)}let b=0;for(let v=1;this.size>v;v<<=1)++b;this._width=b%2===0?b-1:b,this._bitrev=new Int32Array(1<<this._width);for(let v=0;v<this._bitrev.length;++v){this._bitrev[v]=0;for(let y=0;y<this._width;y+=2){const $=this._width-y-2;this._bitrev[v]|=(v>>>y&3)<<$}}}createComplexArray(){return new Float64Array(this._csize)}fromComplexArray(w,b){const v=b||new Array(w.length>>>1);for(let y=0;y<w.length;y+=2)v[y>>>1]=w[y];return v}toComplexArray(w,b){const v=b||this.createComplexArray();for(let y=0;y<v.length;y+=2)v[y]=w[y>>>1],v[y+1]=0;return v}transform(w,b){if(w===b)throw new Error("Input and output buffers must be different");this._transform4(w,b,1)}realTransform(w,b){if(w===b)throw new Error("Input and output buffers must be different");this._realTransform4(w,b,1)}inverseTransform(w,b){if(w===b)throw new Error("Input and output buffers must be different");this._transform4(w,b,-1);for(let v=0;v<w.length;++v)w[v]/=this.size}_transform4(w,b,v){const y=this._csize;let k=1<<this._width,W=y/k<<1,j,F;const R=this._bitrev;if(W===4)for(j=0,F=0;j<y;j+=W,++F){const Q=R[F];this._singleTransform2(b,w,j,Q,k)}else for(j=0,F=0;j<y;j+=W,++F){const Q=R[F];this._singleTransform4(b,w,j,Q,k,v)}const L=this.table;for(k>>=2;k>=2;k>>=2){W=y/k<<1;const Q=W>>>2;for(j=0;j<y;j+=W){const ne=j+Q-1;for(let re=j,ce=0;re<ne;re+=2,ce+=k){const ge=re,q=ge+Q,V=q+Q,U=V+Q,N=w[ge],oe=w[ge+1],fe=w[q],De=w[q+1],Ie=w[V],je=w[V+1],Me=w[U],se=w[U+1],H=L[ce],we=v*L[ce+1],be=fe*H-De*we,Ce=fe*we+De*H,Se=L[2*ce],ze=v*L[2*ce+1],ve=Ie*Se-je*ze,Ve=Ie*ze+je*Se,Be=L[3*ce],ke=v*L[3*ce+1],rt=Me*Be-se*ke,Ue=Me*ke+se*Be,ht=N+ve,He=oe+Ve,dt=N-ve,At=oe-Ve,Xe=be+rt,We=Ce+Ue,yt=v*(be-rt),Mt=v*(Ce-Ue);w[ge]=ht+Xe,w[ge+1]=He+We,w[q]=dt+Mt,w[q+1]=At-yt,w[V]=ht-Xe,w[V+1]=He-We,w[U]=dt-Mt,w[U+1]=At+yt}}}}_singleTransform2(w,b,v,y,$){const k=w[y],W=w[y+1],j=w[y+$],F=w[y+$+1];b[v]=k+j,b[v+1]=W+F,b[v+2]=k-j,b[v+3]=W-F}_singleTransform4(w,b,v,y,$,k){const W=$*2,j=$*3,F=w[y],R=w[y+1],L=w[y+$],Q=w[y+$+1],ne=w[y+W],re=w[y+W+1],ce=w[y+j],ge=w[y+j+1],q=F+ne,V=R+re,U=F-ne,N=R-re,oe=L+ce,fe=Q+ge,De=k*(L-ce),Ie=k*(Q-ge);b[v]=q+oe,b[v+1]=V+fe,b[v+2]=U+Ie,b[v+3]=N-De,b[v+4]=q-oe,b[v+5]=V-fe,b[v+6]=U-Ie,b[v+7]=N+De}_realTransform4(w,b,v){const y=this._csize;let k=1<<this._width,W=y/k<<1,j,F;const R=this._bitrev;if(W===4)for(j=0,F=0;j<y;j+=W,++F){const ne=R[F];this._singleRealTransform2(b,w,j,ne>>>1,k>>>1)}else for(j=0,F=0;j<y;j+=W,++F){const ne=R[F];this._singleRealTransform4(b,w,j,ne>>>1,k>>>1,v)}const L=this.table;for(k>>=2;k>=2;k>>=2){W=y/k<<1;const ne=W>>>1,re=ne>>>1,ce=re>>>1;for(j=0;j<y;j+=W)for(let ge=0,q=0;ge<=ce;
vendor: 3,757 bytes, line 2845
2845ge+=2,q+=k){const V=j+ge,U=V+re,N=U+re,oe=N+re,fe=w[V],De=w[V+1],Ie=w[U],je=w[U+1],Me=w[N],se=w[N+1],H=w[oe],we=w[oe+1],be=fe,Ce=De,Se=L[q],ze=v*L[q+1],ve=Ie*Se-je*ze,Ve=Ie*ze+je*Se,Be=L[2*q],ke=v*L[2*q+1],rt=Me*Be-se*ke,Ue=Me*ke+se*Be,ht=L[3*q],He=v*L[3*q+1],dt=H*ht-we*He,At=H*He+we*ht,Xe=be+rt,We=Ce+Ue,yt=be-rt,Mt=Ce-Ue,hr=ve+dt,Vt=Ve+At,tn=v*(ve-dt),hn=v*(Ve-At);if(w[V]=Xe+hr,w[V+1]=We+Vt,w[U]=yt+hn,w[U+1]=Mt-tn,ge===0){w[N]=Xe-hr,w[N+1]=We-Vt;continue}if(ge===ce)continue;const ar=j+re-ge,On=j+ne-ge;w[ar]=yt-v*hn,w[ar+1]=-Mt-v*tn,w[On]=Xe-v*hr,w[On+1]=-We+v*Vt}}const Q=y>>>1;for(let ne=2;ne<Q;ne+=2)w[y-ne]=w[ne],w[y-ne+1]=-w[ne+1]}_singleRealTransform2(w,b,v,y,$){const k=w[y],W=w[y+$];b[v]=k+W,b[v+1]=0,b[v+2]=k-W,b[v+3]=0}_singleRealTransform4(w,b,v,y,$,k){const W=$*2,j=$*3,F=w[y],R=w[y+$],L=w[y+W],Q=w[y+j],ne=F+L,re=F-L,ce=R+Q,ge=k*(R-Q);b[v]=ne+ce,b[v+1]=0,b[v+2]=re,b[v+3]=-ge,b[v+4]=ne-ce,b[v+5]=0,b[v+6]=re,b[v+7]=ge}}class A{constructor(w){const b=2*(w-1),v=2*(2*w-1),y=2**Math.ceil(Math.log2(v));this.bufferSize=y,this._a=b;const $=new Float64Array(v),k=new Float64Array(y);this._chirpBuffer=new Float64Array(y),this._buffer1=new Float64Array(y),this._buffer2=new Float64Array(y),this._outBuffer1=new Float64Array(y),this._outBuffer2=new Float64Array(y);const W=-2*Math.PI/w,j=Math.cos(W),F=Math.sin(W);for(let R=0;R<v>>1;++R){const L=(R+1-w)**2/2,Q=Math.sqrt(j**2+F**2)**L,ne=L*Math.atan2(F,j),re=2*R;$[re]=Q*Math.cos(ne),$[re+1]=Q*Math.sin(ne),k[re]=$[re],k[re+1]=-$[re+1]}this._slicedChirpBuffer=$.subarray(b,v),this._f=new g(y>>1),this._f.transform(this._chirpBuffer,k)}_transform(w,b,v){const y=this._buffer1,$=this._buffer2,k=this._outBuffer1,W=this._outBuffer2,j=this._chirpBuffer,F=this._slicedChirpBuffer,R=this._a;if(v)for(let L=0;L<F.length;L+=2){const Q=L+1,ne=L>>1,re=b[ne];y[L]=re*F[L],y[Q]=re*F[Q]}else for(let L=0;L<F.length;L+=2){const Q=L+1;y[L]=b[L]*F[L]-b[Q]*F[Q],y[Q]=b[L]*F[Q]+b[Q]*F[L]}this._f.transform(k,y);for(let L=0;L<j.length;L+=2){const Q=L+1;$[L]=k[L]*j[L]-k[Q]*j[Q],$[Q]=k[L]*j[Q]+k[Q]*j[L]}this._f.inverseTransform(W,$);for(let L=0;L<W.length;L+=2){const Q=W[L+R],ne=W[L+R+1],re=F[L],ce=F[L+1];w[L]=Q*re-ne*ce,w[L+1]=Q*ce+ne*re}}transform(w,b){this._transform(w,b,!1)}realTransform(w,b){this._transform(w,b,!0)}}class m{constructor(w){this.fft_length=w,this.isPowerOfTwo=c(w),this.isPowerOfTwo?(this.fft=new g(w),this.outputBufferSize=2*w):(this.fft=new A(w),this.outputBufferSize=this.fft.bufferSize)}realTransform(w,b){this.fft.realTransform(w,b)}transform(w,b){this.fft.transform(w,b)}}function B(_,w){if(w%2===0||w<=0)throw new Error("Window size must be a positive odd number");const b=new _.constructor(_.length),v=new _.constructor(w),y=Math.floor(w/2);for(let $=0;$<_.length;++$){let k=0;for(let W=-y;W<=y;++W){let j=$+W;j<0?j=Math.abs(j):j>=_.length&&(j=2*(_.length-1)-j),v[k++]=_[j]}v.sort(),b[$]=v[y]}return b}function f(_,w){const b=Math.pow(10,w);return Math.round(_*b)/b}function h(_){const w=Math.round(_);return Math.abs(_)%1===.5?w%2===0?w:w-1:w}function P(_){const w=_.length,b=_[0].length,v=[w+1,b+1],y=Array.from({length:v[0]},()=>Array(v[1]).fill(1/0));y[0][0]=0;const $=Array.from({length:v[0]},()=>Array(v[1]).fill(-1));for(let R=1;R<v[1];++R)for(let L=1;L<v[0];++L){const Q=y[L-1][R-1],ne=y[L-1][R],re=y[L][R-1];let ce,ge;Q<ne&&Q<re?(ce=Q,ge=0):ne<Q&&ne<re?(ce=ne,ge=1):(ce=re,ge=2),y[L][R]=_[L-1][R-1]+ce,$[L][R]=ge}for(let R=0;R<v[1];++R)$[0][R]=2;for(let R=0;R<v[0];++R)$[R][0]=1;let k=w,W=b,j=[],F=[];for(;k>0||W>0;)switch(j.push(k-1),F.push(W-1),$[k][W]){case 0:--k,--W;break;case 1:--k;break;case 2:--W;break;default:throw new Error(`Internal error in dynamic time warping. Unexpected trace[${k}, ${W}]. Please file a bug report.`)}return j.reverse(),F.reverse(),[j,F]}}),
2845"./src/utils/tensor.js":((e,t,r)=>{r.r(t),r.d(t,{DataTypeMap:()=>i,Tensor:()=>o,cat:()=>b,full:()=>F,full_like:()=>R,interpolate:()=>p,interpolate_4d:()=>d,layer_norm:()=>h,matmul:()=>c,mean:()=>k,mean_pooling:()=>f,ones:()=>L,ones_like:()=>Q,permute:()=>u,quantize_embeddings:()=>q,rand:()=>ce,randn:()=>ge,rfft:()=>g,slice:()=>B,stack:()=>v,std_mean:()=>$,topk:()=>A,zeros:()=>ne,zeros_like:()=>re});var n=r("./src/utils/maths.js"),s=r("./src/backends/onnx.js"),a=r("./src/ops/registry.js");const i=Object.freeze({float32:Float32Array,float16:typeof Float16Array<"u"?Float16Array:Uint16Array,float64:Float64Array,string:Array,int8:Int8Array,uint8:Uint8Array,int16:Int16Array,uint16:Uint16Array,int32:Int32Array,uint32:Uint32Array,int64:BigInt64Array,uint64:BigUint64Array,bool:Uint8Array,uint4:Uint8Array,int4:Int8Array});class o{get dims(){return this.ort_tensor.dims}set dims(U){this.ort_tensor.dims=U}get type(){return this.ort_tensor.type}get data(){return this.ort_tensor.data}get size(){return this.ort_tensor.size}get location(){return this.ort_tensor.location}ort_tensor;constructor(...U){return(0,s.isONNXTensor)(U[0])?this.ort_tensor=U[0]:this.ort_tensor=new s.Tensor(U[0],U[1],U[2]),new Proxy(this,{get:(N,oe)=>{if(typeof oe=="string"){let fe=Number(oe);if(Number.isInteger(fe))return N._getitem(fe)}return N[oe]},set:(N,oe,fe)=>N[oe]=fe})}dispose(){this.ort_tensor.dispose()}*[Symbol.iterator](){const[U,...N]=this.dims;if(N.length>0){const oe=N.reduce((fe,De)=>fe*De);for(let fe=0;fe<U;++fe)yield this._subarray(fe,oe,N)}else yield*this.data}_getitem(U){const[N,...oe]=this.dims;if(U=w(U,N),oe.length>0){const fe=oe.reduce((De,Ie)=>De*Ie);return this._subarray(U,fe,oe)}else return new o(this.type,[this.data[U]],oe)}indexOf(U){const N=this.data;for(let oe=0;oe<N.length;++oe)if(N[oe]==U)return oe;return-1}_subarray(U,N,oe){const fe=U*N,De=(U+1)*N,Ie="subarray"in this.data?this.data.subarray(fe,De):this.data.slice(fe,De);return new o(this.type,Ie,oe)}item(){const U=this.data;if(U.length!==1)throw new Error(`a Tensor with ${U.length} elements cannot be converted to Scalar`);return U[0]}tolist(){return l(this.data,this.dims)}sigmoid(){return this.clone().sigmoid_()}sigmoid_(){const U=this.data;for(let N=0;N<U.length;++N)U[N]=1/(1+Math.exp(-U[N]));return this}map(U){return this.clone().map_(U)}map_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]=U(N[oe],oe,N);return this}mul(U){return this.clone().mul_(U)}mul_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]*=U;return this}div(U){return this.clone().div_(U)}div_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]/=U;return this}add(U){return this.clone().add_(U)}add_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]+=U;return this}sub(U){return this.clone().sub_(U)}sub_(U){const N=this.data;for(let oe=0;oe<N.length;++oe)N[oe]-=U;return this}clone(){return new o(this.type,this.data.slice(),this.dims.slice())}slice(...U){const N=[],oe=[];for(let H=0;H<this.dims.length;++H){let we=U[H];if(we==null)oe.push([0,this.dims[H]]),N.push(this.dims[H]);else if(typeof we=="number")we=w(we,this.dims[H],H),oe.push([we,we+1]);else if(Array.isArray(we)&&we.length===2){let[be,Ce]=we;if(be=be===null?0:w(be,this.dims[H],H,!1),Ce=Ce===null?this.dims[H]:w(Ce,this.dims[H],H,!1),be>Ce)throw new Error(`Invalid slice: ${we}`);const Se=[Math.max(be,0),Math.min(Ce,this.dims[H])];oe.push(Se),N.push(Se[1]-Se[0])}else throw new Error(`Invalid slice: ${we}`)}const fe=oe.map(([H,we])=>we-H),De=fe.reduce((H,we)=>H*we),Ie=this.data,je=new Ie.constructor(De),Me=this.stride();let se=!0;for(let H=1;H<fe.length;++H)if(oe[H][0]!==0||oe[H][1]!==this.dims[H]){se=!1;break}if(se){const H=oe[0][0]*Me[0],we=oe[0][1]*Me[0];if(ArrayBuffer.isView(Ie))je.set(Ie.subarray(H,we));else if(Array.isArray(Ie)){const be=Ie.slice(H,we);for(let Ce=0;Ce<be.length;++Ce)je[Ce]=be[Ce]}else throw new Error("Unsupported data type for slicing")}else for(let H=0;H<De;++H){let we=0;for(let be=fe.length-1,Ce=H;be>=0;--be){const Se=fe[be];we+=(Ce%Se+oe[be][0])*Me[be],Ce=Math.floor(Ce/Se)}je[H]=Ie[we]}return new o(this.type,je,N)}permute(...U){return u(this,U)}transpose(...U){return this.permute(...U)}sum(U=null,N=!1){return this.norm(1,U,N)}norm(U="fro",N=null,oe=!1){if(U==="fro")U=2;else if(typeof U=="string")throw Error(`Unsupported norm: ${U}`);const fe=this.data,De=(se,H)=>se+H**U;if(N===null){const se=fe.reduce(De,0)**(1/U);return new o(this.type,[se],[])}const[Ie,je,Me]=y(De,this,N,oe);if(U!==1)for(let se=0;se<je.length;++se)je[se]=je[se]**(1/U);return new o(Ie,je,Me)}normalize_(U=2,N=1){N=w(N,this.dims.length);const oe=this.norm(U,N,!0),fe=this.data,De=oe.data;for(let Ie=0;Ie<fe.length;++Ie){let je=0;for(let Me=this.dims.length-1,se=Ie,H=1;Me>=0;--Me){const we=this.dims[Me];if(Me!==N){const be=se%we;je+=be*H,H*=this.dims[Me]}se=Math.floor(se/we)}fe[Ie]/=De[je]}return this}normalize(U=2,N=1){return this.clone().normalize_(U,N)}stride(){return W(this.dims)}squeeze(U=null){return new o(this.type,this.data,P(this.dims,U))}squeeze_(U=null){return this.dims=P(this.dims,U),this}unsqueeze(U=null){return new o(this.type,this.data,_(this.dims,U))}unsqueeze_(U=null){return this.dims=_(this.dims,U),this}flatten_(U=0,N=-1){N=(N+this.dims.length)%this.dims.length;let oe=this.dims.slice(0,U),fe=this.dims.slice(U,N+1),De=this.dims.slice(N+1);return this.dims=[...oe,fe.reduce((Ie,je)=>Ie*je,1),...De],this}flatten(U=0,N=-1){return this.clone().flatten_(U,N)}view(...U){let N=-1;for(let fe=0;fe<U.length;++fe)if(U[fe]===-1){if(N!==-1)throw new Error("Only one dimension can be inferred");N=fe}const oe=this.data;if(N!==-1){const fe=U.reduce((De,Ie,je)=>je!==N?De*Ie:De,1);U[N]=oe.length/fe}return new o(this.type,oe,U)}neg_(){const U=this.data;for(let N=0;N<U.length;++N)U[N]=-U[N];return this}neg(){return this.clone().neg_()}gt(U){const N=new Uint8Array(this.data.length),oe=this.data;for(let fe=0;fe<oe.length;++fe)N[fe]=oe[fe]>U?1:0;return new o("bool",N,this.dims)}lt(U){const N=new Uint8Array(this.data.length),oe=this.data;for(let fe=0;fe<oe.length;++fe)N[fe]=oe[fe]<U?1:0;return new o("bool",N,this.dims)}clamp_(U,N){const oe=this.data;for(let fe=0;fe<oe.length;++fe)oe[fe]=Math.min(Math.max(oe[fe],U),N);return this}clamp(U,N){return this.clone().clamp_(U,N)}round_(){const U=this.data;for(let N=0;N<U.length;++N)U[N]=Math.round(U[N]);return this}
2845round(){return this.clone().round_()}mean(U=null,N=!1){return k(this,U,N)}min(U=null,N=!1){if(U===null){const Ie=(0,n.min)(this.data)[0];return new o(this.type,[Ie],[])}const[oe,fe,De]=y((Ie,je)=>Math.min(Ie,je),this,U,N,1/0);return new o(oe,fe,De)}max(U=null,N=!1){if(U===null){const Ie=(0,n.max)(this.data)[0];return new o(this.type,[Ie],[])}const[oe,fe,De]=y((Ie,je)=>Math.max(Ie,je),this,U,N,-1/0);return new o(oe,fe,De)}argmin(U=null,N=!1){if(U!==null)throw new Error("`dim !== null` not yet implemented.");const oe=(0,n.min)(this.data)[1];return new o("int64",[BigInt(oe)],[])}argmax(U=null,N=!1){if(U!==null)throw new Error("`dim !== null` not yet implemented.");const oe=(0,n.max)(this.data)[1];return new o("int64",[BigInt(oe)],[])}to(U){if(this.type===U)return this;if(!i.hasOwnProperty(U))throw new Error(`Unsupported type: ${U}`);let N;const oe=["int64","uint64"].includes(this.type),fe=["int64","uint64"].includes(U);return oe&&!fe?N=Number:!oe&&fe&&(["float16","float32","float64"].includes(this.type)?N=De=>BigInt(Math.floor(De)):N=BigInt),new o(U,i[U].from(this.data,N),this.dims)}}function l(V,U){const N=V.length,oe=U.reduce((De,Ie)=>De*Ie);if(N!==oe)throw Error(`cannot reshape array of size ${N} into shape (${U})`);let fe=V;for(let De=U.length-1;De>=0;De--)fe=fe.reduce((Ie,je)=>{let Me=Ie[Ie.length-1];return Me.length<U[De]?Me.push(je):Ie.push([je]),Ie},[[]]);return fe[0]}function u(V,U){const[N,oe]=(0,n.permute_data)(V.data,V.dims,U);return new o(V.type,N,oe)}function p(V,[U,N],oe="bilinear",fe=!1){const De=V.dims.at(-3)??1,Ie=V.dims.at(-2),je=V.dims.at(-1);let Me=(0,n.interpolate_data)(V.data,[De,Ie,je],[U,N],oe,fe);return new o(V.type,Me,[De,U,N])}async function d(V,{size:U=null,mode:N="bilinear"}={}){if(V.dims.length!==4)throw new Error("`interpolate_4d` currently only supports 4D input.");if(!U)throw new Error("`interpolate_4d` requires a `size` argument.");let oe;if(U.length===2)oe=[...V.dims.slice(0,2),...U];else if(U.length===3)oe=[V.dims[0],...U];else if(U.length===4)oe=U;else throw new Error("`size` must be of length 2, 3, or 4.");let fe;if(N==="nearest")fe=await a.TensorOpRegistry.nearest_interpolate_4d;else if(N==="bilinear")fe=await a.TensorOpRegistry.bilinear_interpolate_4d;else if(N==="bicubic")fe=await a.TensorOpRegistry.bicubic_interpolate_4d;else throw new Error(`Unsupported mode: ${N}`);const De=new o("int64",new BigInt64Array(oe.map(BigInt)),[oe.length]);return await fe({x:V,s:De})}async function c(V,U){return await(await a.TensorOpRegistry.matmul)({a:V,b:U})}async function g(V,U){return await(await a.TensorOpRegistry.rfft)({x:V,a:U})}async function A(V,U){const N=await a.TensorOpRegistry.top_k;return U==null?U=V.dims.at(-1):U=Math.min(U,V.dims.at(-1)),await N({x:V,k:new o("int64",[BigInt(U)],[1])})}const m=V=>new o("int64",V,[V.length]);async function B(V,U,N,oe,fe){return await(await a.TensorOpRegistry.slice)({x:V,s:m(U),e:m(N),a:m(oe),t:m(fe??new Array(oe.length).fill(1))})}function f(V,U){const N=V.data,oe=U.data,fe=[V.dims[0],V.dims[2]],De=new N.constructor(fe[0]*fe[1]),[Ie,je,Me]=V.dims;let se=0;for(let H=0;H<Ie;++H){const we=H*Me*je;for(let be=0;be<Me;++be){let Ce=0,Se=0;const ze=H*je,ve=we+be;for(let Be=0;Be<je;++Be){const ke=Number(oe[ze+Be]);Se+=ke,Ce+=N[ve+Be*Me]*ke}const Ve=Ce/Se;De[se++]=Ve}}return new o(V.type,De,fe)}function h(V,U,{eps:N=1e-5}={}){if(V.dims.length!==2)throw new Error("`layer_norm` currently only supports 2D input.");const[oe,fe]=V.dims;if(U.length!==1&&U[0]!==fe)throw new Error("`normalized_shape` must be a 1D array with shape `[input.dims[1]]`.");const[De,Ie]=$(V,1,0,!0),je=De.data,Me=Ie.data,se=V.data,H=new se.constructor(se.length);for(let we=0;we<oe;++we){const be=we*fe;for(let Ce=0;Ce<fe;++Ce){const Se=be+Ce;H[Se]=(se[Se]-Me[we])/(je[we]+N)}}return new o(V.type,H,V.dims)}function P(V,U){return V=V.slice(),U===null?V=V.filter(N=>N!==1):typeof U=="number"?V[U]===1&&V.splice(U,1):Array.isArray(U)&&(V=V.filter((N,oe)=>N!==1||!U.includes(oe))),V}function _(V,U){return U=w(U,V.length+1),V=V.slice(),V.splice(U,0,1),V}function w(V,U,N=null,oe=!0){if(V<-U||V>=U){if(oe)throw new Error(`IndexError: index ${V} is out of bounds for dimension${N===null?"":" "+N} with size ${U}`);return V<-U?0:U}return V<0&&(V=(V%U+U)%U),V}function b(V,U=0){U=w(U,V[0].dims.length);const N=V[0].dims.slice();N[U]=V.reduce((Ie,je)=>Ie+je.dims[U],0);const oe=N.reduce((Ie,je)=>Ie*je,1),fe=new V[0].data.constructor(oe),De=V[0].type;if(U===0){let Ie=0;for(const je of V){const Me=je.data;fe.set(Me,Ie),Ie+=Me.length}}else{let Ie=0;for(let je=0;je<V.length;++je){const{data:Me,dims:se}=V[je];for(let H=0;H<Me.length;++H){let we=0;for(let be=se.length-1,Ce=H,Se=1;be>=0;--be){const ze=se[be];let ve=Ce%ze;be===U&&(ve+=Ie),we+=ve*Se,Se*=N[be],Ce=Math.floor(Ce/ze)}fe[we]=Me[H]}Ie+=se[U]}}return new o(De,fe,N)}function v(V,U=0){return b(V.map(N=>N.unsqueeze(U)),U)}function y(V,U,N=null,oe=!1,fe=null){const De=U.data,Ie=U.dims;N=w(N,Ie.length);const je=Ie.slice();je[N]=1;const Me=new De.constructor(De.length/Ie[N]);
2845fe!==null&&Me.fill(fe);for(let se=0;se<De.length;++se){let H=0;for(let we=Ie.length-1,be=se,Ce=1;we>=0;--we){const Se=Ie[we];if(we!==N){const ze=be%Se;H+=ze*Ce,Ce*=je[we]}be=Math.floor(be/Se)}Me[H]=V(Me[H],De[se],se,H)}return oe||je.splice(N,1),[U.type,Me,je]}function $(V,U=null,N=1,oe=!1){const fe=V.data,De=V.dims;if(U===null){const Ce=fe.reduce((Ve,Be)=>Ve+Be,0)/fe.length,Se=Math.sqrt(fe.reduce((Ve,Be)=>Ve+(Be-Ce)**2,0)/(fe.length-N)),ze=new o(V.type,[Ce],[]);return[new o(V.type,[Se],[]),ze]}U=w(U,De.length);const Ie=k(V,U,oe),je=Ie.data,[Me,se,H]=y((be,Ce,Se,ze)=>be+(Ce-je[ze])**2,V,U,oe);for(let be=0;be<se.length;++be)se[be]=Math.sqrt(se[be]/(De[U]-N));return[new o(Me,se,H),Ie]}function k(V,U=null,N=!1){const oe=V.dims,fe=V.data;if(U===null){const Me=fe.reduce((se,H)=>se+H,0);return new o(V.type,[Me/fe.length],[])}U=w(U,oe.length);const[De,Ie,je]=y((Me,se)=>Me+se,V,U,N);if(oe[U]!==1)for(let Me=0;Me<Ie.length;++Me)Ie[Me]/=oe[U];return new o(De,Ie,je)}function W(V){const U=new Array(V.length);for(let N=V.length-1,oe=1;N>=0;--N)U[N]=oe,oe*=V[N];return U}function j(V,U,N,oe){const fe=V.reduce((De,Ie)=>De*Ie,1);return new o(N,new oe(fe).fill(U),V)}function F(V,U){let N,oe;if(typeof U=="number")N="float32",oe=Float32Array;else if(typeof U=="bigint")N="int64",oe=BigInt64Array;else if(typeof U=="boolean")N="bool",oe=Uint8Array;else throw new Error(`Unsupported data type: ${typeof U}`);return j(V,U,N,oe)}function R(V,U){return F(V.dims,U)}function L(V){return j(V,1n,"int64",BigInt64Array)}function Q(V){return L(V.dims)}function ne(V){return j(V,0n,"int64",BigInt64Array)}function re(V){return ne(V.dims)}function ce(V){const U=V.reduce((N,oe)=>N*oe,1);return new o("float32",Float32Array.from({length:U},()=>Math.random()),V)}function ge(V){const U=V.reduce((oe,fe)=>oe*fe,1);function N(){const oe=1-Math.random(),fe=1-Math.random();return Math.sqrt(-2*Math.log(oe))*Math.cos(2*Math.PI*fe)}return new o("float32",Float32Array.from({length:U},()=>N()),V)}function q(V,U){if(V.dims.length!==2)throw new Error("The tensor must have 2 dimensions");if(V.dims.at(-1)%8!==0)throw new Error("The last dimension of the tensor must be a multiple of 8");if(!["binary","ubinary"].includes(U))throw new Error("The precision must be either 'binary' or 'ubinary'");const N=U==="binary",oe=N?"int8":"uint8",fe=N?Int8Array:Uint8Array,De=V.data,Ie=new fe(De.length/8);for(let je=0;je<De.length;++je){const Me=De[je]>0?1:0,se=Math.floor(je/8),H=je%8;Ie[se]|=Me<<7-H,N&&H===0&&(Ie[se]-=128)}return new o(oe,Ie,[V.dims[0],V.dims[1]/8])}}),
2845"./src/utils/video.js":((e,t,r)=>{r.r(t),r.d(t,{RawVideo:()=>i,RawVideoFrame:()=>a,load_video:()=>o});var n=r("./src/utils/image.js"),s=r("./src/env.js");class a{constructor(u,p){this.image=u,this.timestamp=p}}class i{constructor(u,p){u.length>0&&u[0]instanceof n.RawImage&&(u=u.map((d,c)=>new a(d,(c+1)/(u.length+1)*p))),this.frames=u,this.duration=p}get width(){return this.frames[0].image.width}get height(){return this.frames[0].image.height}get fps(){return this.frames.length/this.duration}}async function o(l,{num_frames:u=null,fps:p=null}={}){if(!s.apis.IS_BROWSER_ENV)throw new Error("`load_video` is currently only supported in browser environments.");if(u==null&&p==null)throw new Error("Either num_frames or fps must be provided.");const d=[],c=document.createElement("video");if(c.crossOrigin="anonymous",c.muted=!0,typeof l=="string")c.src=l;else if(l instanceof Blob)c.src=URL.createObjectURL(l);else if(l instanceof HTMLVideoElement)c.src=l.src;else throw new Error("Invalid URL or video element provided.");if(await new Promise(P=>c.onloadedmetadata=P),c.seekable.start(0)===c.seekable.end(0)){const _=await(await fetch(c.src)).blob();c.src=URL.createObjectURL(_),await new Promise(w=>c.onloadedmetadata=w)}const g=c.duration;let A,m;u!=null?(A=u,m=u===1?0:g/(u-1)):(m=1/p,A=Math.floor(g/m));let B=[];for(let P=0;P<A;++P)B.push(u===1?g/2:P*m);const f=document.createElement("canvas");f.width=c.videoWidth,f.height=c.videoHeight;const h=f.getContext("2d",{willReadFrequently:!0});for(const P of B){c.currentTime=P,await new Promise(v=>{c.onseeked=v}),h.drawImage(c,0,0,f.width,f.height);const _=h.getImageData(0,0,f.width,f.height),w=new n.RawImage(_.data,f.width,f.height,4),b=new a(w,P);d.push(b)}return c.remove(),new i(d,g)}})
2845},wM={};function Pr(e){var t=wM[e];if(t!==void 0)return t.exports;var r=wM[e]={exports:{}};return v4[e](r,r.exports,Pr),r.exports}(()=>{var e=Object.getPrototypeOf?r=>Object.getPrototypeOf(r):r=>r.__proto__,t;Pr.t=function(r,n){if(n&1&&(r=this(r)),n&8||typeof r=="object"&&r&&(n&4&&r.__esModule||n&16&&typeof r.then=="function"))return r;var s=Object.create(null);Pr.r(s);var a={};t=t||[null,e({}),e([]),e(e)];for(var i=n&2&&r;typeof i=="object"&&!~t.indexOf(i);i=e(i))Object.getOwnPropertyNames(i).forEach(o=>a[o]=()=>r[o]);return a.default=()=>r,Pr.d(s,a),s}})(),Pr.d=(e,t)=>{for(var r in t)Pr.o(t,r)&&!Pr.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},Pr.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Pr.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var E={};(()=>{Pr.r(E),Pr.d(E,{ASTFeatureExtractor:()=>d.ASTFeatureExtractor,ASTForAudioClassification:()=>r.ASTForAudioClassification,ASTModel:()=>r.ASTModel,ASTPreTrainedModel:()=>r.ASTPreTrainedModel,AlbertForMaskedLM:()=>r.AlbertForMaskedLM,AlbertForQuestionAnswering:()=>r.AlbertForQuestionAnswering,AlbertForSequenceClassification:()=>r.AlbertForSequenceClassification,AlbertModel:()=>r.AlbertModel,AlbertPreTrainedModel:()=>r.AlbertPreTrainedModel,AlbertTokenizer:()=>n.AlbertTokenizer,ArceeForCausalLM:()=>r.ArceeForCausalLM,ArceeModel:()=>r.ArceeModel,ArceePreTrainedModel:()=>r.ArceePreTrainedModel,AudioClassificationPipeline:()=>t.AudioClassificationPipeline,AutoConfig:()=>s.AutoConfig,AutoFeatureExtractor:()=>c.AutoFeatureExtractor,AutoImageProcessor:()=>m.AutoImageProcessor,AutoModel:()=>r.AutoModel,AutoModelForAudioClassification:()=>r.AutoModelForAudioClassification,AutoModelForAudioFrameClassification:()=>r.AutoModelForAudioFrameClassification,AutoModelForAudioTextToText:()=>r.AutoModelForAudioTextToText,AutoModelForCTC:()=>r.AutoModelForCTC,AutoModelForCausalLM:()=>r.AutoModelForCausalLM,AutoModelForDepthEstimation:()=>r.AutoModelForDepthEstimation,AutoModelForDocumentQuestionAnswering:()=>r.AutoModelForDocumentQuestionAnswering,AutoModelForImageClassification:()=>r.AutoModelForImageClassification,AutoModelForImageFeatureExtraction:()=>r.AutoModelForImageFeatureExtraction,AutoModelForImageMatting:()=>r.AutoModelForImageMatting,AutoModelForImageSegmentation:()=>r.AutoModelForImageSegmentation,AutoModelForImageTextToText:()=>r.AutoModelForImageTextToText,AutoModelForImageToImage:()=>r.AutoModelForImageToImage,AutoModelForMaskGeneration:()=>r.AutoModelForMaskGeneration,AutoModelForMaskedLM:()=>r.AutoModelForMaskedLM,AutoModelForNormalEstimation:()=>r.AutoModelForNormalEstimation,AutoModelForObjectDetection:()=>r.AutoModelForObjectDetection,AutoModelForPoseEstimation:()=>r.AutoModelForPoseEstimation,AutoModelForQuestionAnswering:()=>r.AutoModelForQuestionAnswering,AutoModelForSemanticSegmentation:()=>r.AutoModelForSemanticSegmentation,AutoModelForSeq2SeqLM:()=>r.AutoModelForSeq2SeqLM,AutoModelForSequenceClassification:()=>r.AutoModelForSequenceClassification,AutoModelForSpeechSeq2Seq:()=>r.AutoModelForSpeechSeq2Seq,AutoModelForTextToSpectrogram:()=>r.AutoModelForTextToSpectrogram,AutoModelForTextToWaveform:()=>r.AutoModelForTextToWaveform,AutoModelForTokenClassification:()=>r.AutoModelForTokenClassification,AutoModelForUniversalSegmentation:()=>r.AutoModelForUniversalSegmentation,AutoModelForVision2Seq:()=>r.AutoModelForVision2Seq,AutoModelForXVector:()=>r.AutoModelForXVector,AutoModelForZeroShotObjectDetection:()=>r.AutoModelForZeroShotObjectDetection,AutoProcessor:()=>h.AutoProcessor,AutoTokenizer:()=>n.AutoTokenizer,AutomaticSpeechRecognitionPipeline:()=>t.AutomaticSpeechRecognitionPipeline,BackgroundRemovalPipeline:()=>t.BackgroundRemovalPipeline,BartForConditionalGeneration:()=>r.BartForConditionalGeneration,BartForSequenceClassification:()=>r.BartForSequenceClassification,BartModel:()=>r.BartModel,BartPretrainedModel:()=>r.BartPretrainedModel,BartTokenizer:()=>n.BartTokenizer,BaseModelOutput:()=>r.BaseModelOutput,BaseStreamer:()=>P.BaseStreamer,BeitFeatureExtractor:()=>A.BeitFeatureExtractor,BeitForImageClassification:()=>
2845r.BeitForImageClassification,BeitModel:()=>r.BeitModel,BeitPreTrainedModel:()=>r.BeitPreTrainedModel,BertForMaskedLM:()=>r.BertForMaskedLM,BertForQuestionAnswering:()=>r.BertForQuestionAnswering,BertForSequenceClassification:()=>r.BertForSequenceClassification,BertForTokenClassification:()=>r.BertForTokenClassification,BertModel:()=>r.BertModel,BertPreTrainedModel:()=>r.BertPreTrainedModel,BertTokenizer:()=>n.BertTokenizer,BitImageProcessor:()=>A.BitImageProcessor,BlenderbotForConditionalGeneration:()=>r.BlenderbotForConditionalGeneration,BlenderbotModel:()=>r.BlenderbotModel,BlenderbotPreTrainedModel:()=>r.BlenderbotPreTrainedModel,BlenderbotSmallForConditionalGeneration:()=>r.BlenderbotSmallForConditionalGeneration,BlenderbotSmallModel:()=>r.BlenderbotSmallModel,BlenderbotSmallPreTrainedModel:()=>r.BlenderbotSmallPreTrainedModel,BlenderbotSmallTokenizer:()=>n.BlenderbotSmallTokenizer,BlenderbotTokenizer:()=>n.BlenderbotTokenizer,BloomForCausalLM:()=>r.BloomForCausalLM,BloomModel:()=>r.BloomModel,BloomPreTrainedModel:()=>r.BloomPreTrainedModel,BloomTokenizer:()=>n.BloomTokenizer,CLIPFeatureExtractor:()=>A.CLIPFeatureExtractor,CLIPImageProcessor:()=>A.CLIPImageProcessor,CLIPModel:()=>r.CLIPModel,CLIPPreTrainedModel:()=>r.CLIPPreTrainedModel,CLIPSegForImageSegmentation:()=>r.CLIPSegForImageSegmentation,CLIPSegModel:()=>r.CLIPSegModel,CLIPSegPreTrainedModel:()=>r.CLIPSegPreTrainedModel,CLIPTextModel:()=>r.CLIPTextModel,CLIPTextModelWithProjection:()=>r.CLIPTextModelWithProjection,CLIPTokenizer:()=>n.CLIPTokenizer,CLIPVisionModel:()=>r.CLIPVisionModel,CLIPVisionModelWithProjection:()=>r.CLIPVisionModelWithProjection,CamembertForMaskedLM:()=>r.CamembertForMaskedLM,CamembertForQuestionAnswering:()=>r.CamembertForQuestionAnswering,CamembertForSequenceClassification:()=>r.CamembertForSequenceClassification,CamembertForTokenClassification:()=>r.CamembertForTokenClassification,CamembertModel:()=>r.CamembertModel,CamembertPreTrainedModel:()=>r.CamembertPreTrainedModel,CamembertTokenizer:()=>n.CamembertTokenizer,CausalLMOutput:()=>r.CausalLMOutput,CausalLMOutputWithPast:()=>r.CausalLMOutputWithPast,ChineseCLIPFeatureExtractor:()=>A.ChineseCLIPFeatureExtractor,ChineseCLIPModel:()=>r.ChineseCLIPModel,ChineseCLIPPreTrainedModel:()=>r.ChineseCLIPPreTrainedModel,ClapAudioModelWithProjection:()=>r.ClapAudioModelWithProjection,ClapFeatureExtractor:()=>d.ClapFeatureExtractor,ClapModel:()=>r.ClapModel,ClapPreTrainedModel:()=>r.ClapPreTrainedModel,ClapTextModelWithProjection:()=>r.ClapTextModelWithProjection,ClassifierFreeGuidanceLogitsProcessor:()=>w.ClassifierFreeGuidanceLogitsProcessor,CodeGenForCausalLM:()=>r.CodeGenForCausalLM,CodeGenModel:()=>r.CodeGenModel,CodeGenPreTrainedModel:()=>r.CodeGenPreTrainedModel,CodeGenTokenizer:()=>n.CodeGenTokenizer,CodeLlamaTokenizer:()=>n.CodeLlamaTokenizer,CohereForCausalLM:()=>r.CohereForCausalLM,CohereModel:()=>r.CohereModel,CoherePreTrainedModel:()=>r.CoherePreTrainedModel,CohereTokenizer:()=>n.CohereTokenizer,ConvBertForMaskedLM:()=>r.ConvBertForMaskedLM,ConvBertForQuestionAnswering:()=>r.ConvBertForQuestionAnswering,ConvBertForSequenceClassification:()=>r.ConvBertForSequenceClassification,ConvBertForTokenClassification:()=>r.ConvBertForTokenClassification,ConvBertModel:()=>r.ConvBertModel,ConvBertPreTrainedModel:()=>r.ConvBertPreTrainedModel,ConvBertTokenizer:()=>n.ConvBertTokenizer,ConvNextFeatureExtractor:()=>A.ConvNextFeatureExtractor,ConvNextForImageClassification:()=>r.ConvNextForImageClassification,ConvNextImageProcessor:()=>A.ConvNextImageProcessor,ConvNextModel:()=>r.ConvNextModel,ConvNextPreTrainedModel:()=>r.ConvNextPreTrainedModel,ConvNextV2ForImageClassification:()=>r.ConvNextV2ForImageClassification,ConvNextV2Model:()=>r.ConvNextV2Model,ConvNextV2PreTrainedModel:()=>r.ConvNextV2PreTrainedModel,DFineForObjectDetection:()=>r.DFineForObjectDetection,DFineModel:()=>r.DFineModel,DFinePreTrainedModel:()=>r.DFinePreTrainedModel,DINOv3ConvNextModel:()=>r.DINOv3ConvNextModel,DINOv3ConvNextPreTrainedModel:()=>r.DINOv3ConvNextPreTrainedModel,DINOv3ViTImageProcessor:()=>A.DINOv3ViTImageProcessor,DINOv3ViTModel:()=>r.DINOv3ViTModel,DINOv3ViTPreTrainedModel:()=>r.DINOv3ViTPreTrainedModel,DPTFeatureExtractor:()=>A.DPTFeatureExtractor,DPTForDepthEstimation:()=>r.DPTForDepthEstimation,DPTImageProcessor:()=>A.DPTImageProcessor,DPTModel:()=>r.DPTModel,DPTPreTrainedModel:()=>r.DPTPreTrainedModel,DacDecoderModel:()=>r.DacDecoderModel,DacDecoderOutput:()=>r.DacDecoderOutput,DacEncoderModel:()=>r.DacEncoderModel,DacEncoderOutput:()=>r.DacEncoderOutput,DacFeatureExtractor:()=>d.DacFeatureExtractor,DacModel:()=>r.DacModel,DacPreTrainedModel:()=>r.DacPreTrainedModel,DataTypeMap:()=>l.DataTypeMap,DebertaForMaskedLM:()=>r.DebertaForMaskedLM,DebertaForQuestionAnswering:()=>r.DebertaForQuestionAnswering,DebertaForSequenceClassification:()=>r.DebertaForSequenceClassification,DebertaForTokenClassification:()=>r.DebertaForTokenClassification,DebertaModel:()=>r.DebertaModel,DebertaPreTrainedModel:()=>r.DebertaPreTrainedModel,DebertaTokenizer:()=>n.DebertaTokenizer,DebertaV2ForMaskedLM:()=>r.DebertaV2ForMaskedLM,DebertaV2ForQuestionAnswering:()=>r.DebertaV2ForQuestionAnswering,DebertaV2ForSequenceClassification:()=>r.DebertaV2ForSequenceClassification,DebertaV2ForTokenClassification:()=>r.DebertaV2ForTokenClassification,DebertaV2Model:()=>r.DebertaV2Model,DebertaV2PreTrainedModel:()=>r.DebertaV2PreTrainedModel,DebertaV2Tokenizer:()=>n.DebertaV2Tokenizer,DecisionTransformerModel:()=>r.DecisionTransformerModel,DecisionTransformerPreTrainedModel:()=>r.DecisionTransformerPreTrainedModel,DeiTFeatureExtractor:()=>A.DeiTFeatureExtractor,DeiTForImageClassification:()=>r.DeiTForImageClassification,DeiTImageProcessor:()=>A.DeiTImageProcessor,DeiTModel:()=>r.DeiTModel,DeiTPreTrainedModel:()=>r.DeiTPreTrainedModel,DepthAnythingForDepthEstimation:()=>r.DepthAnythingForDepthEstimation,DepthAnythingPreTrainedModel:()=>r.DepthAnythingPreTrainedModel,DepthEstimationPipeline:()=>t.DepthEstimationPipeline,DepthProForDepthEstimation:()=>r.DepthProForDepthEstimation,DepthProPreTrainedModel:()=>r.DepthProPreTrainedModel,DetrFeatureExtractor:()=>A.DetrFeatureExtractor,DetrForObjectDetection:()=>r.DetrForObjectDetection,DetrForSegmentation:()=>r.DetrForSegmentation,DetrImageProcessor:()=>A.DetrImageProcessor,DetrModel:()=>r.DetrModel,DetrObjectDetectionOutput:()=>r.DetrObjectDetectionOutput,DetrPreTrainedModel:()=>r.DetrPreTrainedModel,DetrSegmentationOutput:()=>r.DetrSegmentationOutput,Dinov2ForImageClassification:()=>r.Dinov2ForImageClassification,Dinov2Model:()=>r.Dinov2Model,Dinov2PreTrainedModel:()=>r.Dinov2PreTrainedModel,Dinov2WithRegistersForImageClassification:()=>r.Dinov2WithRegistersForImageClassification,Dinov2WithRegistersModel:()=>r.Dinov2WithRegistersModel,Dinov2WithRegistersPreTrainedModel:()=>r.Dinov2WithRegistersPreTrainedModel,DistilBertForMaskedLM:()=>r.DistilBertForMaskedLM,DistilBertForQuestionAnswering:()=>r.DistilBertForQuestionAnswering,DistilBertForSequenceClassification:()=>r.DistilBertForSequenceClassification,DistilBertForTokenClassification:()=>r.DistilBertForTokenClassification,DistilBertModel:()=>r.DistilBertModel,DistilBertPreTrainedModel:()=>r.DistilBertPreTrainedModel,DistilBertTokenizer:()=>n.DistilBertTokenizer,DocumentQuestionAnsweringPipeline:()=>t.DocumentQuestionAnsweringPipeline,DonutFeatureExtractor:()=>A.DonutFeatureExtractor,DonutImageProcessor:()=>A.DonutImageProcessor,DonutSwinModel:()=>r.DonutSwinModel,DonutSwinPreTrainedModel:()=>r.DonutSwinPreTrainedModel,EdgeTamModel:()=>r.EdgeTamModel,EfficientNetForImageClassification:()=>r.EfficientNetForImageClassification,EfficientNetImageProcessor:()=>A.EfficientNetImageProcessor,EfficientNetModel:()=>r.EfficientNetModel,EfficientNetPreTrainedModel:()=>
2845r.EfficientNetPreTrainedModel,ElectraForMaskedLM:()=>r.ElectraForMaskedLM,ElectraForQuestionAnswering:()=>r.ElectraForQuestionAnswering,ElectraForSequenceClassification:()=>r.ElectraForSequenceClassification,ElectraForTokenClassification:()=>r.ElectraForTokenClassification,ElectraModel:()=>r.ElectraModel,ElectraPreTrainedModel:()=>r.ElectraPreTrainedModel,ElectraTokenizer:()=>n.ElectraTokenizer,EncodecFeatureExtractor:()=>d.EncodecFeatureExtractor,EosTokenCriteria:()=>_.EosTokenCriteria,Ernie4_5ForCausalLM:()=>r.Ernie4_5ForCausalLM,Ernie4_5Model:()=>r.Ernie4_5Model,Ernie4_5PreTrainedModel:()=>r.Ernie4_5PreTrainedModel,EsmForMaskedLM:()=>r.EsmForMaskedLM,EsmForSequenceClassification:()=>r.EsmForSequenceClassification,EsmForTokenClassification:()=>r.EsmForTokenClassification,EsmModel:()=>r.EsmModel,EsmPreTrainedModel:()=>r.EsmPreTrainedModel,EsmTokenizer:()=>n.EsmTokenizer,ExaoneForCausalLM:()=>r.ExaoneForCausalLM,ExaoneModel:()=>r.ExaoneModel,ExaonePreTrainedModel:()=>r.ExaonePreTrainedModel,FFT:()=>u.FFT,FalconForCausalLM:()=>r.FalconForCausalLM,FalconModel:()=>r.FalconModel,FalconPreTrainedModel:()=>r.FalconPreTrainedModel,FalconTokenizer:()=>n.FalconTokenizer,FastViTForImageClassification:()=>r.FastViTForImageClassification,FastViTModel:()=>r.FastViTModel,FastViTPreTrainedModel:()=>r.FastViTPreTrainedModel,FeatureExtractionPipeline:()=>t.FeatureExtractionPipeline,FeatureExtractor:()=>p.FeatureExtractor,FillMaskPipeline:()=>t.FillMaskPipeline,Florence2ForConditionalGeneration:()=>r.Florence2ForConditionalGeneration,Florence2PreTrainedModel:()=>r.Florence2PreTrainedModel,Florence2Processor:()=>f.Florence2Processor,ForcedBOSTokenLogitsProcessor:()=>w.ForcedBOSTokenLogitsProcessor,ForcedEOSTokenLogitsProcessor:()=>w.ForcedEOSTokenLogitsProcessor,GLPNFeatureExtractor:()=>A.GLPNFeatureExtractor,GLPNForDepthEstimation:()=>r.GLPNForDepthEstimation,GLPNModel:()=>r.GLPNModel,GLPNPreTrainedModel:()=>r.GLPNPreTrainedModel,GPT2LMHeadModel:()=>r.GPT2LMHeadModel,GPT2Model:()=>r.GPT2Model,GPT2PreTrainedModel:()=>r.GPT2PreTrainedModel,GPT2Tokenizer:()=>n.GPT2Tokenizer,GPTBigCodeForCausalLM:()=>r.GPTBigCodeForCausalLM,GPTBigCodeModel:()=>r.GPTBigCodeModel,GPTBigCodePreTrainedModel:()=>r.GPTBigCodePreTrainedModel,GPTJForCausalLM:()=>r.GPTJForCausalLM,GPTJModel:()=>r.GPTJModel,GPTJPreTrainedModel:()=>r.GPTJPreTrainedModel,GPTNeoForCausalLM:()=>r.GPTNeoForCausalLM,GPTNeoModel:()=>r.GPTNeoModel,GPTNeoPreTrainedModel:()=>r.GPTNeoPreTrainedModel,GPTNeoXForCausalLM:()=>r.GPTNeoXForCausalLM,GPTNeoXModel:()=>r.GPTNeoXModel,GPTNeoXPreTrainedModel:()=>r.GPTNeoXPreTrainedModel,GPTNeoXTokenizer:()=>n.GPTNeoXTokenizer,Gemma2ForCausalLM:()=>r.Gemma2ForCausalLM,Gemma2Model:()=>r.Gemma2Model,Gemma2PreTrainedModel:()=>r.Gemma2PreTrainedModel,Gemma3ForCausalLM:()=>r.Gemma3ForCausalLM,Gemma3Model:()=>r.Gemma3Model,Gemma3PreTrainedModel:()=>r.Gemma3PreTrainedModel,Gemma3nAudioFeatureExtractor:()=>d.Gemma3nAudioFeatureExtractor,Gemma3nForConditionalGeneration:()=>r.Gemma3nForConditionalGeneration,Gemma3nPreTrainedModel:()=>r.Gemma3nPreTrainedModel,Gemma3nProcessor:()=>f.Gemma3nProcessor,GemmaForCausalLM:()=>r.GemmaForCausalLM,GemmaModel:()=>r.GemmaModel,GemmaPreTrainedModel:()=>r.GemmaPreTrainedModel,GemmaTokenizer:()=>n.GemmaTokenizer,GlmForCausalLM:()=>r.GlmForCausalLM,GlmModel:()=>r.GlmModel,GlmPreTrainedModel:()=>r.GlmPreTrainedModel,GraniteForCausalLM:()=>r.GraniteForCausalLM,GraniteModel:()=>r.GraniteModel,GraniteMoeHybridForCausalLM:()=>r.GraniteMoeHybridForCausalLM,GraniteMoeHybridModel:()=>r.GraniteMoeHybridModel,GraniteMoeHybridPreTrainedModel:()=>r.GraniteMoeHybridPreTrainedModel,GranitePreTrainedModel:()=>r.GranitePreTrainedModel,Grok1Tokenizer:()=>n.Grok1Tokenizer,GroundingDinoForObjectDetection:()=>r.GroundingDinoForObjectDetection,GroundingDinoImageProcessor:()=>A.GroundingDinoImageProcessor,GroundingDinoPreTrainedModel:()=>r.GroundingDinoPreTrainedModel,GroundingDinoProcessor:()=>f.GroundingDinoProcessor,GroupViTModel:()=>r.GroupViTModel,GroupViTPreTrainedModel:()=>r.GroupViTPreTrainedModel,HeliumForCausalLM:()=>r.HeliumForCausalLM,HeliumModel:()=>r.HeliumModel,HeliumPreTrainedModel:()=>r.HeliumPreTrainedModel,HerbertTokenizer:()=>n.HerbertTokenizer,HieraForImageClassification:()=>r.HieraForImageClassification,HieraModel:()=>r.HieraModel,HieraPreTrainedModel:()=>r.HieraPreTrainedModel,HubertForCTC:()=>r.HubertForCTC,HubertForSequenceClassification:()=>r.HubertForSequenceClassification,HubertModel:()=>r.HubertModel,HubertPreTrainedModel:()=>r.HubertPreTrainedModel,IJepaForImageClassification:()=>r.IJepaForImageClassification,IJepaModel:()=>r.IJepaModel,IJepaPreTrainedModel:()=>r.IJepaPreTrainedModel,Idefics3ForConditionalGeneration:()=>r.Idefics3ForConditionalGeneration,Idefics3ImageProcessor:()=>A.Idefics3ImageProcessor,Idefics3PreTrainedModel:()=>r.Idefics3PreTrainedModel,Idefics3Processor:()=>f.Idefics3Processor,ImageClassificationPipeline:()=>t.ImageClassificationPipeline,ImageFeatureExtractionPipeline:()=>t.ImageFeatureExtractionPipeline,ImageFeatureExtractor:()=>d.ImageFeatureExtractor,ImageMattingOutput:()=>r.ImageMattingOutput,ImageProcessor:()=>g.ImageProcessor,ImageSegmentationPipeline:()=>t.ImageSegmentationPipeline,ImageToImagePipeline:()=>t.ImageToImagePipeline,ImageToTextPipeline:()=>t.ImageToTextPipeline,InterruptableStoppingCriteria:()=>_.InterruptableStoppingCriteria,JAISLMHeadModel:()=>r.JAISLMHeadModel,JAISModel:()=>r.JAISModel,JAISPreTrainedModel:()=>r.JAISPreTrainedModel,JinaCLIPImageProcessor:()=>A.JinaCLIPImageProcessor,JinaCLIPModel:()=>r.JinaCLIPModel,JinaCLIPPreTrainedModel:()=>r.JinaCLIPPreTrainedModel,JinaCLIPProcessor:()=>f.JinaCLIPProcessor,JinaCLIPTextModel:()=>r.JinaCLIPTextModel,JinaCLIPVisionModel:()=>r.JinaCLIPVisionModel,Lfm2ForCausalLM:()=>r.Lfm2ForCausalLM,Lfm2Model:()=>r.Lfm2Model,Lfm2PreTrainedModel:()=>r.Lfm2PreTrainedModel,LiteWhisperForConditionalGeneration:()=>r.LiteWhisperForConditionalGeneration,Llama4ForCausalLM:()=>r.Llama4ForCausalLM,Llama4PreTrainedModel:()=>r.Llama4PreTrainedModel,LlamaForCausalLM:()=>r.LlamaForCausalLM,LlamaModel:()=>r.LlamaModel,LlamaPreTrainedModel:()=>r.LlamaPreTrainedModel,LlamaTokenizer:()=>n.LlamaTokenizer,LlavaForConditionalGeneration:()=>r.LlavaForConditionalGeneration,LlavaOnevisionForConditionalGeneration:()=>r.LlavaOnevisionForConditionalGeneration,LlavaOnevisionImageProcessor:()=>A.LlavaOnevisionImageProcessor,LlavaPreTrainedModel:()=>r.LlavaPreTrainedModel,LlavaProcessor:()=>f.LlavaProcessor,LlavaQwen2ForCausalLM:()=>r.LlavaQwen2ForCausalLM,LogitsProcessor:()=>w.LogitsProcessor,LogitsProcessorList:()=>w.LogitsProcessorList,LogitsWarper:()=>w.LogitsWarper,LongT5ForConditionalGeneration:()=>r.LongT5ForConditionalGeneration,LongT5Model:()=>r.LongT5Model,LongT5PreTrainedModel:()=>r.LongT5PreTrainedModel,M2M100ForConditionalGeneration:()=>r.M2M100ForConditionalGeneration,M2M100Model:()=>r.M2M100Model,M2M100PreTrainedModel:()=>r.M2M100PreTrainedModel,M2M100Tokenizer:()=>n.M2M100Tokenizer,MBart50Tokenizer:()=>n.MBart50Tokenizer,MBartForCausalLM:()=>r.MBartForCausalLM,MBartForConditionalGeneration:()=>r.MBartForConditionalGeneration,MBartForSequenceClassification:()=>r.MBartForSequenceClassification,MBartModel:()=>r.MBartModel,MBartPreTrainedModel:()=>r.MBartPreTrainedModel,MBartTokenizer:()=>n.MBartTokenizer,MPNetForMaskedLM:()=>r.MPNetForMaskedLM,MPNetForQuestionAnswering:()=>r.MPNetForQuestionAnswering,MPNetForSequenceClassification:()=>r.MPNetForSequenceClassification,MPNetForTokenClassification:()=>r.MPNetForTokenClassification,MPNetModel:()=>r.MPNetModel,MPNetPreTrainedModel:()=>r.MPNetPreTrainedModel,MPNetTokenizer:()=>
2845n.MPNetTokenizer,MT5ForConditionalGeneration:()=>r.MT5ForConditionalGeneration,MT5Model:()=>r.MT5Model,MT5PreTrainedModel:()=>r.MT5PreTrainedModel,MarianMTModel:()=>r.MarianMTModel,MarianModel:()=>r.MarianModel,MarianPreTrainedModel:()=>r.MarianPreTrainedModel,MarianTokenizer:()=>n.MarianTokenizer,Mask2FormerImageProcessor:()=>A.Mask2FormerImageProcessor,MaskFormerFeatureExtractor:()=>A.MaskFormerFeatureExtractor,MaskFormerForInstanceSegmentation:()=>r.MaskFormerForInstanceSegmentation,MaskFormerImageProcessor:()=>A.MaskFormerImageProcessor,MaskFormerModel:()=>r.MaskFormerModel,MaskFormerPreTrainedModel:()=>r.MaskFormerPreTrainedModel,MaskedLMOutput:()=>r.MaskedLMOutput,MaxLengthCriteria:()=>_.MaxLengthCriteria,Metric3DForDepthEstimation:()=>r.Metric3DForDepthEstimation,Metric3DPreTrainedModel:()=>r.Metric3DPreTrainedModel,Metric3Dv2ForDepthEstimation:()=>r.Metric3Dv2ForDepthEstimation,Metric3Dv2PreTrainedModel:()=>r.Metric3Dv2PreTrainedModel,MgpstrForSceneTextRecognition:()=>r.MgpstrForSceneTextRecognition,MgpstrModelOutput:()=>r.MgpstrModelOutput,MgpstrPreTrainedModel:()=>r.MgpstrPreTrainedModel,MgpstrProcessor:()=>f.MgpstrProcessor,MgpstrTokenizer:()=>n.MgpstrTokenizer,MimiDecoderModel:()=>r.MimiDecoderModel,MimiDecoderOutput:()=>r.MimiDecoderOutput,MimiEncoderModel:()=>r.MimiEncoderModel,MimiEncoderOutput:()=>r.MimiEncoderOutput,MimiModel:()=>r.MimiModel,MimiPreTrainedModel:()=>r.MimiPreTrainedModel,MinLengthLogitsProcessor:()=>w.MinLengthLogitsProcessor,MinNewTokensLengthLogitsProcessor:()=>w.MinNewTokensLengthLogitsProcessor,Ministral3ForCausalLM:()=>r.Ministral3ForCausalLM,Ministral3Model:()=>r.Ministral3Model,Ministral3PreTrainedModel:()=>r.Ministral3PreTrainedModel,MinistralForCausalLM:()=>r.MinistralForCausalLM,MinistralModel:()=>r.MinistralModel,MinistralPreTrainedModel:()=>r.MinistralPreTrainedModel,Mistral3ForConditionalGeneration:()=>r.Mistral3ForConditionalGeneration,MistralForCausalLM:()=>r.MistralForCausalLM,MistralModel:()=>r.MistralModel,MistralPreTrainedModel:()=>r.MistralPreTrainedModel,MobileBertForMaskedLM:()=>r.MobileBertForMaskedLM,MobileBertForQuestionAnswering:()=>r.MobileBertForQuestionAnswering,MobileBertForSequenceClassification:()=>r.MobileBertForSequenceClassification,MobileBertModel:()=>r.MobileBertModel,MobileBertPreTrainedModel:()=>r.MobileBertPreTrainedModel,MobileBertTokenizer:()=>n.MobileBertTokenizer,MobileLLMForCausalLM:()=>r.MobileLLMForCausalLM,MobileLLMModel:()=>r.MobileLLMModel,MobileLLMPreTrainedModel:()=>r.MobileLLMPreTrainedModel,MobileNetV1FeatureExtractor:()=>A.MobileNetV1FeatureExtractor,MobileNetV1ForImageClassification:()=>r.MobileNetV1ForImageClassification,MobileNetV1ForSemanticSegmentation:()=>r.MobileNetV1ForSemanticSegmentation,MobileNetV1ImageProcessor:()=>A.MobileNetV1ImageProcessor,MobileNetV1Model:()=>r.MobileNetV1Model,MobileNetV1PreTrainedModel:()=>r.MobileNetV1PreTrainedModel,MobileNetV2FeatureExtractor:()=>A.MobileNetV2FeatureExtractor,MobileNetV2ForImageClassification:()=>r.MobileNetV2ForImageClassification,MobileNetV2ForSemanticSegmentation:()=>r.MobileNetV2ForSemanticSegmentation,MobileNetV2ImageProcessor:()=>A.MobileNetV2ImageProcessor,MobileNetV2Model:()=>r.MobileNetV2Model,MobileNetV2PreTrainedModel:()=>r.MobileNetV2PreTrainedModel,MobileNetV3FeatureExtractor:()=>A.MobileNetV3FeatureExtractor,MobileNetV3ForImageClassification:()=>r.MobileNetV3ForImageClassification,MobileNetV3ForSemanticSegmentation:()=>r.MobileNetV3ForSemanticSegmentation,MobileNetV3ImageProcessor:()=>A.MobileNetV3ImageProcessor,MobileNetV3Model:()=>r.MobileNetV3Model,MobileNetV3PreTrainedModel:()=>r.MobileNetV3PreTrainedModel,MobileNetV4FeatureExtractor:()=>A.MobileNetV4FeatureExtractor,MobileNetV4ForImageClassification:()=>r.MobileNetV4ForImageClassification,MobileNetV4ForSemanticSegmentation:()=>r.MobileNetV4ForSemanticSegmentation,MobileNetV4ImageProcessor:()=>A.MobileNetV4ImageProcessor,MobileNetV4Model:()=>r.MobileNetV4Model,MobileNetV4PreTrainedModel:()=>r.MobileNetV4PreTrainedModel,MobileViTFeatureExtractor:()=>A.MobileViTFeatureExtractor,MobileViTForImageClassification:()=>r.MobileViTForImageClassification,MobileViTImageProcessor:()=>A.MobileViTImageProcessor,MobileViTModel:()=>r.MobileViTModel,MobileViTPreTrainedModel:()=>r.MobileViTPreTrainedModel,MobileViTV2ForImageClassification:()=>r.MobileViTV2ForImageClassification,MobileViTV2Model:()=>r.MobileViTV2Model,MobileViTV2PreTrainedModel:()=>r.MobileViTV2PreTrainedModel,ModelOutput:()=>r.ModelOutput,ModernBertDecoderForCausalLM:()=>r.ModernBertDecoderForCausalLM,ModernBertDecoderModel:()=>r.ModernBertDecoderModel,ModernBertDecoderPreTrainedModel:()=>r.ModernBertDecoderPreTrainedModel,ModernBertForMaskedLM:()=>r.ModernBertForMaskedLM,ModernBertForSequenceClassification:()=>r.ModernBertForSequenceClassification,ModernBertForTokenClassification:()=>r.ModernBertForTokenClassification,ModernBertModel:()=>r.ModernBertModel,ModernBertPreTrainedModel:()=>r.ModernBertPreTrainedModel,Moondream1ForConditionalGeneration:()=>r.Moondream1ForConditionalGeneration,MoonshineFeatureExtractor:()=>d.MoonshineFeatureExtractor,MoonshineForConditionalGeneration:()=>r.MoonshineForConditionalGeneration,MoonshineModel:()=>r.MoonshineModel,MoonshinePreTrainedModel:()=>r.MoonshinePreTrainedModel,MoonshineProcessor:()=>f.MoonshineProcessor,MptForCausalLM:()=>r.MptForCausalLM,MptModel:()=>r.MptModel,MptPreTrainedModel:()=>
2845r.MptPreTrainedModel,MultiModalityCausalLM:()=>r.MultiModalityCausalLM,MultiModalityPreTrainedModel:()=>r.MultiModalityPreTrainedModel,MusicgenForCausalLM:()=>r.MusicgenForCausalLM,MusicgenForConditionalGeneration:()=>r.MusicgenForConditionalGeneration,MusicgenModel:()=>r.MusicgenModel,MusicgenPreTrainedModel:()=>r.MusicgenPreTrainedModel,NanoChatForCausalLM:()=>r.NanoChatForCausalLM,NanoChatModel:()=>r.NanoChatModel,NanoChatPreTrainedModel:()=>r.NanoChatPreTrainedModel,NeoBertForMaskedLM:()=>r.NeoBertForMaskedLM,NeoBertForQuestionAnswering:()=>r.NeoBertForQuestionAnswering,NeoBertForSequenceClassification:()=>r.NeoBertForSequenceClassification,NeoBertForTokenClassification:()=>r.NeoBertForTokenClassification,NeoBertModel:()=>r.NeoBertModel,NeoBertPreTrainedModel:()=>r.NeoBertPreTrainedModel,NllbTokenizer:()=>n.NllbTokenizer,NoBadWordsLogitsProcessor:()=>w.NoBadWordsLogitsProcessor,NoRepeatNGramLogitsProcessor:()=>w.NoRepeatNGramLogitsProcessor,NomicBertModel:()=>r.NomicBertModel,NomicBertPreTrainedModel:()=>r.NomicBertPreTrainedModel,NougatImageProcessor:()=>A.NougatImageProcessor,NougatTokenizer:()=>n.NougatTokenizer,OPTForCausalLM:()=>r.OPTForCausalLM,OPTModel:()=>r.OPTModel,OPTPreTrainedModel:()=>r.OPTPreTrainedModel,ObjectDetectionPipeline:()=>t.ObjectDetectionPipeline,Olmo2ForCausalLM:()=>r.Olmo2ForCausalLM,Olmo2Model:()=>r.Olmo2Model,Olmo2PreTrainedModel:()=>r.Olmo2PreTrainedModel,OlmoForCausalLM:()=>r.OlmoForCausalLM,OlmoModel:()=>r.OlmoModel,OlmoPreTrainedModel:()=>r.OlmoPreTrainedModel,OpenELMForCausalLM:()=>r.OpenELMForCausalLM,OpenELMModel:()=>r.OpenELMModel,OpenELMPreTrainedModel:()=>r.OpenELMPreTrainedModel,OwlViTFeatureExtractor:()=>A.OwlViTFeatureExtractor,OwlViTForObjectDetection:()=>r.OwlViTForObjectDetection,OwlViTImageProcessor:()=>A.OwlViTImageProcessor,OwlViTModel:()=>r.OwlViTModel,OwlViTPreTrainedModel:()=>r.OwlViTPreTrainedModel,OwlViTProcessor:()=>f.OwlViTProcessor,Owlv2ForObjectDetection:()=>r.Owlv2ForObjectDetection,Owlv2ImageProcessor:()=>A.Owlv2ImageProcessor,Owlv2Model:()=>r.Owlv2Model,Owlv2PreTrainedModel:()=>r.Owlv2PreTrainedModel,PaliGemmaForConditionalGeneration:()=>r.PaliGemmaForConditionalGeneration,PaliGemmaPreTrainedModel:()=>r.PaliGemmaPreTrainedModel,PaliGemmaProcessor:()=>f.PaliGemmaProcessor,ParakeetFeatureExtractor:()=>d.ParakeetFeatureExtractor,ParakeetForCTC:()=>r.ParakeetForCTC,ParakeetPreTrainedModel:()=>r.ParakeetPreTrainedModel,PatchTSMixerForPrediction:()=>r.PatchTSMixerForPrediction,PatchTSMixerModel:()=>r.PatchTSMixerModel,PatchTSMixerPreTrainedModel:()=>r.PatchTSMixerPreTrainedModel,PatchTSTForPrediction:()=>r.PatchTSTForPrediction,PatchTSTModel:()=>r.PatchTSTModel,PatchTSTPreTrainedModel:()=>r.PatchTSTPreTrainedModel,Phi3ForCausalLM:()=>r.Phi3ForCausalLM,Phi3Model:()=>r.Phi3Model,Phi3PreTrainedModel:()=>r.Phi3PreTrainedModel,Phi3VForCausalLM:()=>r.Phi3VForCausalLM,Phi3VImageProcessor:()=>A.Phi3VImageProcessor,Phi3VPreTrainedModel:()=>r.Phi3VPreTrainedModel,Phi3VProcessor:()=>f.Phi3VProcessor,PhiForCausalLM:()=>r.PhiForCausalLM,PhiModel:()=>r.PhiModel,PhiPreTrainedModel:()=>r.PhiPreTrainedModel,Pipeline:()=>t.Pipeline,PixtralImageProcessor:()=>A.PixtralImageProcessor,PixtralProcessor:()=>f.PixtralProcessor,PreTrainedModel:()=>r.PreTrainedModel,PreTrainedTokenizer:()=>n.PreTrainedTokenizer,PretrainedConfig:()=>s.PretrainedConfig,PretrainedMixin:()=>r.PretrainedMixin,Processor:()=>B.Processor,PvtForImageClassification:()=>r.PvtForImageClassification,PvtImageProcessor:()=>A.PvtImageProcessor,PvtModel:()=>r.PvtModel,PvtPreTrainedModel:()=>r.PvtPreTrainedModel,PyAnnoteFeatureExtractor:()=>d.PyAnnoteFeatureExtractor,PyAnnoteForAudioFrameClassification:()=>r.PyAnnoteForAudioFrameClassification,PyAnnoteModel:()=>r.PyAnnoteModel,PyAnnotePreTrainedModel:()=>r.PyAnnotePreTrainedModel,PyAnnoteProcessor:()=>f.PyAnnoteProcessor,QuestionAnsweringModelOutput:()=>r.QuestionAnsweringModelOutput,QuestionAnsweringPipeline:()=>t.QuestionAnsweringPipeline,Qwen2ForCausalLM:()=>r.Qwen2ForCausalLM,Qwen2Model:()=>r.Qwen2Model,Qwen2PreTrainedModel:()=>r.Qwen2PreTrainedModel,Qwen2Tokenizer:()=>n.Qwen2Tokenizer,Qwen2VLForConditionalGeneration:()=>r.Qwen2VLForConditionalGeneration,Qwen2VLImageProcessor:()=>A.Qwen2VLImageProcessor,Qwen2VLPreTrainedModel:()=>r.Qwen2VLPreTrainedModel,Qwen2VLProcessor:()=>f.Qwen2VLProcessor,Qwen3ForCausalLM:()=>r.Qwen3ForCausalLM,Qwen3Model:()=>r.Qwen3Model,Qwen3PreTrainedModel:()=>r.Qwen3PreTrainedModel,RFDetrForObjectDetection:()=>r.RFDetrForObjectDetection,RFDetrModel:()=>r.RFDetrModel,RFDetrObjectDetectionOutput:()=>r.RFDetrObjectDetectionOutput,RFDetrPreTrainedModel:()=>r.RFDetrPreTrainedModel,RTDetrForObjectDetection:()=>r.RTDetrForObjectDetection,RTDetrImageProcessor:()=>A.RTDetrImageProcessor,RTDetrModel:()=>r.RTDetrModel,RTDetrObjectDetectionOutput:()=>r.RTDetrObjectDetectionOutput,RTDetrPreTrainedModel:()=>
2845r.RTDetrPreTrainedModel,RTDetrV2ForObjectDetection:()=>r.RTDetrV2ForObjectDetection,RTDetrV2Model:()=>r.RTDetrV2Model,RTDetrV2ObjectDetectionOutput:()=>r.RTDetrV2ObjectDetectionOutput,RTDetrV2PreTrainedModel:()=>r.RTDetrV2PreTrainedModel,RawAudio:()=>a.RawAudio,RawImage:()=>i.RawImage,RawVideo:()=>o.RawVideo,RawVideoFrame:()=>o.RawVideoFrame,RepetitionPenaltyLogitsProcessor:()=>w.RepetitionPenaltyLogitsProcessor,ResNetForImageClassification:()=>r.ResNetForImageClassification,ResNetModel:()=>r.ResNetModel,ResNetPreTrainedModel:()=>r.ResNetPreTrainedModel,RoFormerForMaskedLM:()=>r.RoFormerForMaskedLM,RoFormerForQuestionAnswering:()=>r.RoFormerForQuestionAnswering,RoFormerForSequenceClassification:()=>r.RoFormerForSequenceClassification,RoFormerForTokenClassification:()=>r.RoFormerForTokenClassification,RoFormerModel:()=>r.RoFormerModel,RoFormerPreTrainedModel:()=>r.RoFormerPreTrainedModel,RoFormerTokenizer:()=>n.RoFormerTokenizer,RobertaForMaskedLM:()=>r.RobertaForMaskedLM,RobertaForQuestionAnswering:()=>r.RobertaForQuestionAnswering,RobertaForSequenceClassification:()=>
2845r.RobertaForSequenceClassification,RobertaForTokenClassification:()=>r.RobertaForTokenClassification,RobertaModel:()=>r.RobertaModel,RobertaPreTrainedModel:()=>r.RobertaPreTrainedModel,RobertaTokenizer:()=>n.RobertaTokenizer,Sam2ImageProcessor:()=>A.Sam2ImageProcessor,Sam2ImageSegmentationOutput:()=>r.Sam2ImageSegmentationOutput,Sam2Model:()=>r.Sam2Model,Sam2PreTrainedModel:()=>r.Sam2PreTrainedModel,Sam2Processor:()=>f.Sam2Processor,Sam2VideoProcessor:()=>f.Sam2VideoProcessor,Sam3ImageProcessor:()=>A.Sam3ImageProcessor,Sam3TrackerModel:()=>r.Sam3TrackerModel,SamImageProcessor:()=>A.SamImageProcessor,SamImageSegmentationOutput:()=>r.SamImageSegmentationOutput,SamModel:()=>r.SamModel,SamPreTrainedModel:()=>r.SamPreTrainedModel,SamProcessor:()=>f.SamProcessor,SapiensForDepthEstimation:()=>r.SapiensForDepthEstimation,SapiensForNormalEstimation:()=>r.SapiensForNormalEstimation,SapiensForSemanticSegmentation:()=>r.SapiensForSemanticSegmentation,SapiensPreTrainedModel:()=>r.SapiensPreTrainedModel,SeamlessM4TFeatureExtractor:()=>d.SeamlessM4TFeatureExtractor,SegformerFeatureExtractor:()=>A.SegformerFeatureExtractor,SegformerForImageClassification:()=>r.SegformerForImageClassification,SegformerForSemanticSegmentation:()=>r.SegformerForSemanticSegmentation,SegformerImageProcessor:()=>A.SegformerImageProcessor,SegformerModel:()=>r.SegformerModel,SegformerPreTrainedModel:()=>r.SegformerPreTrainedModel,Seq2SeqLMOutput:()=>r.Seq2SeqLMOutput,SequenceClassifierOutput:()=>r.SequenceClassifierOutput,SiglipImageProcessor:()=>A.SiglipImageProcessor,SiglipModel:()=>r.SiglipModel,SiglipPreTrainedModel:()=>r.SiglipPreTrainedModel,SiglipTextModel:()=>r.SiglipTextModel,SiglipTokenizer:()=>n.SiglipTokenizer,SiglipVisionModel:()=>r.SiglipVisionModel,SmolLM3ForCausalLM:()=>r.SmolLM3ForCausalLM,SmolLM3Model:()=>r.SmolLM3Model,SmolLM3PreTrainedModel:()=>r.SmolLM3PreTrainedModel,SmolVLMForConditionalGeneration:()=>r.SmolVLMForConditionalGeneration,SmolVLMImageProcessor:()=>A.SmolVLMImageProcessor,SmolVLMProcessor:()=>f.SmolVLMProcessor,SnacDecoderModel:()=>r.SnacDecoderModel,SnacEncoderModel:()=>r.SnacEncoderModel,SnacFeatureExtractor:()=>d.SnacFeatureExtractor,SnacModel:()=>r.SnacModel,SnacPreTrainedModel:()=>r.SnacPreTrainedModel,SpeechT5FeatureExtractor:()=>d.SpeechT5FeatureExtractor,SpeechT5ForSpeechToText:()=>r.SpeechT5ForSpeechToText,SpeechT5ForTextToSpeech:()=>r.SpeechT5ForTextToSpeech,SpeechT5HifiGan:()=>r.SpeechT5HifiGan,SpeechT5Model:()=>r.SpeechT5Model,SpeechT5PreTrainedModel:()=>r.SpeechT5PreTrainedModel,SpeechT5Processor:()=>f.SpeechT5Processor,SpeechT5Tokenizer:()=>n.SpeechT5Tokenizer,SqueezeBertForMaskedLM:()=>r.SqueezeBertForMaskedLM,SqueezeBertForQuestionAnswering:()=>r.SqueezeBertForQuestionAnswering,SqueezeBertForSequenceClassification:()=>r.SqueezeBertForSequenceClassification,SqueezeBertModel:()=>r.SqueezeBertModel,SqueezeBertPreTrainedModel:()=>r.SqueezeBertPreTrainedModel,SqueezeBertTokenizer:()=>n.SqueezeBertTokenizer,StableLmForCausalLM:()=>r.StableLmForCausalLM,StableLmModel:()=>r.StableLmModel,StableLmPreTrainedModel:()=>r.StableLmPreTrainedModel,Starcoder2ForCausalLM:()=>r.Starcoder2ForCausalLM,Starcoder2Model:()=>r.Starcoder2Model,Starcoder2PreTrainedModel:()=>r.Starcoder2PreTrainedModel,StoppingCriteria:()=>_.StoppingCriteria,StoppingCriteriaList:()=>_.StoppingCriteriaList,StyleTextToSpeech2Model:()=>r.StyleTextToSpeech2Model,StyleTextToSpeech2PreTrainedModel:()=>r.StyleTextToSpeech2PreTrainedModel,SummarizationPipeline:()=>t.SummarizationPipeline,SupertonicForConditionalGeneration:()=>r.SupertonicForConditionalGeneration,SupertonicPreTrainedModel:()=>r.SupertonicPreTrainedModel,SuppressTokensAtBeginLogitsProcessor:()=>w.SuppressTokensAtBeginLogitsProcessor,Swin2SRForImageSuperResolution:()=>r.Swin2SRForImageSuperResolution,Swin2SRImageProcessor:()=>A.Swin2SRImageProcessor,Swin2SRModel:()=>r.Swin2SRModel,Swin2SRPreTrainedModel:()=>r.Swin2SRPreTrainedModel,SwinForImageClassification:()=>r.SwinForImageClassification,SwinForSemanticSegmentation:()=>r.SwinForSemanticSegmentation,SwinModel:()=>r.SwinModel,SwinPreTrainedModel:()=>r.SwinPreTrainedModel,T5ForConditionalGeneration:()=>r.T5ForConditionalGeneration,T5Model:()=>r.T5Model,T5PreTrainedModel:()=>r.T5PreTrainedModel,T5Tokenizer:()=>n.T5Tokenizer,TableTransformerForObjectDetection:()=>r.TableTransformerForObjectDetection,TableTransformerModel:()=>r.TableTransformerModel,TableTransformerObjectDetectionOutput:()=>r.TableTransformerObjectDetectionOutput,TableTransformerPreTrainedModel:()=>r.TableTransformerPreTrainedModel,TemperatureLogitsWarper:()=>w.TemperatureLogitsWarper,Tensor:()=>l.Tensor,Text2TextGenerationPipeline:()=>t.Text2TextGenerationPipeline,TextClassificationPipeline:()=>t.TextClassificationPipeline,TextGenerationPipeline:()=>t.TextGenerationPipeline,TextStreamer:()=>P.TextStreamer,TextToAudioPipeline:()=>t.TextToAudioPipeline,TokenClassificationPipeline:()=>t.TokenClassificationPipeline,TokenClassifierOutput:()=>r.TokenClassifierOutput,TokenizerModel:()=>n.TokenizerModel,TopKLogitsWarper:()=>w.TopKLogitsWarper,TopPLogitsWarper:()=>w.TopPLogitsWarper,TrOCRForCausalLM:()=>r.TrOCRForCausalLM,TrOCRPreTrainedModel:()=>r.TrOCRPreTrainedModel,TranslationPipeline:()=>t.TranslationPipeline,UltravoxModel:()=>r.UltravoxModel,UltravoxPreTrainedModel:()=>r.UltravoxPreTrainedModel,UltravoxProcessor:()=>f.UltravoxProcessor,UniSpeechForCTC:()=>r.UniSpeechForCTC,UniSpeechForSequenceClassification:()=>r.UniSpeechForSequenceClassification,UniSpeechModel:()=>r.UniSpeechModel,UniSpeechPreTrainedModel:()=>r.UniSpeechPreTrainedModel,UniSpeechSatForAudioFrameClassification:()=>r.UniSpeechSatForAudioFrameClassification,UniSpeechSatForCTC:()=>r.UniSpeechSatForCTC,UniSpeechSatForSequenceClassification:()=>r.UniSpeechSatForSequenceClassification,UniSpeechSatModel:()=>r.UniSpeechSatModel,UniSpeechSatPreTrainedModel:()=>r.UniSpeechSatPreTrainedModel,VLChatProcessor:()=>f.VLChatProcessor,VLMImageProcessor:()=>
2845A.VLMImageProcessor,VaultGemmaForCausalLM:()=>r.VaultGemmaForCausalLM,VaultGemmaModel:()=>r.VaultGemmaModel,VaultGemmaPreTrainedModel:()=>r.VaultGemmaPreTrainedModel,ViTFeatureExtractor:()=>A.ViTFeatureExtractor,ViTForImageClassification:()=>r.ViTForImageClassification,ViTImageProcessor:()=>A.ViTImageProcessor,ViTMAEModel:()=>r.ViTMAEModel,ViTMAEPreTrainedModel:()=>r.ViTMAEPreTrainedModel,ViTMSNForImageClassification:()=>r.ViTMSNForImageClassification,ViTMSNModel:()=>r.ViTMSNModel,ViTMSNPreTrainedModel:()=>r.ViTMSNPreTrainedModel,ViTModel:()=>r.ViTModel,ViTPreTrainedModel:()=>r.ViTPreTrainedModel,VisionEncoderDecoderModel:()=>r.VisionEncoderDecoderModel,VitMatteForImageMatting:()=>r.VitMatteForImageMatting,VitMatteImageProcessor:()=>A.VitMatteImageProcessor,VitMattePreTrainedModel:()=>r.VitMattePreTrainedModel,VitPoseForPoseEstimation:()=>r.VitPoseForPoseEstimation,VitPoseImageProcessor:()=>A.VitPoseImageProcessor,VitPosePreTrainedModel:()=>r.VitPosePreTrainedModel,VitsModel:()=>r.VitsModel,VitsModelOutput:()=>r.VitsModelOutput,VitsPreTrainedModel:()=>r.VitsPreTrainedModel,VitsTokenizer:()=>n.VitsTokenizer,VoxtralForConditionalGeneration:()=>r.VoxtralForConditionalGeneration,VoxtralProcessor:()=>f.VoxtralProcessor,Wav2Vec2BertForCTC:()=>r.Wav2Vec2BertForCTC,Wav2Vec2BertForSequenceClassification:()=>r.Wav2Vec2BertForSequenceClassification,Wav2Vec2BertModel:()=>r.Wav2Vec2BertModel,Wav2Vec2BertPreTrainedModel:()=>r.Wav2Vec2BertPreTrainedModel,Wav2Vec2CTCTokenizer:()=>n.Wav2Vec2CTCTokenizer,Wav2Vec2FeatureExtractor:()=>d.Wav2Vec2FeatureExtractor,Wav2Vec2ForAudioFrameClassification:()=>r.Wav2Vec2ForAudioFrameClassification,Wav2Vec2ForCTC:()=>r.Wav2Vec2ForCTC,Wav2Vec2ForSequenceClassification:()=>r.Wav2Vec2ForSequenceClassification,Wav2Vec2Model:()=>r.Wav2Vec2Model,Wav2Vec2PreTrainedModel:()=>r.Wav2Vec2PreTrainedModel,Wav2Vec2Processor:()=>f.Wav2Vec2Processor,Wav2Vec2ProcessorWithLM:()=>f.Wav2Vec2ProcessorWithLM,WavLMForAudioFrameClassification:()=>r.WavLMForAudioFrameClassification,WavLMForCTC:()=>r.WavLMForCTC,WavLMForSequenceClassification:()=>r.WavLMForSequenceClassification,WavLMForXVector:()=>r.WavLMForXVector,WavLMModel:()=>r.WavLMModel,WavLMPreTrainedModel:()=>r.WavLMPreTrainedModel,WeSpeakerFeatureExtractor:()=>d.WeSpeakerFeatureExtractor,WeSpeakerResNetModel:()=>r.WeSpeakerResNetModel,WeSpeakerResNetPreTrainedModel:()=>r.WeSpeakerResNetPreTrainedModel,WhisperFeatureExtractor:()=>d.WhisperFeatureExtractor,WhisperForConditionalGeneration:()=>r.WhisperForConditionalGeneration,WhisperModel:()=>r.WhisperModel,WhisperPreTrainedModel:()=>r.WhisperPreTrainedModel,WhisperProcessor:()=>f.WhisperProcessor,WhisperTextStreamer:()=>P.WhisperTextStreamer,WhisperTimeStampLogitsProcessor:()=>w.WhisperTimeStampLogitsProcessor,WhisperTokenizer:()=>n.WhisperTokenizer,XLMForQuestionAnswering:()=>r.XLMForQuestionAnswering,XLMForSequenceClassification:()=>r.XLMForSequenceClassification,XLMForTokenClassification:()=>r.XLMForTokenClassification,XLMModel:()=>r.XLMModel,XLMPreTrainedModel:()=>r.XLMPreTrainedModel,XLMRobertaForMaskedLM:()=>r.XLMRobertaForMaskedLM,XLMRobertaForQuestionAnswering:()=>r.XLMRobertaForQuestionAnswering,XLMRobertaForSequenceClassification:()=>r.XLMRobertaForSequenceClassification,XLMRobertaForTokenClassification:()=>r.XLMRobertaForTokenClassification,XLMRobertaModel:()=>r.XLMRobertaModel,XLMRobertaPreTrainedModel:()=>r.XLMRobertaPreTrainedModel,XLMRobertaTokenizer:()=>n.XLMRobertaTokenizer,XLMTokenizer:()=>n.XLMTokenizer,XLMWithLMHeadModel:()=>r.XLMWithLMHeadModel,XVectorOutput:()=>r.XVectorOutput,YolosFeatureExtractor:()=>A.YolosFeatureExtractor,YolosForObjectDetection:()=>r.YolosForObjectDetection,YolosImageProcessor:()=>A.YolosImageProcessor,YolosModel:()=>r.YolosModel,YolosObjectDetectionOutput:()=>r.YolosObjectDetectionOutput,YolosPreTrainedModel:()=>r.YolosPreTrainedModel,ZeroShotAudioClassificationPipeline:()=>t.ZeroShotAudioClassificationPipeline,ZeroShotClassificationPipeline:()=>t.ZeroShotClassificationPipeline,ZeroShotImageClassificationPipeline:()=>t.ZeroShotImageClassificationPipeline,ZeroShotObjectDetectionPipeline:()=>t.ZeroShotObjectDetectionPipeline,bankers_round:()=>u.bankers_round,cat:()=>l.cat,cos_sim:()=>u.cos_sim,dot:()=>u.dot,dynamic_time_warping:()=>u.dynamic_time_warping,env:()=>e.env,full:()=>l.full,full_like:()=>l.full_like,getCacheShapes:()=>s.getCacheShapes,hamming:()=>a.hamming,hanning:()=>a.hanning,interpolate:()=>l.interpolate,interpolate_4d:()=>l.interpolate_4d,interpolate_data:()=>u.interpolate_data,is_chinese_char:()=>n.is_chinese_char,layer_norm:()=>l.layer_norm,load_image:()=>i.load_image,load_video:()=>o.load_video,log_softmax:()=>u.log_softmax,magnitude:()=>u.magnitude,matmul:()=>l.matmul,max:()=>u.max,mean:()=>l.mean,mean_pooling:()=>l.mean_pooling,medianFilter:()=>u.medianFilter,mel_filter_bank:()=>a.mel_filter_bank,min:()=>u.min,ones:()=>l.ones,ones_like:()=>l.ones_like,permute:()=>l.permute,permute_data:()=>u.permute_data,pipeline:()=>t.pipeline,quantize_embeddings:()=>l.quantize_embeddings,rand:()=>l.rand,randn:()=>l.randn,read_audio:()=>a.read_audio,rfft:()=>l.rfft,round:()=>u.round,slice:()=>l.slice,softmax:()=>u.softmax,spectrogram:()=>a.spectrogram,stack:()=>l.stack,std_mean:()=>l.std_mean,topk:()=>l.topk,window_function:()=>a.window_function,zeros:()=>l.zeros,zeros_like:()=>l.zeros_like});var e=Pr("./src/env.js"),t=Pr("./src/pipelines.js"),r=Pr("./src/models.js"),n=Pr("./src/tokenizers.js"),s=Pr("./src/configs.js"),a=Pr("./src/utils/audio.js"),i=Pr("./src/utils/image.js"),o=Pr("./src/utils/video.js"),l=Pr("./src/utils/tensor.js"),u=Pr("./src/utils/maths.js"),p=Pr("./src/base/feature_extraction_utils.js"),d=Pr("./src/models/feature_extractors.js"),
2845c=Pr("./src/models/auto/feature_extraction_auto.js"),g=Pr("./src/base/image_processors_utils.js"),A=Pr("./src/models/image_processors.js"),m=Pr("./src/models/auto/image_processing_auto.js"),B=Pr("./src/base/processing_utils.js"),f=Pr("./src/models/processors.js"),h=Pr("./src/models/auto/processing_auto.js"),P=Pr("./src/generation/streamers.js"),_=Pr("./src/generation/stopping_criteria.js"),w=Pr("./src/generation/logits_process.js")})(),E.ASTFeatureExtractor,E.ASTForAudioClassification,E.ASTModel,E.ASTPreTrainedModel,E.AlbertForMaskedLM,E.AlbertForQuestionAnswering,E.AlbertForSequenceClassification,E.AlbertModel,E.AlbertPreTrainedModel,E.AlbertTokenizer,E.ArceeForCausalLM,E.ArceeModel,E.ArceePreTrainedModel,E.AudioClassificationPipeline,E.AutoConfig,E.AutoFeatureExtractor,E.AutoImageProcessor,E.AutoModel,E.AutoModelForAudioClassification,E.AutoModelForAudioFrameClassification,E.AutoModelForAudioTextToText,E.AutoModelForCTC,E.AutoModelForCausalLM,E.AutoModelForDepthEstimation,E.AutoModelForDocumentQuestionAnswering,E.AutoModelForImageClassification,E.AutoModelForImageFeatureExtraction,E.AutoModelForImageMatting,E.AutoModelForImageSegmentation,E.AutoModelForImageTextToText,E.AutoModelForImageToImage,E.AutoModelForMaskGeneration,E.AutoModelForMaskedLM,E.AutoModelForNormalEstimation,E.AutoModelForObjectDetection,E.AutoModelForPoseEstimation,E.AutoModelForQuestionAnswering,E.AutoModelForSemanticSegmentation,E.AutoModelForSeq2SeqLM,E.AutoModelForSequenceClassification,E.AutoModelForSpeechSeq2Seq,E.AutoModelForTextToSpectrogram,E.AutoModelForTextToWaveform,E.AutoModelForTokenClassification,E.AutoModelForUniversalSegmentation,E.AutoModelForVision2Seq,E.AutoModelForXVector,E.AutoModelForZeroShotObjectDetection;var B4=E.AutoProcessor;E.AutoTokenizer,E.AutomaticSpeechRecognitionPipeline,E.BackgroundRemovalPipeline,E.BartForConditionalGeneration,E.BartForSequenceClassification,E.BartModel,E.BartPretrainedModel,E.BartTokenizer,E.BaseModelOutput,E.BaseStreamer,E.BeitFeatureExtractor,E.BeitForImageClassification,E.BeitModel,E.BeitPreTrainedModel,E.BertForMaskedLM,E.BertForQuestionAnswering,E.BertForSequenceClassification,E.BertForTokenClassification,E.BertModel,E.BertPreTrainedModel,E.BertTokenizer,E.BitImageProcessor,E.BlenderbotForConditionalGeneration,E.BlenderbotModel,E.BlenderbotPreTrainedModel,E.BlenderbotSmallForConditionalGeneration,E.BlenderbotSmallModel,E.BlenderbotSmallPreTrainedModel,E.BlenderbotSmallTokenizer,E.BlenderbotTokenizer,E.BloomForCausalLM,E.BloomModel,E.BloomPreTrainedModel,E.BloomTokenizer,E.CLIPFeatureExtractor,E.CLIPImageProcessor,E.CLIPModel,E.CLIPPreTrainedModel,E.CLIPSegForImageSegmentation,E.CLIPSegModel,E.CLIPSegPreTrainedModel,E.CLIPTextModel,E.CLIPTextModelWithProjection,E.CLIPTokenizer,E.CLIPVisionModel,E.CLIPVisionModelWithProjection,E.CamembertForMaskedLM,E.CamembertForQuestionAnswering,E.CamembertForSequenceClassification,E.CamembertForTokenClassification,E.CamembertModel,E.CamembertPreTrainedModel,E.CamembertTokenizer,E.CausalLMOutput,E.CausalLMOutputWithPast,E.ChineseCLIPFeatureExtractor,E.ChineseCLIPModel,E.ChineseCLIPPreTrainedModel,E.ClapAudioModelWithProjection,E.ClapFeatureExtractor,E.ClapModel,E.ClapPreTrainedModel,E.ClapTextModelWithProjection,E.ClassifierFreeGuidanceLogitsProcessor,E.CodeGenForCausalLM,E.CodeGenModel,E.CodeGenPreTrainedModel,E.CodeGenTokenizer,E.CodeLlamaTokenizer,E.CohereForCausalLM,E.CohereModel,E.CoherePreTrainedModel,E.CohereTokenizer,E.ConvBertForMaskedLM,E.ConvBertForQuestionAnswering,E.ConvBertForSequenceClassification,E.ConvBertForTokenClassification,E.ConvBertModel,E.ConvBertPreTrainedModel,E.ConvBertTokenizer,E.ConvNextFeatureExtractor,E.ConvNextForImageClassification,E.ConvNextImageProcessor,E.ConvNextModel,E.ConvNextPreTrainedModel,E.ConvNextV2ForImageClassification,E.ConvNextV2Model,E.ConvNextV2PreTrainedModel,E.DFineForObjectDetection,E.DFineModel,E.DFinePreTrainedModel,E.DINOv3ConvNextModel,E.DINOv3ConvNextPreTrainedModel,E.DINOv3ViTImageProcessor,E.DINOv3ViTModel,E.DINOv3ViTPreTrainedModel,E.DPTFeatureExtractor,E.DPTForDepthEstimation,E.DPTImageProcessor,E.DPTModel,
2845E.DPTPreTrainedModel,E.DacDecoderModel,E.DacDecoderOutput,E.DacEncoderModel,E.DacEncoderOutput,E.DacFeatureExtractor,E.DacModel,E.DacPreTrainedModel,E.DataTypeMap,E.DebertaForMaskedLM,E.DebertaForQuestionAnswering,E.DebertaForSequenceClassification,E.DebertaForTokenClassification,E.DebertaModel,E.DebertaPreTrainedModel,E.DebertaTokenizer,E.DebertaV2ForMaskedLM,E.DebertaV2ForQuestionAnswering,E.DebertaV2ForSequenceClassification,E.DebertaV2ForTokenClassification,E.DebertaV2Model,E.DebertaV2PreTrainedModel,E.DebertaV2Tokenizer,E.DecisionTransformerModel,E.DecisionTransformerPreTrainedModel,E.DeiTFeatureExtractor,E.DeiTForImageClassification,E.DeiTImageProcessor,E.DeiTModel,E.DeiTPreTrainedModel,E.DepthAnythingForDepthEstimation,E.DepthAnythingPreTrainedModel,E.DepthEstimationPipeline,E.DepthProForDepthEstimation,E.DepthProPreTrainedModel,E.DetrFeatureExtractor,E.DetrForObjectDetection,E.DetrForSegmentation,E.DetrImageProcessor,E.DetrModel,E.DetrObjectDetectionOutput,E.DetrPreTrainedModel,E.DetrSegmentationOutput,E.Dinov2ForImageClassification,E.Dinov2Model,E.Dinov2PreTrainedModel,E.Dinov2WithRegistersForImageClassification,E.Dinov2WithRegistersModel,E.Dinov2WithRegistersPreTrainedModel,E.DistilBertForMaskedLM,E.DistilBertForQuestionAnswering,E.DistilBertForSequenceClassification,E.DistilBertForTokenClassification,E.DistilBertModel,E.DistilBertPreTrainedModel,E.DistilBertTokenizer,E.DocumentQuestionAnsweringPipeline,E.DonutFeatureExtractor,E.DonutImageProcessor,E.DonutSwinModel,E.DonutSwinPreTrainedModel,E.EdgeTamModel,E.EfficientNetForImageClassification,E.EfficientNetImageProcessor,E.EfficientNetModel,E.EfficientNetPreTrainedModel,E.ElectraForMaskedLM,E.ElectraF
2845orQuestionAnswering,E.ElectraForSequenceClassification,E.ElectraForTokenClassification,E.ElectraModel,E.ElectraPreTrainedModel,E.ElectraTokenizer,E.EncodecFeatureExtractor,E.EosTokenCriteria,E.Ernie4_5ForCausalLM,E.Ernie4_5Model,E.Ernie4_5PreTrainedModel,E.EsmForMaskedLM,E.EsmForSequenceClassification,E.EsmForTokenClassification,E.EsmModel,E.EsmPreTrainedModel,E.EsmTokenizer,E.ExaoneForCausalLM,E.ExaoneModel,E.ExaonePreTrainedModel,E.FFT,E.FalconForCausalLM,E.FalconModel,E.FalconPreTrainedModel,E.FalconTokenizer,E.FastViTForImageClassification,E.FastViTModel,E.FastViTPreTrainedModel,E.FeatureExtractionPipeline,E.FeatureExtractor,E.FillMaskPipeline,E.Florence2ForConditionalGeneration,E.Florence2PreTrainedModel,E.Florence2Processor,E.ForcedBOSTokenLogitsProcessor,E.ForcedEOSTokenLogitsProcessor,E.GLPNFeatureExtractor,E.GLPNForDepthEstimation,E.GLPNModel,E.GLPNPreTrainedModel,E.GPT2LMHeadModel,E.GPT2Model,E.GPT2PreTrainedModel,E.GPT2Tokenizer,E.GPTBigCodeForCausalLM,E.GPTBigCodeModel,E.GPTBigCodePreTrainedModel,E.GPTJForCausalLM,E.GPTJModel,E.GPTJPreTrainedModel,E.GPTNeoForCausalLM,E.GPTNeoModel,E.GPTNeoPreTrainedModel,E.GPTNeoXForCausalLM,E.GPTNeoXModel,E.GPTNeoXPreTrainedModel,E.GPTNeoXTokenizer,E.Gemma2ForCausalLM,E.Gemma2Model,E.Gemma2PreTrainedModel,E.Gemma3ForCausalLM,E.Gemma3Model,E.Gemma3PreTrainedModel,E.Gemma3nAudioFeatureExtractor,E.Gemma3nForConditionalGeneration,E.Gemma3nPreTrainedModel,E.Gemma3nProcessor,E.GemmaForCausalLM,E.GemmaModel,E.GemmaPreTrainedModel,E.GemmaTokenizer,E.GlmForCausalLM,E.GlmModel,E.GlmPreTrainedModel,E.GraniteForCausalLM,E.GraniteModel,E.GraniteMoeHybridForCausalLM,E.GraniteMoeHybridModel,E.GraniteMoeHybridPreTrainedModel,E.GranitePreTrainedModel,E.Grok1Tokenizer,E.GroundingDinoForObjectDetection,E.GroundingDinoImageProcessor,E.GroundingDinoPreTrainedModel,E.GroundingDinoProcessor,E.GroupViTModel,E.GroupViTPreTrainedModel,E.HeliumForCausalLM,E.HeliumModel,E.HeliumPreTrainedModel,E.HerbertTokenizer,E.HieraForImageClassification,E.HieraModel,E.HieraPreTrainedModel,E.HubertForCTC,E.HubertForSequenceClassification,E.HubertModel,E.HubertPreTrainedModel,E.IJepaForImageClassification,E.IJepaModel,E.IJepaPreTrainedModel,E.Idefics3ForConditionalGeneration,E.Idefics3ImageProcessor,E.Idefics3PreTrainedModel,E.Idefics3Processor,E.ImageClassificationPipeline,E.ImageFeatureExtractionPipeline,E.ImageFeatureExtractor,E.ImageMattingOutput,E.ImageProcessor,E.ImageSegmentationPipeline,E.ImageToImagePipeline,E.ImageToTextPipeline,E.InterruptableStoppingCriteria,E.JAISLMHeadModel,E.JAISModel,E.JAISPreTrainedModel,E.JinaCLIPImageProcessor,E.JinaCLIPModel,E.JinaCLIPPreTrainedModel,E.JinaCLIPProcessor,E.JinaCLIPTextModel,E.JinaCLIPVisionModel,E.Lfm2ForCausalLM,E.Lfm2Model,E.Lfm2PreTrainedModel,E.LiteWhisperForConditionalGeneration,E.Llama4ForCausalLM,E.Llama4PreTrainedModel,E.LlamaForCausalLM,E.LlamaModel,E.LlamaPreTrainedModel,E.LlamaTokenizer,E.LlavaForConditionalGeneration,E.LlavaOnevisionForConditionalGeneration,E.LlavaOnevisionImageProcessor,E.LlavaPreTrainedModel,E.LlavaProcessor,E.LlavaQwen2ForCausalLM,E.LogitsProcessor,E.LogitsProcessorList,E.LogitsWarper,E.LongT5ForConditionalGeneration,E.LongT5Model,E.LongT5PreTrainedModel,E.M2M100ForConditionalGeneration,E.M2M100Model,E.M2M100PreTrainedModel,E.M2M100Tokenizer,E.MBart50Tokenizer,E.MBartForCausalLM,E.MBartForConditionalGeneration,E.MBartForSequenceClassification,E.MBartModel,E.MBartPreTrainedModel,E.MBartTokenizer,E.MPNetForMaskedLM,E.MPNetForQuestionAnswering,E.MPNetForSequenceClassification,E.MPNetForTokenClassification,E.MPNetModel,E.MPNetPreTrainedModel,E.MPNetTokenizer,E.MT5ForConditionalGeneration,E.MT5Model,E.MT5PreTrainedModel,E.MarianMTModel,E.MarianModel,E.MarianPreTrainedModel,E.MarianTokenizer,E.Mask2FormerImageProcessor,E.MaskFormerFeatureExtractor,E.MaskFormerForInstanceSegmentation,E.MaskFormerImageProcessor,E.MaskFormerModel,E.MaskFormerPreTrainedModel,E.MaskedLMOutput,E.MaxLengthCriteria,E.Metric3DForDepthEstimation,E.Metric3DPreTrainedModel,E.Metric3Dv2ForDepthEstimation,E.Metric3Dv2PreTrainedModel,E.MgpstrForSceneTextRecognition,E.MgpstrModelOutput,E.MgpstrPreTrainedModel,E.MgpstrProcessor,E.MgpstrTokenizer,E.MimiDecoderModel,E.MimiDecoderOutput,E.MimiEncoderModel,E.MimiEncoderOutput,E.MimiModel,E.MimiPreTrainedModel,E.MinLengthLogitsProcessor,E.MinNewTokensLengthLogitsProcessor,E.Ministral3ForCausalLM,E.Ministral3Model,E.Ministral3PreTrainedModel,E.MinistralForCausalLM,E.MinistralModel,E.MinistralPreTrainedModel,E.Mistral3ForConditionalGeneration,E.MistralForCausalLM,E.MistralModel,E.MistralPreTrainedModel,E.MobileBertForMaskedLM,E.MobileBertForQuestionAnswering,E.MobileBertForSequenceClassification,E.MobileBertModel,E.MobileBertPreTrainedModel,E.MobileBertTokenizer,E.MobileLLMForCausalLM,E.MobileLLMModel,E.MobileLLMPreTrainedModel,E.MobileNetV1FeatureExtractor,
2845E.MobileNetV1ForImageClassification,E.MobileNetV1ForSemanticSegmentation,E.MobileNetV1ImageProcessor,E.MobileNetV1Model,E.MobileNetV1PreTrainedModel,E.MobileNetV2FeatureExtractor,E.MobileNetV2ForImageClassification,E.MobileNetV2ForSemanticSegmentation,E.MobileNetV2ImageProcessor,E.MobileNetV2Model,E.MobileNetV2PreTrainedModel,E.MobileNetV3FeatureExtractor,E.MobileNetV3ForImageClassification,E.MobileNetV3ForSemanticSegmentation,E.MobileNetV3ImageProcessor,E.MobileNetV3Model,E.MobileNetV3PreTrainedModel,E.MobileNetV4FeatureExtractor,E.MobileNetV4ForImageClassification,E.MobileNetV4ForSemanticSegmentation,E.MobileNetV4ImageProcessor,E.MobileNetV4Model,E.MobileNetV4PreTrainedModel,E.MobileViTFeatureExtractor,E.MobileViTForImageClassification,E.MobileViTImageProcessor,E.MobileViTModel,E.MobileViTPreTrainedModel,E.MobileViTV2ForImageClassification,E.MobileViTV2Model,E.MobileViTV2PreTrainedModel,E.ModelOutput,E.ModernBertDecoderForCausalLM,E.ModernBertDecoderModel,E.ModernBertDecoderPreTrainedModel,E.ModernBertForMaskedLM,E.ModernBertForSequenceClassification,E.ModernBertForTokenClassification,E.ModernBertModel,E.ModernBertPreTrainedModel,E.Moondream1ForConditionalGeneration,E.MoonshineFeatureExtractor,E.MoonshineForConditionalGeneration,E.MoonshineModel,E.MoonshinePreTrainedModel,E.MoonshineProcessor,E.MptForCausalLM,E.MptModel,E.MptPreTrainedModel,E.MultiModalityCausalLM,E.MultiModalityPreTrainedModel,E.MusicgenForCausalLM,E.MusicgenForConditionalGeneration,E.MusicgenModel,E.MusicgenPreTrainedModel,E.NanoChatForCausalLM,E.NanoChatModel,E.NanoChatPreTrainedModel,E.NeoBertForMaskedLM,E.NeoBertForQuestionAnswering,E.NeoBertForSequenceClassification,E.NeoBertForTokenClassification,E.NeoBertModel,E.NeoBertPreTrainedModel,E.NllbTokenizer,E.NoBadWordsLogitsProcessor,E.NoRepeatNGramLogitsProcessor,E.NomicBertModel,E.NomicBertPreTrainedModel,E.NougatImageProcessor,E.NougatTokenizer,E.OPTForCausalLM,E.OPTModel,E.OPTPreTrainedModel,E.ObjectDetectionPipeline,E.Olmo2ForCausalLM,E.Olmo2Model,E.Olmo2PreTrainedModel,E.OlmoForCausalLM,E.OlmoModel,E.OlmoPreTrainedModel,E.OpenELMForCausalLM,E.OpenELMModel,E.OpenELMPreTrainedModel,E.OwlViTFeatureExtractor,E.OwlViTForObjectDetection,E.OwlViTImageProcessor,E.OwlViTModel,E.OwlViTPreTrainedModel,E.OwlViTProcessor,E.Owlv2ForObjectDetection,E.Owlv2ImageProcessor,E.Owlv2Model,E.Owlv2PreTrainedModel,E.PaliGemmaForConditionalGeneration,E.PaliGemmaPreTrainedModel,E.PaliGemmaProcessor,E.ParakeetFeatureExtractor,E.ParakeetForCTC,E.ParakeetPreTrainedModel,E.PatchTSMixerForPrediction,E.PatchTSMixerModel,E.PatchTSMixerPreTrainedModel,E.PatchTSTForPrediction,E.PatchTSTModel,E.PatchTSTPreTrainedModel,E.Phi3ForCausalLM,E.Phi3Model,E.Phi3PreTrainedModel,E.Phi3VForCausalLM,E.Phi3VImageProcessor,E.Phi3VPreTrainedModel,E.Phi3VProcessor,E.PhiForCausalLM,E.PhiModel,E.PhiPreTrainedModel,E.Pipeline,E.PixtralImageProcessor,E.PixtralProcessor,E.PreTrainedModel,E.PreTrainedTokenizer,E.PretrainedConfig,E.PretrainedMixin,E.Processor,E.PvtForImageClassification,E.PvtImageProcessor,E.PvtModel,E.PvtPreTrainedModel,E.PyAnnoteFeatureExtractor,E.PyAnnoteForAudioFrameClassification,E.PyAnnoteModel,E.PyAnnotePreTrainedModel,E.PyAnnoteProcessor,E.QuestionAnsweringModelOutput,E.QuestionAnsweringPipeline,E.Qwen2ForCausalLM,E.Qwen2Model,E.Qwen2PreTrainedModel,E.Qwen2Tokenizer,E.Qwen2VLForConditionalGeneration,E.Qwen2VLImageProcessor,E.Qwen2VLPreTrainedModel,E.Qwen2VLProcessor,E.Qwen3ForCausalLM,E.Qwen3Model,E.Qwen3PreTrainedModel,E.RFDetrForObjectDetection,E.RFDetrModel,E.RFDetrObjectDetectionOutput,E.RFDetrPreTrainedModel,E.RTDetrForObjectDetection,E.RTDetrImageProcessor,E.RTDetrModel,E.RTDetrObjectDetectionOutput,E.RTDetrPreTrainedModel,E.RTDetrV2ForObjectDetection,E.RTDetrV2Model,E.RTDetrV2ObjectDetectionOutput,E.RTDetrV2PreTrainedModel,E.RawAudio;var ga=E.RawImage;E.RawVideo,E.RawVideoFrame,E.RepetitionPenaltyLogitsProcessor,E.ResNetForImageClassification,E.ResNetModel,E.ResNetPreTrainedModel,E.RoFormerForMaskedLM,E.RoFormerForQuestionAnswering,E.RoFormerForSequenceClassification,E.RoFormerForTokenClassification,E.RoFormerModel,E.RoFormerPreTrainedModel,E.RoFormerTokenizer,E.RobertaF
2845orMaskedLM,E.RobertaForQuestionAnswering,E.RobertaForSequenceClassification,E.RobertaForTokenClassification,E.RobertaModel,E.RobertaPreTrainedModel,E.RobertaTokenizer,E.Sam2ImageProcessor,E.Sam2ImageSegmentationOutput,E.Sam2Model,E.Sam2PreTrainedModel,E.Sam2Processor,E.Sam2VideoProcessor,E.Sam3ImageProcessor,E.Sam3TrackerModel,E.SamImageProcessor,E.SamImageSegmentationOutput;var x4=E.SamModel;E.SamPreTrainedModel,E.SamProcessor,E.SapiensForDepthEstimation,E.SapiensForNormalEstimation,E.SapiensForSemanticSegmentation,E.SapiensPreTrainedModel,E.SeamlessM4TFeatureExtractor,E.SegformerFeatureExtractor,E.SegformerForImageClassification,E.SegformerForSemanticSegmentation,E.SegformerImageProcessor,E.SegformerModel,E.SegformerPreTrainedModel,E.Seq2SeqLMOutput,E.SequenceClassifierOutput,E.SiglipImageProcessor,E.SiglipModel,E.SiglipPreTrainedModel,E.SiglipTextModel,E.SiglipTokenizer,E.SiglipVisionModel,E.SmolLM3ForCausalLM,E.SmolLM3Model,E.SmolLM3PreTrainedModel,E.SmolVLMForConditionalGeneration,E.SmolVLMImageProcessor,E.SmolVLMProcessor,E.SnacDecoderModel,E.SnacEncoderModel,E.SnacFeatureExtractor,E.SnacModel,E.SnacPreTrainedModel,E.SpeechT5FeatureExtractor,E.SpeechT5ForSpeechToText,E.SpeechT5ForTextToSpeech,E.SpeechT5HifiGan,E.SpeechT5Model,E.SpeechT5PreTrainedModel,E.SpeechT5Processor,E.SpeechT5Tokenizer,E.SqueezeBertForMaskedLM,E.SqueezeBertForQuestionAnswering,E.SqueezeBertForSequenceClassification,E.SqueezeBertModel,E.SqueezeBertPreTrainedModel,E.SqueezeBertTokenizer,E.StableLmForCausalLM,E.StableLmModel,E.StableLmPreTrainedModel,E.Starcoder2ForCausalLM,E.Starcoder2Model,E.Starcoder2PreTrainedModel,E.StoppingCriteria,E.StoppingCriteriaList,E.StyleTextToSpeech2Model,E.StyleTextToSpeech2PreTrainedModel,E.SummarizationPipeline,E.SupertonicForConditionalGeneration,E.SupertonicPreTrainedModel,E.SuppressTokensAtBeginLogitsProcessor,E.Swin2SRForImageSuperResolution,E.Swin2SRImageProcessor,E.Swin2SRModel,E.Swin2SRPreTrainedModel,E.SwinForImageClassification,E.SwinForSemanticSegmentation,E.SwinModel,E.SwinPreTrainedModel,E.T5ForConditionalGeneration,E.T5Model,E.T5PreTrainedModel,E.T5Tokenizer,E.TableTransformerForObjectDetection,E.TableTransformerModel,E.TableTransformerObjectDetectionOutput,E.TableTransformerPreTrainedModel,E.TemperatureLogitsWarper,E.Tensor,E.Text2TextGenerationPipeline,E.TextClassificationPipeline,E.TextGenerationPipeline,E.TextStreamer,E.TextToAudioPipeline,E.TokenClassificationPipeline,E.TokenClassifierOutput,E.TokenizerModel,E.TopKLogitsWarper,E.TopPLogitsWarper,E.TrOCRForCausalLM,E.TrOCRPreTrainedModel,E.TranslationPipeline,E.UltravoxModel,E.UltravoxPreTrainedModel,E.UltravoxProcessor,E.UniSpeechForCTC,E.UniSpeechForSequenceClassification,E.UniSpeechModel,E.UniSpeechPreTrainedModel,E.UniSpeechSatForAudioFrameClassification,E.UniSpeechSatForCTC,E.UniSpeechSatForSequenceClassification,E.UniSpeechSatModel,E.UniSpeechSatPreTrainedModel,E.VLChatProcessor,E.VLMImageProcessor,E.VaultGemmaForCausalLM,E.VaultGemmaModel,E.VaultGemmaPreTrainedModel,E.ViTFeatureExtractor,E.ViTForImageClassification,E.ViTImageProcessor,E.ViTMAEModel,E.ViTMAEPreTrainedModel,E.ViTMSNForImageClassification,E.ViTMSNModel,E.ViTMSNPreTrainedModel,E.ViTModel,E.ViTPreTrainedModel,E.VisionEncoderDecoderModel,E.VitMatteForImageMatting,E.VitMatteImageProcessor,E.VitMattePreTrainedModel,E.VitPoseForPoseEstimation,E.VitPoseImageProcessor,E.VitPosePreTrainedModel,E.VitsModel,E.VitsModelOutput,E.VitsPreTrainedModel,E.VitsTokenizer,E.VoxtralForConditionalGeneration,E.VoxtralProcessor,E.Wav2Vec2BertForCTC,E.Wav2Vec2BertForSequenceClassification,E.Wav2Vec2BertModel,E.Wav2Vec2BertPreTrainedModel,E.Wav2Vec2CTCTokenizer,E.Wav2Vec2FeatureExtractor,E.Wav2Vec2ForAudioFrameClassification,E.Wav2Vec2ForCTC,E.Wav2Vec2ForSequenceClassification,E.Wav2Vec2Model,E.Wav2Vec2PreTrainedModel,E.Wav2Vec2Processor,E.Wav2Vec2ProcessorWithLM,E.WavLMForAudioFrameClassification,E.WavLMForCTC,E.WavLMForSequenceClassification,E.WavLMForXVector,E.WavLMModel,E.WavLMPreTrainedModel,E.WeSpeakerFeatureExtractor,E.WeSpeakerResNetModel,E.WeSpeakerResNetPreTrainedModel,E.WhisperFeatureExtractor,
2845E.WhisperForConditionalGeneration,E.WhisperModel,E.WhisperPreTrainedModel,E.WhisperProcessor,E.WhisperTextStreamer,E.WhisperTimeStampLogitsProcessor,E.WhisperTokenizer,E.XLMForQuestionAnswering,E.XLMForSequenceClassification,E.XLMForTokenClassification,E.XLMModel,E.XLMPreTrainedModel,E.XLMRobertaForMaskedLM,E.XLMRobertaForQuestionAnswering,E.XLMRobertaForSequenceClassification,E.XLMRobertaForTokenClassification,E.XLMRobertaModel,E.XLMRobertaPreTrainedModel,E.XLMRobertaTokenizer,E.XLMTokenizer,E.XLMWithLMHeadModel,E.XVectorOutput,E.YolosFeatureExtractor,E.YolosForObjectDetection,E.YolosImageProcessor,E.YolosModel,E.YolosObjectDetectionOutput,E.YolosPreTrainedModel,E.ZeroShotAudioClassificationPipeline,E.ZeroShotClassificationPipeline,E.ZeroShotImageClassificationPipeline,E.ZeroShotObjectDetectionPipeline,E.bankers_round,E.cat,E.cos_sim,E.dot,E.dynamic_time_warping;var To=E.env;E.full,E.full_like,E.getCacheShapes,E.hamming,E.hanning,E.interpolate,E.interpolate_4d,E.interpolate_data,E.is_chinese_char,E.layer_norm,E.load_image,E.load_video,E.log_softmax,E.magnitude,E.matmul,E.max,E.mean,E.mean_pooling,E.medianFilter,E.mel_filter_bank,E.min,E.ones,E.ones_like,E.permute,E.permute_data;var yM=E.pipeline;E.quantize_embeddings,E.rand,E.randn,E.read_audio,E.rfft,E.round,E.slice,E.softmax,E.spectrogram,E.stack,E.std_mean,E.topk,E.window_function,E.zeros,E.zeros_like;var qg=Object.defineProperty,E4=Object.getOwnPropertyDescriptor,D4=Object.getOwnPropertyNames,I4=Object.prototype.hasOwnProperty,T4=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),et=(e,t)=>()=>(e&&(t=e(e=0)),t),Co=(e,t)=>{for(var r in t)qg(e,r,{get:t[r],enumerable:!0})},C4=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of D4(t))!I4.call(e,s)&&s!==r&&qg(e,s,{get:()=>t[s],enumerable:!(n=E4(t,s))||n.enumerable});return e},Ol=e=>C4(qg({},"__esModule",{value:!0}),e),Gl,Ka,$o,bM,PM,MM=et(()=>{Gl=new Map,Ka=[],$o=(e,t,r)=>{if(t&&typeof t.init=="function"&&typeof t.createInferenceSessionHandler=="function"){let n=Gl.get(e);if(n===void 0)Gl.set(e,{backend:t,priority:r});else{if(n.priority>r)return;if(n.priority===r&&n.backend!==t)throw new Error(`cannot register backend "${e}" using priority ${r}`)}if(r>=0){let s=Ka.indexOf(e);s!==-1&&Ka.splice(s,1);for(let a=0;a<Ka.length;a++)if(Gl.get(Ka[a]).priority<=r){Ka.splice(a,0,e);return}Ka.push(e)}return}throw new TypeError("not a valid backend")},bM=async e=>{let t=Gl.get(e);if(!t)return"backend not found.";if(t.initialized)return t.backend;if(t.aborted)return t.error;{let r=!!t.initPromise;try{return r||(t.initPromise=t.backend.init(e)),await t.initPromise,t.initialized=!0,t.backend}catch(n){return r||(t.error=`${n}`,t.aborted=!0),t.error}finally{delete t.initPromise}}},PM=async e=>{let t=e.executionProviders||[],r=t.map(l=>typeof l=="string"?l:l.name),n=r.length===0?Ka:r,s,a=[],i=new Set;for(let l of n){let u=await bM(l);typeof u=="string"?a.push({name:l,err:u}):(s||(s=u),s===u&&i.add(l))}if(!s)throw new Error(`no available backend found. ERR: ${a.map(l=>`[${l.name}] ${l.err}`).join(", ")}`);for(let{name:l,err:u}of a)r.includes(l)&&console.warn(`removing requested execution provider "${l}" from session options because it is not available: ${u}`);let o=t.filter(l=>i.has(typeof l=="string"?l:l.name));return[s,new Proxy(e,{get:(l,u)=>u==="executionProviders"?o:Reflect.get(l,u)})]}}),$4=et(()=>{MM()}),vM,S4=et(()=>{vM="1.24.3"}),Xg,$n,BM=et(()=>{S4(),Xg="warning",$n={wasm:{},webgl:{},webgpu:{},versions:{common:vM},set logLevel(e){if(e!==void 0){if(typeof e!="string"||["verbose","info","warning","error","fatal"].indexOf(e)===-1)throw new Error(`Unsupported logging level: ${e}`);Xg=e}},get logLevel(){return Xg}},Object.defineProperty($n,"logLevel",{enumerable:!0})}),Sr,k4=et(()=>{BM(),Sr=$n}),xM,EM,O4=et(()=>{xM=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);
vendor: 8,495 bytes, line 2845
2845r.width=e.dims[3],r.height=e.dims[2];let n=r.getContext("2d");if(n!=null){let s,a;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[3]):(s=e.dims[3],a=e.dims[2]);let i=t?.format!==void 0?t.format:"RGB",o=t?.norm,l,u;o===void 0||o.mean===void 0?l=[255,255,255,255]:typeof o.mean=="number"?l=[o.mean,o.mean,o.mean,o.mean]:(l=[o.mean[0],o.mean[1],o.mean[2],0],o.mean[3]!==void 0&&(l[3]=o.mean[3])),o===void 0||o.bias===void 0?u=[0,0,0,0]:typeof o.bias=="number"?u=[o.bias,o.bias,o.bias,o.bias]:(u=[o.bias[0],o.bias[1],o.bias[2],0],o.bias[3]!==void 0&&(u[3]=o.bias[3]));let p=a*s,d=0,c=p,g=p*2,A=-1;i==="RGBA"?(d=0,c=p,g=p*2,A=p*3):i==="RGB"?(d=0,c=p,g=p*2):i==="RBG"&&(d=0,g=p,c=p*2);for(let m=0;m<a;m++)for(let B=0;B<s;B++){let f=(e.data[d++]-u[0])*l[0],h=(e.data[c++]-u[1])*l[1],P=(e.data[g++]-u[2])*l[2],_=A===-1?255:(e.data[A++]-u[3])*l[3];n.fillStyle="rgba("+f+","+h+","+P+","+_+")",n.fillRect(B,m,1,1)}if("toDataURL"in r)return r.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},EM=(e,t)=>{let r=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),n;if(r!=null){let s,a,i;t?.tensorLayout!==void 0&&t.tensorLayout==="NHWC"?(s=e.dims[2],a=e.dims[1],i=e.dims[3]):(s=e.dims[3],a=e.dims[2],i=e.dims[1]);let o=t!==void 0&&t.format!==void 0?t.format:"RGB",l=t?.norm,u,p;l===void 0||l.mean===void 0?u=[255,255,255,255]:typeof l.mean=="number"?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],255],l.mean[3]!==void 0&&(u[3]=l.mean[3])),l===void 0||l.bias===void 0?p=[0,0,0,0]:typeof l.bias=="number"?p=[l.bias,l.bias,l.bias,l.bias]:(p=[l.bias[0],l.bias[1],l.bias[2],0],l.bias[3]!==void 0&&(p[3]=l.bias[3]));let d=a*s;if(t!==void 0&&(t.format!==void 0&&i===4&&t.format!=="RGBA"||i===3&&t.format!=="RGB"&&t.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let c=4,g=0,A=1,m=2,B=3,f=0,h=d,P=d*2,_=-1;o==="RGBA"?(f=0,h=d,P=d*2,_=d*3):o==="RGB"?(f=0,h=d,P=d*2):o==="RBG"&&(f=0,P=d,h=d*2),n=r.createImageData(s,a);for(let w=0;w<a*s;g+=c,A+=c,m+=c,B+=c,w++)n.data[g]=(e.data[f++]-p[0])*u[0],n.data[A]=(e.data[h++]-p[1])*u[1],n.data[m]=(e.data[P++]-p[2])*u[2],n.data[B]=_===-1?255:(e.data[_++]-p[3])*u[3]}else throw new Error("Can not access image data");return n}}),mc,DM,IM,TM,CM,$M,G4=et(()=>{Jg(),mc=(e,t)=>{if(e===void 0)throw new Error("Image buffer must be defined");if(t.height===void 0||t.width===void 0)throw new Error("Image height and width must be defined");if(t.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:r,width:n}=t,s=t.norm??{mean:255,bias:0},a,i;typeof s.mean=="number"?a=[s.mean,s.mean,s.mean,s.mean]:a=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?i=[s.bias,s.bias,s.bias,s.bias]:i=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let o=t.format!==void 0?t.format:"RGBA",l=t.tensorFormat!==void 0&&t.tensorFormat!==void 0?t.tensorFormat:"RGB",u=r*n,p=l==="RGBA"?new Float32Array(u*4):new Float32Array(u*3),d=4,c=0,g=1,A=2,m=3,B=0,f=u,h=u*2,P=-1;o==="RGB"&&(d=3,c=0,g=1,A=2,m=-1),l==="RGBA"?P=u*3:l==="RBG"?(B=0,h=u,f=u*2):l==="BGR"&&(h=0,f=u,B=u*2);for(let _=0;_<u;_++,c+=d,A+=d,g+=d,m+=d)p[B++]=(e[c]+i[0])/a[0],p[f++]=(e[g]+i[1])/a[1],p[h++]=(e[A]+i[2])/a[2],P!==-1&&m!==-1&&(p[P++]=(e[m]+i[3])/a[3]);return l==="RGBA"?new ss("float32",p,[1,4,r,n]):new ss("float32",p,[1,3,r,n])},DM=async(e,t)=>{let r=typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement,n=typeof ImageData<"u"&&e instanceof ImageData,s=typeof ImageBitmap<"u"&&e instanceof ImageBitmap,a=typeof e=="string",i,o=t??{},l=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},u=p=>typeof HTMLCanvasElement<"u"&&p instanceof HTMLCanvasElement||p instanceof OffscreenCanvas?p.getContext("2d"):null;if(r){let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;if(t!==void 0&&t.resizedHeight!==void 0&&t.resizedWidth!==void 0&&(c=t.resizedHeight,g=t.resizedWidth),t!==void 0){if(o=t,t.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");o.tensorFormat="RGBA",o.height=c,o.width=g}else o.tensorFormat="RGBA",o.height=c,o.width=g;d.drawImage(e,0,0),i=d.getImageData(0,0,g,c).data}else throw new Error("Can not access image data")}else if(n){let p,d;if(t!==void 0&&t.resizedWidth!==void 0&&t.resizedHeight!==void 0?(p=t.resizedHeight,d=t.resizedWidth):(p=e.height,d=e.width),t!==void 0&&(o=t),o.format="RGBA",o.height=p,o.width=d,t!==void 0){let c=l();c.width=d,c.height=p;let g=u(c);if(g!=null)g.putImageData(e,0,0),i=g.getImageData(0,0,d,p).data;else throw new Error("Can not access image data")}else i=e.data}else if(s){if(t===void 0)throw new Error("Please provide image config with format for Imagebitmap");let p=l();p.width=e.width,p.height=e.height;let d=u(p);if(d!=null){let c=e.height,g=e.width;return d.drawImage(e,0,0,g,c),i=d.getImageData(0,0,g,c).data,o.height=c,o.width=g,mc(i,o)}else throw new Error("Can not access image data")}else{if(a)return new Promise((p,d)=>{let c=l(),g=u(c);if(!e||!g)return d();let A=new Image;A.crossOrigin="Anonymous",A.src=e,A.onload=()=>{c.width=A.width,c.height=A.height,g.drawImage(A,0,0,c.width,c.height);let m=g.getImageData(0,0,c.width,c.height);o.height=c.height,o.width=c.width,p(mc(m.data,o))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(i!==void 0)return mc(i,o);throw new Error("Input data provided is not supported - aborted tensor creation")},IM=(e,t)=>{let{width:r,height:n,download:s,dispose:a}=t,i=[1,n,r,4];return new ss({location:"texture",type:"float32",texture:e,dims:i,download:s,dispose:a})},TM=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ss({location:"gpu-buffer",type:r??"float32",gpuBuffer:e,dims:n,download:s,dispose:a})},CM=(e,t)=>{let{dataType:r,dims:n,download:s,dispose:a}=t;return new ss({location:"ml-tensor",type:r??"float32",mlTensor:e,dims:n,download:s,dispose:a})},$M=(e,t,r)=>new ss({location:"cpu-pinned",type:e,data:t,dims:r??[t.length]})}),Yi,zl,Zg,SM,z4=et(()=>{Yi=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),zl=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),Zg=!1,SM=()=>{if(!Zg){Zg=!0;let e=typeof BigInt64Array<"u"&&BigInt64Array.from,t=typeof BigUint64Array<"u"&&BigUint64Array.from,r=globalThis.Float16Array,n=typeof r<"u"&&r.from;e&&(Yi.set("int64",BigInt64Array),zl.set(BigInt64Array,"int64")),t&&(Yi.set("uint64",BigUint64Array),zl.set(BigUint64Array,"uint64")),n?(Yi.set("float16",r),zl.set(r,"float16")):Yi.set("float16",Uint16Array)}}}),kM,OM,F4=et(()=>{Jg(),kM=e=>{let t=1;for(let r=0;r<e.length;r++){let n=e[r];if(typeof n!="number"||!Number.isSafeInteger(n))throw new TypeError(`dims[${r}] must be an integer, got: ${n}`);if(n<0)throw new RangeError(`dims[${r}] must be a non-negative integer, got: ${n}`);t*=n}return t},OM=(e,t)=>{switch(e.location){case"cpu":return new ss(e.type,e.data,t);case"cpu-pinned":return new ss({location:"cpu-pinned",data:e.data,type:e.type,dims:t});case"texture":return new ss({location:"texture",texture:e.texture,type:e.type,dims:t});case"gpu-buffer":return new ss({location:"gpu-buffer",gpuBuffer:e.gpuBuffer,type:e.type,dims:t});case"ml-tensor":return new ss({location:"ml-tensor",mlTensor:e.mlTensor,type:e.type,dims:t});default:throw new Error(`tensorReshape: tensor location ${e.location} is not supported`)}}}),ss,Jg=et(()=>{O4(),G4(),z4(),F4(),ss=class{constructor(e,t,r){SM();let n,s;if(typeof e=="object"&&"location"in e)switch(this.dataLocation=e.location,n=e.type,s=e.dims,e.location){case"cpu-pinned":{let i=Yi.get(n);if(!i)throw new TypeError(`unsupported type "${n}" to create tensor from pinned buffer`);if(!(e.data instanceof i))throw new TypeError(`buffer should be of type ${i.name}`);this.cpuData=e.data;break}case"texture":{if(n!=="float32")throw new TypeError(`unsupported type "${n}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dis
vendor: 2,107 bytes, line 2845
2845pose;break}case"gpu-buffer":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break}case"ml-tensor":{if(n!=="float32"&&n!=="float16"&&n!=="int32"&&n!=="int64"&&n!=="uint32"&&n!=="uint64"&&n!=="int8"&&n!=="uint8"&&n!=="bool"&&n!=="uint4"&&n!=="int4")throw new TypeError(`unsupported type "${n}" to create tensor from MLTensor`);this.mlTensorData=e.mlTensor,this.downloader=e.download,this.disposer=e.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let i,o;if(typeof e=="string")if(n=e,o=r,e==="string"){if(!Array.isArray(t))throw new TypeError("A string tensor's data must be a string array.");i=t}else{let l=Yi.get(e);if(l===void 0)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(t)){if(e==="float16"&&l===Uint16Array||e==="uint4"||e==="int4")throw new TypeError(`Creating a ${e} tensor from number array is not supported. Please use ${l.name} as data.`);e==="uint64"||e==="int64"?i=l.from(t,BigInt):i=l.from(t)}else if(t instanceof l)i=t;else if(t instanceof Uint8ClampedArray)if(e==="uint8")i=Uint8Array.from(t);else throw new TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if(e==="float16"&&t instanceof Uint16Array&&l!==Uint16Array)i=new globalThis.Float16Array(t.buffer,t.byteOffset,t.length);else throw new TypeError(`A ${n} tensor's data must be type of ${l}`)}else if(o=t,Array.isArray(e)){if(e.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let l=typeof e[0];if(l==="string")n="string",i=e;else if(l==="boolean")n="bool",i=Uint8Array.from(e);else throw new TypeError(`Invalid element type of data array: ${l}.`)}else if(e instanceof Uint8ClampedArray)n="uint8",i=Uint8Array.from(e);else{let l=zl.get(e.constructor);if(l===void 0)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);n=l,i=e}
vendor: 6,585 bytes, line 2845
2845if(o===void 0)o=[i.length];else if(!Array.isArray(o))throw new TypeError("A tensor's dims must be a number array");s=o,this.cpuData=i,this.dataLocation="cpu"}let a=kM(s);if(this.cpuData&&a!==this.cpuData.length&&!((n==="uint4"||n==="int4")&&Math.ceil(a/2)===this.cpuData.length))throw new Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=n,this.dims=s,this.size=a}static async fromImage(e,t){return DM(e,t)}static fromTexture(e,t){return IM(e,t)}static fromGpuBuffer(e,t){return TM(e,t)}static fromMLTensor(e,t){return CM(e,t)}static fromPinnedBuffer(e,t,r){return $M(e,t,r)}toDataURL(e){return xM(this,e)}toImageData(e){return EM(this,e)}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(e){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 t=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=t,e&&this.disposer&&(this.disposer(),this.disposer=void 0),t}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(e){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return OM(this,e)}}}),An,GM=et(()=>{Jg(),An=ss}),fc,eA,Aa,js,Ni,ji,zM=et(()=>{BM(),fc=(e,t)=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||console.timeStamp(`${e}::ORT::${t}`)},eA=(e,t)=>{let r=new Error().stack?.split(/\r\n|\r|\n/g)||[],n=!1;for(let s=0;s<r.length;s++){if(n&&!r[s].includes("TRACE_FUNC")){let a=`FUNC_${e}::${r[s].trim().split(" ")[1]}`;t&&(a+=`::${t}`),fc("CPU",a);return}r[s].includes("TRACE_FUNC")&&(n=!0)}},Aa=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||eA("BEGIN",e)},js=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||eA("END",e)},Ni=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||console.time(`ORT::${e}`)},ji=e=>{(typeof $n.trace>"u"?!$n.wasm.trace:!$n.trace)||console.timeEnd(`ORT::${e}`)}}),FM,L4=et(()=>{MM(),GM(),zM(),FM=class LS{constructor(t){this.handler=t}async run(t,r,n){Aa(),Ni("InferenceSession.run");let s={},a={};if(typeof t!="object"||t===null||t instanceof An||Array.isArray(t))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let i=!0;if(typeof r=="object"){if(r===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof An)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(r.length===0)throw new TypeError("'fetches' cannot be an empty array.");i=!1;for(let u of r){if(typeof u!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(u)===-1)throw new RangeError(`'fetches' contains invalid output name: ${u}.`);s[u]=null}if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else{let u=!1,p=Object.getOwnPropertyNames(r);for(let d of this.outputNames)if(p.indexOf(d)!==-1){let c=r[d];(c===null||c instanceof An)&&(u=!0,i=!1,s[d]=c)}if(u){if(typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else a=r}}else if(typeof r<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let u of this.inputNames)if(typeof t[u]>"u")throw new Error(`input '${u}' is missing in 'feeds'.`);if(i)for(let u of this.outputNames)s[u]=null;let o=await this.handler.run(t,s,a),l={};for(let u in o)if(Object.hasOwnProperty.call(o,u)){let p=o[u];p instanceof An?l[u]=p:l[u]=new An(p.type,p.data,p.dims)}return ji("InferenceSession.run"),js(),l}async release(){return this.handler.dispose()}static async create(t,r,n,s){Aa(),Ni("InferenceSession.create");let a,i={};if(typeof t=="string"){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof Uint8Array){if(a=t,typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer){let p=t,d=0,c=t.byteLength;if(typeof r=="object"&&r!==null)i=r;else if(typeof r=="number"){if(d=r,!Number.isSafeInteger(d))throw new RangeError("'byteOffset' must be an integer.");if(d<0||d>=p.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${p.byteLength}).`);if(c=t.byteLength-d,typeof n=="number"){if(c=n,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||d+c>p.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${p.byteLength-d}].`);if(typeof s=="object"&&s!==null)i=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof n<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof r<"u")throw new TypeError("'options' must be an object.");a=new Uint8Array(p,d,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[o,l]=await PM(i),u=await o.createInferenceSessionHandler(a,l);return ji("InferenceSession.create"),js(),new LS(u)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}
vendor: 22,145 bytes, lines 2845-2848
2845get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),So,R4=et(()=>{L4(),So=FM}),Y4=et(()=>{}),N4=et(()=>{}),j4=et(()=>{}),U4=et(()=>{}),W4={};Co(W4,{InferenceSession:()=>So,TRACE:()=>fc,TRACE_EVENT_BEGIN:()=>Ni,TRACE_EVENT_END:()=>ji,TRACE_FUNC_BEGIN:()=>Aa,TRACE_FUNC_END:()=>js,Tensor:()=>An,env:()=>Sr,registerBackend:()=>$o});var ys=et(()=>{$4(),k4(),R4(),GM(),Y4(),N4(),zM(),j4(),U4()}),tA=et(()=>{}),LM={};Co(LM,{default:()=>RM});var rA,nA,RM,V4=et(()=>{yI(),Ui(),uA(),rA="ort-wasm-proxy-worker",nA=globalThis.self?.name===rA,nA&&(self.onmessage=e=>{let{type:t,in:r}=e.data;try{switch(t){case"init-wasm":pA(r.wasm).then(()=>{Mh(r).then(()=>{postMessage({type:t})},n=>{postMessage({type:t,err:n})})},n=>{postMessage({type:t,err:n})});break;case"init-ep":{let{epName:n,env:s}=r;vh(s,n).then(()=>{postMessage({type:t})},a=>{postMessage({type:t,err:a})});break}case"copy-from":{let{buffer:n}=r,s=Gc(n);postMessage({type:t,out:s});break}case"create":{let{model:n,options:s}=r;xh(n,s).then(a=>{postMessage({type:t,out:a})},a=>{postMessage({type:t,err:a})});break}case"release":Eh(r),postMessage({type:t});break;case"run":{let{sessionId:n,inputIndices:s,inputs:a,outputIndices:i,options:o}=r;Ih(n,s,a,i,new Array(i.length).fill(null),o).then(l=>{l.some(u=>u[3]!=="cpu")?postMessage({type:t,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:t,out:l},Ch([...a,...l]))},l=>{postMessage({type:t,err:l})});break}case"end-profiling":Th(r),postMessage({type:t});break;default:}}catch(n){postMessage({type:t,err:n})}}),RM=nA?null:e=>new Worker(e??as,{type:"module",name:rA})}),YM={};Co(YM,{default:()=>jM});async function NM(e={}){var t=e,r=!!globalThis.window,n=!!globalThis.WorkerGlobalScope,s=n&&self.name?.startsWith("em-pthread");t.mountExternalData=(M,T)=>{M.startsWith("./")&&(M=M.substring(2)),(t.Zc||(t.Zc=new Map)).set(M,T)},t.unmountExternalData=()=>{delete t.Zc},globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,ae:!0}).buffer.constructor;let a=M=>async(...T)=>{try{if(t.$c)throw Error("Session already started");let z=t.$c={Nd:T[0],errors:[]},G=await M(...T);if(t.$c!==z)throw Error("Session mismatch");t.gd?.flush();let Z=z.errors;if(0<Z.length){let ue=await Promise.all(Z);if(ue=ue.filter(me=>me),0<ue.length)throw Error(ue.join(`
2846`))}return G}finally{t.$c=null}};t.jsepInit=(M,T)=>{if(M==="webgpu"){[t.gd,t.Dd,t.Hd,t.jd,t.Gd,t.ac,t.Id,t.Kd,t.Ed,t.Fd,t.Jd]=T;let z=t.gd;t.jsepRegisterBuffer=(G,Z,ue,me)=>z.registerBuffer(G,Z,ue,me),t.jsepGetBuffer=G=>z.getBuffer(G),t.jsepCreateDownloader=(G,Z,ue)=>z.createDownloader(G,Z,ue),t.jsepOnCreateSession=G=>{z.onCreateSession(G)},t.jsepOnReleaseSession=G=>{z.onReleaseSession(G)},t.jsepOnRunStart=G=>z.onRunStart(G),t.Ld=(G,Z)=>{z.upload(G,Z)}}else if(M==="webnn"){let z=T[0];[t.Zd,t.vd,t.webnnEnsureTensor,t.xd,t.webnnDownloadTensor,t.Yd,t.webnnEnableTraceEvent]=T.slice(1),t.webnnReleaseTensorId=t.vd,t.webnnUploadTensor=t.xd,t.webnnRegisterMLContext=t.Yd,t.webnnOnRunStart=G=>z.onRunStart(G),t.webnnOnRunEnd=z.onRunEnd.bind(z),t.webnnOnReleaseSession=G=>{z.onReleaseSession(G)},t.webnnCreateMLTensorDownloader=(G,Z)=>z.createMLTensorDownloader(G,Z),t.webnnRegisterMLTensor=(G,Z,ue,me)=>z.registerMLTensor(G,Z,ue,me),t.webnnCreateMLContext=G=>z.createMLContext(G),t.webnnRegisterMLConstant=(G,Z,ue,me,Ge,it)=>z.registerMLConstant(G,Z,ue,me,Ge,t.Zc,it),t.webnnRegisterGraphInput=z.registerGraphInput.bind(z),t.webnnIsGraphInput=z.isGraphInput.bind(z),t.webnnRegisterGraphOutput=z.registerGraphOutput.bind(z),t.webnnIsGraphOutput=z.isGraphOutput.bind(z),t.webnnCreateTemporaryTensor=z.createTemporaryTensor.bind(z),t.webnnIsGraphInputOutputTypeSupported=z.isGraphInputOutputTypeSupported.bind(z)}};let i=()=>{let M=T=>(...z)=>{let G=Ar;return z=T(...z),Ar!=G?new Promise((Z,ue)=>{Wr={resolve:Z,reject:ue}}):z};(()=>{for(let T of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])t[T]=M(t[T])})(),a!==void 0&&(t._OrtRun=a(t._OrtRun),t._OrtRunWithBinding=a(t._OrtRunWithBinding)),i=void 0};t.asyncInit=()=>{i?.()};var o,l,u=(M,T)=>{throw T},p=self.location.href,d="";if(r||n){try{d=new URL(".",p).href}catch{}n&&(l=M=>{var T=new XMLHttpRequest;return T.open("GET",M,!1),T.responseType="arraybuffer",T.send(null),new Uint8Array(T.response)}),o=async M=>{if(v(M))return new Promise((z,G)=>{var Z=new XMLHttpRequest;Z.open("GET",M,!0),Z.responseType="arraybuffer",Z.onload=()=>{Z.status==200||Z.status==0&&Z.response?z(Z.response):G(Z.status)},Z.onerror=G,Z.send(null)});var T=await fetch(M,{credentials:"same-origin"});if(T.ok)return T.arrayBuffer();throw Error(T.status+" : "+T.url)}}var c,g,A,m,B,f,h=console.log.bind(console),P=console.error.bind(console),_=h,w=P,b=!1,v=M=>M.startsWith("file://");function y(){dt.buffer!=k.buffer&&V()}if(s){let M=function(T){try{var z=T.data,G=z.Uc;if(G==="load"){let Z=[];self.onmessage=ue=>Z.push(ue),f=()=>{postMessage({Uc:"loaded"});for(let ue of Z)M(ue);self.onmessage=M};for(let ue of z.Ad)t[ue]&&!t[ue].proxy||(t[ue]=(...me)=>{postMessage({Uc:"callHandler",zd:ue,args:me})},ue=="print"&&(_=t[ue]),ue=="printErr"&&(w=t[ue]));dt=z.Vd,V(),g=z.Wd,fe(),fo()}else if(G==="run"){(function(Z){var ue=(y(),L)[Z+52>>>2>>>0];Z=(y(),L)[Z+56>>>2>>>0],Pi(ue,ue-Z),Ut(ue)})(z.Tc),oa(z.Tc,0,0,1,0,0),Ue(),xe(z.Tc),$||(Ma(),$=!0);try{At(z.Pd,z.dd)}catch(Z){if(Z!="unwind")throw Z}}else z.target!=="setimmediate"&&(G==="checkMailbox"?$&&Fe():G&&(w(`worker: received unknown command ${G}`),w(z)))}catch(Z){throw va(),Z}};var $=!1;self.onunhandledrejection=T=>{throw T.reason||T},self.onmessage=M}var k,W,j,F,R,L,Q,ne,re,ce,ge,q=!1;function V(){var M=dt.buffer;t.HEAP8=k=new Int8Array(M),j=new Int16Array(M),t.HEAPU8=W=new Uint8Array(M),F=new Uint16Array(M),t.HEAP32=R=new Int32Array(M),t.HEAPU32=L=new Uint32Array(M),Q=new Float32Array(M),ne=new Float64Array(M),re=new BigInt64Array(M),ce=new BigUint64Array(M)}function U(){q=!0,s?f():Ss.tb()}function N(M){throw w(M="Aborted("+M+")"),b=!0,M=new WebAssembly.RuntimeError(M+". Build with -sASSERTIONS for more info."),B?.(M),M}function oe(){return{a:{ma:Du,hb:nd,g:yt,J:hr,f:On,o:ma,h:fa,ha:_a,b:Ur,T:mn,Ia:Ms,n:kt,_:Ft,Ya:ds,Ea:S,Ga:ie,Za:X,Wa:ae,Pa:le,Va:_e,ka:Oe,Fa:gt,Ca:Et,Xa:at,Da:Ot,cb:lt,ea:vs,xa:En,va:Zn,da:Bs,O:xs,H:Es,wa:Ke,Z:ye,ya:O,Sa:te,Aa:ct,Ja:pt,ta:st,fa:Xt,Ra:xe,$a:jt,R:gs,s:zn,c:fn,ib:wa,y:Is,M:ao,D:Yo,m:No,t:io,jb:jo,I:ya,S:Uo,j:Wo,v:Vo,r:Qo,l:Ho,Ma:ba,Na:lo,Oa:Ko,Ka:ui,La:ci,ua:uo,eb:di,bb:co,u:pi,aa:go,ga:gi,ab:qo,V:Xo,_a:Zo,Ba:Jo,F:sa,U:el,la:As,za:hi,gb:za,fb:tl,Ta:La,Ua:hs,Ha:ze,$:mi,ja:Ao,Qa:fi,ia:ho,lb:Id,na:vd,mb:Dd,oa:Md,G:fd,d:id,q:ad,w:sd,B:gd,pb:bd,K:hd,x:Tu,pa:zu,X:Bd,ba:yd,nb:Lu,ob:Ed,ra:Ou,qa:Gu,qb:_d,N:ku,Y:Pd,e:od,A:ld,k:Iu,kb:Ru,p:Cu,z:cd,C:ud,E:dd,L:Su,rb:md,Q:Fu,ca:Ad,W:xd,sb:pd,sa:$u,P:wd,i:_i,a:dt,db:Ce}}}async function fe(){function M(G,Z){var ue=Ss=G.exports;G={};for(let[me,Ge]of Object.entries(ue))typeof Ge=="function"?(ue=un(Ge),G[me]=ue):G[me]=Ge;return Ss=G,Ss=(function(){var me=Ss,Ge=mt=>Qt=>mt(Qt)>>>0,it=mt=>()=>mt()>>>0;return(me=Object.assign({},me)).ub=Ge(me.ub),me.Yb=it(me.Yb),me._b=Ge(me._b),me.mc=Ge(me.mc),me.nc=it(me.nc),me.rc=Ge(me.rc),me})(),Be.push(Ss.$b),wi=(G=Ss).ub,Ma=G.vb,t._OrtInit=G.wb,t._OrtGetLastError=G.xb,t._OrtCreateSessionOptions=G.yb,t._OrtAppendExecutionProvider=G.zb,t._OrtAddFreeDimensionOverride=G.Ab,t._OrtAddSessionConfigEntry=G.Bb,t._OrtReleaseSessionOptions=G.Cb,t._OrtCreateSession=G.Db,t._OrtReleaseSession=G.Eb,t._OrtGetInputOutputCount=G.Fb,t._OrtGetInputOutputMetadata=G.Gb,t._OrtFree=G.Hb,t._OrtCreateTensor=G.Ib,t._OrtGetTensorData=G.Jb,t._OrtReleaseTensor=G.Kb,t._OrtCreateRunOptions=G.Lb,t._OrtAddRunConfigEntry=G.Mb,t._OrtReleaseRunOptions=G.Nb,t._OrtCreateBinding=G.Ob,t._OrtBindInput=G.Pb,t._OrtBindOutput=G.Qb,t._OrtClearBoundOutputs=G.Rb,t._OrtReleaseBinding=G.Sb,t._OrtRunWithBinding=G.Tb,t._OrtRun=G.Ub,t._OrtEndProfiling=G.Vb,t._JsepOutput=G.Wb,t._JsepGetNodeName=G.Xb,vt=G.Yb,Kn=t._free=G.Zb,ia=t._malloc=G._b,oa=G.bc,va=G.cc,Vn=G.dc,Ba=G.ec,la=G.fc,yi=G.gc,bi=G.hc,Zt=G.ic,Cs=G.jc,Pi=G.kc,Ut=G.lc,Ra=G.mc,Wt=G.nc,xa=G.oc,Ea=G.pc,Mi=G.qc,Ya=G.rc,vi=G.sc,Na=G.tc,ja=G.uc,x=G.vc,C=G.wc,Y=G.xc,K=G.yc,ee=G.zc,he=G.Ac,Le=G.Bc,Qe=G.Cc,ot=G.Dc,wt=G.Ec,Lt=G.Fc,sr=G.Gc,mr=G.Hc,nn=G.Ic,$s=G.Jc,mo=G.Kc,nl=G.Lc,pu=G.Mc,gu=G.Nc,sl=G.Oc,Au=G.Pc,hu=G.Rc,al=G.Sc,mu=G.bd,fu=G.cd,il=G.hd,_u=G.kd,wu=G.ld,ol=G.md,yu=G.nd,bu=G.od,ll=G.pd,Pu=G.qd,Mu=G.rd,ul=G.wd,vu=G.Rd,Bu=G.Sd,cl=G.Td,xu=G.Ud,g=Z,Ss}var T,z=oe();return t.instantiateWasm?new Promise(G=>{t.instantiateWasm(z,(Z,ue)=>{G(M(Z,ue))})}):s?M(new WebAssembly.Instance(g,oe()),g):(ge??=t.locateFile?t.locateFile?t.locateFile("ort-wasm-simd-threaded.jsep.wasm",d):d+"ort-wasm-simd-threaded.jsep.wasm":new URL("/assets/ort-wasm-simd-threaded.jsep-C887KxcQ.wasm",self.location.href).href,T=await(async function(G){var Z=ge;if(!c&&!v(Z))try{var ue=fetch(Z,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(ue,G)}catch(me){w(`wasm streaming compile failed: ${me}`),w("falling back to ArrayBuffer instantiation")}return(async function(me,Ge){try{var it=await(async function(mt){if(!c)try{var Qt=await o(mt);return new Uint8Array(Qt)}catch{}if(mt==ge&&c)mt=new Uint8Array(c);else{if(!l)throw"both async and sync fetching of the wasm failed";mt=l(mt)}return mt})(me);return await WebAssembly.instantiate(it,Ge)}catch(mt){w(`failed to asynchronously prepare wasm: ${mt}`),N(mt)}})(Z,G)})(z),M(T.instance,T.module))}class De{name="ExitStatus";constructor(T){this.message=`Program terminated with exit(${T})`,this.status=T}}var Ie=M=>{M.terminate(),M.onmessage=()=>{}},je=[],Me=0,se=null,H=M=>{ve.length==0&&(He(),ht(ve[0]));var T=ve.pop();if(!T)return 6;Ve.push(T),ke[M.Tc]=T,T.Tc=M.Tc;var z={Uc:"run",Pd:M.Od,dd:M.dd,Tc:M.Tc};return T.postMessage(z,M.ud),0},we=0,be=(M,T,...z)=>{var G,Z=16*z.length,ue=Wt(),me=Ra(Z),Ge=me>>>3;for(G of z)typeof G=="bigint"?((y(),re)[Ge++>>>0]=1n,(y(),re)[Ge++>>>0]=G):((y(),re)[Ge++>>>0]=0n,(y(),ne)[Ge++>>>0]=G);return M=Vn(M,0,Z,me,T),Ut(ue),M};function Ce(M){if(s)return be(0,1,M);if(A=M,!(0<we)){for(var T of Ve)Ie(T);for(T of ve)Ie(T);ve=[],Ve=[],ke={},b=!0}u(0,new De(M))}function Se(M){if(s)return be(1,0,M);ze(M)}var ze=M=>{if(A=M,s)throw Se(M),"unwind";Ce(M)},ve=[],Ve=[],Be=[],ke={},rt=M=>{var T=M.Tc;delete ke[T],ve.push(M),Ve.splice(Ve.indexOf(M),1),M.Tc=0,Ba(T)};function Ue(){Be.forEach(M=>M())}var ht=M=>new Promise(T=>{M.onmessage=Z=>{var ue=Z.data;if(Z=ue.Uc,ue.ad&&ue.ad!=vt()){var me=ke[ue.ad];me?me.postMessage(ue,ue.ud):w(`Internal error! Worker sent a message "${Z}" to target pthread ${ue.ad}, but that thread no longer exists!`)}else Z==="checkMailbox"?Fe():Z==="spawnThread"?H(ue):Z==="cleanupThread"?de(()=>{rt(ke[ue.Qd])}):Z==="loaded"?(M.loaded=!0,T(M)):ue.target==="setimmediate"?M.postMessage(ue):Z==="uncaughtException"?M.onerror(ue.error):Z==="callHandler"?t[ue.zd](...ue.args):Z&&w(`worker sent an unknown command ${Z}`)},M.onerror=Z=>{throw w(`worker sent an error! ${Z.filename}:${Z.lineno}: ${Z.message}`),Z};var z,G=[];for(z of[])t.propertyIsEnumerable(z)&&G.push(z);M.postMessage({Uc:"load",Ad:G,Vd:dt,Wd:g})});function He(){var M=new Worker((()=>{let T=URL;return self.location.href>"file:"&&self.location.href<"file;"?new T("ort.bundle.min.mjs",self.location.href):new URL(self.location.href)})(),{type:"module",workerData:"em-pthread",name:"em-pthread"});ve.push(M)}var dt,At=(M,T)=>{we=0,M=Na(M,T),0<we?A=M:la(M)},Xe=[],We=0;function yt(M){var T=new hn(M>>>=0);return(y(),k)[T.Vc+12>>>0]==0&&(Vt(T,!0),We--),tn(T,!1),Xe.push(T),Ya(M)}var Mt=0,hr=()=>{Zt(0,0);var M=Xe.pop();xa(M.ed),Mt=0};function Vt(M,T){T=T?1:0,(y(),k)[M.Vc+12>>>0]=T}function tn(M,T){T=T?1:0,(y(),k)[M.Vc+13>>>0]=T}class hn{constructor(T){this.ed=T,this.Vc=T-24}}var ar=M=>{var T=Mt;if(!T)return Cs(0),0;var z=new hn(T);(y(),L)[z.Vc+16>>>2>>>0]=T;var G=(y(),L)[z.Vc+4>>>2>>>0];if(!G)return Cs(0),T;for(var Z of M){if(Z===0||Z===G)break;if(Mi(Z,G,z.Vc+16))return Cs(Z),T}return Cs(G),T};function On(){return ar([])}function ma(M){return ar([M>>>0])}function fa(M,T,z,G){return ar([M>>>0,T>>>0,z>>>0,G>>>0])}var _a=()=>{var M=Xe.pop();M||N("no exception to throw");var T=M.ed;throw(y(),k)[M.Vc+13>>>0]==0&&(Xe.push(M),tn(M,!0),Vt(M,!1),We++),Ea(T),Mt=T};function Ur(M,T,z){var G=new hn(M>>>=0);throw T>>>=0,z>>>=0,(y(),L)[G.Vc+16>>>2>>>0]=0,(y(),L)[G.Vc+4>>>2>>>0]=T,(y(),L)[G.Vc+8>>>2>>>0]=z,Ea(M),We++,Mt=M}var mn=()=>We;function Nn(M,T,z,G){return s?be(2,1,M,T,z,G):Ms(M,T,z,G)}function Ms(M,T,z,G){if(M>>>=0,T>>>=0,z>>>=0,G>>>=0,!globalThis.SharedArrayBuffer)return 6;var Z=[];return s&&Z.length===0?Nn(M,T,z,G):(M={Od:z,Tc:M,dd:G,ud:Z},s?(M.Uc="spawnThread",postMessage(M,Z),0):H(M))}function kt(M){throw Mt||=M>>>0,Mt}var Er=globalThis.TextDecoder&&new TextDecoder,us=(M,T,z,G)=>{if(z=T+z,G)return z;for(;M[T]&&!(T>=z);)++T;return T},cs=(M,T=0,z,G)=>{if(16<(z=us(M,T>>>=0,z,G))-T&&M.buffer&&Er)return Er.decode(M.buffer instanceof ArrayBuffer?M.subarray(T,z):M.slice(T,z));for(G="";T<z;){var Z=M[T++];if(128&Z){var ue=63&M[T++];if((224&Z)==192)G+=String.fromCharCode((31&Z)<<6|ue);else{var me=63&M[T++];65536>(Z=(240&Z)==224?(15&Z)<<12|ue<<6|me:(7&Z)<<18|ue<<12|me<<6|63&M[T++])?G+=String.fromCharCode(Z):(Z-=65536,G+=String.fromCharCode(55296|Z>>10,56320|1023&Z))}}else G+=String.fromCharCode(Z)}return G},pr=(M,T,z)=>(M>>>=0)?cs((y(),W),M,T,z):"";function Ft(M,T,z){return s?be(3,1,M,T,z):0}function ds(M,T){if(s)return be(4,1,M,T)}function S(M,T){if(s)return be(5,1,M,T)}function ie(M,T,z){if(s)return be(6,1,M,T,z)}function X(M,T,z){return s?be(7,1,M,T,z):0}function ae(M,T){if(s)return be(8,1,M,T)}function le(M,T,z){if(s)return be(9,1,M,T,z)}function _e(M,T,z,G){if(s)return be(10,1,M,T,z,G)}function Oe(M,T,z,G){if(s)return be(11,1,M,T,z,G)}function gt(M,T,z,G){if(s)return be(12,1,M,T,z,G)}function Et(M){if(s)return be(13,1,M)}function at(M,T){if(s)return be(14,1,M,T)}function Ot(M,T,z){if(s)return be(15,1,M,T,z)}var lt=()=>N(""),St=M=>{M>>>=0;for(var T="";;){var z=(y(),W)[M++>>>0];if(!z)return T;T+=String.fromCharCode(z)}},rr={},Hr={},kr=class extends Error{constructor(M){super(M),this.name="BindingError"}};function yr(M,T,z={}){return(function(G,Z,ue={}){var me=Z.name;if(!G)throw new kr(`type "${me}" must have a positive integer typeid pointer`);if(Hr.hasOwnProperty(G)){if(ue.Bd)return;throw new kr(`Cannot register type '${me}' twice`)}Hr[G]=Z,rr.hasOwnProperty(G)&&(Z=rr[G],delete rr[G],Z.forEach(Ge=>Ge()))})(M,T,z)}var ln=(M,T,z)=>{switch(T){case 1:return z?G=>(y(),k)[G>>>0]:G=>(y(),W)[G>>>0];case 2:return z?G=>(y(),j)[G>>>1>>>0]:G=>(y(),F)[G>>>1>>>0];case 4:return z?G=>(y(),R)[G>>>2>>>0]:G=>(y(),L)[G>>>2>>>0];case 8:return z?G=>(y(),re)[G>>>3>>>0]:G=>(y(),ce)[G>>>3>>>0];default:throw new TypeError(`invalid integer width (${T}): ${M}`)}};function vs(M,T,z,G,Z){M>>>=0,z>>>=0,T=St(T>>>0);let ue=me=>me;if(G=G===0n){let me=8*z;ue=Ge=>BigInt.asUintN(me,Ge),Z=ue(Z)}yr(M,{name:T,Qc:ue,Xc:(me,Ge)=>(typeof Ge=="number"&&(Ge=BigInt(Ge)),Ge),Wc:ln(T,z,!G),Yc:null})}function En(M,T,z,G){yr(M>>>=0,{name:T=St(T>>>0),Qc:function(Z){return!!Z},Xc:function(Z,ue){return ue?z:G},Wc:function(Z){return this.Qc((y(),W)[Z>>>0])},Yc:null})}var ps=[],Kr=[0,1,,1,null,1,!0,1,!1,1];function fn(M){9<(M>>>=0)&&--Kr[M+1]==0&&(Kr[M]=void 0,ps.push(M))}var qr=M=>{if(!M)throw new kr(`Cannot use deleted val. handle = ${M}`);return Kr[M]},vr=M=>{switch(M){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let T=ps.pop()||Kr.length;return Kr[T]=M,Kr[T+1]=1,T}};function Rr(M){return this.Qc((y(),L)[M>>>2>>>0])}var jn={name:"emscripten::val",Qc:M=>{var T=qr(M);return fn(M),T},Xc:(M,T)=>vr(T),Wc:Rr,Yc:null};function Zn(M){return yr(M>>>0,jn)}var ea=(M,T)=>{switch(T){case 4:return function(z){return this.Qc((y(),Q)[z>>>2>>>0])};case 8:return function(z){return this.Qc((y(),ne)[z>>>3>>>0])};default:throw new TypeError(`invalid float width (${T}): ${M}`)}};function Bs(M,T,z){z>>>=0,yr(M>>>=0,{name:T=St(T>>>0),Qc:G=>G,Xc:(G,Z)=>Z,Wc:ea(T,z),Yc:null})}function xs(M,T,z,G,Z){M>>>=0,z>>>=0,T=St(T>>>0);let ue=Ge=>Ge;if(G===0){var me=32-8*z;ue=Ge=>Ge<<me>>>me,Z=ue(Z)}yr(M,{name:T,Qc:ue,Xc:(Ge,it)=>it,Wc:ln(T,z,G!==0),Yc:null})}function Es(M,T,z){function G(ue){var me=(y(),L)[ue>>>2>>>0];return ue=(y(),L)[ue+4>>>2>>>0],new Z((y(),k).buffer,ue,me)}var Z=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][T];yr(M>>>=0,{name:z=St(z>>>0),Qc:G,Wc:G},{Bd:!0})}var _n=(M,T,z)=>{var G=(y(),W);if(T>>>=0,0<z){var Z=T;z=T+z-1;for(var ue=0;ue<M.length;++ue){var me=M.codePointAt(ue);if(127>=me){if(T>=z)break;G[T++>>>0]=me}else if(2047>=me){if(T+1>=z)break;G[T++>>>0]=192|me>>6,G[T++>>>0]=128|63&me}else if(65535>=me){if(T+2>=z)break;G[T++>>>0]=224|me>>12,G[T++>>>0]=128|me>>6&63,G[T++>>>0]=128|63&me}else{if(T+3>=z)break;G[T++>>>0]=240|me>>18,G[T++>>>0]=128|me>>12&63,G[T++>>>0]=128|me>>6&63,G[T++>>>0]=128|63&me,ue++}}G[T>>>0]=0,M=T-Z}else M=0;return M},wn=M=>{for(var T=0,z=0;z<M.length;++z){var G=M.charCodeAt(z);127>=G?T++:2047>=G?T+=2:55296<=G&&57343>=G?(T+=4,++z):T+=3}return T};function Ke(M,T){yr(M>>>=0,{name:T=St(T>>>0),Qc(z){var G=(y(),L)[z>>>2>>>0];return G=pr(z+4,G,!0),Kn(z),G},Xc(z,G){G instanceof ArrayBuffer&&(G=new Uint8Array(G));var Z=typeof G=="string";if(!(Z||ArrayBuffer.isView(G)&&G.BYTES_PER_ELEMENT==1))throw new kr("Cannot pass non-string to std::string");var ue=Z?wn(G):G.length,me=ia(4+ue+1),Ge=me+4;return(y(),L)[me>>>2>>>0]=ue,Z?_n(G,Ge,ue+1):(y(),W).set(G,Ge>>>0),z!==null&&z.push(Kn,me),me},Wc:Rr,Yc(z){Kn(z)}})}var Ze=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,ft=(M,T,z)=>{if(M>>>=1,16<(T=us((y(),F),M,T/2,z))-M&&Ze)return Ze.decode((y(),F).slice(M,T));for(z="";M<T;++M){var G=(y(),F)[M>>>0];z+=String.fromCharCode(G)}return z},Dr=(M,T,z)=>{if(z??=2147483647,2>z)return 0;var G=T;z=(z-=2)<2*M.length?z/2:M.length;for(var Z=0;Z<z;++Z){var ue=M.charCodeAt(Z);(y(),j)[T>>>1>>>0]=ue,T+=2}return(y(),j)[T>>>1>>>0]=0,T-G},ta=M=>2*M.length,Ds=(M,T,z)=>{var G="";M>>>=2;for(var Z=0;!(Z>=T/4);Z++){var ue=(y(),L)[M+Z>>>0];if(!ue&&!z)break;G+=String.fromCodePoint(ue)}return G},ra=(M,T,z)=>{if(T>>>=0,z??=2147483647,4>z)return 0;var G=T;z=G+z-4;for(var Z=0;Z<M.length;++Z){var ue=M.codePointAt(Z);if(65535<ue&&Z++,(y(),R)[T>>>2>>>0]=ue,(T+=4)+4>z)break}return(y(),R)[T>>>2>>>0]=0,T-G},ii=M=>{for(var T=0,z=0;z<M.length;++z)65535<M.codePointAt(z)&&z++,T+=4;return T};function ye(M,T,z){if(M>>>=0,T>>>=0,z=St(z>>>=0),T===2)var G=ft,Z=Dr,ue=ta;else G=Ds,Z=ra,ue=ii;yr(M,{name:z,Qc:me=>{var Ge=(y(),L)[me>>>2>>>0];return Ge=G(me+4,Ge*T,!0),Kn(me),Ge},Xc:(me,Ge)=>{if(typeof Ge!="string")throw new kr(`Cannot pass non-string to C++ string type ${z}`);var it=ue(Ge),mt=ia(4+it+T);return(y(),L)[mt>>>2>>>0]=it/T,Z(Ge,mt+4,it+T),me!==null&&me.push(Kn,mt),mt},Wc:Rr,Yc(me){Kn(me)}})}function O(M,T){yr(M>>>=0,{Cd:!0,name:T=St(T>>>0),Qc:()=>{},Xc:()=>{}})}function te(M){oa(M>>>0,!n,1,!r,131072,!1),Ue()}var de=M=>{if(!b)try{if(M(),!(0<we))try{s?vt()&&la(A):ze(A)}catch(T){T instanceof De||T=="unwind"||u(0,T)}}catch(T){T instanceof De||T=="unwind"||u(0,T)}},pe=!Atomics.waitAsync||globalThis.navigator?.userAgent&&91>Number((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)||[])[2]);function xe(M){M>>>=0,pe||(Atomics.waitAsync((y(),R),M>>>2,M).value.then(Fe),M+=128,Atomics.store((y(),R),M>>>2,1))}var Fe=()=>de(()=>{var M=vt();M&&(xe(M),bi())});function ct(M,T){(M>>>=0)==T>>>0?setTimeout(Fe):s?postMessage({ad:M,Uc:"checkMailbox"}):(M=ke[M])&&M.postMessage({Uc:"checkMailbox"})}var ut=[];function pt(M,T,z,G,Z){for(T>>>=0,Z>>>=0,ut.length=0,z=Z>>>3,G=Z+G>>>3;z<G;){var ue;ue=(y(),re)[z++>>>0]?(y(),re)[z++>>>0]:(y(),ne)[z++>>>0],ut.push(ue)}return(T?dl[T]:Eu[M])(...ut)}var st=()=>{we=0};function Xt(M){M>>>=0,s?postMessage({Uc:"cleanupThread",Qd:M}):rt(ke[M])}function jt(M){}var Or=M=>{try{M()}catch(T){N(T)}};function un(M){var T=(...z)=>{Dn.push(M);try{return M(...z)}finally{b||(Dn.pop(),Ar&&gr===1&&Dn.length===0&&(gr=0,we+=1,Or(Bu),typeof Fibers<"u"&&Fibers.ce()))}};return Jn.set(M,T),T}var gr=0,Ar=null,Br=0,Dn=[],Un=new Map,cn=new Map,Jn=new Map,Yr=0,Wr=null,yn=[],Wn=M=>(function(T){if(!b){if(gr===0){var z=!1,G=!1;T((Z=0)=>{if(!b&&(Br=Z,z=!0,G)){gr=2,Or(()=>cl(Ar)),typeof MainLoop<"u"&&MainLoop.yd&&MainLoop.resume(),Z=!1;try{var ue=(function(){var it=(y(),R)[Ar+8>>>2>>>0];return it=cn.get(it),it=Jn.get(it),--we,it()})()}catch(it){ue=it,Z=!0}var me=!1;if(!Ar){var Ge=Wr;Ge&&(Wr=null,(Z?Ge.reject:Ge.resolve)(ue),me=!0)}if(Z&&!me)throw ue}}),G=!0,z||(gr=1,Ar=(function(){var Z=ia(65548),ue=Z+12;if((y(),L)[Z>>>2>>>0]=ue,(y(),L)[Z+4>>>2>>>0]=ue+65536,ue=Dn[0],!Un.has(ue)){var me=Yr++;Un.set(ue,me),cn.set(me,ue)}return ue=Un.get(ue),(y(),R)[Z+8>>>2>>>0]=ue,Z})(),typeof MainLoop<"u"&&MainLoop.yd&&MainLoop.pause(),Or(()=>vu(Ar)))}else gr===2?(gr=0,Or(xu),Kn(Ar),Ar=null,yn.forEach(de)):N(`invalid state: ${gr}`);return Br}})(T=>{M().then(T)});function gs(M){return M>>>=0,Wn(async()=>{var T=await qr(M);return vr(T)})}var Xr=[],es=M=>{var T=Xr.length;return Xr.push(M),T},dn=(M,T)=>{for(var z=Array(M),G=0;G<M;++G){var Z=G,ue=(y(),L)[T+4*G>>>2>>>0],me=Hr[ue];if(me===void 0)throw M=`parameter ${G}`,ue=wi(ue),T=St(ue),Kn(ue),new kr(`${M} has unknown type ${T}`);z[Z]=me}return z},Nr=(M,T,z)=>{var G=[];return M=M(G,z),G.length&&((y(),L)[T>>>2>>>0]=vr(G)),M},rn={},zr=M=>{var T=rn[M];return T===void 0?St(M):T};function zn(M,T,z){var[G,...Z]=dn(M,T>>>0);T=G.Xc.bind(G);var ue=Z.map(it=>it.Wc.bind(it));M--;var me={toValue:qr};switch(M=ue.map((it,mt)=>{var Qt=`argFromPtr${mt}`;return me[Qt]=it,`${Qt}(args${mt?"+"+8*mt:""})`}),z){case 0:var Ge="toValue(handle)";break;case 2:Ge="new (toValue(handle))";break;case 3:Ge="";break;case 1:me.getStringOrSymbol=zr,Ge="toValue(handle)[getStringOrSymbol(methodName)]"}return Ge+=`(${M})`,G.Cd||(me.toReturnWire=T,me.emval_returnValue=Nr,Ge=`return emval_returnValue(toReturnWire, destructorsRef, ${Ge})`),Ge=`return function (handle, methodName, destructorsRef, args) {
2847  ${Ge}
2848  }`,z=new Function(Object.keys(me),Ge)(...Object.values(me)),Ge=`methodCaller<(${Z.map(it=>it.name)}) => ${G.name}>
2848`,es(Object.defineProperty(z,"name",{value:Ge}))}function wa(M,T){return T>>>=0,(M=qr(M>>>0))==qr(T)}function Is(M){return(M>>>=0)?(M=zr(M),vr(globalThis[M])):vr(globalThis)}function ao(M){return M=zr(M>>>0),vr(t[M])}function Yo(M,T){return T>>>=0,M=qr(M>>>0),T=qr(T),vr(M[T])}function No(M){9<(M>>>=0)&&(Kr[M+1]+=1)}function io(M,T,z,G,Z){return Xr[M>>>0](T>>>0,z>>>0,G>>>0,Z>>>0)}function jo(M,T,z,G,Z){return io(M>>>0,T>>>0,z>>>0,G>>>0,Z>>>0)}function ya(){return vr([])}function Uo(M){M=qr(M>>>0);for(var T=Array(M.length),z=0;z<M.length;z++)T[z]=M[z];return vr(T)}function Wo(M){return vr(zr(M>>>0))}function Vo(){return vr({})}function Qo(M){for(var T=qr(M>>>=0);T.length;){var z=T.pop();T.pop()(z)}fn(M)}function Ho(M,T,z){T>>>=0,z>>>=0,M=qr(M>>>0),T=qr(T),z=qr(z),M[T]=z}function ba(M,T){M=-9007199254740992>M||9007199254740992<M?NaN:Number(M),T>>>=0,M=new Date(1e3*M),(y(),R)[T>>>2>>>0]=M.getUTCSeconds(),(y(),R)[T+4>>>2>>>0]=M.getUTCMinutes(),(y(),R)[T+8>>>2>>>0]=M.getUTCHours(),(y(),R)[T+12>>>2>>>0]=M.getUTCDate(),(y(),R)[T+16>>>2>>>0]=M.getUTCMonth(),(y(),R)[T+20>>>2>>>0]=M.getUTCFullYear()-1900,(y(),R)[T+24>>>2>>>0]=M.getUTCDay(),M=(M.getTime()-Date.UTC(M.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,(y(),R)[T+28>>>2>>>0]=M}var oo=M=>M%4==0&&(M%100!=0||M%400==0),oi=[0,31,60,91,121,152,182,213,244,274,305,335],li=[0,31,59,90,120,151,181,212,243,273,304,334];function lo(M,T){M=-9007199254740992>M||9007199254740992<M?NaN:Number(M),T>>>=0,M=new Date(1e3*M),(y(),R)[T>>>2>>>0]=M.getSeconds(),(y(),R)[T+4>>>2>>>0]=M.getMinutes(),(y(),R)[T+8>>>2>>>0]=M.getHours(),(y(),R)[T+12>>>2>>>0]=M.getDate(),(y(),R)[T+16>>>2>>>0]=M.getMonth(),(y(),R)[T+20>>>2>>>0]=M.getFullYear()-1900,(y(),R)[T+24>>>2>>>0]=M.getDay();var z=(oo(M.getFullYear())?oi:li)[M.getMonth()]+M.getDate()-1|0;(y(),R)[T+28>>>2>>>0]=z,(y(),R)[T+36>>>2>>>0]=-60*M.getTimezoneOffset(),z=new Date(M.getFullYear(),6,1).getTimezoneOffset();var G=new Date(M.getFullYear(),0,1).getTimezoneOffset();M=0|(z!=G&&M.getTimezoneOffset()==Math.min(G,z)),(y(),R)[T+32>>>2>>>0]=M}function Ko(M){M>>>=0;var T=new Date((y(),R)[M+20>>>2>>>0]+1900,(y(),R)[M+16>>>2>>>0],(y(),R)[M+12>>>2>>>0],(y(),R)[M+8>>>2>>>0],(y(),R)[M+4>>>2>>>0],(y(),R)[M>>>2>>>0],0),z=(y(),R)[M+32>>>2>>>0],G=T.getTimezoneOffset(),Z=new Date(T.getFullYear(),6,1).getTimezoneOffset(),ue=new Date(T.getFullYear(),0,1).getTimezoneOffset(),me=Math.min(ue,Z);return 0>z?(y(),R)[M+32>>>2>>>0]=+(Z!=ue&&me==G):0<z!=(me==G)&&(Z=Math.max(ue,Z),T.setTime(T.getTime()+6e4*((0<z?me:Z)-G))),(y(),R)[M+24>>>2>>>0]=T.getDay(),z=(oo(T.getFullYear())?oi:li)[T.getMonth()]+T.getDate()-1|0,(y(),R)[M+28>>>2>>>0]=z,(y(),R)[M>>>2>>>0]=T.getSeconds(),(y(),R)[M+4>>>2>>>0]=T.getMinutes(),(y(),R)[M+8>>>2>>>0]=T.getHours(),(y(),R)[M+12>>>2>>>0]=T.getDate(),(y(),R)[M+16>>>2>>>0]=T.getMonth(),(y(),R)[M+20>>>2>>>0]=T.getYear(),M=T.getTime(),BigInt(isNaN(M)?-1:M/1e3)}function ui(M,T,z,G,Z,ue,me){return s?be(16,1,M,T,z,G,Z,ue,me):-52}function ci(M,T,z,G,Z,ue){if(s)return be(17,1,M,T,z,G,Z,ue)}var na={},sa=()=>performance.timeOrigin+performance.now();function uo(M,T){if(s)return be(18,1,M,T);if(na[M]&&(clearTimeout(na[M].id),delete na[M]),!T)return 0;var z=setTimeout(()=>{delete na[M],de(()=>yi(M,performance.timeOrigin+performance.now()))},T);return na[M]={id:z,be:T},0}function di(M,T,z,G){M>>>=0,T>>>=0,z>>>=0,G>>>=0;var Z=new Date().getFullYear(),ue=new Date(Z,0,1).getTimezoneOffset();Z=new Date(Z,6,1).getTimezoneOffset();var me=Math.max(ue,Z);(y(),L)[M>>>2>>>0]=60*me,(y(),R)[T>>>2>>>0]=+(ue!=Z),M=(T=Ge=>{var it=Math.abs(Ge);return`UTC${0<=Ge?"-":"+"}${String(Math.floor(it/60)).padStart(2,"0")}${String(it%60).padStart(2,"0")}`})(ue),T=T(Z),Z<ue?(_n(M,z,17),_n(T,G,17)):(_n(M,G,17),_n(T,z,17))}var qo=()=>Date.now();function co(M,T,z){return z>>>=0,0<=M&&3>=M?(M===0?M=Date.now():M=performance.timeOrigin+performance.now(),M=Math.round(1e6*M),(y(),re)[z>>>3>>>
vendor: 12,498 bytes, lines 2848-2850
28480]=BigInt(M),0):28}var po=[],Oa=(M,T)=>{po.length=0;for(var z;z=(y(),W)[M++>>>0];){var G=z!=105;T+=(G&=z!=112)&&T%8?4:0,po.push(z==112?(y(),L)[T>>>2>>>0]:z==106?(y(),re)[T>>>3>>>0]:z==105?(y(),R)[T>>>2>>>0]:(y(),ne)[T>>>3>>>0]),T+=G?8:4}return po};function pi(M,T,z){return M>>>=0,T=Oa(T>>>0,z>>>0),dl[M](...T)}function go(M,T,z){return M>>>=0,T=Oa(T>>>0,z>>>0),dl[M](...T)}var gi=()=>{};function Xo(M,T){return w(pr(M>>>0,T>>>0))}var Zo=()=>{throw we+=1,"unwind"};function Jo(){return 4294901760}var el=()=>navigator.hardwareConcurrency,Ts={},Ga=M=>{var T;return(T=/\bwasm-function\[\d+\]:(0x[0-9a-f]+)/.exec(M))?+T[1]:(T=/:(\d+):\d+(?:\)|$)/.exec(M))?2147483648|+T[1]:0},Ai=M=>{for(var T of M)(M=Ga(T))&&(Ts[M]=T)};function za(){var M=Error().stack.toString().split(`
2849`);return M[0]=="Error"&&M.shift(),Ai(M),Ts.sd=Ga(M[3]),Ts.Md=M,Ts.sd}function As(M){if(!(M=Ts[M>>>0]))return 0;var T;if(T=/^\s+at .*\.wasm\.(.*) \(.*\)$/.exec(M))M=T[1];else if(T=/^\s+at (.*) \(.*\)$/.exec(M))M=T[1];else{if(!(T=/^(.+?)@/.exec(M)))return 0;M=T[1]}Kn(As.td??0),T=wn(M)+1;var z=ia(T);return z&&_n(M,z,T),As.td=z,As.td}function hi(M){M>>>=0;var T=(y(),W).length;if(M<=T||4294901760<M)return!1;for(var z=1;4>=z;z*=2){var G=T*(1+.2/z);G=Math.min(G,M+100663296);e:{G=(Math.min(4294901760,65536*Math.ceil(Math.max(M,G)/65536))-dt.buffer.byteLength+65535)/65536|0;try{dt.grow(G),V();var Z=1;break e}catch{}Z=void 0}if(Z)return!0}return!1}function tl(M,T,z){if(M>>>=0,T>>>=0,Ts.sd==M)var G=Ts.Md;else(G=Error().stack.toString().split(`
2850`))[0]=="Error"&&G.shift(),Ai(G);for(var Z=3;G[Z]&&Ga(G[Z])!=M;)++Z;for(M=0;M<z&&G[M+Z];++M)(y(),R)[T+4*M>>>2>>>0]=Ga(G[M+Z]);return M}var Pa,aa={},Fa=()=>{if(!Pa){var M,T={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:"./this.program"};for(M in aa)aa[M]===void 0?delete T[M]:T[M]=aa[M];var z=[];for(M in T)z.push(`${M}=${T[M]}`);Pa=z}return Pa};function La(M,T){if(s)return be(19,1,M,T);M>>>=0,T>>>=0;var z,G=0,Z=0;for(z of Fa()){var ue=T+G;(y(),L)[M+Z>>>2>>>0]=ue,G+=_n(z,ue,1/0)+1,Z+=4}return 0}function hs(M,T){if(s)return be(20,1,M,T);M>>>=0,T>>>=0;var z=Fa();for(var G of((y(),L)[M>>>2>>>0]=z.length,M=0,z))M+=wn(G)+1;return(y(),L)[T>>>2>>>0]=M,0}function mi(M){return s?be(21,1,M):52}function Ao(M,T,z,G){return s?be(22,1,M,T,z,G):52}function fi(M,T,z,G){return s?be(23,1,M,T,z,G):70}var rl=[null,[],[]];function ho(M,T,z,G){if(s)return be(24,1,M,T,z,G);T>>>=0,z>>>=0,G>>>=0;for(var Z=0,ue=0;ue<z;ue++){var me=(y(),L)[T>>>2>>>0],Ge=(y(),L)[T+4>>>2>>>0];T+=8;for(var it=0;it<Ge;it++){var mt=M,Qt=(y(),W)[me+it>>>0],ir=rl[mt];Qt===0||Qt===10?((mt===1?_:w)(cs(ir)),ir.length=0):ir.push(Qt)}Z+=Ge}return(y(),L)[G>>>2>>>0]=Z,0}function _i(M){return M>>>0}s||(function(){for(var M=t.numThreads-1;M--;)He();je.push(async()=>{var T=(async function(){if(!s)return Promise.all(ve.map(ht))})();Me++,await T,--Me==0&&se&&(T=se,se=null,T())})})(),s||(dt=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),V()),t.wasmBinary&&(c=t.wasmBinary),t.stackSave=()=>Wt(),t.stackRestore=M=>Ut(M),t.stackAlloc=M=>Ra(M),t.setValue=function(M,T,z="i8"){switch(z.endsWith("*")&&(z="*"),z){case"i1":case"i8":(y(),k)[M>>>0]=T;break;case"i16":(y(),j)[M>>>1>>>0]=T;break;case"i32":(y(),R)[M>>>2>>>0]=T;break;case"i64":(y(),re)[M>>>3>>>0]=BigInt(T);break;case"float":(y(),Q)[M>>>2>>>0]=T;break;case"double":(y(),ne)[M>>>3>>>0]=T;break;case"*":(y(),L)[M>>>2>>>0]=T;break;default:N(`invalid type for setValue: ${z}`)}},t.getValue=function(M,T="i8"){switch(T.endsWith("*")&&(T="*"),T){case"i1":case"i8":return(y(),k)[M>>>0];case"i16":return(y(),j)[M>>>1>>>0];case"i32":return(y(),R)[M>>>2>>>0];case"i64":return(y(),re)[M>>>3>>>0];case"float":return(y(),Q)[M>>>2>>>0];case"double":return(y(),ne)[M>>>3>>>0];case"*":return(y(),L)[M>>>2>>>0];default:N(`invalid type for getValue: ${T}`)}},t.UTF8ToString=pr,t.stringToUTF8=_n,t.lengthBytesUTF8=wn;var wi,Ma,vt,Kn,ia,oa,va,Vn,Ba,la,yi,bi,Zt,Cs,Pi,Ut,Ra,Wt,xa,Ea,Mi,Ya,vi,Na,ja,x,C,Y,K,ee,he,Le,Qe,ot,wt,Lt,sr,mr,nn,$s,mo,nl,pu,gu,sl,Au,hu,al,mu,fu,il,_u,wu,ol,yu,bu,ll,Pu,Mu,ul,vu,Bu,cl,xu,Ss,Eu=[Ce,Se,Nn,Ft,ds,S,ie,X,ae,le,_e,Oe,gt,Et,at,Ot,ui,ci,uo,La,hs,mi,Ao,fi,ho],dl={929356:(M,T,z,G,Z)=>{if(t===void 0||!t.Zc)return 1;if((M=pr(Number(M>>>0))).startsWith("./")&&(M=M.substring(2)),!(M=t.Zc.get(M)))return 2;if(T=Number(T>>>0),z=Number(z>>>0),G=Number(G>>>0),T+z>M.byteLength)return 3;try{let ue=M.subarray(T,T+z);switch(Z){case 0:(y(),W).set(ue,G>>>0);break;case 1:t.Xd?t.Xd(G,ue):t.Ld(G,ue);break;default:return 4}return 0}catch{return 4}},930180:(M,T,z)=>{t.xd(M,(y(),W).subarray(T>>>0,T+z>>>0))},930244:()=>t.Zd(),930286:M=>{t.vd(M)},930323:()=>{t.Ed()},930354:()=>{t.Fd()},930383:()=>{t.Jd()},930408:M=>t.Dd(M),930441:M=>t.Hd(M),930473:(M,T,z)=>{t.jd(Number(M),Number(T),Number(z),!0)},930536:(M,T,z)=>{t.jd(Number(M),Number(T),Number(z))},930593:()=>typeof wasmOffsetConverter<"u",930650:M=>{t.ac("Abs",M,void 0)},930701:M=>{t.ac("Neg",M,void 0)},930752:M=>{t.ac("Floor",M,void 0)},930805:M=>{t.ac("Ceil",M,void 0)},930857:M=>{t.ac("Reciprocal",M,void 0)},930915:M=>{t.ac("Sqrt",M,void 0)},930967:M=>{t.ac("Exp",M,void 0)},931018:M=>{t.ac("Erf",M,void 0)},931069:M=>{t.ac("Sigmoid",M,void 0)},931124:(M,T,z)=>{t.ac("HardSigmoid",M,{alpha:T,beta:z})},931203:M=>{t.ac("Log",M,void 0)},931254:M=>{t.ac("Sin",M,void 0)},931305:M=>{t.ac("Cos",M,void 0)},931356:M=>{t.ac("Tan",M,void 0)},931407:M=>{t.ac("Asin",M,void 0)},931459:M=>{t.ac("Acos",M,void 0)},931511:M=>{t.ac("Atan",M,void 0)},931563:M=>{t.ac("Sinh",M,void 0)},931615:M=>{t.ac("Cosh",M,void 0)},931667:M=>{t.ac("Asinh",M,void 0)},931720:M=>{t.ac("Acosh",M,void 0)},931773:M=>{t.ac("Atanh",M,void 0)},931826:M=>{t.ac("Tanh",M,void 0)},931878:M=>{t.ac("Not",M,void 0)},931929:(M,T,z)=>{t.ac("Clip",M,{min:T,max:z})},931998:M=>{t.ac("Clip",M,void 0)},932050:(M,T)=>{t.ac("Elu",M,{alpha:T})},932108:M=>{t.ac("Gelu",M,void 0)},932160:M=>{t.ac("Relu",M,void 0)},932212:(M,T)=>{t.ac("LeakyRelu",M,{alpha:T})},932276:(M,T)=>{t.ac("ThresholdedRelu",M,{alpha:T})},932346:(M,T)=>{t.ac("Cast",M,{to:T})},932404:M=>{t.ac("Add",M,void 0)},932455:M=>{t.ac("Sub",M,void 0)},932506:M=>{t.ac("Mul",M,void 0)},932557:M=>{t.ac("Div",M,void 0)},932608:M=>{t.ac("Pow",M,void 0)},932659:M=>{t.ac("Equal",M,void 0)},932712:M=>{t.ac("Greater",M,void 0)},932767:M=>{t.ac("GreaterOrEqual",M,void 0)},932829:M=>{t.ac("Less",M,void 0)},932881:M=>{t.ac("LessOrEqual",M,void 0)},932940:(M,T,z,G,Z)=>{t.ac("ReduceMean",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933115:(M,T,z,G,Z)=>{t.ac("ReduceMax",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933289:(M,T,z,G,Z)=>{t.ac("ReduceMin",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933463:(M,T,z,G,Z)=>{t.ac("ReduceProd",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933638:(M,T,z,G,Z)=>{t.ac("ReduceSum",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933812:(M,T,z,G,Z)=>{t.ac("ReduceL1",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},933985:(M,T,z,G,Z)=>{t.ac("ReduceL2",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934158:(M,T,z,G,Z)=>{t.ac("ReduceLogSum",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934335:(M,T,z,G,Z)=>{t.ac("ReduceSumSquare",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934515:(M,T,z,G,Z)=>{t.ac("ReduceLogSumExp",M,{keepDims:!!T,noopWithEmptyAxes:!!z,axes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},934695:M=>{t.ac("Where",M,void 0)},934748:(M,T,z)=>{t.ac("Transpose",M,{perm:T?Array.from((y(),R).subarray(Number(T)>>>0,Number(z)>>>0)):[]})},934872:(M,T,z,G)=>{t.ac("DepthToSpace",M,{blocksize:T,mode:pr(z),format:G?"NHWC":"NCHW"})},935005:(M,T,z,G)=>{t.ac("DepthToSpace",M,{blocksize:T,mode:pr(z),format:G?"NHWC":"NCHW"})},935138:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua)=>{t.ac("ConvTranspose",M,{format:it?"NHWC":"NCHW",autoPad:T,dilations:[z],group:G,kernelShape:[Z],pads:[ue,me],strides:[Ge],wIsConst:()=>!!(y(),k)[mt>>>0],outputPadding:Qt?Array.from((y(),R).subarray(Number(Qt)>>>0,Number(ir)>>>0)):[],outputShape:Ir?Array.from((y(),R).subarray(Number(Ir)>>>0,Number(Gr)>>>0)):[],activation:pr(ua)})},935571:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("ConvTranspose",M,{format:Ge?"NHWC":"NCHW",autoPad:T,dilations:Array.from((y(),R).subarray(Number(z)>>>0,2+(Number(z)>>>0)>>>0)),group:G,kernelShape:Array.from((y(),R).subarray(Number(Z)>>>0,2+(Number(Z)>>>0)>>>0)),pads:Array.from((y(),R).subarray(Number(ue)>>>0,4+(Number(ue)>>>0)>>>0)),strides:Array.from((y(),R).subarray(Number(me)>>>0,2+(Number(me)>>>0)>>>0)),wIsConst:()=>!!(y(),k)[it>>>0],outputPadding:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],outputShape:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[],activation:pr(Gr)})},936232:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua)=>{t.ac("ConvTranspose",M,{format:it?"NHWC":"NCHW",autoPad:T,dilations:[z],group:G,kernelShape:[Z],pads:[ue,me],strides:[Ge],wIsConst:()=>!!(y(),k)[mt>>>0],outputPadding:Qt?Array.from((y(),R).subarray(Number(Qt)>>>0,Number(ir)>>>0)):[],outputShape:Ir?Array.from((y(),R).subarray(Number(Ir)>>>0,Number(Gr)>>>0)):[],activation:pr(ua)})},936665:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("ConvTranspose",M,{format:Ge?"NHWC":"NCHW",autoPad:T,dilations:Array.from((y(),R).subarray(Number(z)>>>0,2+(Number(z)>>>0)>>>0)),group:G,kernelShape:Array.from((y(),R).subarray(Number(Z)>>>0,2+(Number(Z)>>>0)>>>0)),pads:Array.from((y(),R).subarray(Number(ue)>>>0,4+(Number(ue)>>>0)>>>0)),strides:Array.from((y(),R).subarray(Number(me)>>>0,2+(Number(me)>>>0)>>>0)),wIsConst:()=>!!(y(),k)[it>>>0],outputPadding:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],outputShape:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[],activation:pr(Gr)})},937326:(M,T)=>{t.ac("GlobalAveragePool",M,{format:T?"NHWC":"NCHW"})},937417:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("AveragePool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},937896:(M,T)=>{t.ac("GlobalAveragePool",M,{format:T?"NHWC":"NCHW"})},937987:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("AveragePool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},938466:(M,T)=>{t.ac("GlobalMaxPool",M,{format:T?"NHWC":"NCHW"})},938553:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("MaxPool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},939028:(M,T)=>{t.ac("GlobalMaxPool",M,{format:T?"NHWC":"NCHW"})},939115:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr)=>{t.ac("MaxPool",M,{format:Gr?"NHWC":"NCHW",auto_pad:T,ceil_mode:z,count_include_pad:G,storage_order:Z,dilations:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],kernel_shape:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],pads:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],strides:ir?Array.from((y(),R).subarray(Number(ir)>>>0,Number(Ir)>>>0)):[]})},939590:(M,T,z,G,Z)=>{t.ac("Gemm",M,{alpha:T,beta:z,transA:G,transB:Z})},939694:M=>{t.ac("MatMul",M,void 0)},939748:(M,T,z,G)=>
vendor: 4,178 bytes, line 2850
2850{t.ac("ArgMax",M,{keepDims:!!T,selectLastIndex:!!z,axis:G})},939856:(M,T,z,G)=>{t.ac("ArgMin",M,{keepDims:!!T,selectLastIndex:!!z,axis:G})},939964:(M,T)=>{t.ac("Softmax",M,{axis:T})},940027:(M,T)=>{t.ac("Concat",M,{axis:T})},940087:(M,T,z,G,Z)=>{t.ac("Split",M,{axis:T,numOutputs:z,splitSizes:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},940243:M=>{t.ac("Expand",M,void 0)},940297:(M,T)=>{t.ac("Gather",M,{axis:Number(T)})},940368:(M,T)=>{t.ac("GatherElements",M,{axis:Number(T)})},940447:(M,T)=>{t.ac("GatherND",M,{batch_dims:Number(T)})},940526:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt)=>{t.ac("Resize",M,{antialias:T,axes:z?Array.from((y(),R).subarray(Number(z)>>>0,Number(G)>>>0)):[],coordinateTransformMode:pr(Z),cubicCoeffA:ue,excludeOutside:me,extrapolationValue:Ge,keepAspectRatioPolicy:pr(it),mode:pr(mt),nearestMode:pr(Qt)})},940888:(M,T,z,G,Z,ue,me)=>{t.ac("Slice",M,{starts:T?Array.from((y(),R).subarray(Number(T)>>>0,Number(z)>>>0)):[],ends:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[],axes:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[]})},941152:M=>{t.ac("Tile",M,void 0)},941204:(M,T,z)=>{t.ac("InstanceNormalization",M,{epsilon:T,format:z?"NHWC":"NCHW"})},941318:(M,T,z)=>{t.ac("InstanceNormalization",M,{epsilon:T,format:z?"NHWC":"NCHW"})},941432:M=>{t.ac("Range",M,void 0)},941485:(M,T)=>{t.ac("Einsum",M,{equation:pr(T)})},941566:(M,T,z,G,Z)=>{t.ac("Pad",M,{mode:T,value:z,pads:G?Array.from((y(),R).subarray(Number(G)>>>0,Number(Z)>>>0)):[]})},941709:(M,T,z,G,Z,ue)=>{t.ac("BatchNormalization",M,{epsilon:T,momentum:z,spatial:!!Z,trainingMode:!!G,format:ue?"NHWC":"NCHW"})},941878:(M,T,z,G,Z,ue)=>{t.ac("BatchNormalization",M,{epsilon:T,momentum:z,spatial:!!Z,trainingMode:!!G,format:ue?"NHWC":"NCHW"})},942047:(M,T,z)=>{t.ac("CumSum",M,{exclusive:Number(T),reverse:Number(z)})},942144:(M,T,z)=>{t.ac("DequantizeLinear",M,{axis:T,blockSize:z})},942234:(M,T,z,G,Z)=>{t.ac("GridSample",M,{align_corners:T,mode:pr(z),padding_mode:pr(G),format:Z?"NHWC":"NCHW"})},942404:(M,T,z,G,Z)=>{t.ac("GridSample",M,{align_corners:T,mode:pr(z),padding_mode:pr(G),format:Z?"NHWC":"NCHW"})},942574:(M,T)=>{t.ac("ScatterND",M,{reduction:pr(T)})},942659:(M,T,z,G,Z,ue,me,Ge,it)=>{t.ac("Attention",M,{numHeads:T,isUnidirectional:z,maskFilterValue:G,scale:Z,doRotary:ue,qkvHiddenSizes:me?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(Ge)+me>>>0)):[],pastPresentShareBuffer:!!it})},942931:M=>{t.ac("BiasAdd",M,void 0)},942986:M=>{t.ac("BiasSplitGelu",M,void 0)},943047:M=>{t.ac("FastGelu",M,void 0)},943103:(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua,_o)=>{t.ac("Conv",M,{format:ir?"NHWC":"NCHW",auto_pad:T,dilations:z?Array.from((y(),R).subarray(Number(z)>>>0,Number(G)>>>0)):[],group:Z,kernel_shape:ue?Array.from((y(),R).subarray(Number(ue)>>>0,Number(me)>>>0)):[],pads:Ge?Array.from((y(),R).subarray(Number(Ge)>>>0,Number(it)>>>0)):[],strides:mt?Array.from((y(),R).subarray(Number(mt)>>>0,Number(Qt)>>>0)):[],w_is_const:()=>!!(y(),k)[Number(Ir)>>>0],activation:pr(Gr),activation_params:ua?Array.from((y(),Q).subarray(Number(ua)>>>0,Number(_o)>>>0)):[]})},943687:M=>{t.ac("Gelu",M,void 0)},943739:(M,T,z,G,Z,ue,me,Ge,it)=>{t.ac("GroupQueryAttention",M,{numHeads:T,kvNumHeads:z,scale:G,softcap:Z,doRotary:ue,rotaryInterleaved:me,smoothSoftmax:Ge,localWindowSize:it})},943956:(M,T,z,G)=>{t.ac("LayerNormalization",M,{axis:T,epsilon:z,simplified:!!G})},944067:(M,T,z,G)=>{t.ac("LayerNormalization",M,{axis:T,epsilon:z,simplified:!!G})},944178:(M,T,z,G,Z,ue)=>{t.ac("MatMulNBits",M,{k:T,n:z,accuracyLevel:G,bits:Z,blockSize:ue})},944305:(M,T,z,G,Z,ue)=>{t.ac("MultiHeadAttention",M,{numHeads:T,isUnidirectional:z,maskFilterValue:G,scale:Z,doRotary:ue})},944464:(M,T)=>{t.ac("QuickGelu",M,{alpha:T})},944528:(M,T,z,G,Z)=>{t.ac("RotaryEmbedding",M,{interleaved:!!T,numHeads:z,rotaryEmbeddingDim:G,scale:Z})},944667:(M,T,z)=>{t.ac("SkipLayerNormalization",M,{epsilon:T,simplified:!!z})},944769:(M,T,z)=>{t.ac("SkipLayerNormalization",M,{epsilon:T,simplified:!!z})},944871:(M,T,z,G)=>{t.ac("GatherBlockQuantized",M,{gatherAxis:T,quantizeAxis:z,blockSize:G})},944992:M=>{t.Id(M)},945026:(M,T)=>t.Kd(Number(M),Number(T),t.$c.Nd,t.$c.errors)};
2850function nd(M,T,z){return Wn(async()=>{await t.Gd(Number(M),Number(T),Number(z))})}function Du(){return typeof wasmOffsetConverter<"u"}function sd(M,T,z,G){var Z=Wt();try{return Le(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function ad(M,T,z){var G=Wt();try{return Y(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function Iu(M,T,z){var G=Wt();try{vi(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function id(M,T){var z=Wt();try{return Na(M,T)}catch(G){if(Ut(z),G!==G+0)throw G;Zt(1,0)}}function od(M){var T=Wt();try{ja(M)}catch(z){if(Ut(T),z!==z+0)throw z;Zt(1,0)}}function Tu(M,T,z,G,Z,ue,me){var Ge=Wt();try{return ee(M,T,z,G,Z,ue,me)}catch(it){if(Ut(Ge),it!==it+0)throw it;Zt(1,0)}}function ld(M,T){var z=Wt();try{Qe(M,T)}catch(G){if(Ut(z),G!==G+0)throw G;Zt(1,0)}}function ud(M,T,z,G,Z,ue){var me=Wt();try{x(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function Cu(M,T,z,G){var Z=Wt();try{he(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function cd(M,T,z,G,Z){var ue=Wt();try{C(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function dd(M,T,z,G,Z,ue,me){var Ge=Wt();try{wt(M,T,z,G,Z,ue,me)}catch(it){if(Ut(Ge),it!==it+0)throw it;Zt(1,0)}}function $u(M,T,z,G,Z,ue,me){var Ge=Wt();try{Lt(M,T,z,G,Z,ue,me)}catch(it){if(Ut(Ge),it!==it+0)throw it;Zt(1,0)}}function pd(M,T,z,G,Z,ue,me,Ge){var it=Wt();try{$s(M,T,z,G,Z,ue,me,Ge)}catch(mt){if(Ut(it),mt!==mt+0)throw mt;Zt(1,0)}}function gd(M,T,z,G,Z){var ue=Wt();try{return ot(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function Su(M,T,z,G,Z,ue,me,Ge){var it=Wt();try{mo(M,T,z,G,Z,ue,me,Ge)}catch(mt){if(Ut(it),mt!==mt+0)throw mt;Zt(1,0)}}function Ad(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir){var Ir=Wt();try{sr(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir)}catch(Gr){if(Ut(Ir),Gr!==Gr+0)throw Gr;Zt(1,0)}}function hd(M,T,z,G,Z,ue){var me=Wt();try{return mr(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function ku(M,T,z){var G=Wt();try{return nl(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;return Zt(1,0),0n}}function md(M,T,z,G,Z,ue,me,Ge,it){var mt=Wt();try{K(M,T,z,G,Z,ue,me,Ge,it)}catch(Qt){if(Ut(mt),Qt!==Qt+0)throw Qt;Zt(1,0)}}function fd(M){var T=Wt();try{return pu(M)}catch(z){if(Ut(T),z!==z+0)throw z;Zt(1,0)}}function Ou(M,T,z){var G=Wt();try{return gu(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function _d(M,T){var z=Wt();try{return ul(M,T)}catch(G){if(Ut(z),G!==G+0)throw G;return Zt(1,0),0n}}function wd(M,T,z,G,Z){var ue=Wt();try{sl(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function Gu(M){var T=Wt();try{return Au(M)}catch(z){if(Ut(T),z!==z+0)throw z;return Zt(1,0),0n}}function yd(M,T,z,G,Z,ue){var me=Wt();try{return _u(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function bd(M,T,z,G,Z,ue){var me=Wt();try{return wu(M,T,z,G,Z,ue)}catch(Ge){if(Ut(me),Ge!==Ge+0)throw Ge;Zt(1,0)}}function zu(M,T,z,G,Z,ue,me,Ge){var it=Wt();try{return nn(M,T,z,G,Z,ue,me,Ge)}catch(mt){if(Ut(it),mt!==mt+0)throw mt;Zt(1,0)}}function Pd(M,T,z,G,Z){var ue=Wt();try{return ol(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;return Zt(1,0),0n}}function Md(M,T,z,G){var Z=Wt();try{return yu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function vd(M,T,z,G){var Z=Wt();try{return bu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function Bd(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir){var Ir=Wt();try{return ll(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir)}catch(Gr){if(Ut(Ir),Gr!==Gr+0)throw Gr;Zt(1,0)}}function Fu(M,T,z,G,Z,ue,me,Ge,it,mt,Qt){var ir=Wt();try{fu(M,T,z,G,Z,ue,me,Ge,it,mt,Qt)}catch(Ir){if(Ut(ir),Ir!==Ir+0)throw Ir;Zt(1,0)}}function xd(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua,_o){var Td=Wt();try{il(M,T,z,G,Z,ue,me,Ge,it,mt,Qt,ir,Ir,Gr,ua,_o)}catch(pl){if(Ut(Td),pl!==pl+0)throw pl;Zt(1,0)}}function Ed(M,T,z,G){var Z=Wt();try{return Pu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function Lu(M,T,z,G,Z){var ue=Wt();try{return Mu(M,T,z,G,Z)}catch(me){if(Ut(ue),me!==me+0)throw me;Zt(1,0)}}function Dd(M,T,z){var G=Wt();try{return hu(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function Id(M,T,z){var G=Wt();try{return al(M,T,z)}catch(Z){if(Ut(G),Z!==Z+0)throw Z;Zt(1,0)}}function Ru(M,T,z,G){var Z=Wt();try{mu(M,T,z,G)}catch(ue){if(Ut(Z),ue!==ue+0)throw ue;Zt(1,0)}}function fo(){if(0<Me)se=fo;else if(s)m?.(t),U();else{for(var M=je;0<M.length;)M.shift()(t);0<Me?se=fo:(t.calledRun=!0,b||(U(),m?.(t)))}}return s||(Ss=await fe(),fo()),t.PTR_SIZE=4,q?t:new Promise((M,T)=>{m=M,B=T})}var jM,UM,Q4=et(()=>{jM=NM,UM=globalThis.self?.name?.startsWith("em-pthread"),UM&&NM()}),sA,aA,WM,as,VM,_c,QM,HM,iA,KM,oA,qM,lA,XM,uA=et(()=>{tA(),sA=typeof location>"u"?void 0:location.origin,aA=self.location.href>"file:"&&self.location.href<"file;",WM=()=>{{if(aA){let e=URL;return new URL(new e("ort.bundle.min.mjs",self.location.href).href,sA).href}return self.location.href}},as=WM(),VM=()=>
vendor: 4,325 bytes, line 2850
2850{if(as&&!as.startsWith("blob:"))return as.substring(0,as.lastIndexOf("/")+1)},_c=(e,t)=>{try{let r=t??as;return(r?new URL(e,r):new URL(e)).origin===sA}catch{return!1}},QM=(e,t)=>{let r=t??as;try{return(r?new URL(e,r):new URL(e)).href}catch{return}},HM=(e,t)=>`${t??"./"}${e}`,iA=async e=>{let t=await(await fetch(e,{credentials:"same-origin"})).blob();return URL.createObjectURL(t)},KM=async e=>(await import(e)).default,oA=(V4(),Ol(LM)).default,qM=async()=>{if(!as)throw new Error("Failed to load proxy worker: cannot determine the script source URL.");if(_c(as))return[void 0,oA()];let e=await iA(as);return[e,oA(e)]},lA=(Q4(),Ol(YM)).default,XM=async(e,t,r,n)=>{let s=lA&&!(e||t);if(s)if(as)s=_c(as)||n&&!r;else if(n&&!r)s=!0;else throw new Error("cannot determine the script source URL.");if(s)return[void 0,lA];{let a="ort-wasm-simd-threaded.jsep.mjs",i=e??QM(a,t),o=r&&i&&!_c(i,t),l=o?await iA(i):i??HM(a,t);return[o?l:void 0,await KM(l)]}}}),cA,wc,Fl,dA,ZM,JM,ev,pA,Lr,Ui=et(()=>{uA(),wc=!1,Fl=!1,dA=!1,ZM=()=>{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}},JM=()=>{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}},ev=()=>{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}},pA=async e=>{if(wc)return Promise.resolve();if(Fl)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(dA)throw new Error("previous call to 'initializeWebAssembly()' failed.");Fl=!0;let t=e.initTimeout,r=e.numThreads;if(e.simd!==!1){if(e.simd==="relaxed"){if(!ev())throw new Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!JM())throw new Error("WebAssembly SIMD is not supported in the current environment.")}let n=ZM();r>1&&!n&&(typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+r+", 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."),e.numThreads=r=1);let s=e.wasmPaths,a=typeof s=="string"?s:void 0,i=s?.mjs,o=i?.href??i,l=s?.wasm,u=l?.href??l,p=e.wasmBinary,[d,c]=await XM(o,a,r>1,!!p||!!u),g=!1,A=[];if(t>0&&A.push(new Promise(m=>{setTimeout(()=>{g=!0,m()},t)})),A.push(new Promise((m,B)=>{let f={numThreads:r};if(p)f.wasmBinary=p,f.locateFile=h=>h;else if(u||a)f.locateFile=h=>u??a+h;else if(o&&o.indexOf("blob:")!==0)f.locateFile=h=>new URL(h,o).href;else if(d){let h=VM();h&&(f.locateFile=P=>h+P)}c(f).then(h=>{Fl=!1,wc=!0,cA=h,m(),d&&URL.revokeObjectURL(d)},h=>{Fl=!1,dA=!0,B(h)})})),await Promise.race(A),g)throw new Error(`WebAssembly backend initializing failed due to timeout: ${t}ms`)},Lr=()=>{if(wc&&cA)return cA;throw new Error("WebAssembly is not initialized yet.")}}),Us,yc,xr,gA=et(()=>{Ui(),Us=(e,t)=>{let r=Lr(),n=r.lengthBytesUTF8(e)+1,s=r._malloc(n);return r.stringToUTF8(e,s,n),t.push(s),s},yc=(e,t,r,n)=>{if(typeof e=="object"&&e!==null){if(r.has(e))throw new Error("Circular reference in options");r.add(e)}Object.entries(e).forEach(([s,a])=>{let i=t?t+s:s;if(typeof a=="object")yc(a,i+".",r,n);else if(typeof a=="string"||typeof a=="number")n(i,a.toString());else if(typeof a=="boolean")n(i,a?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof a}`)})},xr=e=>{let t=Lr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetLastError(s,s+n);let a=Number(t.getValue(s,n===4?"i32":"i64")),i=t.getValue(s+n,"*"),o=i?t.UTF8ToString(i):"";throw new Error(`${e} ERROR_CODE: ${a}, ERROR_MESSAGE: ${o}`)}finally{t.stackRestore(r)}}}),tv,H4=et(()=>{Ui(),gA(),tv=e=>{let t=Lr(),r=0,n=[],s=e||{};try{if(e?.logSeverityLevel===void 0)s.logSeverityLevel=2;else if(typeof e.logSeverityLevel!="number"||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>
vendor: 12,558 bytes, line 2850
28504)throw new Error(`log severity level is not valid: ${e.logSeverityLevel}`);if(e?.logVerbosityLevel===void 0)s.logVerbosityLevel=0;else if(typeof e.logVerbosityLevel!="number"||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);e?.terminate===void 0&&(s.terminate=!1);let a=0;return e?.tag!==void 0&&(a=Us(e.tag,n)),r=t._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,a),r===0&&xr("Can't create run options."),e?.extra!==void 0&&yc(e.extra,"",new WeakSet,(i,o)=>{let l=Us(i,n),u=Us(o,n);t._OrtAddRunConfigEntry(r,l,u)!==0&&xr(`Can't set a run config entry: ${i} - ${o}.`)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseRunOptions(r),n.forEach(i=>t._free(i)),a}}}),rv,nv,sv,Ll,av,iv,K4=et(()=>{Ui(),gA(),rv=e=>{switch(e){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: ${e}`)}},nv=e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}},sv=e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});let t=e.extra.session;t.use_ort_model_bytes_directly||(t.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some(r=>(typeof r=="string"?r:r.name)==="webgpu")&&(e.enableMemPattern=!1)},Ll=(e,t,r,n)=>{let s=Us(t,n),a=Us(r,n);Lr()._OrtAddSessionConfigEntry(e,s,a)!==0&&xr(`Can't set a session config entry: ${t} - ${r}.`)},av=async(e,t,r)=>{let n=t.executionProviders;for(let s of n){let a=typeof s=="string"?s:s.name,i=[];switch(a){case"webnn":if(a="WEBNN",typeof s!="string"){let d=s?.deviceType;d&&Ll(e,"deviceType",d,r)}break;case"webgpu":if(a="JS",typeof s!="string"){let d=s;if(d?.preferredLayout){if(d.preferredLayout!=="NCHW"&&d.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${d.preferredLayout}`);Ll(e,"preferredLayout",d.preferredLayout,r)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${a}`)}let o=Us(a,r),l=i.length,u=0,p=0;if(l>0){u=Lr()._malloc(l*Lr().PTR_SIZE),r.push(u),p=Lr()._malloc(l*Lr().PTR_SIZE),r.push(p);for(let d=0;d<l;d++)Lr().setValue(u+d*Lr().PTR_SIZE,i[d][0],"*"),Lr().setValue(p+d*Lr().PTR_SIZE,i[d][1],"*")}await Lr()._OrtAppendExecutionProvider(e,o,u,p,l)!==0&&xr(`Can't append execution provider: ${a}.`)}},iv=async e=>{let t=Lr(),r=0,n=[],s=e||{};sv(s);try{let a=rv(s.graphOptimizationLevel??"all"),i=nv(s.executionMode??"sequential"),o=typeof s.logId=="string"?Us(s.logId,n):0,l=s.logSeverityLevel??2;if(!Number.isInteger(l)||l<0||l>4)throw new Error(`log severity level is not valid: ${l}`);let u=s.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw new Error(`log verbosity level is not valid: ${u}`);let p=typeof s.optimizedModelFilePath=="string"?Us(s.optimizedModelFilePath,n):0;if(r=t._OrtCreateSessionOptions(a,!!s.enableCpuMemArena,!!s.enableMemPattern,i,!!s.enableProfiling,0,o,l,u,p),r===0&&xr("Can't create session options."),s.executionProviders&&await av(r,s,n),s.enableGraphCapture!==void 0){if(typeof s.enableGraphCapture!="boolean")throw new Error(`enableGraphCapture must be a boolean value: ${s.enableGraphCapture}`);Ll(r,"enableGraphCapture",s.enableGraphCapture.toString(),n)}if(s.freeDimensionOverrides)for(let[d,c]of Object.entries(s.freeDimensionOverrides)){if(typeof d!="string")throw new Error(`free dimension override name must be a string: ${d}`);if(typeof c!="number"||!Number.isInteger(c)||c<0)throw new Error(`free dimension override value must be a non-negative integer: ${c}`);let g=Us(d,n);t._OrtAddFreeDimensionOverride(r,g,c)!==0&&xr(`Can't set a free dimension override: ${d} - ${c}.`)}return s.extra!==void 0&&yc(s.extra,"",new WeakSet,(d,c)=>{Ll(r,d,c,n)}),[r,n]}catch(a){throw r!==0&&t._OrtReleaseSessionOptions(r)!==0&&xr("Can't release session options."),n.forEach(i=>t._free(i)),a}}}),Wi,Ca,Vi,bc,Pc,AA,hA,mA,Gt=et(()=>{Wi=e=>{switch(e){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: ${e}`)}},Ca=e=>{switch(e){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: ${e}`)}},Vi=(e,t)=>{let r=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][e],n=typeof t=="number"?t:t.reduce((s,a)=>s*a,1);return r>0?Math.ceil(n*r):void 0},bc=e=>{switch(e){case"float16":return typeof Float16Array<"u"&&Float16Array.from?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: ${e}`)}},Pc=e=>{switch(e){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: ${e}`)}},AA=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",hA=e=>e==="float32"||e==="float16"||e==="int32"||e==="int64"||e==="uint32"||e==="uint64"||e==="int8"||e==="uint8"||e==="bool"||e==="uint4"||e==="int4",mA=e=>{switch(e){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: ${e}`)}}}),fA,ov=et(()=>{tA(),fA=async e=>{if(typeof e=="string"){let t=await fetch(e);if(!t.ok)throw new Error(`failed to load external data file: ${e}`);let r=t.headers.get("Content-Length"),n=r?parseInt(r,10):0;if(n<1073741824)return new Uint8Array(await t.arrayBuffer());{if(!t.body)throw new Error(`failed to load external data file: ${e}, no response body.`);let s=t.body.getReader(),a;try{a=new ArrayBuffer(n)}catch(o){if(o instanceof RangeError){let l=Math.ceil(n/65536);a=new WebAssembly.Memory({initial:l,maximum:l}).buffer}else throw o}let i=0;for(;;){let{done:o,value:l}=await s.read();if(o)break;let u=l.byteLength;new Uint8Array(a,i,u).set(l),i+=u}return new Uint8Array(a,0,n)}}else return e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e)}}),lv,uv,cv,dv,_A,pv,ur,$a=et(()=>{Gt(),lv=["V","I","W","E","F"],uv=(e,t)=>{console.log(`[${lv[e]},${new Date().toISOString()}]${t}`)},_A=(e,t)=>{cv=e,dv=t},pv=(e,t)=>{let r=Pc(e),n=Pc(cv);r>=n&&uv(r,typeof t=="function"?t():t)},ur=(...e)=>{dv&&pv(...e)}}),gv,ko,$e,Mc,Av,hv,mv,qt=et(()=>{gv=class{static calcMatMulShape(e,t){return e[1]!==t[0]?void 0:[e[0],t[1]]}},ko=class{static calcShape(e,t,r=!1){let n=e.length,s=t.length;if(n===0)return t;if(s===0)return e;let a=Math.max(e.length,t.length),i=new Array(a);if(r){if(n<2||s<2)return;let o=gv.calcMatMulShape([e[n-2],e[n-1]],[t[s-2],t[s-1]]);if(o===void 0)return;[i[a-2],i[a-1]]=o}for(let o=r?3:1;o<=a;o++){let l=n-o<0?1:e[n-o],u=s-o<0?1:t[s-o];if(l!==u&&l>1&&u>1)return;let p=Math.max(l,u);if(l&&u)i[a-o]=Math.max(l,u);else{if(p>1)return;i[a-o]=0}}return i}static isValidBroadcast(e,t){let r=e.length,n=t.length;if(r>n)return!1;for(let s=1;s<=r;s++)if(e[r-s]!==1&&e[r-s]!==t[n-s])return!1;return!0}},$e=class Zd{static size(t){return Zd.getSizeFromDimensionRange(t,0,t.length)}static convertShape(t,r=4){let n=t.length;if(n===0)return[];let s=new Array(n),a=n-1;for(;a>=0;){if(t[a]%r===0){s[a]=t[a]/r;break}if(r%t[a]!==0)throw new Error("cannot convert shape");s[a]=1,r/=t[a],a--}for(a--;a>=0;a--)s[a]=t[a];return s}static sizeFromDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeFromDimension as Tensor has ${t.length} dimensions.`);return Zd.getSizeFromDimensionRange(t,r,t.length)}static sizeToDimension(t,r){if(r<0||r>t.length)throw new Error(`invalid dimension of ${r} for sizeToDimension as Tensor has ${t.length} dimensions.`);return Zd.getSizeFromDimensionRange(t,0,r)}static getSizeFromDimensionRange(t,r,n){let s=1;for(let a=r;a<n;a++){if(t[a]<0)throw new Error("cannot get valid size from specified dimension range. Most likely the range contains negative values in them.");s*=Number(t[a])}return s}static computeStrides(t){let r=t.length;if(r===0)return[];if(r===1)return[1];let n=new Array(r);n[r-1]=1,n[r-2]=t[r-1];for(let s=r-3;s>=0;--s)n[s]=n[s+1]*t[s+1];return n}static normalizeAxis(t,r){if(t<-r&&t>=r)throw new Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(n=>this.normalizeAxis(n,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(n=>t[n]):t.slice().reverse()}static padShape(t,r){let n=t.length;return t.map((s,a)=>s+r[a]+r[a+n])}static areEqual(t,r){return t.length!==r.length?!1:t.every((n,s)=>n===r[s])}},Mc=class Wu{static adjustPoolAttributes(t,r,n,s,a,i){if(!t&&n.length!==r.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let o=0;o<r.length-2;o++)o>=n.length?n.push(r[o+2]):n[o]=r[o+2];for(let o=0;o<n.length;o++)if(o<s.length){if(s[o]<0)throw new Error("strides should be greater than or equal to 1")}else s.push(1);for(let o=0;o<n.length;o++)if(o<a.length){if(a[o]<0)throw new Error("dilations should be greater than or equal to 1")}else a.push(1);for(let o=0;o<n.length*2;o++)if(o<i.length){if(i[o]<0)throw new Error("pad should be greater than or equal to 1")}else i.push(0);for(let o=0;o<n.length;o++){if(n[o]<=0)throw new Error("kernel shapes need to be greater than 0");if(i[o]>=n[o]||i[o+n.length]>=n[o])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(t,r,n,s,a,i,o){if(o){if(a.length!==2*(t.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(r.length!==t.length-2)throw new Error("length of strides should be the length of data dimensions");if(s.length!==t.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let l=0;l<t.length-2;l++)Wu.adjustPadAndReturnShape(t[l+(i?1:2)],r[l],n[l],s[l],a,l,l+t.length-2,o)}}static computePoolOutputShape(t,r,n,s,a,i,o){if(r.length<=0)throw new Error("input shape must be of size greater than 0");let l=[r[0],r[1]];return Wu.computeShapeHelper(t,r,l,n,s,a,i,o),l}static computeConvOutputShape(t,r,n,s,a,i,o){if(t.length<=0||r.length<=0)throw new Error("invalid input tensor dims or invalid filter tensor dims");let l=[t[0],r[0]];return Wu.computeShapeHelper(!1,t,l,n,s,a,i,o),l}static computeShapeHelper(t,r,n,s,a,i,o,l){if(t)for(let u=0;u<r.length-2;u++)n.push(1);else for(let u=0;u<r.length-2;u++)n.push(Wu.adjustPadAndReturnShape(r[u+2],s[u],a[u],i[u],o,u,u+r.length-2,l))}static adjustPadAndReturnShape(t,r,n,s,a,i,o,l){let u=n*(s-1)+1;if(l&&l!=="NOTSET")switch(l){case"VALID":return a[i]=0,a[o]=0,Math.floor((t-u)/r+1);case"SAME_LOWER":case"SAME_UPPER":if(n!==1)throw new Error("Dilation not supported for SAME_UPPER or SAME_LOWER");{let p=((t+r-1)/r-1)*r+s-t;return a[i]=Math.floor(l==="SAME_LOWER"?(p+1)/2:p/2),a[o]=p-a[i],Math.floor((t+p-s)/r+1)}default:throw new Error("Unsupported AutoPad type")}else return Math.floor((t+a[i]+a[o]-u)/r+1)}},Av=class{static getShapeOfGemmResult(e,t,r,n,s){if(e.length!==2||r.length!==2)throw new Error("shape need to be of size 2");let a,i,o;t?(a=e[1],i=e[0]):(a=e[0],i=e[1]);let l=-1;if(n?(o=r[0],l=1):(o=r[1],l=0),r[l]!==i)throw new Error("dimension mismatch");if(a<=0||o<=0||i<=0)throw new Error("invalid shape specified");if(s&&!ko.isValidBroadcast(s,[a,o]))throw new Error("gemm: invalid bias shape for broadcast");return[a,o,i]}},hv=-34028234663852886e22,mv=34028234663852886e22}),wA,fv=et(()=>{Gt(),wA=(e,t)=>new(bc(t))(e)}),yA,bA,PA,_v,MA,wv,vA,BA,xA,yv,bv,q4=et(()=>{Gt(),$a(),yA=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),bA=(e,t)=>
vendor: 7,711 bytes, line 2850
2850{if(t==="int32")return e;let r=yA.get(t);if(!r)throw new Error(`WebNN backend does not support data type: ${t}`);let n=r/8;if(e.byteLength%n!==0)throw new Error(`Invalid Uint8Array length - must be a multiple of ${n}.`);let s=e.byteLength/n,a=new(bc(t))(e.buffer,e.byteOffset,s);switch(t){case"int64":case"uint64":{let i=new Int32Array(s);for(let o=0;o<s;o++){let l=a[o];if(l>2147483647n||l<-2147483648n)throw new Error("Can not convert int64 data to int32 - value out of range.");i[o]=Number(l)}return new Uint8Array(i.buffer)}case"int8":case"uint8":case"uint32":{if(t==="uint32"&&a.some(o=>o>2147483647))throw new Error("Can not convert uint32 data to int32 - value out of range.");let i=Int32Array.from(a,Number);return new Uint8Array(i.buffer)}default:throw new Error(`Unsupported data conversion from ${t} to 'int32'`)}},PA=(e,t)=>{if(t==="int32")return e;if(e.byteLength%4!==0)throw new Error("Invalid Uint8Array length - must be a multiple of 4 (int32).");let r=e.byteLength/4,n=new Int32Array(e.buffer,e.byteOffset,r);switch(t){case"int64":{let s=BigInt64Array.from(n,BigInt);return new Uint8Array(s.buffer)}case"uint64":{if(n.some(a=>a<0))throw new Error("Can not convert int32 data to uin64 - negative value found.");let s=BigUint64Array.from(n,BigInt);return new Uint8Array(s.buffer)}case"int8":{if(n.some(a=>a<-128||a>127))throw new Error("Can not convert int32 data to int8 - value out of range.");let s=Int8Array.from(n,Number);return new Uint8Array(s.buffer)}case"uint8":{if(n.some(s=>s<0||s>255))throw new Error("Can not convert int32 data to uint8 - value out of range.");return Uint8Array.from(n,Number)}case"uint32":{if(n.some(a=>a<0))throw new Error("Can not convert int32 data to uint32 - negative value found.");let s=Uint32Array.from(n,Number);return new Uint8Array(s.buffer)}default:throw new Error(`Unsupported data conversion from 'int32' to ${t}`)}},_v=1,MA=()=>_v++,wv=new Map([["int8","int32"],["uint8","int32"],["uint32","int32"],["int64","int32"]]),vA=(e,t)=>{let r=yA.get(e);if(!r)throw new Error(`WebNN backend does not support data type: ${e}`);return t.length>0?Math.ceil(t.reduce((n,s)=>n*s)*r/8):0},BA=class{constructor(e){this.isDataConverted=!1;let{sessionId:t,context:r,tensor:n,dataType:s,shape:a,fallbackDataType:i}=e;this.sessionId=t,this.mlContext=r,this.mlTensor=n,this.dataType=s,this.tensorShape=a,this.fallbackDataType=i}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return vA(this.dataType,this.tensorShape)}destroy(){ur("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(e){this.mlContext.writeTensor(this.mlTensor,e)}async read(e){if(this.fallbackDataType){let t=await this.mlContext.readTensor(this.mlTensor),r=PA(new Uint8Array(t),this.dataType);if(e){(e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)).set(r);return}else return r.buffer}else return e?this.mlContext.readTensor(this.mlTensor,e):this.mlContext.readTensor(this.mlTensor)}canReuseTensor(e,t,r){return this.mlContext===e&&this.dataType===t&&this.tensorShape.length===r.length&&this.tensorShape.every((n,s)=>n===r[s])}setIsDataConverted(e){this.isDataConverted=e}},xA=class{constructor(e,t){this.tensorManager=e,this.wrapper=t}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(e,t,r,n){let s=this.tensorManager.getMLContext(e),a=this.tensorManager.getMLOpSupportLimits(e),i;if(!a?.input.dataTypes.includes(t)){if(i=wv.get(t),!i||a?.input.dataTypes.includes(i))throw new Error(`WebNN backend does not support data type: ${t}`);ur("verbose",()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${t} to ${i}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(s,t,r))return this.wrapper.tensor;if(n){if(this.wrapper.byteLength!==vA(t,r))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 o=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(e,t,r,o,!0,!0,i),n&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(e){let t=e;if(this.wrapper){if(this.wrapper.fallbackType)if(this.wrapper.fallbackType==="int32")t=bA(e,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw new Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(e.byteLength===this.wrapper.byteLength){this.wrapper.write(t);return}else ur("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor()}this.activeUpload?this.activeUpload.set(t):this.activeUpload=new Uint8Array(t)}async download(e){if(this.activeUpload){let t=this.wrapper?.isDataConverted?PA(this.activeUpload,this.wrapper?.type):this.activeUpload;if(e){e instanceof ArrayBuffer?new Uint8Array(e).set(t):new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(t);return}else return t.buffer}if(!this.wrapper)throw new Error("Tensor has not been created.");return e?this.wrapper.read(e):this.wrapper.read()}},yv=class{constructor(e){this.backend=e,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(e){let t=this.backend.getMLContext(e);if(!t)throw new Error("MLContext not found for session.");return t}getMLOpSupportLimits(e){return this.backend.getMLOpSupportLimits(e)}reserveTensorId(){let e=MA();return this.tensorTrackersById.set(e,new xA(this)),e}releaseTensorId(e){let t=this.tensorTrackersById.get(e);t&&(this.tensorTrackersById.delete(e),t.tensorWrapper&&this.releaseTensor(t.tensorWrapper))}async ensureTensor(e,t,r,n,s){ur("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${t}, dataType: ${r}, shape: ${n}, copyOld: ${s}}`);let a=this.tensorTrackersById.get(t);if(!a)throw new Error("Tensor not found.");return a.ensureTensor(e,r,n,s)}upload(e,t){let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");r.upload(t)}async download(e,t){ur("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${e}, dstBuffer: ${t?.byteLength}}`);let r=this.tensorTrackersById.get(e);if(!r)throw new Error("Tensor not found.");return r.download(t)}releaseTensorsForSession(e){for(let t of this.freeTensors)t.sessionId===e&&t.destroy();this.freeTensors=this.freeTensors.filter(t=>t.sessionId!==e)}registerTensor(e,t,r,n){let s=this.getMLContext(e),a=MA(),i=new BA({sessionId:e,context:s,tensor:t,dataType:r,shape:n});return this.tensorTrackersById.set(a,new xA(this,i)),this.externalTensors.add(i),a}async getCachedTensor(e,t,r,n,s,a,i){let o=this.getMLContext(e);for(let[u,p]of this.freeTensors.entries())if(p.canReuseTensor(o,t,r)){ur("verbose",()=>`[WebNN] Reusing tensor {dataType: ${t}, ${i?`fallbackDataType: ${i},`:""} shape: ${r}`);let d=this.freeTensors.splice(u,1)[0];return d.sessionId=e,d}ur("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${t}, ${i?`fallbackDataType: ${i},`:""} shape: ${r}}`);let l=await o.createTensor({dataType:i??t,shape:r,dimensions:r,usage:n,writable:s,readable:a});return new BA({sessionId:e,context:o,tensor:l,dataType:t,shape:r,fallbackDataType:i})}releaseTensor(e){this.externalTensors.has(e)&&this.externalTensors.delete(e),this.freeTensors.push(e)}},bv=(...e)=>new yv(...e)}),Rl,Pv,Mv,X4=et(()=>{Gt(),Ui(),fv(),q4(),$a(),Rl=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),Pv=(e,t)=>
2850{if(e===t)return!0;if(e===void 0||t===void 0)return!1;let r=Object.keys(e).sort(),n=Object.keys(t).sort();return r.length===n.length&&r.every((s,a)=>s===n[a]&&e[s]===t[s])},Mv=class{constructor(e){this.tensorManager=bv(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,_A(e.logLevel,!!e.debug)}get currentSessionId(){if(this.activeSessionId===void 0)throw new Error("No active session");return this.activeSessionId}onRunStart(e){ur("verbose",()=>`[WebNN] onRunStart {sessionId: ${e}}`),this.activeSessionId=e}onRunEnd(e){ur("verbose",()=>`[WebNN] onRunEnd {sessionId: ${e}}`);let t=this.temporarySessionTensorIds.get(e);if(t){for(let r of t)ur("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${r}}`),this.tensorManager.releaseTensorId(r);this.temporarySessionTensorIds.delete(e),this.activeSessionId=void 0}}async createMLContext(e){if(e instanceof GPUDevice){let r=this.mlContextCache.findIndex(n=>n.gpuDevice===e);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext(e);return this.mlContextCache.push({gpuDevice:e,mlContext:n}),n}}else if(e===void 0){let r=this.mlContextCache.findIndex(n=>n.options===void 0&&n.gpuDevice===void 0);if(r!==-1)return this.mlContextCache[r].mlContext;{let n=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:n}),n}}let t=this.mlContextCache.findIndex(r=>Pv(r.options,e));if(t!==-1)return this.mlContextCache[t].mlContext;{let r=await navigator.ml.createContext(e);return this.mlContextCache.push({options:e,mlContext:r}),r}}registerMLContext(e,t){this.mlContextBySessionId.set(e,t);let r=this.sessionIdsByMLContext.get(t);r||(r=new Set,this.sessionIdsByMLContext.set(t,r)),r.add(e),this.mlOpSupportLimitsBySessionId.has(e)||this.mlOpSupportLimitsBySessionId.set(e,t.opSupportLimits()),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(e,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(e,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(e){this.sessionGraphInputs.delete(e),this.sessionGraphOutputs.delete(e);let t=this.mlContextBySessionId.get(e);if(!t)return;this.tensorManager.releaseTensorsForSession(e),this.mlContextBySessionId.delete(e),this.mlOpSupportLimitsBySessionId.delete(e);let r=this.sessionIdsByMLContext.get(t);if(r.delete(e),r.size===0){this.sessionIdsByMLContext.delete(t);let n=this.mlContextCache.findIndex(s=>s.mlContext===t);n!==-1&&this.mlContextCache.splice(n,1)}}getMLContext(e){return this.mlContextBySessionId.get(e)}getMLOpSupportLimits(e){return this.mlOpSupportLimitsBySessionId.get(e)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(e){ur("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${e}}`),this.tensorManager.releaseTensorId(e)}async ensureTensor(e,t,r,n,s){let a=Rl.get(r);if(!a)throw new Error(`Unsupported ONNX data type: ${r}`);return this.tensorManager.ensureTensor(e??this.currentSessionId,t,a,n,s)}async createTemporaryTensor(e,t,r){ur("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${t}, shape: ${r}}`);let n=Rl.get(t);if(!n)throw new Error(`Unsupported ONNX data type: ${t}`);let s=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(e,s,n,r,!1);let a=this.temporarySessionTensorIds.get(e);return a?a.push(s):this.temporarySessionTensorIds.set(e,[s]),s}uploadTensor(e,t){if(!Lr().shouldTransferToMLTensor)throw new Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");ur("verbose",()=>`[WebNN] uploadTensor {tensorId: ${e}, data: ${t.byteLength}}`),this.tensorManager.upload(e,t)}async downloadTensor(e,t){return this.tensorManager.download(e,t)}createMLTensorDownloader(e,t){return async()=>{let r=await this.tensorManager.download(e);return wA(r,t)}}registerMLTensor(e,t,r,n){let s=Rl.get(r);if(!s)throw new Error(`Unsupported ONNX data type: ${r}`);let a=this.tensorManager.registerTensor(e,t,s,n);return ur("verbose",()=>`[WebNN] registerMLTensor {tensor: ${t}, dataType: ${s}, dimensions: ${n}} -> {tensorId: ${a}}`),a}registerMLConstant(e,t,r,n,s,a,i=!1){if(!a)throw new Error("External mounted files are not available.");let o=e;e.startsWith("./")&&(o=e.substring(2));let l=a.get(o);if(!l)throw new Error(`File with name ${o} not found in preloaded files.`);if(t+r>l.byteLength)throw new Error("Out of bounds: data offset and length exceed the external file data size.");let u=l.slice(t,t+r).buffer,p;switch(s.dataType){case"float32":p=new Float32Array(u);break;case"float16":p=typeof Float16Array<"u"&&Float16Array.from?new Float16Array(u):new Uint16Array(u);break;case"int32":p=new Int32Array(u);break;case"uint32":p=new Uint32Array(u);break;case"int64":if(i){let d=bA(new Uint8Array(u),"int64");p=new Int32Array(d.buffer),s.dataType="int32"}else p=new BigInt64Array(u);break;case"uint64":p=new BigUint64Array(u);break;case"int8":p=new Int8Array(u);break;case"int4":case"uint4":case"uint8":p=new Uint8Array(u);break;default:throw new Error(`Unsupported data type: ${s.dataType} in creating WebNN Constant from external data.`)}return ur("verbose",()=>`[WebNN] registerMLConstant {dataType: ${s.dataType}, shape: ${s.shape}}} ${i?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),n.constant(s,p)}registerGraphInput(e){this.temporaryGraphInputs.push(e)}registerGraphOutput(e){this.temporaryGraphOutputs.push(e)}isGraphInput(e,t){let r=this.sessionGraphInputs.get(e);return r?r.includes(t):!1}isGraphOutput(e,t){let r=this.sessionGraphOutputs.get(e);return r?r.includes(t):!1}isGraphInputOutputTypeSupported(e,t,r=!0){let n=Rl.get(Wi(t)),s=this.mlOpSupportLimitsBySessionId.get(e);return typeof n>"u"?!1:r?!!s?.input.dataTypes.includes(n):!!s?.output.dataTypes.includes(n)}flush(){}}}),EA=et(()=>{}),DA,vc,Bc,vv,Bv,IA,TA,xv,Ev,Z4=et(()=>{$a(),EA(),DA=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200
vendor: 20,596 bytes, lines 2850-2935
2850],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[12582912,10],[16777216,10],[26214400,15],[33554432,22],[44236800,2],[58982400,6],[67108864,6],[134217728,6],[167772160,6]]),vc=[],Bc=e=>Math.ceil(Number(e)/16)*16,vv=e=>{for(let t=0;t<vc.length;t++){let r=vc[t];if(e<=r)return r}return Math.ceil(e/16)*16},Bv=1,IA=()=>Bv++,TA=async(e,t,r,n)=>{let s=Bc(r),a=e.device.createBuffer({size:s,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let i=e.getCommandEncoder();e.endComputePass(),i.copyBufferToBuffer(t,0,a,0,s),e.flush(),await a.mapAsync(GPUMapMode.READ);let o=a.getMappedRange();if(n){let l=n();return l.set(new Uint8Array(o,0,r)),l}else return new Uint8Array(o.slice(0,r))}finally{a.destroy()}},xv=class{constructor(e){this.backend=e,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map;for(let[t]of DA)vc.push(t),this.freeBuffers.set(t,[]),this.freeUniformBuffers.set(t,[]);this.sessionCount=0}upload(e,t){let r=t.buffer,n=t.byteOffset,s=t.byteLength,a=Bc(s),i=this.storageCache.get(e);if(!i)throw new Error("gpu data for uploading does not exist");if(Number(i.originalSize)!==s)throw new Error(`inconsistent data size. gpu data size=${i.originalSize}, data size=${s}`);let o=this.backend.device.createBuffer({mappedAtCreation:!0,size:a,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC}),l=o.getMappedRange();new Uint8Array(l).set(new Uint8Array(r,n,s)),o.unmap();let u=this.backend.device.createCommandEncoder();u.copyBufferToBuffer(o,0,i.gpuData.buffer,0,a),this.backend.device.queue.submit([u.finish()]),o.destroy(),ur("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${e})`)}memcpy(e,t){let r=this.storageCache.get(e);if(!r)throw new Error("source gpu data for memcpy does not exist");let n=this.storageCache.get(t);if(!n)throw new Error("destination gpu data for memcpy does not exist");if(r.originalSize!==n.originalSize)throw new Error("inconsistent source and destination gpu data size");let s=Bc(r.originalSize),a=this.backend.getCommandEncoder();this.backend.endComputePass(),a.copyBufferToBuffer(r.gpuData.buffer,0,n.gpuData.buffer,0,s)}registerExternalBuffer(e,t,r){let n;if(r){if(n=r[0],e===r[1])return ur("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, buffer is the same, skip.`),n;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw new Error(`Registering a different external buffer under graph capture mode is not supported yet.
2851             Please use the previous external buffer!`)}else n=IA();return this.storageCache.set(n,{gpuData:{id:n,type:0,buffer:e},originalSize:t}),ur("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${t}) => id=${n}, registered.`),n}unregisterExternalBuffer(e){e!==void 0&&(this.storageCache.delete(e),ur("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${e}`))}create(e,t=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let r=vv(e),n,s=(t&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,a=(t&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(s||a){let o=(s?this.freeBuffers:this.freeUniformBuffers).get(r);o?o.length>0?n=o.pop():n=this.backend.device.createBuffer({size:r,usage:t}):n=this.backend.device.createBuffer({size:r,usage:t})}else n=this.backend.device.createBuffer({size:r,usage:t});let i={id:IA(),type:0,buffer:n};return this.storageCache.set(i.id,{gpuData:i,originalSize:Number(e)}),ur("verbose",()=>`[WebGPU] GpuDataManager.create(size=${e}) => id=${i.id}`),i}get(e){return this.storageCache.get(e)?.gpuData}release(e){let t=typeof e=="bigint"?Number(e):e,r=this.storageCache.get(t);if(!r){if(this.storageCache.size===0)return 0;throw new Error("releasing data does not exist")}return ur("verbose",()=>`[WebGPU] GpuDataManager.release(id=${t}), gpuDataId=${r.gpuData.id}`),this.storageCache.delete(t),this.buffersPending.push(r.gpuData.buffer),r.originalSize}async download(e,t){let r=this.storageCache.get(Number(e));if(!r)throw new Error("data does not exist");await TA(this.backend,r.gpuData.buffer,r.originalSize,t)}refreshPendingBuffers(){if(this.buffersPending.length!==0)if(this.backend.sessionStatus==="default"){for(let e of this.buffersPending){let t=DA.get(e.size);if((e.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let r=this.freeBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else if((e.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let r=this.freeUniformBuffers.get(e.size)||[];t===void 0||r.length>=t?e.destroy():r.push(e)}else e.destroy()}this.buffersPending=[]}else{let e=this.capturedPendingBuffers.get(this.backend.currentSessionId);e||(e=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,e));for(let t of this.buffersPending)e.push(t);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.freeUniformBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache.forEach(e=>{e.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(e=>{e.forEach(t=>{t.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(e){let t=this.capturedPendingBuffers.get(e);t&&(t.forEach(r=>{r.destroy()}),this.capturedPendingBuffers.delete(e)),this.sessionCount-=1,this.sessionCount===0&&(ur("warning",()=>"[WebGPU] Clearing webgpu buffer cache"),this.storageCache.forEach(r=>{r.gpuData.buffer.destroy()}),this.storageCache=new Map)}},Ev=(...e)=>new xv(...e)}),Dv,Mr,on=et(()=>{Dv=class{constructor(e){Object.assign(this,e)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(e=>`${this[e]}`).join(";")),this.key}},Mr=e=>new Dv(e)}),Oo,xc,Bn,Rn,It,en,CA,Go,qa,xt,Yl,Ne,Pt,Iv,$A,Tv,Cv,tr=et(()=>{Gt(),qt(),Oo=64,xc=(e,t)=>{if(t===3)throw new Error("vec3 has same alignment as vec4, use vec4 instead");switch(Number(e)){case 10:return t>1?`vec${t}<f16>`:"f16";case 1:return t>1?`vec${t}<f32>`:"f32";case 6:return t>1?`vec${t}<i32>`:"i32";case 12:return t>1?`vec${t}<u32>`:"u32";case 7:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","i32"];case 13:if(t>1)throw new Error("currently not supported vecX of uint64 yet");return["vec2<u32>","u32"];case 9:if(t!==4)throw new Error("bool must be vec4");return["u32","vec4<bool>"];case 22:return"i32";case 21:return"u32";default:throw new Error(`Unknown data type: ${e}`)}},Bn=(e,t=1)=>{let r=xc(e,t);return typeof r=="string"?r:r[0]},Rn=(e,t=1)=>{let r=xc(e,t);return typeof r=="string"?r:r[1]},It=(...e)=>{let t=[];return e.forEach(r=>{r.length!==0&&t.push({type:12,data:r},{type:12,data:$e.computeStrides(r)})}),t},en=e=>e%4===0?4:e%2===0?2:1,CA=(e="f32",t,r="0")=>!t||t===1?`${e}(${r})`:`vec${t}<${e}>(${r})`,Go=(e,t,r)=>e==="f32"?r:t===1?`f32(${r})`:`vec${t}<f32>(${r})`,qa=(e,t)=>t===4?`(${e}.x + ${e}.y + ${e}.z + ${e}.w)`:t===2?`(${e}.x + ${e}.y)`:t===3?`(${e}.x + ${e}.y + ${e}.z)`:e,xt=(e,t,r,n)=>e.startsWith("uniforms.")&&r>4?typeof t=="string"?n==="f16"?`${e}[(${t}) / 8][(${t}) % 8 / 4][(${t}) % 8 % 4]`:`${e}[(${t}) / 4][(${t}) % 4]`:n==="f16"?`${e}[${Math.floor(t/8)}][${Math.floor(t%8/4)}][${t%8%4}]`:`${e}[${Math.floor(t/4)}][${t%4}]`:r>1?`${e}[${t}]`:e,Yl=(e,t,r,n,s)=>{let a=typeof r=="number",i=a?r:r.length,o=[...new Array(i).keys()],l=i<2?"u32":i<=4?`vec${i}<u32>`:`array<u32, ${i}>`,u=xc(t,s),p=typeof u=="string"?u:u[1],d=typeof u=="string"?u:u[0],c={indices:l,value:p,storage:d,tensor:t},g=q=>typeof q=="string"?q:`${q}u`,A={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=a?"uniforms.":"",B=`${m}${e}_shape`,f=`${m}${e}_strides`,h="";for(let q=0;q<i-1;q++)h+=`
2852    let dim${q} = current / ${xt(f,q,i)};
2853    let rest${q} = current % ${xt(f,q,i)};
2854    indices[${q}] = dim${q};
2855    current = rest${q};
2856    `;h+=`indices[${i-1}] = current;`;let P=i<2?"":`
2857  fn o2i_${e}(offset: u32) -> ${c.indices} {
2858    var indices: ${c.indices};
2859    var current = offset;
2860    ${h}
2861    return indices;
2862  }`,_=q=>(A.offsetToIndices=!0,i<2?q:`o2i_${e}(${q})`),w=[];if(i>=2)for(let q=i-1;q>=0;q--)w.push(`${xt(f,q,i)} * (indices[${q}])`);let b=i<2?"":`
2863  fn i2o_${e}(indices: ${c.indices}) -> u32 {
2864    return ${w.join("+")};
2865  }`,v=q=>(A.indicesToOffset=!0,i<2?q:`i2o_${e}(${q})`),y=(...q)=>i===0?"0u":`${c.indices}(${q.map(g).join(",")})`,$=(q,V)=>i<2?`${q}`:`${xt(q,V,i)}`,k=(q,V,U)=>i<2?`${q}=${U};`:`${xt(q,V,i)}=${U};`,W={},j=(q,V)=>{A.broadcastedIndicesToOffset=!0;let U=`${V.name}broadcastedIndicesTo${e}Offset`;if(U in W)return`${U}(${q})`;let N=[];for(let oe=i-1;oe>=0;oe--){let fe=V.indicesGet("outputIndices",oe+V.rank-i);N.push(`${$(f,oe)} * (${fe} % ${$(B,oe)})`)}return W[U]=`fn ${U}(outputIndices: ${V.type.indices}) -> u32 {
2866             return ${N.length>0?N.join("+"):"0u"};
2867           }`,`${U}(${q})`},F=(q,V)=>(()=>{if(c.storage===c.value)return`${e}[${q}]=${V};`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`${e}[${q}]=vec2<u32>(u32(${V}), select(0u, 0xFFFFFFFFu, ${V} < 0));`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`${e}[${q}]=vec2<u32>(u32(${V}), 0u);`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`${e}[${q}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${V}));`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),R=q=>(()=>{if(c.storage===c.value)return`${e}[${q}]`;if(c.storage==="vec2<u32>"&&c.value==="i32")return`i32(${e}[${q}].x)`;if(c.storage==="vec2<u32>"&&c.value==="u32")return`u32(${e}[${q}].x)`;if(c.storage==="u32"&&c.value==="vec4<bool>")return`vec4<bool>(bool(${e}[${q}] & 0xFFu), bool(${e}[${q}] & 0xFF00u), bool(${e}[${q}] & 0xFF0000u), bool(${e}[${q}] & 0xFF000000u))`;throw new Error(`not supported combination of storage type ${c.storage} and value type ${c.value} yet`)})(),L=i<2?"":`
2868  fn get_${e}ByIndices(indices: ${c.indices}) -> ${p} {
2869    return ${R(`i2o_${e}(indices)`)};
2870  }`,Q=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return`
2871  fn get_${e}(${q}) -> ${p} {
2872    return get_${e}ByIndices(${y(V)});
2873  }`})(),ne=(...q)=>{if(q.length!==i)throw new Error(`indices length must be ${i}`);let V=q.map(g).join(",");return i===0?R("0u"):i===1?R(V[0]):(A.get=!0,A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}(${V})`)},re=q=>i<2?R(q):(A.getByIndices=!0,A.indicesToOffset=!0,`get_${e}ByIndices(${q})`),ce=i<2?"":`
2874  fn set_${e}ByIndices(indices: ${c.indices}, value: ${p}) {
2875    ${F(`i2o_${e}(indices)`,"value")}
2876  }`,ge=i<2?"":(()=>{let q=o.map(U=>`d${U}: u32`).join(", "),V=o.map(U=>`d${U}`).join(", ");return`
2877  fn set_${e}(${q}, value: ${p}) {
2878    set_${e}ByIndices(${y(V)}, value);
2879  }`})();return{impl:()=>{let q=[],V=!1;return A.offsetToIndices&&(q.push(P),V=!0),A.indicesToOffset&&(q.push(b),V=!0),A.broadcastedIndicesToOffset&&(Object.values(W).forEach(U=>q.push(U)),V=!0),A.set&&(q.push(ge),V=!0),A.setByIndices&&(q.push(ce),V=!0),A.get&&(q.push(Q),V=!0),A.getByIndices&&(q.push(L),V=!0),!a&&V&&q.unshift(`const ${B} = ${c.indices}(${r.join(",")});`,`const ${f} = ${c.indices}(${$e.computeStrides(r).join(",")});`),q.join(`
2880`)},type:c,offsetToIndices:_,indicesToOffset:v,broadcastedIndicesToOffset:j,indices:y,indicesGet:$,indicesSet:k,set:(...q)=>{if(q.length!==i+1)throw new Error(`indices length must be ${i}`);let V=q[i];if(typeof V!="string")throw new Error("value must be string");let U=q.slice(0,i).map(g).join(",");return i===0?F("0u",V):i===1?F(U[0],V):(A.set=!0,A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}(${U}, ${V})`)},setByOffset:F,setByIndices:(q,V)=>i<2?F(q,V):(A.setByIndices=!0,A.indicesToOffset=!0,`set_${e}ByIndices(${q}, ${V});`),get:ne,getByOffset:R,getByIndices:re,usage:n,name:e,strides:f,shape:B,rank:i}},Ne=(e,t,r,n=1)=>Yl(e,t,r,"input",n),Pt=(e,t,r,n=1)=>Yl(e,t,r,"output",n),Iv=(e,t,r)=>Yl(e,t,r,"atomicOutput",1),$A=(e,t,r,n=1)=>Yl(e,t,r,"internal",n),Tv=class{constructor(e,t){this.normalizedDispatchGroup=e,this.limits=t,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(e){return`if (global_idx >= ${typeof e=="number"?`${e}u`:e}) { return; }`}mainStart(e=Oo){let t=typeof e=="number"?e:e[0],r=typeof e=="number"?1:e[1],n=typeof e=="number"?1:e[2];if(t>this.limits.maxComputeWorkgroupSizeX||r>this.limits.maxComputeWorkgroupSizeY||n>this.limits.maxComputeWorkgroupSizeZ)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(t*r*n>this.limits.maxComputeInvocationsPerWorkgroup)throw new Error(`workgroup size [${t}, ${r}, ${n}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let s=this.normalizedDispatchGroup[1]===1&&this.normalizedDispatchGroup[2]===1,a=s?`@builtin(global_invocation_id) global_id : vec3<u32>,
2881    @builtin(workgroup_id) workgroup_id : vec3<u32>,
2882    @builtin(local_invocation_index) local_idx : u32,
2883    @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>,
2884                                             @builtin(local_invocation_id) local_id : vec3<u32>,
2885    @builtin(local_invocation_index) local_idx : u32,
2886    @builtin(workgroup_id) workgroup_id : vec3<u32>,
2887    @builtin(num_workgroups) num_workgroups : vec3<u32>`,i=s?`let global_idx = global_id.x;
2888         let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] +
2889             workgroup_id.y * num_workgroups[0] + workgroup_id.x;
2890         let global_idx = workgroup_index * ${t*r*n}u + local_idx;`;return`@compute @workgroup_size(${t}, ${r}, ${n})
2891  fn main(${a}) {
2892    ${i}
2893  `}appendVariableUniforms(e){e.rank!==0&&(e.shape.startsWith("uniforms.")&&this.uniforms.push({name:e.shape.replace("uniforms.",""),type:"u32",length:e.rank}),e.strides.startsWith("uniforms.")&&this.uniforms.push({name:e.strides.replace("uniforms.",""),type:"u32",length:e.rank}))}declareVariable(e,t){if(e.usage==="internal")throw new Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(e),this.appendVariableUniforms(e);let r=e.usage==="input"?"read":"read_write",n=e.usage==="atomicOutput"?"atomic<i32>":e.type.storage;return`@group(0) @binding(${t}) var<storage, ${r}> ${e.name}: array<${n}>;`}declareVariables(...e){return e.map(t=>this.declareVariable(t,this.variableIndex++)).join(`
2894`)}registerInternalVariable(e){if(e.usage!=="internal")throw new Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(e),this.appendVariableUniforms(e)}registerInternalVariables(...e){return e.forEach(t=>this.registerInternalVariable(t)),this}registerUniform(e,t,r=1){return this.uniforms.push({name:e,type:t,length:r}),this}registerUniforms(e){return this.uniforms=this.uniforms.concat(e),this}uniformDeclaration(){if(this.uniforms.length===0)return"";let e=[];for(let{name:t,type:r,length:n}of this.uniforms)if(n&&n>4)r==="f16"?e.push(`@align(16) ${t}:array<mat2x4<${r}>, ${Math.ceil(n/8)}>`):e.push(`${t}:array<vec4<${r}>, ${Math.ceil(n/4)}>`);else{let s=n==null||n===1?r:`vec${n}<${r}>`;e.push(`${t}:${s}`)}return`
2895      struct Uniforms { ${e.join(", ")} };
2896      @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(e=>e.impl()).join(`
2897`)+this.internalVariables.map(e=>e.impl()).join(`
2898`)}get variablesInfo(){if(this.uniforms.length===0)return;let e=t=>[12,10,1,6][["u32","f16","f32","i32"].indexOf(t)];return this.uniforms.map(t=>[e(t.type),t.length??1])}},Cv=(e,t)=>new Tv(e,t)}),$v,SA,Sv,kv,Ov,Gv,is,zv,Fv,Xa=et(()=>{Gt(),qt(),on(),tr(),$v=(e,t)=>{if(!e||e.length!==1)throw new Error("Transpose requires 1 input.");if(t.length!==0&&t.length!==e[0].dims.length)throw new Error(`perm size ${t.length} does not match input rank ${e[0].dims.length}`)},SA=(e,t)=>t.length!==0?t:[...new Array(e).keys()].reverse(),Sv=(e,t)=>$e.sortBasedOnPerm(e,SA(e.length,t)),kv=(e,t,r,n)=>{let s=`fn perm(i: ${n.type.indices}) -> ${r.type.indices} {
2899    var a: ${r.type.indices};`;for(let a=0;a<t;++a)s+=`a[${e[a]}]=i[${a}];`;return s+="return a;}"},Ov=(e,t)=>{let r=[],n=[];for(let s=0;s<e.length;++s)e[s]!==1&&r.push(e[s]),e[t[s]]!==1&&n.push(t[s]);return{newShape:r,newPerm:n}},Gv=(e,t)=>{let r=0;for(let n=0;n<e.length;++n)if(t[e[n]]!==1){if(e[n]<r)return!1;r=e[n]}return!0},is=(e,t)=>{let r=e.dataType,n=e.dims.length,s=SA(n,t),a=Sv(e.dims,s),i=e.dims,o=a,l=n<2||Gv(s,e.dims),u;if(l)return u=A=>{let m=Ne("input",r,i,4),B=Pt("output",r,o,4);return`
2900  ${A.registerUniform("output_size","u32").declareVariables(m,B)}
2901  ${A.mainStart()}
2902    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2903    output[global_idx] = input[global_idx];
2904  }`},{name:"TransposeCopy",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let A=$e.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64/4)},programUniforms:[{type:12,data:Math.ceil(A/4)}]}},getShaderSource:u};let{newShape:p,newPerm:d}=Ov(e.dims,s),c=$e.areEqual(d,[2,3,1]),g=$e.areEqual(d,[3,1,2]);if(p.length===2||c||g){i=c?[p[0],p[1]*p[2]]:g?[p[0]*p[1],p[2]]:p,o=[i[1],i[0]];let A=16;return u=m=>{let B=Ne("a",r,i.length),f=Pt("output",r,o.length);return`
2905  ${m.registerUniform("output_size","u32").declareVariables(B,f)}
2906  var<workgroup> tile : array<array<${f.type.value}, ${A+1}>, ${A}>;
2907  ${m.mainStart([A,A,1])}
2908    let stride = (uniforms.output_shape[1] - 1) / ${A} + 1;
2909    let workgroup_id_x = workgroup_index % stride;
2910    let workgroup_id_y = workgroup_index / stride;
2911    let input_col = workgroup_id_y * ${A}u + local_id.x;
2912    let input_row = workgroup_id_x * ${A}u + local_id.y;
2913    if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) {
2914      tile[local_id.y][local_id.x] = ${B.getByIndices(`${B.type.indices}(input_row, input_col)`)};
2915    }
2916    workgroupBarrier();
2917
2918    let output_col = workgroup_id_x * ${A}u + local_id.x;
2919    let output_row = workgroup_id_y * ${A}u + local_id.y;
2920    if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) {
2921      ${f.setByIndices(`${f.type.indices}(output_row, output_col)`,"tile[local_id.x][local_id.y]")}
2922    }
2923  }`},{name:"TransposeShared",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let m=$e.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(o[1]/A),y:Math.ceil(o[0]/A)},programUniforms:[{type:12,data:m},...It(i,o)]}},getShaderSource:u}}return u=A=>{let m=Ne("a",r,i.length),B=Pt("output",r,o.length);return`
2924  ${A.registerUniform("output_size","u32").declareVariables(m,B)}
2925
2926  ${kv(s,n,m,B)}
2927
2928  ${A.mainStart()}
2929    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2930
2931    let indices = ${B.offsetToIndices("global_idx")};
2932    let aIndices = perm(indices);
2933
2934    ${B.setByOffset("global_idx",m.getByIndices("aIndices"))}
2935  }`},{name:"Transpose",shaderCache:{hint:`${t}`,inputDependencies:["rank"]},getRunData:()=>{let A=$e.size(a);return{outputs:[{dims:a,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...It(i,o)]}},getShaderSource:u}},zv=(e,t)=>{$v(e.inputs,t.perm),e.compute(is(e.inputs[0],t.perm))},Fv=e=>Mr({perm:e.perm})}),Lv,Rv,Yv,Nv,jv,Uv,Wv,Vv,Qv,Hv,Ws,Kv,qv,Xv,Zv,Jv,eB,tB,rB,nB,sB,J4=et(()=>{Gt(),qt(),tr(),OA(),Xa(),Lv={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},Rv={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},Yv={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"
29350",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},Nv={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},jv=(e,t)=>{let r=[];for(let n=t-e;n<t;++n)r.push(n);return r},Uv=(e,t)=>{let r=[],n=e.length;for(let a=0;a<n;a++)t.indexOf(a)===-1&&r.push(e[a]);let s=t.map(a=>e[a]);return[r,s]},Wv=(e,t)=>{let r=e.length+t.length,n=[],s=0;for(let a=0;a<r;a++)t.indexOf(a)===-1?n.push(e[s++]):n.push(1);return n},Vv=(e,t)=>{for(let r=0;r<e.length;++r)if(e[e.length-r-1]!==t-1-r)return!1;return!0},Qv=(e,t)=>{let r=[];if(!Vv(e,t)){for(let n=0;n<t;++n)e.indexOf(n)===-1&&r.push(n);e.forEach(n=>r.push(n))}return r},Hv=(e,t,r,n,s,a,i)=>{let o=r[0].dims,l=$e.size(a),u=$e.size(i),p=Ne("_A",r[0].dataType,o),d=Pt("output",s,a),c=64;l===1&&(c=256);let g=`
2936          var<workgroup> aBestValues : array<f32, ${c}>;
2937       `,A=m=>`
2938        ${m.registerUniform("reduceSize","u32").declareVariables(p,d)}
2939        ${g}
2940        fn DIV_CEIL(a : u32, b : u32) -> u32 {
2941          return ((a - 1u) / b + 1u);
2942         }
2943         ${m.mainStart(c)}
2944
2945          let outputIndex = global_idx / ${c};
2946          let offset = outputIndex * uniforms.reduceSize;
2947
2948          var bestValue = f32(${Yv[n]});
2949          let Length = uniforms.reduceSize;
2950          for (var k = local_idx; k < Length; k = k + ${c}) {
2951           let candidate = f32(${p.getByOffset("offset + k")});
2952           bestValue = ${Lv[n]};
2953          }
2954          aBestValues[local_idx] = bestValue;
2955          workgroupBarrier();
2956
2957         var reduceSize = min(Length, ${c}u);
2958         for (var currentSize = reduceSize / 2u; reduceSize > 1u;
2959             currentSize = reduceSize / 2u) {
2960           let interval = DIV_CEIL(reduceSize, 2u);
2961           if (local_idx < currentSize) {
2962            let candidate = aBestValues[local_idx + interval];
2963            bestValue = ${Rv[n]};
2964            aBestValues[local_idx] = bestValue;
2965           }
2966           reduceSize = interval;
2967           workgroupBarrier();
2968         }
2969
2970         if (local_idx == 0u) {
2971          ${d.setByOffset("outputIndex",`${n==="mean"?`${d.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${d.type.storage}(${Nv[n]})`}`)};
2972         }
2973        }`;return{name:e,shaderCache:{hint:`${t};${c}`,inputDependencies:["type"]},getShaderSource:A,getRunData:()=>({outputs:[{dims:a,dataType:s}],dispatchGroup:{x:l},programUniforms:[{type:12,data:u}]})}},Ws=(e,t,r,n)=>
vendor: 11,470 bytes, lines 2973-3019
2973{let s=e.inputs.length===1?r:kA(e.inputs,r),a=s.axes;a.length===0&&!s.noopWithEmptyAxes&&(a=e.inputs[0].dims.map((g,A)=>A));let i=$e.normalizeAxes(a,e.inputs[0].dims.length),o=i,l=e.inputs[0],u=Qv(o,e.inputs[0].dims.length);u.length>0&&(l=e.compute(is(e.inputs[0],u),{inputs:[0],outputs:[-1]})[0],o=jv(o.length,l.dims.length));let[p,d]=Uv(l.dims,o),c=p;s.keepDims&&(c=Wv(p,i)),e.compute(Hv(t,s.cacheKey,[l],n,e.inputs[0].dataType,c,d),{inputs:[l]})},Kv=(e,t)=>{Ws(e,"ReduceMeanShared",t,"mean")},qv=(e,t)=>{Ws(e,"ReduceL1Shared",t,"l1")},Xv=(e,t)=>{Ws(e,"ReduceL2Shared",t,"l2")},Zv=(e,t)=>{Ws(e,"ReduceLogSumExpShared",t,"logSumExp")},Jv=(e,t)=>{Ws(e,"ReduceMaxShared",t,"max")},eB=(e,t)=>{Ws(e,"ReduceMinShared",t,"min")},tB=(e,t)=>{Ws(e,"ReduceProdShared",t,"prod")},rB=(e,t)=>{Ws(e,"ReduceSumShared",t,"sum")},nB=(e,t)=>{Ws(e,"ReduceSumSquareShared",t,"sumSquare")},sB=(e,t)=>{Ws(e,"ReduceLogSumShared",t,"logSum")}}),Vs,aB,Ec,kA,Qs,iB,oB,lB,uB,cB,dB,pB,gB,AB,hB,Hs,mB,fB,_B,wB,yB,bB,PB,MB,vB,BB,OA=et(()=>{Gt(),qt(),on(),tr(),J4(),Vs=e=>{if(!e||e.length===0||e.length>2)throw new Error("Reduce op requires 1 or 2 inputs.");if(e.length===2&&e[1].dims.length!==1)throw new Error("Invalid axes input dims.")},aB=e=>["","",`var value = ${e.getByIndices("input_indices")};`,""],Ec=(e,t,r,n,s,a,i=!1,o=!1)=>{let l=[],u=r[0].dims,p=u.length,d=$e.normalizeAxes(s,p),c=!o&&d.length===0;u.forEach((m,B)=>{c||d.indexOf(B)>=0?i&&l.push(1):l.push(m)});let g=l.length,A=$e.size(l);return{name:e,shaderCache:t,getShaderSource:m=>{let B=[],f=Ne("_A",r[0].dataType,p),h=Pt("output",a,g),P=n(f,h,d),_=P[2];for(let w=0,b=0;w<p;w++)c||d.indexOf(w)>=0?(i&&b++,_=`for(var j${w}: u32 = 0; j${w} < ${u[w]}; j${w}++) {
2974                  ${P[2].includes("last_index")?`let last_index = j${w};`:""}
2975                  ${f.indicesSet("input_indices",w,`j${w}`)}
2976                  ${_}
2977                }`):(B.push(`${f.indicesSet("input_indices",w,h.indicesGet("output_indices",b))};`),b++);return`
2978
2979        ${m.registerUniform("output_size","u32").declareVariables(f,h)}
2980
2981        ${m.mainStart()}
2982          ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2983          var input_indices: ${f.type.indices};
2984          let output_indices = ${h.offsetToIndices("global_idx")};
2985
2986          ${B.join(`
2987`)}
2988          ${P[0]}       // init ops for reduce max/min
2989          ${P[1]}
2990          ${_}
2991          ${P[3]}
2992          ${P.length===4?h.setByOffset("global_idx","value"):P.slice(4).join(`
2993`)}
2994        }`},getRunData:()=>({outputs:[{dims:l,dataType:a}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:[{type:12,data:A},...It(u,l)]})}},kA=(e,t)=>{let r=[];return e[1].dims[0]>0&&e[1].getBigInt64Array().forEach(n=>r.push(Number(n))),Mr({axes:r,keepDims:t.keepDims,noopWithEmptyAxes:t.noopWithEmptyAxes})},Qs=(e,t,r,n)=>{let s=e.inputs,a=s.length===1?r:kA(s,r);e.compute(Ec(t,{hint:a.cacheKey,inputDependencies:["rank"]},[s[0]],a.noopWithEmptyAxes&&a.axes.length===0?aB:n,a.axes,s[0].dataType,a.keepDims,a.noopWithEmptyAxes),{inputs:[0]})},iB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceLogSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,"value = log(value);"])},oB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceL1",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += abs(${r.getByIndices("input_indices")});`,""])},lB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceL2",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])},uB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceLogSumExp",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += exp(${r.getByIndices("input_indices")});`,"value = log(value);"])},cB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceMax",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(r.indicesSet("input_indices",i,0));return[`${a.join(`
2995`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = max(value, ${r.getByIndices("input_indices")});`,""]})},dB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceMean",t,(r,n,s)=>{let a=1;for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&(a*=e.inputs[0].dims[i]);return["var sum = f32(0);","",`sum += f32(${r.getByIndices("input_indices")});`,`let value = ${n.type.value}(sum / ${a});`]})},pB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceMin",t,(r,n,s)=>{let a=[];for(let i=0;i<r.rank;i++)(s.indexOf(i)>=0||s.length===0)&&a.push(`input_indices[${i}] = 0;`);return[`${a.join(`
2996`)}`,`var value = ${r.getByIndices("input_indices")};`,`value = min(value, ${r.getByIndices("input_indices")});`,""]})},gB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceProd",t,(r,n)=>[`var value = ${n.type.storage}(1);`,"",`value *= ${r.getByIndices("input_indices")};`,""])},AB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceSum",t,(r,n)=>[`var value = ${n.type.storage}(0);`,"",`value += ${r.getByIndices("input_indices")};`,""])},hB=(e,t)=>{Vs(e.inputs),Qs(e,"ReduceSumSquare",t,(r,n)=>[`var t = ${n.type.value}(0); var value = ${n.type.value}(0);`,"",`t = ${r.getByIndices("input_indices")}; value += t * t;`,""])},Hs=(e,t,r)=>{if(t.length===0)return r;let n=1,s=1;for(let a=0;a<t.length;a++)t.indexOf(a)===-1?n*=e[a]:s*=e[a];return s<32&&n>1024},mB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?dB(e,t):Kv(e,t)},fB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?oB(e,t):qv(e,t)},_B=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?lB(e,t):Xv(e,t)},wB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?uB(e,t):Zv(e,t)},yB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?cB(e,t):Jv(e,t)},bB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?pB(e,t):eB(e,t)},PB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?gB(e,t):tB(e,t)},MB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?AB(e,t):rB(e,t)},vB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?hB(e,t):nB(e,t)},BB=(e,t)=>{Hs(e.inputs[0].dims,t.axes,t.noopWithEmptyAxes)?iB(e,t):sB(e,t)}}),GA,xB,EB,zA,e3=et(()=>{Gt(),on(),OA(),GA=e=>{if(!e||e.length===0||e.length>2)throw new Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(e[0].dataType!==1)throw new Error("Invalid input type.")},xB=(e,t)=>{GA(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(`
2997`)}`,`var value = ${n.getByIndices("input_indices")};
2998var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?"<=":"<"} value) {
2999         value = ${n.getByIndices("input_indices")};
3000         best_index = i32(last_index);
3001       }`,"",s.setByOffset("global_idx","best_index")]};e.compute(Ec("ArgMin",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},EB=(e,t)=>{GA(e.inputs);let r=(n,s,a)=>{let i=[];for(let o=0;o<n.rank;o++)(a.indexOf(o)>=0||a.length===0)&&i.push(`input_indices[${o}] = 0;`);return[`${i.join(`
3002`)}`,`var value = ${n.getByIndices("input_indices")};
3003var best_index : i32 = 0;`,`if (${n.getByIndices("input_indices")} ${t.selectLastIndex>0?">=":">"} value) {
3004         value = ${n.getByIndices("input_indices")};
3005         best_index = i32(last_index);
3006       }`,"",s.setByOffset("global_idx","best_index")]};e.compute(Ec("argMax",{hint:t.cacheKey,inputDependencies:["rank"]},[e.inputs[0]],r,[t.axis],7,t.keepDims),{inputs:[0]})},zA=e=>Mr(e)}),DB,Dc,IB,TB,CB,Nl,$B,SB,FA=et(()=>{Gt(),qt(),EA(),tr(),DB=(e,t)=>{let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4],o=e[5];if(i&&o)throw new Error("Attention cannot have both past and attention_bias");if(r.dims.length!==3)throw new Error('Input "input" must have 3 dimensions');let l=r.dims[0],u=r.dims[1],p=r.dims[2];if(s.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimensions');if(n.dims.length!==2)throw new Error('Input "weights" is expected to have 2 dimensions');if(n.dims[0]!==p)throw new Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(s.dims[0]!==n.dims[1])throw new Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let d=s.dims[0]/3,c=d,g=c;if(t.qkvHiddenSizes.length>0){if(t.qkvHiddenSizes.length!==3)throw new Error("qkv_hidden_sizes attribute should have 3 elements");for(let P of t.qkvHiddenSizes)if(P%t.numHeads!==0)throw new Error("qkv_hidden_sizes should be divisible by num_heads");d=t.qkvHiddenSizes[0],c=t.qkvHiddenSizes[1],g=t.qkvHiddenSizes[2]}let A=u;if(d!==c)throw new Error("qkv_hidden_sizes first element should be same as the second");if(s.dims[0]!==d+c+g)throw new Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(i){if(c!==g)throw new Error('Input "past" expect k_hidden_size == v_hidden_size');if(i.dims.length!==5)throw new Error('Input "past" must have 5 dimensions');if(i.dims[0]!==2)throw new Error('Input "past" first dimension must be 2');if(i.dims[1]!==l)throw new Error('Input "past" second dimension must be batch_size');if(i.dims[2]!==t.numHeads)throw new Error('Input "past" third dimension must be num_heads');if(i.dims[4]!==c/t.numHeads)throw new Error('Input "past" fifth dimension must be k_hidden_size / num_heads');t.pastPresentShareBuffer||(m=i.dims[3])}let B=A+m,f=-1,h=0;if(a)throw new Error("Mask not supported");if(i)throw new Error("past is not supported");if(o){if(o.dims.length!==4)throw new Error('Input "attention_bias" must have 4 dimensions');if(o.dims[0]!==l||o.dims[1]!==t.numHeads||o.dims[2]!==u||o.dims[3]!==B)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:l,sequenceLength:u,pastSequenceLength:m,kvSequenceLength:A,totalSequenceLength:B,maxSequenceLength:f,inputHiddenSize:p,hiddenSize:d,vHiddenSize:g,headSize:Math.floor(d/t.numHeads),vHeadSize:Math.floor(g/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}},Dc=(e,t,r)=>t&&e?`
3007      let total_sequence_length_input = u32(${t.getByOffset("0")});
3008      let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length);
3009      let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input;
3010      let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input;
3011      total_sequence_length = u32(${e?.getByOffset("batchIdx")}) + 1;
3012      var past_sequence_length: u32 = 0;
3013      if (is_first_prompt == false) {
3014        past_sequence_length = total_sequence_length - sequence_length;
3015      }
3016       `:`
3017    ${r?"let past_sequence_length = uniforms.past_sequence_length":""};
3018    let present_sequence_length = total_sequence_length;
3019    `,IB=(e,t,r,n,s,a,i,o)=>{let l=en(i?1:a),u=64,p=a/l;p<u&&(u=32);let d=Math.ceil(a/l/u),c=[{type:12,data:t},{type:12,data:r},{type:12,data:n},{type:12,data:s},{type:12,data:p},{type:12,data:d}],g=Bn(e.dataType,l),A=Rn(1,l),m=["type"];i&&m.push("type"),o&&m.push("type");let B=f=>{let h=Pt("x",e.dataType,e.dims,l),P=[h],_=i?Ne("seq_lens",i.dataType,i.dims):void 0;_&&P.push(_);let w=o?Ne("total_sequence_length_input",o.dataType,o.dims):void 0;w&&P.push(w);let b=Rn(e.dataType),v=[{name:"batch_size",type:"u32"},{name:"num_heads",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"sequence_length",type:"u32"},{name:"total_sequence_length",type:"u32"},{name:"elements_per_thread",type:"u32"}];return`
3020  var<workgroup> thread_max: array<f32, ${u}>;
3021  var<workgroup> thread_sum: array<f32, ${u}>;
3022  ${f.registerUniforms(v).declareVariables(...P)}
3023  ${f.mainStart([u,1,1])}
3024    let batchIdx = workgroup_id.z / uniforms.num_heads;
3025    let headIdx = workgroup_id.z % uniforms.num_heads;
3026    let sequence_length = uniforms.sequence_length;
3027    var total_sequence_length = uniforms.total_sequence_length;
3028    ${Dc(_,w,!1)}
3029    let local_offset = local_idx * uniforms.elements_per_thread;
3030    let offset = (global_idx / ${u}) * uniforms.total_sequence_length + local_offset;
3031    let seq_causal_length = ${i?"u32(past_sequence_length + workgroup_id.y + 1)":"total_sequence_length"};
3032    var thread_max_vector = ${A}(-3.4028234663852886e+38f);
3033    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
3034      thread_max_vector = max(${A}(x[offset + i]), thread_max_vector);
3035    }
3036    thread_max[local_idx] = ${(()=>{switch(l){case 1:return"thread_max_vector";case 2:return"max(thread_max_vector.x, thread_max_vector.y)";case 4:return"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))";default:throw new Error(`Unsupported components: ${l}`)}})()};
3037    workgroupBarrier();
3038
3039    var max_value =  f32(-3.4028234663852886e+38f);
3040    for (var i = 0u; i < ${u}; i++) {
3041      max_value = max(thread_max[i], max_value);
3042    }
3043
3044    var sum_vector = ${A}(0);
3045    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
3046      sum_vector += exp(${A}(x[offset + i]) - max_value);
3047    }
3048    thread_sum[local_idx] = ${(()=>{switch(l){case 1:return"sum_vector";case 2:return"sum_vector.x + sum_vector.y";case 4:return"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w";default:throw new Error(`Unsupported components: ${l}`)}})()};
3049    workgroupBarrier();
3050
3051    var sum: f32 = 0;
3052    for (var i = 0u; i < ${u}; i++) {
3053      sum += thread_sum[i];
3054    }
3055
3056    if (sum == 0) {
3057      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
3058        x[offset + i] = ${h.type.value}(${b}(1.0) / ${b}(seq_causal_length));
3059      }
3060    } else {
3061      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
3062        var f32input = ${A}(x[offset + i]);
3063        x[offset + i] = ${h.type.value}(exp(f32input - max_value) / sum);
3064      }
3065    }
3066      ${i?`
3067        for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) {
3068          x[offset + total_seq_id] = ${h.type.value}(${b}(0));
3069        }`:""};
3070  }`};return{name:"AttentionProbsSoftmax",shaderCache:{hint:`${u};${g};${l}`,inputDependencies:m},getShaderSource:B,getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:s,z:t*r},programUniforms:c})}},TB=(e,t,r,n,s,a,i,o,l)=>{let u=i+a.kvSequenceLength,p=[a.batchSize,a.numHeads,a.sequenceLength,u],d=e>1&&n,c=a.kvNumHeads?a.kvNumHeads:a.numHeads,g=d?[a.batchSize,c,u,a.headSize]:void 0,A=a.nReps?a.nReps:1,m=a.scale===0?1/Math.sqrt(a.headSize):a.scale,B=en(a.headSize),f=a.headSize/B,h=12,P={x:Math.ceil(u/h),y:Math.ceil(a.sequenceLength/h),z:a.batchSize*a.numHeads},_=[{type:12,data:a.sequenceLength},{type:12,data:f},{type:12,data:u},{type:12,data:a.numHeads},{type:12,data:a.headSize},{type:1,data:m},{type:12,data:i},{type:12,data:a.kvSequenceLength},{type:12,data:A}],w=d&&n&&$e.size(n.dims)>0,b=["type","type"];w&&b.push("type"),s&&b.push("type"),o&&b.push("type"),l&&b.push("type");let v=[{dims:p,dataType:t.dataType,gpuDataType:0}];d&&v.push({dims:g,dataType:t.dataType,gpuDataType:0});let y=$=>{let k=Ne("q",t.dataType,t.dims,B),W=Ne("key",r.dataType,r.dims,B),j=[k,W];if(w){let ce=Ne("past_key",n.dataType,n.dims,B);j.push(ce)}s&&j.push(Ne("attention_bias",s.dataType,s.dims));let F=o?Ne("seq_lens",o.dataType,o.dims):void 0;F&&j.push(F);let R=l?Ne("total_sequence_length_input",l.dataType,l.dims):void 0;R&&j.push(R);let L=Pt("output",t.dataType,p),Q=[L];d&&Q.push(Pt("present_key",t.dataType,g,B));let ne=Rn(1,B),re=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"alpha",type:"f32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return`
3071  const TILE_SIZE = ${h}u;
3072
3073  var<workgroup> tileQ: array<${k.type.storage}, ${h*h}>;
3074  var<workgroup> tileK: array<${k.type.storage}, ${h*h}>;
3075  ${$.registerUniforms(re).declareVariables(...j,...Q)}
3076  ${$.mainStart([h,h,1])}
3077    // x holds the N and y holds the M
3078    let headIdx = workgroup_id.z % uniforms.num_heads;
3079    let kvHeadIdx = ${A===1?"headIdx":"headIdx / uniforms.n_reps"};
3080    let kv_num_heads = ${A===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"};
3081    let batchIdx = workgroup_id.z / uniforms.num_heads;
3082    let m = workgroup_id.y * TILE_SIZE;
3083    let n = workgroup_id.x * TILE_SIZE;
3084    let sequence_length = uniforms.M;
3085    var total_sequence_length = uniforms.N;
3086    ${Dc(F,R,!0)}
3087    let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx;
3088    let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;
3089    ${w&&d?"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;":""};
3090    let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K;
3091    ${d?"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;":""}
3092    var value = ${ne}(0);
3093    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
3094      if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) {
3095        tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];
3096      }
3097      if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {
3098        var idx = TILE_SIZE * local_id.y + local_id.x;
3099      ${w&&d?`
3100              if (n + local_id.y < past_sequence_length) {
3101                tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x];
3102              } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {
3103                tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x];
3104              }`:`
3105          if (n + local_id.y < uniforms.kv_sequence_length) {
3106            tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x];
3107          }`}
3108      ${d?`if (n + local_id.y < present_sequence_length) {
3109        present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx];
3110      }`:""}
3111      }
3112      workgroupBarrier();
3113
3114      for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {
3115          value += ${ne}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]);
3116      }
3117
3118      workgroupBarrier();
3119    }
3120
3121    if (global_id.y < uniforms.M && global_id.x < total_sequence_length) {
3122      let headOffset = workgroup_id.z * uniforms.M * uniforms.N;
3123      let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x;
3124      var sum: f32 = ${(()=>{switch(B){case 1:return"value";case 2:return"value.x + value.y";case 4:return"value.x + value.y + value.z + value.w";default:throw new Error(`Unsupported components: ${B}`)}})()};
3125        output[outputIdx] = ${L.type.value} (sum * uniforms.alpha) + ${s?"attention_bias[outputIdx]":"0.0"};
3126    }
3127  }`};return{name:"AttentionProbs",shaderCache:{hint:`${B};${s!==void 0};${n!==void 0};${e}`,inputDependencies:b},getRunData:()=>({outputs:v,dispatchGroup:P,programUniforms:_}),getShaderSource:y}},CB=(e,t,r,n,s,a,i=void 0,o=void 0)=>{let l=a+s.kvSequenceLength,u=s.nReps?s.nReps:1,p=s.vHiddenSize*u,d=e>1&&n,c=s.kvNumHeads?s.kvNumHeads:s.numHeads,g=d?[s.batchSize,c,l,s.headSize]:void 0,A=[s.batchSize,s.sequenceLength,p],m=12,B={x:Math.ceil(s.vHeadSize/m),y:Math.ceil(s.sequenceLength/m),z:s.batchSize*s.numHeads},f=[{type:12,data:s.sequenceLength},{type:12,data:l},{type:12,data:s.vHeadSize},{type:12,data:s.numHeads},{type:12,data:s.headSize},{type:12,data:p},{type:12,data:a},{type:12,data:s.kvSequenceLength},{type:12,data:u}],h=d&&n&&$e.size(n.dims)>0,P=["type","type"];h&&P.push("type"),i&&P.push("type"),o&&P.push("type");let _=[{dims:A,dataType:t.dataType,gpuDataType:0}];d&&_.push({dims:g,dataType:t.dataType,gpuDataType:0});let w=b=>{let v=Ne("probs",t.dataType,t.dims),y=Ne("v",r.dataType,r.dims),$=[v,y];h&&$.push(Ne("past_value",n.dataType,n.dims));let k=i?Ne("seq_lens",i.dataType,i.dims):void 0;i&&$.push(k);let W=o?Ne("total_sequence_length_input",o.dataType,o.dims):void 0;o&&$.push(W);let j=[Pt("output",t.dataType,A)];d&&j.push(Pt("present_value",t.dataType,g));let F=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"v_hidden_size",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}];return`
3128  const TILE_SIZE = ${m}u;
3129  var<workgroup> tileQ: array<${v.type.value}, ${m*m}>;
3130  var<workgroup> tileV: array<${v.type.value}, ${m*m}>;
3131  ${b.registerUniforms(F).declareVariables(...$,...j)}
3132  ${b.mainStart([m,m,1])}
3133   let headIdx = workgroup_id.z % uniforms.num_heads;
3134   let batchIdx = workgroup_id.z / uniforms.num_heads;
3135   let kvHeadIdx = ${u===1?"headIdx":"headIdx / uniforms.n_reps"};
3136   let kv_num_heads = ${u===1?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"};
3137   let m = global_id.y;
3138   let n = global_id.x;
3139   let sequence_length = uniforms.M;
3140   var total_sequence_length = uniforms.K;
3141   ${Dc(k,W,!0)}
3142   let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;
3143   let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch
3144   ${h&&d?"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;":""};
3145   let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n;
3146   ${d?"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;":""}
3147   var value = ${v.type.storage}(0);
3148   for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
3149      if (m < uniforms.M && w + local_id.x < uniforms.K) {
3150        tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];
3151      }
3152      if (n < uniforms.N && w + local_id.y < uniforms.K) {
3153        var idx = TILE_SIZE * local_id.y + local_id.x;
3154        ${h&&d?`
3155        if (w + local_id.y < past_sequence_length) {
3156          tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N];
3157        } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {
3158          tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N];
3159        }
3160      `:`
3161            if (w + local_id.y < uniforms.kv_sequence_length) {
3162              tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N];
3163            }`}
3164        ${d?`
3165            if (w + local_id.y < present_sequence_length) {
3166          present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx];
3167        }`:""}
3168      }
3169     workgroupBarrier();
3170     for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) {
3171       value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x];
3172     }
3173     workgroupBarrier();
3174   }
3175
3176   // we need to transpose output from BNSH_v to BSND_v
3177   if (m < uniforms.M && n < uniforms.N) {
3178     let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size
3179       + headIdx * uniforms.N + n;
3180     output[outputIdx] = value;
3181   }
3182  }`};return{name:"AttentionScore",shaderCache:{hint:`${n!==void 0};${e}`,inputDependencies:P},getRunData:()=>({outputs:_,dispatchGroup:B,programUniforms:f}),getShaderSource:w}},Nl=(e,t,r,n,s,a,i,o,l,u,p=void 0,d=void 0)=>{let c=Math.min(e.outputCount,1+(i?1:0)+(o?1:0)),g=c>1?u.pastSequenceLength:0,A=g+u.kvSequenceLength,m=l&&$e.size(l.dims)>0?l:void 0,B=[t,r];c>1&&i&&$e.size(i.dims)>0&&B.push(i),m&&B.push(m),p&&B.push(p),d&&B.push(d);let f=e.compute(TB(c,t,r,i,m,u,g,p,d),{inputs:B,outputs:c>1?[-1,1]:[-1]})[0];e.compute(IB(f,u.batchSize,u.numHeads,g,u.sequenceLength,A,p,d),{inputs:p&&d?[f,p,d]:[f],outputs:[]});let h=[f,n];c>1&&o&&$e.size(o.dims)>0&&h.push(o),p&&h.push(p),d&&h.push(d),e.compute(CB(c,f,n,o,u,g,p,d),{inputs:h,outputs:c>1?[0,2]:[0]})},$B=(e,t)=>{let r=[t.batchSize,t.numHeads,t.sequenceLength,t.headSize],n=t.sequenceLength,s=t.inputHiddenSize,a=t.headSize,i=12,o={x:Math.ceil(t.headSize/i),y:Math.ceil(t.sequenceLength/i),z:t.batchSize*t.numHeads},l=[e.inputs[0],e.inputs[1],e.inputs[2]],u=[{type:12,data:n},{type:12,data:s},{type:12,data:a},{type:12,data:t.numHeads},{type:12,data:t.headSize},{type:12,data:t.hiddenSize},{type:12,data:t.hiddenSize+t.hiddenSize+t.vHiddenSize}],p=d=>{let c=Pt("output_q",l[0].dataType,r),g=Pt("output_k",l[0].dataType,r),A=Pt("output_v",l[0].dataType,r),m=Ne("input",l[0].dataType,l[0].dims),B=Ne("weight",l[1].dataType,l[1].dims),f=Ne("bias",l[2].dataType,l[2].dims),h=m.type.storage,P=[{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}];return`
3183  const TILE_SIZE = ${i}u;
3184  var<workgroup> tileInput: array<${h}, ${i*i}>;
3185  var<workgroup> tileWeightQ: array<${h}, ${i*i}>;
3186  var<workgroup> tileWeightK: array<${h}, ${i*i}>;
3187  var<workgroup> tileWeightV: array<${h}, ${i*i}>;
3188  ${d.registerUniforms(P).declareVariables(m,B,f,c,g,A)}
3189  ${d.mainStart([i,i,1])}
3190    let batchIndex = workgroup_id.z / uniforms.num_heads;
3191    let headNumber = workgroup_id.z % uniforms.num_heads;
3192    let m = global_id.y;
3193    let n = global_id.x;
3194
3195    let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;
3196    let biasOffsetQ = headNumber * uniforms.head_size;
3197    let biasOffsetK = uniforms.hidden_size + biasOffsetQ;
3198    let biasOffsetV = uniforms.hidden_size + biasOffsetK;
3199
3200    var valueQ = ${h}(0);
3201    var valueK = ${h}(0);
3202    var valueV = ${h}(0);
3203    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
3204      if (m < uniforms.M && w + local_id.x < uniforms.K) {
3205        tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];
3206      }
3207      if (n < uniforms.N && w + local_id.y < uniforms.K) {
3208        let offset = n + (w + local_id.y) * uniforms.ldb;
3209        tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];
3210        tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];
3211        tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];
3212      }
3213      workgroupBarrier();
3214      for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) {
3215        let inputTileOffset = TILE_SIZE * local_id.y + k;
3216        let weightTileOffset = TILE_SIZE * k + local_id.x;
3217        valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset];
3218        valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset];
3219        valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset];
3220      }
3221
3222      workgroupBarrier();
3223    }
3224
3225    let headOffset = (m * uniforms.N + n) % uniforms.head_size;
3226    valueQ += bias[headOffset + biasOffsetQ];
3227    valueK += bias[headOffset + biasOffsetK];
3228    valueV += bias[headOffset + biasOffsetV];
3229
3230    let offset = workgroup_id.z * uniforms.M * uniforms.N;
3231    if (m < uniforms.M && n < uniforms.N) {
3232      let outputIdx = offset + m * uniforms.N + n;
3233      output_q[outputIdx] = valueQ;
3234      output_k[outputIdx] = valueK;
3235      output_v[outputIdx] = valueV;
3236    }
3237  }`};return e.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0},{dims:r,dataType:e.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:u}),getShaderSource:p},{inputs:l,outputs:[-1,-1,-1]})},SB=(e,t)=>{let r=DB(e.inputs,t),[n,s,a]=$B(e,r);return Nl(e,n,s,a,e.inputs[4],void 0,void 0,void 0,e.inputs[5],r)}}),kB,OB,GB,zB,t3=et(()=>{ys(),Gt(),qt(),on(),tr(),kB=(e,t)=>{if(!e||e.length!==5)throw new Error("BatchNormalization requires 5 inputs");let r=(n,s,a)=>{let i=s.length;if(i!==n.length)throw new Error(`${a}: num dimensions != ${i}`);s.forEach((o,l)=>{if(o!==n[l])throw new Error(`${a}: dim[${l}] do not match`)})};if(e[0].dims.length>1){let n=t.format==="NHWC"?t.spatial?e[0].dims.slice(-1):e[0].dims.slice(-1).concat(e[0].dims.slice(1,e[0].dims.length-1)):e[0].dims.slice(1,t.spatial?2:void 0);r(e[1].dims,n,"Invalid input scale"),r(e[2].dims,n,"Invalid input B"),r(e[3].dims,n,"Invalid input mean"),r(e[4].dims,n,"Invalid input var")}else r(e[1].dims,[1],"Invalid input scale"),r(e[2].dims,[1],"Invalid input B"),r(e[3].dims,[1],"Invalid input mean"),r(e[4].dims,[1],"Invalid input var")},OB=(e,t)=>{let{epsilon:r,spatial:n,format:s}=t,a=e[0].dims,i=n?en(a[a.length-1]):1,o=s==="NHWC"&&a.length>1?i:1,l=$e.size(a)/i,u=n,p=u?a.length:a,d=Ne("x",e[0].dataType,e[0].dims,i),c=Ne("scale",e[1].dataType,e[1].dims,o),g=Ne("bias",e[2].dataType,e[2].dims,o),A=Ne("inputMean",e[3].dataType,e[3].dims,o),m=Ne("inputVar",e[4].dataType,e[4].dims,o),B=Pt("y",e[0].dataType,p,i),f=()=>{let P="";if(n)P=`let cOffset = ${a.length===1?"0u":s==="NHWC"?`outputIndices[${a.length-1}] / ${i}`:"outputIndices[1]"};`;else if(s==="NCHW")P=`
3238            ${B.indicesSet("outputIndices","0","0")}
3239            let cOffset = ${B.indicesToOffset("outputIndices")};`;else{P=`var cIndices = ${c.type.indices}(0);
3240                       cIndices[0] = outputIndices[${a.length-1}];`;for(let _=1;_<c.rank;_++)P+=`cIndices[${_}] = outputIndices[${_}];`;P+=`let cOffset = ${c.indicesToOffset("cIndices")};`}return P},h=P=>`
3241  const epsilon = ${r};
3242  ${P.registerUniform("outputSize","u32").declareVariables(d,c,g,A,m,B)}
3243  ${P.mainStart()}
3244  ${P.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
3245    var outputIndices = ${B.offsetToIndices(`global_idx * ${i}`)};
3246    ${f()}
3247    let scale = ${c.getByOffset("cOffset")};
3248    let bias = ${g.getByOffset("cOffset")};
3249    let inputMean = ${A.getByOffset("cOffset")};
3250    let inputVar = ${m.getByOffset("cOffset")};
3251    let x = ${d.getByOffset("global_idx")};
3252    let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;
3253    ${B.setByOffset("global_idx","value")}
3254  }`;return{name:"BatchNormalization",shaderCache:{hint:`${t.epsilon}_${t.format}_${n}_${i}`,inputDependencies:u?["rank","type","type","type","type"]:void 0},getShaderSource:h,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u?[{type:12,data:l},...It(a)]:[{type:12,data:l}]})}},GB=e=>Mr(e),zB=(e,t)=>{let{inputs:r,outputCount:n}=e,s=GB({...t,outputCount:n});if(Sr.webgpu.validateInputContent&&kB(r,s),t.trainingMode)throw new Error("BatchNormalization trainingMode is not supported yet.");e.compute(OB(r,s))}}),FB,LB,RB,r3=et(()=>{qt(),tr(),FB=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![320,640,1280].includes(e[0].dims[2]))throw new Error("number of channels should be 320, 640 or 1280");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},LB=e=>{let t=e[0].dims,r=e[0].dims[2],n=$e.size(t)/4,s=e[0].dataType,a=Ne("input",s,t,4),i=Ne("bias",s,[r],4),o=Ne("residual",s,t,4),l=Pt("output",s,t,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)}}),getShaderSource:u=>`
3255  const channels = ${r}u / 4;
3256  ${u.declareVariables(a,i,o,l)}
3257
3258  ${u.mainStart()}
3259    ${u.guardAgainstOutOfBoundsWorkgroupSizes(n)}
3260    let value = ${a.getByOffset("global_idx")}
3261      + ${i.getByOffset("global_idx % channels")} + ${o.getByOffset("global_idx")};
3262    ${l.setByOffset("global_idx","value")}
3263  }`}},RB=e=>{FB(e.inputs),e.compute(LB(e.inputs))}}),YB,wr,NB,jB,UB,WB,VB,QB,HB,KB,qB,XB,ZB,JB,e1,t1,jl,r1,Ic,n1,s1,a1,i1,o1,l1,u1,c1,d1,p1,g1,A1,h1,m1,f1,_1,LA,w1,RA,YA,y1,b1,P1,M1,v1,B1,NA=et(()=>{Gt(),qt(),on(),tr(),YB=(e,t,r,n,s,a,i)=>{let o=Math.ceil(t/4),l="";typeof s=="string"?l=`${s}(a)`:l=s("a");let u=Ne("inputData",r,[o],4),p=Pt("outputData",n,[o],4),d=[{name:"vec_size",type:"u32"}];return i&&d.push(...i),`
3264      ${e.registerUniforms(d).declareVariables(u,p)}
3265
3266  ${a??""}
3267
3268  ${e.mainStart()}
3269    ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
3270
3271    let a = ${u.getByOffset("global_idx")};
3272    ${p.setByOffset("global_idx",l)}
3273  }`},wr=(e,t,r,n,s,a=e.dataType,i,o)=>{let l=[{type:12,data:Math.ceil($e.size(e.dims)/4)}];return i&&l.push(...i),{name:t,shaderCache:{hint:s,inputDependencies:["type"]},getShaderSource:u=>YB(u,$e.size(e.dims),e.dataType,a,r,n,o),getRunData:u=>({outputs:[{dims:e.dims,dataType:a}],dispatchGroup:{x:Math.ceil($e.size(u[0].dims)/64/4)},programUniforms:l})}},NB=e=>{e.compute(wr(e.inputs[0],"Abs","abs"))},jB=e=>{e.compute(wr(e.inputs[0],"Acos","acos"))},UB=e=>{e.compute(wr(e.inputs[0],"Acosh","acosh"))},WB=e=>{e.compute(wr(e.inputs[0],"Asin","asin"))},VB=e=>{e.compute(wr(e.inputs[0],"Asinh","asinh"))},QB=e=>{e.compute(wr(e.inputs[0],"Atan","atan"))},HB=e=>{e.compute(wr(e.inputs[0],"Atanh","atanh"))},KB=e=>Mr(e),qB=(e,t)=>{let r;switch(t.to){case 10:r="vec4<f16>";break;case 1:r="vec4<f32>";break;case 12:r="vec4<u32>";break;case 6:r="vec4<i32>";break;case 9:r="vec4<bool>";break;default:throw new RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${t.to}`)}
vendor: 16,684 bytes, lines 3273-3432
3273e.compute(wr(e.inputs[0],"Cast",r,void 0,t.cacheKey,t.to))},XB=e=>{let t,r,n=e.length>=2&&e[1].data!==0,s=e.length>=3&&e[2].data!==0;switch(e[0].dataType){case 1:t=n?e[1].getFloat32Array()[0]:-34028234663852886e22,r=s?e[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:t=n?e[1].getUint16Array()[0]:64511,r=s?e[2].getUint16Array()[0]:31743;break;default:throw new Error("Unsupport data type")}return Mr({min:t,max:r})},ZB=(e,t)=>{let r=t||XB(e.inputs),n=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Clip",s=>`clamp(${s}, vec4<${n}>(uniforms.min), vec4<${n}>(uniforms.max))`,void 0,r.cacheKey,void 0,[{type:e.inputs[0].dataType,data:r.min},{type:e.inputs[0].dataType,data:r.max}],[{name:"min",type:n},{name:"max",type:n}]),{inputs:[0]})},JB=e=>{e.compute(wr(e.inputs[0],"Ceil","ceil"))},e1=e=>{e.compute(wr(e.inputs[0],"Cos","cos"))},t1=e=>{e.compute(wr(e.inputs[0],"Cosh","cosh"))},jl=e=>Mr(e),r1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Elu",n=>`elu_vf32(${n})`,`
3274  const elu_alpha_ = ${r}(${t.alpha});
3275
3276  fn elu_f32(a: ${r}) -> ${r} {
3277  return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);
3278  }
3279
3280  fn elu_vf32(v: vec4<${r}>) -> vec4<${r}> {
3281  return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));
3282  }`,t.cacheKey))},Ic=(e="f32")=>`
3283const r0: ${e} = 0.3275911;
3284const r1: ${e} = 0.254829592;
3285const r2: ${e} = -0.284496736;
3286const r3: ${e} = 1.421413741;
3287const r4: ${e} = -1.453152027;
3288const r5: ${e} = 1.061405429;
3289
3290fn erf_vf32(v: vec4<${e}>) -> vec4<${e}> {
3291  let absv = abs(v);
3292  let x = 1.0 / (1.0 + r0 * absv);
3293  return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));
3294}`,n1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Erf",r=>`erf_vf32(${r})`,Ic(t)))},s1=e=>{e.compute(wr(e.inputs[0],"Exp","exp"))},a1=e=>{e.compute(wr(e.inputs[0],"Floor","floor"))},i1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Gelu",r=>`0.5 * ${r} * (1.0 + erf_vf32(${r} * 0.7071067811865475))`,Ic(t)))},o1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"LeakyRelu",n=>`select(leaky_relu_alpha_ * ${n}, ${n}, ${n} >= vec4<${r}>(0.0))`,`const leaky_relu_alpha_ = ${r}(${t.alpha});`,t.cacheKey))},l1=e=>{e.compute(wr(e.inputs[0],"Not",t=>`!${t}`))},u1=e=>{e.compute(wr(e.inputs[0],"Neg",t=>`-${t}`))},c1=e=>{e.compute(wr(e.inputs[0],"Reciprocal",t=>`1.0/${t}`))},d1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"Relu",r=>`select(vec4<${t}>(0.0), ${r}, ${r} > vec4<${t}>(0.0))`))},p1=e=>{e.compute(wr(e.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},g1=e=>Mr(e),A1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"HardSigmoid",n=>`max(vec4<${r}>(0.0), min(vec4<${r}>(1.0), ${t.alpha} * ${n} + vec4<${r}>(${t.beta})))`,void 0,t.cacheKey))},h1=e=>{e.compute(wr(e.inputs[0],"Sin","sin"))},m1=e=>{e.compute(wr(e.inputs[0],"Sinh","sinh"))},f1=e=>{e.compute(wr(e.inputs[0],"Sqrt","sqrt"))},_1=e=>{e.compute(wr(e.inputs[0],"Tan","tan"))},LA=e=>`sign(${e}) * (1 - exp(-2 * abs(${e}))) / (1 + exp(-2 * abs(${e})))`,w1=e=>{e.compute(wr(e.inputs[0],"Tanh",LA))},RA=(e="f32")=>`
3295const fast_gelu_a: ${e} = 0.5;
3296const fast_gelu_b: ${e} = 0.7978845608028654;
3297const fast_gelu_c: ${e} = 0.035677408136300125;
3298
3299fn tanh_v(v: vec4<${e}>) -> vec4<${e}> {
3300  return ${LA("v")};
3301}
3302`,YA=e=>`(fast_gelu_a + fast_gelu_a * tanh_v(${e} * (fast_gelu_c * ${e} * ${e} + fast_gelu_b))) * ${e}`,y1=e=>{let t=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"FastGelu",YA,RA(t),void 0,e.inputs[0].dataType))},b1=(e,t)=>{let r=Rn(e.inputs[0].dataType);return e.compute(wr(e.inputs[0],"ThresholdedRelu",n=>`select(vec4<${r}>(0.0), ${n}, ${n} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${r}>(${t.alpha});`,t.cacheKey)),0},P1=e=>{e.compute(wr(e.inputs[0],"Log","log"))},M1=(e,t)=>`
3303const alpha = vec4<${e}>(${t});
3304const one = ${e}(1.0);
3305const zero = ${e}(0.0);
3306
3307fn quick_gelu_impl(x: vec4<${e}>) -> vec4<${e}> {
3308  let v = x *alpha;
3309  var x1 : vec4<${e}>;
3310  for (var i = 0; i < 4; i = i + 1) {
3311    if (v[i] >= zero) {
3312      x1[i] = one / (one + exp(-v[i]));
3313    } else {
3314      x1[i] = one - one / (one + exp(v[i]));
3315    }
3316  }
3317  return x * x1;
3318}
3319`,v1=e=>`quick_gelu_impl(${e})`,B1=(e,t)=>{let r=Rn(e.inputs[0].dataType);e.compute(wr(e.inputs[0],"QuickGelu",v1,M1(r,t.alpha),t.cacheKey,e.inputs[0].dataType))}}),x1,E1,D1,n3=et(()=>{qt(),tr(),NA(),x1=e=>{if(e[0].dims.length!==3)throw new Error("input should have 3 dimensions");if(![2560,5120,10240].includes(e[0].dims[2]))throw new Error("hidden state should be 2560, 5120 or 10240");if(e[1].dims.length!==1)throw new Error("bias is expected to have 1 dimensions");if(e[0].dims[2]!==e[1].dims[0])throw new Error("last dimension of input and bias are not the same")},E1=e=>{let t=e[0].dims.slice();t[2]=t[2]/2;let r=Ne("input",e[0].dataType,e[0].dims,4),n=Ne("bias",e[0].dataType,[e[0].dims[2]],4),s=Pt("output",e[0].dataType,t,4),a=$e.size(t)/4,i=Bn(e[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:t,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:o=>`
3320  const M_SQRT2 = sqrt(2.0);
3321  const halfChannels = ${e[0].dims[2]/4/2}u;
3322
3323  ${o.declareVariables(r,n,s)}
3324
3325  ${Ic(i)}
3326
3327  ${o.mainStart()}
3328    ${o.guardAgainstOutOfBoundsWorkgroupSizes(a)}
3329    let biasIdx = global_idx % halfChannels;
3330    let batchIndex = global_idx / halfChannels;
3331    let inputOffset = biasIdx + batchIndex * halfChannels * 2;
3332    let valueLeft = input[inputOffset] + bias[biasIdx];
3333    let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];
3334    let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);
3335
3336    ${s.setByOffset("global_idx","valueLeft * geluRight")}
3337  }`}},D1=e=>{x1(e.inputs),e.compute(E1(e.inputs))}}),I1,T1,Ks,C1,$1,S1,k1,O1,G1,z1,F1,L1,R1,s3=et(()=>{Gt(),qt(),tr(),I1=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c,g;typeof o=="string"?c=g=(h,P)=>`${o}((${h}),(${P}))`:typeof o=="function"?c=g=o:(c=o.scalar,g=o.vector);let A=Pt("outputData",p,n.length,4),m=Ne("aData",l,t.length,4),B=Ne("bData",u,r.length,4),f;if(s)if(a){let h=$e.size(t)===1,P=$e.size(r)===1,_=t.length>0&&t[t.length-1]%4===0,w=r.length>0&&r[r.length-1]%4===0;h||P?f=A.setByOffset("global_idx",g(h?`${m.type.value}(${m.getByOffset("0")}.x)`:m.getByOffset("global_idx"),P?`${B.type.value}(${B.getByOffset("0")}.x)`:B.getByOffset("global_idx"))):f=`
3338            let outputIndices = ${A.offsetToIndices("global_idx * 4u")};
3339            let offsetA = ${m.broadcastedIndicesToOffset("outputIndices",A)};
3340            let offsetB = ${B.broadcastedIndicesToOffset("outputIndices",A)};
3341            ${A.setByOffset("global_idx",g(i||_?m.getByOffset("offsetA / 4u"):`${m.type.value}(${m.getByOffset("offsetA / 4u")}[offsetA % 4u])`,i||w?B.getByOffset("offsetB / 4u"):`${B.type.value}(${B.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}
3342          `}else f=A.setByOffset("global_idx",g(m.getByOffset("global_idx"),B.getByOffset("global_idx")));else{if(!a)throw new Error("no necessary to use scalar implementation for element-wise binary op implementation.");let h=(P,_,w="")=>{let b=`aData[indexA${_}][componentA${_}]`,v=`bData[indexB${_}][componentB${_}]`;return`
3343            let outputIndices${_} = ${A.offsetToIndices(`global_idx * 4u + ${_}u`)};
3344            let offsetA${_} = ${m.broadcastedIndicesToOffset(`outputIndices${_}`,A)};
3345            let offsetB${_} = ${B.broadcastedIndicesToOffset(`outputIndices${_}`,A)};
3346            let indexA${_} = offsetA${_} / 4u;
3347            let indexB${_} = offsetB${_} / 4u;
3348            let componentA${_} = offsetA${_} % 4u;
3349            let componentB${_} = offsetB${_} % 4u;
3350            ${P}[${_}] = ${w}(${c(b,v)});
3351          `};p===9?f=`
3352            var data = vec4<u32>(0);
3353            ${h("data",0,"u32")}
3354            ${h("data",1,"u32")}
3355            ${h("data",2,"u32")}
3356            ${h("data",3,"u32")}
3357            outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:f=`
3358            ${h("outputData[global_idx]",0)}
3359            ${h("outputData[global_idx]",1)}
3360            ${h("outputData[global_idx]",2)}
3361            ${h("outputData[global_idx]",3)}
3362          `}return`
3363        ${e.registerUniform("vec_size","u32").declareVariables(m,B,A)}
3364
3365        ${d??""}
3366
3367        ${e.mainStart()}
3368        ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
3369        ${f}
3370      }`},T1=(e,t,r,n,s,a,i=r.dataType)=>{let o=r.dims.map(Number),l=n.dims.map(Number),u=!$e.areEqual(o,l),p=o,d=$e.size(o),c=!1,g=!1,A=[u];if(u){let m=ko.calcShape(o,l,!1);if(!m)throw new Error("Can't perform binary op on the given tensors");p=m.slice(),d=$e.size(p);let B=$e.size(o)===1,f=$e.size(l)===1,h=o.length>0&&o[o.length-1]%4===0,P=l.length>0&&l[l.length-1]%4===0;A.push(B),A.push(f),A.push(h),A.push(P);let _=1;for(let w=1;w<p.length;w++){let b=o[o.length-w],v=l[l.length-w];if(b===v)_*=b;else break}_%4===0?(g=!0,c=!0):(B||f||h||P)&&(c=!0)}else c=!0;return A.push(c),{name:e,shaderCache:{hint:t+A.map(m=>m.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:m=>I1(m,o,l,p,c,u,g,s,r.dataType,n.dataType,i,a),getRunData:()=>({outputs:[{dims:p,dataType:i}],dispatchGroup:{x:Math.ceil(d/64/4)},programUniforms:[{type:12,data:Math.ceil($e.size(p)/4)},...It(o,l,p)]})}},Ks=(e,t,r,n,s,a)=>{e.compute(T1(t,s??"",e.inputs[0],e.inputs[1],r,n,a))},C1=e=>{Ks(e,"Add",(t,r)=>`${t}+${r}`)},$1=e=>{Ks(e,"Div",(t,r)=>`${t}/${r}`)},S1=e=>{Ks(e,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},k1=e=>{Ks(e,"Mul",(t,r)=>`${t}*${r}`)},O1=e=>{let t=Ne("input",e.inputs[0].dataType,e.inputs[0].dims).type.value;Ks(e,"Pow",{scalar:(r,n)=>`pow_custom(${r},${n})`,vector:(r,n)=>`pow_vector_custom(${r},${n})`},`
3371    fn pow_custom(a : ${t}, b : ${t}) -> ${t} {
3372      if (b == ${t}(0.0)) {
3373        return ${t}(1.0);
3374      } else if (a < ${t}(0.0) && f32(b) != floor(f32(b))) {
3375        return ${t}(pow(f32(a), f32(b))); // NaN
3376      }
3377      return select(sign(a), ${t}(1.0), round(f32(abs(b) % ${t}(2.0))) != 1.0) * ${t}(${t==="i32"?"round":""}(pow(f32(abs(a)), f32(b))));
3378    }
3379    fn pow_vector_custom(a : vec4<${t}>, b : vec4<${t}>) -> vec4<${t}> {
3380      // TODO: implement vectorized pow
3381      return vec4<${t}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));
3382    }
3383      `)},G1=e=>{Ks(e,"Sub",(t,r)=>`${t}-${r}`)},z1=e=>{Ks(e,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},F1=e=>{Ks(e,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},L1=e=>{Ks(e,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},R1=e=>{Ks(e,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}}),Y1,N1,j1,U1,W1,V1,a3=et(()=>{Gt(),qt(),on(),tr(),Y1=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");let r=0,n=e[r],s=n.dataType,a=n.dims.length;e.forEach((i,o)=>{if(o!==r){if(i.dataType!==s)throw new Error("input tensors should be one type");if(i.dims.length!==a)throw new Error("input tensors should have the same shape");i.dims.forEach((l,u)=>{if(u!==t&&l!==n.dims[u])throw new Error("non concat dimensions must match")})}})},N1=(e,t)=>`
3384  fn calculateInputIndex(index: u32) -> u32 {
3385    let sizeInConcatAxis = array<u32, ${e}u>(${t});
3386    for (var i: u32 = 0u; i < ${e}; i += 1u ) {
3387      if (index < sizeInConcatAxis[i]) {
3388        return i;
3389      }
3390    }
3391    return ${e}u;
3392  }`,j1=(e,t)=>{let r=e.length,n=[];for(let s=0;s<r;++s){let a=t.setByOffset("global_idx",e[s].getByIndices("indices"));r===1?n.push(a):s===0?n.push(`if (inputIndex == ${s}u) { ${a} }`):s===r-1?n.push(`else { ${a} }`):n.push(`else if (inputIndex == ${s}) { ${a} }`)}return n.join(`
3393`)},U1=(e,t,r,n)=>{let s=$e.size(r),a=new Array(e.length),i=new Array(e.length),o=0,l=[],u=[],p=[{type:12,data:s}];for(let m=0;m<e.length;++m)o+=e[m].dims[t],a[m]=o,u.push(e[m].dims.length),i[m]=Ne(`input${m}`,n,u[m]),l.push("rank"),p.push({type:12,data:a[m]});for(let m=0;m<e.length;++m)p.push(...It(e[m].dims));p.push(...It(r));let d=Pt("output",n,r.length),c=d.indicesGet("indices",t),g=Array.from(Array(a.length).keys()).map(m=>`uniforms.sizeInConcatAxis${m}`).join(","),A=m=>`
3394
3395  ${(()=>{m.registerUniform("outputSize","u32");for(let B=0;B<e.length;B++)m.registerUniform(`sizeInConcatAxis${B}`,"u32");return m.declareVariables(...i,d)})()}
3396
3397  ${N1(a.length,g)}
3398
3399  ${m.mainStart()}
3400    ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
3401
3402    var indices = ${d.offsetToIndices("global_idx")};
3403
3404    let inputIndex = calculateInputIndex(${c});
3405    if (inputIndex != 0u) {
3406      let sizeInConcatAxis = array<u32, ${a.length}u>(${g});
3407      ${c} -= sizeInConcatAxis[inputIndex - 1u];
3408    }
3409
3410    ${j1(i,d)}
3411  }`;return{name:"Concat",shaderCache:{hint:`${t}`,inputDependencies:l},getRunData:()=>({outputs:[{dims:r,dataType:n}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:p}),getShaderSource:A}},W1=(e,t)=>{let r=e.inputs,n=r[0].dims,s=$e.normalizeAxis(t.axis,n.length);Y1(r,s);let a=n.slice();a[s]=r.reduce((o,l)=>o+(l.dims.length>s?l.dims[s]:0),0);let i=r.filter(o=>$e.size(o.dims)>0);e.compute(U1(i,s,a,r[0].dataType),{inputs:i})},V1=e=>Mr({axis:e.axis})}),Qi,Hi,Ki,jA,qi=et(()=>{Gt(),qt(),Qi=(e,t,r="f32")=>{switch(e.activation){case"Relu":return`value = max(value, ${t}(0.0));`;case"Sigmoid":return`value = (${t}(1.0) / (${t}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${t}(${r}(uniforms.clip_min)), ${t}(${r}(uniforms.clip_max)));`;case"HardSigmoid":return`value = max(${t}(0.0), min(${t}(1.0), ${r}(uniforms.alpha) * value + ${r}(uniforms.beta)));`;case"LeakyRelu":return`value = select(${r}(uniforms.alpha) * value, value, value >= ${t}(0.0));`;case"Tanh":return`let e2x = exp(-2.0 * abs(value));
3412              value = sign(value) * (1.0 - e2x) / (1.0 + e2x);
3413        `;case"":return"";default:throw new Error(`Unsupported activation ${e.activation}`)}},Hi=(e,t)=>{e.activation==="Clip"?t.push({type:1,data:e.clipMax},{type:1,data:e.clipMin}):e.activation==="HardSigmoid"?t.push({type:1,data:e.alpha},{type:1,data:e.beta}):e.activation==="LeakyRelu"&&t.push({type:1,data:e.alpha})},Ki=(e,t)=>{e.activation==="Clip"?t.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}):e.activation==="HardSigmoid"?t.push({name:"alpha",type:"f32"},{name:"beta",type:"f32"}):e.activation==="LeakyRelu"&&t.push({name:"alpha",type:"f32"})},jA=e=>{let t=e?.activation||"";if(t==="HardSigmoid"){let[r,n]=e?.activation_params||[.2,.5];return{activation:t,alpha:r,beta:n}}else if(t==="Clip"){let[r,n]=e?.activation_params||[hv,mv];return{activation:t,clipMax:n,clipMin:r}}else if(t==="LeakyRelu"){let[r]=e?.activation_params||[.01];return{activation:t,alpha:r}}return{activation:t}}}),Sn,Q1,UA=et(()=>{Sn=(e,t)=>{switch(e){case 1:return t;case 2:return`vec2<${t}>`;case 3:return`vec3<${t}>`;case 4:return`vec4<${t}>`;default:throw new Error(`${e}-component is not supported.`)}},Q1=e=>`
3414      ${e?"value = value + getBiasByOutputCoords(coords);":""}
3415      `}),H1,i3=et(()=>{H1=e=>`
3416fn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 {
3417  return dot(coords, vec4<i32>(
3418      shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));
3419}
3420fn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 {
3421  return dot(coords, vec4<i32>(
3422    i32(${e}.x), i32(${e}.y), i32(${e}.z), 1));
3423}
3424`}),Ul,WA,VA=et(()=>{Gt(),qt(),tr(),qi(),Ul=(e,t,r,n,s)=>{let a=n-r;return`
3425      ${Array.from({length:r}).map((i,o)=>`
3426      if (${xt(t.shape,o,t.rank)} != 1) {
3427        ${t.indicesSet(e,o,xt(s,o+a,n))}
3428      } else {
3429        ${t.indicesSet(e,o,0)}
3430      }`).join("")}
3431`},WA=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i[i.length-2],u=o[o.length-1],p=i[i.length-1],d=en(u),c=en(p),g=en(l),A=$e.size(r)/d/g,m=e.length>2,B=n?n.slice(0,-2):r.slice(0,-2),f=[$e.size(B),l,u],h=[{type:12,data:A},{type:12,data:l},{type:12,data:u},{type:12,data:p}];Hi(t,h),h.push(...It(B,i,o)),m&&h.push(...It(e[2].dims)),h.push(...It(f));let P=_=>{let w=$A("batch_dims",e[0].dataType,B.length),b=Ne("a",e[0].dataType,i.length,c),v=Ne("b",e[1].dataType,o.length,d),y=Pt("output",e[0].dataType,f.length,d),$=Bn(y.type.tensor),k=Qi(t,y.type.value,$),W=[b,v],j="";if(m){let L=s?d:1;W.push(Ne("bias",e[2].dataType,e[2].dims.length,L)),j=`${s?`value += bias[col / ${L}];`:`value += ${y.type.value}(bias[row + i]);`}`}let F=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];Ki(t,F);let R=()=>{let L=`var a_data: ${b.type.value};`;for(let Q=0;Q<c;Q++)L+=`
3432              let b_data${Q} = b[(b_offset + (k + ${Q}
3432) * uniforms.N + col) / ${d}];`;for(let Q=0;Q<g;Q++){L+=`a_data = a[(a_offset + (row + ${Q}) * uniforms.K + k) / ${c}];`;for(let ne=0;ne<c;ne++)L+=`
3433            values[${Q}] = fma(${v.type.value}(a_data${c===1?"":`[${ne}]`}), b_data${ne}, values[${Q}]);
3434`}return L};return`
3435  ${_.registerUniforms(F).registerInternalVariables(w).declareVariables(...W,y)}
3436  ${_.mainStart()}
3437    ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
3438    let col = (global_idx % (uniforms.N / ${d})) * ${d};
3439    var index1 = global_idx / (uniforms.N / ${d});
3440    let stride1 = uniforms.M / ${g};
3441    let row = (index1 % stride1) * ${g};
3442    let batch = index1 / stride1;
3443
3444    ${r.length===2?"":`let batch_indices = ${w.offsetToIndices("batch")};`}
3445
3446    var a_indices: ${b.type.indices};
3447    ${Ul("a_indices",b,b.rank-2,w.rank,"batch_indices")}
3448    ${b.indicesSet("a_indices",b.rank-2,0)}
3449    ${b.indicesSet("a_indices",b.rank-1,0)}
3450    let a_offset = ${b.indicesToOffset("a_indices")};
3451
3452    var b_indices: ${v.type.indices};
3453    ${Ul("b_indices",v,v.rank-2,w.rank,"batch_indices")}
3454    ${v.indicesSet("b_indices",v.rank-2,0)}
3455    ${v.indicesSet("b_indices",v.rank-1,0)}
3456    let b_offset = ${v.indicesToOffset("b_indices")};
3457    var values: array<${y.type.value}, ${g}>;
3458    for (var k: u32 = 0u; k < uniforms.K; k = k + ${c}) {
3459      ${R()}
3460    }
3461    for (var i = 0u; i < ${g}u; i++) {
3462      var value = values[i];
3463      ${j}
3464      ${k}
3465      let cur_indices = ${y.type.indices}(batch, row + i, col);
3466      let offset = ${y.indicesToOffset("cur_indices")};
3467      ${y.setByOffset(`offset / ${d}`,"value")};
3468    }
3469  }
3470  `};return{name:"MatMulNaive",shaderCache:{hint:`${t.activation};${d};${c};${g};${s}`,inputDependencies:m?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(A/64)},programUniforms:h}),getShaderSource:P}}}),K1,q1,QA,HA,X1,KA,Z1,Tc,qA=et(()=>{Gt(),qt(),tr(),qi(),VA(),UA(),K1=(e,t)=>e?`
3471        mm_Asub[inputRow][inputCol] = mm_readA(batch,
3472          kStart + inputRow,
3473          globalRowStart / innerElementSize + inputCol${t?", batchIndices":""});
3474        `:`
3475        mm_Asub[inputRow][inputCol] = mm_readA(batch,
3476          globalRow + innerRow,
3477          kStart / innerElementSize + inputCol${t?", batchIndices":""});
3478        `,q1=(e,t)=>e?`
3479        let ACached0 = mm_Asub[k * innerElementSize][localRow];
3480        let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];
3481        let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];
3482        ${t===3?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}
3483        for (var i = 0; i < rowPerThread; i = i + 1) {
3484          acc[i] = BCached0 * ACached0[i] + acc[i];
3485          acc[i] = BCached1 * ACached1[i] + acc[i];
3486          acc[i] = BCached2 * ACached2[i] + acc[i];
3487          ${t===3?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}
3488        }`:`
3489        for (var i = 0; i < rowPerThread; i = i + 1) {
3490          let ACached = mm_Asub[tileRow + i][k];
3491          acc[i] = BCached0 * ACached.x + acc[i];
3492          acc[i] = BCached1 * ACached.y + acc[i];
3493          acc[i] = BCached2 * ACached.z + acc[i];
3494          ${t===3?"":"acc[i] = BCached3 * ACached.w + acc[i];"}
3495        }`,QA=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32)=>{let l=t[1]*e[1],u=t[0]*e[0],p=s?l:a,d=s?a:l,c=p/t[0],g=a/t[1];if(!((s&&c===4&&e[1]===4||!s&&(c===3||c===4))&&p%t[0]===0&&a%t[1]===0&&e[0]===4))throw new Error(`If transposeA ${s} is true, innerElementSize ${c} and workPerThread[1] ${e[1]} must be 4.
3496      Otherwise, innerElementSize ${c} must be 3 or 4.
3497  tileAWidth ${p} must be divisible by workgroupSize[0]${t[0]}. tileInner ${a} must be divisible by workgroupSize[1] ${t[1]}. colPerThread ${e[0]} must be 4.`);return`
3498var<workgroup> mm_Asub: array<array<vec${c}<${r}>, ${p/c}>, ${d}>;
3499var<workgroup> mm_Bsub: array<array<vec4<${r}>, ${u/e[0]}>, ${a}>;
3500
3501const rowPerThread = ${e[1]};
3502const colPerThread = ${e[0]};
3503const innerElementSize = ${c};
3504const tileInner = ${a};
3505
3506@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})
3507fn main(@builtin(local_invocation_id) localId : vec3<u32>,
3508        @builtin(global_invocation_id) globalId : vec3<u32>,
3509        @builtin(workgroup_id) workgroupId : vec3<u32>) {
3510  let localRow = i32(localId.y);
3511  let tileRow = localRow * rowPerThread;
3512  let tileCol = i32(localId.x);
3513
3514  let globalRow =i32(globalId.y) * rowPerThread;
3515  let globalCol = i32(globalId.x);
3516  let batch = ${i?"0":"i32(globalId.z)"};
3517  ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""}
3518  let globalRowStart = i32(workgroupId.y) * ${l};
3519
3520  let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};
3521  var kStart = ${i?`i32(globalId.z) * ${o}`:"0"};
3522
3523  var acc: array<vec4<${r}>, rowPerThread>;
3524
3525  // Loop over shared dimension.
3526  let tileRowB = localRow * ${g};
3527  for (var t = 0; t < num_tiles; t = t + 1) {
3528      // Load one tile of A into local memory.
3529      for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
3530          let inputRow = tileRow + innerRow;
3531          let inputCol = tileCol;
3532          ${K1(s,n)}
3533      }
3534
3535      // Load one tile of B into local memory.
3536      for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) {
3537          let inputRow = tileRowB + innerRow;
3538          let inputCol = tileCol;
3539          mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${n?", batchIndices":""});
3540      }
3541      kStart = kStart + tileInner;
3542      workgroupBarrier();
3543
3544      // Compute acc values for a single thread.
3545      for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {
3546          let BCached0 = mm_Bsub[k * innerElementSize][tileCol];
3547          let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];
3548          let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];
3549          ${c===3?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}
3550
3551          ${q1(s,c)}
3552      }
3553
3554      workgroupBarrier();
3555  }
3556
3557  for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
3558      mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);
3559  }
3560}`},HA=(e,t)=>e?`
3561            mm_Asub[inputRow][inputCol] = mm_readA(batch,
3562              kStart + inputRow,
3563              globalRowStart + inputCol${t?", batchIndices":""});
3564            `:`
3565            mm_Asub[inputRow][inputCol] = mm_readA(batch,
3566              globalRowStart + inputRow,
3567              kStart + inputCol${t?", batchIndices":""});
3568            `,X1=e=>e?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];",KA=(e,t,r="f32",n,s=!1,a=32,i=!1,o=32,l=!1)=>{let u=e[1]*t[1],p=e[0]*t[0],d=s?u:a,c=s?a:u;if(!(c%t[1]===0&&d%t[0]===0&&a%t[1]===0))throw new Error(`tileAHight ${c} must be divisible by workgroupSize[1]${t[1]}, tileAWidth ${d} must be divisible by workgroupSize[0]${t[0]}, tileInner ${a} must be divisible by workgroupSize[1]${t[1]}`);let g=c/t[1],A=d/t[0],m=a/t[1],B=l?`
3569    let localRow = i32(localId.y);
3570    let localCol = i32(localId.x);
3571    let globalRowStart = i32(workgroupId.y) * ${u};
3572    let globalColStart = i32(workgroupId.x) * ${p};
3573
3574    // Loop over shared dimension.
3575    for (var t = 0; t < num_tiles; t = t + 1) {
3576      // Load one tile of A into local memory.
3577      for (var inputRow = localRow; inputRow < ${c}; inputRow = inputRow + ${t[1]}) {
3578        for (var inputCol = localCol; inputCol < ${d}; inputCol = inputCol + ${t[0]}) {
3579          ${HA(s,n)}
3580        }
3581      }
3582      // Load one tile of B into local memory.
3583      for (var inputRow = localRow; inputRow < ${a}; inputRow = inputRow + ${t[1]}) {
3584            for (var inputCol = localCol; inputCol < ${p}; inputCol = inputCol + ${t[0]}) {
3585          mm_Bsub[inputRow][inputCol] = mm_readB(batch,
3586            kStart + inputRow,
3587            globalColStart + inputCol${n?", batchIndices":""});
3588        }
3589      }
3590      kStart = kStart + tileInner;
3591      workgroupBarrier();
3592
3593      // Compute acc values for a single thread.
3594      var BCached : array<${r}, colPerThread>;
3595      for (var k = 0; k < tileInner; k = k + 1) {
3596        for (var inner = 0; inner < colPerThread; inner = inner + 1) {
3597          BCached[inner] = mm_Bsub[k][localCol + inner * ${t[0]}];
3598        }
3599        for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
3600          let ACached = ${s?`mm_Asub[k][localRow + innerRow * ${t[1]}];`:`mm_Asub[localRow + innerRow * ${t[1]}][k];`}
3601          for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
3602            acc[innerRow][innerCol] = acc[innerRow][innerCol] +
3603                ACached * BCached[innerCol];
3604          }
3605        }
3606      }
3607      workgroupBarrier();
3608    }
3609    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
3610      let gRow = globalRowStart + localRow + innerRow * ${t[1]};
3611      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
3612        let gCol = globalColStart + localCol + innerCol * ${t[0]};
3613        mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);
3614      }
3615    }
3616    `:`
3617let tileRow = i32(localId.y) * rowPerThread;
3618let tileCol = i32(localId.x) * colPerThread;
3619
3620let globalRow = i32(globalId.y) * rowPerThread;
3621let globalCol = i32(globalId.x) * colPerThread;
3622let globalRowStart = i32(workgroupId.y) * ${u};
3623
3624let tileRowA = i32(localId.y) * ${g};
3625let tileColA = i32(localId.x) * ${A};
3626let tileRowB = i32(localId.y) * ${m};
3627// Loop over shared dimension.
3628for (var t = 0; t < num_tiles; t = t + 1) {
3629  // Load one tile of A into local memory.
3630  for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) {
3631    for (var innerCol = 0; innerCol < ${A}; innerCol = innerCol + 1) {
3632      let inputRow = tileRowA + innerRow;
3633      let inputCol = tileColA + innerCol;
3634      ${HA(s,n)}
3635    }
3636  }
3637
3638  // Load one tile of B into local memory.
3639  for (var innerRow = 0; innerRow < ${m}; innerRow = innerRow + 1) {
3640    for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
3641      let inputRow = tileRowB + innerRow;
3642      let inputCol = tileCol + innerCol;
3643      mm_Bsub[inputRow][inputCol] = mm_readB(batch,
3644        kStart + inputRow,
3645        globalCol + innerCol${n?", batchIndices":""});
3646    }
3647  }
3648  kStart = kStart + tileInner;
3649  workgroupBarrier();
3650
3651  // Compute acc values for a single thread.
3652  var BCached : array<${r}, colPerThread>;
3653  for (var k = 0; k < tileInner; k = k + 1) {
3654    for (var inner = 0; inner < colPerThread; inner = inner + 1) {
3655      BCached[inner] = mm_Bsub[k][tileCol + inner];
3656    }
3657
3658    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
3659      ${X1(s)}
3660      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
3661        acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];
3662      }
3663    }
3664  }
3665
3666  workgroupBarrier();
3667}
3668
3669for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
3670  for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
3671    mm_write(batch, globalRow + innerRow, globalCol + innerCol,
3672        acc[innerRow][innerCol]);
3673  }
3674}
3675`;return`
3676  var<workgroup> mm_Asub : array<array<${r}, ${d}>, ${c}>;
3677  var<workgroup> mm_Bsub : array<array<${r}, ${p}>, ${a}>;
3678  const rowPerThread = ${e[1]};
3679  const colPerThread = ${e[0]};
3680  const tileInner = ${a};
3681
3682@compute @workgroup_size(${t[0]}, ${t[1]}, ${t[2]})
3683fn main(@builtin(local_invocation_id) localId : vec3<u32>,
3684        @builtin(global_invocation_id) globalId : vec3<u32>,
3685        @builtin(workgroup_id) workgroupId : vec3<u32>) {
3686    let batch = ${i?"0":"i32(globalId.z)"};
3687    ${n?`let batchIndices = ${n.offsetToIndices("u32(batch)")};`:""}
3688    let num_tiles = ${i?`${Math.ceil(o/a)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};
3689    var kStart = ${i?`i32(globalId.z) * ${o}`:"0"};
3690
3691    var acc : array<array<${r}, colPerThread>, rowPerThread>;
3692    ${B}
3693  }
3694`},Z1=(e,t,r,n,s=!1)=>{let[a,i,o,l]=n,u=Bn(n[0].type.tensor);return`
3695    fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Sn(e,u)} {
3696      var value = ${Sn(e,u)}(0.0);
3697      let col = colIn * ${e};
3698      if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)
3699      {
3700        var aIndices: ${i.type.indices};
3701        ${Ul("aIndices",i,i.rank-2,a.rank,"batchIndices")}
3702        ${i.indicesSet("aIndices",i.rank-2,"u32(row)")}
3703        ${i.indicesSet("aIndices",i.rank-1,"u32(colIn)")}
3704        value = ${i.getByIndices("aIndices")};
3705      }
3706      return value;
3707    }
3708
3709    fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${a.type.indices}) -> ${Sn(e,u)} {
3710      var value = ${Sn(e,u)}(0.0);
3711      let col = colIn * ${e};
3712      if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)
3713      {
3714        var bIndices: ${o.type.indices};
3715        ${Ul("bIndices",o,o.rank-2,a.rank,"batchIndices")}
3716        ${o.indicesSet("bIndices",o.rank-2,"u32(row)")}
3717        ${o.indicesSet("bIndices",o.rank-1,"u32(colIn)")}
3718        value = ${o.getByIndices("bIndices")};
3719      }
3720      return value;
3721    }
3722
3723    fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${Sn(e,u)}) {
3724      let col = colIn * ${e};
3725      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {
3726        var value = valueIn;
3727        let coords = vec3<i32>(batch, row, colIn);
3728        ${t?`value = value + ${s?"bias[colIn]":`${Sn(e,u)}(bias[row])`};`:""}
3729        ${r}
3730        ${l.setByIndices("vec3<u32>(coords)","value")}
3731      }
3732    }
3733    `},Tc=(e,t,r,n,s=!1,a)=>{let i=e[0].dims,o=e[1].dims,l=i.slice(0,-2),u=o.slice(0,-2),p=n?n.slice(0,-2):r.slice(0,-2),d=$e.size(p),c=i[i.length-2],g=i[i.length-1],A=o[o.length-1],m=g%4===0&&A%4===0,B=c<=8?[4,1,1]:[4,4,1],f=[8,8,1],h=[Math.ceil(A/f[0]/B[0]),Math.ceil(c/f[1]/B[1]),Math.ceil(d/f[2]/B[2])],P=m?4:1,_=[...l,c,g/P],w=_.length,b=[...u,g,A/P],v=b.length,y=[d,c,A/P],$=[{type:6,data:c},{type:6,data:A},{type:6,data:g}];Hi(t,$),$.push(...It(p,_,b));let k=["rank","rank"],W=e.length>2;W&&($.push(...It(e[2].dims)),k.push("rank")),$.push(...It(y));let j=F=>{let R=p.length,L=$A("batchDims",e[0].dataType,R,1),Q=Bn(e[0].dataType),ne=Ne("a",e[0].dataType,w,P),re=Ne("b",e[1].dataType,v,P),ce=Pt("result",e[0].dataType,y.length,P),ge=[ne,re];if(W){let oe=s?P:1;ge.push(Ne("bias",e[2].dataType,e[2].dims.length,oe))}let q=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];Ki(t,q);let V=Bn(ce.type.tensor),U=Qi(t,ce.type.value,V),N=Z1(P,W,U,[L,ne,re,ce],s);return`
3734  ${F.registerUniforms(q).registerInternalVariables(L).declareVariables(...ge,ce)}
3735  ${N}
3736  ${m?QA(B,f,Q,L):KA(B,f,Q,L)}
3737                   `};return{name:"MatMul",shaderCache:{hint:`${B};${t.activation};${m};${s}`,inputDependencies:k},getRunData:()=>({outputs:[{dims:a?a(r):r,dataType:e[0].dataType}],dispatchGroup:{x:h[0],y:h[1],z:h[2]},programUniforms:$}),getShaderSource:j}}}),J1,ex,o3=et(()=>{Gt(),$a(),tr(),qi(),UA(),i3(),qA(),J1=(e,t,r,n,s=!1,a,i=4,o=4,l=4,u="f32")=>{let p=$=>{switch($){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${u}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},d=$=>{switch($){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw new Error(`innerElementSize ${$} is not supported.`)}},c=e?`
3738    let coord = vec4<i32>(batch, xRow, xCol, xCh);
3739    `:`
3740    let coord = vec4<i32>(batch, xCh, xRow, xCol);
3741    `,g=e?`
3742    let coords = vec4<i32>(
3743      batch,
3744      row / outWidth,
3745      row % outWidth,
3746      col);
3747    `:`
3748    let coords = vec4<i32>(
3749      batch,
3750      row,
3751      col / outWidth,
3752      col % outWidth);
3753    `,A=e?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])",m=e?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])",B=e?"row":"col",f=e?"col":"row",h=`
3754    let inChannels = i32(uniforms.w_shape[2]);
3755    let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};
3756    let outRow = ${B} / outWidth;
3757    let outCol = ${B} % outWidth;
3758
3759    let WRow = ${f} / (i32(uniforms.w_shape[1]) * inChannels);
3760    let WCol = ${f} / inChannels % i32(uniforms.w_shape[1]);
3761    let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];
3762    let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];
3763    let xCh = ${f} % inChannels;
3764    var resData = ${Sn(i,u)}(0.0);
3765    // The bounds checking is always needed since we use it to pad zero for
3766    // the 'same' padding type.
3767    if (xRow >= 0 && xRow < ${A} && xCol >= 0 && xCol < ${m}) {
3768      ${c}
3769      let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape));
3770      ${p(i)}
3771    }
3772    return resData;`,P=e?t&&n?`
3773    let col = colIn * ${i};
3774    ${h}`:`
3775    let col = colIn * ${i};
3776    if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {
3777      ${h}
3778    }
3779    return ${Sn(i,u)}(0.0);`:n&&r?`
3780    let col = colIn * ${i};
3781    ${h}`:`
3782    let col = colIn * ${i};
3783    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {
3784      ${h}
3785    }
3786    return ${Sn(i,u)}(0.0);`,_=e?n&&r?d(o):`
3787    let col = colIn * ${o};
3788    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {
3789      ${d(o)}
3790    }
3791    return ${Sn(o,u)}(0.0);`:`
3792    let col = colIn * ${o};
3793    if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) {
3794      ${d(o)}
3795    }
3796    return ${Sn(o,u)}(0.0);`,w=Sn(l,u),b=Sn(e?i:o,u),v=Sn(e?o:i,u),y=Qi(a,w,u);return`
3797    fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${b} {
3798      ${e?P:_}
3799    }
3800
3801    fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${v} {
3802      ${e?_:P}
3803    }
3804
3805    fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${w}) {
3806      let col = colIn * ${l};
3807      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)
3808      {
3809      var value = valueIn;
3810      let outWidth = ${e?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};
3811      ${g}
3812      ${Q1(s)}
3813      ${y}
3814      setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);
3815      }
3816    }`},ex=(e,t,r,n,s,a,i,o,l)=>{let u=t.format==="NHWC",p=u?e[0].dims[3]:e[0].dims[1],d=r[0],c=u?r[2]:r[3],g=u?r[1]:r[2],A=u?r[3]:r[1],m=u&&(p%4===0||p%3===0)&&A%4===0,B=u?A:c*g,f=u?c*g:A,h=[8,8,1],P=n<=8?[4,1,1]:[4,4,1],_=[Math.ceil(B/h[0]/P[0]),Math.ceil(f/h[1]/P[1]),Math.ceil(d/h[2]/P[2])];ur("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${_}`);let w=m?u&&p%4!==0?3:4:1,b=h[1]*P[1],v=h[0]*P[0],y=Math.max(h[0]*w,h[1]),$=n%b===0,k=s%v===0,W=a%y===0,j=m?[w,4,4]:[1,1,1],F=[{type:6,data:n},{type:6,data:s},{type:6,data:a},{type:6,data:[t.pads[0],t.pads[1]]},{type:6,data:t.strides},{type:6,data:t.dilations}];Hi(t,F),F.push(...It(e[0].dims,e[1].dims));let R=["rank","rank"];i&&(F.push(...It(e[2].dims)),R.push("rank")),F.push(...It(r));let L=Q=>{let ne=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];Ki(t,ne);let re=m?4:1,ce=Bn(e[0].dataType),ge=`
3817      fn setOutputAtIndex(flatIndex : i32, value : ${m?`vec4<${ce}>`:ce}) {
3818        result[flatIndex] = ${m?`vec4<${ce}>`:ce}(value);
3819      }
3820      fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${m?`vec4<${ce}>`:ce}) {
3821        let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3));
3822        setOutputAtIndex(flatIndex ${m?"/ 4":""}, value);
3823      }`,q=Ne("x",e[0].dataType,e[0].dims.length,w===3?1:w),V=Ne("w",e[1].dataType,e[1].dims.length,re),U=[q,V],N=Pt("result",e[0].dataType,r.length,re);if(i){let oe=Ne("bias",e[2].dataType,e[2].dims.length,re);U.push(oe),ge+=`
3824        fn getBiasByOutputCoords(coords : vec4<i32>) -> ${m?`vec4<${ce}>`:ce} {
3825          return bias[coords.${u?"w":"y"}${m?"/ 4":""}];
3826        }`}return`
3827        ${H1("uniforms.result_strides")}
3828        //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>,
3829        //  outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>,
3830        //  dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };
3831        ${Q.registerUniforms(ne).declareVariables(...U,N)}
3832        ${ge}
3833        ${J1(u,$,k,W,i,t,j[0],j[1],j[2],ce)}
3834        ${m?QA(P,h,ce,void 0,!u,y):KA(P,h,ce,void 0,!u,y,!1,void 0,o)}`};return{name:"Conv2DMatMul",shaderCache:{hint:`${t.cacheKey};${w};${m};${$};${k};${W};${b};${v};${y}`,inputDependencies:R},getRunData:()=>({outputs:[{dims:l?l(r):r,dataType:e[0].dataType}],dispatchGroup:{x:_[0],y:_[1],z:_[2]},programUniforms:F}),getShaderSource:L}}}),tx,XA,Wl,rx,ZA,nx,sx,ax,l3=et(()=>{Gt(),$a(),qt(),tr(),qi(),UA(),tx=e=>{let t=1;for(let r=0;r<e.length;r++)t*=e[r];return t},XA=e=>typeof e=="number"?[e,e,e]:e,Wl=(e,t)=>t<=1?e:e+(e-1)*(t-1),rx=(e,t,r,n=1)=>{let s=Wl(t,n);return Math.floor((e[0]*(r-1)-r+s)/2)},ZA=(e,t,r,n,s)=>{s==null&&(s=rx(e,t[0],n[0]));let a=[0,0,0,r];for(let i=0;i<3;i++)e[i]+2*s>=t[i]&&(a[i]=Math.trunc((e[i]-t[i]+2*s)/n[i]+1));return a},nx=(e,t,r,n,s,a,i,o,l,u)=>{let p,d,c,g;if(e==="VALID"&&(e=0),typeof e=="number"){p={top:e,bottom:e,left:e,right:e,front:e,back:e};let A=ZA([t,r,n,1],[o,l,u],1,[s,a,i],e);d=A[0],c=A[1],g=A[2]}else if(Array.isArray(e)){if(!e.every((m,B,f)=>m===f[0]))throw Error(`Unsupported padding parameter: ${e}`);p={top:e[0],bottom:e[1],left:e[2],right:e[3],front:e[4],back:e[5]};let A=ZA([t,r,n,1],[o,l,u],1,[s,a,i],e[0]);d=A[0],c=A[1],g=A[2]}else if(e==="SAME_UPPER"){d=Math.ceil(t/s),c=Math.ceil(r/a),g=Math.ceil(n/i);let A=(d-1)*s+o-t,m=(c-1)*a+l-r,B=(g-1)*i+u-n,f=Math.floor(A/2),h=A-f,P=Math.floor(m/2),_=m-P,w=Math.floor(B/2),b=B-w;p={top:P,bottom:_,left:w,right:b,front:f,back:h}}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:p,outDepth:d,outHeight:c,outWidth:g}},sx=(e,t,r,n,s,a=!1,i="channelsLast")=>{let o,l,u,p,d;if(i==="channelsLast")[o,l,u,p,d]=e;else if(i==="channelsFirst")[o,d,l,u,p]=e;else throw new Error(`Unknown dataFormat ${i}`);let[c,,g,A,m]=t,[B,f,h]=XA(r),[P,_,w]=XA(n),b=Wl(g,P),v=Wl(A,_),y=Wl(m,w
vendor: 4,164 bytes, lines 3834-3885
3834),{padInfo:$,outDepth:k,outHeight:W,outWidth:j}=nx(s,l,u,p,B,f,h,b,v,y),F=a?c*d:c,R=[0,0,0,0,0];return i==="channelsFirst"?R=[o,F,k,W,j]:i==="channelsLast"&&(R=[o,k,W,j,F]),{batchSize:o,dataFormat:i,inDepth:l,inHeight:u,inWidth:p,inChannels:d,outDepth:k,outHeight:W,outWidth:j,outChannels:F,padInfo:$,strideDepth:B,strideHeight:f,strideWidth:h,filterDepth:g,filterHeight:A,filterWidth:m,effectiveFilterDepth:b,effectiveFilterHeight:v,effectiveFilterWidth:y,dilationDepth:P,dilationHeight:_,dilationWidth:w,inShape:e,outShape:R,filterShape:t}},ax=(e,t,r,n,s,a)=>{let i=a==="channelsLast";i?e[0].dims[3]:e[0].dims[1];let o=[64,1,1],l={x:r.map((B,f)=>f)},u=[Math.ceil(tx(l.x.map(B=>r[B]))/o[0]),1,1];ur("verbose",()=>`[conv3d_naive_webgpu] dispatch = ${u}`);let p=1,d=$e.size(r),c=[{type:12,data:d},{type:12,data:n},{type:12,data:s},{type:12,data:t.strides},{type:12,data:t.dilations}];Hi(t,c),c.push(...It(e[0].dims,e[1].dims));let g=["rank","rank"],A=e.length===3;A&&(c.push(...It(e[2].dims)),g.push("rank")),c.push(...It(r));let m=B=>{let f=[{name:"output_size",type:"u32"},{name:"filter_dims",type:"u32",length:n.length},{name:"pads",type:"u32",length:s.length},{name:"strides",type:"u32",length:t.strides.length},{name:"dilations",type:"u32",length:t.dilations.length}];Ki(t,f);let h=1,P=Bn(e[0].dataType),_=Ne("x",e[0].dataType,e[0].dims.length,p),w=Ne("W",e[1].dataType,e[1].dims.length,h),b=[_,w],v=Pt("result",e[0].dataType,r.length,h),y="";if(A){let W=Ne("bias",e[2].dataType,e[2].dims.length,h);b.push(W),y+=`
3835        fn getBiasByOutputCoords(coords : array<u32, 5>) -> ${P} {
3836          return bias[${i?xt("coords",4,5):xt("coords",1,5)}];
3837        }`}let $=Sn(p,P),k=Qi(t,$,P);return`
3838            ${y}
3839            fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {
3840              let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);
3841              return ${_.getByIndices("aIndices")};
3842            }
3843            fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {
3844              let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);
3845              return ${w.getByIndices("aIndices")};
3846            }
3847          ${B.registerUniforms(f).declareVariables(...b,v)}
3848          ${B.mainStart()}
3849          ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
3850              let coords = ${v.offsetToIndices("global_idx")};
3851              let batch = ${xt("coords",0,_.rank)};
3852              let d2 = ${i?xt("coords",_.rank-1,_.rank):xt("coords",1,_.rank)};
3853              let xFRCCorner = vec3<u32>(${i?xt("coords",1,_.rank):xt("coords",2,_.rank)},
3854              ${i?xt("coords",2,_.rank):xt("coords",3,_.rank)},
3855              ${i?xt("coords",3,_.rank):xt("coords",4,_.rank)}) * uniforms.strides - uniforms.pads;
3856              let xFCorner = xFRCCorner.x;
3857              let xRCorner = xFRCCorner.y;
3858              let xCCorner = xFRCCorner.z;
3859              let xShapeY = ${i?xt("uniforms.x_shape",1,_.rank):xt("uniforms.x_shape",2,_.rank)};
3860              let xShapeZ = ${i?xt("uniforms.x_shape",2,_.rank):xt("uniforms.x_shape",3,_.rank)};
3861              let xShapeW = ${i?xt("uniforms.x_shape",3,_.rank):xt("uniforms.x_shape",4,_.rank)};
3862              let xShapeU = ${i?xt("uniforms.x_shape",4,_.rank):xt("uniforms.x_shape",1,_.rank)};
3863              let inputDepthNearestVec4 = (xShapeU / 4) * 4;
3864              let inputDepthVec4Remainder = xShapeU % 4;
3865
3866              var value = 0.0;
3867              for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) {
3868                let xF = xFCorner + wF * uniforms.dilations[0];
3869                if (xF < 0 || xF >= xShapeY) {
3870                  continue;
3871                }
3872
3873                for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) {
3874                  let xR = xRCorner + wR * uniforms.dilations[1];
3875                  if (xR < 0 || xR >= xShapeZ) {
3876                    continue;
3877                  }
3878
3879                  for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) {
3880                    let xC = xCCorner + wC * uniforms.dilations[2];
3881                    if (xC < 0 || xC >= xShapeW) {
3882                      continue;
3883                    }
3884
3885                    for (var d1 = 0u;
3885 d1 < inputDepthNearestVec4; d1 += 4) {
3886                      ${i?`let xValues = vec4<f32>(
3887                               getX(batch, xF, xR, xC, d1),
3888                               getX(batch, xF, xR, xC, d1 + 1),
3889                               getX(batch, xF, xR, xC, d1 + 2),
3890                               getX(batch, xF, xR, xC, d1 + 3));
3891                            `:`let xValues = vec4<f32>(
3892                               getX(batch, d1, xF, xR, xC),
3893                               getX(batch, d1 + 1, xF, xR, xC),
3894                               getX(batch, d1 + 2, xF, xR, xC),
3895                               getX(batch, d1 + 3, xF, xR, xC));
3896                            `}
3897                            let wValues = vec4<f32>(
3898                              getW(d2, d1, wF, wR, wC),
3899                              getW(d2, d1 + 1, wF, wR, wC),
3900                              getW(d2, d1 + 2, wF, wR, wC),
3901                              getW(d2, d1 + 3, wF, wR, wC));
3902                      value += dot(xValues, wValues);
3903                    }
3904                    if (inputDepthVec4Remainder == 1) {
3905                        ${i?`value += getX(batch, xF, xR, xC, inputDepthNearestVec4)
3906                          * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC)
3907                          * getW(d2, inputDepthNearestVec4, wF, wR, wC);`}
3908                    } else if (inputDepthVec4Remainder == 2) {
3909                      ${i?`let xValues = vec2<f32>(
3910                        getX(batch, xF, xR, xC, inputDepthNearestVec4),
3911                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1));
3912                      `:`let xValues = vec2<f32>(
3913                        getX(batch, inputDepthNearestVec4, xF, xR, xC),
3914                        getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC));
3915                    `}
3916                    let wValues = vec2<f32>(
3917                      getW(d2, inputDepthNearestVec4, wF, wR, wC),
3918                      getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC));
3919                      value += dot(xValues, wValues);
3920                    } else if (inputDepthVec4Remainder == 3) {
3921                      ${i?`let xValues = vec3<f32>(
3922                        getX(batch, xF, xR, xC, inputDepthNearestVec4),
3923                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1),
3924                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2));
3925                      `:`let xValues = vec3<f32>(
3926                        getX(batch, inputDepthNearestVec4, xF, xR, xC),
3927                        getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC),
3928                        getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC));
3929                    `}
3930                    let wValues = vec3<f32>(
3931                      getW(d2, inputDepthNearestVec4, wF, wR, wC),
3932                      getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC),
3933                      getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC));
3934                      value += dot(xValues, wValues);
3935                    }
3936                  }
3937                }
3938              }
3939              ${A?"value = value + getBiasByOutputCoords(coords)":""};
3940              ${k}
3941              result[global_idx] = f32(value);
3942          }`};return{name:"Conv3DNaive",shaderCache:{hint:`${t.cacheKey};${i};${p};${A}`,inputDependencies:g},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:u[0],y:u[1],z:u[2]},programUniforms:c}),getShaderSource:m}}}),ix,ox,u3=et(()=>{Gt(),qt(),tr(),qi(),ix=(e,t,r,n)=>{let s=e.length>2,a=s?"value += b[output_channel];":"",i=e[0].dims,o=e[1].dims,l=t.format==="NHWC",u=l?r[3]:r[1],p=u/t.group,d=l&&p>=4?en(u):1,c=$e.size(r)/d,g=[{type:12,data:c},{type:12,data:t.dilations},{type:12,data:[t.strides[0],t.strides[1]]},{type:12,data:[t.pads[0],t.pads[1]]},{type:12,data:p}];Hi(t,g),g.push(...It(i,[o[0],o[1],o[2],o[3]/d]));let A=s?["rank","rank","rank"]:["rank","rank"];g.push(...It([r[0],r[1],r[2],r[3]/d]));let m=B=>{let f=Pt("output",e[0].dataType,r.length,d),h=Bn(f.type.tensor),P=Qi(t,f.type.value,h),_=Ne("x",e[0].dataType,i.length),w=Ne("w",e[1].dataType,o.length,d),b=[_,w];s&&b.push(Ne("b",e[2].dataType,e[2].dims,d));let v=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:t.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];Ki(t,v);let y=l?`
3943      for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) {
3944        let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];
3945
3946        if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) {
3947          continue;
3948        }
3949
3950        for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) {
3951          let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];
3952          if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) {
3953            continue;
3954          }
3955
3956          for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) {
3957            let input_channel = in_channel_offset + wInChannel;
3958            let xVal = ${_.get("batch","xHeight","xWidth","input_channel")};
3959            let wVal = ${w.get("wHeight","wWidth","wInChannel","output_channel")};
3960            value += xVal * wVal;
3961          }
3962        }
3963      }
3964      `:`
3965      for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {
3966        let input_channel = in_channel_offset + wInChannel;
3967        for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {
3968          let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];
3969
3970          if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) {
3971            continue;
3972          }
3973
3974          for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {
3975            let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];
3976            if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) {
3977              continue;
3978            }
3979
3980            let xVal = ${_.get("batch","input_channel","xHeight","xWidth")};
3981            let wVal = ${w.get("output_channel","wInChannel","wHeight","wWidth")};
3982            value += xVal * wVal;
3983          }
3984        }
3985      }
3986      `;return`
3987  ${B.registerUniforms(v).declareVariables(...b,f)}
3988
3989  ${B.mainStart()}
3990    ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
3991
3992    let outputIndices = ${f.offsetToIndices("global_idx")};
3993    let batch: u32 = outputIndices[0];
3994    let output_channel: u32 = outputIndices[${l?3:1}];
3995    let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${l?1:2}
3995], outputIndices[${l?2:3}]) * uniforms.strides - uniforms.pads;
3996    let group_id: u32 = output_channel * ${d} / uniforms.output_channels_per_group;
3997    var in_channel_offset = group_id * uniforms.w_shape[${l?2:1}];
3998
3999    var value: ${f.type.value} = ${f.type.value}(0);
4000    ${y}
4001    ${a}
4002    ${P}
4003    ${f.setByOffset("global_idx","value")}
4004  }`};return{name:"GroupedConv",shaderCache:{hint:`${t.cacheKey}_${d}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},ox=(e,t,r,n)=>{let s=e.length>2,a=en(r[3]),i=en(r[2]),o=$e.size(r)/a/i,l=[e[0].dims[0],e[0].dims[1],e[0].dims[2],e[0].dims[3]/a],u=[e[1].dims[0],e[1].dims[1],e[1].dims[2],e[1].dims[3]/a],p=[r[0],r[1],r[2],r[3]/a],d=[{type:12,data:o},{type:6,data:[t.strides[0],t.strides[1]]},{type:6,data:[t.pads[0],t.pads[1]]}];Hi(t,d),d.push(...It(l,u,p));let c=(i-1)*t.strides[1]+u[1],g=A=>{let m=Pt("output",e[0].dataType,p.length,a),B=Bn(m.type.tensor),f=Qi(t,m.type.value,B),h=Ne("x",e[0].dataType,l.length,a),P=Ne("w",e[1].dataType,u.length,a),_=[h,P];s&&_.push(Ne("b",e[2].dataType,e[2].dims,a));let w=s?"value += b[output_channel];":"",b=[{name:"output_size",type:"u32"},{name:"strides",type:"i32",length:2},{name:"pads",type:"i32",length:2}];return Ki(t,b),`
4005  ${A.registerUniforms(b).declareVariables(..._,m)}
4006  ${A.mainStart()}
4007    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4008    let width0 = uniforms.output_shape[3];
4009    let output_channel = global_idx % width0;
4010    var index1 = global_idx / width0;
4011    let width1 = uniforms.output_shape[2] / ${i}u;
4012    let col = (index1 % width1) * ${i}u;
4013    index1 = index1 / width1;
4014    let row = index1 % uniforms.output_shape[1];
4015    let batch = index1 / uniforms.output_shape[1];
4016
4017    let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads;
4018
4019    var x_vals: array<${h.type.value}, ${c}>;
4020    var values: array<${m.type.value}, ${i}>;
4021    let input_channel = output_channel;
4022    // Use constant instead of uniform can give better performance for w's height/width.
4023    for (var w_height: u32 = 0u; w_height < ${u[0]}; w_height++) {
4024      let x_height = x_corner.x + i32(w_height);
4025      if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) {
4026        for (var i = 0; i < ${c}; i++) {
4027          let x_width = x_corner.y + i;
4028          if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) {
4029            x_vals[i] = ${h.get("batch","u32(x_height)","u32(x_width)","input_channel")};
4030          } else {
4031            x_vals[i] = ${h.type.value}(0);
4032          }
4033        }
4034        for (var w_width: u32 = 0u; w_width < ${u[1]}; w_width++) {
4035          let w_val = ${P.get("w_height","w_width","0","output_channel")};
4036          for (var i = 0u; i < ${i}u; i++) {
4037            values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]);
4038          }
4039        }
4040      }
4041    }
4042
4043    for (var i = 0u; i < ${i}u; i++) {
4044      var value = values[i];
4045      ${w}
4046      ${f}
4047      ${m.set("batch","row","col + i","output_channel","value")};
4048    }
4049  }`};return{name:"GroupedConv-Vectorize",shaderCache:{hint:`${t.cacheKey};${a};${i};${c};${u[0]};${u[1]}`,inputDependencies:s?["rank","rank","type"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:n?n(r):r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:d}),getShaderSource:g}}}),lx,Cc,ux,$c,JA,eh,cx,dx,th,c3=et(()=>{qt(),o3(),l3(),qA(),u3(),qi(),VA(),Xa(),lx=(e,t,r,n,s,a)=>{let i=e[0],o=e.slice(a?1:2,a?3:4),l=o.length,u=t[0],p=t.slice(2).map((c,g)=>c+(c-1)*(r[g]-1)),d=o.map((c,g)=>c+n[g]+n[g+l]).map((c,g)=>Math.floor((c-p[g]+s[g])/s[g]));return d.splice(0,0,i),d.splice(a?3:1,0,u),d},Cc=[2,3,1,0],ux=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length>5)throw new Error("greater than 5D is not supported");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[1]*t.group;if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(e.length===3&&(e[2].dims.length!==1||e[1].dims[0]!==e[2].dims[
vendor: 25,816 bytes, lines 4049-4200
40490]))throw new Error("invalid bias");let s=e[0].dims.length-2;if(t.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(t.strides.length!==s)throw new Error(`strides should be ${s}D`);if(t.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape")},$c=(e,t)=>{let r=e.kernelShape.slice();r.length<t[1].dims.length-2&&r.push(...Array(t[1].dims.length-2-r.length).fill(0));for(let a=2;a<t[1].dims.length;++a)r[a-2]===0&&(r[a-2]=t[1].dims[a]);let n=e.pads.slice();Mc.adjustPadsBasedOnAutoPad(t[0].dims,e.strides,e.dilations,r,n,e.format==="NHWC",e.autoPad);let s=Object.assign({},e);return Object.assign(s,{kernelShape:r,pads:n}),s},JA=e=>{let t=jA(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],s=e.dilations,a=e.group,i=e.kernel_shape,o=e.pads,l=e.strides,u=e.w_is_const();return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},eh=(e,t,r,n)=>{let s=r.format==="NHWC",a=lx(t[0].dims,t[1].dims,r.dilations,r.pads,r.strides,s);if(r.group!==1){let b=[t[0]];if(s){let v=e.kernelCustomData.wT??e.compute(is(t[1],Cc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=v),b.push(v)}else b.push(t[1]);t.length===3&&b.push(t[2]),!e.adapterInfo.isArchitecture("ampere")&&s&&t[1].dims[0]===r.group&&t[1].dims[1]===1&&r.dilations[0]===1&&r.dilations[1]===1?e.compute(ox(b,r,a,n),{inputs:b}):e.compute(ix(b,r,a,n),{inputs:b});return}let i=t.length===3,o=t[0].dims[s?1:2],l=t[0].dims[s?2:3],u=t[0].dims[s?3:1],p=t[1].dims[2],d=t[1].dims[3],c=a[s?1:2],g=a[s?2:3],A=a[s?3:1],m=s&&p===o&&d===l&&r.pads[0]===0&&r.pads[1]===0;if(m||p===1&&d===1&&r.dilations[0]===1&&r.dilations[1]===1&&r.strides[0]===1&&r.strides[1]===1&&r.pads[0]===0&&r.pads[1]===0){let b=a[0],v,y,$,k=[];if(s){let F=e.kernelCustomData.wT??e.compute(is(t[1],Cc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];if(r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=F),m){let R=o*l*u;v=t[0].reshape([1,b,R]),y=F.reshape([1,R,A]),$=[1,b,A]}else v=t[0].reshape([b,o*l,u]),y=F.reshape([1,u,A]),$=[b,c*g,A];k.push(v),k.push(y)}else v=t[0].reshape([b,u,o*l]),y=t[1].reshape([1,A,u]),$=[b,A,c*g],k.push(y),k.push(v);i&&k.push(t[2]);let W=$[2],j=k[0].dims[k[0].dims.length-1];W<8&&j<8?e.compute(WA(k,r,a,$,s,n),{inputs:k}):e.compute(Tc(k,r,a,$,s,n),{inputs:k});return}let B=!0,f=e.kernelCustomData.wT??e.compute(is(t[1],Cc),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=f);let h=[t[0],f];i&&h.push(t[2]);let P=s?c*g:A,_=s?A:c*g,w=p*d*u;e.compute(ex(h,r,a,P,_,w,i,B,n),{inputs:h})},cx=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=[0,t.pads[0],0,t.pads[1]],a=[1].concat(t.strides),i=[1].concat(t.dilations),o=[1].concat(t.kernelShape),l=$c({...t,pads:s,strides:a,dilations:i,kernelShape:o},n);eh(e,n,l,u=>r?[u[0],u[2],u[3]]:[u[0],u[1],u[3]])},dx=(e,t,r)=>{let n=r.format==="NHWC"?"channelsLast":"channelsFirst",s=$c(r,t),a=r.autoPad==="NOTSET"?r.pads:r.autoPad,i=sx(t[0].dims,t[1].dims,r.strides,r.dilations,a,!1,n);e.compute(ax(t,s,i.outShape,[i.filterDepth,i.filterHeight,i.filterWidth],[i.padInfo.front,i.padInfo.top,i.padInfo.left],n))},th=(e,t)=>{if(ux(e.inputs,t),e.inputs[0].dims.length===3)cx(e,t);else if(e.inputs[0].dims.length===5)dx(e,e.inputs,t);else{let r=$c(t,e.inputs);eh(e,e.inputs,r)}}}),px,d3=et(()=>{Gt(),$a(),qt(),tr(),px=(e,t,r)=>{let n=e.length>2,s=t.outputShape,a=t.format==="NHWC",i=t.group,o=e[1].dims,l=o[2]/i,u=o[3],p=a?en(l):1,d=a&&u===1&&l>=4,c=d?Math.floor(l/4)*4:Math.floor(l/p)*p,g=l-c,A=a?en(u):1,m=a?u===1?p:A:1,B=$e.size(s)/A,f=[Math.ceil(B/64),1,1];ur("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${f}`);let h=["rank","rank"],P=[t.strides[0],t.strides[1]],_=[t.kernelShape[a?1:2],t.kernelShape[a?2:3]],w=[t.dilations[0],t.dilations[1]],b=[_[0]+(t.dilations[0]<=1?0:(t.kernelShape[a?1:2]-1)*(t.dilations[0]-1)),_[1]+(t.dilations[1]<=1?0:(t.kernelShape[a?2:3]-1)*(t.dilations[1]-1))],v=[b[0]-1-Math.floor((t.pads[0]+t.pads[2])/2),b[1]-1-Math.floor((t.pads[1]+t.pads[3])/2)],y=[{type:12,data:B},{type:12,data:P},{type:12,data:_},{type:12,data:w},{type:12,data:b},{type:6,data:v},{type:12,data:c},{type:12,data:l},{type:12,data:u},...It(e[0].dims,e[1].dims)];n&&(y.push(...It(e[2].dims)),h.push("rank")),y.push(...It(s));let $=k=>{let W=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:P.length},{name:"filter_dims",type:"u32",length:_.length},{name:"dilations",type:"u32",length:_.length},{name:"effective_filter_dims",type:"u32",length:b.length},{name:"pads",type:"i32",length:v.length},{name:"input_channels_per_group_int",type:"u32"},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],j=Bn(e[0].dataType),F=a?1:2,R=a?2:3,L=a?3:1,Q=Ne("W",e[1].dataType,e[1].dims.length,m),ne=Ne("Dy",e[0].dataType,e[0].dims.length,p),re=[ne,Q];n&&re.push(Ne("bias",e[2].dataType,[s[L]].length,A));let ce=Pt("result",e[0].dataType,s.length,A),ge=()=>{let U="";if(d)p===4?U+=`
4050        let xValue = ${ne.getByOffset("x_offset")};
4051        let wValue = ${Q.getByOffset("w_offset")};
4052        dotProd = dotProd + dot(xValue, wValue);
4053        x_offset += 1u;
4054        w_offset += 1u;`:p===2?U+=`
4055          dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")}));
4056          x_offset += 2u;
4057          w_offset += 2u;`:p===1&&(U+=`
4058          dotProd = dotProd + dot(vec4<${j}>(${ne.getByOffset("x_offset")}, ${ne.getByOffset("x_offset + 1u")}, ${ne.getByOffset("x_offset + 2u")}, ${ne.getByOffset("x_offset + 3u")}), vec4<${j}>(${Q.getByOffset("w_offset")}, ${Q.getByOffset("w_offset + 1u")}, ${Q.getByOffset("w_offset + 2u")}, ${Q.getByOffset("w_offset + 3u")}));
4059          x_offset += 4u;
4060          w_offset += 4u;`);else if(U+=`
4061                  let xValue = ${a?ne.getByOffset(`${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p}`):ne.get("batch","inputChannel","idyR","idyC")};
4062        `,p===1)U+=`
4063          let w_offset = ${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)};
4064          let wValue = ${Q.getByOffset(`w_offset / ${m}`)};
4065          dotProd = dotProd + xValue * wValue;`;else for(let N=0;N<p;N++)U+=`
4066            let wValue${N} = ${Q.getByOffset(`${Q.indicesToOffset(`${Q.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel + ${N}, wOutChannel)`)} / ${m}`)};
4067            dotProd = dotProd + xValue[${N}] * wValue${N};`;return U},q=()=>{if(g===0)return"";if(!d)throw new Error(`packInputAs4 ${d} is not true.`);let U="";if(p===1){U+="dotProd = dotProd";for(let N=0;N<g;N++)U+=`
4068            + ${ne.getByOffset(`x_offset + ${N}`)} * ${Q.getByOffset(`w_offset + ${N}`)}`;U+=";"}else if(p===2){if(g!==2)throw new Error(`Invalid inputChannelsRemainder ${g}.`);U+=`
4069          let xValue = ${ne.getByOffset("x_offset")};
4070          let wValue = ${Q.getByOffset("w_offset")};
4071          dotProd = dotProd + dot(xValue, wValue);`}return U},V=`
4072            let outputIndices = ${ce.offsetToIndices(`global_idx * ${A}`)};
4073            let batch = ${ce.indicesGet("outputIndices",0)};
4074            let d1 = ${ce.indicesGet("outputIndices",L)};
4075            let r = ${ce.indicesGet("outputIndices",F)};
4076            let c = ${ce.indicesGet("outputIndices",R)};
4077            let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads;
4078            let dyRCorner = dyCorner.x;
4079            let dyCCorner = dyCorner.y;
4080            let groupId = d1 / uniforms.output_channels_per_group;
4081            let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;
4082            // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).
4083            // ? = to be determined. : = across all values in that axis.
4084            var dotProd = ${ce.type.value}(0.0);
4085            var wR: u32 = 0;
4086            if (uniforms.dilations.x == 1) {
4087              // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0
4088              wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner);
4089            }
4090            for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {
4091              if (wR % uniforms.dilations.x != 0) {
4092                continue;
4093              }
4094              let dyR = (${j}(dyRCorner) + ${j}(wR)) / ${j}(uniforms.strides[0]);
4095              let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;
4096              if (dyR < 0.0 || dyR >= ${j}(uniforms.Dy_shape[${F}]) || fract(dyR) > 0.0 ||
4097                  wRPerm < 0) {
4098                continue;
4099              }
4100              let idyR: u32 = u32(dyR);
4101              var wC: u32 = 0;
4102              if (uniforms.dilations.y == 1) {
4103                // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0
4104                wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner);
4105              }
4106              for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {
4107                if (wC % uniforms.dilations.y != 0) {
4108                  continue;
4109                }
4110                let dyC = (${j}(dyCCorner) + ${j}(wC)) / ${j}(uniforms.strides.y);
4111                let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;
4112                if (dyC < 0.0 || dyC >= ${j}(uniforms.Dy_shape[${R}]) ||
4113                    fract(dyC) > 0.0 || wCPerm < 0) {
4114                  continue;
4115                }
4116                let idyC: u32 = u32(dyC);
4117                var inputChannel = groupId * uniforms.input_channels_per_group;
4118                ${d?`
4119                var x_offset = ${ne.indicesToOffset(`${ne.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${p};
4120                var w_offset = ${Q.indicesToOffset(`${Q.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${m};
4121                  `:""}
4122                for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${d?4:p}) {
4123                  ${ge()}
4124                  inputChannel = inputChannel + ${d?4:p};
4125                }
4126                ${q()}
4127                wC = wC + uniforms.strides.y - 1;
4128              }
4129              wR = wR + uniforms.strides[0] - 1;
4130            }
4131            let value = dotProd${n?` + bias[d1 / ${A}]`:""};
4132            ${ce.setByOffset("global_idx","value")};
4133          `;return`
4134    ${k.registerUniforms(W).declareVariables(...re,ce)}
4135      ${k.mainStart()}
4136      ${k.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")};
4137    ${V}}`};return{name:"ConvTranspose2D",shaderCache:{hint:`${t.cacheKey};${p}${m}${A}${d}${g}`,inputDependencies:h},getRunData:()=>({dispatchGroup:{x:f[0],y:f[1],z:f[2]},outputs:[{dims:r?r(s):s,dataType:e[0].dataType}],programUniforms:y}),getShaderSource:$}}}),gx,Ax,hx,rh,mx,fx,nh,_x,wx,p3=et(()=>{d3(),qi(),Xa(),gx=(e,t,r,n,s,a)=>(e-1)*t+r+(n-1)*s+1-a,Ax=(e,t,r,n,s)=>{let a=Math.floor(e/2);t==="SAME_UPPER"?(r[n]=a,r[s]=e-a):t==="SAME_LOWER"&&(r[n]=e-a,r[s]=a)},hx=(e,t,r,n,s,a,i,o,l,u)=>{let p=e.length-2,d=u.length===0;l.length<p&&l.push(...Array(p-l.length).fill(0));let c=e[0],g=t[o?3:1]*s;for(let A=0,m=e.length-p-(o?1:0);A<p;++A,++m){let B=e[m],f=d?B*i[A]:u[A],h=gx(B,i[A],a[A],t[m],r[A],f);Ax(h,n,a,A,A+p),d&&u.push(i[A]*(B-1)+l[A]+(t[m]-1)*r[A]+1-a[A]-a[A+p])}u.splice(0,0,c),u.splice(o?3:1,0,g)},rh=(e,t)=>{let r=e.kernelShape.slice();if(e.kernelShape.length===0||e.kernelShape.reduce((d,c)=>d*c,1)===0){r.length=0;for(let d=2;d<t[1].dims.length;++d)r.push(t[1].dims[d])}let n=e.format==="NHWC";r.splice(0,0,t[1].dims[0]),r.splice(n?3:1,0,t[1].dims[1]);let s=e.pads.slice(),a=e.outputShape.slice(),i=e.outputPadding.slice(),o=t[0].dims,l=e.dilations.slice();if(l.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;l=new Array(d).fill(1)}let u=e.strides.slice();if(u.reduce((d,c)=>d+c,0)===0){let d=t[0].dims.length-2;u=new Array(d).fill(1)}hx(o,r,l,e.autoPad,e.group,s,u,n,i,a);let p=Object.assign({},e);return Object.assign(p,{kernelShape:r,pads:s,outputPadding:i,outputShape:a,dilations:l,strides:u}),p},mx=e=>{let t=jA(e),r=e.format,n=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof e.autoPad>"u"?0:e.autoPad],s=e.dilations,a=e.group??1,i=e.kernelShape,o=e.pads,l=e.strides,u=e.wIsConst(),p=e.outputPadding,d=e.outputShape;return{autoPad:n,format:r,dilations:s,group:a,kernelShape:i,outputPadding:p,outputShape:d,pads:o,strides:l,wIsConst:u,...t,cacheKey:`${e.format};${t.activation};`}},fx=(e,t)=>{if(!e||e.length!==2&&e.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(e[0].dims.length!==4&&e[0].dims.length!==3)throw new Error("currently only support 2-dimensional conv");if(e[0].dims.length!==e[1].dims.length)throw new Error("filter does not have same dimension as input");let r=e[0].dims[t.format==="NHWC"?e[0].dims.length-1:1],n=e[1].dims[0];if(r!==n)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let s=e[1].dims[1]*t.group;if(e.length===3&&(e[2].dims.length!==1||e[2].dims[0]!==s))throw new Error("invalid bias");let a=e[0].dims.length-2;if(t.dilations.reduce((i,o)=>i+o,0)>0&&t.dilations.length!==a)throw new Error(`dilations should be ${a}D`);if(t.strides.reduce((i,o)=>i+o,0)>0&&t.strides.length!==a)throw new Error(`strides should be ${a}D`);if(t.pads.reduce((i,o)=>i+o,0)>0&&t.pads.length!==a*2)throw new Error(`pads should be ${a*2}D`);if(t.outputPadding.length!==a&&t.outputPadding.length!==0)throw new Error(`output_padding should be ${a}D`);if(t.kernelShape.reduce((i,o)=>i+o,0)>0&&t.kernelShape.length!==0&&t.kernelShape.length!==e[1].dims.length-2)throw new Error("invalid kernel shape");if(t.outputShape.length!==0&&t.outputShape.length!==e[0].dims.length-2)throw new Error("invalid output shape")},nh=(e,t,r,n)=>{let s=e.kernelCustomData.wT??e.compute(is(t[1],[2,3,0,1]),{inputs:[1],outputs:[r.wIsConst?-2:-1]})[0];r.wIsConst&&!e.kernelCustomData.wT&&(e.kernelCustomData.wT=s);let a=[t[0],s];t.length===3&&a.push(t[2]),e.compute(px(a,r,n),{inputs:a})},_x=(e,t)=>{let r=t.format==="NHWC",n=[e.inputs[0].reshape(r?[e.inputs[0].dims[0],1,e.inputs[0].dims[1],e.inputs[0].dims[2]]:[e.inputs[0].dims[0],e.inputs[0].dims[1],1,e.inputs[0].dims[2]]),e.inputs[1].reshape([e.inputs[1].dims[0],e.inputs[1].dims[1],1,e.inputs[1].dims[2]])];e.inputs.length===3&&n.push(e.inputs[2]);let s=t.kernelShape;(s.length===0||s[0]===0)&&(s=[e.inputs[1].dims[2]]);let a=t.dilations;(a.length===0||a[0]===0)&&(a=[1]);let i=t.strides;(i.length===0||i[0]===0)&&(i=[1]);let o=t.pads;o.length===0&&(o=[0,0]),o=[0,o[0],0,o[1]],i=[1].concat(i),a=[1].concat(a),s=[1].concat(s);let l=t.outputPadding;l=[0].concat(l);let u=rh({...t,pads:o,strides:i,dilations:a,kernelShape:s,outputPadding:l},n);nh(e,n,u,p=>r?[p[0],p[2],p[3]]:[p[0],p[1],p[3]])},wx=(e,t)=>{if(fx(e.inputs,t),e.inputs[0].dims.length===3)_x(e,t);else{let r=rh(t,e.inputs);nh(e,e.inputs,r)}}}),yx,bx,Px,g3=et(()=>{Gt(),qt(),on(),tr(),yx=(e,t,r,n)=>{let s=$e.size(t),a=t.length,i=Ne("input",e,a),o=Pt("output",e,a),l=r.dataType===6?r.getInt32Array()[0]:Number(r.getBigInt64Array()[0]),u=$e.normalizeAxis(l,a),p=d=>{let c=` i32(${i.indicesGet("inputIndices","uniforms.axis")}) `,g=xt("uniforms.input_shape","uniforms.axis",a),A=n.reverse?c+(n.exclusive?" + 1":""):"0",m=n.reverse?g:c+(n.exclusive?"":" + 1");return`
4138                ${d.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(i,o)}
4139                ${d.mainStart()}
4140                  ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
4141                  var inputIndices = ${o.offsetToIndices("global_idx")};
4142                  var sum = ${o.type.value}(0);
4143                  let first : i32 = ${A};
4144                  let last : i32 = ${m};
4145                  for (var i : i32 = first; i < last; i++) {
4146                    ${i.indicesSet("inputIndices","uniforms.axis","u32(i)")};
4147                    sum = sum + ${i.getByIndices("inputIndices")};
4148                  }
4149                  ${o.setByOffset("global_idx","sum")};
4150                }`};return{name:"CumSum",shaderCache:{hint:n.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:t,dataType:e}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:[{type:12,data:s},{type:12,data:u},...It(t,t)]}),getShaderSource:p}},bx=(e,t)=>{let r=e.inputs[0].dims,n=e.inputs[0].dataType,s=e.inputs[1];e.compute(yx(n,r,s,t),{inputs:[0]})},Px=e=>{let t=e.exclusive===1,r=e.reverse===1;return Mr({exclusive:t,reverse:r})}}),Mx,vx,Bx,xx,Ex,A3=et(()=>{Gt(),qt(),on(),tr(),Mx=e=>{if(!e||e.length!==1)throw new Error("DepthToSpace requires 1 input.");if(e[0].dims.length!==4)throw new Error("DepthToSpace requires 4D input.")},vx=(e,t,r,n)=>{let s=[];s.push(`fn perm(i: ${n.type.indices}) -> ${r.type.indices} {
4151    var a: ${r.type.indices};`);for(let a=0;a<t;++a)s.push(r.indicesSet("a",e[a],`i[${a}]`));return s.push("return a;}"),s.join(`
4152`)},Bx=(e,t)=>{let r,n,s,a,i,o,l=t.format==="NHWC",u=t.blocksize,p=t.mode==="DCR";l?([r,n,s,a]=e.dims,i=p?[r,n,s,u,u,a/u**2]:[r,n,s,a/u**2,u,u],o=p?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([r,n,s,a]=[e.dims[0],e.dims[2],e.dims[3],e.dims[1]],i=p?[r,u,u,a/u**2,n,s]:[r,a/u**2,u,u,n,s],o=p?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let d=e.reshape(i),c=d.dims.length,g=e.dataType,A=Ne("a",g,c),m=Pt("output",g,c),B=f=>`
4153  ${f.registerUniform("output_size","u32").declareVariables(A,m)}
4154
4155  ${vx(o,c,A,m)}
4156
4157  ${f.mainStart()}
4158    ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4159
4160    let indices = ${m.offsetToIndices("global_idx")};
4161    let aIndices = perm(indices);
4162
4163    ${m.setByOffset("global_idx",A.getByIndices("aIndices"))}
4164  }`;return{name:"DepthToSpace",shaderCache:{hint:`${e.dims};${t.blocksize};${t.mode}`,inputDependencies:["rank"]},getRunData:f=>{let h=l?[r,n*u,s*u,a/u**2]:[r,a/u**2,n*u,s*u],P=$e.size(h),_=d.dims,w=$e.sortBasedOnPerm(_,o);return{outputs:[{dims:h,dataType:f[0].dataType}],dispatchGroup:{x:Math.ceil(P/64)},programUniforms:[{type:12,data:P},...It(_,w)]}},getShaderSource:B}},xx=(e,t)=>{Mx(e.inputs),e.compute(Bx(e.inputs[0],t))},Ex=e=>Mr({blocksize:e.blocksize,mode:e.mode,format:e.format})}),Sc,Vl,sh,Dx,Ix,Tx,Cx,ah,$x,Sx,kx,h3=et(()=>{Gt(),qt(),on(),tr(),Sc="[a-zA-Z]|\\.\\.\\.",Vl="("+Sc+")+",sh="^"+Vl+"$",Dx="("+Vl+",)*"+Vl,Ix="^"+Dx+"$",Tx=class{constructor(e=-1){this.symbolToIndices=new Map,this.inputIndex=e}addSymbol(e,t){let r=this.symbolToIndices.get(e);r===void 0?r=[t]:r.push(t),this.symbolToIndices.set(e,r)}},Cx=class{constructor(e,t){this.equation=t,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=new Array,this.outputDims=[];let[r,n]=t.includes("->")?t.split("->",2):[t,""];if(!r.match(RegExp(Ix)))throw new Error("Invalid LHS term");if(r.split(",").forEach((s,a)=>{let i=e[a].dims.slice();if(!s.match(RegExp(sh)))throw new Error("Invalid LHS term");let o=this.processTerm(s,!0,i,a);this.lhs.push(o)}),n==="")n+=[...this.symbolToInfo.entries()].filter(([s,a])=>a.count===1||s==="...").map(([s])=>s).join("");else if(!n.match(RegExp(Vl)))throw new Error("Invalid RHS");n.match(RegExp(Sc,"g"))?.forEach(s=>{if(s==="...")this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let a=this.symbolToInfo.get(s);if(a===void 0)throw new Error("Invalid RHS symbol");this.outputDims.push(a.dimValue)}}),this.rhs=this.processTerm(n,!1,this.outputDims)}addSymbol(e,t,r){let n=this.symbolToInfo.get(e);if(n!==void 0){if(n.dimValue!==t&&n.count!==1)throw new Error("Dimension mismatch");n.count++,n.inputIndices.push(r)}else n={count:1,dimValue:t,inputIndices:[r]};this.symbolToInfo.set(e,n)}processTerm(e,t,r,n=-1){let s=r.length,a=!1,i=[],o=0;if(!e.match(RegExp(sh))&&!t&&e!=="")throw new Error("Invalid LHS term");let l=e.match(RegExp(Sc,"g")),u=new Tx(n);return l?.forEach((p,d)=>{if(p==="..."){if(a)throw new Error("Only one ellipsis is allowed per input term");a=!0;let c=s-l.length+1;if(c<0)throw new Error("Ellipsis out of bounds");if(i=r.slice(o,o+c),this.hasEllipsis){if(this.ellipsisDims.length!==i.length||this.ellipsisDims.toString()!==i.toString())throw new Error("Ellipsis dimensions mismatch")}else if(t)this.hasEllipsis=!0,this.ellipsisDims=i;else throw new Error("Ellipsis must be specified in the LHS");for(let g=0;g<i.length;g++){let A=String.fromCharCode(48+g);u.addSymbol(A,d+g),this.addSymbol(A,r[o++],n)}}else u.addSymbol(p,d+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(p,r[o++],n)}),u}},ah=e=>e+"_max",$x=(e,t,r,n)=>{let s=e.map(u=>u.length).map((u,p)=>Ne(`input${p}`,t,u)),a=$e.size(n),i=Pt("output",t,n.length),o=[...r.symbolToInfo.keys()].filter(u=>!r.rhs.symbolToIndices.has(u)),l=u=>{let p=[],d="var prod = 1.0;",c="var sum = 0.0;",g="sum += prod;",A=[],m=[],B=[],f=[],h=r.symbolToInfo.size===r.rhs.symbolToIndices.size;r.symbolToInfo.forEach((_,w)=>{if(r.rhs.symbolToIndices.has(w)){let b=r.rhs.symbolToIndices.get(w)?.[0];b!==void 0&&r.lhs.forEach((v,y)=>{if(_.inputIndices.includes(y)){let $=v.symbolToIndices.get(w);if($===void 0)throw new Error("Invalid symbol error");$.forEach(k=>{p.push(`${s[y].indicesSet(`input${y}Indices`,k,i.indicesGet("outputIndices",b))}`)})}})}else r.lhs.forEach((b,v)=>{if(_.inputIndices.includes(v)){let y=b.symbolToIndices.get(w);if(y===void 0)throw new Error("Invalid symbol error");y.forEach($=>{A.push(`${s[v].indicesSet(`input${v}Indices`,$,`${w}`)}`)}),f.push(`prod *= ${s[v].getByIndices(`input${v}Indices`)};`)}}),m.push(`for(var ${w}: u32 = 0; ${w} < uniforms.${ah(w)}; ${w}++) {`),B.push("}")});let P=h?[...p,`let sum = ${s.map((_,w)=>_.getByIndices(`input${w}Indices`)).join(" * ")};`]:[...p,c,...m,...A,d,...f,g,...B];return`
4165            ${u.registerUniforms(o.map(_=>({name:`${ah(_)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...s,i)}
4166
4167            ${u.mainStart()}
4168            ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
4169            var outputIndices = ${i.offsetToIndices("global_idx")};
4170            ${s.map((_,w)=>`var input${w}Indices: ${s[w].type.indices};`).join(`
4171`)}
4172            ${P.join(`
4173`)};
4174            ${i.setByOffset("global_idx","sum")};
4175          }`};return{name:"Einsum",shaderCache:{hint:r.equation,inputDependencies:e.map(()=>"rank")},getRunData:()=>{let u=o.filter(d=>r.symbolToInfo.has(d)).map(d=>({type:12,data:r.symbolToInfo.get(d)?.dimValue||0}));u.push({type:12,data:a});let p=e.map((d,c)=>[...It(d)]).reduce((d,c)=>d.concat(c),u);return p.push(...It(n)),{outputs:[{dims:n,dataType:t}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:p}},getShaderSource:l}},Sx=(e,t)=>{let r=new Cx(e.inputs,t.equation),n=r.outputDims,s=e.inputs.map((a,i)=>a.dims);e.compute($x(s,e.inputs[0].dataType,r,n))},kx=e=>{let t=e.equation.replace(/\s+/g,"");return Mr({equation:t})}}),Ox,ih,Gx,zx,Fx,m3=et(()=>{Gt(),qt(),tr(),Ox=e=>{if(!e||e.length!==2)throw new Error("Expand requires 2 input.");let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=r.length<t.length?0:r.length-t.length,s=t.length<r.length?0:t.length-r.length;for(;n<r.length&&s<t.length;++n,++s)if(r[n]!==t[s]&&r[n]!==1&&t[s]!==1)throw new Error("Expand requires shape to be broadcastable to input")},ih=(e,t)=>{let r=e.length-t.length,n=[];for(let s=0;s<r;++s)n.push(e[s]);for(let s=0;s<t.length;++s)n.push(t[s]===1?e[s+r]:t[s]);return n},Gx=(e,t)=>e.length>t.length?ih(e,t):ih(t,e),zx=e=>{let t=e[0].dims,r=Array.from(e[1].getBigInt64Array(),Number),n=Gx(t,r),s=e[0].dataType,a=s===9||$e.size(t)===1,i=s===9||t.length>0&&t[t.length-1]%4===0?4:1,o=a||n.length>0&&n[n.length-1]%4===0?4:1,l=Math.ceil($e.size(n)/o),u=d=>{let c=Ne("input",s,t.length,i),g=Pt("output",s,n.length,o),A;if(s===9){let m=(B,f,h="")=>`
4176          let outputIndices${f} = ${g.offsetToIndices(`outputOffset + ${f}u`)};
4177          let offset${f} = ${c.broadcastedIndicesToOffset(`outputIndices${f}`,g)};
4178          let index${f} = offset${f} / 4u;
4179          let component${f} = offset${f} % 4u;
4180          ${B}[${f}] = ${h}(${c.getByOffset(`index${f}`)}[component${f}]);
4181        `;A=`
4182        let outputOffset = global_idx * ${o};
4183        var data = vec4<u32>(0);
4184        ${m("data",0,"u32")}
4185        ${m("data",1,"u32")}
4186        ${m("data",2,"u32")}
4187        ${m("data",3,"u32")}
4188        ${g.setByOffset("global_idx","data")}
4189      }`}else A=`
4190        let outputIndices = ${g.offsetToIndices(`global_idx * ${o}`)};
4191        let inputOffset = ${c.broadcastedIndicesToOffset("outputIndices",g)};
4192        let data = ${g.type.value}(${c.getByOffset(`inputOffset / ${i}`)});
4193        ${g.setByOffset("global_idx","data")}
4194      }`;return`
4195    ${d.registerUniform("vec_size","u32").declareVariables(c,g)}
4196    ${d.mainStart()}
4197    ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
4198    ${A}`},p=[{type:12,data:l},...It(t,n)];return{name:"Expand",shaderCache:{hint:`${n.length};${i}${o}`,inputDependencies:["rank"]},getShaderSource:u,getRunData:()=>({outputs:[{dims:n,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:p})}},Fx=e=>{Ox(e.inputs),e.compute(zx(e.inputs),{inputs:[0]})}}),Lx,Rx,f3=et(()=>{Gt(),qt(),tr(),NA(),Lx=e=>{let t=e[0].dataType,r=$e.size(e[0].dims),n=$e.size(e[1].dims),s=n%4===0,a=i=>{let o=Ne("x",t,[1],4),l=Ne("bias",t,[1],4),u=Pt("y",t,[1],4),p=[{name:"output_vec_size",type:"u32"},{name:"bias_size",type:"u32"}],d=g=>`
4199      let bias${g}_offset: u32 = (global_idx * 4 + ${g}) % uniforms.bias_size;
4200      let bias${g} = ${l.getByOffset(`bias${g}_offset / 4`)}[bias${g}_offset % 4];`,c=s?`
4201      let bias = ${l.getByOffset("global_idx % (uniforms.bias_size / 4)")};`:`${d(0)}${d(1)}${d(2)}${d(3)}
4202      let bias = ${o.type.value}(bias0, bias1, bias2, bias3);`;return`${i.registerUniforms(p).declareVariables(o,l,u)}
4203
4204    ${RA(Rn(t))}
4205
4206    ${i.mainStart(Oo)}
4207      ${i.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_vec_size")}
4208
4209      let x = ${o.getByOffset("global_idx")};
4210      ${c}
4211      let x_in = x + bias;
4212      ${u.setByOffset("global_idx",YA("x_in"))}
4213    }`};return{name:"FastGeluWithBias",shaderCache:{hint:`${s}`,inputDependencies:["type","type"]},getShaderSource:a,getRunData:i=>({outputs:[{dims:i[0].dims,dataType:i[0].dataType}],programUniforms:[{type:12,data:Math.ceil(r/4)},{type:12,data:n}],dispatchGroup:{x:Math.ceil(r/Oo/4)}})}},Rx=e=>{e.inputs.length<2||$e.size(e.inputs[1].dims)===0?y1(e):e.compute(Lx(e.inputs))}}),Yx,Nx,jx,Ux,_3=et(()=>{Gt(),qt(),on(),tr(),Yx=e=>{if(!e||e.length!==2)throw new Error("Gather requires 2 inputs.")},Nx=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=$e.normalizeAxis(t.axis,s),i=r.slice(0);i.splice(a,1,...n);let o=r[a],l=e[0].dataType===9?4:1,u=Math.ceil($e.size(i)/l),p=[{type:12,data:u},{type:6,data:o},{type:12,data:a},...It(e[0].dims,e[1].dims,i)],d=c=>{let g=Ne("data",e[0].dataType,e[0].dims.length,l),A=Ne("inputIndices",e[1].dataType,e[1].dims.length),m=Pt("output",e[0].dataType,i.length,l),B=h=>{let P=n.length,_=`var indicesIndices${h}  = ${A.type.indices}(0);`;for(let w=0;w<P;w++)_+=`${P>1?`indicesIndices${h}[${w}]`:`indicesIndices${h}`} = ${i.length>1?`outputIndices${h}[uniforms.axis + ${w}]`:`outputIndices${h}`};`;_+=`
4214          var idx${h} = ${A.getByIndices(`indicesIndices${h}`)};
4215          if (idx${h} < 0) {
4216            idx${h} = idx${h} + uniforms.axisDimLimit;
4217          }
4218          var dataIndices${h} : ${g.type.indices};
4219        `;for(let w=0,b=0;w<s;w++)w===a?(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = u32(idx${h});`,b+=P):(_+=`${s>1?`dataIndices${h}[${w}]`:`dataIndices${h}`} = ${i.length>1?`outputIndices${h}[${b}]`:`outputIndices${h}`};`,b++);return _},f;if(e[0].dataType===9){let h=(P,_,w="")=>`
4220          let outputIndices${_} = ${m.offsetToIndices(`outputOffset + ${_}u`)};
4221          ${B(_)};
4222          let offset${_} = ${g.indicesToOffset(`dataIndices${_}`)};
4223          let index${_} = offset${_} / 4u;
4224          let component${_} = offset${_} % 4u;
4225          ${P}[${_}] = ${w}(${g.getByOffset(`index${_}`)}[component${_}]);
4226        `;f=`
4227        let outputOffset = global_idx * ${l};
4228        var value = vec4<u32>(0);
4229        ${h("value",0,"u32")}
4230        ${h("value",1,"u32")}
4231        ${h("value",2,"u32")}
4232        ${h("value",3,"u32")}
4233        ${m.setByOffset("global_idx","value")}
4234      `}else f=`
4235      let outputIndices = ${m.offsetToIndices("global_idx")};
4236      ${B("")};
4237      let value = ${g.getByIndices("dataIndices")};
4238      ${m.setByOffset("global_idx","value")};
4239      `;return`
4240      ${c.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(g,A,m)}
4241      ${c.mainStart()}
4242        ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
4243        ${f}
4244      }`};return{name:"Gather",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:i,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:d}},jx=e=>Mr({axis:e.axis}),Ux=(e,t)=>{let r=e.inputs;Yx(r),e.compute(Nx(e.inputs,t))}}),Wx,Vx,Qx,w3=et(()=>{Gt(),qt(),tr(),Wx=(e,t,r,n,s,a,i,o,l)=>{let u=[{type:12,data:a},{type:12,data:n},{type:12,data:s},{type:12,data:r},{type:12,data:i},{type:12,data:o},{type:12,data:l}],p=[a];u.push(...It(t.dims,p));let d=c=>{let g=Ne("indices_data",t.dataType,t.dims.length),A=Pt("input_slice_offsets_data",12,1,1),m=[g,A],B=[{name:"output_size",type:"u32"},{name:"batch_dims",type:"u32"},{name:"input_dims",type:"u32",length:s.length},{name:"sizes_from_slice_dims_data",type:"u32",length:r.length},{name:"num_slices_per_batch",type:"u32"},{name:"input_batch_stride",type:"u32"},{name:"num_slice_dims",type:"u32"}];return`
4245  ${c.registerUniforms(B).declareVariables(...m)}
4246  ${c.mainStart()}
4247    ${c.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4248    let batch_idx = global_idx / uniforms.num_slices_per_batch;
4249    let base_offset = batch_idx * uniforms.input_batch_stride;
4250
4251    let slice_indices_base_offset = global_idx * uniforms.num_slice_dims;
4252    var relative_slice_offset = 0;
4253    for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) {
4254      var index = i32(indices_data[dim_idx + slice_indices_base_offset].x);
4255      let input_dim_idx = uniforms.batch_dims + dim_idx;
4256      if (index < 0) {
4257        ${s.length===1?"index += i32(uniforms.input_dims);":"index += i32(uniforms.input_dims[input_dim_idx]);"}
4258      }
4259      ${r.length===1?"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);":"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);"}
4260    }
4261
4262    input_slice_offsets_data[global_idx] =  base_offset + u32(relative_slice_offset);
4263  }`};return e.compute({name:"computeSliceOffsets",shaderCache:{hint:`${s.length}_${r.length}`,inputDependencies:["rank"]},getRunData:()=>
vendor: 13,294 bytes, lines 4263-4414
4263({outputs:[{dims:p,dataType:e.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:u}),getShaderSource:d},{inputs:[t],outputs:[-1]})[0]},Vx=(e,t)=>{let r=e.inputs,n=r[0].dims,s=r[0].dataType,a=r[1].dims,i=a[a.length-1],o=$e.sizeToDimension(a,a.length-1),l=$e.sizeFromDimension(n,t.batchDims+i),u=$e.sizeToDimension(n,t.batchDims),p=$e.sizeFromDimension(n,t.batchDims),d=o/u,c=new Array(i),g=l;for(let _=0;_<i;++_)c[i-1-_]=g,g*=n[t.batchDims+i-1-_];let A=Wx(e,r[1],c,t.batchDims,n,o,d,p,i),m=t.batchDims+i;if(m>n.length)throw new Error("last dimension of indices must not be larger than rank of input tensor");let B=a.slice(0,-1).concat(n.slice(m)),f=$e.size(B),h=[{type:12,data:f},{type:12,data:l},...It(r[0].dims,A.dims,B)],P=_=>{let w=Ne("data",r[0].dataType,r[0].dims.length),b=Ne("slice_offsets",12,A.dims.length),v=Pt("output",r[0].dataType,B.length);return`
4264          ${_.registerUniform("output_size","u32").registerUniform("slice_size","u32").declareVariables(w,b,v)}
4265            ${_.mainStart()}
4266            ${_.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4267          let slice_offset = slice_offsets[global_idx / uniforms.slice_size];
4268          output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size];
4269        }`};e.compute({name:"GatherND",shaderCache:{hint:t.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:B,dataType:s}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:h}),getShaderSource:P},{inputs:[r[0],A]})},Qx=e=>({batchDims:e.batch_dims,cacheKey:""})}),Hx,Kx,qx,Xx,y3=et(()=>{Gt(),qt(),on(),tr(),Hx=(e,t)=>{if(e.length<3||e.length>4)throw new Error("GatherBlockQuantized requires 3 or 4 inputs.");let r=$e.normalizeAxis(t.quantizeAxis,e[0].dims.length),n=t.blockSize,s=e[0],a=e[2],i=e.length===4?e[3]:void 0;if(a.dims.length!==s.dims.length||!s.dims.map((o,l)=>l===r?Math.ceil(o/n)===a.dims[l]:o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.");if(i){if(i.dataType!==s.dataType)throw new Error("Zero point must have the same data type as the input tensor.");if(i.dims.length!==a.dims.length||!i.dims.map((o,l)=>o===a.dims[l]).reduce((o,l)=>o&&l,!0))throw new Error("Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.")}},Kx=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r.length,a=$e.normalizeAxis(t.gatherAxis,s),i=$e.normalizeAxis(t.quantizeAxis,s),o=r.slice(0);o.splice(a,1,...n);let l=$e.size(o),u=e[2].dataType,p=e[0].dataType===22,d=[{type:12,data:l},{type:12,data:i},{type:12,data:a},{type:12,data:t.blockSize},...It(...e.map((g,A)=>g.dims),o)],c=g=>{let A=Ne("data",e[0].dataType,e[0].dims.length),m=Ne("inputIndices",e[1].dataType,e[1].dims.length),B=Ne("scales",e[2].dataType,e[2].dims.length),f=e.length>3?Ne("zeroPoint",e[3].dataType,e[3].dims.length):void 0,h=Pt("output",u,o.length),P=[A,m,B];f&&P.push(f);let _=[{name:"output_size",type:"u32"},{name:"quantize_axis",type:"u32"},{name:"gather_axis",type:"u32"},{name:"block_size",type:"u32"}];return`
4270        ${g.registerUniforms(_).declareVariables(...P,h)}
4271        ${g.mainStart()}
4272        let output_indices = ${h.offsetToIndices("global_idx")};
4273        var indices_indices = ${m.type.indices}(0);
4274        ${n.length>1?`
4275          for (var i: u32 = 0; i < ${n.length}; i++) {
4276            let index = ${h.indicesGet("output_indices","uniforms.gather_axis + i")};
4277            ${m.indicesSet("indices_indices","i","index")};
4278          }`:`indices_indices = ${h.indicesGet("output_indices","uniforms.gather_axis")};`};
4279        var data_indices = ${A.type.indices}(0);
4280        for (var i: u32 = 0; i < uniforms.gather_axis; i++) {
4281          let index = ${h.indicesGet("output_indices","i")};
4282          ${A.indicesSet("data_indices","i","index")};
4283        }
4284        var index_from_indices = ${m.getByIndices("indices_indices")};
4285        if (index_from_indices < 0) {
4286          index_from_indices += ${r[a]};
4287        }
4288        ${A.indicesSet("data_indices","uniforms.gather_axis","u32(index_from_indices)")};
4289        for (var i = uniforms.gather_axis + 1; i < ${o.length}; i++) {
4290          let index = ${h.indicesGet("output_indices",`i + ${n.length} - 1`)};
4291          ${A.indicesSet("data_indices","i","index")};
4292        }
4293        let data_offset = ${A.indicesToOffset("data_indices")};
4294        let data_index = data_offset % 8;
4295        // Convert 4-bit packed data to 8-bit packed data.
4296        let packed_4bit_quantized_data = ${A.getByOffset("data_offset / 8")};
4297        let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f;
4298        let quantized_data_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_quantized_data));
4299        let quantized_data = quantized_data_vec[data_index / 2];
4300        var scale_indices = data_indices;
4301        let quantize_axis_index = ${B.indicesGet("data_indices","uniforms.quantize_axis")} / uniforms.block_size;
4302        ${B.indicesSet("scale_indices","uniforms.quantize_axis","quantize_axis_index")};
4303        var scale = ${B.getByIndices("scale_indices")};
4304        ${f?`
4305              let zero_point_indices = scale_indices;
4306              let zero_point_offset = ${f.indicesToOffset("zero_point_indices")};
4307              let zero_point_index = zero_point_offset % 8;
4308              let packed_4bit_zero_points = ${f.getByOffset("zero_point_offset / 8")};
4309              let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f;
4310              let zero_point_vec = ${p?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_zero_points));
4311              let zero_point = zero_point_vec[zero_point_index / 2];`:"var zero_point = 0"};
4312        let dequantized_data = ${Rn(u)}(quantized_data - zero_point) * scale;
4313        ${h.setByOffset("global_idx","dequantized_data")};
4314    }`};return{name:"GatherBlockQuantized",shaderCache:{hint:`${t.cacheKey};${e.filter((g,A)=>A!==1).map(g=>g.dims.join("_")).join(";")}`,inputDependencies:Array.from({length:e.length},(g,A)=>"rank")},getRunData:()=>({outputs:[{dims:o,dataType:u}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:d}),getShaderSource:c}},qx=(e,t)=>{let r=e.inputs;Hx(r,t),e.compute(Kx(e.inputs,t))},Xx=e=>Mr({blockSize:e.blockSize,gatherAxis:e.gatherAxis,quantizeAxis:e.quantizeAxis})}),Zx,Jx,eE,tE,b3=et(()=>{Gt(),qt(),on(),tr(),Zx=e=>{if(!e||e.length!==2)throw new Error("GatherElements requires 2 inputs.");if(e[0].dims.length<1)throw new Error("GatherElements requires that the data input be rank >= 1.");if(e[0].dims.length!==e[1].dims.length)throw new Error(`GatherElements requires that the data input and
4315                     indices input tensors be of same rank.`)},Jx=(e,t)=>{let r=e[0].dims,n=e[0].dataType,s=r.length,a=e[1].dims,i=e[1].dataType,o=$e.normalizeAxis(t.axis,s),l=r[o],u=a.slice(0),p=$e.size(u),d=Ne("input",n,s),c=Ne("indicesInput",i,a.length),g=Pt("output",n,u.length),A=[{type:12,data:p},{type:6,data:l},{type:12,data:o}];return A.push(...It(r,a,u)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:u,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:A}),getShaderSource:m=>`
4316      ${m.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(d,c,g)}
4317      ${m.mainStart()}
4318      ${m.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
4319
4320      let outputIndices = ${g.offsetToIndices("global_idx")};
4321
4322      var idx = ${c.getByOffset("global_idx")};
4323      if (idx < 0) {
4324        idx = idx + uniforms.axisDimLimit;
4325      }
4326      var inputIndices = ${d.type.indices}(outputIndices);
4327      ${d.indicesSet("inputIndices","uniforms.axis","u32(idx)")};
4328      let value = ${d.getByIndices("inputIndices")};
4329
4330      ${g.setByOffset("global_idx","value")};
4331  }`}},eE=e=>Mr({axis:e.axis}),tE=(e,t)=>{let r=e.inputs;Zx(r),e.compute(Jx(e.inputs,t))}}),rE,nE,sE,aE,P3=et(()=>{Gt(),qt(),tr(),rE=e=>{if(!e)throw new Error("Input is missing");if(e.length<2||e.length>3)throw new Error("Invaid input number.");if(e.length===3&&e[2].dims.length>2)throw new Error("Invalid input shape of C");if(e[0].dataType!==e[1].dataType||e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("Input types are mismatched")},nE=(e,t)=>{let r=e[0].dims.slice(),n=e[1].dims.slice(),[s,a,i]=Av.getShapeOfGemmResult(r,t.transA,n,t.transB,e.length===3?e[2].dims:void 0),o=[s,a];if(!o)throw new Error("Can't use gemm on the given tensors");let l=16,u=Math.ceil(a/l),p=Math.ceil(s/l),d=!0,c=$e.size(o),g=[{type:12,data:d?u:c},{type:12,data:s},{type:12,data:a},{type:12,data:i},{type:1,data:t.alpha},{type:1,data:t.beta}],A=["type","type"];e.length===3&&(g.push(...It(e[2].dims)),A.push("rank")),g.push(...It(o));let m=f=>{let h="";t.transA&&t.transB?h="value += a[k * uniforms.M + m] * b[n * uniforms.K + k];":t.transA&&!t.transB?h="value += a[k * uniforms.M + m] * b[k * uniforms.N + n];":!t.transA&&t.transB?h="value += a[m * uniforms.K + k] * b[n * uniforms.K + k];":!t.transA&&!t.transB&&(h="value += a[m * uniforms.K + k] * b[k * uniforms.N + n];");let P=t.alpha===1?"":"value *= uniforms.alpha;",_=Ne("a",e[0].dataType,e[0].dims),w=Ne("b",e[1].dataType,e[1].dims),b=_.type.value,v=null,y=[_,w];e.length===3&&(v=Ne("c",e[2].dataType,e[2].dims.length),y.push(v));let $=Pt("output",e[0].dataType,o.length);y.push($);let k=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}];return`
4332  ${f.registerUniforms(k).declareVariables(...y)}
4333
4334  ${f.mainStart()}
4335    ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4336
4337    let m = global_idx / uniforms.N;
4338    let n = global_idx % uniforms.N;
4339
4340    var value = ${b}(0);
4341    for (var k: u32 = 0u; k < uniforms.K; k++) {
4342      ${h}
4343    }
4344
4345    ${P}
4346    ${v!=null?`let cOffset = ${v.broadcastedIndicesToOffset("vec2(m, n)",$)}; value += ${b}(uniforms.beta) * ${v.getByOffset("cOffset")};`:""}
4347    output[global_idx] = value;
4348  }`},B=f=>{let h=Ne("a",e[0].dataType,e[0].dims),P=Ne("b",e[1].dataType,e[1].dims),_=null,w=[h,P];e.length===3&&(_=Ne("c",e[2].dataType,e[2].dims.length),w.push(_));let b=Pt("output",e[0].dataType,o.length);w.push(b);let v=[{name:"num_tile_n",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}],y="",$="";t.transA&&t.transB?($=`
4349      var col = tile_row_start + local_id.x;
4350      var row = k_start + local_id.y;
4351      if (col < uniforms.M && row < uniforms.K) {
4352        tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];
4353      } else {
4354        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
4355      }
4356
4357      col = k_start + local_id.x;
4358      row = tile_col_start + local_id.y;
4359      if (col < uniforms.K && row < uniforms.N) {
4360        tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];
4361      } else {
4362        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
4363      }
4364      `,y="value += tile_a[k][local_id.y] * tile_b[local_id.x][k];"):t.transA&&!t.transB?($=`
4365      var col = tile_row_start + local_id.x;
4366      var row = k_start + local_id.y;
4367      if (col < uniforms.M && row < uniforms.K) {
4368        tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];
4369      } else {
4370        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
4371      }
4372
4373      col = tile_col_start + local_id.x;
4374      row = k_start + local_id.y;
4375      if (col < uniforms.N && row < uniforms.K) {
4376        tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];
4377      } else {
4378        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
4379      }
4380      `,y="value += tile_a[k][local_id.y] * tile_b[k][local_id.x];"):!t.transA&&t.transB?($=`
4381      var col = k_start + local_id.x;
4382      var row = tile_row_start + local_id.y;
4383      if (col < uniforms.K && row < uniforms.M) {
4384        tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];
4385      } else {
4386        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
4387      }
4388
4389      col = k_start + local_id.x;
4390      row = tile_col_start + local_id.y;
4391      if (col < uniforms.K && row < uniforms.N) {
4392        tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];
4393      } else {
4394        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
4395      }
4396      `,y="value += tile_a[local_id.y][k] * tile_b[local_id.x][k];"):!t.transA&&!t.transB&&($=`
4397      var col = k_start + local_id.x;
4398      var row = tile_row_start + local_id.y;
4399      if (col < uniforms.K && row < uniforms.M) {
4400        tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];
4401      } else {
4402        tile_a[local_id.y][local_id.x] = ${h.type.value}(0);
4403      }
4404
4405      col = tile_col_start + local_id.x;
4406      row = k_start + local_id.y;
4407      if (col < uniforms.N && row < uniforms.K) {
4408        tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];
4409      } else {
4410        tile_b[local_id.y][local_id.x] = ${P.type.value}(0);
4411      }
4412      `,y="value += tile_a[local_id.y][k] * tile_b[k][local_id.x];");let k=t.alpha===1?"":"value *= uniforms.alpha;";return`
4413  ${f.registerUniforms(v).declareVariables(...w)}
4414  var<workgroup> tile_a: array<array<${h.type.storage}, ${l}>, ${l}>;
4415  var<workgroup> tile_b: array<array<${P.type.storage}, ${l}>, ${l}>;
4416  ${f.mainStart([l,l,1])}
4417    let tile_col_start = (workgroup_index % uniforms.num_tile_n) * ${l};
4418    let tile_row_start = (workgroup_index / uniforms.num_tile_n) * ${l};
4419    let num_tiles = (uniforms.K - 1) / ${l} + 1;
4420    var k_start = 0u;
4421    var value = ${b.type.value}(0);
4422    for (var t: u32 = 0u; t < num_tiles; t++) {
4423      ${$}
4424      k_start = k_start + ${l};
4425      workgroupBarrier();
4426
4427      for (var k: u32 = 0u; k < ${l}; k++) {
4428        ${y}
4429      }
4430      workgroupBarrier();
4431    }
4432
4433    ${k}
4434    let m = tile_row_start + local_id.y;
4435    let n = tile_col_start + local_id.x;
4436    ${_!=null?`let cOffset = ${_.broadcastedIndicesToOffset("vec2(m, n)",b)}; value += ${b.type.value}(uniforms.beta) * ${_.getByOffset("cOffset")};`:""}
4437    if (m < uniforms.M && n < uniforms.N) {
4438      output[m * uniforms.N + n] = value;
4439    }
4440  }`};return d?{name:"GemmShared",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:u*p},programUniforms:g}),getShaderSource:B}:{name:"Gemm",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:o,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:g}),getShaderSource:m}},sE=e=>{let t=e.transA,r=e.transB,n=e.alpha,s=e.beta;return{transA:t,transB:r,alpha:n,beta:s,cacheKey:`${e.transA};${e.transB};${e.alpha===1}`}},aE=(e,t)=>{rE(e.inputs),e.compute(nE(e.inputs,t))}}),ha,Sa,Xi,Zi,iE,oE,lE,uE,cE,dE,pE,gE,AE,hE,M3=et(()=>{Gt(),qt(),on(),tr(),[ha,Sa,Xi,Zi]=[0,1,2,3],iE=e=>{if(e[0].dims.length!==4)throw new Error("only 4-D tensor is supported.");if(e[0].dims.length!==e[1].dims.length)throw new Error("input dimensions must be equal to grid dimensions");if(e[0].dims.length-2!==e[1].dims[e[1].dims.length-1])throw new Error(`last dimension of grid must be equal to ${e[0].dims.length-2}`);if(e[0].dims[0]!==e[1].dims[0])throw new Error("grid batch size must match input batch size")},oE=`
4441  fn gs_get_cubic_coeffs(x: f32) -> vec4<f32> {
4442    let cubic_alpha = -0.75f;
4443    let x_abs = abs(x);
4444    var coeffs: vec4<f32>;
4445    coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha);
4446    coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1);
4447    coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1);
4448    coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha);
4449    return coeffs;
4450  }
4451`,lE=e=>`
4452  fn gs_bicubic_interpolate(p: mat4x4<${e}>, x: f32, y: f32) -> ${e} {
4453    var v: vec4<f32>;
4454    var coeffs = gs_get_cubic_coeffs(x);
4455    for (var i = 0; i < 4; i++) {
4456      v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3];
4457    }
4458    coeffs = gs_get_cubic_coeffs(y);
4459    let pixel = ${e}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]);
4460    return pixel;
4461  }
4462`,uE=e=>`
4463  fn gs_denormalize(n: f32, length: i32) -> f32 {
4464    ${e.alignCorners===0?`
4465    // alignCorners: false => [-1, 1] to [-0.5, length - 0.5]
4466    return ((n + 1.0) * f32(length) - 1.0) / 2.0;
4467    `:`
4468    // alignCorners: true => [-1, 1] to [0, length - 1]
4469    return (n + 1.0) / 2.0 * (f32(length - 1));
4470    `}
4471  }
4472`,cE=e=>`
4473  ${e.paddingMode==="reflection"?`
4474      fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 {
4475        var dx = 0.0;
4476        var fx = f32(x);
4477        let range = x_max - x_min;
4478        if (fx < x_min) {
4479          dx = x_min - fx;
4480          let n = u32(dx / range);
4481          let r = dx - f32(n) * range;
4482          if (n % 2 == 0) {
4483            fx = x_min + r;
4484          } else {
4485            fx = x_max - r;
4486          }
4487        } else if (fx > x_max) {
4488          dx = fx - x_max;
4489          let n = u32(dx / range);
4490          let r = dx - f32(n) * range;
4491          if (n % 2 == 0) {
4492            fx = x_max - r;
4493          } else {
4494            fx = x_min + r;
4495          }
4496        }
4497        return u32(fx);
4498      }`:""}
4499`,dE=(e,t,r)=>`
4500  fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4<f32>) -> ${t} {
4501     var pixel = ${t}(0);
4502     var indices = vec4<u32>(0);
4503     indices[${ha}] = batch;
4504     indices[${Sa}] = channel;`+(()=>{switch(r.paddingMode){case"zeros":return`
4505          if (r >= 0 && r < H && c >=0 && c < W) {
4506            indices[${Xi}] = u32(r);
4507            indices[${Zi}] = u32(c);
4508          } else {
4509            return ${t}(0);
4510          }
4511        `;case"border":return`
4512          indices[${Xi}] = u32(clamp(r, 0, H - 1));
4513          indices[${Zi}] = u32(clamp(c, 0, W - 1));
4514        `;case"reflection":return`
4515          indices[${Xi}] = gs_reflect(r, border[1], border[3]);
4516          indices[${Zi}] = gs_reflect(c, border[0], border[2]);
4517        `;default:throw new Error(`padding mode ${r.paddingMode} is not supported`)}})()+`
4518    return ${e.getByIndices("indices")};
4519  }
4520`,pE=(e,t,r)=>(()=>{switch(r.mode){case"nearest":return`
4521          let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${ha}], indices[${Sa}], border);
4522        `;case"bilinear":return`
4523          let x1 = i32(floor(x));
4524          let y1 = i32(floor(y));
4525          let x2 = x1 + 1;
4526          let y2 = y1 + 1;
4527
4528          let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${ha}], indices[${Sa}], border);
4529          let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${ha}], indices[${Sa}], border);
4530          let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${ha}], indices[${Sa}], border);
4531          let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${ha}], indices[${Sa}], border);
4532
4533          let dx2 = ${t}(f32(x2) - x);
4534          let dx1 = ${t}(x - f32(x1));
4535          let dy2 = ${t}(f32(y2) - y);
4536          let dy1 = ${t}(y - f32(y1));
4537          let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22);
4538        `;case"bicubic":return`
4539          let x0 = i32(floor(x)) - 1;
4540          let y0 = i32(floor(y)) - 1;
4541          var p: mat4x4<${t}>;
4542          for (var h = 0; h < 4; h++) {
4543            for (var w = 0; w < 4; w++) {
4544              p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${ha}], indices[${Sa}], border);
4545            }
4546          }
4547
4548          let dx = x - f32(x0 + 1);
4549          let dy = y - f32(y0 + 1);
4550          let result = gs_bicubic_interpolate(p, dx, dy);
4551        `;default:throw new Error(`mode ${r.mode} is not supported`)}})()+`${e.setByOffset("global_idx","result")}`,gE=(e,t)=>{let r=Ne("x",e[0].dataType,e[0].dims.length),n=[e[1].dims[0],e[1].dims[1],e[1].dims[2]],s=Ne("grid",e[1].dataType,n.length,2),a=[e[0].dims[0],e[0].dims[1],e[1].dims[1],e[1].dims[2]];t.format==="NHWC"&&(a=[e[0].dims[0],e[1].dims[1],e[1].dims[2],e[0].dims[3]],[ha,Sa,Xi,Zi]=[0,3,1,2]);let i=Pt("output",e[0].dataType,a.length),o=r.type.value,l=$e.size(a),u=[{type:12,data:l},...It(e[0].dims,n,a)],p=d=>`
4552  ${d.registerUniform("output_size","u32").declareVariables(r,s,i)}
4553  ${oE}
4554  ${lE(o)}
4555  ${uE(t)}
4556  ${cE(t)}
4557  ${dE(r,o,t)}
4558
4559  ${d.mainStart()}
4560    ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4561      let H_in = i32(uniforms.x_shape[${Xi}]);
4562      let W_in = i32(uniforms.x_shape[${Zi}]);
4563
4564      ${t.alignCorners===0?`
4565      let x_min = -0.5;
4566      let x_max = f32(W_in) - 0.5;
4567      let y_min = -0.5;
4568      let y_max = f32(H_in) - 0.5;
4569      `:`
4570      let x_min = 0.0;
4571      let x_max = f32(W_in) - 1.0;
4572      let y_min = 0.0;
4573      let y_max = f32(H_in) - 1.0;
4574      `};
4575      let border = vec4<f32>(x_min, y_min, x_max, y_max);
4576
4577      let indices = ${i.offsetToIndices("global_idx")};
4578      var grid_indices = vec3<u32>(indices[${ha}], indices[${Xi}], indices[${Zi}]);
4579      let nxy = ${s.getByIndices("grid_indices")};
4580      var x = gs_denormalize(f32(nxy[0]), W_in);
4581      var y = gs_denormalize(f32(nxy[1]), H_in);
4582
4583      ${pE(i,o,t)}
4584  }`;return{name:"GridSample",shaderCache:{hint:`${t.cacheKey}`,inputDependencies:["type","type"]},getRunData:d=>{let c=$e.size(a);return{outputs:[{dims:a,dataType:d[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:u}},getShaderSource:p}},AE=(e,t)=>{iE(e.inputs),e.compute(gE(e.inputs,t))},hE=e=>Mr({alignCorners:e.align_corners,mode:e.mode,paddingMode:e.padding_mode,format:e.format})}),Hn,mE,fE,oh,_E,Ql,wE,yE=et(()=>{Gt(),qt(),on(),EA(),FA(),tr(),Xa(),Hn=(e,t)=>e.length>t&&e[t].dims.length>0?e[t]:void 0,mE=(e,t)=>{let r=e[0],n=Hn(e,1),s=Hn(e,2),a=Hn(e,3),i=Hn(e,4),o=Hn(e,5),l=Hn(e,6),u=Hn(e,7);if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let p=r.dims[0],d=r.dims[1],c=r.dims.length===3?r.dims[2]:t.numHeads*r.dims[4],g=d,A=0,m=0,B=Math.floor(c/t.numHeads);if(l&&u&&$e.size(l.dims)&&$e.size(u.dims)){if(l.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(l.dims[0]!==p||l.dims[1]!==t.numHeads||l.dims[3]!==B)throw new Error('Input "past_key" shape (batch_size, num_heads, past_sequence_length, head_size)');if(u.dims[0]!==p||u.dims[1]!==t.numHeads||u.dims[3]!==B)throw new Error('Input "past_value" shape (batch_size, num_heads, past_sequence_length, head_size)');if(l.dims[2]!==u.dims[2])throw new Error('Input "past_key" and "past_value" shall have same dim 2 (past_sequence_length)');if(u.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');A=l.dims[2],m=l.dims[2]}else if(l&&$e.size(l.dims)||u&&$e.size(u.dims))throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f;if(n&&$e.size(n.dims)>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(n.dims[2]!==r.dims[2])throw new Error('Input "query" and "key" shall have same dim 2 (hidden_size)');f=2,g=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==B)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');f=5,g=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==B)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');f=0,g=n.dims[2]}}else{if(r.dims.length!==5)throw new Error('Input "query" is expected to have 5 dimensions when key is empty');if(r.dims[2]!==t.numHeads||r.dims[3]!==3)throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}if(a&&$e.size(a.dims)>0){if(a.dims.length!==1)throw new Error('Input "bias" is expected to have 1 dimension');
vendor: 14,708 bytes, lines 4584-4645
4584if(n&&n.dims.length===5&&n.dims[3]===2)throw new Error("bias is not allowed for packed kv.")}let h=A+g,P=0;if(i&&$e.size(i.dims)>0){P=8;let v=i.dims;throw v.length===1?v[0]===p?P=1:v[0]===3*p+2&&(P=3):v.length===2&&v[0]===p&&v[1]===h&&(P=5),P===8?new Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, total_sequence_length)'):new Error("Mask not supported")}let _=!1,w=c;if(s&&$e.size(s.dims)>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(g!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');w=s.dims[2]}else{if(g!==s.dims[2])throw new Error('Input "key" and "value" shall have the same dim 2 (kv_sequence_length)');w=s.dims[1]*s.dims[3],_=!0}}let b=!1;if(i&&$e.size(i.dims)>0)throw new Error("Key padding mask is not supported");if(o&&$e.size(o.dims)>0){if(o.dims.length!==4)throw new Error('Input "attention_bias" is expected to have 4 dimensions');if(o.dims[0]!==p||o.dims[1]!==t.numHeads||o.dims[2]!==d||o.dims[3]!==h)throw new Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:p,sequenceLength:d,pastSequenceLength:A,kvSequenceLength:g,totalSequenceLength:h,maxSequenceLength:m,inputHiddenSize:0,hiddenSize:c,vHiddenSize:w,headSize:B,vHeadSize:Math.floor(w/t.numHeads),numHeads:t.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:t.maskFilterValue,maskType:P,scale:t.scale,broadcastResPosBias:b,passPastInKv:_,qkvFormat:f}},fE=e=>Mr({...e}),oh=Mr({perm:[0,2,1,3]}),_E=(e,t,r,n,s,a,i)=>{let o=[n,s,a],l=$e.size(o),u=[{type:12,data:l},{type:12,data:i},{type:12,data:a}],p=d=>{let c=Pt("qkv_with_bias",t.dataType,o),g=Ne("qkv",t.dataType,o),A=Ne("bias",r.dataType,o),m=[{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}];return`
4585  ${d.registerUniforms(m).declareVariables(g,A,c)}
4586  ${d.mainStart()}
4587    ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4588    let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;
4589
4590    qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];
4591  }`};return e.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:o,dataType:t.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u}),getShaderSource:p},{inputs:[t,r],outputs:[-1]})[0]},Ql=(e,t,r,n,s,a,i,o)=>{let l=a;if(i&&$e.size(i.dims)>0){if(n===1)throw new Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return l=_E(e,a,i,t,n,r*s,o),l=l.reshape([t,n,r,s]),r===1||n===1?l:e.compute(is(l,oh.perm),{inputs:[l],outputs:[-1]})[0]}else return a.dims.length===3&&(l=a.reshape([t,n,r,s])),r===1||n===1?l:e.compute(is(l,oh.perm),{inputs:[l],outputs:[-1]})[0]},wE=(e,t)=>{let r=mE(e.inputs,t),n=e.inputs[0],s=Hn(e.inputs,1),a=Hn(e.inputs,2),i=Hn(e.inputs,3),o=Hn(e.inputs,4),l=Hn(e.inputs,5),u=Hn(e.inputs,6),p=Hn(e.inputs,7);if(n.dims.length===5)throw new Error("Packed QKV is not implemented");if(s?.dims.length===5)throw new Error("Packed KV is not implemented");let d=s&&a&&s.dims.length===4&&a.dims.length===4,c=Ql(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,n,i,0);if(d)return Nl(e,c,s,a,o,void 0,u,p,l,r);if(!s||!a)throw new Error("key and value must be provided");let g=Ql(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.headSize,s,i,r.hiddenSize),A=Ql(e,r.batchSize,r.numHeads,r.kvSequenceLength,r.vHeadSize,a,i,2*r.hiddenSize);Nl(e,c,g,A,o,void 0,u,p,l,r)}}),bE,PE,ME,vE,lh,BE,xE,EE=et(()=>{Gt(),qt(),on(),tr(),bE=e=>{if(!e||e.length<1)throw new Error("too few inputs")},PE=(e,t)=>{let r=[],n=t.numOutputs;return e[1].dims[0]>0&&(e[1].getBigInt64Array().forEach(s=>r.push(Number(s))),n=r.length),Mr({numOutputs:n,axis:t.axis,splitSizes:r})},ME=e=>`
4592fn calculateOutputIndex(index: u32) -> u32 {
4593    for (var i: u32 = 0u; i < ${e}u; i += 1u ) {
4594    if (index < ${xt("uniforms.size_in_split_axis","i",e)}) {
4595        return i;
4596    }
4597    }
4598    return ${e}u;
4599}`,vE=e=>{let t=e.length,r=[];for(let n=0;n<t;++n){let s=e[n].setByIndices("indices","input[global_idx]");t===1?r.push(s):n===0?r.push(`if (output_number == ${n}u) { ${s} }`):n===t-1?r.push(`else { ${s} }`):r.push(`else if (output_number == ${n}) { ${s} }`)}return`
4600      fn writeBufferData(output_number: u32, indices: ${e[0].type.indices}, global_idx: u32) {
4601        ${r.join(`
4602`)}
4603      }`},lh=(e,t)=>{let r=e[0].dims,n=$e.size(r),s=e[0].dataType,a=$e.normalizeAxis(t.axis,r.length),i=new Array(t.numOutputs),o=Ne("input",s,r.length),l=new Array(t.numOutputs),u=[],p=[],d=0,c=[{type:12,data:n}];for(let A=0;A<t.numOutputs;A++){d+=t.splitSizes[A],l[A]=d;let m=r.slice();m[a]=t.splitSizes[A],p.push(m),i[A]=Pt(`output${A}`,s,m.length),u.push({dims:p[A],dataType:e[0].dataType})}c.push({type:12,data:l},...It(r,...p));let g=A=>`
4604  ${A.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",l.length).declareVariables(o,...i)}
4605  ${ME(l.length)}
4606  ${vE(i)}
4607
4608  ${A.mainStart()}
4609    ${A.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}
4610
4611    var indices = ${o.offsetToIndices("global_idx")};
4612    var index = ${o.indicesGet("indices",a)};
4613    let output_number = calculateOutputIndex(index);
4614    if (output_number != 0) {
4615      index -= ${xt("uniforms.size_in_split_axis","output_number - 1u",l.length)};
4616      ${o.indicesSet("indices",a,"index")};
4617    }
4618    writeBufferData(output_number, indices, global_idx);
4619  }`;return{name:"Split",shaderCache:{hint:t.cacheKey,inputDependencies:["rank"]},getShaderSource:g,getRunData:()=>({outputs:u,dispatchGroup:{x:Math.ceil(n/64)},programUniforms:c})}},BE=(e,t)=>{bE(e.inputs);let r=e.inputs.length===1?t:PE(e.inputs,t);e.compute(lh(e.inputs,r),{inputs:[0]})},xE=e=>{let t=e.axis,r=e.splitSizes,n=e.numOutputs<0?r.length:e.numOutputs;if(n!==r.length)throw new Error("numOutputs and splitSizes length must be equal");return Mr({axis:t,numOutputs:n,splitSizes:r})}}),DE,kc,IE,TE=et(()=>{Gt(),qt(),on(),tr(),DE=(e,t)=>{let[r,n,s,a]=e,{numHeads:i,rotaryEmbeddingDim:o}=t;if(r.dims.length!==3&&r.dims.length!==4)throw new Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${r.dims.length}`);if(!$e.areEqual(n.dims,[])&&!$e.areEqual(n.dims,[1])&&n.dims.length!==2)throw new Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${n.dims.length}`);if(s.dims.length!==2)throw new Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${s.dims.length}`);if(a.dims.length!==2)throw new Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${a.dims.length}`);if(!$e.areEqual(s.dims,a.dims))throw new Error("Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape");if(o>0&&i===0)throw new Error("num_heads must be provided if rotary_embedding_dim is specified");let l=r.dims[0],u=r.dims[r.dims.length-2],p=s.dims[0],d=$e.sizeFromDimension(r.dims,1)/u,c=o===0?s.dims[1]*2:d/i;if(o>c)throw new Error("rotary_embedding_dim must be less than or equal to head_size");if(n.dims.length===2){if(l!==n.dims[0])throw new Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${n.dims[0]}`);if(u!==n.dims[1])throw new Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${n.dims[1]}`)}if(c/2!==s.dims[1]&&o/2!==s.dims[1])throw new Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${s.dims[1]}`);if(u>p)throw new Error("Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported")},kc=(e,t)=>{let{interleaved:r,numHeads:n,rotaryEmbeddingDim:s,scale:a}=t,i=e[0].dims[0],o=$e.sizeFromDimension(e[0].dims,1),l=e[0].dims[e[0].dims.length-2],u=o/l,p=e[2].dims[1],d=s===0?p*2:u/n,c=new Array(i,l,u/d,d-p),g=$e.computeStrides(c),A=[{type:1,data:a},{type:12,data:c},{type:12,data:g},...e[0].dims.length===3?new Array({type:12,data:[o,u,d,1]}):[],...e[0].dims.length===4?new Array({type:12,data:[o,d,l*d,1]}):[],...It(e[0].dims,e[1].dims,e[2].dims,e[3].dims,e[0].dims)],m=B=>{let f=Ne("input",e[0].dataType,e[0].dims.length),h=Ne("position_ids",e[1].dataType,e[1].dims.length),P=Ne("cos_cache",e[2].dataType,e[2].dims.length),_=Ne("sin_cache",e[3].dataType,e[3].dims.length),w=Pt("output",e[0].dataType,e[0].dims.length);return B.registerUniforms([{name:"scale",type:"f32"},{name:"global_shape",type:"u32",length:c.length},{name:"global_strides",type:"u32",length:g.length},{name:"input_output_strides",type:"u32",length:g.length}]),`
4620        ${B.declareVariables(f,h,P,_,w)}
4621
4622        ${B.mainStart(Oo)}
4623          let half_rotary_emb_dim = uniforms.${P.name}_shape[1];
4624          let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape;
4625          let size = uniforms.global_shape[0] * uniforms.global_strides[0];
4626          ${B.guardAgainstOutOfBoundsWorkgroupSizes("size")}
4627
4628          if (bsnh[3] < half_rotary_emb_dim) {
4629            let position_ids_idx =
4630                ${h.broadcastedIndicesToOffset("bsnh.xy",Pt("",h.type.tensor,2))};
4631            let position_id =
4632                u32(${h.getByOffset("position_ids_idx")}) + select(0, bsnh[1], position_ids_idx == 0);
4633            let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${r});
4634            let j = i + select(half_rotary_emb_dim, 1, ${r});
4635            let re = ${f.getByOffset("i")} * ${P.get("position_id","bsnh[3]")} -
4636                ${f.getByOffset("j")} * ${_.get("position_id","bsnh[3]")};
4637            ${w.setByOffset("i","re")}
4638            let im = ${f.getByOffset("i")} * ${_.get("position_id","bsnh[3]")} +
4639                ${f.getByOffset("j")} * ${P.get("position_id","bsnh[3]")};
4640            ${w.setByOffset("j","im")}
4641          } else {
4642            let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim;
4643            ${w.setByOffset("k",f.getByOffset("k"))}
4644          }
4645        }`};return{name:"RotaryEmbedding",shaderCache:{hint:Mr({interleaved:r}).cacheKey,inputDependencies:["rank","rank","rank","rank"]},getShaderSource:m,getRunData:()=>({outputs:[{dims:e[0].dims,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil($e.size(c)/Oo)},programUniforms:A})}},IE=(e,t)=>{DE(e.inputs,t),e.compute(kc(e.inputs,t))}}),CE,$E,uh,SE,kE,v3=et(()=>{on(),Gt(),FA(),yE(),EE(),Xa(),TE(),tr(),CE=(e,t)=>{if(t.doRotary&&e.length<=7)throw new Error("cos_cache and sin_cache inputs are required if do_rotary is specified");let r=e[0],n=e[1],s=e[2],a=e[3],i=e[4];if(t.doRotary!==0&&e.length<=7)throw new Error("cos_cast and sin_cache are expected if do_rotary attribute is non-zero");if(t.localWindowSize!==-1)throw new Error("Local attention is not supported");if(t.softcap!==0)throw new Error("Softcap is not supported");if(t.rotaryInterleaved!==0)throw new Error("Rotary interleaved is not supported");if(t.smoothSoftmax)throw new Error("Smooth softmax is not supported");if(r.dims.length!==3&&r.dims.length!==5)throw new Error("Input query is expected to have 3 or 5 dimensions");let o=!1,l=r.dims[0],u=r.dims[1],p=r.dims.length===3?o?r.dims[2]/3:r.dims[2]:t.numHeads*r.dims[4],d=u,c=0,g=!n||n.dims.length===0,A=Math.floor(g?p/(t.numHeads+2*t.kvNumHeads):p/t.numHeads);g&&(p=A*t.numHeads);let m=a&&a.dims.length!==0,B=i&&i.dims.length!==0;if(m&&a.dims.length===4&&a.dims[0]===l&&a.dims[1]!==t.kvNumHeads&&a.dims[2]===t.kvNumHeads&&a.dims[3]===A)throw new Error("BSNH pastKey/pastValue is not supported");if(m&&B){if(a.dims.length!==4)throw new Error('Input "past_key" is expected to have 4 dimensions');if(i.dims.length!==4)throw new Error('Input "past_value" is expected to have 4 dimensions');c=a.dims[2]}else if(m||B)throw new Error('Input "past_key" and "past_value" shall be both present or both absent');let f=1;if(n&&n.dims.length>0){if(r.dims.length!==3)throw new Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw new Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(r.dims[0]!==n.dims[0])throw new Error('Input "query" and "key" shall have same dim 0 (batch size)');if(n.dims.length===3){if(r.dims[2]%n.dims[2]!==0)throw new Error('Dimension 2 of "query" should be a multiple of "key"');d=n.dims[1]}else if(n.dims.length===5){if(n.dims[2]!==t.numHeads||n.dims[3]!==2||n.dims[4]!==A)throw new Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw new Error('Expect "value" be none when "key" has packed kv format.');d=n.dims[1]}else{if(n.dims[1]!==t.numHeads||n.dims[3]!==A)throw new Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');d=n.dims[2]}}else{if(r.dims.length!==3&&r.dims.length!==5)throw new Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(r.dims.length===5&&(r.dims[2]!==t.numHeads||r.dims[3]!==3))throw new Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');f=3}let h=0,P=!1,_=t.kvNumHeads?A*t.kvNumHeads:p;if(s&&s.dims.length>0){if(s.dims.length!==3&&s.dims.length!==4)throw new Error('Input "value" is expected to have 3 or 4 dimensions');if(r.dims[0]!==s.dims[0])throw new Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(s.dims.length===3){if(d!==s.dims[1])throw new Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');_=s.dims[2]}else{if(d!==s.dims[2])throw new Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');_=s.dims[1]*s.dims[3],P=!0}}let w=e.length>4?e[5]:void 0;if(w&&w.dims.length!==1&&w.dims[0]!==l)throw new Error('Input "seqlens" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:l,sequenceLength:u,pastSequenceLength:c,kvSequenceLength:d,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:p,vHiddenSize:_,headSize:A,vHeadSize:Math.floor(_/t.kvNumHeads),numHeads:t.numHeads,kvNumHeads:t.kvNumHeads,nReps:t.numHeads/t.kvNumHeads,pastPresentShareBuffer:!1,maskType:h,scale:t.scale,broadcastResPosBias:!1,passPastInKv:P,qkvFormat:f}},$E=Mr({perm:[0,2,1,3]}),uh=(e,t,r)=>{let n=t,s=r.kvNumHeads;return t.dims.length===3&&r.kvSequenceLength!==0&&(n=t.reshape([r.batchSize,r.kvSequenceLength,s,r.headSize]),n=e.compute(is(n,$E.perm),{inputs:[n],outputs:[-1]})[0]),n},SE=(e,t,r,n)=>{let s=7,a=["type","type"],i=[e*t],o=e*t,l=[{type:12,data:o},{type:12,data:t},{type:12,data:e}],u=p=>{let d=Ne("seq_lens",r.dataType,r.dims),c=Ne("total_seq_lens",n.dataType,n.dims),g=Pt("pos_
4645ids",s,i),A=[{name:"output_size",type:"u32"},{name:"sequence_length",type:"u32"},{name:"batch_size",type:"u32"}];return`
4646  ${p.registerUniforms(A).declareVariables(d,c,g)}
4647  ${p.mainStart()}
4648    ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4649    let total_sequence_length = u32(${c.getByOffset("0")});
4650    let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length;
4651    let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length;
4652    let batch_idx = global_idx / uniforms.sequence_length;
4653    let sequence_idx = i32(global_idx % uniforms.sequence_length);
4654    var pos_id: i32 = 0;
4655    let seqlen = ${d.getByOffset("batch_idx")};
4656    let total_seqlen = seqlen + 1;
4657    if (is_first_prompt) {
4658      if (sequence_idx < total_seqlen) {
4659        pos_id = sequence_idx;
4660      } else {
4661        pos_id = 1;
4662      }
4663      ${g.setByOffset("global_idx","pos_id")}
4664    } else if (is_subsequent_prompt) {
4665      let past_seqlen = total_seqlen - i32(uniforms.sequence_length);
4666      if (past_seqlen + sequence_idx < total_seqlen) {
4667        pos_id = past_seqlen + sequence_idx;
4668      } else {
4669        pos_id = 1;
4670      }
4671      ${g.setByOffset("global_idx","pos_id")}
4672    } else if (global_idx < uniforms.batch_size) {
4673      ${g.setByOffset("global_idx","seqlen")}
4674    };
4675  }
4676  `};return{name:"GeneratePositionIds",shaderCache:{hint:`${e};${t}`,inputDependencies:a},getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:l}),getShaderSource:u}},kE=(e,t)=>{let r=CE(e.inputs,t);if(e.inputs[0].dims.length===5)throw new Error("Packed QKV is not implemented");if(e.inputs[1]?.dims.length===5)throw new Error("Packed KV is not implemented");let n=e.inputs[0],s=e.inputs[1]&&e.inputs[1].dims.length>0?e.inputs[1]:void 0,a=e.inputs[2]&&e.inputs[2].dims.length>0?e.inputs[2]:void 0,i=e.inputs[3]&&e.inputs[3].dims.length!==0?e.inputs[3]:void 0,o=e.inputs[4]&&e.inputs[4].dims.length!==0?e.inputs[4]:void 0,l=e.inputs.length>4?e.inputs[5]:void 0,u=e.inputs.length>5?e.inputs[6]:void 0,p=r.kvNumHeads?r.kvNumHeads:r.numHeads,d=Mr({axis:2,numOutputs:3,splitSizes:[r.numHeads*r.headSize,p*r.headSize,p*r.headSize]}),[c,g,A]=!s&&!a?e.compute(lh([n],d),{inputs:[n],outputs:[-1,-1,-1]}):[n,s,a],m,B;if(t.doRotary){let _=e.compute(SE(r.batchSize,r.sequenceLength,l,u),{inputs:[l,u],outputs:[-1]})[0],w=e.inputs[7],b=e.inputs[8],v=Mr({interleaved:t.rotaryInterleaved!==0,numHeads:r.numHeads,rotaryEmbeddingDim:0,scale:t.scale}),y=[c,_,w,b],$=[-1];m=e.compute(kc(y,v),{inputs:y,outputs:$})[0],y.splice(0,1,g);let k=Mr({interleaved:t.rotaryInterleaved!==0,numHeads:r.kvNumHeads,rotaryEmbeddingDim:0,scale:t.scale});B=e.compute(kc(y,k),{inputs:y,outputs:$})[0]}let f=Ql(e,r.batchSize,r.numHeads,r.sequenceLength,r.headSize,t.doRotary?m:c,void 0,0),h=uh(e,t.doRotary?B:g,r),P=uh(e,A,r);Nl(e,f,h,P,void 0,void 0,i,o,void 0,r,l,u)}}),ch,OE,GE,zE,B3=et(()=>{Gt(),qt(),Xa(),tr(),ch=(e,t,r,n,s,a,i,o)=>{let l=en(a),u=l===1?"f32":`vec${l}f`,p=l===1?"vec2f":`mat2x${l}f`,d=s*i,c=64;d===1&&(c=256);let g=[s,i,a/l],A=[s,i,2],m=["rank","type","type"],B=[];B.push(...It(g,A));let f=h=>{let P=Ne("x",t.dataType,3,l),_=Ne("scale",r.dataType,r.dims),w=Ne("bias",n.dataType,n.dims),b=Pt("output",1,3,2),v=[P,_,w,b];return`
4677  var<workgroup> workgroup_shared : array<${p}, ${c}>;
4678  const workgroup_size = ${c}u;
4679  ${h.declareVariables(...v)}
4680  ${h.mainStart(c)}
4681    let batch = workgroup_index / uniforms.x_shape[1];
4682    let channel = workgroup_index % uniforms.x_shape[1];
4683    let hight = uniforms.x_shape[2];
4684    // initialize workgroup memory
4685    var sum = ${u}(0);
4686    var squared_sum = ${u}(0);
4687    for (var h = local_idx; h < hight; h += workgroup_size) {
4688      let value = ${u}(${P.get("batch","channel","h")});
4689      sum += value;
4690      squared_sum += value * value;
4691    }
4692    workgroup_shared[local_idx] = ${p}(sum, squared_sum);
4693    workgroupBarrier();
4694
4695    for (var currSize = workgroup_size >> 1;  currSize > 0; currSize = currSize >> 1) {
4696      if (local_idx < currSize) {
4697        workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize];
4698      }
4699      workgroupBarrier();
4700    }
4701    if (local_idx == 0) {
4702      let sum_final = ${qa("workgroup_shared[0][0]",l)} / f32(hight * ${l});
4703      let squared_sum_final = ${qa("workgroup_shared[0][1]",l)} / f32(hight * ${l});
4704
4705      let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${o}));
4706      let channel_scale = inv_std_dev * f32(scale[channel]);
4707      let channel_shift = f32(bias[channel]) - sum_final * channel_scale;
4708      output[workgroup_index] = vec2f(channel_scale, channel_shift);
4709    }
4710  }`};return e.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${l};${o};${c}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:A,dataType:1}],dispatchGroup:{x:d},programUniforms:B}),getShaderSource:f},{inputs:[t,r,n],outputs:[-1]})[0]},OE=(e,t,r)=>{let n=t[0].dims,s=n,a=2,i=n[0],o=n[1],l=$e.sizeFromDimension(n,a),u=en(l),p=$e.size(s)/u,d=ch(e,t[0],t[1],t[2],i,l,o,r.epsilon),c=[i,o,l/u],g=[i,o],A=["type","none"],m=B=>{let f=Ne("x",t[0].dataType,c.length,u),h=Ne("scale_shift",1,g.length,2),P=Pt("output",t[0].dataType,c.length,u),_=[f,h,P];return`
4711  ${B.registerUniform("output_size","u32").declareVariables(..._)}
4712  ${B.mainStart()}
4713  ${B.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4714      let outputIndices = ${P.offsetToIndices("global_idx")};
4715      let batch = outputIndices[0];
4716      let channel = outputIndices[1];
4717      let scale_shift = ${h.getByIndices("vec2<u32>(batch, channel)")};
4718      let value = ${f.getByOffset("global_idx")} * ${P.type.value}(scale_shift.x) + ${P.type.value}(scale_shift.y);
4719      ${P.setByOffset("global_idx","value")};
4720  }`};e.compute({name:"InstanceNormalization",shaderCache:{hint:`${u}`,inputDependencies:A},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(p/64)},programUniforms:[{type:12,data:p},...It(c,g,c)]}),getShaderSource:m},{inputs:[t[0],d]})},GE=(e,t,r)=>{let n=t[0].dims,s=n,a=n[0],i=n[n.length-1],o=$e.sizeFromDimension(n,1)/i,l=en(i),u=$e.size(s)/l,p=[{type:12,data:o},{type:12,data:Math.floor(i/l)}],d=["type","type"],c=!1,g=[0,n.length-1];for(let f=0;f<n.length-2;f++)c=c||n[f+1]!==1,g.push(f+1);c=c&&n[n.length-1]!==1;let A=c?e.compute(is(e.inputs[0],g),{inputs:[e.inputs[0]],outputs:[-1]})[0]:e.inputs[0].reshape(Array.from({length:n.length},(f,h)=>n[g[h]])),m=ch(e,A,t[1],t[2],a,o,i,r.epsilon),B=f=>{let h=Bn(t[0].dataType),P=l===1?"vec2f":`mat${l}x2f`,_=v=>{let y=v===0?"x":"y",$=l===1?"f32":`vec${l}f`;switch(l){case 1:return`${h}(${$}(scale.${y}))`;case 2:return`vec2<${h}>(${$}(scale[0].${y}, scale[1].${y}))`;case 4:return`vec4<${h}>(${$}(scale[0].${y}, scale[1].${y}, scale[2].${y}, scale[3].${y}))`;default:throw new Error(`Not supported compoents ${l}`)}},w=Ne("input",t[0].dataType,t[0].dims,l),b=Pt("output",t[0].dataType,s,l);return`
4721  @group(0) @binding(0) var<storage, read> input : array<${w.type.storage}>;
4722  @group(0) @binding(1) var<storage, read> scale_input : array<${P}>;
4723  @group(0) @binding(2) var<storage, read_write> output : array<${b.type.storage}>;
4724  struct Uniforms {H: u32, C : u32};
4725  @group(0) @binding(3) var<uniform> uniforms: Uniforms;
4726
4727  ${f.mainStart()}
4728    let current_image_number = global_idx / (uniforms.C * uniforms.H);
4729    let current_channel_number = global_idx % uniforms.C;
4730
4731    let scale_offset = current_image_number * uniforms.C + current_channel_number;
4732    let scale = scale_input[scale_offset];
4733    output[global_idx] = fma(input[global_idx], ${_(0)}, ${_(1)});
4734  }`};e.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${l}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:p}),getShaderSource:B},{inputs:[t[0],m]})},zE=(e,t)=>{t.format==="NHWC"?GE(e,e.inputs,t):OE(e,e.inputs,t)}}),FE,LE,RE,x3=et(()=>{Gt(),qt(),tr(),FE=e=>{if(!e||e.length<2)throw new Error("layerNorm requires at least 2 inputs.")},LE=(e,t,r)=>{let n=t.simplified,s=e[0].dims,a=e[1],i=!n&&e[2],o=s,l=$e.normalizeAxis(t.axis,s.length),u=$e.sizeToDimension(s,l),p=$e.sizeFromDimension(s,l),d=$e.size(a.dims),c=i?$e.size(i.dims):0;if(d!==p||i&&c!==p)throw new Error(`Size of X.shape()[axis:] == ${p}.
4735       Size of scale and bias (if provided) must match this.
4736       Got scale size of ${d} and bias size of ${c}`);let g=[];for(let w=0;w<s.length;++w)w<l?g.push(s[w]):g.push(1);let A=en(p),m=["type","type"],B=[{type:12,data:u},{type:1,data:p},{type:12,data:Math.floor(p/A)},{type:1,data:t.epsilon}];i&&m.push("type");let f=r>1,h=r>2,P=w=>{let b=Bn(e[0].dataType),v=[Ne("x",e[0].dataType,e[0].dims,A),Ne("scale",a.dataType,a.dims,A)];i&&v.push(Ne("bias",i.dataType,i.dims,A)),v.push(Pt("output",e[0].dataType,o,A)),f&&v.push(Pt("mean_data_output",1,g)),h&&v.push(Pt("inv_std_output",1,g));let y=[{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}];return`
4737  ${w.registerUniforms(y).declareVariables(...v)}
4738  ${w.mainStart()}
4739    ${w.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}
4740    let offset = global_idx * uniforms.norm_size_vectorized;
4741    var mean_vector = ${CA("f32",A)};
4742    var mean_square_vector = ${CA("f32",A)};
4743
4744    for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {
4745      let value = ${Go(b,A,"x[h + offset]")};
4746      mean_vector += value;
4747      mean_square_vector += value * value;
4748    }
4749    let mean = ${qa("mean_vector",A)} / uniforms.norm_size;
4750    let inv_std_dev = inverseSqrt(${qa("mean_square_vector",A)} / uniforms.norm_size ${n?"":"- mean * mean"} + uniforms.epsilon);
4751
4752    for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {
4753      let f32input = ${Go(b,A,"x[j + offset]")};
4754      let f32scale = ${Go(b,A,"scale[j]")};
4755      output[j + offset] = ${v[0].type.value}((f32input ${n?"":"- mean"}) * inv_std_dev * f32scale
4756        ${i?`+ ${Go(b,A,"bias[j]")}`:""}
4757      );
4758    }
4759
4760    ${f?"mean_data_output[global_idx] = mean":""};
4761    ${h?"inv_std_output[global_idx] = inv_std_dev":""};
4762  }`},_=[{dims:o,dataType:e[0].dataType}];return f&&_.push({dims:g,dataType:1}),h&&_.push({dims:g,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${A};${r};${n}`,inputDependencies:m},getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:B}),getShaderSource:P}},RE=(e,t)=>{FE(e.inputs),e.compute(LE(e.inputs,t,e.outputCount))}}),YE,NE,E3=et(()=>{qt(),VA(),qA(),YE=e=>{if(!e||e.length!==2)throw new Error("MatMul requires 2 inputs.");if(e[0].dims[e[0].dims.length-1]!==e[1].dims[e[1].dims.length-2])throw new Error("shared dimension does not match.")},NE=e=>{YE(e.inputs);let t=ko.calcShape(e.inputs[0].dims,e.inputs[1].dims,!0);if(!t)throw new Error("Can't use matmul on the given tensors");let r=t[t.length-1],n=e.inputs[0].dims[e.inputs[0].dims.length-1];if(r<8&&n<8)e.compute(WA(e.inputs,{activation:""},t));else{let s=t[t.length-2],a=$e.size(e.inputs[0].dims.slice(0,-2)),i=$e.size(e.inputs[1].dims.slice(0,-2));if(a!==1&&s===1&&i===1){let o=e.inputs[0].reshape([1,a,n]),l=e.inputs[1].reshape([1,n,r]),u=[1,a,r],p=[o,l];e.compute(Tc(p,{activation:""},t,u),{inputs:p})}else e.compute(Tc(e.inputs,{activation:""},t))}}}),jE,UE,WE,VE,QE,D3=et(()=>{Gt(),qt(),on(),tr(),jE=(e,t)=>{if(e.length<3||e.length>4)throw new Error("MatMulNBits requires 3 or 4 inputs");let r=e[0],n=r.dims.length;if(r.dims[n-1]!==t.k)throw new Error("The last dim of input shape does not match the k value");let s=Math.floor((t.k+t.blockSize-1)/t.blockSize),a=t.blockSize/8*t.bits,i=e[1];if(!$e.areEqual(i.dims,[t.n,s,a]))throw new Error("The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize");let o=e[2].dims;if($e.size(o)!==t.n*s)throw new Error("scales input size error.");if(e.length===4){let l=e[3].dims,u=t.n*(t.bits===8?s:Math.floor((s*t.bits+7)/8));if($e.size(l)!==u)throw new Error("zeroPoints input size error.")}},UE=(e,t)=>{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=$e.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=en(t.k),c=en(u),g=en(i),A=o.concat([s,i]),m=s>1&&i/g%2===0?2:1,B=$e.size(A)/g/m,f=64,h=[],P=[l,s,a/d],_=$e.convertShape(e[1].dims).slice();_.splice(-1,1,u/c),h.push(...It(P)),h.push(...It(_)),h.push(...It(e[2].dims)),e.length===4&&h.push(...It($e.convertShape(e[3].dims)));let w=[l,s,i/g];h.push(...It(w));let b=v=>{let y=P.length,$=Ne("a",e[0].dataType,y,d),k=Ne("b",12,_.length,c),W=Ne("scales",e[2].dataType,e[2].dims.length),j=[$,k,W],F=e.length===4?Ne("zero_points",12,e[3].dims.length):void 0;F&&j.push(F);let R=w.length,L=Pt("output",e[0].dataType,R,g),Q=Bn(e[0].dataType),ne=(()=>{switch(d){case 1:return`array<${Q}, 8>`;case 2:return`mat4x2<${Q}>`;case 4:return`mat2x4<${Q}>`;default:throw new Error(`${d}-component is not supported.`)}})(),re=()=>{let q=`
4763          // reuse a data
4764            var input_offset = ${$.indicesToOffset(`${$.type.indices}(batch, row, word_offset)`)};
4765            var a_data: ${ne};
4766            for (var j: u32 = 0; j < ${8/d}; j++) {
4767              a_data[j] = ${$.getByOffset("input_offset")};
4768              input_offset++;
4769            }
4770          `;
vendor: 4,813 bytes, lines 4770-4839
4770for(let V=0;V<g*m;V++)q+=`
4771            b_value = ${c===1?`b${V}_data`:`b${V}_data[i]`};
4772            b_value_lower = unpack4xU8(b_value & b_mask);
4773            b_value_upper = unpack4xU8((b_value >> 4) & b_mask);
4774            b_quantized_values = ${ne}(${Array.from({length:4},(U,N)=>`${Q}(b_value_lower[${N}]), ${Q}(b_value_upper[${N}])`).join(", ")});
4775            b_dequantized_values = ${d===1?`${ne}(${Array.from({length:8},(U,N)=>`(b_quantized_values[${N}] - ${F?`zero_point${V}`:"zero_point"}) * scale${V}`).join(", ")});`:`(b_quantized_values - ${ne}(${Array(8).fill(`${F?`zero_point${V}`:"zero_point"}`).join(",")})) * scale${V};`};
4776            workgroup_shared[local_id.x * ${m} + ${Math.floor(V/g)}]${g>1?`[${V%g}]`:""} += ${Array.from({length:8/d},(U,N)=>`${d===1?`a_data[${N}] * b_dequantized_values[${N}]`:`dot(a_data[${N}], b_dequantized_values[${N}])`}`).join(" + ")};
4777          `;return q},ce=()=>{let q=`
4778            var col_index = col * ${g};
4779            ${F?`
4780            let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2;
4781            var zero_point_byte_count: u32;
4782            var zero_point_word_index: u32;
4783            var zero_point_byte_offset: u32;
4784            let zero_point_nibble_offset: u32 = block & 0x1u;
4785            var zero_point_bits_offset: u32;
4786            var zero_point_word: u32;`:`
4787            // The default zero point is 8 for unsigned 4-bit quantization.
4788            let zero_point = ${Q}(8);`}
4789            `;for(let V=0;V<g*m;V++)q+=`
4790            let scale${V} = ${W.getByOffset("col_index * nBlocksPerCol + block")};
4791            ${F?`
4792            zero_point_byte_count = col_index * zero_point_bytes_per_col + (block >> 0x1u);
4793            zero_point_word_index = zero_point_byte_count >> 0x2u;
4794            zero_point_byte_offset = zero_point_byte_count & 0x3u;
4795            zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);
4796            zero_point_word = ${F.getByOffset("zero_point_word_index")} >> zero_point_bits_offset;
4797            let zero_point${V} = ${Q}((zero_point_word) & 0xFu);`:""}
4798            col_index += 1;`;return q},ge=()=>{let q=`col_index = col * ${g};`;for(let V=0;V<g*m;V++)q+=`
4799            let b${V}_data = ${k.getByIndices(`${k.type.indices}(col_index, block, word)`)};
4800            col_index += 1;`;return q+=`
4801            var b_value: u32;
4802            let b_mask: u32 = 0x0F0F0F0Fu;
4803            var b_value_lower: vec4<u32>;
4804            var b_value_upper: vec4<u32>;
4805            var b_quantized_values: ${ne};
4806            var b_dequantized_values: ${ne};`,q};return`
4807        var<workgroup> workgroup_shared: array<${L.type.value}, ${m*f}>;
4808        ${v.declareVariables(...j,L)}
4809        ${v.mainStart([f,1,1])}
4810          let output_indices = ${L.offsetToIndices(`(global_idx / ${f}) * ${m}`)};
4811          let col = output_indices[2];
4812          let row = output_indices[1];
4813          let batch = output_indices[0];
4814          let nBlocksPerCol = uniforms.b_shape[1];
4815
4816          for (var block = local_id.x; block < nBlocksPerCol; block += ${f}) {
4817            //process one block
4818            var word_offset: u32 = block * ${t.blockSize/d};
4819            ${ce()}
4820            for (var word: u32 = 0; word < ${u}; word += ${c}) {
4821              ${ge()}
4822              for (var i: u32 = 0; i < ${c}; i++) {
4823                ${re()}
4824                word_offset += ${8/d};
4825              }
4826            }
4827          }
4828          workgroupBarrier();
4829
4830          if (local_id.x < ${m}) {
4831            var output_value: ${L.type.value} = ${L.type.value}(0);
4832            var workgroup_shared_offset: u32 = local_id.x;
4833            for (var b: u32 = 0u; b < ${f}u; b++) {
4834              output_value += workgroup_shared[workgroup_shared_offset];
4835              workgroup_shared_offset += ${m};
4836            }
4837            ${L.setByIndices(`${L.type.indices}(batch, row, col + local_id.x)`,"output_value")};
4838          }
4839        }`};return{name:"MatMulNBits",shaderCache:{hint:`${t.blockSize};${t.bits};${d};${c};${g};${m};${f}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:A,dataType:p}],dispatchGroup:{x:B},programUniforms:h}),getShaderSource:b}},WE=(e,t)=>{let r=e[0].dims,n=r.length,s=r[n-2],a=t.k,i=t.n,o=r.slice(0,n-2),l=$e.size(o),u=e[1].dims[2]/4,p=e[0].dataType,d=en(t.k),c=en(u),g=o.concat([s,i]),A=128,m=i%8===0?8:i%4===0?4:1,B=A/m,f=B*c*8,h=f/d,P=f/t.blockSize,_=$e.size(g)/m,w=[],b=[l,s,a/d],v=$e.convertShape(e[1].dims).slice();v.splice(-1,1,u/c),w.push(...It(b)),w.push(...It(v)),w.push(...It(e[2].dims)),e.length===4&&w.push(...It($e.convertShape(e[3].dims)));let y=[l,s,i];w.push(...It(y));let $=k=>{let W=b.length,j=Ne("a",e[0].dataType,W,d),F=Ne("b",12,v.length,c),R=Ne("scales",e[2].dataType,e[2].dims.length),L=[j,F,R],Q=e.length===4?Ne("zero_points",12,e[3].dims.length):void 0;
4839Q&&L.push(Q);let ne=y.length,re=Pt("output",e[0].dataType,ne),ce=Bn(e[0].dataType),ge=()=>{switch(d){case 1:return`
4840          let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]);
4841          let a_data1 = vec4<${ce}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return`
4842          let a_data0 = vec4<${ce}>(sub_a[word_offset], sub_a[word_offset + 1]);
4843          let a_data1 = vec4<${ce}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return`
4844          let a_data0 = sub_a[word_offset];
4845          let a_data1 = sub_a[word_offset + 1];`;default:throw new Error(`${d}-component is not supported.`)}};return`
4846        var<workgroup> sub_a: array<${j.type.value}, ${h}>;
4847        var<workgroup> inter_results: array<array<${re.type.value}, ${B}>, ${m}>;
4848        ${k.declareVariables(...L,re)}
4849        ${k.mainStart([B,m,1])}
4850          let output_indices = ${re.offsetToIndices(`workgroup_index * ${m}`)};
4851          let col = output_indices[2];
4852          let row = output_indices[1];
4853          let batch = output_indices[0];
4854          let n_blocks_per_col = uniforms.b_shape[1];
4855          let num_tiles =  (n_blocks_per_col - 1) / ${P} + 1;
4856
4857          // Loop over shared dimension.
4858          for (var tile: u32 = 0; tile < num_tiles; tile += 1) {
4859            let a_col_start = tile * ${h};
4860            // load one tile A data into shared memory.
4861            for (var a_offset = local_idx; a_offset < ${h}; a_offset += ${A})
4862            {
4863              let a_col = a_col_start + a_offset;
4864              if (a_col < uniforms.a_shape[2])
4865              {
4866                sub_a[a_offset] = ${j.getByIndices(`${j.type.indices}(batch, row, a_col)`)};
4867              } else {
4868                sub_a[a_offset] = ${j.type.value}(0);
4869              }
4870            }
4871            workgroupBarrier();
4872
4873            // each thread process one block
4874            let b_row = col + local_id.y;
4875            let block = tile * ${P} + local_id.x;
4876            ${Q?`
4877            let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2;
4878            let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u);
4879            let zero_point_word_index = zero_point_byte_count >> 0x2u;
4880            let zero_point_byte_offset = zero_point_byte_count & 0x3u;
4881            let zero_point_nibble_offset: u32 = block & 0x1u;
4882            let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);
4883            let zero_point_word = ${Q.getByOffset("zero_point_word_index")} >> zero_point_bits_offset;
4884            let zero_point = ${ce}((zero_point_word) & 0xFu);`:`
4885            // The default zero point is 8 for unsigned 4-bit quantization.
4886            let zero_point = ${ce}(8);`}
4887            let scale = ${R.getByOffset("b_row * n_blocks_per_col + block")};
4888            let b_data = ${F.getByIndices(`${F.type.indices}(b_row, block, 0)`)};
4889            var word_offset = local_id.x * ${t.blockSize/d};
4890            for (var i: u32 = 0; i < ${c}; i++) {
4891              ${ge()}
4892              let b_value = ${c===1?"b_data":"b_data[i]"};
4893              let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu);
4894              let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu);
4895              let b_quantized_values = mat2x4<${ce}>(${Array.from({length:4},(q,V)=>`${ce}(b_value_lower[${V}]), ${ce}(b_value_upper[${V}])`).join(", ")});
4896              let b_dequantized_values = (b_quantized_values - mat2x4<${ce}>(${Array(8).fill("zero_point").join(",")})) * scale;
4897              inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(q,V)=>`${`dot(a_data${V}, b_dequantized_values[${V}])`}`).join(" + ")};
4898              word_offset += ${8/d};
4899            }
4900            workgroupBarrier();
4901          }
4902
4903          if (local_idx < ${m}) {
4904            var output_value: ${re.type.value} = ${re.type.value}(0);
4905            for (var b = 0u; b < ${B}; b++) {
4906              output_value += inter_results[local_idx][b];
4907            }
4908            if (col + local_idx < uniforms.output_shape[2])
4909            {
4910              ${re.setByIndices(`${re.type.indices}
vendor: 10,267 bytes, lines 4910-5056
4910(batch, row, col + local_idx)`,"output_value")}
4911            }
4912          }
4913        }`};return{name:"BlockwiseMatMulNBits32",shaderCache:{hint:`${t.blockSize};${d};${c};${B};${m}`,inputDependencies:Array(e.length).fill("rank")},getRunData:()=>({outputs:[{dims:g,dataType:p}],dispatchGroup:{x:_},programUniforms:w}),getShaderSource:$}},VE=(e,t)=>{jE(e.inputs,t),t.blockSize===32&&e.adapterInfo.isVendor("intel")&&e.adapterInfo.isArchitecture("gen-12lp")?e.compute(WE(e.inputs,t)):e.compute(UE(e.inputs,t))},QE=e=>Mr(e)}),HE,KE,qE,XE,ZE,JE,eD,tD,rD,I3=et(()=>{Gt(),qt(),tr(),HE=e=>{if(!e||e.length<1)throw new Error("Too few inputs");if(e[0].dataType!==1&&e[0].dataType!==10)throw new Error("Input type must be float or float16.");if(e.length>=2){let t=e[0].dims.length*2===e[1].dims[0];if(e.length===4&&(t=e[3].dims[0]*2===e[1].dims[0]),!t)throw new Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}},KE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
4914            k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)};
4915            if (k < 0) {
4916              break;
4917            }
4918            if (k >= i32(${xt("uniforms.x_shape",s,t)})) {
4919              break;
4920            }
4921            offset += k * i32(${xt("uniforms.x_strides",s,t)});
4922        `;return`
4923          value = ${e.type.value}(uniforms.constant_value);
4924          for (var i = 0; i < 1; i++) {
4925            var offset = 0;
4926            var k = 0;
4927            ${n}
4928            value = x[offset];
4929          }
4930      `},qE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
4931                k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)};
4932                if (k < 0) {
4933                  k = -k;
4934                }
4935                {
4936                  let _2n_1 = 2 * (i32(${xt("uniforms.x_shape",s,t)}) - 1);
4937                  k = k % _2n_1;
4938                  if(k >= i32(${xt("uniforms.x_shape",s,t)})) {
4939                    k = _2n_1 - k;
4940                  }
4941                }
4942                offset += k * i32(${xt("uniforms.x_strides",s,t)});
4943            `;return`
4944              var offset = 0;
4945              var k = 0;
4946              ${n}
4947              value = x[offset];
4948          `},XE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
4949                k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)};
4950                if (k < 0) {
4951                  k = 0;
4952                }
4953                if (k >= i32(${xt("uniforms.x_shape",s,t)})) {
4954                  k = i32(${xt("uniforms.x_shape",s,t)}) - 1;
4955                }
4956                offset += k * i32(${xt("uniforms.x_strides",s,t)});
4957            `;return`
4958              var offset = 0;
4959              var k = 0;
4960              ${n}
4961              value = x[offset];
4962          `},ZE=(e,t,r)=>{let n="";for(let s=t-1;s>=0;--s)n+=`
4963                k = i32(${e.indicesGet("indices",s)}) - ${xt("uniforms.pads",s,r)};
4964                if (k < 0)  {
4965                  k += i32(${xt("uniforms.x_shape",s,t)}]);
4966                }
4967                if (k >= i32(${xt("uniforms.x_shape",s,t)})) {
4968                  k -= i32(${xt("uniforms.x_shape",s,t)});
4969                }
4970                offset += k * i32(${xt("uniforms.x_strides",s,t)});
4971            `;return`
4972              var offset = 0;
4973              var k = 0;
4974              ${n}
4975              value = x[offset];
4976          `},JE=(e,t,r)=>{switch(r.mode){case 0:return KE(e,t,r.pads.length);case 1:return qE(e,t,r.pads.length);case 2:return XE(e,t,r.pads.length);case 3:return ZE(e,t,r.pads.length);default:throw new Error("Invalid mode")}},eD=(e,t)=>{let r=$e.padShape(e[0].dims.slice(),t.pads),n=e[0].dims,s=$e.size(r),a=[{type:12,data:s},{type:6,data:t.pads}],i=e.length>=3&&e[2].data;t.mode===0&&a.push({type:i?e[2].dataType:1,data:t.value}),a.push(...It(e[0].dims,r));let o=["rank"],l=u=>{let p=Pt("output",e[0].dataType,r.length),d=Ne("x",e[0].dataType,n.length),c=d.type.value,g=JE(p,n.length,t),A=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:t.pads.length}];return t.mode===0&&A.push({name:"constant_value",type:i?c:"f32"}),`
4977            ${u.registerUniforms(A).declareVariables(d,p)}
4978            ${u.mainStart()}
4979            ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
4980
4981            let indices = ${p.offsetToIndices("global_idx")};
4982
4983            var value = ${c}(0);
4984            ${g}
4985            output[global_idx] = value;
4986        }`};return{name:"Pad",shaderCache:{hint:`${t.mode}${i}`,inputDependencies:o},getRunData:()=>({outputs:[{dims:r,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil($e.size(r)/64)},programUniforms:a}),getShaderSource:l}},tD=(e,t)=>{if(e.length>1){let r=e[1].getBigInt64Array(),n=e.length>=3&&e[2].data?e[2].dataType===10?e[2].getUint16Array()[0]:e[2].getFloat32Array()[0]:0,s=e[0].dims.length,a=new Int32Array(2*s).fill(0);if(e.length>=4){let o=e[3].getBigInt64Array();for(let l=0;l<o.length;l++)a[Number(o[l])]=Number(r[l]),a[Number(o[l])+s]=Number(r[l+o.length])}else r.forEach((o,l)=>a[Number(l)]=Number(o));let i=[];return a.forEach(o=>i.push(o)),{mode:t.mode,value:n,pads:i}}else return t},rD=(e,t)=>{HE(e.inputs);let r=tD(e.inputs,t);e.compute(eD(e.inputs,r),{inputs:[0]})}}),Hl,dh,ph,gh,Ah,nD,sD,hh,mh,aD,iD,fh,oD,lD,_h,uD,cD,dD,pD,T3=et(()=>{ys(),Gt(),qt(),tr(),Hl=e=>{if(Sr.webgpu.validateInputContent&&(!e||e.length!==1))throw new Error("Pool ops requires 1 input.")},dh=(e,t,r)=>{let n=t.format==="NHWC",s=e.dims.slice();n&&s.splice(1,0,s.pop());let a=Object.hasOwnProperty.call(t,"dilations"),i=t.kernelShape.slice(),o=t.strides.slice(),l=a?t.dilations.slice():[],u=t.pads.slice();Mc.adjustPoolAttributes(r,s,i,o,l,u);let p=Mc.computePoolOutputShape(r,s,o,l,i,u,t.autoPad),d=Object.assign({},t);a?Object.assign(d,{kernelShape:i,strides:o,pads:u,dilations:l,cacheKey:t.cacheKey}):Object.assign(d,{kernelShape:i,strides:o,pads:u,cacheKey:t.cacheKey});let c=p.slice();return c.push(c.splice(1,1)[0]),[d,n?c:p]},ph=(e,t)=>{let r=t.format==="NHWC",n=$e.size(e),s=$e.size(t.kernelShape),a=[{type:12,data:n},{type:12,data:s}],i=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(t.kernelShape.length<=2){let o=t.kernelShape[t.kernelShape.length-1],l=t.strides[t.strides.length-1],u=t.pads[t.pads.length/2-1],p=t.pads[t.pads.length-1],d=!!(u+p);a.push({type:12,data:o},{type:12,data:l},{type:12,data:u},{type:12,data:p}),i.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let c=!1;if(t.kernelShape.length===2){let g=t.kernelShape[t.kernelShape.length-2],A=t.strides[t.strides.length-2],m=t.pads[t.pads.length/2-2],B=t.pads[t.pads.length-2];c=!!(m+B),a.push({type:12,data:g},{type:12,data:A},{type:12,data:m},{type:12,data:B}),i.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[a,i,!0,d,c]}else{if(r)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let o=$e.computeStrides(t.kernelShape);a.push({type:12,data:o},{type:12,data:t.pads},{type:12,data:t.strides}),i.push({name:"kernelStrides",type:"u32",length:o.length},{name:"pads",type:"u32",length:t.pads.length},{name:"strides",type:"u32",length:t.strides.length});let l=t.pads.reduce((u,p)=>u+p);return[a,i,!!l,!1,!1]}},gh=(e,t,r,n,s,a,i,o,l,u,p,d)=>{let c=s.format==="NHWC",g=t.type.value,A=Pt("output",t.type.tensor,n);if(s.kernelShape.length<=2){let m="",B="",f="",h=r-(c?2:1);if(p?m=`
4987                for (var i: u32 = 0u; i < uniforms.kw; i++) {
4988                  xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i;
4989                  if (xIndices[${h}] < 0 || xIndices[${h}]
4990                      >= uniforms.x_shape[${h}]) {
4991                    pad++;
4992                    continue;
4993                  }
4994                  let x_val = x[${t.indicesToOffset("xIndices")}];
4995                  ${a}
4996                }`:m=`
4997                for (var i: u32 = 0u; i < uniforms.kw; i++) {
4998                  xIndices[${h}] = indices[${h}] * uniforms.sw - uniforms.pwStart + i;
4999                  let x_val = x[${t.indicesToOffset("xIndices")}];
5000                  ${a}
5001                }`,s.kernelShape.length===2){let P=r-(c?3:2);d?B=`
5002                for (var j: u32 = 0u; j < uniforms.kh; j++) {
5003                  xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j;
5004                  if (xIndices[${P}] < 0 || xIndices[${P}] >= uniforms.x_shape[${P}]) {
5005                    pad += i32(uniforms.kw);
5006                    continue;
5007                  }
5008              `:B=`
5009                for (var j: u32 = 0u; j < uniforms.kh; j++) {
5010                  xIndices[${P}] = indices[${P}] * uniforms.sh - uniforms.phStart + j;
5011                `,f=`
5012              }
5013            `}return`
5014            ${e.registerUniforms(l).declareVariables(t,A)}
5015
5016            ${e.mainStart()}
5017              ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
5018
5019              let indices = ${A.offsetToIndices("global_idx")};
5020              var xIndices = ${A.offsetToIndices("global_idx")};
5021
5022              var value = ${g}(${o});
5023              var pad = 0;
5024              ${B}
5025              ${m}
5026              ${f}
5027              ${i}
5028
5029              output[global_idx] = value;
5030            }`}else{if(c)throw new Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let m=s.kernelShape.length,B=s.pads.length,f="";return u?f=`
5031                if (xIndices[j] >= uniforms.x_shape[j]) {
5032                  pad++;
5033                  isPad = true;
5034                  break;
5035                }
5036              }
5037              if (!isPad) {
5038                let x_val = x[${t.indicesToOffset("xIndices")}];
5039                ${a}
5040              }`:f=`
5041              }
5042              let x_val = x[${t.indicesToOffset("xIndices")}];
5043              ${a}
5044            `,`
5045            ${e.registerUniforms(l).declareVariables(t,A)}
5046
5047            ${e.mainStart()}
5048              ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
5049              let indices = ${A.offsetToIndices("global_idx")};
5050              var xIndices = ${A.offsetToIndices("global_idx")};
5051
5052              var offsets: array<u32, ${m}>;
5053
5054              var value = ${g}(${o});
5055              var pad = 0;
5056              var isPad = false;
5057
5058              for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {
5059                var offset = i;
5060                for (var j = 0u; j < ${m-1}u; j++) {
5061                  offsets[j] = offset / ${xt("uniforms.kernelStrides","j",m)};
5062                  offset -= offsets[j] * ${xt("uniforms.kernelStrides","j",m)};
5063                }
5064                offsets[${m-1}] = offset;
5065
5066                isPad = false;
5067                for (var j = ${r-m}u; j < ${r}u; j++) {
5068                  xIndices[j] = indices[j] * ${xt("uniforms.strides",`j - ${r-m}u`,m)}
5069                    + offsets[j - ${r-m}u] - ${xt("uniforms.pads","j - 2u",B)};
5070                  ${f}
5071              }
5072              ${i}
5073
5074              output[global_idx] = value;
5075            }`}},Ah=e=>`${e.format};${e.ceilMode};${e.autoPad};${e.kernelShape.length}`,nD=e=>`${Ah(e)};${e.countIncludePad}`,sD=e=>`${Ah(e)};${e.storageOrder};${e.dilations}`,hh=e=>({format:e.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][e.auto_pad],ceilMode:e.ceil_mode,kernelShape:e.kernel_shape,strides:e.strides,pads:e.pads}),mh=(e,t,r,n)=>{let[s,a]=dh(t,n,r),i=Ne("x",t.dataType,t.dims.length),o=i.type.value,l="value += x_val;",u="";s.countIncludePad?u+=`value /= ${o}(uniforms.kernelSize);`:u+=`value /= ${o}(i32(uniforms.kernelSize) - pad);`;let[p,d,c,g,A]=ph(a,s);p.push(...It(t.dims,a));let m=["rank"];return{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:m},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil($e.size(a)/64)},programUniforms:p}),getShaderSource:B=>gh(B,i,t.dims.length,a.length,s,l,u,0,d,c,g,A)}},aD=e=>{let t=e.count_include_pad!==0,r=hh(e);if(r.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");let n={countIncludePad:t,...r,cacheKey:""};return{...n,cacheKey:nD(n)}},iD=(e,t)=>{Hl(e.inputs),e.compute(mh("AveragePool",e.inputs[0],!1,t))},fh={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},oD=e=>{let t=e.format;return{format:t,...fh,cacheKey:t}},lD=(e,t)=>{Hl(e.inputs),e.compute(mh("GlobalAveragePool",e.inputs[0],!0,t))},_h=(e,t,r,n)=>{let[s,a]=dh(t,n,r),i=`
5076      value = max(x_val, value);
5077    `,o="",l=Ne("x",t.dataType,t.dims.length),u=["rank"],[p,d,c,g,A]=ph(a,s);return p.push(...It(t.dims,a)),{name:e,shaderCache:{hint:`${n.cacheKey};${c};${g};${A}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:a,dataType:t.dataType}],dispatchGroup:{x:Math.ceil($e.size(a)/64)},programUniforms:p}),getShaderSource:m=>gh(m,l,t.dims.length,a.length,s,i,o,t.dataType===10?-65504:-1e5,d,c,g,A)}},uD=(e,t)=>{Hl(e.inputs),e.compute(_h("MaxPool",e.inputs[0],!1,t))},cD=e=>{let t=e.storage_order,r=e.dilations,n=hh(e);if(t!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(n.ceilMode!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");let s={storageOrder:t,dilations:r,...n,cacheKey:""};return{...s,cacheKey:sD(s)}},dD=e=>{let t=e.format;return{format:t,...fh,cacheKey:t}},pD=(e,t)=>{Hl(e.inputs),e.compute(_h("GlobalMaxPool",e.inputs[0],!0,t))}}),gD,AD,hD,mD,C3=et(()=>{Gt(),qt(),on(),tr(),gD=(e,t)=>{if(e.length<2||e.length>3)throw new Error("DequantizeLinear requires 2 or 3 inputs.");if(e.length===3&&e[1].dims===e[2].dims)throw new Error("x-scale and x-zero-point must have the same shape.");if(e.length===3&&e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[0].dataType===6&&e.length>2)throw new Error("In the case of dequantizing int32 there is no zero point.");if(e[1].dims.length!==0&&e[1].dims.length!==1&&e[1].dims.length!==e[0].dims.length)throw new Error("scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.");if(e.length>2){if(e[0].dataType!==e[2].dataType)throw new Error("x and x-zero-point must have the same data type.");if(e[1].dims.length!==e[2].dims.length)throw new Error("scale and zero-point inputs must have the same rank.");if(!e[1].dims.map((r,n)=>r===e[2].dims[n]).reduce((r,n)=>r&&n,!0))throw new Error("scale and zero-point inputs must have the same shape.")}if(t.blockSize>0){if(e[1].dims.length===0||e[1].dims.length===1&&e[1].dims[0]===1)throw new Error("blockSize must be set only for block quantization.");
vendor: 18,954 bytes, lines 5077-5274
5077if(!e[1].dims.map((s,a)=>a===t.axis||s===e[0].dims[a]).reduce((s,a)=>s&&a,!0))throw new Error("For block qunatization, scale input shape to match the input shape except for the axis");if(e[1].dims.length!==e[0].dims.length)throw new Error("For block qunatization the scale input rank must be the same as the x rank.");let r=e[0].dims[t.axis],n=e[1].dims[t.axis];if(t.blockSize<Math.ceil(r/n)||t.blockSize>Math.ceil(r/(n-1)-1))throw new Error("blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].")}},AD=(e,t)=>{let r=$e.normalizeAxis(t.axis,e[0].dims.length),n=e[0].dataType,s=n===3,a=e[0].dims,i=e[1].dataType,o=$e.size(a),l=n===3||n===2,u=l?[Math.ceil($e.size(e[0].dims)/4)]:e[0].dims,p=e[1].dims,d=e.length>2?e[2]:void 0,c=d?l?[Math.ceil($e.size(d.dims)/4)]:d.dims:void 0,g=p.length===0||p.length===1&&p[0]===1,A=g===!1&&p.length===1,m=en(o),B=g&&(!l||m===4),f=B?m:1,h=B&&!l?m:1,P=Ne("input",l?12:n,u.length,h),_=Ne("scale",i,p.length),w=d?Ne("zero_point",l?12:n,c.length):void 0,b=Pt("output",i,a.length,f),v=[P,_];w&&v.push(w);let y=[u,p];d&&y.push(c);let $=[{type:12,data:o/f},{type:12,data:r},{type:12,data:t.blockSize},...It(...y,a)],k=W=>{let j=[{name:"output_size",type:"u32"},{name:"axis",type:"u32"},{name:"block_size",type:"u32"}];return`
5078      ${W.registerUniforms(j).declareVariables(...v,b)}
5079      ${W.mainStart()}
5080          ${W.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
5081          let output_indices = ${b.offsetToIndices("global_idx")};
5082
5083          // Set input x
5084          ${l?`
5085            let input = ${P.getByOffset("global_idx / 4")};
5086            let x_vec = ${s?"unpack4xI8(input)":"unpack4xU8(input)"};
5087            let x_value = ${f===1?"x_vec[global_idx % 4]":"x_vec"};`:`let x_value = ${P.getByOffset("global_idx")};`};
5088
5089          // Set scale input
5090          ${g?`let scale_value= ${_.getByOffset("0")}`:A?`
5091            let scale_index = ${b.indicesGet("output_indices","uniforms.axis")};
5092            let scale_value= ${_.getByOffset("scale_index")};`:`
5093            var scale_indices: ${_.type.indices} = output_indices;
5094            let index = ${_.indicesGet("scale_indices","uniforms.axis")} / uniforms.block_size;
5095            ${_.indicesSet("scale_indices","uniforms.axis","index")};
5096            let scale_value= ${_.getByIndices("scale_indices")};`};
5097
5098          // Set zero-point input
5099          ${w?g?l?`
5100                let zero_point_input = ${w.getByOffset("0")};
5101                let zero_point_vec =  ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
5102                let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${w.getByOffset("0")}`:A?l?`
5103                let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")};
5104                let zero_point_input = ${w.getByOffset("zero_point_index / 4")};
5105                let zero_point_vec =  ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
5106                let zero_point_value = zero_point_vec[zero_point_index % 4]`:`
5107                let zero_point_index = ${b.indicesGet("output_indices","uniforms.axis")};
5108                let zero_point_value = ${w.getByOffset("zero_point_index")};`:l?`
5109                let zero_point_offset = ${_.indicesToOffset("scale_indices")};
5110                let zero_point_input = ${w.getByOffset("zero_point_offset / 4")};
5111                let zero_point_vec = ${s?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
5112                let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${w.getByIndices("scale_indices")};`:`let zero_point_value = ${l?s?"i32":"u32":P.type.value}(0);`};
5113      // Compute and write output
5114      ${b.setByOffset("global_idx",`${b.type.value}(x_value - zero_point_value) * scale_value`)};
5115      }`};return{name:"DequantizeLinear",shaderCache:{hint:t.cacheKey,inputDependencies:w?["rank","rank","rank"]:["rank","rank"]},getShaderSource:k,getRunData:()=>({outputs:[{dims:a,dataType:i}],dispatchGroup:{x:Math.ceil(o/f/64),y:1,z:1},programUniforms:$})}},hD=(e,t)=>{gD(e.inputs,t),e.compute(AD(e.inputs,t))},mD=e=>Mr({axis:e.axis,blockSize:e.blockSize})}),fD,_D,wD,$3=et(()=>{ys(),Gt(),tr(),fD=(e,t,r)=>{let n=e===t,s=e<t&&r<0,a=e>t&&r>0;if(n||s||a)throw new Error("Range these inputs' contents are invalid.")},_D=(e,t,r,n)=>{let s=Math.abs(Math.ceil((t-e)/r)),a=[s],i=s,o=[{type:12,data:i},{type:n,data:e},{type:n,data:r},...It(a)],l=u=>{let p=Pt("output",n,a.length),d=p.type.value,c=[{name:"outputSize",type:"u32"},{name:"start",type:d},{name:"delta",type:d}];return`
5116        ${u.registerUniforms(c).declareVariables(p)}
5117        ${u.mainStart()}
5118        ${u.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
5119        output[global_idx] = uniforms.start + ${d}(global_idx) * uniforms.delta;
5120      }`};return{name:"Range",shaderCache:{hint:`${n}`},getShaderSource:l,getRunData:()=>({outputs:[{dims:a,dataType:n}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:o})}},wD=e=>{let t=0,r=0,n=0;e.inputs[0].dataType===6?(t=e.inputs[0].getInt32Array()[0],r=e.inputs[1].getInt32Array()[0],n=e.inputs[2].getInt32Array()[0]):e.inputs[0].dataType===1&&(t=e.inputs[0].getFloat32Array()[0],r=e.inputs[1].getFloat32Array()[0],n=e.inputs[2].getFloat32Array()[0]),Sr.webgpu.validateInputContent&&fD(t,r,n),e.compute(_D(t,r,n,e.inputs[0].dataType),{inputs:[]})}}),yD,bD,PD,MD,S3=et(()=>{Gt(),qt(),on(),tr(),yD=(e,t,r,n)=>{if(e!=="none"&&n!=="i32"&&n!=="u32"&&n!=="f32")throw new Error(`Input ${n} is not supported with reduction ${e}.`);let s=`{
5121                var oldValue = 0;
5122                loop {
5123                  let newValueF32 =`,a=`;
5124                  let newValue = bitcast<i32>(newValueF32);
5125                  let res = atomicCompareExchangeWeak(&${t}, oldValue, newValue);
5126                  if res.exchanged {
5127                    break;
5128                  }
5129                  oldValue = res.old_value;
5130                }
5131              }`;switch(e){case"none":return`${t}=${r};`;case"add":return n==="i32"||n==="u32"?`atomicAdd(&${t}, bitcast<${n}>(${r}));`:`
5132              ${s}bitcast<${n}>(oldValue) + (${r})${a}`;case"max":return n==="i32"||n==="u32"?`atomicMax(&${t}, bitcast<${n}>(${r}));`:`
5133                ${s}max(bitcast<f32>(oldValue), (${r}))${a}`;case"min":return n==="i32"||n==="u32"?`atomicMin(&${t}, bitcast<${n}>(${r}));`:`${s}min(bitcast<${n}>(oldValue), (${r}))${a}`;case"mul":return`${s}(bitcast<${n}>(oldValue) * (${r}))${a}`;default:throw new Error(`Reduction ${e} is not supported.`)}},bD=(e,t)=>{let r=e[0].dims,n=e[1].dims,s=r,a=1,i=Math.ceil($e.sizeToDimension(n,n.length-1)/a),o=n[n.length-1],l=$e.sizeFromDimension(r,o),u=[{type:12,data:i},{type:12,data:o},{type:12,data:l},...It(e[1].dims,e[2].dims,s)],p=d=>{let c=Ne("indices",e[1].dataType,e[1].dims.length),g=Ne("updates",e[2].dataType,e[2].dims.length,a),A=t.reduction!=="none"&&t.reduction!==""?Iv("output",e[0].dataType,s.length):Pt("output",e[0].dataType,s.length,a);return`
5134      ${d.registerUniform("output_size","u32").registerUniform("last_index_dimension","u32").registerUniform("num_updates_elements","u32").declareVariables(c,g,A)}
5135      ${d.mainStart()}
5136        ${d.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
5137  var data_offset = 0u;
5138  let indices_start = uniforms.last_index_dimension * global_idx;
5139  let indices_end = indices_start + uniforms.last_index_dimension;
5140  for (var i = indices_start; i < indices_end; i++) {
5141    var index = i32(indices[i].x);
5142    ${e[0].dims.length===1?`
5143    let element_count_dim = uniforms.output_strides;
5144    let dim_value = uniforms.output_shape;`:`
5145    let element_count_dim = uniforms.output_strides[i - indices_start];
5146    let dim_value = uniforms.output_shape[i - indices_start];`}
5147    if (index >= 0) {
5148      if (index >= i32(dim_value)) {
5149        index = i32(dim_value - 1);
5150      }
5151    } else {
5152      if (index < -i32(dim_value)) {
5153        index = 0;
5154      } else {
5155        index += i32(dim_value);
5156      }
5157    }
5158    data_offset += u32((u32(index) * element_count_dim));
5159  }
5160
5161  for (var i = 0u; i < uniforms.num_updates_elements; i++) {
5162    let value = updates[uniforms.num_updates_elements * global_idx + i];
5163    ${yD(t.reduction,"output[data_offset + i]","value",A.type.value)}
5164  }
5165
5166      }`};return{name:"ScatterND",shaderCache:{hint:`${t.cacheKey}_${t.reduction}`,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(i/64)},programUniforms:u}),getShaderSource:p}},PD=e=>Mr({reduction:e.reduction}),MD=(e,t)=>{e.compute(bD(e.inputs,t),{inputs:[e.inputs[1],e.inputs[2]],outputs:[]})}}),vD,BD,xD,wh,ED,DD,ID,TD,CD,$D,SD,kD,yh,OD,GD,zD,FD,LD,RD,YD,k3=et(()=>{Gt(),qt(),on(),tr(),vD=(e,t)=>{if(e.every(r=>r>0||(()=>{throw new Error("Resize requires scales input values to be positive")})),e.length>0){if(t.mode==="linear"){if(!(e.length===2||e.length===3||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1||e.length===5&&e[0]===1&&e[1]===1))throw new Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and
5167            one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if(t.mode==="cubic"&&!(e.length===2||e.length===4&&e[0]===1&&e[1]===1||e.length===4&&e[0]===1&&e[3]===1))throw new Error("Resize requires scales input size to be 2 or 4 for cubic mode")}},BD=(e,t,r)=>{t.every(s=>s>=0&&s<r||(()=>{throw new Error("Resize requires axes input values to be positive and less than rank")}));let n=new Array(r).fill(1);return t.forEach((s,a)=>n[s]=e[a]),n},xD=(e,t,r,n,s,a)=>{let[i,o,l]=r>10?[1,2,3]:[-1,e.length>1?1:-1,-1],u=e[0].dims.length;if(i>0&&e.length>i&&e[i].dims.length>0)e[i].getFloat32Array().forEach(p=>a.push(p));else if(t.coordinateTransformMode==="tf_crop_and_resize")throw new Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(o>0&&e.length>o&&e[o].dims.length===1&&e[o].dims[0]>0){if(e[o].getFloat32Array().forEach(p=>n.push(p)),n.length!==0&&n.length!==u&&r>=18&&n.length!==t.axes.length)throw new Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");vD(n,t),t.axes.length>0&&BD(n,t.axes,u).forEach((p,d)=>n[d]=p)}if(l>0&&e.length>l&&e[l].dims.length===1&&e[l].dims[0]>0&&(e[l].getBigInt64Array().forEach(p=>s.push(Number(p))),s.length!==0&&s.length!==u&&r>=18&&s.length!==t.axes.length))throw new Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(t.axes.length>0){if(n.length!==0&&n.length!==t.axes.length)throw new Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(s.length!==0&&s.length!==t.axes.length)throw new Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if(typeof n<"u"&&typeof s<"u"&&n.length>0&&s.length>u)throw new Error("Resize requires only of scales or sizes to be specified")},wh=(e,t,r,n)=>`
5168  // The whole part and the fractional part are calculated separately due to inaccuracy of floating
5169  // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an
5170  // offset-by-one error later in floor().
5171  let big = (${e}) * (${t});
5172  let whole = ${n}(big / (${r}));
5173  let fract = ${n}(big % (${r})) / ${n}(${r});
5174  return whole + fract;
5175`,ED=(e,t)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,
5176     lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${t} { `+(()=>{switch(e){case"asymmetric":return`
5177          if (xScale < 1.0 || floor(xScale) != xScale) {
5178            return ${t}(xResized) / ${t}(xScale);
5179          } else {
5180            ${wh("xResized","lengthOriginal","lengthResized",t)}
5181          }
5182        `;case"pytorch_half_pixel":return`if (lengthResized > 1) {
5183                    return (${t}(xResized) + 0.5) / ${t}(xScale) - 0.5;
5184                  } else {
5185                    return 0.0;
5186                  }`;case"tf_half_pixel_for_nn":return`return (${t}(xResized) + 0.5) / ${t}(xScale);`;case"align_corners":return`if (lengthResized == 1) {
5187                    return 0.0;
5188                  } else {
5189                    ${wh("xResized","lengthOriginal - 1","lengthResized - 1",t)}
5190                  }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {
5191                    return ${t}(roiStart) * ${t}(lengthOriginal - 1) +
5192                        (${t}(xResized) * ${t}(roiEnd - roiStart) * ${t}(lengthOriginal - 1)) /
5193                        ${t}(lengthResized - 1);
5194                  } else {
5195                    return 0.5 * ${t}(roiStart + roiEnd) * ${t}(lengthOriginal - 1);
5196                  }`;case"half_pixel_symmetric":return`const outputWidth = ${t}xScale * ${t}(lengthResized);
5197                  const adjustment = ${t}(lengthResized) / outputWidth;
5198                  const center = ${t}(lengthOriginal) / 2;
5199                  const offset = center * (1 - adjustment);
5200                  return offset + ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;case"half_pixel":return`return ((${t}(xResized) + 0.5) / ${t}(xScale)) - 0.5;`;default:throw new Error(`Coordinate transform mode ${e} is not supported`)}})()+"}",DD=(e,t,r)=>`fn getNearestPixelFromOriginal(xOriginal: ${r}, isDownSample: bool) -> ${r} {`+(()=>{switch(e){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) {             return ceil(xOriginal);           } else {             return round(xOriginal);           }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) {                     return floor(xOriginal);                   } else {                     return round(xOriginal);                   }";default:if(t<11)return"if (isDownSample)                     {                       return ceil(xOriginal);                     } else {                       return xOriginal;                     }";throw new Error(`Nearest mode ${e} is not supported`)}})()+"}",ID=(e,t,r)=>{let n=new Array(r).fill(0).concat(new Array(r).fill(1)),s=e.length===0?n:e.slice();return t.length>0?(t.forEach((a,i)=>{n[a]=s[i],n[i+r]=s[t.length+i]}),n):s},TD=(e,t,r,n)=>{let s=[];if(r.length>0)if(n.length>0){if(e.forEach(a=>s.push(a)),Math.max(...n)>e.length)throw new Error("axes is out of bound");n.forEach((a,i)=>s[a]=r[i])}else r.forEach(a=>s.push(a));else{if(t.length===0)throw new Error("Resize requires either scales or sizes.");s=e.map((a,i)=>Math.round(a*t[i]))}return s},CD=(e,t,r)=>{let n=(()=>{switch(r.keepAspectRatioPolicy){case"not_larger":return r.axes.length>0?Math.min(...r.axes.map(a=>t[a]),Number.MAX_VALUE):Math.min(...t,Number.MAX_VALUE);case"not_smaller":return r.axes.length>0?Math.max(...r.axes.map(a=>t[a]),Number.MIN_VALUE):Math.max(...t,Number.MIN_VALUE);default:throw new Error(`Keep aspect ratio policy ${r.keepAspectRatioPolicy} is not supported`)}})();t.fill(1,0,t.length);let s=e.slice();return r.axes.length>0?(r.axes.forEach(a=>t[a]=n),r.axes.forEach(a=>s[a]=Math.round(e[a]*t[a]))):(t.fill(n,0,t.length),s.forEach((a,i)=>s[i]=Math.round(a*t[i]))),s},$D=(e,t,r,n,s)=>`
5201    fn calculateOriginalIndicesFromOutputIndices(output_indices: ${e.type.indices}) -> array<${e.type.value}, ${r.length}> {
5202      var original_indices: array<${e.type.value}, ${r.length}>;
5203      for (var i:u32 = 0; i < ${r.length}; i++) {
5204        var output_index = ${e.indicesGet("output_indices","i")};
5205        var scale = ${xt("uniforms.scales","i",n)};
5206        var roi_low = ${xt("uniforms.roi","i",s)};
5207        var roi_hi = ${xt("uniforms.roi",`i + ${t.length}`,s)};
5208        if (scale == 1.0) {
5209          original_indices[i] = ${e.type.value}(output_index);
5210        } else {
5211          var input_shape_i = ${xt("uniforms.input_shape","i",t.length)};
5212          var output_shape_i = ${xt("uniforms.output_shape","i",r.length)};
5213          original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,
5214                                                                           input_shape_i, roi_low, roi_hi);
5215        }
5216      }
5217      return original_indices;
5218    }`,SD=(e,t,r,n,s,a,i)=>`
5219    fn calculateInputIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {
5220      var input_indices: ${e.type.indices};
5221      for (var i:u32 = 0; i < ${n.length}; i++) {
5222        var output_index = ${t.indicesGet("output_indices","i")};
5223        var input_index: u32;
5224        var scale = ${xt("uniforms.scales","i",s)};
5225        if (scale == 1.0) {
5226          input_index = output_index;
5227        } else {
5228          var roi_low = ${xt("uniforms.roi","i",a)};
5229          var roi_hi = ${xt("uniforms.roi",`i + ${r.length}`,a)};
5230          var input_shape_i = ${xt("uniforms.input_shape","i",r.length)};
5231          var output_shape_i = ${xt("uniforms.output_shape","i",n.length)};
5232          var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,
5233                                                                        input_shape_i, roi_low, roi_hi);
5234          if (!${i} || (original_idx >= 0 && original_idx < ${t.type.value}(input_shape_i))) {
5235            if (original_idx < 0) {
5236              input_index = 0;
5237            } else if (original_idx > ${t.type.value}(input_shape_i - 1)) {
5238              input_index = input_shape_i - 1;
5239            } else {
5240              input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));
5241            }
5242          } else {
5243            input_index = u32(original_idx);
5244          }
5245        }
5246        ${e.indicesSet("input_indices","i","input_index")}
5247      }
5248      return input_indices;
5249    }`,kD=(e,t)=>`
5250    fn checkInputIndices(input_indices: ${e.type.indices}) -> bool {
5251      for (var i:u32 = 0; i < ${t.length}; i++) {
5252        var input_index = ${e.indicesGet("input_indices","i")};
5253        if (input_index < 0 || input_index >= ${xt("uniforms.input_shape","i",t.length)}) {
5254          return false;
5255        }
5256      }
5257      return true;
5258    }`,yh=(e,t,r,n)=>e.rank>n?`
5259    ${e.indicesSet("input_indices",t,"channel")};
5260    ${e.indicesSet("input_indices",r,"batch")};
5261`:"",OD=(e,t,r,n,s)=>{let[a,i,o,l]=r.length===2?[-1,0,1,-1]:[0,2,3,1],u=e.type.value;return`
5262    fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${u} {
5263      var input_indices: ${e.type.indices};
5264      ${e.indicesSet("input_indices",i,`max(0, min(row, ${r[i]} - 1))`)};
5265      ${e.indicesSet("input_indices",o,`max(0, min(col, ${r[o]} - 1))`)};
5266      ${yh(e,l,a,2)}
5267      return ${e.getByIndices("input_indices")};
5268    }
5269
5270    fn bilinearInterpolation(output_indices: ${t.type.indices}) -> ${u} {
5271      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);
5272      var row:${u} = originalIndices[${i}];
5273      var col:${u} = originalIndices[${o}];
5274      ${n?`if (row < 0 || row > (${r[i]}
vendor: 8,928 bytes, lines 5274-5436
5274 - 1) || col < 0 || col > (${r[o]} - 1)) {
5275        return ${s};
5276      }`:""};
5277      row = max(0, min(row, ${r[i]} - 1));
5278      col = max(0, min(col, ${r[o]} - 1));
5279      var row1: u32 = u32(row);
5280      var col1: u32 = u32(col);
5281      var row2: u32 = u32(row + 1);
5282      var col2: u32 = u32(col + 1);
5283      var channel: u32 = ${r.length>2?`u32(originalIndices[${l}])`:"0"};
5284      var batch: u32 =  ${r.length>2?`u32(originalIndices[${a}])`:"0"};
5285      var x11: ${u} = getInputValue(batch, channel, row1, col1);
5286      var x12: ${u} = getInputValue(batch, channel, row1, col2);
5287      var x21: ${u} = getInputValue(batch, channel, row2, col1);
5288      var x22: ${u} = getInputValue(batch, channel, row2, col2);
5289      var dx1: ${u} = abs(row - ${u}(row1));
5290      var dx2: ${u} = abs(${u}(row2) - row);
5291      var dy1: ${u} = abs(col - ${u}(col1));
5292      var dy2: ${u} = abs(${u}(col2) - col);
5293      if (row1 == row2) {
5294        dx1 = 0.5;
5295        dx2 = 0.5;
5296      }
5297      if (col1 == col2) {
5298        dy1 = 0.5;
5299        dy2 = 0.5;
5300      }
5301      return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);
5302    }`},GD=(e,t,r,n,s,a,i,o,l,u)=>{let p=r.length===2,[d,c]=p?[0,1]:[2,3],g=e.type.value,A=m=>{let B=m===d?"row":"col";return`
5303      fn ${B}CubicInterpolation(input_indices: ${e.type.indices}, output_indices: ${t.type.indices}) -> ${g} {
5304        var output_index = ${t.indicesGet("output_indices",m)};
5305        var originalIdx: ${g} = getOriginalCoordinateFromResizedCoordinate(output_index, ${s[m]},
5306        ${n[m]}, ${r[m]}, ${a[m]}, ${a[m]} + ${r.length});
5307        var fractOriginalIdx: ${g} = originalIdx - floor(originalIdx);
5308        var coefs = getCubicInterpolationCoefs(fractOriginalIdx);
5309
5310        if (${o} && (originalIdx < 0 || originalIdx > (${r[m]} - 1))) {
5311          return ${l};
5312        }
5313        var data: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0);
5314        for (var i: i32 = -1; i < 3; i++) {
5315          var ${B}: ${g} = originalIdx + ${g}(i);
5316          if (${B} < 0 || ${B} >= ${r[m]}) {
5317            ${u?`coefs[i + 1] = 0.0;
5318                        continue;`:o?`return ${l};`:`${B} = max(0, min(${B}, ${r[m]} - 1));`};
5319          }
5320        var input_indices_copy: ${e.type.indices} = input_indices;
5321          ${e.indicesSet("input_indices_copy",m,`u32(${B})`)};
5322          data[i + 1] = ${m===d?e.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};
5323        }
5324        return cubicInterpolation1D(data, coefs);
5325      }`};return`
5326    ${A(d)};
5327    ${A(c)};
5328  fn getCubicInterpolationCoefs(s: ${g}) -> array<${g}, 4> {
5329    var absS = abs(s);
5330    var coeffs: array<${g}, 4> = array<${g}, 4>(0.0, 0.0, 0.0, 0.0);
5331    var oneMinusAbsS: ${g} = 1.0 - absS;
5332    var twoMinusAbsS: ${g} = 2.0 - absS;
5333    var onePlusAbsS: ${g} = 1.0 + absS;
5334    coeffs[0] = ((${i} * onePlusAbsS - 5 * ${i}) * onePlusAbsS + 8 * ${i}) * onePlusAbsS - 4 * ${i};
5335    coeffs[1] = ((${i} + 2) * absS - (${i} + 3)) * absS * absS + 1;
5336    coeffs[2] = ((${i} + 2) * oneMinusAbsS - (${i} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;
5337    coeffs[3] = ((${i} * twoMinusAbsS - 5 * ${i}) * twoMinusAbsS + 8 * ${i}) * twoMinusAbsS - 4 * ${i};
5338    return coeffs;
5339  }
5340
5341  fn cubicInterpolation1D(x: array<${g}, 4>, coefs: array<${g}, 4>) -> ${g} {
5342    var coefsSum: ${g} = coefs[0] + coefs[1] + coefs[2] + coefs[3];
5343    return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;
5344  }
5345
5346  fn bicubicInterpolation(output_indices: ${t.type.indices}) -> ${g} {
5347    var input_indices: ${e.type.indices} = output_indices;
5348    return colCubicInterpolation(input_indices, output_indices);
5349  }
5350    `},zD=(e,t,r,n,s)=>{let[a,i,o,l,u]=r.length===3?[-1,0,1,2,-1]:[0,2,3,4,1],p=e.type.value;return`
5351    fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${p} {
5352      var input_indices: ${e.type.indices};
5353      ${e.indicesSet("input_indices",i,`max(0, min(depth, ${r[i]} - 1))`)};
5354      ${e.indicesSet("input_indices",o,`max(0, min(height, ${r[o]} - 1))`)};
5355      ${e.indicesSet("input_indices",l,`max(0, min(width, ${r[l]} - 1))`)};
5356      ${yh(e,u,a,3)}
5357      return ${e.getByIndices("input_indices")};
5358    }
5359
5360    fn trilinearInterpolation(output_indices: ${t.type.indices}) -> ${p} {
5361      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);
5362      var depth:${p} = originalIndices[${i}];
5363      var height:${p} = originalIndices[${o}];
5364      var width:${p} = originalIndices[${l}];
5365      ${n?`if (depth < 0 || depth > (${r[i]} - 1) || height < 0 || height > (${r[o]} - 1) || width < 0 || (width > ${r[l]} - 1)) {
5366      return ${s};
5367        }`:""};
5368
5369    depth = max(0, min(depth, ${r[i]} - 1));
5370      height = max(0, min(height, ${r[o]} - 1));
5371      width = max(0, min(width, ${r[l]} - 1));
5372      var depth1: u32 = u32(depth);
5373      var height1: u32 = u32(height);
5374      var width1: u32 = u32(width);
5375      var depth2: u32 = u32(depth + 1);
5376      var height2: u32 = u32(height + 1);
5377      var width2: u32 = u32(width + 1);
5378      var channel: u32 = ${r.length>3?`u32(originalIndices[${u}])`:"0"};
5379      var batch: u32 =  ${r.length>3?`u32(originalIndices[${a}])`:"0"};
5380
5381      var x111: ${p} = getInputValue(batch, channel, depth1, height1, width1);
5382      var x112: ${p} = getInputValue(batch, channel, depth1, height1, width2);
5383      var x121: ${p} = getInputValue(batch, channel, depth1, height2, width1);
5384      var x122: ${p} = getInputValue(batch, channel, depth1, height2, width2);
5385      var x211: ${p} = getInputValue(batch, channel, depth2, height1, width1);
5386      var x212: ${p} = getInputValue(batch, channel, depth2, height1, width2);
5387      var x221: ${p} = getInputValue(batch, channel, depth2, height2, width1);
5388      var x222: ${p} = getInputValue(batch, channel, depth2, height2, width2);
5389      var dx1: ${p} = abs(depth - ${p}(depth1));
5390      var dx2: ${p} = abs(${p}(depth2) - depth);
5391      var dy1: ${p} = abs(height - ${p}(height1));
5392      var dy2: ${p} = abs(${p}(height2) - height);
5393      var dz1: ${p} = abs(width - ${p}(width1));
5394      var dz2: ${p} = abs(${p}(width2) - width);
5395      if (depth1 == depth2) {
5396        dx1 = 0.5;
5397        dx2 = 0.5;
5398      }
5399      if (height1 == height2) {
5400        dy1 = 0.5;
5401        dy2 = 0.5;
5402      }
5403      if (width1 == width2) {
5404        dz1 = 0.5;
5405        dz2 = 0.5;
5406      }
5407      return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +
5408              x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);
5409    }`},FD=(e,t,r,n,s,a)=>{let i=e.dims,o=ID(a,t.axes,i.length),l=TD(i,n,s,t.axes),u=n.slice();n.length===0&&(u=i.map((h,P)=>h===0?1:l[P]/h),t.keepAspectRatioPolicy!=="stretch"&&(l=CD(i,u,t)));let p=Pt("output",e.dataType,l.length),d=Ne("input",e.dataType,i.length),c=$e.size(l),g=i.length===l.length&&i.every((h,P)=>h===l[P]),A=t.coordinateTransformMode==="tf_crop_and_resize",m=t.extrapolationValue,B=d.type.value,f=h=>`
5410      ${g?"":`
5411      ${ED(t.coordinateTransformMode,B)};
5412      ${(()=>{switch(t.mode){case"nearest":return`
5413              ${kD(d,i)};
5414              ${DD(t.nearestMode,r,B)};
5415              ${SD(d,p,i,l,u.length,o.length,A)};
5416              `;case"linear":return`
5417              ${$D(p,i,l,u.length,o.length)};
5418              ${(()=>{if(i.length===2||i.length===4)return`${OD(d,p,i,A,m)}`;if(i.length===3||i.length===5)return`${zD(d,p,i,A,m)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};
5419            `;case"cubic":return`
5420            ${(()=>{if(i.length===2||i.length===4)return`${GD(d,p,i,l,u,o,t.cubicCoeffA,A,t.extrapolationValue,t.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};
5421            `;default:throw Error("Invalid resize mode")}})()};
5422      `}
5423      ${h.registerUniform("output_size","u32").registerUniform("scales","f32",u.length).registerUniform("roi","f32",o.length).declareVariables(d,p)}
5424      ${h.mainStart()}
5425        ${h.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
5426        ${g?"output[global_idx] = input[global_idx];":`
5427        let output_indices = ${p.offsetToIndices("global_idx")};
5428        var input_indices: ${d.type.indices};
5429        ${(()=>{switch(t.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);
5430                if (checkInputIndices(input_indices)) {
5431                  output[global_idx] = ${d.getByIndices("input_indices")};
5432                } else {
5433                  output[global_idx] = ${t.extrapolationValue};
5434                }`;case"linear":return`output[global_idx] = ${i.length===2||i.length===4?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${t.mode}`)}})()};
5435`}
5436      }`;
vendor: 15,732 bytes, lines 5436-5602
5436return{name:"Resize",shaderCache:{hint:`${t.cacheKey}|${r}|${u.length>0?t.mode==="cubic"?u:u.length:""}|${s.length>0?s:""}|${o.length>0?o:""}|${g}|${t.mode==="nearest"?i.length:i}`,inputDependencies:["rank"]},getShaderSource:f,getRunData:()=>({outputs:[{dims:l,dataType:e.dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:[{type:12,data:c},{type:1,data:u},{type:1,data:o},...It(i,l)]})}},LD=e=>{let t=e.customDataBuffer;return new Uint32Array(t,t.byteOffset,1)[0]},RD=(e,t)=>{let r=[],n=[],s=[],a=LD(e);if(t.antialias!==0)throw Error("Only default value (0) for Antialias attribute is supported");xD(e.inputs,t,a,r,n,s),e.compute(FD(e.inputs[0],t,a,r,n,s),{inputs:[0]})},YD=e=>{let t=e.antialias,r=e.axes,n=e.coordinateTransformMode,s=e.cubicCoeffA,a=e.excludeOutside!==0,i=e.extrapolationValue,o=e.keepAspectRatioPolicy,l=e.mode,u=e.nearestMode===""?"simple":e.nearestMode;return Mr({antialias:t,axes:r,coordinateTransformMode:n,cubicCoeffA:s,excludeOutside:a,extrapolationValue:i,keepAspectRatioPolicy:o,mode:l,nearestMode:u})}}),ND,jD,UD,O3=et(()=>{Gt(),qt(),tr(),ND=e=>{if(!e||e.length<3)throw new Error("layerNorm requires at least 3 inputs.");let t=e[0],r=e[1],n=e[2];if(t.dataType!==r.dataType||t.dataType!==n.dataType)throw new Error("All inputs must have the same data type");if(t.dims.length!==3&&t.dims.length!==2)throw new Error("Input must be 2D or 3D");if(r.dims.length!==3&&r.dims.length!==2)throw new Error("Skip must be 2D or 3D");let s=t.dims[t.dims.length-1],a=t.dims[t.dims.length-2];if(r.dims[r.dims.length-1]!==s)throw new Error("Skip must have the same hidden size as input");if(r.dims[r.dims.length-2]!==a)throw new Error("Skip must have the same sequence length as input");if(n.dims.length!==1)throw new Error("Gamma must be 1D");if(n.dims[n.dims.length-1]!==s)throw new Error("Gamma must have the same hidden size as input");if(e.length>3){let i=e[3];if(i.dims.length!==1)throw new Error("Beta must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Beta must have the same hidden size as input")}if(e.length>4){let i=e[4];if(i.dims.length!==1)throw new Error("Bias must be 1D");if(i.dims[i.dims.length-1]!==s)throw new Error("Bias must have the same hidden size as input")}},jD=(e,t,r,n)=>{let s=t.simplified,a=e[0].dims,i=$e.size(a),o=a,l=i,u=a.slice(-1)[0],p=n?a.slice(0,-1).concat(1):[],d=!s&&e.length>3,c=e.length>4,g=n&&r>1,A=n&&r>2,m=r>3,B=64,f=en(u),h=[{type:12,data:l},{type:12,data:f},{type:12,data:u},{type:1,data:t.epsilon}],P=w=>{let b=[{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}],v=[Ne("x",e[0].dataType,e[0].dims,f),Ne("skip",e[1].dataType,e[1].dims,f),Ne("gamma",e[2].dataType,e[2].dims,f)];d&&v.push(Ne("beta",e[3].dataType,e[3].dims,f)),c&&v.push(Ne("bias",e[4].dataType,e[4].dims,f)),v.push(Pt("output",e[0].dataType,o,f)),g&&v.push(Pt("mean_output",1,p)),A&&v.push(Pt("inv_std_output",1,p)),m&&v.push(Pt("input_skip_bias_sum",e[0].dataType,o,f));let y=Bn(e[0].dataType),$=Bn(1,f);return`
5437
5438      ${w.registerUniforms(b).declareVariables(...v)}
5439      var<workgroup> sum_shared : array<${$}, ${B}>;
5440      var<workgroup> sum_squared_shared : array<${$}, ${B}>;
5441
5442      ${w.mainStart([B,1,1])}
5443        let ix = local_id.x;
5444        let iy = global_id.x / ${B};
5445
5446        let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;
5447        var stride = hidden_size_vectorized / ${B};
5448        let offset = ix * stride + iy * hidden_size_vectorized;
5449        let offset1d = stride * ix;
5450        if (ix == ${B-1}) {
5451          stride = hidden_size_vectorized - stride * ix;
5452        }
5453        for (var i: u32 = 0; i < stride; i++) {
5454          let skip_value = skip[offset + i];
5455          let bias_value = ${c?"bias[offset1d + i]":y+"(0.0)"};
5456          let input_value = x[offset + i];
5457          let value = input_value + skip_value + bias_value;
5458          ${m?"input_skip_bias_sum[offset + i] = value;":""}
5459          output[offset + i] = value;
5460          let f32_value = ${Go(y,f,"value")};
5461          sum_shared[ix] += f32_value;
5462          sum_squared_shared[ix] += f32_value * f32_value;
5463        }
5464        workgroupBarrier();
5465
5466        var reduce_size : u32 = ${B};
5467        for (var curr_size = reduce_size >> 1;  curr_size > 0; curr_size = reduce_size >> 1) {
5468          reduce_size = curr_size + (reduce_size & 1);
5469          if (ix < curr_size) {
5470            sum_shared[ix] += sum_shared[ix + reduce_size];
5471            sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size];
5472          }
5473          workgroupBarrier();
5474        }
5475
5476        let sum = sum_shared[0];
5477        let square_sum = sum_squared_shared[0];
5478        let mean = ${qa("sum",f)} / f32(uniforms.hidden_size);
5479        let inv_std_dev = inverseSqrt(${qa("square_sum",f)} / f32(uniforms.hidden_size) ${s?"":"- mean * mean"} + uniforms.epsilon);
5480        ${g?"mean_output[global_idx] = mean;":""}
5481        ${A?"inv_std_output[global_idx] = inv_std_dev;":""}
5482
5483        for (var i: u32 = 0; i < stride; i++) {
5484          output[offset + i] = (output[offset + i] ${s?"":`- ${y}(mean)`}) *
5485            ${y}(inv_std_dev) * gamma[offset1d + i]
5486            ${d?"+ beta[offset1d + i]":""};
5487        }
5488      }`},_=[{dims:o,dataType:e[0].dataType}];return r>1&&_.push({dims:p,dataType:1}),r>2&&_.push({dims:p,dataType:1}),r>3&&_.push({dims:a,dataType:e[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${f};${g};${A};${m}`,inputDependencies:e.map((w,b)=>"type")},getShaderSource:P,getRunData:()=>({outputs:_,dispatchGroup:{x:Math.ceil(l/u)},programUniforms:h})}},UD=(e,t)=>{ND(e.inputs);let r=[0];e.outputCount>1&&r.push(-3),e.outputCount>2&&r.push(-3),e.outputCount>3&&r.push(3),e.compute(jD(e.inputs,t,e.outputCount,!1),{outputs:r})}}),WD,Kl,VD,bh,QD,HD,KD,qD,G3=et(()=>{Gt(),qt(),on(),tr(),WD=(e,t)=>{if(!e||e.length<1)throw new Error("too few inputs");if(t.axes.length!==0){if(t.axes.length!==t.starts.length||t.axes.length!==t.ends.length)throw new Error("axes, starts and ends must have the same length")}else if(t.starts.length!==t.ends.length)throw new Error("starts and ends must have the same length");e.slice(1).forEach((r,n)=>{if(e[n+1].dataType!==6&&e[n+1].dataType!==7)throw new Error(`Input ${n} must be an array of int32 or int64`)})},Kl=(e,t)=>{let r=[];if(e.length>t)if(e[t].dataType===7)e[t].getBigInt64Array().forEach(n=>r.push(Number(n)));else if(e[t].dataType===6)e[t].getInt32Array().forEach(n=>r.push(Number(n)));else throw new Error(`Input ${t} must be an array of int32 or int64`);return r},VD=(e,t)=>{if(e.length>1){let r=Kl(e,1),n=Kl(e,2),s=Kl(e,3);return s.length===0&&(s=[...Array(e[0].dims.length).keys()]),Mr({starts:r,ends:n,axes:s})}else return t},bh=(e,t,r,n,s)=>{let a=e;return e<0&&(a+=r[n[t]]),s[t]<0?Math.max(0,Math.min(a,r[n[t]]-1)):Math.max(0,Math.min(a,r[n[t]]))},QD=(e,t,r)=>`fn calculateInputIndices(output_indices: ${t.type.indices}) -> ${e.type.indices} {
5489          var input_indices: ${e.type.indices};
5490          var carry = 0u;
5491          for (var i = ${r.length-1}; i >= 0; i--) {
5492            let input_shape_i = ${xt("uniforms.input_shape","i",r.length)};
5493            let steps_i = ${xt("uniforms.steps","i",r.length)};
5494            let signs_i = ${xt("uniforms.signs","i",r.length)};
5495            let starts_i = ${xt("uniforms.starts","i",r.length)};
5496            var output_index = ${t.indicesGet("output_indices","i")};
5497            var input_index = output_index * steps_i + starts_i + carry;
5498            carry = input_index / input_shape_i;
5499            input_index = input_index % input_shape_i;
5500            if (signs_i < 0) {
5501              input_index = input_shape_i - input_index - 1u + starts_i;
5502            }
5503            ${e.indicesSet("input_indices","i","input_index")};
5504          }
5505          return input_indices;
5506      }`,HD=(e,t)=>{let r=e[0].dims,n=$e.size(r),s=t.axes.length>0?$e.normalizeAxes(t.axes,r.length):[...Array(r.length).keys()],a=Kl(e,4);a.forEach(f=>f!==0||(()=>{throw new Error("step cannot be 0")})),a.length===0&&(a=Array(s.length).fill(1));let i=t.starts.map((f,h)=>bh(f,h,r,s,a)),o=t.ends.map((f,h)=>bh(f,h,r,s,a));if(s.length!==i.length||s.length!==o.length)throw new Error("start, ends and axes should have the same number of elements");if(s.length!==r.length)for(let f=0;f<r.length;++f)s.includes(f)||(i.splice(f,0,0),o.splice(f,0,r[f]),a.splice(f,0,1));let l=a.map(f=>Math.sign(f));a.forEach((f,h,P)=>{if(f<0){let _=(o[h]-i[h])/f,w=i[h],b=w+_*a[h];i[h]=b,o[h]=w,P[h]=-f}});let u=r.slice(0);s.forEach((f,h)=>{u[f]=Math.ceil((o[f]-i[f])/a[f])});let p={dims:u,dataType:e[0].dataType},d=Pt("output",e[0].dataType,u.length),c=Ne("input",e[0].dataType,e[0].dims.length),g=$e.size(u),A=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:i.length},{name:"signs",type:"i32",length:l.length},{name:"steps",type:"u32",length:a.length}],m=[{type:12,data:g},{type:12,data:i},{type:6,data:l},{type:12,data:a},...It(e[0].dims,u)],B=f=>`
5507      ${f.registerUniforms(A).declareVariables(c,d)}
5508        ${QD(c,d,r)}
5509        ${f.mainStart()}
5510          ${f.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
5511          let output_indices = ${d.offsetToIndices("global_idx")};
5512          let input_indices = calculateInputIndices(output_indices);
5513          ${d.setByOffset("global_idx",c.getByIndices("input_indices"))}
5514      }`;return{name:"Slice",shaderCache:{hint:`${l.length}_${i.length}_${a.length}`,inputDependencies:["rank"]},getShaderSource:B,getRunData:()=>({outputs:[p],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:m})}},KD=(e,t)=>{WD(e.inputs,t);let r=VD(e.inputs,t);e.compute(HD(e.inputs,r),{inputs:[0]})},qD=e=>{let t=e.starts,r=e.ends,n=e.axes;return Mr({starts:t,ends:r,axes:n})}}),XD,ZD,JD,eI,z3=et(()=>{Gt(),qt(),on(),Xa(),tr(),XD=e=>{if(!e||e.length!==1)throw new Error("Softmax op requires 1 input.")},ZD=(e,t)=>{let r=e.inputs[0],n=r.dims,s=$e.size(n),a=n.length,i=$e.normalizeAxis(t.axis,a),o=i<n.length-1,l,u=[];o?(u=Array.from({length:a},(v,y)=>y),u[i]=a-1,u[a-1]=i,l=e.compute(is(r,u),{inputs:[r],outputs:[-1]})[0]):l=r;let p=l.dims,d=p[a-1],c=s/d,g=en(d),A=d/g,m=64;c===1&&(m=256);let B=(v,y)=>y===4?`max(max(${v}.x, ${v}.y), max(${v}.z, ${v}.w))`:y===2?`max(${v}.x, ${v}.y)`:y===3?`max(max(${v}.x, ${v}.y), ${v}.z)`:v,f=Ne("x",l.dataType,l.dims,g),h=Pt("result",l.dataType,l.dims,g),P=f.type.value,_=Bn(l.dataType)==="f32"?`var threadMax = ${P}(-3.4028234663852886e+38f);`:`var threadMax = ${P}(-65504.0h);`,w=v=>`
5515      var<workgroup> rowMaxShared : ${P};
5516      var<workgroup> rowSumShared : ${P};
5517      var<workgroup> threadShared : array<${P}, ${m}>;
5518
5519      fn getValue(row: i32, col: i32, row_stride: i32) -> ${P} {
5520        let index = row * row_stride + col;
5521        return x[index];
5522      }
5523
5524      fn setValue(row: i32, col: i32, row_stride: i32, value: ${P}) {
5525        let index = row * row_stride + col;
5526        result[index] = value;
5527      }
5528      ${v.registerUniform("packedCols","i32").declareVariables(f,h)}
5529      ${v.mainStart(m)}
5530        let gindex = i32(global_idx);
5531        let lindex = i32(local_idx);
5532        const wg = ${m};
5533        let row = gindex / wg;
5534        let cols = uniforms.packedCols;
5535        let row_stride : i32 = uniforms.packedCols;
5536
5537        // find the rows max
5538        ${_}
5539        for (var col = lindex; col < cols; col += wg) {
5540          let value = getValue(row, col, row_stride);
5541          threadMax = max(threadMax, value);
5542        }
5543        if (lindex < cols) {
5544          threadShared[lindex] = threadMax;
5545        }
5546        workgroupBarrier();
5547
5548        var reduceSize = min(cols, wg);
5549        for (var currSize = reduceSize >> 1;  currSize > 0; currSize = reduceSize >> 1) {
5550          reduceSize = currSize + (reduceSize & 1);
5551          if (lindex < currSize) {
5552            threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);
5553          }
5554          workgroupBarrier();
5555        }
5556        if (lindex == 0) {
5557          rowMaxShared = ${P}(${B("threadShared[0]",g)});
5558        }
5559        workgroupBarrier();
5560
5561        // find the rows sum
5562        var threadSum = ${P}(0.0);
5563        for (var col = lindex; col < cols; col += wg) {
5564          let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);
5565          threadSum += subExp;
5566        }
5567        threadShared[lindex] = threadSum;
5568        workgroupBarrier();
5569
5570        for (var currSize = wg >> 1;  currSize > 0; currSize = currSize >> 1) {
5571          if (lindex < currSize) {
5572            threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];
5573          }
5574          workgroupBarrier();
5575        }
5576        if (lindex == 0) {
5577          rowSumShared = ${P}(${qa("threadShared[0]",g)});
5578        }
5579        workgroupBarrier();
5580
5581        // calculate final value for each element in the row
5582        for (var col = lindex; col < cols; col += wg) {
5583          var value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;
5584          // max operation protects against NaN since all values should be >=0
5585          value = max(value, ${P}(0.0));
5586          setValue(row, col, row_stride, value);
5587        }
5588      }`,b=e.compute({name:"Softmax",shaderCache:{hint:`${g};${m}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:p,dataType:l.dataType}],dispatchGroup:{x:c},programUniforms:[{type:6,data:A}]}),getShaderSource:w},{inputs:[l],outputs:[o?-1:0]})[0];o&&e.compute(is(b,u),{inputs:[b]})},JD=(e,t)=>{XD(e.inputs),ZD(e,t)},eI=e=>Mr({axis:e.axis})}),Ph,tI,rI,nI,sI,F3=et(()=>{Gt(),qt(),tr(),Ph=e=>Array.from(e.getBigInt64Array(),Number),tI=e=>{if(!e||e.length!==2)throw new Error("Tile requires 2 inputs.");if(e[0].dataType!==1&&e[0].dataType!==10&&e[0].dataType!==6&&e[0].dataType!==12)throw new Error("Tile only support float, float16, int32, and uint32 data types");if(e[1].dataType!==7)throw new Error("Tile `repeats` input should be of int64 data type");if(e[1].dims.length!==1)throw new Error("Tile `repeats` input should be 1-D");if(Ph(e[1]).length!==e[0].dims.length)throw new Error("Tile `repeats` input should have same number of elements as rank of input data tensor")},rI=(e,t)=>{let r=[];for(let n=0;n<e.length;++n)r.push(e[n]*t[n]);return r},nI=(e,t)=>{let r=e[0].dims,n=t??Ph(e[1]),s=rI(r,n),a=$e.size(s),i=e[0].dataType,o=Ne("input",i,r.length),l=Pt("output",i,s.length),u=p=>`
5589      const inputShape = ${o.indices(...r)};
5590      ${p.registerUniform("output_size","u32").declareVariables(o,l)}
5591      ${p.mainStart()}
5592      ${p.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
5593      let output_indices = ${l.offsetToIndices("global_idx")};
5594      var input_indices: ${o.type.indices};
5595      for (var i = 0; i < ${r.length}; i++) {
5596        let input_dim_i = ${o.indicesGet("uniforms.input_shape","i")};
5597        let input_dim_value = ${l.indicesGet("output_indices","i")}  % input_dim_i;
5598
5599        ${o.indicesSet("input_indices","i","input_dim_value")}
5600      }
5601      ${l.setByOffset("global_idx",o.getByIndices("input_indices"))}
5602    }`;return{name:"Tile",shaderCache:{hint:`${n}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:e[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:[{type:12,data:a},...It(e[0].dims,s)]}),getShaderSource:u}},sI=e=>{tI(e.inputs),e.compute(nI(e.inputs),{inputs:[0]})}}),aI,iI,oI,L3=et(()=>{Gt(),qt(),tr(),aI=(e,t,r,n,s)=>{let a=Pt("output_data",s,r.length,4),i=Ne("a_data",t[1].dataType,t[1].dims.length,4),o=Ne("b_data",t[2].dataType,t[2].dims.length,4),l=Ne("c_data",t[0].dataType,t[0].dims.length,4),u,p=(d,c,g)=>`select(${c}, ${d}, ${g})`;if(!n)u=a.setByOffset("global_idx",p(i.getByOffset("global_idx"),o.getByOffset("global_idx"),l.getByOffset("global_idx")));else{let d=(c,g,A="")=>{let m=`a_data[index_a${g}][component_a${g}]`,B=`b_data[index_b${g}
5602][component_b${g}]`,f=`bool(c_data[index_c${g}] & (0xffu << (component_c${g} * 8)))`;return`
5603            let output_indices${g} = ${a.offsetToIndices(`global_idx * 4u + ${g}u`)};
5604            let offset_a${g} = ${i.broadcastedIndicesToOffset(`output_indices${g}`,a)};
5605            let offset_b${g} = ${o.broadcastedIndicesToOffset(`output_indices${g}`,a)};
5606            let offset_c${g} = ${l.broadcastedIndicesToOffset(`output_indices${g}`,a)};
5607            let index_a${g} = offset_a${g} / 4u;
5608            let index_b${g} = offset_b${g} / 4u;
5609            let index_c${g} = offset_c${g} / 4u;
5610            let component_a${g} = offset_a${g} % 4u;
5611            let component_b${g} = offset_b${g} % 4u;
5612            let component_c${g} = offset_c${g} % 4u;
5613            ${c}[${g}] = ${A}(${p(m,B,f)});
5614          `};s===9?u=`
5615            var data = vec4<u32>(0);
5616            ${d("data",0,"u32")}
5617            ${d("data",1,"u32")}
5618            ${d("data",2,"u32")}
5619            ${d("data",3,"u32")}
5620            output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:u=`
5621            ${d("output_data[global_idx]",0)}
5622            ${d("output_data[global_idx]",1)}
5623            ${d("output_data[global_idx]",2)}
5624            ${d("output_data[global_idx]",3)}
5625          `}return`
5626        ${e.registerUniform("vec_size","u32").declareVariables(l,i,o,a)}
5627        ${e.mainStart()}
5628        ${e.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
5629        ${u}
5630      }`},iI=e=>{let t=e[1].dims,r=e[2].dims,n=e[0].dims,s=e[1].dataType,a=!($e.areEqual(t,r)&&$e.areEqual(r,n)),i=t,o=$e.size(t);if(a){let u=ko.calcShape(ko.calcShape(t,r,!1),n,!1);if(!u)throw new Error("Can't perform where op on the given tensors");i=u,o=$e.size(i)}let l=Math.ceil(o/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:u=>aI(u,e,i,a,s),getRunData:()=>({outputs:[{dims:i,dataType:s}],dispatchGroup:{x:Math.ceil(o/64/4)},programUniforms:[{type:12,data:l},...It(n,t,r,i)]})}},oI=e=>{e.compute(iI(e.inputs))}}),lI,R3=et(()=>{e3(),FA(),t3(),r3(),n3(),s3(),a3(),c3(),p3(),g3(),A3(),h3(),m3(),f3(),_3(),w3(),y3(),b3(),P3(),M3(),v3(),B3(),x3(),E3(),D3(),yE(),I3(),T3(),C3(),$3(),S3(),OA(),k3(),TE(),O3(),G3(),z3(),EE(),F3(),Xa(),NA(),L3(),lI=new Map([["Abs",[NB]],["Acos",[jB]],["Acosh",[UB]],["Add",[C1]],["ArgMax",[EB,zA]],["ArgMin",[xB,zA]],["Asin",[WB]],["Asinh",[VB]],["Atan",[QB]],["Atanh",[HB]],["Attention",[SB]],["AveragePool",[iD,aD]],["BatchNormalization",[zB]],["BiasAdd",[RB]],["BiasSplitGelu",[D1]],["Cast",[qB,KB]],["Ceil",[JB]],["Clip",[ZB]],["Concat",[W1,V1]],["Conv",[th,JA]],["ConvTranspose",[wx,mx]],["Cos",[e1]],["Cosh",[t1]],["CumSum",[bx,Px]],["DepthToSpace",[xx,Ex]],["DequantizeLinear",[hD,mD]],["Div",[$1]],["Einsum",[Sx,kx]],["Elu",[r1,jl]],["Equal",[S1]],["Erf",[n1]],["Exp",[s1]],["Expand",[Fx]],["FastGelu",[Rx]],["Floor",[a1]],["FusedConv",[th,JA]],["Gather",[Ux,jx]],["GatherElements",[tE,eE]],["GatherBlockQuantized",[qx,Xx]],["GatherND",[Vx,Qx]],["Gelu",[i1]],["Gemm",[aE,sE]],["GlobalAveragePool",[lD,oD]],["GlobalMaxPool",[pD,dD]],["Greater",[z1]],["GreaterOrEqual",[L1]],["GridSample",[AE,hE]],["GroupQueryAttention",[kE]],["HardSigmoid",[A1,g1]],["InstanceNormalization",[zE]],["LayerNormalization",[RE]],["LeakyRelu",[o1,jl]],["Less",[F1]],["LessOrEqual",[R1]],["Log",[P1]],["MatMul",[NE]],["MatMulNBits",[VE,QE]],["MaxPool",[uD,cD]],["Mul",[k1]],["MultiHeadAttention",[wE,fE]],["Neg",[u1]],["Not",[l1]],["Pad",[rD]],["Pow",[O1]],["QuickGelu",[B1,jl]],["Range",[wD]],["Reciprocal",[c1]],["ReduceMin",[bB]],["ReduceMean",[mB]],["ReduceMax",[yB]],["ReduceSum",[MB]],["ReduceProd",[PB]],["ReduceL1",[fB]],["ReduceL2",[_B]],["ReduceLogSum",[BB]],["ReduceLogSumExp",[wB]],["ReduceSumSquare",[vB]],["Relu",[d1]],["Resize",[RD,YD]],["RotaryEmbedding",[IE]],["ScatterND",[MD,PD]],["Sigmoid",[p1]],["Sin",[h1]],["Sinh",[m1]],["Slice",[KD,qD]],["SkipLayerNormalization",[UD]],["Split",[BE,xE]],["Sqrt",[f1]],["Softmax",[JD,eI]],["Sub",[G1]],["Tan",[_1]],["Tanh",[w1]],["ThresholdedRelu",[b1,jl]],["Tile",[sI]],["Transpose",[zv,Fv]],["Where",[oI]]])}),uI,Y3=et(()=>{ys(),$a(),tr(),uI=class{constructor(e){this.backend=e,this.repo=new Map,this.attributesBound=!1}getArtifact(e){return this.repo.get(e)}setArtifact(e,t){this.repo.set(e,t)}run(e,t,r,n,s){Aa(e.programInfo.name);let a=this.backend.device,i=this.backend.getComputePassEncoder();this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2);let o=[];for(let u of t)o.push({binding:o.length,resource:{buffer:u.buffer}});for(let u of r)o.push({binding:o.length,resource:{buffer:u.buffer}});s&&o.push({binding:o.length,resource:s});let l=a.createBindGroup({layout:e.computePipeline.getBindGroupLayout(0),entries:o,label:e.programInfo.name});if(this.backend.sessionStatus==="capturing"){let u={kernelId:this.backend.currentKernelId,computePipeline:e.computePipeline,bindGroup:l,dispatchGroup:n};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(u)}i.setPipeline(e.computePipeline),i.setBindGroup(0,l),i.dispatchWorkgroups(...n),this.backend.writeTimestamp(this.backend.pendingDispatchNumber*2+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>
5630=this.backend.maxDispatchNumber||this.backend.queryType==="at-passes")&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),js(e.programInfo.name)}dispose(){}build(e,t){Aa(e.name);let r=this.backend.device,n=[];[{feature:"shader-f16",extension:"f16"},{feature:"subgroups",extension:"subgroups"}].forEach(u=>{r.features.has(u.feature)&&n.push(`enable ${u.extension};`)});let s=Cv(t,this.backend.device.limits),a=e.getShaderSource(s),i=`${n.join(`
5631`)}
5632${s.additionalImplementations}
5633${a}`,o=r.createShaderModule({code:i,label:e.name});ur("verbose",()=>`[WebGPU] ${e.name} shader code: ${i}`);let l=r.createComputePipeline({compute:{module:o,entryPoint:"main"},layout:"auto",label:e.name});return js(e.name),{programInfo:e,computePipeline:l,uniformVariablesInfo:s.variablesInfo}}normalizeDispatchGroupSize(e){let t=typeof e=="number"?e:e.x,r=typeof e=="number"?1:e.y||1,n=typeof e=="number"?1:e.z||1,s=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(t<=s&&r<=s&&n<=s)return[t,r,n];let a=t*r*n,i=Math.ceil(Math.sqrt(a));if(i>s){if(i=Math.ceil(Math.cbrt(a)),i>s)throw new Error("Total dispatch size exceeds WebGPU maximum.");return[i,i,i]}else return[i,i,1]}}}),cI={};Co(cI,{WebGpuBackend:()=>AI});var dI,pI,gI,AI,N3=et(()=>{ys(),Gt(),$a(),fv(),Z4(),R3(),Y3(),dI=(e,t)=>{if(t.length!==e.length)throw new Error(`inputDependencies length ${t.length} is not equal to inputTensors length ${e.length}.`);let r=[];for(let n=0;n<e.length;++n){let s=e[n].dataType;switch(t[n]){case"none":{r.push("");break}case"type":{r.push(`${s}`);break}case"rank":{let a=e[n].dims.length;r.push(`${s};${a}`);break}case"dims":{let a=e[n].dims.join(",");r.push(`${s};${a}`);break}default:throw new Error(`unsupported input dependency: ${t[n]}`)}}return r.join("|")},pI=(e,t,r)=>{let n=e.name;return e.shaderCache?.hint&&(n+="["+e.shaderCache.hint+"]"),n+=":"+r+`:${dI(t,e.shaderCache?.inputDependencies??new Array(t.length).fill("dims"))}`,n},gI=class{constructor(e){e&&(this.architecture=e.architecture,this.vendor=e.vendor)}isArchitecture(e){return this.architecture===e}isVendor(e){return this.vendor===e}},AI=class{constructor(){this.currentSessionId=null,this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionStatus="default",this.capturedCommandList=new Map,this.capturedPendingKernels=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(this.currentKernelId===null)throw new Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let e=this.kernelCustomData.get(this.currentKernelId);return e||(e={},this.kernelCustomData.set(this.currentKernelId,e)),e}async initialize(e,t){this.env=e;let r=[],n={requiredLimits:{maxComputeWorkgroupStorageSize:t.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:t.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:t.limits.maxStorageBufferBindingSize,maxBufferSize:t.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:t.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:t.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:t.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:t.limits.maxComputeWorkgroupSizeZ},requiredFeatures:r},s=a=>t.features.has(a)&&r.push(a)&&!0;s("chromium-experimental-timestamp-query-inside-passes")||s("timestamp-query"),s("shader-f16"),s("subgroups"),this.device=await t.requestDevice(n),this.adapterInfo=new gI(t.info||await t.requestAdapterInfo()),this.gpuDataManager=Ev(this),this.programManager=new uI(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,_A(e.logLevel,!!e.debug),this.device.onuncapturederror=a=>
vendor: 26,384 bytes, line 5633
5633{a.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${a.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,"adapter",{value:t,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){typeof this.querySet<"u"&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let e=this.getCommandEncoder(),t={};this.queryType==="at-passes"&&(t.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:this.pendingDispatchNumber*2,endOfPassWriteIndex:this.pendingDispatchNumber*2+1}),this.computePassEncoder=e.beginComputePass(t)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){if(!this.commandEncoder)return;Aa(),this.endComputePass();let e;this.queryType!=="none"&&(this.commandEncoder.resolveQuerySet(this.querySet,0,this.pendingDispatchNumber*2,this.queryResolveBuffer,0),e=this.device.createBuffer({size:this.pendingDispatchNumber*2*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(e,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,e,0,this.pendingDispatchNumber*2*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,this.queryType!=="none"&&e.mapAsync(GPUMapMode.READ).then(()=>{let t=new BigUint64Array(e.getMappedRange()),r=this.pendingQueries.get(e);for(let n=0;n<t.length/2;n++){let s=r[n],a=s.kernelId,i=this.kernels.get(a),o=i.kernelType,l=i.kernelName,u=s.programName,p=s.inputTensorViews,d=s.outputTensorViews,c=t[n*2],g=t[n*2+1];typeof this.queryTimeBase>"u"&&(this.queryTimeBase=c);let A=Number(c-this.queryTimeBase),m=Number(g-this.queryTimeBase);if(!Number.isSafeInteger(A)||!Number.isSafeInteger(m))throw new RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:p.map(B=>({dims:B.dims,dataType:Ca(B.dataType)})),outputsMetadata:d.map(B=>({dims:B.dims,dataType:Ca(B.dataType)})),kernelId:a,kernelType:o,kernelName:l,programName:u,startTime:A,endTime:m});else{let B="";p.forEach((h,P)=>{B+=`input[${P}]: [${h.dims}] | ${Ca(h.dataType)}, `});let f="";d.forEach((h,P)=>{f+=`output[${P}]: [${h.dims}] | ${Ca(h.dataType)}, `}),console.log(`[profiling] kernel "${a}|${o}|${l}|${u}" ${B}${f}start time: ${A} ns, execution time: ${m-A} ns`)}fc("GPU",`${u}::${c}::${g}`)}e.unmap(),this.pendingQueries.delete(e)}),js()}run(e,t,r,n,s,a){Aa(e.name);let i=[];for(let h=0;h<t.length;++h){let P=t[h].data;if(P===0)continue;let _=this.gpuDataManager.get(P);if(!_)throw new Error(`no GPU data for input: ${P}`);i.push(_)}let{outputs:o,dispatchGroup:l,programUniforms:u}=e.getRunData(t),p=r.length===0?o.map((h,P)=>P):r;if(p.length!==o.length)throw new Error(`Output size ${p.length} must be equal to ${o.length}.`);let d=[],c=[];for(let h=0;h<o.length;++h){if(!Number.isInteger(p[h])||p[h]<-3||p[h]>=a)throw new Error(`Invalid output index: ${p[h]}`);if(p[h]===-3)continue;let P=p[h]===-1,_=p[h]===-2,w=P||_?s(o[h].dataType,o[h].dims):n(p[h],o[h].dataType,o[h].dims);if(d.push(w),w.data===0)continue;let b=this.gpuDataManager.get(w.data);if(!b)throw new Error(`no GPU data for output: ${w.data}`);if(P&&this.temporaryData.push(b),_){let v=this.kernelPersistentData.get(this.currentKernelId);v||(v=[],this.kernelPersistentData.set(this.currentKernelId,v)),v.push(b)}c.push(b)}if(i.length!==t.length||c.length!==d.length){if(c.length===0)return js(e.name),d;throw new Error(`Program ${e.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}let g;if(u){let h=0,P=[];u.forEach(v=>{let y=typeof v.data=="number"?[v.data]:v.data;if(y.length===0)return;let $=v.type===10?2:4,k,W;v.type===10?(W=y.length>4?16:y.length>2?8:y.length*$,k=y.length>4?16:$*y.length):(W=y.length<=2?y.length*$:16,k=16),h=Math.ceil(h/W)*W,P.push(h);let j=v.type===10?8:4;h+=y.length>4?Math.ceil(y.length/j)*k:y.length*$});let _=16;h=Math.ceil(h/_)*_;let w=new ArrayBuffer(h);u.forEach((v,y)=>{let $=P[y],k=typeof v.data=="number"?[v.data]:v.data;if(v.type===6)new Int32Array(w,$,k.length).set(k);else if(v.type===12)new Uint32Array(w,$,k.length).set(k);else if(v.type===10)new Uint16Array(w,$,k.length).set(k);else if(v.type===1)new Float32Array(w,$,k.length).set(k);else throw new Error(`Unsupported uniform type: ${Ca(v.type)}`)});let b=this.gpuDataManager.create(h,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(b.buffer,0,w,0,h),this.gpuDataManager.release(b.id),g={offset:0,size:h,buffer:b.buffer}}let A=this.programManager.normalizeDispatchGroupSize(l),m=A[1]===1&&A[2]===1,B=pI(e,t,m),f=this.programManager.getArtifact(B);if(f||(f=this.programManager.build(e,A),this.programManager.setArtifact(B,f),ur("info",()=>`[artifact] key: ${B}, programName: ${e.name}`)),u&&f.uniformVariablesInfo){if(u.length!==f.uniformVariablesInfo.length)throw new Error(`Uniform variables count mismatch: expect ${f.uniformVariablesInfo.length}, got ${u.length} in program "${f.programInfo.name}".`);for(let h=0;h<u.length;h++){let P=u[h],_=P.type,w=typeof P.data=="number"?1:P.data.length,[b,v]=f.uniformVariablesInfo[h];if(_!==b||w!==v)throw new Error(`Uniform variable ${h} mismatch: expect type ${b} with size ${v}, got type ${_} with size ${w} in program "${f.programInfo.name}".`)}}if(ur("info",()=>`[ProgramManager] run "${e.name}" (key=${B}) with ${A[0]}x${A[1]}x${A[2]}`),this.queryType!=="none"||this.sessionStatus==="capturing"){let h={kernelId:this.currentKernelId,programName:f.programInfo.name,inputTensorViews:t,outputTensorViews:d};this.pendingKernels.push(h),this.sessionStatus==="capturing"&&this.capturedPendingKernels.get(this.currentSessionId).push(h)}return this.programManager.run(f,i,c,A,g),js(e.name),d}upload(e,t){this.gpuDataManager.upload(e,t)}memcpy(e,t){this.gpuDataManager.memcpy(e,t)}async download(e,t){await this.gpuDataManager.download(e,t)}alloc(e){return this.gpuDataManager.create(e).id}free(e){return this.gpuDataManager.release(e)}createKernel(e,t,r,n){let s=lI.get(e);if(!s)throw new Error(`kernel not implemented: ${e}`);let a={kernelType:e,kernelName:n,kernelEntry:s[0],attributes:[s[1],r]};this.kernels.set(t,a)}releaseKernel(e){let t=this.kernelPersistentData.get(e);if(t){for(let r of t)this.gpuDataManager.release(r.id);this.kernelPersistentData.delete(e)}this.kernelCustomData.delete(e),this.kernels.delete(e)}computeKernel(e,t,r){let n=this.kernels.get(e);if(!n)throw new Error(`kernel not created: ${e}`);let s=n.kernelType,a=n.kernelName,i=n.kernelEntry,o=n.attributes;if(this.currentKernelId!==null)throw new Error(`kernel "[${s}] ${a}" is not allowed to be called recursively`);this.currentKernelId=e,o[0]&&(o[1]=o[0](o[1]),o[0]=void 0),ur("info",()=>`[WebGPU] Start to run kernel "[${s}] ${a}"...`);let l=this.env.debug;this.temporaryData=[];try{return l&&this.device.pushErrorScope("validation"),i(t,o[1]),0}catch(u){return r.push(Promise.resolve(`[WebGPU] Kernel "[${s}] ${a}" failed. ${u}`)),1}finally{l&&r.push(this.device.popErrorScope().then(u=>u?`GPU validation error for kernel "[${s}] ${a}": ${u.message}`:null));for(let u of this.temporaryData)this.gpuDataManager.release(u.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(e,t,r,n){let s=this.sessionExternalDataMapping.get(e);s||(s=new Map,this.sessionExternalDataMapping.set(e,s));let a=s.get(t),i=this.gpuDataManager.registerExternalBuffer(r,n,a);return s.set(t,[i,r]),i}unregisterBuffers(e){let t=this.sessionExternalDataMapping.get(e);t&&(t.forEach(r=>this.gpuDataManager.unregisterExternalBuffer(r[0])),this.sessionExternalDataMapping.delete(e))}getBuffer(e){let t=this.gpuDataManager.get(e);if(!t)throw new Error(`no GPU data for buffer: ${e}`);return t.buffer}createDownloader(e,t,r){return async()=>{let n=await TA(this,e,t);return wA(n.buffer,r)}}writeTimestamp(e){this.queryType==="inside-passes"&&this.computePassEncoder.writeTimestamp(this.querySet,e)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||(typeof this.env.trace>"u"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),this.queryType!=="none"&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:this.maxDispatchNumber*2}),this.queryResolveBuffer=this.device.createBuffer({size:this.maxDispatchNumber*2*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){ur("info","captureBegin"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus="capturing"}captureEnd(){ur("info","captureEnd"),this.flush(),this.sessionStatus="default"}replay(){ur("info","replay"),this.sessionStatus="replaying";let e=this.capturedCommandList.get(this.currentSessionId),t=this.capturedPendingKernels.get(this.currentSessionId),r=e.length;this.pendingKernels=[];for(let n=0;n<r;n++){let s=this.getComputePassEncoder(),a=e[n];this.writeTimestamp(this.pendingDispatchNumber*2),s.setPipeline(a.computePipeline),s.setBindGroup(0,a.bindGroup),s.dispatchWorkgroups(...a.dispatchGroup),this.writeTimestamp(this.pendingDispatchNumber*2+1),this.pendingDispatchNumber++,this.queryType!=="none"&&this.pendingKernels.push(t[n]),(this.pendingDispatchNumber>=this.maxDispatchNumber||this.queryType==="at-passes")&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus="default"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(e){this.unregisterBuffers(e),this.capturedCommandList.has(e)&&this.capturedCommandList.delete(e),this.capturedPendingKernels.has(e)&&this.capturedPendingKernels.delete(e),this.gpuDataManager.onReleaseSession(e)}onRunStart(e){this.currentSessionId=e,this.setQueryType()}}}),hI={};Co(hI,{init:()=>fI});var Oc,mI,fI,j3=et(()=>{Gt(),$a(),qt(),X4(),Oc=class RS{constructor(t,r,n,s){this.module=t,this.dataType=r,this.data=n,this.dims=s}getFloat32Array(){if(this.dataType!==1)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(this.dataType!==7)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(this.dataType!==6)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}getUint16Array(){if(this.dataType!==10&&this.dataType!==4)throw new Error("Invalid data type");let t=$e.size(this.dims);return t===0?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,t)}reshape(t){if($e.size(t)!==$e.size(this.dims))throw new Error("Invalid new shape");return new RS(this.module,this.dataType,this.data,t)}},mI=class{constructor(e,t,r){this.module=e,this.backend=t,this.customDataOffset=0,this.customDataSize=0,this.adapterInfo=t.adapterInfo;let n=e.PTR_SIZE,s=r/e.PTR_SIZE,a=n===4?"i32":"i64";this.opKernelContext=Number(e.getValue(n*s++,a));let i=Number(e.getValue(n*s++,a));this.outputCount=Number(e.getValue(n*s++,a)),this.customDataOffset=Number(e.getValue(n*s++,"*")),this.customDataSize=Number(e.getValue(n*s++,a));let o=[];for(let l=0;l<i;l++){let u=Number(e.getValue(n*s++,a)),p=Number(e.getValue(n*s++,"*")),d=Number(e.getValue(n*s++,a)),c=[];for(let g=0;g<d;g++)c.push(Number(e.getValue(n*s++,a)));o.push(new Oc(e,u,p,c))}this.inputs=o}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}compute(e,t){let r=t?.inputs?.map(i=>typeof i=="number"?this.inputs[i]:i)??this.inputs,n=t?.outputs??[],s=(i,o,l)=>new Oc(this.module,o,this.output(i,l),l),a=(i,o)=>{let l=Vi(i,o);if(!l)throw new Error(`Unsupported data type: ${i}`);let u=l>0?this.backend.gpuDataManager.create(l).id:0;return new Oc(this.module,i,u,o)};return this.backend.run(e,r,n,s,a,this.outputCount)}output(e,t){let r=this.module.stackSave();try{let n=this.module.PTR_SIZE,s=n===4?"i32":"i64",a=this.module.stackAlloc((1+t.length)*n);this.module.setValue(a,t.length,s);for(let i=0;i<t.length;i++)this.module.setValue(a+n*(i+1),t[i],s);return this.module._JsepOutput(this.opKernelContext,e,a)}catch(n){throw new Error(`Failed to generate kernel's output[${e}] with dims [${t}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${n}`)}finally{this.module.stackRestore(r)}}},fI=async(e,t,r,n)=>{let s=t.jsepInit;if(!s)throw new Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");if(e==="webgpu"){let a=(N3(),Ol(cI)).WebGpuBackend,i=new a;await i.initialize(r,n),s("webgpu",[i,o=>i.alloc(Number(o)),o=>i.free(o),(o,l,u,p=!1)=>{if(p)ur("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(o)}, dst=${Number(l)}, size=${Number(u)}`),i.memcpy(Number(o),Number(l));else{ur("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(o)}, gpuDataId=${Number(l)}, size=${Number(u)}`);let d=t.HEAPU8.subarray(Number(o>>>0),Number(o>>>0)+Number(u));i.upload(Number(l),d)}},async(o,l,u)=>{ur("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${o}, dataOffset=${l}, size=${u}`),await i.download(Number(o),()=>t.HEAPU8.subarray(Number(l)>>>0,Number(l+u)>>>0))},(o,l,u)=>i.createKernel(o,Number(l),u,t.UTF8ToString(t._JsepGetNodeName(Number(l)))),o=>i.releaseKernel(o),(o,l,u,p)=>{ur("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${u}, kernel=${o}, contextDataOffset=${l}`);let d=new mI(t,i,Number(l));return i.computeKernel(Number(o),d,p)},()=>i.captureBegin(),()=>i.captureEnd(),()=>i.replay()])}else{let a=new Mv(r);s("webnn",[a,()=>a.reserveTensorId(),i=>a.releaseTensorId(i),async(i,o,l,u,p)=>a.ensureTensor(i,o,l,u,p),(i,o)=>{a.uploadTensor(i,o)},async(i,o)=>a.downloadTensor(i,o),(i,o)=>a.registerMLContext(i,o),!!r.trace])}}}),_I,Mh,vh,Za,wI,Bh,Gc,xh,Eh,Dh,Ih,Th,Ch,yI=et(()=>{ys(),H4(),K4(),Gt(),Ui(),gA(),ov(),_I=(e,t)=>{Lr()._OrtInit(e,t)!==0&&xr("Can't initialize onnxruntime.")},Mh=async e=>{_I(e.wasm.numThreads,Pc(e.logLevel))},vh=async(e,t)=>{Lr().asyncInit?.();let r=e.webgpu.adapter;if(t==="webgpu"){if(typeof navigator>"u"||!navigator.gpu)throw new Error("WebGPU is not supported in current environment");if(r){if(typeof r.limits!="object"||typeof r.features!="object"||typeof r.requestDevice!="function")throw new Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let n=e.webgpu.powerPreference;if(n!==void 0&&n!=="low-power"&&n!=="high-performance")throw new Error(`Invalid powerPreference setting: "${n}"`);let s=e.webgpu.forceFallbackAdapter;if(s!==void 0&&typeof s!="boolean")throw new Error(`Invalid forceFallbackAdapter setting: "${s}"`);if(r=await navigator.gpu.requestAdapter({powerPreference:n,forceFallbackAdapter:s}),!r)throw new Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}}if(t==="webnn"&&(typeof navigator>"u"||!navigator.ml))throw new Error("WebNN is not supported in current environment");{let n=(j3(),Ol(hI)).init;t==="webgpu"&&await n("webgpu",Lr(),e,r),t==="webnn"&&await n("webnn",Lr(),e)}},Za=new Map,wI=e=>{let t=Lr(),r=t.stackSave();try{let n=t.PTR_SIZE,s=t.stackAlloc(2*n);t._OrtGetInputOutputCount(e,s,s+n)!==0&&xr("Can't get session input/output count.");let a=n===4?"i32":"i64";return[Number(t.getValue(s,a)),Number(t.getValue(s+n,a))]}finally{t.stackRestore(r)}},Bh=(e,t)=>{let r=Lr(),n=r.stackSave(),s=0;try{let a=r.PTR_SIZE,i=r.stackAlloc(2*a);r._OrtGetInputOutputMetadata(e,t,i,i+a)!==0&&xr("Can't get session input/output metadata.");let o=Number(r.getValue(i,"*"));s=Number(r.getValue(i+a,"*"));let l=r.HEAP32[s/4];if(l===0)return[o,0];let u=r.HEAPU32[s/4+1],p=[];for(let d=0;d<u;d++){let c=Number(r.getValue(s+8+d*a,"*"));p.push(c!==0?r.UTF8ToString(c):Number(r.getValue(s+8+(d+u)*a,"*")))}return[o,l,p]}finally{r.stackRestore(n),s!==0&&r._OrtFree(s)}},Gc=e=>{let t=Lr(),r=t._malloc(e.byteLength);if(r===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${e.byteLength}.`);return t.HEAPU8.set(e,r),[r,e.byteLength]},xh=async(e,t)=>{let r,n,s=Lr();Array.isArray(e)?[r,n]=e:e.buffer===s.HEAPU8.buffer?[r,n]=[e.byteOffset,e.byteLength]:[r,n]=Gc(e);let a=0,i=0,o=0,l=[],u=[],p=[];try{if([i,l]=await iv(t),t?.externalData&&s.mountExternalData){let _=[];for(let w of t.externalData){let b=typeof w=="string"?w:w.path;_.push(fA(typeof w=="string"?w:w.data).then(v=>{s.mountExternalData(b,v)}))}await Promise.all(_)}for(let _ of t?.executionProviders??[])if((typeof _=="string"?_:_.name)==="webnn"){if(s.shouldTransferToMLTensor=!1,typeof _!="string"){let w=_,b=w?.context,v=w?.gpuDevice,y=w?.deviceType,$=w?.powerPreference;b?s.currentContext=b:v?s.currentContext=await s.webnnCreateMLContext(v):s.currentContext=await s.webnnCreateMLContext({deviceType:y,powerPreference:$})}else s.currentContext=await s.webnnCreateMLContext();break}a=await s._OrtCreateSession(r,n,i),s.webgpuOnCreateSession?.(a),a===0&&xr("Can't create a session."),s.jsepOnCreateSession?.(),s.currentContext&&(s.webnnRegisterMLContext(a,s.currentContext),s.currentContext=void 0,s.shouldTransferToMLTensor=!0);let[d,c]=wI(a),g=!!t?.enableGraphCapture,A=[],m=[],B=[],f=[],h=[];for(let _=0;_<d;_++){let[w,b,v]=Bh(a,_);w===0&&xr("Can't get an input name."),u.push(w);let y=s.UTF8ToString(w);A.push(y),B.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Ca(b),shape:v})}for(let _=0;_<c;_++){let[w,b,v]=Bh(a,_+d);w===0&&xr("Can't get an output name."),p.push(w);let y=s.UTF8ToString(w);m.push(y),f.push(b===0?{name:y,isTensor:!1}:{name:y,isTensor:!0,type:Ca(b),shape:v});{if(g&&t?.preferredOutputLocation===void 0){h.push("gpu-buffer");continue}let $=typeof t?.preferredOutputLocation=="string"?t.preferredOutputLocation:t?.preferredOutputLocation?.[y]??"cpu",k=s.webnnIsGraphOutput;if($==="cpu"&&k&&k(a,y)){h.push("ml-tensor-cpu-output");continue}if($!=="cpu"&&$!=="cpu-pinned"&&$!=="gpu-buffer"&&$!=="ml-tensor")throw new Error(`Not supported preferred output location: ${$}.`);if(g&&$!=="gpu-buffer")throw new Error(`Not supported preferred output location: ${$}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);h.push($)}}let P=null;return h.some(_=>_==="gpu-buffer"||_==="ml-tensor"||_==="ml-tensor-cpu-output")&&(o=s._OrtCreateBinding(a),o===0&&xr("Can't create IO binding."),P={handle:o,outputPreferredLocations:h,outputPreferredLocationsEncoded:h.map(_=>_==="ml-tensor-cpu-output"?"ml-tensor":_).map(_=>mA(_))}),Za.set(a,[a,u,p,P,g,!1]),[a,A,m,B,f]}catch(d){throw u.forEach(c=>s._OrtFree(c)),p.forEach(c=>s._OrtFree(c)),o!==0&&s._OrtReleaseBinding(o)!==0&&xr("Can't release IO binding."),a!==0&&s._OrtReleaseSession(a)!==0&&xr("Can't release session."),d}finally{s._free(r),i!==0&&s._OrtReleaseSessionOptions(i)!==0&&xr("Can't release session options."),l.forEach(d=>s._free(d)),s.unmountExternalData?.()}},Eh=e=>{let t=Lr(),r=Za.get(e);if(!r)throw new Error(`cannot release session. invalid session id: ${e}`);let[n,s,a,i,o]=r;i&&(o&&t._OrtClearBoundOutputs(i.handle)!==0&&xr("Can't clear bound outputs."),t._OrtReleaseBinding(i.handle)!==0&&xr("Can't release IO binding.")),t.jsepOnReleaseSession?.(e),t.webnnOnReleaseSession?.(e),t.webgpuOnReleaseSession?.(e),s.forEach(l=>t._OrtFree(l)),a.forEach(l=>t._OrtFree(l)),t._OrtReleaseSession(n)!==0&&xr("Can't release session."),Za.delete(e)},Dh=async(e,t,r,n,s,a,i=!1)=>{if(!e){t.push(0);return}let o=Lr(),l=o.PTR_SIZE,u=e[0],p=e[1],d=e[3],c=d,g,A;if(u==="string"&&(d==="gpu-buffer"||d==="ml-tensor"))throw new Error("String tensor is not supported on GPU.");if(i&&d!=="gpu-buffer")throw new Error(`External buffer must be provided for input/output index ${a} when enableGraphCapture is true.`);if(d==="gpu-buffer"){let f=e[2].gpuBuffer;A=Vi(Wi(u),p);{let h=o.jsepRegisterBuffer;if(!h)throw new Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');g=h(n,a,f,A)}}else if(d==="ml-tensor"){let f=e[2].mlTensor;A=Vi(Wi(u),p);let h=o.webnnRegisterMLTensor;if(!h)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');g=h(n,f,Wi(u),p)}else{let f=e[2];if(Array.isArray(f)){A=l*f.length,g=o._malloc(A),r.push(g);for(let h=0;h<f.length;h++){if(typeof f[h]!="string")throw new TypeError(`tensor data at index ${h} is not a string`);o.setValue(g+h*l,Us(f[h],r),"*")}}else{let h=o.webnnIsGraphInput,P=o.webnnIsGraphOutput;if(u!=="string"&&h&&P){let _=o.UTF8ToString(s);if(h(n,_)||P(n,_)){let w=Wi(u);A=Vi(w,p),c="ml-tensor";let b=o.webnnCreateTemporaryTensor,v=o.webnnUploadTensor;if(!b||!v)throw new Error('Tensor location "ml-tensor" is not supported without using WebNN.');let y=await b(n,w,p);v(y,new Uint8Array(f.buffer,f.byteOffset,f.byteLength)),g=y}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}else A=f.byteLength,g=o._malloc(A),r.push(g),o.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,A),g)}}let m=o.stackSave(),B=o.stackAlloc(4*p.length);try{p.forEach((h,P)=>o.setValue(B+P*l,h,l===4?"i32":"i64"));let f=o._OrtCreateTensor(Wi(u),g,A,B,p.length,mA(c));f===0&&xr(`Can't create tensor for input/output. session=${n}, index=${a}.`),t.push(f)}finally{o.stackRestore(m)}},Ih=async(e,t,r,n,s,a)=>{let i=Lr(),o=i.PTR_SIZE,l=Za.get(e);if(!l)throw new Error(`cannot run inference. invalid session id: ${e}`);let u=l[0],p=l[1],d=l[2],c=l[3],g=l[4],A=l[5],m=t.length,B=n.length,f=0,h=[],P=[],_=[],w=[],b=[],v=i.stackSave(),y=i.stackAlloc(m*o),$=i.stackAlloc(m*o),k=i.stackAlloc(B*o),W=i.stackAlloc(B*o);try{[f,h]=tv(a),Ni("wasm prepareInputOutputTensor");for(let L=0;L<m;L++)await Dh(r[L],P,w,e,p[t[L]],t[L],g);for(let L=0;L<B;L++)await Dh(s[L],_,w,e,d[n[L]],m+n[L],g);ji("wasm prepareInputOutputTensor");for(let L=0;L<m;L++)i.setValue(y+L*o,P[L],"*"),i.setValue($+L*o,p[t[L]],"*");for(let L=0;L<B;L++)i.setValue(k+L*o,_[L],"*"),i.setValue(W+L*o,d[n[L]],"*");if(c&&!A){let{handle:L,outputPreferredLocations:Q,outputPreferredLocationsEncoded:ne}=c;if(p.length!==m)throw new Error(`input count from feeds (${m}) is expected to be always equal to model's input count (${p.length}).`);Ni("wasm bindInputsOutputs");for(let re=0;re<m;re++){let ce=t[re];await i._OrtBindInput(L,p[ce],P[re])!==0&&xr(`Can't bind input[${re}] for session=${e}.`)}for(let re=0;re<B;re++){let ce=n[re];s[re]?.[3]?(b.push(_[re]),i._OrtBindOutput(L,d[ce],_[re],0)!==0&&xr(`Can't bind pre-allocated output[${re}] for session=${e}.`)):i._OrtBindOutput(L,d[ce],0,ne[ce])!==0&&xr(`Can't bind output[${re}] to ${Q[re]} for session=${e}.`)}ji("wasm bindInputsOutputs"),Za.set(e,[u,p,d,c,g,!0])}i.jsepOnRunStart?.(u),i.webnnOnRunStart?.(u);let j;c?j=await i._OrtRunWithBinding(u,c.handle,B,k,f):j=await i._OrtRun(u,$,y,m,W,B,k,f),j!==0&&xr("failed to call OrtRun().");let F=[],R=[];Ni("wasm ProcessOutputTensor");for(let L=0;L<B;L++){let Q=Number(i.getValue(k+L*o,"*"));if(Q===_[L]||b.includes(_[L])){F.push(s[L]),Q!==_[L]&&i._OrtReleaseTensor(Q)!==0&&xr("Can't release tensor.");continue}let ne=i.stackSave(),re=i.stackAlloc(4*o),ce=!1,ge,q=0;try{i._OrtGetTensorData(Q,re,re+o,re+2*o,re+3*o)!==0&&xr(`Can't access output tensor data on index ${L}.`);let V=o===4?"i32":"i64",U=Number(i.getValue(re,V));q=i.getValue(re+o,"*");let N=i.getValue(re+o*2,"*"),oe=Number(i.getValue(re+o*3,V)),fe=[];for(let je=0;je<oe;je++)fe.push(Number(i.getValue(N+je*o,V)));i._OrtFree(N)!==0&&xr("Can't free memory for tensor dims.");let De=fe.reduce((je,Me)=>je*Me,1);ge=Ca(U);let Ie=c?.outputPreferredLocations[n[L]];if(ge==="string"){if(Ie==="gpu-buffer"||Ie==="ml-tensor")throw new Error("String tensor is not supported on GPU.");let je=[];for(let Me=0;Me<De;Me++){let se=i.getValue(q+Me*o,"*"),H=i.getValue(q+(Me+1)*o,"*"),we=Me===De-1?void 0:H-se;je.push(i.UTF8ToString(se,we))}F.push([ge,fe,je,"cpu"])}else if(Ie==="gpu-buffer"&&De>0){let je=i.jsepGetBuffer;if(!je)throw new Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let Me=je(q),se=Vi(U,De);if(se===void 0||!AA(ge))throw new Error(`Unsupported data type: ${ge}`);ce=!0,F.push([ge,fe,{gpuBuffer:Me,download:i.jsepCreateDownloader(Me,se,ge),dispose:()=>{i._OrtReleaseTensor(Q)!==0&&xr("Can't release tensor.")}},"gpu-buffer"])}else if(Ie==="ml-tensor"&&De>0){let je=i.webnnEnsureTensor,Me=i.webnnIsGraphInputOutputTypeSupported;if(!je||!Me)throw new Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if(Vi(U,De)===void 0||!hA(ge))throw new Error(`Unsupported data type: ${ge}`);if(!Me(e,ge,!1))throw new Error(`preferredLocation "ml-tensor" for ${ge} output is not supported by current WebNN Context.`);let se=await je(e,q,U,fe,!1);ce=!0,F.push([ge,fe,{mlTensor:se,download:i.webnnCreateMLTensorDownloader(q,ge),dispose:()=>{i.webnnReleaseTensorId(q),i._OrtReleaseTensor(Q)}},"ml-tensor"])}else if(Ie==="ml-tensor-cpu-output"&&De>0){let je=i.webnnCreateMLTensorDownloader(q,ge)(),Me=F.length;ce=!0,R.push((async()=>{let se=[Me,await je];return i.webnnReleaseTensorId(q),i._OrtReleaseTensor(Q),se})()),F.push([ge,fe,[],"cpu"])}else{let je=bc(ge),Me=new je(De);new Uint8Array(Me.buffer,Me.byteOffset,Me.byteLength).set(i.HEAPU8.subarray(q,q+Me.byteLength)),F.push([ge,fe,Me,"cpu"])}}finally{i.stackRestore(ne),ge==="string"&&q&&i._free(q),ce||i._OrtReleaseTensor(Q)}}c&&!g&&(i._OrtClearBoundOutputs(c.handle)!==0&&xr("Can't clear bound outputs."),Za.set(e,[u,p,d,c,g,!1]));for(let[L,Q]of await Promise.all(R))F[L][2]=Q;return ji("wasm ProcessOutputTensor"),F}finally{i.webnnOnRunEnd?.(u),i.stackRestore(v),P.forEach(j=>i._OrtReleaseTensor(j)),_.forEach(j=>
vendor: 4,485 bytes, line 5633
5633i._OrtReleaseTensor(j)),w.forEach(j=>i._free(j)),f!==0&&i._OrtReleaseRunOptions(f),h.forEach(j=>i._free(j))}},Th=e=>{let t=Lr(),r=Za.get(e);if(!r)throw new Error("invalid session id");let n=r[0],s=t._OrtEndProfiling(n);s===0&&xr("Can't get an profile file name."),t._OrtFree(s)},Ch=e=>{let t=[];for(let r of e){let n=r[2];!Array.isArray(n)&&"buffer"in n&&t.push(n.buffer)}return t}}),Ja,bs,zo,ql,Xl,zc,$h,Fc,Ji,eo,bI,PI,MI,vI,BI,xI,EI,DI,II=et(()=>{ys(),yI(),Ui(),uA(),Ja=()=>!!Sr.wasm.proxy&&typeof document<"u",zo=!1,ql=!1,Xl=!1,Fc=new Map,Ji=(e,t)=>{let r=Fc.get(e);r?r.push(t):Fc.set(e,[t])},eo=()=>{if(zo||!ql||Xl||!bs)throw new Error("worker not ready")},bI=e=>{switch(e.data.type){case"init-wasm":zo=!1,e.data.err?(Xl=!0,$h[1](e.data.err)):(ql=!0,$h[0]()),zc&&(URL.revokeObjectURL(zc),zc=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let t=Fc.get(e.data.type);e.data.err?t.shift()[1](e.data.err):t.shift()[0](e.data.out);break}}},PI=async()=>{if(!ql){if(zo)throw new Error("multiple calls to 'initWasm()' detected.");if(Xl)throw new Error("previous call to 'initWasm()' failed.");if(zo=!0,Ja())return new Promise((e,t)=>{bs?.terminate(),qM().then(([r,n])=>{try{bs=n,bs.onerror=a=>t(a),bs.onmessage=bI,$h=[e,t];let s={type:"init-wasm",in:Sr};!s.in.wasm.wasmPaths&&(r||aA)&&(s.in.wasm.wasmPaths={wasm:new URL("/assets/ort-wasm-simd-threaded.jsep-C887KxcQ.wasm",self.location.href).href}),bs.postMessage(s),zc=r}catch(s){t(s)}},t)});try{await pA(Sr.wasm),await Mh(Sr),ql=!0}catch(e){throw Xl=!0,e}finally{zo=!1}}},MI=async e=>{if(Ja())return eo(),new Promise((t,r)=>{Ji("init-ep",[t,r]);let n={type:"init-ep",in:{epName:e,env:Sr}};bs.postMessage(n)});await vh(Sr,e)},vI=async e=>Ja()?(eo(),new Promise((t,r)=>{Ji("copy-from",[t,r]);let n={type:"copy-from",in:{buffer:e}};bs.postMessage(n,[e.buffer])})):Gc(e),BI=async(e,t)=>{if(Ja()){if(t?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return eo(),new Promise((r,n)=>{Ji("create",[r,n]);let s={type:"create",in:{model:e,options:{...t}}},a=[];e instanceof Uint8Array&&a.push(e.buffer),bs.postMessage(s,a)})}else return xh(e,t)},xI=async e=>{if(Ja())return eo(),new Promise((t,r)=>{Ji("release",[t,r]);let n={type:"release",in:e};bs.postMessage(n)});Eh(e)},EI=async(e,t,r,n,s,a)=>{if(Ja()){if(r.some(i=>i[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(s.some(i=>i))throw new Error("pre-allocated output tensor is not supported for proxy.");return eo(),new Promise((i,o)=>{Ji("run",[i,o]);let l=r,u={type:"run",in:{sessionId:e,inputIndices:t,inputs:l,outputIndices:n,options:a}};bs.postMessage(u,Ch(l))})}else return Ih(e,t,r,n,s,a)},DI=async e=>{if(Ja())return eo(),new Promise((t,r)=>{Ji("end-profiling",[t,r]);let n={type:"end-profiling",in:e};bs.postMessage(n)});Th(e)}}),Sh,TI,CI,U3=et(()=>{ys(),II(),Gt(),tA(),ov(),Sh=(e,t)=>{switch(e.location){case"cpu":return[e.type,e.dims,e.data,"cpu"];case"gpu-buffer":return[e.type,e.dims,{gpuBuffer:e.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[e.type,e.dims,{mlTensor:e.mlTensor},"ml-tensor"];default:throw new Error(`invalid data location: ${e.location} for ${t()}`)}},TI=e=>{switch(e[3]){case"cpu":return new An(e[0],e[2],e[1]);case"gpu-buffer":{let t=e[0];if(!AA(t))throw new Error(`not supported data type: ${t} for deserializing GPU tensor`);let{gpuBuffer:r,download:n,dispose:s}=e[2];return An.fromGpuBuffer(r,{dataType:t,dims:e[1],download:n,dispose:s})}case"ml-tensor":{let t=e[0];if(!hA(t))throw new Error(`not supported data type: ${t} for deserializing MLTensor tensor`);let{mlTensor:r,download:n,dispose:s}=e[2];return An.fromMLTensor(r,{dataType:t,dims:e[1],download:n,dispose:s})}default:throw new Error(`invalid data location: ${e[3]}`)}},CI=class{async fetchModelAndCopyToWasmMemory(e){return vI(await fA(e))}async loadModel(e,t){Aa();let r;typeof e=="string"?r=await this.fetchModelAndCopyToWasmMemory(e):r=e,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await BI(r,t),js()}async dispose(){return xI(this.sessionId)}async run(e,t,r){Aa();let n=[],s=[];Object.entries(e).forEach(d=>{let c=d[0],g=d[1],A=this.inputNames.indexOf(c);if(A===-1)throw new Error(`invalid input '${c}'`);n.push(g),s.push(A)});let a=[],i=[];Object.entries(t).forEach(d=>{let c=d[0],g=d[1],A=this.outputNames.indexOf(c);if(A===-1)throw new Error(`invalid output '${c}'`);a.push(g),i.push(A)});
5633let o=n.map((d,c)=>Sh(d,()=>`input "${this.inputNames[s[c]]}"`)),l=a.map((d,c)=>d?Sh(d,()=>`output "${this.outputNames[i[c]]}"`):null),u=await EI(this.sessionId,s,o,i,l,r),p={};for(let d=0;d<u.length;d++)p[this.outputNames[i[d]]]=a[d]??TI(u[d]);return js(),p}startProfiling(){}endProfiling(){DI(this.sessionId)}}}),$I={};Co($I,{OnnxruntimeWebAssemblyBackend:()=>Oh,initializeFlags:()=>kh,wasmBackend:()=>SI});var kh,Oh,SI,W3=et(()=>{ys(),II(),U3(),kh=()=>{(typeof Sr.wasm.initTimeout!="number"||Sr.wasm.initTimeout<0)&&(Sr.wasm.initTimeout=0);let e=Sr.wasm.simd;if(typeof e!="boolean"&&e!==void 0&&e!=="fixed"&&e!=="relaxed"&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${e}". Reset it to \`false\` and ignore SIMD feature checking.`),Sr.wasm.simd=!1),typeof Sr.wasm.proxy!="boolean"&&(Sr.wasm.proxy=!1),typeof Sr.wasm.trace!="boolean"&&(Sr.wasm.trace=!1),typeof Sr.wasm.numThreads!="number"||!Number.isInteger(Sr.wasm.numThreads)||Sr.wasm.numThreads<=0)if(typeof self<"u"&&!self.crossOriginIsolated)Sr.wasm.numThreads=1;else{let t=typeof navigator>"u"?T4("node:os").cpus().length:navigator.hardwareConcurrency;Sr.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},Oh=class{async init(e){kh(),await PI(),await MI(e)}async createInferenceSessionHandler(e,t){let r=new CI;return await r.loadModel(e,t),r}},SI=new Oh});ys(),ys(),ys();var V3="1.24.3";{let e=(W3(),Ol($I)).wasmBackend;$o("webgpu",e,5),$o("webnn",e,5),$o("cpu",e,10),$o("wasm",e,10)}Object.defineProperty(Sr.versions,"web",{value:V3,enumerable:!0});var Q3="/assets/ort-wasm-simd-threaded.jsep-C887KxcQ.wasm";const H3={48:2304,96:9216},kI={48:"gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAADj4uI+4eDgPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDvBwEA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4WEBD6BgAA/gYAAP4GAAD4AAAAAgYAAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8wcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYAAPIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO5GQkD6BgAA/gYAAP5GQkD4AAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADwAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAO+Hg4D6BgAA/gYAAP/Hw8D4AAAAAgYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPoGAAD+BgAA/gYAAP4GAAD+BgAA+AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAADwAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7AAAAAAAAAACBgIA7oaCgPoGAAD+BgAA/gYAAP4GAAD/BwMA+AAAAAAAAAACBgIA7AAAAAIGAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAwcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADwAAAAAAAAAAIGAADyJiIg9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgIA7AAAAAAAAAAAAAAAAgYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAADwAAAAAgYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO8HAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/o6KiPoGAgDuBgAA8AAAAAIGAgDuBgIA7gYCAO8HAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPAAAAAAAAAAAgYCAO4GAADyBgIA7gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAADyBgAA8gYCAO4mIiD2BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD6BgAA8gYCAO4GAADwAAAAAgYCAO4GAADyBgIA7wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7AAAAAIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO+Hg4D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDsAAAAAAAAAAIGAgDuBgAA8AAAAAIGAgDuBgIA7AAAAAAAAAAAAAAAAgYAAPIGAgDuBgIA7gYAAPAAAAACBgIA7gYCAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4GA+AAAAAAAAAACBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAACBgIA7gYCAO8HAQDwAAAAAgYCAO4GAADwAAAAAgYAAPAAAAACBgAA8gYCAOwAAAACBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+wcDAPYGAgDuBgAA8wcBAPIGAADyBgAA8gYAAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAACBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7AAAAAMHAQDyBgAA8gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAAD2BgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAOwAAAACBgIA7AAAAAAAAAACBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO9PS0j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HA
5633wD6BgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPIGAgDuBgIA7o6KiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+hoKA+gYCAOwAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPgAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAADwAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPcHAwD6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgIA9gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgIA7gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAADBwMA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+iYiIPYGAgDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAOHgYD7x8PA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4WEhD6BgIA7gYCAO4GAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAgDsAAAAAgYAAPIGAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAgDuBgAA+wcDAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAPYGAADzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6GgoD6BgIA9gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4WEBD7BwMA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAAD6BgIA7gYAAPIGAgDuBgIA7AAAAAIGAAD6RkJA+8fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+kZCQPoGAAD6BgIA84eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAO4GAAD6RkJA+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+kZCQPoGAAD6BgIA7gYCAO8HAQDwAAAAAgYCAO4GAAD6hoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/wcDAPoGAAD6BgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA7AAAAAAAAAACBgAA8gYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6Oioj6JiIg9gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO4GAADyBgIA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/BwMA+gYAAPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/8/LyPuXkZD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAAAAAAAAAAAAgYAAPAAAAACBgIA94+LiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+wcDAPYGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPdHQ0D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HA
5633wD6BgAA9gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgIA7gYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/oaCgPsHAQDzBwEA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7gYCAO4GAADyBgIA7oaCgPoGAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8PCwj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgAA8gYAAPMHAQDzBwEA8gYCAOwAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYCAO6GgID3j4uI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAgD2BgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYCAPMHAQDwAAAAAgYCAO8HAQDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8AAAAAAAAAACBgAA8wcBAPIGAADzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADzJyMg98fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgAA8wcBAPIGAADyBgIA7AAAAAAAAAACBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA84eBgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYCAO4GAgDvBwEA8gYAAPIGAgDsAAAAAgYCAO4GAgDvBwEA8wcBAPIGAgDuBgAA8gYCAOwAAAAAAAAAAAAAAAIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYAAPIGAADyBgAA8AAAAAMHAwD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgAA8gYCAO4GAAD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAgD2BgIA7gYCAOwAAAACBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAOwAAAACBgAA8gYAAPIGAADyBgIA7gYCAOwAAAAChoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPYGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAw8LCPoKBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDuBgIA7gYAAPMHAQDyBgIA7gYAAPoKBAT+BgAA/gYAAP4GAAD+BgAA+gYCAO4GAADyBgAA8AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPAAAAAAAAAAAgYAAPIGAADyBgIA7gYCAO/Py8j6BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAADzBwEA8gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO5OSkj6BgAA/gYAAP5OSkj6BgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADyBgIA7AAAAAIGAgDvBwEA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYAAPIGAAD6BgAA/gYAAP4WEBD6BgIA7gYCAO4GAADyBgAA8gYAAPIGAADwAAAAAgYCAOwAAAACBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8gYAAPIGAgDvh4OA+4eDgPoGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7",96:"gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDwAAAAAwcBAPMHAQDyBgIA8wcBAPIGAADyhoKA8gYAAPIGAADyBgAA8AAAAAIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAADzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPOXkZD7z8vI+4+LiPu3sbD6BgIA7wcBAPAAAAACBgAA8gYCAO4GAADyBgIA8gYCAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAO8HAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8oaCgPIGAgDyBgIA8wcBAPIGAgDyBgAA8wcBAPIGAgDvBwEA8wcBAPIGAgDyBgAA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAADzBwEA8wcBAPIGAgDvBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPYGAAD+BgAA/goEBP4KBAT+RkBA9gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYAAPAAAAACBgAA8AAAAAIGAgDuBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcDAPKGgoDyBgIA8oaCgPIGAgDyhoKA8gYCAOwAAAACBgAA8gYCAO4GAADyBgIA8wcBAPIGAADwAAAAAgYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8AAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAADyBgAA8paQkPoGAAD+BgAA/goEBP4GAAD/FxEQ+AAAAAAAAAACBgIA7gYAAPIGAgDsAAAAAAAAAAIGAgDuBgIA7gYAAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYAAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPKGgoDzBwEA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDyBgIA8gYCAPMHAQDzBwEA8AAAAAIGAgDuBgIA7gYAAPIGAADyhoKA8gYAAPMHAQDwAAAAAgYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAADyBgIA7gYCAOwAAAACBgIA7gYCAPMHAQDyBgAA8gYCAPIGAgDuBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPIGAADzBwEA8paSkPoGAAD+BgAA/goEBP4KBAT+hoKA+gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAAAAAAIGAgDuBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8oaCgPIGAgDyBgAA8gYCAO8HAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPMHAQDyhoKA8gYCAPMHAQDzBwEA8AAAAAAAAAACBgIA7wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAADBwEA8gYCAO8HAQDzBwEA8AAAAAIGAADyBgIA7gYCAOwAAAACBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgIA8wcBAPAAAAACBgIA7AAAAAIGAgDvBwEA85eTkPoGAAD+BgAA/gYAAP4GAAD/z8vI+gYAAPMHAQDyBgIA7gYAAPMHAQDyBgIA7gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYCAO8HAQDyBgIA8oaCgPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDsAAAAAwcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPKGgoDyBgIA8oaCgPIGAgDzBwEA8gYCAOwAAAADBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAgDyBgIA8AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDuBgIA8oaCgPIGAADyBgIA8AAAAAIGAADyBgIA8gYAAPIGAADyFhAQ+goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/iYgIPoGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAADyBgIA7gYCAO4GAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAADyBgIA7gYCAPIGAADyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADylpKQ+goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/k5KSPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADzBwEA8wcBAPKGgoDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwMA8oaCgPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA8gYCAO4GAgDsAAAAAgYAAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDvj4uI+goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/8/LyPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYCAO8HAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDzBwEA8oaCgPKGgoDyBgIA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA8gYCAO4GAgDuBgAA8wcBAPIGAgDyBgIA7gYAAPIGAADyBgAA8gYAAPAAAAACBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPKmoKD6BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4WEBD7BwEA8gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgIA8gYAAPIGAgDsAAAAAgYCAO4GAgDuBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgIA8oaCgPIGAgDyBgAA8gYAAPIGAgDyBgIA8oaCgPIGAgDyBgIA8gYCAO8HAQDyBgIA7gYCAOwAAAACBgIA7wcBAPIGAADyBgIA7wcBAPIGAgDuBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPLOysj6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP8PCwj6BgAA8AAAAAIGAgDvBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDsAAAAAgYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYCAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyhoKA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcDAPIGAgDyBgIA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO8HAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4GAADyBgIA8iYiIPYGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+JiIg9gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAgDsAAAAAgYAAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAADzBwEA8oaCgPoGAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+FhIQ+gYAAPIGAADyBgIA7AAAAAIGAADyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA7wcBAPIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8gYCAO4GAgDuBgIA7gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8AAAAAAAAAACBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgAA8gYCAOwAAAADBwEA8wcBAPMHAQDwAAAAAAAAAAIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADyBgIA7gYAAPAAAAAAAAAAAgYAAPAAAAACJiIg9goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD/z8vI+gYAAPYGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAOwAAAADBwEA8gYAAPIGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPMHAwDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAADwAAAAAgYAAPIGAgDsAAAAAgYAAPMHAQDyBgAA8gYCAOwAAAACBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8wcBAPAAAAAAAAAAAgYCAO4GAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7gYAAPMHAQDyDgoI+gYAAP4
5633KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4KCPoGAADyBgAA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPKGgoDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDvBwEA8gYCAPAAAAAAAAAAAgYCAO4GAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDwAAAAAgYCAOwAAAACBgIA7AAAAAAAAAACBgIA8gYCAPJGQkD3j4uI+goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/8/LyPpGQED2BgAA8oaCgPIGAgDyBgIA8wcBAPIGAADyBgIA8gYCAPIGAADzBwEA8gYAAPIGAgDyBgIA7wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYCAPKGgoDzBwMA8gYCAPIGAADyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8wcBAPIGAgDuBgAA8gYCAO4GAgDsAAAAAgYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAO4GAADyBgIA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYCAPKWkpD6CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP4KBAT+CgQE/goEBP4WEhD7BwEA8gYCAO8HAQDyBgIA8gYAAPMHAQDzBwMA8wcBAPIGAADyBgIA7gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAwDzBwEA8gYCAPIGAADyhoKA8wcBAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgAA8gYAAPAAAAACBgIA7gYAAPIGAgDuBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP/Py8j6JiIg9wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAO4GAADzBwEA8gYCAOwAAAACBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8paSkPoKBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+zsrI+gYCAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYCAO8HAQDyBgIA8gYCAOwAAAADBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA8gYAAPIGAgDuBgIA7AAAAAIGAADzBwEA8oaCgPIGAgDzBwEA8gYCAO8HAQDyBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDylpCQ+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4SDAz+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/iYgIPoGAgDuBgIA7gYAAPIGAgDyBgAA8gYCAO4GAADyBgAA8AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDyBgIA8gYAAPIGAgDzBwEA8gYAAPMHAQDyhoKA8oaCgPIGAgDyBgAA8gYCAOwAAAADBwEA8gYCAPIGAgDzBwEA8gYCAO4GAADyBgAA8gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYCAPIGAADyBgAA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzj4uI+goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/gYAAP4GAAD+CgQE/4+LiPpGQED3BwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYAAPIGAgDvBwEA8gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8gYCAPIWEhD6BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP5OSkj6BgAA8wcBAPMHAQDyBgAA8gYCAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgIA8gYCAPIGAADyBgIA8oaCgPIGAgDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8oaCgPIGAADyBgAA8gYCAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8AAAAAMHAQDyBgIA82djYPYKBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+DggI/goEBP4GAAD+FhAQ+wcBAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDsAAAAAAAAAAAAAAAChoKA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDyBgAA8gYCAPMHAQDyBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDwAAAAAgYCAO4GAADyJiIg95eTkPoKBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD/j4uI+sbAwPYGAgDyhoKA8oaCgPMHAQDyBgAA8AAAAAIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8oaCgPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAIGAgDvBwEA8gYCAPIGAADyBgIA7gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyjoqI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPsHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAADyBgIA8wcBAPKGgoDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgAA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgAA8wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA8wcBAPIWEhD6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+XkZD6BgAA8gYCAO4GAgDyBgIA8gYCAO8HAQDyBgIA8gYAAPMHAQDyBgIA7gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPIGAADzBwEA8gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDsAAAAAwcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8jYwMPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgIA8gYCAO4GAADyhoKA8wcBAPIGAgDyBgIA8gYCAO4GAgDyBgIA8gYCAPIGAgDyBgAA8oaCgPIGAgDzBwEA8gYCAPKGgoDzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYCAO4GAADyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAADzBwEA8gYAAPIGAgDsAAAAAwcBAPIGAADyJiIg98/LyPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD/x8PA+kZCQPYGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPIGAgDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAO8HAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPKGgoDzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgDvBwEA8wcBAPMHAQDwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/4+LiPomIiD3BwEA8gYCAO4GAgDuBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDyBgIA7gYAAPMHAQDyBgIA8oaCgPMHAQDzBwEA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgIA8gYAAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDzBwEA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgIA7wcBAPIGAgDsAAAAAgYCAO4GAADzBwEA8kZCQPePi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP+Pi4j6BgIA9gYCAO4GAgDuhoKA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDwAAAAAgYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADyxsDA94+LiPoKBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/T0tI+gYAAPcHAQDyBgAA8gYCAPIGAgDsAAAAAgYCAO8HAQDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDyBgAA8gYCAPMHAQDyBgAA8gYCAO8HAQDwAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAOwAAAACBgAA8gYCAO4GAgDuBgAA8gYAAPJmYmD3V1NQ+gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/4+LiPqGgoD2BgIA8wcDAPIGAADyBgAA8gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA7gYCAPIGAgDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDyhoKA8oaCgPMHAQDzBwEA8gYCAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYCAO8HAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA7kZCQPeXk5D6CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4OCAj+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+BgAA/gYAAP+Pi4j6JiIg9gYAAPAAAAAAAAAAAwcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgIA7wcBAPIGAADyBgIA7gYAAPIGAgDzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADyRkJA95eTkPoKBAT+CgQE/g4ICP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD/j4uI+gYCAPYGAgDuBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDzBwEA8wcBAPKGgoDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA7AAAAAMHAQDzBwEA8gYCAO4GAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgIA7AAAAAIGAADyBgAA8oaCgPMHAQDyBgIA7gYCAO4mICD7z8vI+gYAAP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/8fDwPoWEBD6BgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcDAPKGgoDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgIA8wcBAPMHAQDyBgIA75eRkPoKBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgAA8wcBAPMHAwDyhoKA8gYCAPMHAQDwAAAAAgYCAO4GAgDyBgIA8gYAAPIGAADyBgIA7gYCAPIGAADyBgIA7wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8wcBAPIGAAD2xsLA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/o6KiPpGQkD3BwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADzBwEA8iYgIPuHg4D6BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP+Pi4j7R0NA9wcBAPIGAgDuBgIA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAOwAAAACBgAA8wcBAPMHAQDyBgIA7gYAAPIGAgDyhoKA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAAD2TkpI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/hYSEPsHAQDyBgAA8gYCAO4GAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYCAPKGgoDzBwEA8gYCAOwAAAADBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8iYgIPuPi4j6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Xk5D6pqCg+gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPIGAADyBgIA8wcBAPImIiD2zsrI+gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4ICP4KBAT+DggI/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/paSkPomIiD3BwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADzBwEA8wcDAPIGAgDzBwEA8gYCAPIGAgDuBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA9g4KCPvPy8j6CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+lpKQ+kZCQPYGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgAA8wcBAPIGAADyBgAA8kZAQPYWEhD7z8vI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/4+LiPoWEhD6ZmJg9gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA7AAAAAIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgD2FhIQ+8/LyPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/o6KiPomIiD2BgAA8gYCAPIGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAADyFhAQ+w8LCPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4SDAz+BgAA/g4ICP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+xsLA+paQkPsHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA+kZCQPvPy8j6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/g4ICP+Pi4j6joqI+kZAQPoGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPKGgID3FxEQ+o6KiPvPy8j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4OCAj+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4
5633GAAD+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP+Xk5D6lpKQ+rawsPpGQkD2BgAA86ehoPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/p6Gg+4+LiPoKBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT/z8vI+8/LyPoKBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT/l5OQ+6ehoPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT/t7Gw+wcBAPKmoqD2hoCA+paSkPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP/X09D6joqI+xcREPpGQED2BgAA8wcBAPIGAgDzBwEA8wcBAPIGAADyFhAQ+oaCgPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP/Py8j6VlJQ+iYgIPoGAgDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADylpCQ+tbS0PoGAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT/DwsI+iYgIPoGAgDyhoKA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgD2joqI+gYAAP4GAAD+BgAA/g4ICP4OCAj+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/z8vI+hYSEPpmYmD3BwEA8wcBAPMHAwDzBwMA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8kZCQPYWEhD7j4uI+goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/8/LyPoOCgj6RkBA9gYAAPIGAADyBgAA8gYCAPIGAgDyhoKA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgAA8gYCAPIGAADzBwEA8gYCAPKGgoDyBgIA8gYAAPMHAQDyhoKA8oaCgPIGAADzBwEA8gYAAPIGAgDyBgIA9o6KiPoKBAT+BgAA/gYAAP4KBAT+DggI/g4ICP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP/X09D6FhIQ+oaAgPYGAgDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgAA8gYAAPIGAADwAAAAAgYAAPImIiD2npqY+gYAAP4KBAT+DggI/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPpGQkD2BgIA8wcBAPMHAQDyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAgDuBgIA7gYCAO4GAADwAAAAAgYCAO8HAQDzBwEA8oaAgPuHg4D6BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP+Xk5D6JiAg+gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPKGgoDyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADyBgAA8AAAAAIGAADyDgoI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/lZSUPrGwMD3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDzBwEA8gYCAO8HAQDyBgIA7gYAAPIGAgDuBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDwAAAAAgYAAPAAAAACBgAA8gYCAO4GAgDsAAAAAwcDAPePi4j6CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP+Pi4j6JiAg+wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPKGgoDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgAA8AAAAAAAAAADBwEA8gYCAO4mIiD2joqI+goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/s7KyPqGgID3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA8gYAAPIGAgDuBgIA8hYSEPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/l5GQ+wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYAAPImICD7z8vI+goEBP4GAAD+CgQE/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/8fDwPomICD7BwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAADzBwEA8gYCAPMHAQDyZmJg94+LiPoGAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD/j4uI+iYiIPcHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8kZCQPePi4j6CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYAAPIGAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA8oaCgPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA8gYAAPIGAADyBgIA7gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYAAPMHAQDzBwEA8wcBAPJGQkD3j4uI+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4OCAj+CgQE/g4ICP4OCAj+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/09LSPpGQkD3BwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8oaCgPMHAQDyBgIA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyhoCA909LSPoKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT/j4uI+sbAwPYGAgDyBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDyhoKA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYAAPIGAgDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8mZiYPeXk5D6CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+DggI/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgIA7wcBAPMHAQDzBwEA8wcBAPJGQkD3j4uI+g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4GAAD+DggI/4+LiPpGQkD2BgAA8gYAAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyJiIg98/LyPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT/19PQ+kZCQPYGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPKGgoDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA7hYQEPoKBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4KBAT+NjAw+oaCgPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPKGgoDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8gYCAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYAAPOXkZD6BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCgj6BgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPKGgoDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAwDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDyhoKA8oaCgPKGgoDyBgIA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADyBgAA8gYCAO8HAQDyzsrI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPMHAQDyBgAA8gYCAO4GAADyBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDuhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPMHAQDwAAAAAwcBAPMHAQDyBgAA8gYCAPIGAgDyhoKA8oaCgPKGgoDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYAAPMHAQDyBgIA7gYAAPMHAQDyBgAA94eDgPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+kZCQPYGAADyBgIA7wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA7wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDvBwEA8gYAAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAPMHAQDyBgIA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT/R0NA9gYCAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPJOSkj6BgAA/gYAAP4KBAT+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4WEhD6BgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYAAPIGAgDyBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgAA8gYAAPMHAQDyBgIA7wcBAPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8oaCgPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAO5GQED3j4uI+gYAAP4OCAj+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/5eTkPoGAgDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDyhoKA8gYCAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA8gYAAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyJiAg+goEBP4KBAT+DggI/goEBP4
5633OCAj+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/qagoPoGAADyBgAA8gYAAPIGAADyBgIA8gYCAPIGAADyBgIA8gYCAO8HAQDyBgAA8wcBAPIGAADyBgAA8gYCAPIGAADyBgIA7gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA7wcBAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDvBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADzBwEA8wcBAPAAAAACBgAA8gYCAO4GAADyBgIA7s7KyPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+lpKQ+gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA8wcBAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyBgAA8iYiIPfHw8D6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+JiIg9wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDyhoKA8wcBAPMHAQDyBgAA8gYCAPMHAQDyhoKA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDvBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIOCgj6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP6WkpD6BgIA8gYCAPIGAgDzBwEA8wcBAPKGgoDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgIA8wcBAPIGAgDyBgAA8gYCAPIGAADyBgAA8AAAAAIGAADyBgAA8wcBAPIGAADyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYCAPJGQED3z8vI+gYAAP4GAAD+DggI/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+CgQE/4+LiPpmYmD3BwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8gYAAPKGgoDzBwEA8gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8AAAAAMHAQDzBwEA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyDgoI+goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/g4KCPsHAQDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPKGgoDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAADyBgAA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAADyBgAA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8oaCgPIGAgDzBwEA8gYCAPIGAADyhoCA98/LyPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/mZiYPYGAADyBgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDvBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8hYSEPoKBAT+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+lpKQ+gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAgDuBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDzBwMA8wcBAPMHAQDzBwEA8AAAAAIGAADzBwEA8AAAAAIGAADyBgIA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPMHAQDyBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+RkJA9wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8wcBAPKGgoDzBwEA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgIA8gYAAPIGAADyBgIA7gYCAO4GAgDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDvBwEA8gYAAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDyBgAA8AAAAAIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMPCwj6BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP7Oysj6BgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8oaCgPKGgoDyBgIA8gYCAPIGAgDvBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDvBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAAD6BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP6WkJD7BwEA8wcBAPIGAADyBgAA8gYCAPKGgoDyBgIA7wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAgDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgIA8oaCgPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyhoKA8wcBAPMHAQDzz8vI+goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/4+LiPoGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDyBgAA8gYCAPIGAgDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADyBgAA8wcBAPAAAAADBwEA8wcBAPIGAgDuBgIA7gYAAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyVlJQ+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/paSkPoGAgDyBgIA8wcBAPMHAQDyhoKA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYCAPIGAADzBwEA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA8wcBAPIGAADwAAAAAgYAAPIGAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyJiAg+goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/iYgIPoGAADyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADyhoKA8gYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYAAPAAAAACBgAA8gYCAO4GAgDvBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDyhoKA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgAA8AAAAAIGAgDuBgIA8wcBAPAAAAACBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA8gYCAO8HAQDyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA88/LyPoGAAD+CgQE/goEBP4KBAT/j4uI+gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPKGgoDyBgIA8gYCAPIGAgDyBgIA7gYCAO8HAQDyBgAA8gYAAPIGAADyBgIA7gYAAPIGAgDsAAAAAAAAAAMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPKGgoDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgAA8paSkPoKBAT+CgQE/goEBP4KBAT+hoKA+gYAAPMHAQDyhoKA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgIA8oaCgPIGAADyBgAA8gYAAPMHAQDzBwEA8oaCgPIGAgDyBgIA7gYCAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPIGAADyhoKA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8gYAAPIGAgDyBgIA8wcBAPMHAQDwAAAAAgYCAO8HAQDyBgAA8gYCAOwAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8xcREPoKBAT+CgQE/goEBP4KBAT+pqCg+wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8kZAQPYGAAD+CgQE/goEBP4KBAT+JiIg9gYCAPIGAgDyBgIA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDyBgIA7gYAAPAAAAACBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPKGgoDyBgAA8wcBAPIGAADzBwEA8AAAAAIGAADyBgIA7gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPOXkZD7h4OA+8/LyPunoaD7BwEA8gYCAPIGAgDzBwEA8gYAAPIGAgDvBwEA8wcBAPIGAADyBgIA8wcBAPIGAADyBgIA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAPMHAQDyBgIA7gYAAPIGAADyBgAA8"},Gh=new Map;function K3(e){if(typeof Buffer<"u")return Uint8Array.from(Buffer.from(e,"base64"));if(typeof atob<"u"){const t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}throw new Error("No base64 decoder available in current runtime")}function q3(e){const t=Number(e);if(!(t in kI))return null;if(!Gh.has(t)){const r=K3(kI[t]),n=H3[t],s=new Float32Array(r.buffer,r.byteOffset,n);Gh.set(t,new Float32Array(s))}return new Float32Array(Gh.get(t))}const X3=3/255,Z3=.002,J3=.99,eO=255;function Zl(e,t,r,n={}){const{x:s,y:a,width:i,height:o}=r,l=Number.isFinite(n.alphaGain)&&n.alphaGain>0?n.alphaGain:1;for(let u=0;u<o;u++)for(let p=0;p<i;p++){const d=((a+u)*e.width+(s+p))*4,c=u*i+p,g=t[c];
5633if(Math.max(0,g-X3)*l<Z3)continue;const m=Math.min(g*l,J3),B=1-m;for(let f=0;f<3;f++){const P=(e.data[d+f]-m*eO)/B;e.data[d+f]=Math.max(0,Math.min(255,Math.round(P)))}}}const tO=Object.freeze({"0.5k":Object.freeze({logoSize:48,marginRight:32,marginBottom:32}),"1k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"2k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"4k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64})});function Jl(e,t,r){return r.map(([n,s,a])=>({modelFamily:e,resolutionTier:t,aspectRatio:n,width:s,height:a}))}const OI=Object.freeze([...Jl("gemini-3.x-image","0.5k",[["1:1",512,512],["1:4",256,1024],["1:8",192,1536],["2:3",424,632],["3:2",632,424],["3:4",448,600],["4:1",1024,256],["4:3",600,448],["4:5",464,576],["5:4",576,464],["8:1",1536,192],["9:16",384,688],["16:9",688,384],["21:9",792,168]]),...Jl("gemini-3.x-image","1k",[["1:1",1024,1024],["2:3",848,1264],["3:2",1264,848],["3:4",896,1200],["4:3",1200,896],["4:5",928,1152],["5:4",1152,928],["9:16",768,1376],["16:9",1376,768],["21:9",1584,672]]),...Jl("gemini-3.x-image","2k",[["1:1",2048,2048],["1:4",512,2048],["1:8",384,3072],["2:3",1696,2528],["3:2",2528,1696],["3:4",1792,2400],["4:1",2048,512],["4:3",2400,1792],["4:5",1856,2304],["5:4",2304,1856],["8:1",3072,384],["9:16",1536,2752],["16:9",2752,1536],["21:9",3168,1344]]),...Jl("gemini-3.x-image","4k",[["1:1",4096,4096],["1:4",2048,8192],["1:8",1536,12288],["2:3",3392,5056],["3:2",5056,3392],["3:4",3584,4800],["4:1",8192,2048],["4:3",4800,3584],["4:5",3712,4608],["5:4",4608,3712],["8:1",12288,1536],["9:16",3072,5504],["16:9",5504,3072],["21:9",6336,2688]]),...Jl("gemini-2.5-flash-image","1k",[["1:1",1024,1024],["2:3",832,1248],["3:2",1248,832],["3:4",864,1184],["4:3",1184,864],["4:5",896,1152],["5:4",1152,896],["9:16",768,1344],["16:9",1344,768],["21:9",1536,672]])]),rO=new Map(OI.map(e=>[`${e.width}x${e.height}`,e]));function Lc(e){const t=Number(e);if(!Number.isFinite(t))return null;const r=Math.round(t);return r>0?r:null}function nO(e,t,r){return Math.max(t,Math.min(r,e))}function GI(e){return tO[e.resolutionTier]??null}function sO(e){return`${e.logoSize}:${e.marginRight}:${e.marginBottom}`}function aO(e,t){const r=Lc(e),n=Lc(t);return!r||!n?null:rO.get(`${r}x${n}`)??null}function iO(e,t){const r=aO(e,t);return r?GI(r):null}function oO(e,t,{maxRelativeAspectRatioDelta:r=.02,maxScaleMismatchRatio:n=.12,minLogoSize:s=24,maxLogoSize:a=192,limit:i=3}={}){const o=Lc(e),l=Lc(t);if(!o||!l)return[];const u=o/l,p=OI.map(g=>{const A=GI(g);if(!A)return null;const m=o/g.width,B=l/g.height,f=(m+B)/2,h=g.width/g.height,P=Math.abs(u-h)/h,_=Math.abs(m-B)/Math.max(m,B);if(P>r||_>n)return null;const w={logoSize:nO(Math.round(A.logoSize*f),s,a),marginRight:Math.max(8,Math.round(A.marginRight*m)),marginBottom:Math.max(8,Math.round(A.marginBottom*B))},b=o-w.marginRight-w.logoSize,v=l-w.marginBottom-w.logoSize;return b<0||v<0?null:{config:w,score:P*100+_*20+Math.abs(Math.log2(Math.max(f,1e-6)))}}).filter(Boolean).sort((g,A)=>g.score-A.score),d=[],c=new Set;for(const g of p){const A=`${g.config.logoSize}:${g.config.marginRight}:${g.config.marginBottom}`;if(!c.has(A)&&(c.add(A),d.push(g.config),d.length>=i))break}return d}function zI(e,t,r){const n=[];r&&n.push(r),n.push(...oO(e,t));const s=[],a=new Set;for(const i of n){if(!i)continue;const o=sO(i);a.has(o)||(a.add(o),s.push(i))}return s}const lO=.35,FI=1e-8,Xn=(e,t,r)=>Math.max(t,Math.min(r,e));function LI(e){let t=0;for(let s=0;s<e.length;s++)t+=e[s];const r=t/e.length;let n=0;for(let s=0;s<e.length;s++){const a=e[s]-r;n+=a*a}return{mean:r,variance:n/e.length}}function Rc(e,t){if(e.length!==t.length||e.length===0)return 0;const r=LI(e),n=LI(t),s=Math.sqrt(r.variance*n.variance)*e.length;if(s<FI)return 0;let a=0;for(let i=0;i<e.length;i++)a+=(e[i]-r.mean)*(t[i]-n.mean);return a/s}function RI(e,t,r,n,s){const a=new Float32Array(s*s);for(let i=0;i<s;i++){const o=(n+i)*t+r,l=i*s;for(let u=0;u<s;u++)a[l+u]=e[o+u]}return a}function YI(e,t){const{width:r,height:n,data:s}=e,a=t.size??Math.min(t.width,t.height);if(!a||a<=0)return new Float32Array(0);if(t.x<0||t.y<0||t.x+a>r||t.y+a>n)return new Float32Array(0);const i=new Float32Array(a*a);for(let o=0;o<a;o++)for(let l=0;l<a;l++){const u=((t.y+o)*r+(t.x+l))*4;i[o*a+l]=(.2126*s[u]+.7152*s[u+1]+.0722*s[u+2])/255}return i}function uO(e){const{width:t,height:r,data:n}=e,s=new Float32Array(t*r);for(let a=0;a<s.length;a++){const i=a*4;s[a]=(.2126*n[i]+.7152*n[i+1]+.0722*n[i+2])/255}return s}function Yc(e,t,r){const n=new Float32Array(t*r);for(let s=1;s<r-1;s++)for(let a=1;a<t-1;a++){const i=s*t+a,o=-e[i-t-1]-2*e[i-1]-e[i+t-1]+e[i-t+1]+2*e[i+1]+e[i+t+1],l=-e[i-t-1]-2*e[i-t]-e[i-t+1]+e[i+t-1]+2*e[i+t]+e[i+t+1];n[i]=Math.sqrt(o*o+l*l)}return n}function NI(e,t,r,n,s){let a=0,i=0,o=0;for(let p=0;p<s;p++){const d=(n+p)*t+r;for(let c=0;c<s;c++){const g=e[d+c];a+=g,i+=g*g,o++}}if(o===0)return 0;const l=a/o,u=Math.max(0,i/o-l*l);return Math.sqrt(u)}function cO(e,t){return Yc(e,t,t)}function zh({gray:e,grad:t,width:r,height:n},s,a,i){const{x:o,y:l,size:u}=i;if(o<0||l<0||o+u>r||l+u>n)return null;const p=RI(e,r,o,l,u),d=RI(t,r,o,l,u),c=Rc(p,s),g=Rc(d,a);let A=0;if(l>
56338){const B=Math.max(0,l-u),f=Math.min(u,l-B);if(f>8){const h=NI(e,r,o,l,u),P=NI(e,r,o,B,f);P>FI&&(A=Xn(1-h/P,0,1))}}const m=Math.max(0,c)*.5+Math.max(0,g)*.3+A*.2;return{confidence:Xn(m,0,1),spatialScore:c,gradientScore:g,varianceScore:A}}function dO(e,t){const r=new Set;for(let n=e;n<=t;n+=8)r.add(n);return 48>=e&&48<=t&&r.add(48),96>=e&&96<=t&&r.add(96),[...r].sort((n,s)=>n-s)}function pO(e,t,r){return zI(e,t,r)}function Fh(e,t,r){if(e.has(r))return e.get(r);const n=r===96?t:Nc(t,96,r),s=cO(n,r),a={alpha:n,grad:s};return e.set(r,a),a}function jI(e,t,{dx:r=0,dy:n=0,scale:s=1}={}){if(t<=0)return new Float32Array(0);if(!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(s)||s<=0)return new Float32Array(0);if(r===0&&n===0&&s===1)return new Float32Array(e);const a=(l,u)=>{const p=Math.floor(l),d=Math.floor(u),c=l-p,g=u-d,A=Xn(p,0,t-1),m=Xn(d,0,t-1),B=Xn(p+1,0,t-1),f=Xn(d+1,0,t-1),h=e[m*t+A],P=e[m*t+B],_=e[f*t+A],w=e[f*t+B],b=h+(P-h)*c,v=_+(w-_)*c;return b+(v-b)*g},i=new Float32Array(t*t),o=(t-1)/2;for(let l=0;l<t;l++)for(let u=0;u<t;u++){const p=(u-o)/s+o+r,d=(l-o)/s+o+n;i[l*t+u]=a(p,d)}return i}function Nc(e,t,r){if(r<=0)return new Float32Array(0);if(t===r)return new Float32Array(e);const n=new Float32Array(r*r),s=(t-1)/Math.max(1,r-1);for(let a=0;a<r;a++){const i=a*s,o=Math.floor(i),l=Math.min(t-1,o+1),u=i-o;for(let p=0;p<r;p++){const d=p*s,c=Math.floor(d),g=Math.min(t-1,c+1),A=d-c,m=e[o*t+c],B=e[o*t+g],f=e[l*t+c],h=e[l*t+g],P=m+(B-m)*A,_=f+(h-f)*A;n[a*r+p]=P+(_-P)*u}}return n}function qs({imageData:e,alphaMap:t,region:r}){const n=YI(e,r);return n.length===0||n.length!==t.length?0:Rc(n,t)}function Fo({imageData:e,alphaMap:t,region:r}){const n=YI(e,r);if(n.length===0||n.length!==t.length)return 0;const s=r.size??Math.min(r.width,r.height);if(!s||s<=2)return 0;const a=Yc(n,s,s),i=Yc(t,s,s);return Rc(a,i)}function gO({processedImageData:e,alphaMap:t,position:r,residualThreshold:n=.22,originalImageData:s=null,originalSpatialMismatchThreshold:a=0}){return!!(qs({imageData:e,alphaMap:t,region:{x:r.x,y:r.y,size:r.width??r.size}})>=n||s&&qs({imageData:s,alphaMap:t,region:{x:r.x,y:r.y,size:r.width??r.size}})<=a)}function AO({imageData:e,alpha96:t,defaultConfig:r,threshold:n=lO}){const{width:s,height:a}=e,i=uO(e),o=Yc(i,s,a),l={gray:i,grad:o,width:s,height:a},u=new Map,d=pO(s,a,r).map($=>{const k=$.logoSize,W={size:k,x:s-$.marginRight-k,y:a-$.marginBottom-k};if(W.x<0||W.y<0||W.x+k>s||W.y+k>
5633a)return null;const j=Fh(u,t,k),F=zh(l,j.alpha,j.grad,W);return F?{...W,...F}:null}).filter(Boolean),c=d.reduce(($,k)=>!$||k.confidence>$.confidence?k:$,null);if(c&&c.confidence>=n+.08)return{found:!0,confidence:c.confidence,spatialScore:c.spatialScore,gradientScore:c.gradientScore,varianceScore:c.varianceScore,region:{x:c.x,y:c.y,size:c.size}};const g=r.logoSize,A=Xn(Math.round(g*.65),24,144),m=Xn(Math.min(Math.round(g*2.8),Math.floor(Math.min(s,a)*.4)),A,192),B=dO(A,m),f=Math.max(32,Math.round(g*.75)),h=Xn(r.marginRight-f,8,s-A-1),P=Xn(r.marginRight+f,h,s-A-1),_=Xn(r.marginBottom-f,8,a-A-1),w=Xn(r.marginBottom+f,_,a-A-1),b=[],v=$=>{b.push($),b.sort((k,W)=>W.adjustedScore-k.adjustedScore),b.length>5&&(b.length=5)};for(const $ of d)v({size:$.size,x:$.x,y:$.y,adjustedScore:$.confidence*Math.min(1,Math.sqrt($.size/96))});for(const $ of B){const k=Fh(u,t,$);for(let W=h;W<=P;W+=8){const j=s-W-$;if(!(j<0))for(let F=_;F<=w;F+=8){const R=a-F-$;if(R<0)continue;const L=zh(l,k.alpha,k.grad,{x:j,y:R,size:$});if(!L)continue;const Q=L.confidence*Math.min(1,Math.sqrt($/96));Q<.08||v({size:$,x:j,y:R,adjustedScore:Q})}}}let y=c??{x:s-r.marginRight-r.logoSize,y:a-r.marginBottom-r.logoSize,size:r.logoSize,confidence:0,spatialScore:0,gradientScore:0,varianceScore:0};for(const $ of b){const k=Xn($.size-10,A,m),W=Xn($.size+10,A,m);for(let j=k;j<=W;j+=2){const F=Fh(u,t,j);for(let R=$.x-8;R<=$.x+8;R+=2)if(!(R<0||R+j>s))for(let L=$.y-8;L<=$.y+8;L+=2){if(L<0||L+j>a)continue;const Q=zh(l,F.alpha,F.grad,{x:R,y:L,size:j});Q&&Q.confidence>y.confidence&&(y={x:R,y:L,size:j,...Q})}}}return{found:y.confidence>=n,confidence:y.confidence,spatialScore:y.spatialScore,gradientScore:y.gradientScore,varianceScore:y.varianceScore,region:{x:y.x,y:y.y,size:y.size}}}const Lh=5,hO=1,mO=.8;function Rh(e){return typeof ImageData<"u"&&e instanceof ImageData?new ImageData(new Uint8ClampedArray(e.data),e.width,e.height):{width:e.width,height:e.height,data:new Uint8ClampedArray(e.data)}}function Yn(e,t){let r=0,n=0;for(let s=0;s<t.height;s++)for(let a=0;a<t.width;a++){const i=((t.y+s)*e.width+(t.x+a))*4,o=e.data[i],l=e.data[i+1],u=e.data[i+2];o<=Lh&&l<=Lh&&u<=Lh&&r++,n++}return n>0?r/n:0}function UI(e,t){let r=0,n=0,s=0;for(let o=0;o<t.height;o++)for(let l=0;l<t.width;l++){const u=((t.y+o)*e.width+(t.x+l))*4,p=.2126*e.data[u]+.7152*e.data[u+1]+.0722*e.data[u+2];r+=p,n+=p*p,s++}const a=s>0?r/s:0,i=s>0?Math.max(0,n/s-a*a):0;return{meanLum:a,stdLum:Math.sqrt(i)}}function fO(e,t){const r=e.y-e.height;return r<0?null:{x:e.x,y:r,width:e.width,height:e.height}}function eu({originalImageData:e,referenceImageData:t,candidateImageData:r,position:n}){const s=t??e,a=s?fO(n):null,i=a?UI(s,a):null,o=i?UI(r,n):null,l=i&&o?Math.max(0,i.meanLum-o.meanLum-hO)/Math.max(1,i.meanLum):0,u=i&&o?Math.max(0,i.stdLum*mO-o.stdLum)/Math.max(1,i.stdLum):0,p=l>0,d=u>0;return{referenceTextureStats:i,candidateTextureStats:o,darknessPenalty:l,flatnessPenalty:u,texturePenalty:l*2+u*2,tooDark:p,tooFlat:d,hardReject:p&&d}}function tu(e,t,r){return{spatialScore:qs({imageData:e,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}}),gradientScore:Fo({imageData:e,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}})}}const _O=4,wO=.25,yO=.05,bO=.02,PO=.08,MO=.02;function WI(e,t){return Math.abs(e.spatialScore)+Math.max(0,e.gradientScore)*.6+(t?.texturePenalty??0)}function vO(e,t,r,n={}){const s=e&&typeof e=="object"&&"imageData"in e&&t===void 0,a=s?e.imageData:e,i=s?e.alphaMap:t,o=s?e.position:r,l=s?e:n,u=Math.max(1,l.maxPasses??_O),p=l.residualThreshold??wO,d=Math.max(0,l.startingPassIndex??0),c=Number.isFinite(l.alphaGain)&&l.alphaGain>0?l.alphaGain:1;let g=Rh(a);const A=g,m=Yn(g,o),B=Math.min(1,m+yO),f=[];let h="max-passes",P=d,_=d;for(let w=0;w<u;w++){_=d+w+1;const b=tu(g,i,o),v=eu({referenceImageData:A,candidateImageData:g,position:o}),y=Rh(g);Zl(y,i,o,{alphaGain:c});const $=tu(y,i,o),k=Yn(y,o),W=Math.abs(b.spatialScore)-Math.abs($.spatialScore),j=$.gradientScore-b.gradientScore,F=eu({referenceImageData:A,candidateImageData:y,position:o});if(k>B){h="safety-near-black";break}if(F.hardReject){h="safety-texture-collapse";break}const R=WI(b,v),L=WI($,F),Q=Math.abs($.spatialScore)>Math.abs(b.spatialScore)+.03,ne=$.gradientScore>b.gradientScore+PO,re=(F.texturePenalty??0)>(v.texturePenalty??0)+MO;if(L>R+bO&&(Q||ne||re)){h="safety-quality-regression";break}if(g=y,P=d+w+1,f.push({index:P,beforeSpatialScore:b.spatialScore,beforeGradientScore:b.gradientScore,afterSpatialScore:$.spatialScore,afterGradientScore:$.gradientScore,improvement:W,gradientDelta:j,nearBlackRatio:k}),Math.abs($.spatialScore)<=p){h="residual-low";break}}return{imageData:g,passCount:P,attemptedPassCount:_,stopReason:h,passes:f}}
5633const BO=.3,xO=.12,EO=.5,DO=.45,VI=.12,QI=40,HI=192;function Lo(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function IO({spatialScore:e,gradientScore:t}){const r=Lo(e),n=Lo(t);return r===null||n===null?{tier:"insufficient"}:r>=BO&&n>=xO?{tier:"direct-match"}:r>0||n>0?{tier:"needs-validation"}:{tier:"insufficient"}}function TO(e){if(!e||e.found!==!0)return{tier:"insufficient"};const t=Lo(e.confidence),r=Lo(e.spatialScore),n=Lo(e.gradientScore),s=Lo(e?.region?.size);return t===null||r===null||n===null||s===null?{tier:"insufficient"}:t>=EO&&r>=DO&&n>=VI&&s>=QI&&s<=HI?{tier:"direct-match"}:s>=QI&&s<=HI&&n>=VI&&(t>0||r>0)?{tier:"needs-validation"}:{tier:"insufficient"}}function jc({spatialScore:e,gradientScore:t}){return IO({spatialScore:e,gradientScore:t}).tier==="direct-match"}function Uc(e){return TO(e).tier==="direct-match"}const CO=.05,$O=.08,SO=.22,kO=.04,OO=.25,GO=.22,zO=.08,KI=[-.5,-.25,0,.25,.5],FO=[.99,1,1.01],qI=[-12,-8,-4,0,4,8,12],LO=[-12,-10,-8,-6,-4,-2,2,4,6,8,10,12];function Yh(...e){const t={};for(const r of e)!r||typeof r!="object"||Object.assign(t,r);return Object.keys(t).length>0?t:null}function XI({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,includeCatalogVariants:i=!0}){const o=i?zI(e.width,e.height,t):[t],l=[];for(const u of o){const p=u===t?r:{x:e.width-u.marginRight-u.logoSize,y:e.height-u.marginBottom-u.logoSize,width:u.logoSize,height:u.logoSize};if(p.x<0||p.y<0||p.x+p.width>e.width||p.y+p.height>e.height)continue;const d=jh(u.logoSize,{alpha48:n,alpha96:s,getAlphaMap:a});d&&l.push({config:u,position:p,alphaMap:d,source:u===t?"standard":"standard+catalog",provenance:u===t?null:{catalogVariant:!0}})}return l}function Nh(e,{directMatch:t=!1}={}){return e?t?"direct-match":e.source?.includes("validated")||e.accepted?"validated-match":"safe-removal":"insufficient"}function Wc(e){return e?Math.abs(e.processedSpatialScore)>GO||Math.max(0,e.processedGradientScore)>zO:!0}function jh(e,{alpha48:t,alpha96:r,getAlphaMap:n}={}){if(e===48)return t;if(e===96)return r;const s=typeof n=="function"?n(e):null;return s||(r?Nc(r,96,e):null)}function to({originalImageData:e,alphaMap:t,position:r,source:n,config:s,baselineNearBlackRatio:a,adaptiveConfidence:i=null,alphaGain:o=1,provenance:l=null}){if(!t||!r)return null;const u=tu(e,t,r),p=Rh(e);Zl(p,t,r,{alphaGain:o});const d=tu(p,t,r),c=Yn(p,r),g=c-a,A=u.spatialScore-d.spatialScore,m=d.gradientScore-u.gradientScore,B=eu({referenceImageData:e,candidateImageData:p,position:r}),f=B.texturePenalty;return{accepted:B.hardReject!==!0&&g<=CO&&A>=$O&&(Math.abs(d.spatialScore)<=SO||m<=kO),source:n,config:s,position:r,alphaMap:t,adaptiveConfidence:i,alphaGain:o,provenance:Yh(l),imageData:p,originalSpatialScore:u.spatialScore,originalGradientScore:u.gradientScore,processedSpatialScore:d.spatialScore,processedGradientScore:d.gradientScore,improvement:A,nearBlackRatio:c,nearBlackIncrease:g,gradientIncrease:m,tooDark:B.tooDark,tooFlat:B.tooFlat,hardReject:B.hardReject,texturePenalty:f,validationCost:Math.abs(d.spatialScore)+Math.max(0,d.gradientScore)*.6+Math.max(0,g)*3+f}}function RO(e){const t=e.filter(r=>r?.accepted);return t.length===0?null:(t.sort((r,n)=>r.validationCost!==n.validationCost?r.validationCost-n.validationCost:n.improvement-r.improvement),t[0])}function ro(e,t,r=.005){return t?.accepted&&(!e||t.validationCost<e.validationCost-r||Math.abs(t.validationCost-e.validationCost)<=r&&t.improvement>e.improvement+.01)?t:e}function YO({originalImageData:e,alphaMap:t,position:r,baselineSpatialScore:n,baselineGradientScore:s}){const a=r.width;if(!a||a<=8)return null;let i={spatialScore:n,gradientScore:s,shift:{dx:0,dy:0,scale:1},alphaMap:t};for(const u of FO)for(const p of KI)for(const d of KI){if(d===0&&p===0&&u===1)continue;const c=jI(t,a,{dx:d,dy:p,scale:u}),g=qs({imageData:e,alphaMap:c,region:{x:r.x,y:r.y,size:a}}),A=Fo({imageData:e,alphaMap:c,region:{x:r.x,y:r.y,size:a}}),m=Math.max(0,g)*.7+Math.max(0,A)*.3,B=Math.max(0,i.spatialScore)*.7+Math.max(0,i.gradientScore)*.3;m>B+.01&&(i={spatialScore:g,gradientScore:A,shift:{dx:d,dy:p,scale:u},alphaMap:c})}const o=i.spatialScore>=n+.01,l=i.gradientScore>=s+.01;return o||l?i:null}function NO({originalImageData:e,candidateSeeds:t,adaptiveConfidence:r=null}){if(!Array.isArray(t)||t.length===0)return null;let n=null;for(const s of t)for(const a of qI)for(const i of qI){if(i===0&&a===0)continue;const o={x:s.position.x+i,y:s.position.y+a,width:s.position.width,height:s.position.height};if(o.x<0||o.y<0||o.x+o.width>e.width||o.y+o.height>e.height)continue;const l=to({originalImageData:e,alphaMap:s.alphaMap,position:o,source:`${s.source}+local`,config:s.config,baselineNearBlackRatio:Yn(e,o),adaptiveConfidence:r,provenance:Yh(s.provenance,{localShift:!0})});l?.accepted&&(n=ro(n,l,.002))}return n}function jO({originalImageData:e,candidateSeeds:t,alpha48:r,alpha96:n,getAlphaMap:s,adaptiveConfidence:a=null}){if(!Array.isArray(t)||t.length===0)return null;let i=null;for(const o of t)for(const l of LO){const u=o.position.width+l;if(u<=24||u===o.position.width)continue;const p={x:e.width-o.config.marginRight-u,y:e.height-o.config.marginBottom-u,width:u,height:u};if(p.x<0||p.y<0||p.x+p.width>e.width||p.y+p.height>e.height)continue;const d=jh(u,{alpha48:r,alpha96:n,getAlphaMap:s});if(!d)continue;const c=to({originalImageData:e,alphaMap:d,position:p,source:`${o.source}+size`,config:{logoSize:u,marginRight:o.config.marginRight,marginBottom:o.config.marginBottom},baselineNearBlackRatio:Yn(e,p),adaptiveConfidence:a,provenance:Yh(o.provenance,{sizeJitter:!0})});c?.accepted&&(i=ro(i,c,.002))}return i}function UO({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,allowAdaptiveSearch:i,alphaGainCandidates:o}){let l=t.logoSize===96?s:n,u=XI({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,includeCatalogVariants:!1}),p=u.map(L=>to({originalImageData:e,alphaMap:L.alphaMap,position:L.position,source:L.source,config:L.config,baselineNearBlackRatio:Yn(e,L.position),provenance:L.provenance}
5633)).filter(Boolean),d=p.find(L=>L.source==="standard")??p[0]??null,c=d?.originalSpatialScore??null,g=d?.originalGradientScore??null,A=jc({spatialScore:c,gradientScore:g});!A&&(!d||Wc(d))&&(u=XI({originalImageData:e,config:t,position:r,alpha48:n,alpha96:s,getAlphaMap:a,includeCatalogVariants:!0}),p=u.map(L=>to({originalImageData:e,alphaMap:L.alphaMap,position:L.position,source:L.source,config:L.config,baselineNearBlackRatio:Yn(e,L.position),provenance:L.provenance})).filter(Boolean),d=p.find(L=>L.source==="standard")??p[0]??null,c=d?.originalSpatialScore??null,g=d?.originalGradientScore??null,A=jc({spatialScore:c,gradientScore:g}));let B=null,f=null,h=null,P=!1;const _=()=>{if(P||(P=!0,!i||!s)||(B=AO({imageData:e,alpha96:s,defaultConfig:t}),f=B?.confidence??null,!B?.region||!(Uc(B)||B.confidence>=OO)))return h;const L=B.region.size,Q={x:B.region.x,y:B.region.y,width:L,height:L},ne=jh(L,{alpha48:n,alpha96:s,getAlphaMap:a});if(!ne)throw new Error(`Missing alpha map for adaptive size ${L}`);const re={logoSize:L,marginRight:e.width-Q.x-L,marginBottom:e.height-Q.y-L};return h=to({originalImageData:e,alphaMap:ne,position:Q,source:"adaptive",config:re,baselineNearBlackRatio:Yn(e,Q),adaptiveConfidence:B.confidence,provenance:{adaptive:!0}}),h};let w=null,b="insufficient";A?(w=d,b="direct-match"):d?.accepted&&(w={...d,source:`${d.source}+validated`},b="validated-match");for(const L of p){if(!L||L===d)continue;const Q=jc({spatialScore:L.originalSpatialScore,gradientScore:L.originalGradientScore})?L:L.accepted?{...L,source:`${L.source}+validated`}:null,ne=w;w=ro(w,Q,.002),w!==ne&&w&&(b=jc({spatialScore:L.originalSpatialScore,gradientScore:L.originalGradientScore})?"direct-match":"validated-match")}if(b!=="direct-match"&&Wc(w)){const L=jO({originalImageData:e,candidateSeeds:u,alpha48:n,alpha96:s,getAlphaMap:a});if(L){const Q=w;w=ro(w,{...L,source:`${L.source}+validated`},.002),w!==Q&&w&&(b="validated-match")}}if(!(!i||!s)&&(!w||Wc(w)&&gO({processedImageData:w.imageData,alphaMap:w.alphaMap,position:w.position,originalImageData:e,originalSpatialMismatchThreshold:0}))&&_(),h){const L=Uc(B)?h:h.accepted?{...h,source:`${h.source}+validated`}:null,Q=w;w=ro(w,L,.002),w!==Q&&w&&(b=Uc(B)?"direct-match":"validated-match")}if(!w&&!Uc(B)){const L=NO({originalImageData:e,candidateSeeds:u,adaptiveConfidence:f});L&&(w={...L,source:`${L.source}+validated`},b="validated-match")}if(!w){const L=RO([d,h]);if(!L)return{selectedTrial:null,source:"skipped",alphaMap:l,position:r,config:t,adaptiveConfidence:f,standardSpatialScore:c,standardGradientScore:g,templateWarp:null,alphaGain:1,decisionTier:"insufficient"};w={...L,source:`${L.source}+validated`},b="validated-match"}let y=w;l=w.alphaMap,r=w.position,t=w.config;let $=w.source,k=b||Nh(w),W=null,j=w.alphaGain??1;const F=YO({originalImageData:e,alphaMap:l,position:r,baselineSpatialScore:y.originalSpatialScore,baselineGradientScore:y.originalGradientScore});if(F){const L=to({originalImageData:e,alphaMap:F.alphaMap,position:r,source:`${$}+warp`,config:t,baselineNearBlackRatio:Yn(e,r),adaptiveConfidence:f,provenance:y.provenance}),Q=ro(y,L);Q!==y&&(l=L.alphaMap,$=Q.source,y=Q,W=F.shift,k=Nh(Q,{directMatch:k==="direct-match"}))}let R=y;if(Wc(y))for(const L of o){const Q=to({originalImageData:e,alphaMap:l,position:r,source:`${$}+gain`,config:t,baselineNearBlackRatio:Yn(e,r),adaptiveConfidence:f,alphaGain:L,provenance:y.provenance});R=ro(R,Q)}return R!==y&&(y=R,$=R.source,j=R.alphaGain,k=Nh(R,{directMatch:k==="direct-match"})),{selectedTrial:y,source:$,alphaMap:l,position:r,config:t,adaptiveConfidence:f,standardSpatialScore:c,standardGradientScore:g,templateWarp:W,alphaGain:j,decisionTier:k}}function WO({selectedTrial:e,selectionSource:t=null}={}){return e?{candidateSource:typeof t=="string"&&t?t:typeof e.source=="string"?e.source:null,texturePenalty:Number.isFinite(e.texturePenalty)?e.texturePenalty:null,tooDark:e.tooDark===!0,tooFlat:e.tooFlat===!0,hardReject:e.hardReject===!0,usedSizeJitter:e.provenance?.sizeJitter===!0}:null}function ZI(e,t){const r=iO(e,t);return r?{...r}:e>1024&&t>1024?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function Vc(e,t,r){const{logoSize:n,marginRight:s,marginBottom:a}=r;return{x:e-s-n,y:t-a-n,width:n,height:n}}function Uh(e){return e===96?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function JI(e,t,r){return e.logoSize===96?r:t}function eT(e,t){return t.x>=0&&t.y>=0&&t.x+t.width<=e.width&&t.y+t.height<=e.height}function VO({imageData:e,defaultConfig:t,alpha48:r,alpha96:n,minSwitchScore:s=.25,minScoreDelta:a=.08}){if(!e||!t||!r||!n)return t;const i=Uh(48),o=t.logoSize===96?Uh(96):i,l=t.logoSize===96?i:Uh(96),u=Vc(e.width,e.height,o),p=Vc(e.width,e.height,l);if(!eT(e,u))return t;
5633const d=qs({imageData:e,alphaMap:JI(o,r,n),region:{x:u.x,y:u.y,size:u.width}});if(!eT(e,p))return o;const c=qs({imageData:e,alphaMap:JI(l,r,n),region:{x:p.x,y:p.y,size:p.width}});return c>=s&&c>d+a?l:o}const QO=.5,HO=.18,KO=.18,tT=.05,qO=.42,XO=1.2,rT=[-.25,0,.25],ZO=[.99,1,1.01],nT=[1.05,1.12,1.2,1.28,1.36,1.45,1.52,1.6,1.7,1.85,2,2.2,2.4,2.6],JO=.03,Xs=2,Qc=1,eG=8,tG=.03,rG=.03,nG=.05,sG=.18,aG=-.12,iG=.6;function no(e){return typeof ImageData<"u"&&e instanceof ImageData?new ImageData(new Uint8ClampedArray(e.data),e.width,e.height):{width:e.width,height:e.height,data:new Uint8ClampedArray(e.data)}}function oG(e){if(!e)return null;const{x:t,y:r,width:n,height:s}=e;return[t,r,n,s].every(a=>Number.isFinite(a))?{x:t,y:r,width:n,height:s}:null}function lG(e){if(!e)return null;const{logoSize:t,marginRight:r,marginBottom:n}=e;return[t,r,n].every(s=>Number.isFinite(s))?{logoSize:t,marginRight:r,marginBottom:n}:null}function sT({position:e=null,config:t=null,adaptiveConfidence:r=null,originalSpatialScore:n=null,originalGradientScore:s=null,processedSpatialScore:a=null,processedGradientScore:i=null,suppressionGain:o=null,templateWarp:l=null,alphaGain:u=1,passCount:p=0,attemptedPassCount:d=0,passStopReason:c=null,passes:g=null,source:A="standard",decisionTier:m=null,applied:B=!0,skipReason:f=null,subpixelShift:h=null,selectionDebug:P=null}={}){const _=oG(e);return{applied:B,skipReason:B?null:f,size:_?_.width:null,position:_,config:lG(t),detection:{adaptiveConfidence:r,originalSpatialScore:n,originalGradientScore:s,processedSpatialScore:a,processedGradientScore:i,suppressionGain:o},templateWarp:l??null,alphaGain:u,passCount:p,attemptedPassCount:d,passStopReason:c,passes:Array.isArray(g)?g:null,source:A,decisionTier:m,subpixelShift:h??null,selectionDebug:P}}function Wh(e){return Math.max(0,Math.min(255,Math.round(e)))}function aT({spatialScore:e,gradientScore:t,texturePenalty:r}){return Math.abs(e)+Math.max(0,t)*.6+Math.max(0,r)}function uG(e,t){const r=t+Xs*2,n=new Uint8Array(r*r);for(let s=0;s<t;s++)for(let a=0;a<t;a++){if(e[s*t+a]<JO)continue;const i=s+Xs,o=a+Xs;for(let l=-Qc;l<=Qc;l++)for(let u=-Qc;u<=Qc;u++){const p=i+l,d=o+u;p<0||d<0||p>=r||d>=r||(n[p*r+d]=255)}}return{mask:n,paddedSize:r}}function cG({sourceImageData:e,repairedImageData:t,alphaMap:r,position:n,baselineSpatialScore:s,baselineGradientScore:a}){const i=eu({referenceImageData:e,candidateImageData:t,position:n}),o=aT({spatialScore:s,gradientScore:a,texturePenalty:i.texturePenalty});if(!(s<=aG||a>=sG&&i.texturePenalty>=iG))return null;const u=n.width;if(!u||u<=8)return null;const p=no(t),{mask:d,paddedSize:c}=uG(r,u),g=Math.max(0,n.x-Xs),A=Math.max(0,n.y-Xs),m=Math.min(p.width,n.x+u+Xs),B=Math.min(p.height,n.y+u+Xs),f=m-g,h=B-A;if(f<=0||h<=0)return null;let P=no(p);const _=[[-1,0],[1,0],[0,-1],[0,1],[-1,-1],[1,-1],[-1,1],[1,1]];for(let j=0;j<eG;j++){const F=no(P);for(let R=0;R<h;R++)for(let L=0;L<f;L++){const Q=L+Math.max(0,Xs-n.x),ne=R+Math.max(0,Xs-n.y);if(Q<0||ne<0||Q>=c||ne>=c)continue;const re=ne*c+Q;if(d[re]===0)continue;const ce=g+L,ge=A+R,q=(ge*P.width+ce)*4;let V=P.data[q]*.42,U=P.data[q+1]*.42,N=P.data[q+2]*.42,oe=.42;for(const[fe,De]of _){const Ie=ce+fe,je=ge+De;if(Ie<0||je<0||Ie>=P.width||je>=P.height)continue;const Me=Ie-g,se=je-A,H=Me+Math.max(0,Xs-n.x),we=se+Math.max(0,Xs-n.y),be=H>=0&&we>=0&&H<c&&we<c&&d[we*c+H]>0,Ce=(je*P.width+Ie)*4,Se=be?.08:.12;V+=P.data[Ce]*Se,U+=P.data[Ce+1]*Se,N+=P.data[Ce+2]*Se,oe+=Se}F.data[q]=Wh(V/oe),F.data[q+1]=Wh(U/oe),F.data[q+2]=Wh(N/oe),F.data[q+3]=255}P=F}const w=tu(P,r,n),b=eu({referenceImageData:e,candidateImageData:P,position:n}),v=aT({spatialScore:w.spatialScore,gradientScore:w.gradientScore,texturePenalty:b.texturePenalty}),y=o-v>=tG,$=w.gradientScore<=a-rG,k=b.texturePenalty<i.texturePenalty-.001,W=Math.abs(w.spatialScore)<=Math.abs(s)+nG;return!y||!W||!$&&!k?null:{imageData:P,spatialScore:w.spatialScore,gradientScore:w.gradientScore}}function dG({originalScore:e,processedScore:t,suppressionGain:r}){return e>=.6&&t>=QO&&r<=HO}function pG({sourceImageData:e,alphaMap:t,position:r,alphaGain:n,originalNearBlackRatio:s,baselineSpatialScore:a,baselineGradientScore:i,baselineShift:o}){const l=r.width;if(!l||l<=8||n<XO)return null;const u=Math.min(1,s+tT),p=[n],d=Math.max(1,Number((n-.01).toFixed(2))),c=Number((n+.01).toFixed(2));d!==n&&p.push(d),c!==n&&p.push(c);const g=o?.dx??0,A=o?.dy??0,m=o?.scale??1;let B=null;for(const P of ZO){const _=Number((m*P).toFixed(4));for(const w of rT){const b=A+w;for(const v of rT){const y=g+v,$=jI(t,l,{dx:y,dy:b,scale:_});for(const k of p){const W=no(e);Zl(W,$,r,{alphaGain:k});const j=Yn(W,r);if(j>u)continue;const F=qs({imageData:W,alphaMap:$,region:{x:r.x,y:r.y,size:l}}),R=Fo({imageData:W,alphaMap:$,region:{x:r.x,y:r.y,size:l}}),L=Math.abs(F)*.6+Math.max(0,R);(!B||L<B.cost)&&(B={imageData:W,alphaMap:$,alphaGain:k,shift:{dx:y,dy:b,scale:_},spatialScore:F,gradientScore:R,nearBlackRatio:j,cost:L})}}}}if(!B)return null;const f=B.gradientScore<=i-.04,h=Math.abs(B.spatialScore)<=Math.abs(a)+.08;return!f||!h?null:B}function gG({sourceImageData:e,alphaMap:t,position:r,originalSpatialScore:n,processedSpatialScore:s,originalNearBlackRatio:a}){let i=s,o=1,l=null;const u=Math.min(1,a+tT);for(const c of nT){const g=no(e);if(Zl(g,t,r,{alphaGain:c}),Yn(g,r)>u)continue;const m=qs({imageData:g,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}});m<i&&(i=m,o=c,l=g)}const p=[];for(let c=-.05;c<=.05;
5633c+=.01)p.push(Number((o+c).toFixed(2)));for(const c of p){if(c<=1||c>=3)continue;const g=no(e);if(Zl(g,t,r,{alphaGain:c}),Yn(g,r)>u)continue;const m=qs({imageData:g,alphaMap:t,region:{x:r.x,y:r.y,size:r.width}});m<i&&(i=m,o=c,l=g)}const d=s-i;return!l||d<KO?null:{imageData:l,alphaGain:o,processedSpatialScore:i,suppressionGain:n-i}}function AG(e,t={}){const r=t.adaptiveMode||"auto",n=r!=="never"&&r!=="off",s=no(e),{alpha48:a,alpha96:i}=t;if(!a||!i)throw new Error("processWatermarkImageData requires alpha48 and alpha96");const o=ZI(s.width,s.height);let u=VO({imageData:s,defaultConfig:o,alpha48:a,alpha96:i}),p=Vc(s.width,s.height,u),d=u.logoSize===96?i:a,c="standard",g=null,A=1,m=null,B=null,f=null,h=0,P=0,_=null,w=null;const b=UO({originalImageData:s,config:u,position:p,alpha48:a,alpha96:i,getAlphaMap:t.getAlphaMap,allowAdaptiveSearch:n,alphaGainCandidates:nT});if(!b.selectedTrial)return{imageData:s,meta:sT({adaptiveConfidence:b.adaptiveConfidence,originalSpatialScore:b.standardSpatialScore,originalGradientScore:b.standardGradientScore,processedSpatialScore:b.standardSpatialScore,processedGradientScore:b.standardGradientScore,suppressionGain:0,alphaGain:1,source:"skipped",decisionTier:b.decisionTier??"insufficient",applied:!1,skipReason:"no-watermark-detected",selectionDebug:null})};p=b.position,d=b.alphaMap,u=b.config,c=b.source,g=b.adaptiveConfidence,B=b.templateWarp,A=b.alphaGain,f=b.decisionTier;const v=b.selectedTrial;let y=v.imageData,$=v.originalSpatialScore,k=v.originalGradientScore;const W=qs({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),j=Fo({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),F=Yn(y,p),R={index:1,beforeSpatialScore:$,beforeGradientScore:k,afterSpatialScore:W,afterGradientScore:j,improvement:Math.abs($)-Math.abs(W),gradientDelta:j-k,nearBlackRatio:F},L=Math.max(1,t.maxPasses??4),Q=Math.max(0,L-1),ne=Math.abs(W)<=.25,re=Q>0&&!ne?vO({imageData:y,alphaMap:d,position:p,maxPasses:Q,startingPassIndex:1,alphaGain:A}):null;y=re?.imageData??y,h=re?.passCount??1,P=re?.attemptedPassCount??1,_=re?.stopReason??(ne?"residual-low":"max-passes"),w=[R,...re?.passes??[]],h>1&&(c=`${c}+multipass`);const ce=qs({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),ge=Fo({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}});let q=ce,V=ge,U=$-q;if(dG({originalScore:$,processedScore:q,suppressionGain:U})){const oe=Yn(y,p),fe=gG({sourceImageData:y,alphaMap:d,position:p,originalSpatialScore:$,processedSpatialScore:q,originalNearBlackRatio:oe});fe&&(y=fe.imageData,A=fe.alphaGain,q=fe.processedSpatialScore,V=Fo({imageData:y,alphaMap:d,region:{x:p.x,y:p.y,size:p.width}}),U=fe.suppressionGain,c=c==="adaptive"?"adaptive+gain":`${c}+gain`)}if(q<=.3&&V>=qO){const oe=Yn(y,p),De=pG({sourceImageData:y,alphaMap:d,position:p,alphaGain:A,originalNearBlackRatio:oe,baselineSpatialScore:q,baselineGradientScore:V,baselineShift:B??{dx:0,dy:0,scale:1}});De&&(y=De.imageData,d=De.alphaMap,A=De.alphaGain,q=De.spatialScore,V=De.gradientScore,U=$-q,c=`${c}+subpixel`,m=De.shift)}const N=cG({sourceImageData:s,repairedImageData:y,alphaMap:d,position:p,baselineSpatialScore:q,baselineGradientScore:V});return N&&(y=N.imageData,q=N.spatialScore,V=N.gradientScore,U=$-q,c=`${c}+ghost`),{imageData:y,meta:sT({position:p,config:u,adaptiveConfidence:g,originalSpatialScore:$,originalGradientScore:k,processedSpatialScore:q,processedGradientScore:V,suppressionGain:U,templateWarp:B,alphaGain:A,passCount:h,attemptedPassCount:P,passStopReason:_,passes:w,source:c,decisionTier:f,applied:!0,subpixelShift:m,selectionDebug:WO({selectedTrial:v,selectionSource:b.source})})}}function hG(e,t){if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(e,t);if(typeof document<"u"){const r=document.createElement("canvas");return r.width=e,r.height=t,r}throw new Error("Canvas runtime not available")}function mG(e){const t=e.getContext("2d",{willReadFrequently:!0});if(!t)throw new Error("Failed to get 2D canvas context");return t}class Vh{constructor(){this.alphaMaps={}}static async create(){return new Vh}async getAlphaMap(t){if(t!==48&&t!==96){if(this.alphaMaps[t])return this.alphaMaps[t];const n=await this.getAlphaMap(96),s=Nc(n,96,t);return this.alphaMaps[t]=s,s}if(this.alphaMaps[t])return this.alphaMaps[t];const r=q3(t);if(!r)throw new Error(`Missing embedded alpha map for size ${t}`);return this.alphaMaps[t]=r,r}async removeWatermarkFromImage(t,r={}){const n=hG(t.width,t.height),s=mG(n);s.drawImage(t,0,0);const a=s.getImageData(0,0,n.width,n.height),i=await this.getAlphaMap(48),o=await this.getAlphaMap(96),l=AG(a,{alpha48:i,alpha96:o,adaptiveMode:r.adaptiveMode,maxPasses:r.maxPasses,getAlphaMap:u=>this.alphaMaps[u]||Nc(o,96,u)});return s.putImageData(l.imageData,0,0),n.__watermarkMeta=l.meta,n}getWatermarkInfo(t,r){const n=ZI(t,r),s=Vc(t,r,n);return{size:n.logoSize,position:s,config:n}}}const fG="extreme";function _G(e){return e==="tiny"?"tiny-migan":e===fG?"migan":"lama"}const iT="Xenova/slimsam-77-uniform",wG="briaai/RMBG-1.4",yG="Xenova/swin2SR-realworld-sr-x4-64-bsrgan-psnr",bG="ai-object-remover-models-v1",PG="ai-object-remover-migan-v1",MG="ai-object-remover-tiny-migan-v1",cr=512,ei=4,ti=64,ru=6,Ro=ti-ru*2,vG=2,BG={vision_encoder:"q8",prompt_encoder_mask_decoder:"q8"}
5633,xG=new URL("/hf/",self.location.origin).toString(),EG="https://huggingface.co/",Qh=self.location.hostname==="127.0.0.1"||self.location.hostname==="localhost";To.allowLocalModels=!1,To.remoteHost=Qh?EG:xG,To.remotePathTemplate="{model}/resolve/{revision}/",To.backends.onnx.logLevel="error",To.backends.onnx.wasm&&(To.backends.onnx.wasm.numThreads=1),Sr.logLevel="error",Sr.wasm.numThreads=1,Sr.wasm.simd=!0,Sr.wasm.wasmPaths={wasm:Q3};const DG=new URL(Qh?"https://huggingface.co/Carve/LaMa-ONNX/resolve/main/lama_fp32.onnx":"/hf/Carve/LaMa-ONNX/resolve/main/lama_fp32.onnx",self.location.origin).toString(),IG=new URL(Qh?"https://huggingface.co/andraniksargsyan/migan/resolve/main/migan_pipeline_v2.onnx":"/hf/andraniksargsyan/migan/resolve/main/migan_pipeline_v2.onnx",self.location.origin).toString(),TG=new URL("/models/migan_pipeline_v2_quint8.onnx",self.location.origin).toString();let os=null,ls=null,Zs=null,dr="wasm",Js=null,Ps=null,kn="wasm",ri=null,so="wasm",ni=null,nu=null,su=null,au=null,iu=null,ou=null,Hc=null,Kc=null,qc=null,Xc=null;function tt(e,t,r,n,s,a=0){const i={type:"status",payload:{scope:e,phase:t,stage:r,message:n,progress:a,backend:s}};self.postMessage(i)}function CG(){return Xc||(Xc=Vh.create().catch(e=>{throw Xc=null,e})),Xc}function Zc(){const t=new URL(self.location.href).searchParams.get("backend");if(t==="webgpu"||t==="wasm")return t;const r=typeof navigator<"u"?navigator.userAgent:"";return/Windows/i.test(r)?"wasm":typeof navigator<"u"&&"gpu"in navigator?"webgpu":"wasm"}function oT(){const e=new URL(self.location.href).searchParams,t=e.get("extreme-backend")??e.get("backend");return t==="webgpu"||t==="wasm"?t:qh()?"webgpu":"wasm"}function si(e){const t=ka(e);return/DXGI_ERROR_DEVICE_HUNG/i.test(t)||/Device failed at creation/i.test(t)||/device lost/i.test(t)||/device removed/i.test(t)||/webgpu/i.test(t)}function ka(e){return e instanceof Error?e.message:"Unexpected worker error."}function Hh(e,t,r,n,s){const a=new Map;return i=>{const o=i.file??i.status??"artifact",l=i.status==="done"?100:i.status==="initiate"||i.status==="download"?0:i.progress??0;a.set(o,l);const u=[...a.values()],p=u.length===0?0:u.reduce((A,m)=>A+m,0)/u.length,d=Math.round(n+(s-n)*p/100),c=i.file?.split("/").pop()??"artifact",g=i.status==="done"?`${t}: ${c} ready`:`${t}: ${c}`;tt(e,"loading",t,g,r,d)}}async function lT(e,t){const r=e.headers.get("content-length"),n=r?Number(r):null;if(!e.body){const u=await e.arrayBuffer();return t(100,u.byteLength,u.byteLength),u}const s=e.body.getReader(),a=[];let i=0;for(;;){const{done:u,value:p}=await s.read();if(u)break;if(!p)continue;a.push(p),i+=p.byteLength;const d=n?Math.min(100,Math.round(i/n*100)):0;t(d,i,n)}const o=new Uint8Array(i);let l=0;for(const u of a)o.set(u,l),l+=u.byteLength;return t(100,i,n),o.buffer}async function $G(e){if(typeof caches>"u")return null;try{return await caches.open(e)}catch{return null}}async function Kh(e){const t=await $G(e.cacheName);if(t){const a=await t.match(e.url);if(a){tt(e.scope,"loading",e.cacheReadStage,e.cacheReadMessage,e.backend,e.progressStart);const i=await lT(a,(o,l,u)=>{const p=u?`${Math.round(l/1024/1024)} / ${Math.round(u/1024/1024)} MB`:`${Math.round(l/1024/1024)} MB`;tt(e.scope,"loading",e.cacheReadStage,`Reading the ${e.modelLabel} model from local cache... ${p}`,e.backend,e.progressStart+Math.round(o*e.progressReadSpan))});return tt(e.scope,"loading",e.cacheReadStage,`${e.modelLabel} cache hit. No download is needed.`,e.backend,e.progressStart+e.progressReadSpan),i}}tt(e.scope,"loading",e.downloadStage,e.downloadMessage,e.backend,e.progressStart);const r=await fetch(e.url);if(!r.ok)throw new Error(`Unable to download model: ${r.status} ${r.statusText}`);const n=new Headers(r.headers),s=await lT(r,(a,i,o)=>{const l=o?`${Math.round(i/1024/1024)} / ${Math.round(o/1024/1024)} MB`:`${Math.round(i/1024/1024)} MB`;tt(e.scope,"loading",e.downloadStage,`Downloading the ${e.modelLabel} model... ${l}`,e.backend,e.progressStart+Math.round(a*e.progressDownloadSpan))});if(t)try{tt(e.scope,"loading",e.cacheSaveStage,e.cacheSaveMessage,e.backend,e.progressSavePoint),n.set("content-length",String(s.byteLength)),await t.put(e.url,new Response(s.slice(0),{headers:n})),tt(e.scope,"loading",e.cacheSaveStage,`The ${e.modelLabel} model is cached and will be reused next time.`,e.backend,e.progressSavePoint+1)}catch{tt(e.scope,"loading",e.cacheSaveStage,`This session can continue, but the browser could not save the ${e.modelLabel} cache.`,e.backend,e.progressSavePoint+1)}return s}async function SG(e){return Kh({backend:e,cacheName:bG,cacheReadStage:"Reading LaMa cac
5633he",cacheReadMessage:"Found a local cache. Reading the LaMa model...",cacheSaveStage:"Saving LaMa cache",cacheSaveMessage:"Saving the LaMa model to the browser cache...",downloadStage:"Downloading LaMa model",downloadMessage:"First use detected. Downloading the LaMa model...",modelLabel:"LaMa",progressStart:36,progressReadSpan:18,progressDownloadSpan:26,progressSavePoint:63,scope:"lama",url:DG})}async function kG(e){return Kh({backend:e,cacheName:PG,cacheReadStage:"Reading Extreme cache",cacheReadMessage:"Found the Extreme cache. Reading the MI-GAN detail model...",cacheSaveStage:"Saving Extreme cache",cacheSaveMessage:"Saving the MI-GAN detail model to the browser cache...",downloadStage:"Downloading Extreme model",downloadMessage:"First use detected. Downloading the MI-GAN detail model...",modelLabel:"MI-GAN",progressStart:12,progressReadSpan:20,progressDownloadSpan:34,progressSavePoint:48,scope:"general",url:IG})}async function OG(e){return Kh({backend:e,cacheName:MG,cacheReadStage:"Reading Tiny cache",cacheReadMessage:"Found the Tiny cache. Reading the smallest erase model...",cacheSaveStage:"Saving Tiny cache",cacheSaveMessage:"Saving the smallest erase model to the browser cache...",downloadStage:"Downloading Tiny model",downloadMessage:"First use detected. Downloading the tiny erase model...",modelLabel:"Tiny MI-GAN",progressStart:12,progressReadSpan:20,progressDownloadSpan:34,progressSavePoint:48,scope:"general",url:TG})}async function Jc(){return lu(dr||Zc())}async function lu(e){if(!ni||dr!==e){dr=e;const t=Hh("sam","Loading SlimSAM",dr,6,34);tt("sam","loading","Loading SlimSAM","Loading the SlimSAM model files...",dr,6),ni=Promise.all([x4.from_pretrained(iT,{device:dr,dtype:BG,progress_callback:t}),B4.from_pretrained(iT,{progress_callback:t})]).then(r=>(tt("sam","ready","Loading SlimSAM","SlimSAM is ready for mask refinement.",dr,100),r)).catch(r=>{throw ni=null,tt("sam","error","Loading SlimSAM",ka(r),dr,100),r})}return ni}async function GG(){return uT(Js||Zc())}async function uT(e){if(!nu||Js!==e){Js=e;const t=e,r=Hh("general","Loading cutout model",t,6,42);tt("general","loading","Loading cutout model","Loading the transparent background model...",t,6),nu=yM("background-removal",wG,{device:t,progress_callback:r}).then(n=>n).then(n=>(tt("general","ready","Cutout model ready","The transparent background model is ready.",t,100),n)).catch(n=>{throw nu=null,tt("general","error","Cutout model unavailable",ka(n),t,100),n})}return nu}async function zG(){return dT(Ps||cT())}function cT(){const e=new URL(self.location.href).searchParams,t=e.get("upscale-backend")??e.get("backend");return t==="webgpu"||t==="wasm"?t:qh()?"webgpu":"wasm"}async function dT(e){if(!su||Ps!==e){Ps=e;const t=e,r=Hh("general","Loading 4x model",t,6,40);tt("general","loading","Loading 4x model","Loading the 4x image enlarger...",t,6),su=yM("image-to-image",yG,{device:t,progress_callback:r}).then(n=>n).then(n=>(tt("general","ready","4x model ready","The AI Image Upscaler is ready.",t,100),n)).catch(n=>{throw su=null,tt("general","error","4x model unavailable",ka(n),t,100),n})}return su}async function FG(e){iu||(iu=SG(e).catch(r=>{throw iu=null,r}));const t={executionProviders:e==="webgpu"?["webgpu","wasm"]:["wasm"],logSeverityLevel:3};try{kn=e,tt("lama","loading","Initializing LaMa","Initializing the LaMa inference session...",e,64);const r=await iu;return tt("lama","loading","Initializing LaMa","Compiling the LaMa model...",e,76),await So.create(r,t)}catch(r){if(e!=="webgpu")throw r;kn="wasm",tt("lama","loading","Initializing LaMa","WebGPU could not initialize LaMa. Falling back to WASM...","wasm",76);const n=await iu;return So.create(n,{executionProviders:["wasm"],logSeverityLevel:3})}}async function pT(){return AT(kn||Zc())}async function LG(){qc||(qc=OG("wasm").catch(t=>{throw qc=null,t})),so="wasm",tt("general","loading","Preparing Tiny model","Initializing the tiny erase model...",so,52);const e=await qc;return tt("general","loading","Preparing Tiny model","Compiling the tiny erase model...",so,68),So.create(e,{executionProviders:["wasm"],logSeverityLevel:3})}async function gT(){return Kc||(Kc=LG().then(e=>(tt("general","ready","Tiny ready","The tiny erase model is ready.",so,100),e)).catch(e=>{throw Kc=null,tt("general","error","Tiny unavailable",ka(e),so,100),e})),Kc}async function AT(e){return(!au||kn!==e)&&(kn=e,tt("lama","loading","Preparing LaMa","Preparing the LaMa erase model...",kn,36),au=FG(kn).then(t=>(tt("lama","ready","Preparing LaMa","LaMa is ready for object removal.",kn,100),t)).catch(t=>{throw au=null,tt("lama","error","Preparing LaMa",ka(t),kn,100),t})),au}function qh(){return typeof navigator<"u"&&"gpu"in navigator}function hT(){ou=null,ri=null}function mT(e){const t=ka(e);return si(e)||/can't perform binary op on the given tensors/i.test(t)||/convg2g/i.test(t)||/generator\/model/i.test(t)||/\[add\]/i.test(t)}async function RG(e){Hc||(Hc=kG(e).catch(r=>{throw Hc=null,r})),ri=e,tt("general","loading","Preparing Extreme model","Initializing the MI-GAN detail engine for Extreme cleanup...",e,52);const t=await Hc;return tt("general","loading","Preparing Extreme model","Compiling the MI-GAN detail model...",e,68),So.create(t,{executionProviders:e==="webgpu"?["webgpu"]:["wasm"],logSeverityLevel:3})}async function ed(e){const t=e==="webgpu"&&!qh()?"wasm":e;return(!ou||ri!==t)&&(ri=t,tt("general","loading","Preparing Extreme model",t==="webgpu"?"Preparing the MI-GAN detail model for Extreme cleanup...":"Preparing the MI-GAN detail model with the stable WASM runtime...",t,8),ou=RG(t).then(r=>(tt("general","ready","Extreme ready","Extreme cleanup is ready for high-detail inpainting.",t,100),r)).catch(r=>{throw ou=null,ri=null,tt("general","error","Extreme unavailable",ka(r),t,100),r})),ou}async function fT(){const e=oT();tt("general","loading","Preparing Extreme","Preparing the high-detail cleanup engine for Extreme cleanup...",e,4);let t=e;try{await ed(e),t=ri||e}catch(r){if(e==="webgpu"&&mT(r))hT(),tt("general","loading","Falling back to WASM","WebGPU is unstable on this device. Falling back to WASM for MI-GAN...","wasm",36),await ed("wasm"),t="wasm";else throw r}return tt("general","ready","Extreme ready","Extreme cleanup is ready. You can start the MI-GAN erase now.",t,100),{backend:t,qualityMo
5633de:"extreme"}}async function YG(e){if(e!=="fast"&&e!=="extreme"&&e!=="tiny")throw new Error(`Unsupported inpaint quality mode: ${String(e)}`);const t=_G(e);return t==="migan"?fT():t==="tiny-migan"?(await gT(),{backend:so,qualityMode:e}):(await pT(),{backend:kn,qualityMode:e})}function NG(e){return new Uint8Array(e)}function Nt(e,t,r){return Math.min(Math.max(e,t),r)}function td(e){let t=0;for(const r of e)r>0&&(t+=1);return t}function ai(e,t,r){let n=t,s=r,a=-1,i=-1;for(let o=0;o<r;o+=1)for(let l=0;l<t;l+=1)e[o*t+l]!==0&&(l<n&&(n=l),l>a&&(a=l),o<s&&(s=o),o>i&&(i=o));return a<0||i<0?null:{minX:n,minY:s,maxX:a,maxY:i}}function _T(e){const t=new Set,r=[];for(const n of e){const s=`${n[0]}:${n[1]}`;t.has(s)||(t.add(s),r.push(n))}return r}function jG(e,t,r,n){const s=[];for(let o=0;o<4;o+=1)for(let l=0;l<4;l+=1){const u=Nt(Math.round(n.minX+(l+.5)/4*(n.maxX-n.minX)),0,t-1),p=Nt(Math.round(n.minY+(o+.5)/4*(n.maxY-n.minY)),0,r-1);e[p*t+u]>0&&s.push([u,p])}return s.length===0&&s.push([Math.round((n.minX+n.maxX)/2),Math.round((n.minY+n.maxY)/2)]),_T(s).slice(0,8)}function wT(e,t,r,n){const[s,a,i,o]=n,l=Math.max(8,Math.round(Math.max(t,r)*.012)),u=[[s-l,a-l],[i+l,a-l],[s-l,o+l],[i+l,o+l],[Math.round((s+i)/2),a-l],[Math.round((s+i)/2),o+l],[s-l,Math.round((a+o)/2)],[i+l,Math.round((a+o)/2)]];return _T(u.map(([p,d])=>[Nt(p,0,t-1),Nt(d,0,r-1)]).filter(([p,d])=>e[d*t+p]===0)).slice(0,6)}function UG(e,t,r){const n=ai(e,t,r);if(!n)return null;const s=Math.max(12,Math.round(Math.max(t,r)*.018)),a=[Nt(n.minX-s,0,t-1),Nt(n.minY-s,0,r-1),Nt(n.maxX+s,0,t-1),Nt(n.maxY+s,0,r-1)];return{positivePoints:jG(e,t,r,n),negativePoints:wT(e,t,r,a),box:a}}function WG(e,t,r,n,s){const a=Nt(Math.round(e),0,r-1),i=Nt(Math.round(t),0,n-1),o=Nt(Math.round(s),5,Math.round(Math.max(r,n)*.48)),l=[Nt(a-o,0,r-1),Nt(i-o,0,n-1),Nt(a+o,0,r-1),Nt(i+o,0,n-1)];return{positivePoints:[[a,i]],negativePoints:wT(new Uint8Array(r*n),r,n,l),box:l,seedPoint:[a,i]}}function VG(e,t,r,n,s,a,i){const o=Nt(Math.round(Math.min(e,r)),0,s-1),l=Nt(Math.round(Math.min(t,n)),0,a-1),u=Nt(Math.round(Math.max(e,r)),0,s-1),p=Nt(Math.round(Math.max(t,n)),0,a-1),d=Nt(Math.round(i),0,Math.round(Math.max(s,a)*.22));return{box:[Nt(o-d,0,s-1),Nt(l-d,0,a-1),Nt(u+d,0,s-1),Nt(p+d,0,a-1)],focusBox:[o,l,u,p]}}function yT(e,t,r,n,s,a){const i=e.channels,[o,l,u,p]=a.box,d=Math.max(1,u-o+1),c=Math.max(1,p-l+1),g=d*c,A=Math.max(1,td(r));let m=0,B=-1/0,f=0;for(let P=0;P<i;P+=1){let _=0,w=0,b=0;for(let W=0;W<n*s;W+=1){if(e.data[W*i+P]===0)continue;_+=1;const j=W%n,F=Math.floor(W/n);r[W]>0&&(w+=1),j>=o&&j<=u&&F>=l&&F<=p&&(b+=1)}const v=w/A,y=_===0?0:b/_,$=Math.max(0,_/g-2.6)*.07,k=Number(t[P]??0)*.52+v*.34+y*.22-$;k>B&&(m=P,B=k,f=v)}const h=new Uint8Array(n*s);for(let P=0;P<n*s;P+=1)(e.data[P*i+m]>0||r[P]>0)&&(h[P]=255);return{mask:h,coverage:f}}function QG(e,t,r,n,s,a){const i=Nt(Math.round(n),0,t-1),o=Nt(Math.round(s),0,r-1),l=o*t+i;if(e[l]>0)return[i,o];for(let u=1;u<=a;u+=1)for(let p=-u;p<=u;p+=1)for(let d=-u;d<=u;d+=1){if(Math.abs(d)!==u&&Math.abs(p)!==u)continue;const c=i+d,g=o+p;if(!(c<0||c>=t||g<0||g>=r)&&e[g*t+c]>0)return[c,g]}return null}function rd(e,t,r,n,s){const a=Nt(n,0,t-1),i=Nt(s,0,r-1),o=i*t+a;if(e[o]===0)return null;const l=new Uint8Array(e.length),u=[o];l[o]=255;let p=0,d=0,c=a,g=i,A=a,m=i;for(;p<u.length;){const B=u[p++],f=B%t,h=Math.floor(B/t);d+=1,f<c&&(c=f),f>A&&(A=f),h<g&&(g=h),h>m&&(m=h);const P=[B-1,B+1,B-t,B+t];for(const _ of P){const w=_%t,b=Math.floor(_/t);_<0||_>=e.length||w<0||w>=t||b<0||b>=r||Math.abs(w-f)+Math.abs(b-h)!==1||l[_]>0||e[_]===0||(l[_]=255,u.push(_))}}return{box:{maxX:A,maxY:m,minX:c,minY:g},mask:l,pixels:d}}function bT(e,t,r,n,s,a){const i=e.channels,[o,l]=s.seedPoint,[u,p,d,c]=s.box,g=Math.max(1,r*n),A=Math.max(1,(d-u+1)*(c-p+1)),m=Math.max(4,Math.round(Math.min(r,n)*.012));let B=null,f=null,h=-1/0,P=0;for(let w=0;w<i;w+=1){const b=new Uint8Array(r*n);for(let V=0;V<r*n;V+=1)e.data[V*i+w]>0&&(b[V]=255);const v=QG(b,r,n,o,l,m);if(!v)continue;const y=rd(b,r,n,v[0],v[1]);if(!y||y.pixels===0)continue;let $=0;for(let V=0;V<y.mask.length;V+=1){if(y.mask[V]===0)continue;const U=V%r,N=Math.floor(V/r);U>=u&&U<=d&&N>=p&&N<=c&&($+=1)}const k=y.box.maxX-y.box.minX+1,W=y.box.maxY-y.box.minY+1,j=Math.max(1,k*W),F=$/y.pixels,R=y.pixels/j,L=y.pixels/g,Q=y.pixels/A,ne=+(y.box.minX===0)+ +(y.box.maxX===r-1)+ +(y.box.minY===0)+ +(y.box.maxY===n-1),re=v[0]===o&&v[1]===l?0:.08,ce=Math.max(0,L-.34)*.9+Math.max(0,Q-1.65)*.32,ge=ne*.035,q=Number(t[w]??0)*.54+F*.28+R*.18-ce-ge-re;q>
5633h&&(h=q,B=y.mask,f=y.box,P=F)}if(!B)throw new Error("No clear object was found at that point. Try another click or increase the selection scope.");const _=Xh(B,r,n,"selection",f);return{mask:a?bn(_,r,n,vG):_,coverage:P}}function HG(e,t,r,n){const[s,a,i,o]=n,l=Math.round((s+i)/2),u=Math.round((a+o)/2);let p=null,d=1/0;for(let c=a;c<=o;c+=1)for(let g=s;g<=i;g+=1){if(g<0||g>=t||c<0||c>=r||e[c*t+g]===0)continue;const A=Math.abs(l-g)+Math.abs(u-c);A<d&&(d=A,p=[g,c])}return p}function PT(e,t,r,n,s){const a=e.channels,[i,o,l,u]=s.focusBox,[p,d,c,g]=s.box,A=Math.max(1,(l-i+1)*(u-o+1)),m=Math.max(1,(c-p+1)*(g-d+1));let B=null,f=null,h=-1/0,P=0;for(let w=0;w<a;w+=1){const b=new Uint8Array(r*n);for(let Q=0;Q<r*n;Q+=1)e.data[Q*a+w]>0&&(b[Q]=255);const v=HG(b,r,n,s.focusBox);if(!v)continue;const y=rd(b,r,n,v[0],v[1]);if(!y||y.pixels===0)continue;let $=0,k=0;for(let Q=0;Q<y.mask.length;Q+=1){if(y.mask[Q]===0)continue;const ne=Q%r,re=Math.floor(Q/r);ne>=i&&ne<=l&&re>=o&&re<=u&&($+=1),ne>=p&&ne<=c&&re>=d&&re<=g&&(k+=1)}const W=$/y.pixels,j=k/y.pixels,F=$/A,R=Math.max(0,y.pixels/m-2.4)*.11,L=Number(t[w]??0)*.5+W*.24+j*.16+F*.18-R;L>h&&(h=L,B=y.mask,f=y.box,P=W)}if(!B)throw new Error("No clear object was found inside that box. Try a tighter box or switch to click select.");return{mask:Xh(B,r,n,"selection",f),coverage:P}}function bn(e,t,r,n,s){if(n<=0)return e;const a=s??ai(e,t,r);if(!a)return e;const i=new Uint8Array(e);for(let o=a.minY;o<=a.maxY;o+=1)for(let l=a.minX;l<=a.maxX;l+=1){if(e[o*t+l]===0)continue;const u=Math.max(0,o-n),p=Math.min(r-1,o+n),d=Math.max(0,l-n),c=Math.min(t-1,l+n);for(let g=u;g<=p;g+=1){const A=g*t;for(let m=d;m<=c;m+=1)i[A+m]=255}}return i}function KG(e,t,r,n){const s=r.maxX-r.minX+1,a=r.maxY-r.minY+1,i=Math.max(1,Math.min(s,a)),l=Math.max(s,a)>=i*2.2,u=Math.max(e,t);return n==="selection"?Nt(1+Math.round(i*.015)+Number(l),1,Math.max(3,Math.min(8,Math.round(u*.005)))):Nt(2+Math.round(i*.02)+Number(l),2,Math.max(4,Math.min(12,Math.round(u*.008))))}function Xh(e,t,r,n,s){const a=s??ai(e,t,r);if(!a)return e;const i=KG(t,r,a,n);return bn(e,t,r,i,a)}function qG(e){if(e.channels!==4)throw new Error("Expected an RGBA image for cutout export.");const t=new Uint8Array(e.width*e.height);for(let r=0,n=3;r<t.length;r+=1,n+=4)t[r]=e.data[n];return t}function XG(e,t){const r=e.clone().rgba();for(let n=0,s=3;n<t.length;n+=1,s+=4)r.data[s]=t[n];return r}function ZG(e,t,r,n){const s=ai(t,r,n);if(!s)throw new Error("Unable to locate the selected subject area.");const a=s.maxX-s.minX+1,i=s.maxY-s.minY+1,o=(s.minX+s.maxX)/2,l=(s.minY+s.maxY)/2,u=Math.max(1,td(t)),p=Nt(Math.round(Math.max(a,i)*.04),4,14),d=bn(t,r,n,p,s),c=Math.max(1,td(d)),g=Nt(Math.round(a*.12),10,30),A=Nt(Math.round(i*.1),10,34),m={minX:Nt(s.minX-g,0,r-1),minY:Nt(s.minY-A,0,n-1),maxX:Nt(s.maxX+g,0,r-1),maxY:Nt(s.maxY+A,0,n-1)},B=ez(m,r,n),f=[160,128,96,64,32];let h=null,P=null,_=-1/0;for(const y of f){const $=new Uint8Array(e.length);for(let W=0;W<e.length;W+=1)e[W]>=y&&($[W]=255);const k=new Uint8Array($.length);for(let W=0;W<$.length;W+=1){if($[W]===0||k[W]>0)continue;const j=W%r,F=Math.floor(W/r),R=rd($,r,n,j,F);if(!R)continue;let L=0,Q=0,ne=0;for(let H=0;H<R.mask.length;H+=1)R.mask[H]!==0&&(k[H]=255,t[H]>0&&(L+=1),d[H]>0&&(Q+=1),B[H]>0&&(ne+=1));if(L===0&&Q===0)continue;const re=(R.box.minX+R.box.maxX)/2,ce=(R.box.minY+R.box.maxY)/2,ge=Math.hypot(re-o,ce-l),q=L/u,V=Q/c,U=R.pixels/u,N=Math.max(0,m.minX-R.box.minX),oe=Math.max(0,m.minY-R.box.minY),fe=Math.max(0,R.box.maxX-m.maxX),De=Math.max(0,R.box.maxY-m.maxY),Ie=N*1.2+oe*.8+fe*1.5+De*.8,je=Math.max(0,U-1.7),Me=Math.max(0,.52-U),se=q*12e6+V*18e5+ne*2800+y*1100-Ie*12e3-ge*520-je*22e5-Me*16e5;se>_&&(_=se,h=R.mask,P=R.box)}}if(!h||!P)throw new Error("Unable to isolate the selected subject.");const w=bn(h,r,n,Nt(Math.round(p*.8),5,16),P),b=new Uint8Array(h.length);for(let y=0;y<b.length;y+=1)w[y]>0&&d[y]>0&&(b[y]=255);const v=ai(b,r,n)||P;return{mask:h,box:v,supportMask:b}}function JG(e,t,r,n,s){const a=tz(r,n,s),i=new Uint8Array(e.length);for(let o=0;o<e.length;o+=1){if(t[o]===0||a[o]===0){i[o]=0;continue}i[o]=Math.min(e[o],a[o])}return rz(i,r,n,s)}function ez(e,t,r){const n=new Uint8Array(t*r);for(let s=e.minY;s<=e.maxY;s+=1){const a=s*t;for(let i=e.minX;i<=e.maxX;i+=1)n[a+i]=255}return n}function tz(e,t,r){const n=new Uint8Array(e.length),s=bn(e,t,r,1),a=bn(e,t,r,2),i=bn(e,t,r,3);for(let o=0;o<e.length;o+=1)e[o]>0?n[o]=255:s[o]>0?n[o]=192:a[o]>0?n[o]=92:i[o]>0&&(n[o]=28);return n}function rz(e,t,r,n){const s=new Uint8Array(e.length);for(let o=0;o<e.length;o+=1)e[o]>=64&&(s[o]=255);const a=new Uint8Array(s.length),i=new Uint8Array(e.length);for(let o=0;o<s.length;o+=1){if(s[o]===0||a[o]>0)continue;const l=o%r,u=Math.floor(o/r),p=rd(s,r,n,l,u);if(!p)continue;let d=!1;for(let c=0;c<p.mask.length;c+=1)p.mask[c]!==0&&(a[c]=255,t[c]>0&&(d=!0));if(d)for(let c=0;c<p.mask.length;c+=1)p.mask[c]>0&&(i[c]=e[c])}for(let o=0;o<e.length;o+=1)t[o]>0&&e[o]>i[o]&&(i[o]=e[o]);return i}function nz(e,t){const r=bn(t,e.width,e.height,6),n=bn(t,e.width,e.height,2);let s=0,a=0,i=0,o=0,l=0,u=0,p=0;for(let h=0,P=0;h<t.length;h+=1,P+=4){if(r[h]===0||n[h]>0)continue;const _=e.data[P],w=e.data[P+1],b=e.data[P+2];s+=_,a+=w,i+=b,o+=_*_,l+=w*w,u+=b*b,p+=1}if(!p){const h=[0,e.width-1,(e.height-1)*e.width,e.height*e.width-1];for(const P of h){const _=P*4,w=e.data[_],b=e.data[_+1],v=e.data[_+2];s+=w,a+=b,i+=v,o+=w*w,l+=b*b,u+=v*v,p+=1}}
5633const d=Math.max(1,p),c=s/d,g=a/d,A=i/d,m=Math.sqrt(Math.max(0,o/d-c*c)),B=Math.sqrt(Math.max(0,l/d-g*g)),f=Math.sqrt(Math.max(0,u/d-A*A));return{red:Math.round(c),green:Math.round(g),blue:Math.round(A),uniformity:(m+B+f)/3}}function Zh(e,t,r,n){if(r>=254)return e;const s=Math.max(r/255,.08),a=(e-(1-s)*t)/s,i=Nt(a,0,255),o=Nt((1-s)*1.6,0,1),l=n<=14?1:n<=28?.82:n<=44?.58:.3,u=o*l;return Math.round(Nt(e*(1-u)+i*u,0,255))}function sz(e,t,r){const n=nz(e,r),s=e.clone().rgba();for(let a=0,i=0;a<t.length;a+=1,i+=4){const o=t[a];if(o===0){s.data[i]=0,s.data[i+1]=0,s.data[i+2]=0,s.data[i+3]=0;continue}s.data[i]=Zh(s.data[i],n.red,o,n.uniformity),s.data[i+1]=Zh(s.data[i+1],n.green,o,n.uniformity),s.data[i+2]=Zh(s.data[i+2],n.blue,o,n.uniformity),s.data[i+3]=o}return s}function uu(e,t,r,n,s,a){const i=new Uint8Array(s*a);for(let o=0;o<a;o+=1){const l=(n+o)*t+r,u=o*s;i.set(e.subarray(l,l+s),u)}return i}function az(e,t,r){const n=bn(e,t,r,16),s=bn(e,t,r,8),a=new Uint8Array(e.length);for(let i=0;i<a.length;i+=1)n[i]>0&&s[i]===0&&(a[i]=255);return a}function MT(e,t,r,n,s,a){if(s<=n)return new Uint8Array(e.length);const i=ai(e,t,r);if(!i)return new Uint8Array(e.length);const o=bn(e,t,r,s,i),l=e,u=new Uint8Array(e.length);for(let p=0;p<u.length;p+=1)o[p]>0&&l[p]===0&&(u[p]=255);return u}function iz(e,t,r,n,s,a){const i=ai(e,n,s);if(!i)throw new Error("Mask is empty. Paint an object before inpainting.");const o=i.maxX-i.minX+1,l=i.maxY-i.minY+1,u=Nt(Math.round(Math.max(o,l)*a.paddingMultiplier),a.minPadding,Math.max(a.minPadding,Math.round(Math.max(n,s)*a.maxPaddingRatio))),p=Math.max(0,i.minX-u),d=Math.max(0,i.minY-u),c=Math.min(n-1,i.maxX+u),g=Math.min(s-1,i.maxY+u),A=c-p+1,m=g-d+1,B=Math.max(A,m),f=Math.floor((B-A)/2),h=Math.floor((B-m)/2);return{x:p,y:d,width:A,height:m,squareSize:B,offsetX:f,offsetY:h,modelMask:uu(e,n,p,d,A,m),blendMask:uu(t,n,p,d,A,m),detailMask:uu(r,n,p,d,A,m),seamRing:uu(az(t,n,s),n,p,d,A,m)}}function oz(e,t,r){const n=ai(e,t,r);if(!n)throw new Error("Mask is empty. Paint an object before inpainting.");const s=n.maxX-n.minX+1,a=n.maxY-n.minY+1,i=Math.max(48,Math.round(Math.max(s,a)*.9)),o=Math.max(0,n.minX-i),l=Math.max(0,n.minY-i),u=Math.min(t-1,n.maxX+i),p=Math.min(r-1,n.maxY+i),d=u-o+1,c=p-l+1,g=Math.max(d,c),A=Math.floor((g-d)/2),m=Math.floor((g-c)/2),B=uu(e,t,o,l,d,c);return{x:o,y:l,width:d,height:c,squareSize:g,offsetX:A,offsetY:m,mask:B}}function vT(e,t,r){const n=new Uint8ClampedArray(r.width*r.height*4);for(let s=0;s<r.height;s+=1){const a=((r.y+s)*t+r.x)*4,i=s*r.width*4;n.set(e.subarray(a,a+r.width*4),i)}return n}function BT(e,t,r,n,s,a){if(t!==s||r!==a)throw new Error("Image and mask dimensions must match.");const i=Xh(n,t,r,"inpaint"),o=oz(i,t,r),l=vT(e,t,o),u=new OffscreenCanvas(o.width,o.height),p=u.getContext("2d");if(!p)throw new Error("Unable to create the crop canvas.");p.putImageData(new ImageData(l,o.width,o.height),0,0);const d=new OffscreenCanvas(o.squareSize,o.squareSize),c=d.getContext("2d",{willReadFrequently:!0});if(!c)throw new Error("Unable to create the square crop canvas.");c.clearRect(0,0,o.squareSize,o.squareSize),c.drawImage(u,o.offsetX,o.offsetY);const g=new OffscreenCanvas(o.width,o.height),A=g.getContext("2d",{willReadFrequently:!0});if(!A)throw new Error("Unable to create the source mask canvas.");const m=A.createImageData(o.width,o.height);for(let F=0;F<o.mask.length;F+=1)m.data[F*4+3]=o.mask[F];A.putImageData(m,0,0);const B=new OffscreenCanvas(o.squareSize,o.squareSize),f=B.getContext("2d",{willReadFrequently:!0});if(!f)throw new Error("Unable to create the square mask canvas.");f.clearRect(0,0,o.squareSize,o.squareSize),f.imageSmoothingEnabled=!1,f.drawImage(g,o.offsetX,o.offsetY);const P=new OffscreenCanvas(cr,cr).getContext("2d",{willReadFrequently:!0});if(!P)throw new Error("Unable to create the inpainting canvas.");P.imageSmoothingEnabled=!0,P.drawImage(d,0,0,cr,cr);const _=P.getImageData(0,0,cr,cr).data,b=new OffscreenCanvas(cr,cr).getContext("2d",{willReadFrequently:!0});if(!b)throw new Error("Unable to access the scaled mask canvas.");b.imageSmoothingEnabled=!1,b.drawImage(B,0,0,cr,cr);const v=b.getImageData(0,0,cr,cr).data,y=new Uint8Array(cr*cr);for(let F=3,R=0;F<v.length;F+=4,R+=1)y[R]=v[F];const $=bn(y,cr,cr,3),k=new Float32Array(3*cr*cr),W=new Float32Array(cr*cr),j=cr*cr;for(let F=0;F<j;F+=1)k[F]=_[F*4]/255,k[j+F]=_[F*4+1]/255,k[j*2+F]=_[F*4+2]/255,W[F]=$[F]>0?1:0;return{imageTensor:k,maskTensor:W,crop:o}}function xT(e,t,r,n,s,a){if(t!==s||r!==a)throw new Error("Image and mask dimensions must match.");const i=t*r,o=new Uint8Array(3*i),l=new Uint8Array(i);for(let u=0;u<i;u+=1){const p=u*4;o[u]=e[p],o[i+u]=e[p+1],o[i*2+u]=e[p+2],l[u]=n[u]>0?0:255}return{imageTensor:o,maskTensor:l}}function lz(e,t,r){const n=new Float32Array(e.length),s=bn(e,t,r,2),a=bn(e,t,r,5),i=bn(e,t,r,10);for(let o=0;o<e.length;o+=1)e[o]>0?n[o]=1:s[o]>0?n[o]=.78:a[o]>0?n[o]=.44:i[o]>0&&(n[o]=.16);return n}function cu(e,t,r,n,s){const a=Nt(n,0,t-1),o=(Nt(s,0,r-1)*t+a)*4;return e[o]*.299+e[o+1]*.587+e[o+2]*.114}function ET(e,t,r,n,s){const a=cu(e,t,r,n,s),i=cu(e,t,r,n-1,s),o=cu(e,t,r,n+1,s),l=cu(e,t,r,n,s-1),u=cu(e,t,r,n,s+1);return(Math.abs(a-i)+Math.abs(a-o)+Math.abs(a-l)+Math.abs(a-u))*.5}function uz(e,t,r){const n=new Uint8ClampedArray(e);for(let s=0;s<r.length;s+=1){if(r[s]===0)continue;const a=s*4;for(let i=0;i<3;
5633i+=1){const o=n[a+i],l=t[a+i],u=o-l;n[a+i]=xn(l+Nt(u,-28,28))}}return n}function cz(e,t,r,n){const s=new Uint8ClampedArray(e),a=lz(r.blendMask,r.width,r.height);for(let i=0;i<r.height;i+=1)for(let o=0;o<r.width;o+=1){const l=i*r.width+o,u=a[l];if(u===0)continue;const p=l*4,d=((r.y+i)*n+(r.x+o))*4;s[d]=xn(s[d]*(1-u)+t[p]*u),s[d+1]=xn(s[d+1]*(1-u)+t[p+1]*u),s[d+2]=xn(s[d+2]*(1-u)+t[p+2]*u),s[d+3]=255}return s}function dz(e,t,r,n,s=92,a=!0){const i=new OffscreenCanvas(cr,cr),o=i.getContext("2d");if(!o)throw new Error("Unable to create the output staging canvas.");o.putImageData(new ImageData(new Uint8ClampedArray(t),cr,cr),0,0);const u=new OffscreenCanvas(r.squareSize,r.squareSize).getContext("2d",{willReadFrequently:!0});if(!u)throw new Error("Unable to create the square output canvas.");a&&tt("general","running","Restoring local detail","Restoring the repaired region to the original local resolution...",kn,s),u.imageSmoothingEnabled=!0,u.drawImage(i,0,0,r.squareSize,r.squareSize);const p=u.getImageData(r.offsetX,r.offsetY,r.width,r.height).data,d=new Uint8ClampedArray(e),c=bn(r.mask,r.width,r.height,2),g=bn(r.mask,r.width,r.height,8);for(let A=0;A<r.height;A+=1)for(let m=0;m<r.width;m+=1){const B=A*r.width+m;let f=0;if(r.mask[B]>0?f=1:c[B]>0?f=.72:g[B]>0&&(f=.28),f===0)continue;const h=B*4,P=((r.y+A)*n+(r.x+m))*4;d[P]=xn(d[P]*(1-f)+p[h]*f),d[P+1]=xn(d[P+1]*(1-f)+p[h+1]*f),d[P+2]=xn(d[P+2]*(1-f)+p[h+2]*f),d[P+3]=255}return d}async function pz(e,t,r,n,s,a,i=!1){const o=async()=>{const c=await pT();i&&tt("general","running","Cropping repair region","Cropping the region around the mask while preserving image detail...",kn,46);const g=BT(e,t,r,n,s,a);i&&tt("general","running","Running repair model","LaMa is generating new pixels for the erased area...",kn,74);const A=await c.run({image:new An("float32",g.imageTensor,[1,3,cr,cr]),mask:new An("float32",g.maskTensor,[1,1,cr,cr])});return{backend:kn||"wasm",crop:g.crop,results:A}};let l;try{l=await o()}catch(c){if(kn==="webgpu"&&si(c))au=null,kn="wasm",i&&tt("lama","loading","Falling back to WASM","LaMa WebGPU failed on this device. Retrying with WASM...","wasm",74),l=await(async()=>{const g=await AT("wasm");i&&tt("general","running","Cropping repair region","Re-preparing the local repair region with WASM...","wasm",52);const A=BT(e,t,r,n,s,a);i&&tt("general","running","Running repair model","Retrying LaMa repair with WASM...","wasm",78);const m=await g.run({image:new An("float32",A.imageTensor,[1,3,cr,cr]),mask:new An("float32",A.maskTensor,[1,1,cr,cr])});return{backend:"wasm",crop:A.crop,results:m}})();else throw c}const u=l.results.output??Object.values(l.results)[0];if(!(u instanceof An))throw new Error("The inpainting model did not return a valid tensor.");i&&tt("general","running","Formatting model output","Converting the LaMa output tensor into an image...",l.backend,88);const p=Az(u),d=dz(e,p,l.crop,t,92,i);return{backend:l.backend,image:d}}async function du(e,t,r,n=kn){const s=new OffscreenCanvas(t,r),a=s.getContext("2d");if(!a)throw new Error("Unable to create the final output canvas.");const i=new Uint8ClampedArray(e.length);if(i.set(e),a.putImageData(new ImageData(i,t,r),0,0),tt("general","running","Encoding result image","Encoding the final result image...",n||"wasm",97),!("convertToBlob"in s))throw new Error("OffscreenCanvas.convertToBlob is not available in this browser.");return s.convertToBlob({type:"image/png"})}async function gz(e){if(!("convertToBlob"in e)||typeof e.convertToBlob!="function")throw new Error("OffscreenCanvas.convertToBlob is not available in this browser.");return e.convertToBlob({type:"image/png"})}function xn(e){return Math.max(0,Math.min(255,Math.round(e)))}function Az(e){const{dims:t,data:r,type:n}=e;let s=0,a=0,i=0,o=null;if(t.length===4&&t[0]===1?t[1]===1||t[1]===3?(s=t[1],a=t[2],i=t[3],o="chw"):(t[3]===1||t[3]===3)&&(s=t[3],a=t[1],i=t[2],o="hwc"):t.length===3&&(t[0]===1||t[0]===3?(s=t[0],a=t[1],i=t[2],o="chw"):(t[2]===1||t[2]===3)&&(s=t[2],a=t[0],i=t[1],o="hwc")),!o||i!==cr||a!==cr)throw new Error(`Unexpected LaMa output shape: [${t.join(", ")}]. Expected RGB tensor at 512x512.`);const l=r;let u=0;for(let g=0;g<l.length;g+=1){const A=Math.abs(Number(l[g]));A>u&&(u=A)}const p=n.startsWith("float")&&u<=1.5,d=new Uint8ClampedArray(i*a*4),c=i*a;for(let g=0;g<a;g+=1)for(let A=0;A<i;A+=1){const m=g*i+A;let B=0,f=0,h=0;if(o==="chw")B=Number(l[m]),f=s>1?Number(l[c+m]):B,h=s>2?Number(l[c*2+m]):f;else{const _=m*s;B=Number(l[_]),f=s>1?Number(l[_+1]):B,h=s>2?Number(l[_+2]):f}const P=m*4;d[P]=xn(p?B*255:B),d[P+1]=xn(p?f*255:f),d[P+2]=xn(p?h*255:h),d[P+3]=255}return d}function DT(e){const{dims:t,data:r,type:n}=e;let s=0,a=0,i=0,o=null;if(t.length===4&&t[0]===1?t[1]===1||t[1]===3?(s=t[1],a=Number(t[2]),i=Number(t[3]),o="chw"):(t[3]===1||t[3]===3)&&(s=t[3],a=Number(t[1]),i=Number(t[2]),o="hwc"):t.length===3&&(t[0]===1||t[0]===3?(s=t[0],a=Number(t[1]),i=Number(t[2]),o="chw"):(t[2]===1||t[2]===3)&&(s=t[2],a=Number(t[0]),i=Number(t[1]),o="hwc")),!o||i<=0||a<=0)throw new Error(`Unexpected MI-GAN output shape: [${t.join(", ")}].`);const l=r,u=i*a,p=new Uint8ClampedArray(i*a*4),d=n.startsWith("float");for(let c=0;c<u;c+=1){let g=0,A=0,m=0;if(o==="chw")g=Number(l[c]),A=s>1?Number(l[u+c]):g,m=s>2?Number(l[u*2+c]):A;else{const f=c*s;g=Number(l[f]),A=s>1?Number(l[f+1]):g,m=s>2?Number(l[f+2]):A}const B=c*4;p[B]=xn(d?g*255:g),p[B+1]=xn(d?A*255:A),p[B+2]=xn(d?m*255:m),p[B+3]=255}return p}function IT(e,t,r,n=320){const s=[];for(let o=0;o<r;o+=1)for(let l=0;l<t;l+=1)e[o*t+l]>0&&s.push({x:l,y:o});if(s.length<=n)return s;const a=[],i=s.length/n;for(let o=0;o<n;o+=1)a.push(s[Math.floor(o*i)]);return a}function Jh(e,t){const r=e.map(s=>[...s]),n=[...t];for(let s=0;s<3;s+=1){let a=s;for(let o=s+1;o<3;o+=1)Math.abs(r[o]?.[s]??0)>
5633Math.abs(r[a]?.[s]??0)&&(a=o);if(Math.abs(r[a]?.[s]??0)<1e-6)return null;a!==s&&([r[s],r[a]]=[r[a],r[s]],[n[s],n[a]]=[n[a],n[s]]);const i=r[s]?.[s]??1;for(let o=s;o<3;o+=1)r[s][o]/=i;n[s]/=i;for(let o=0;o<3;o+=1){if(o===s)continue;const l=r[o]?.[s]??0;if(l){for(let u=s;u<3;u+=1)r[o][u]-=l*(r[s]?.[u]??0);n[o]-=l*(n[s]??0)}}}return{bias:n[2]??0,x:n[0]??0,y:n[1]??0}}function hz(e,t,r){let n=0,s=0,a=0,i=0,o=0,l=0,u=0,p=0,d=0,c=0,g=0,A=0,m=0,B=0;for(const b of r){const v=(b.y*t+b.x)*4,y=e[v]??0,$=e[v+1]??0,k=e[v+2]??0;n+=b.x,s+=b.y,a+=b.x*b.x,i+=b.y*b.y,o+=b.x*b.y,l+=y,u+=$,p+=k,d+=b.x*y,c+=b.y*y,g+=b.x*$,A+=b.y*$,m+=b.x*k,B+=b.y*k}const f=Math.max(1,r.length),h=[[a,o,n],[o,i,s],[n,s,f]],P=Jh(h,[d,c,l])??{bias:l/f,x:0,y:0},_=Jh(h,[g,A,u])??{bias:u/f,x:0,y:0};return{blue:Jh(h,[m,B,p])??{bias:p/f,x:0,y:0},green:_,red:P}}function em(e,t,r){return e.x*t+e.y*r+e.bias}function TT(e,t,r,n,s,a,i){let o=0,l=0,u=0;for(const p of s){const d=p.x+a,c=p.y+i;if(d<0||d>=r||c<0||c>=n||t[c*r+d]>0)continue;const g=(p.y*r+p.x)*4,A=(c*r+d)*4;o+=Math.abs((e[g]??0)-(e[A]??0))+Math.abs((e[g+1]??0)-(e[A+1]??0))+Math.abs((e[g+2]??0)-(e[A+2]??0)),l+=Math.abs(ET(e,r,n,p.x,p.y)-ET(e,r,n,d,c)),u+=1}return u<Math.max(24,Math.round(s.length*.18))?null:{dx:a,dy:i,score:o/(u*3)+l/u*.55+Math.hypot(a,i)*.02+(1-u/Math.max(1,s.length))*18,valid:u}}function mz(e,t,r,n,s){const a=Nt(Math.round(Math.max(r,n)*.32),16,128),i=a>80?8:4,o=[];for(let p=-a;p<=a;p+=i)for(let d=-a;d<=a;d+=i){if(Math.abs(d)+Math.abs(p)<i)continue;const c=TT(e,t,r,n,s,d,p);c&&o.push(c)}const l=o.sort((p,d)=>p.score-d.score).slice(0,8),u=new Map;for(const p of l)for(let d=p.dy-i;d<=p.dy+i;d+=2)for(let c=p.dx-i;c<=p.dx+i;c+=2){if(Math.abs(c)+Math.abs(d)<2)continue;const g=TT(e,t,r,n,s,c,d);if(!g)continue;const A=`${c}:${d}`,m=u.get(A);(!m||g.score<m.score)&&u.set(A,g)}return[...u.values()].sort((p,d)=>p.score-d.score).slice(0,5)}function fz(e,t,r,n,s=1){let a=new Uint8ClampedArray(e);for(let i=0;i<s;i+=1){const o=new Uint8ClampedArray(a);for(let l=0;l<n;l+=1)for(let u=0;u<r;u+=1){const p=l*r+u;if(t[p]===0)continue;const d=p*4;let c=a[d]*.58,g=a[d+1]*.58,A=a[d+2]*.58,m=.58;const B=[[u-1,l],[u+1,l],[u,l-1],[u,l+1]];for(const[f,h]of B){if(f<0||f>=r||h<0||h>=n)continue;const P=(h*r+f)*4,_=t[h*r+f]>0?.105:.155;c+=a[P]*_,g+=a[P+1]*_,A+=a[P+2]*_,m+=_}o[d]=xn(c/m),o[d+1]=xn(g/m),o[d+2]=xn(A/m),o[d+3]=255}a=o}return a}function _z(e,t,r,n,s,a){if(t!==s||r!==a)throw new Error("Image and mask dimensions must match.");const i=bn(n,t,r,2),o=bn(n,t,r,1),l=iz(n,i,o,t,r,{maxPaddingRatio:.42,minPadding:28,paddingMultiplier:.92}),u=vT(e,t,l),p=MT(l.modelMask,l.width,l.height,0,10),d=IT(p,l.width,l.height),c=d.length>0?d:IT(MT(l.modelMask,l.width,l.height,0,6),l.width,l.height);if(c.length===0)return e;const g=hz(u,l.width,c),A=mz(u,l.modelMask,l.width,l.height,c),m=new Uint8ClampedArray(u);for(let h=0;h<l.height;h+=1)for(let P=0;P<l.width;P+=1){const _=h*l.width+P;if(l.modelMask[_]===0)continue;const w=_*4;let b=em(g.red,P,h)*.22,v=em(g.green,P,h)*.22,y=em(g.blue,P,h)*.22,$=.22;for(const k of A){const W=P+k.dx,j=h+k.dy;if(W<0||W>=l.width||j<0||j>
5633=l.height||l.modelMask[j*l.width+W]>0)continue;const F=(j*l.width+W)*4,R=1/(k.score+1)*(1/(1+Math.hypot(k.dx,k.dy)*.03));b+=(u[F]??0)*R,v+=(u[F+1]??0)*R,y+=(u[F+2]??0)*R,$+=R}m[w]=xn(b/$),m[w+1]=xn(v/$),m[w+2]=xn(y/$),m[w+3]=255}const B=fz(m,l.modelMask,l.width,l.height,2),f=uz(B,u,l.seamRing);return cz(e,f,l,t)}async function wz(e,t,r,n,s,a){const i=ri||oT();let o=i,l;try{l=await ed(i),o=ri||i}catch(A){if(i==="webgpu"&&mT(A))hT(),tt("general","loading","Falling back to WASM","WebGPU is unstable on this device. Falling back to WASM for MI-GAN...","wasm",22),l=await ed("wasm"),o="wasm";else throw A}tt("general","running","Extreme MI-GAN","Running the high-detail cleanup pass on the full image...",o,18);const u=xT(e,t,r,n,s,a),p=l.inputNames[0]||"image",d=l.inputNames[1]||"mask",c=await l.run({[p]:new An("uint8",u.imageTensor,[1,3,r,t]),[d]:new An("uint8",u.maskTensor,[1,1,r,t])}),g=c.result??Object.values(c)[0];if(!(g instanceof An))throw new Error("The MI-GAN pipeline did not return a valid tensor.");return tt("general","running","Extreme MI-GAN","Formatting the MI-GAN result for download...",o,92),{backend:o,image:DT(g),pipeline:["migan"],qualityMode:"extreme",extremeDiagnostics:{candidateCount:1,usedTiles:!1}}}async function yz(e,t,r,n,s,a){const i=await gT(),o=so;tt("general","running","Tiny MI-GAN","Running the tiny cleanup model...",o,18);const l=xT(e,t,r,n,s,a),u=i.inputNames[0]||"image",p=i.inputNames[1]||"mask",d=await i.run({[u]:new An("uint8",l.imageTensor,[1,3,r,t]),[p]:new An("uint8",l.maskTensor,[1,1,r,t])}),c=d.result??Object.values(d)[0];if(!(c instanceof An))throw new Error("The Tiny MI-GAN pipeline did not return a valid tensor.");return tt("general","running","Tiny MI-GAN","Formatting the tiny result for download...",o,92),{backend:o,image:DT(c),pipeline:["migan"],qualityMode:"tiny",extremeDiagnostics:{candidateCount:1,usedTiles:!1}}}async function bz(e){tt("general","running","Preparing image","Reading the image and preparing the smart mask...",dr,2);try{const[t,r]=await Jc(),n=t,s=r;tt("general","running","Parsing image","Parsing the image size and pixels...",dr,38),os=await ga.read(e),tt("general","running","Extracting features","Extracting image embeddings...",dr,54),ls=await s(os),Zs=await n.get_image_embeddings(ls)}catch(t){if(dr==="webgpu"&&si(t)){ni=null,dr="wasm",tt("sam","loading","Falling back to WASM","WebGPU is unstable on this device. Falling back to WASM for SlimSAM...","wasm",40);const[r,n]=await lu("wasm"),s=r,a=n;tt("general","running","Parsing image","Parsing the image size and pixels...","wasm",46),os=await ga.read(e),tt("general","running","Extracting features","Extracting image embeddings...","wasm",62),ls=await a(os),Zs=await s.get_image_embeddings(ls)}else throw t}return tt("general","ready","Image ready","The image is ready. Brush over the area you want to erase.",dr,100),{backend:dr}}async function Pz(e,t,r,n,s,a){if(e!==n||t!==s)throw new Error("The subject mask does not match the current image.");const i=new ga(new Uint8ClampedArray(r),e,t,4),o=new Uint8Array(a);if(!td(o))throw new Error("Select the subject you want to keep before extracting the PNG.");tt("general","running","Preparing cutout","Preparing the transparent background pipeline...",Js||Zc(),8);let l;try{l=await GG()}catch(h){if(Js==="webgpu"&&si(h))nu=null,Js="wasm",tt("general","loading","Falling back to WASM","The cutout model WebGPU runtime failed. Retrying with WASM...","wasm",24),l=await uT("wasm");else throw h}
5633tt("general","running","Extracting alpha matte","Generating the transparent subject matte...",Js||"wasm",48);const[u]=await l(i),p=qG(u),d=ZG(p,o,e,t),c=JG(p,d.mask,o,e,t);tt("general","running","Polishing edge","Cleaning the cutout edge and removing background contamination...",Js||"wasm",72);const g=sz(XG(i,c),c,d.mask),A=d.box;if(!A)throw new Error("Unable to isolate the selected subject.");const m=Nt(Math.round(Math.max(A.maxX-A.minX+1,A.maxY-A.minY+1)*.06),12,96),B=await g.crop([A.minX-m,A.minY-m,A.maxX+m,A.maxY+m]);tt("general","running","Exporting cutout","Encoding the transparent PNG...",Js||"wasm",88);const f=await B.toBlob("image/png");return tt("general","ready","Cutout complete","Transparent background extraction is complete. Review the result and download the PNG.",Js||"wasm",100),{width:B.width,height:B.height,imageBlob:f,backend:Js||"wasm"}}function Mz(e,t,r,n,s){const a=Math.min(Ro,t-n),i=Math.min(Ro,r-s),o=new Uint8Array(ti*ti*3);for(let l=0;l<ti;l+=1){const u=Nt(s+l-ru,0,r-1);for(let p=0;p<ti;p+=1){const d=Nt(n+p-ru,0,t-1),c=(u*t+d)*4,g=(l*ti+p)*3;o[g]=e[c],o[g+1]=e[c+1],o[g+2]=e[c+2]}}return{tileHeight:i,tileImage:new ga(o,ti,ti,3),tileWidth:a}}function vz(e,t,r,n,s,a,i){const o=r.channels,l=a*ei,u=i*ei,p=r.width*o,d=ru*ei,c=ru*ei;for(let g=0;g<u;g+=1){const A=c+g,m=s*ei+g;for(let B=0;B<l;B+=1){const f=d+B,h=A*p+f*o,P=(m*t+n*ei+B)*4;e[P]=r.data[h],e[P+1]=r.data[h+1],e[P+2]=r.data[h+2],e[P+3]=o===4?r.data[h+3]:255}}}async function Bz(e,t,r){const n=new Uint8ClampedArray(r);tt("general","running","Preparing 4x upscale","Preparing the 4x image enlarger...",Ps||cT(),8);let s;try{s=await zG()}catch(g){if(Ps==="webgpu"&&si(g))su=null,Ps="wasm",tt("general","loading","Falling back to WASM","The AI Image Upscaler WebGPU runtime failed. Retrying with WASM...","wasm",24),s=await dT("wasm");else throw g}tt("general","running","Upscaling image","Generating the 4x upscaled image...",Ps||"wasm",56);const a=e*ei,i=t*ei,o=new Uint8ClampedArray(a*i*4),l=Math.ceil(e/Ro),u=Math.ceil(t/Ro),p=l*u;let d=0;for(let g=0;g<u;g+=1)for(let A=0;A<l;A+=1){const m=A*Ro,B=g*Ro,f=Mz(n,e,t,m,B),h=await s(f.tileImage),P=Array.isArray(h)?h[0]:h;if(!P)throw new Error("The AI Image Upscaler did not return an image tile.");vz(o,a,P,m,B,f.tileWidth,f.tileHeight),d+=1;const _=56+Math.round(d/p*28);tt("general","running","Upscaling image",`Upscaling tile ${d} of ${p}...`,Ps||"wasm",_)}tt("general","running","Exporting 4x result","Encoding the 4x PNG...",Ps||"wasm",86);const c=await du(o,a,i,Ps||"wasm");return tt("general","ready","4x upscale complete","The 4x image is ready to compare and download.",Ps||"wasm",100),{width:a,height:i,imageBlob:c,backend:Ps||"wasm"}}async function xz(e,t,r){if(!os||!ls||!Zs)throw new Error("The image embedding is not ready yet.");const n=NG(r),s=UG(n,e,t);if(!s)throw new Error("Paint a mask before asking for refinement.");tt("general","running","Analyzing mask","Analyzing the range of your hand-painted mask...",dr,8);const a=async()=>{const o=os,[l,u]=await Jc(),p=l,d=u,c=Zs,g=ls,A=[...s.positivePoints,...s.negativePoints],m=[...s.positivePoints.map(()=>1),...s.negativePoints.map(()=>0)];tt("general","running","Encoding prompt points","Converting the brush stroke area into SAM prompt points...",dr,28);const B=await d(o,{input_points:[A],input_labels:[m],input_boxes:[[s.box]]});tt("general","running","Refining edges","SlimSAM is fitting the object boundaries...",dr,58);const f=await p({...c,input_points:B.input_points,input_labels:B.input_labels,input_boxes:B.input_boxes});tt("general","running","Post-processing mask","Collecting and merging the best mask...",dr,82);const h=await d.post_process_masks(f.pred_masks,g.original_sizes,g.reshaped_input_sizes),P=ga.fromTensor(h[0][0]);return yT(P,f.iou_scores.data,n,e,t,s)};let i;try{i=await a()}catch(o){if(dr==="webgpu"&&si(o))ni=null,dr="wasm",tt("sam","loading","Falling back to WASM","SlimSAM WebGPU failed during refinement. Retrying with WASM...","wasm",42),i=await(async()=>{const l=os,[u,p]=await lu("wasm"),d=u,c=p,g=Zs,A=ls,m=[...s.positivePoints,...s.negativePoints],B=[...s.positivePoints.map(()=>1),...s.negativePoints.map(()=>0)];tt("general","running","Encoding prompt points","Retrying SAM prompt encoding with WASM...","wasm",48);const f=await c(l,{input_points:[m],input_labels:[B],input_boxes:[[s.box]]});tt("general","running","Refining edges","Retrying edge refinement with WASM...","wasm",68);const h=await d({...g,input_points:f.input_points,input_labels:f.input_labels,input_boxes:f.input_boxes});tt("general","running","Post-processing mask","Finishing the final mask with WASM...","wasm",86);const P=await c.post_process_masks(h.pred_masks,A.original_sizes,A.reshaped_input_sizes),_=ga.fromTensor(P[0][0]);return yT(_,h.iou_scores.data,n,e,t,s)})();else throw o}return tt("general","ready","Mask ready","Mask refinement is complete. You can start erasing now.",dr,100),{width:e,height:t,mask:i.mask.buffer,usedSam:!0,coverage:i.coverage}}
5633async function CT(e,t,r,n,s,a={}){if(!os||!ls||!Zs)throw new Error("The image embedding is not ready yet.");const i=a.emitStatus??!0,o=a.boostEdges??!0,l=a.readyMessage??"Auto selection is ready. Refine it or start erasing.",u=(g,A,m,B,f,h=0)=>{i&&tt(g,A,m,B,f,h)},p=WG(r,n,e,t,s);u("general","running","Analyzing click","Checking the clicked area and building a smart object prompt...",dr,10);const d=async()=>{const g=os,[A,m]=await Jc(),B=A,f=m,h=Zs,P=ls,_=[...p.positivePoints,...p.negativePoints],w=[...p.positivePoints.map(()=>1),...p.negativePoints.map(()=>0)];u("general","running","Encoding selection point","Encoding the click as a local object-selection prompt...",dr,34);const b=await f(g,{input_points:[_],input_labels:[w],input_boxes:[[p.box]]});u("general","running","Locating object","SlimSAM is locating the clicked person or object...",dr,62);const v=await B({...h,input_points:b.input_points,input_labels:b.input_labels,input_boxes:b.input_boxes});u("general","running","Finalizing selection","Scoring the candidate masks and keeping the best object...",dr,86);const y=await f.post_process_masks(v.pred_masks,P.original_sizes,P.reshaped_input_sizes),$=ga.fromTensor(y[0][0]);return bT($,v.iou_scores.data,e,t,p,o)};let c;try{c=await d()}catch(g){if(dr==="webgpu"&&si(g))ni=null,dr="wasm",u("sam","loading","Falling back to WASM","SlimSAM WebGPU failed during auto select. Retrying with WASM...","wasm",44),c=await(async()=>{const A=os,[m,B]=await lu("wasm"),f=m,h=B,P=Zs,_=ls,w=[...p.positivePoints,...p.negativePoints],b=[...p.positivePoints.map(()=>1),...p.negativePoints.map(()=>0)];u("general","running","Encoding selection point","Retrying the click prompt with WASM...","wasm",52);const v=await h(A,{input_points:[w],input_labels:[b],input_boxes:[[p.box]]});u("general","running","Locating object","Retrying the auto selection with WASM...","wasm",72);const y=await f({...P,input_points:v.input_points,input_labels:v.input_labels,input_boxes:v.input_boxes});u("general","running","Finalizing selection","Finishing the object selection with WASM...","wasm",88);const $=await h.post_process_masks(y.pred_masks,_.original_sizes,_.reshaped_input_sizes),k=ga.fromTensor($[0][0]);return bT(k,y.iou_scores.data,e,t,p,o)})();else throw g}return u("general","ready","Selection ready",l,dr,100),{width:e,height:t,mask:c.mask.buffer.slice(0),coverage:c.coverage}}async function Ez(e,t,r,n,s,a){return CT(e,t,r,n,s,{boostEdges:a})}async function Dz(e,t,r,n,s,a){return CT(e,t,r,n,s,{boostEdges:a,emitStatus:!1,readyMessage:"Hover preview is ready."})}async function Iz(e,t,r,n,s,a,i){if(!os||!ls||!Zs)throw new Error("The image embedding is not ready yet.");const o=VG(r,n,s,a,e,t,i);tt("general","running","Analyzing selection box","Checking the selection box and building a smart object prompt...",dr,10);const l=async()=>{const p=os,[d,c]=await Jc(),g=d,A=c,m=Zs,B=ls;tt("general","running","Encoding selection box","Encoding the dragged box as a local object-selection prompt...",dr,34);const f=await A(p,{input_boxes:[[o.box]]});tt("general","running","Locating boxed object","SlimSAM is locating the person or object inside the box...",dr,62);const h=await g({...m,input_boxes:f.input_boxes});tt("general","running","Finalizing selection","Scoring the candidate masks and keeping the best boxed object...",dr,86);const P=await A.post_process_masks(h.pred_masks,B.original_sizes,B.reshaped_input_sizes),_=ga.fromTensor(P[0][0]);return PT(_,h.iou_scores.data,e,t,o)};let u;try{u=await l()}catch(p){if(dr==="webgpu"&&si(p))ni=null,dr="wasm",tt("sam","loading","Falling back to WASM","SlimSAM WebGPU failed during box select. Retrying with WASM...","wasm",44),u=await(async()=>{const d=os,[c,g]=await lu("wasm"),A=c,m=g,B=Zs,f=ls;tt("general","running","Encoding selection box","Retrying the box prompt with WASM...","wasm",52);const h=await m(d,{input_boxes:[[o.box]]});tt("general","running","Locating boxed object","Retrying the boxed selection with WASM...","wasm",72);const P=await A({...B,input_boxes:h.input_boxes});tt("general","running","Finalizing selection","Finishing the boxed object selection with WASM...","wasm",88);const _=await m.post_process_masks(P.pred_masks,f.original_sizes,f.reshaped_input_sizes),w=ga.fromTensor(_[0][0]);return PT(w,P.iou_scores.data,e,t,o)})();else throw p}return tt("general","ready","Selection ready","Box selection is ready. Refine it or start erasing.",dr,100),{width:e,height:t,mask:u.mask.buffer.slice(0),coverage:u.coverage}}
5633async function Tz(e,t,r,n,s,a,i,o="model"){const l=new Uint8ClampedArray(r),u=new Uint8Array(a);if(o==="lite"){tt("general","running","Preparing lightweight erase","Using a mobile-safe erase path for this device...","wasm",18);const c=_z(l,e,t,u,n,s),g=await du(c,e,t,"wasm");return tt("general","ready","Erase complete","Erase is complete. Review the comparison and download the result.","wasm",100),{width:e,height:t,imageBlob:g,backend:"wasm",qualityMode:i,pipeline:["structure-fill"]}}if(i==="tiny"){const c=await yz(l,e,t,u,n,s),g=await du(c.image,e,t,c.backend);return tt("general","ready","Erase complete","Tiny cleanup is complete. Review the comparison and download the result.",c.backend,100),{width:e,height:t,imageBlob:g,backend:c.backend,qualityMode:c.qualityMode,pipeline:c.pipeline,extremeDiagnostics:c.extremeDiagnostics}}if(i==="extreme"){const c=await wz(l,e,t,u,n,s),g=await du(c.image,e,t,c.backend);return tt("general","ready","Erase complete","Extreme cleanup is complete. Review the comparison and download the result.",c.backend,100),{width:e,height:t,imageBlob:g,backend:c.backend,qualityMode:c.qualityMode,pipeline:c.pipeline,extremeDiagnostics:c.extremeDiagnostics}}tt("general","running","Preparing erase","Preparing the LaMa erase pipeline...",kn,4);const p=await pz(l,e,t,u,n,s,!0),d=await du(p.image,e,t,p.backend);return tt("general","ready","Erase complete","Erase is complete. Review the comparison and download the result.",p.backend,100),{width:e,height:t,imageBlob:d,backend:p.backend,qualityMode:i,pipeline:["lama"]}}async function Cz(e){tt("general","running","Finding corner mark","Scanning the image for a visible corner mark...",void 0,18);const t=await CG();let r=null,n=0,s=0;if(e.imageBlob){if(typeof createImageBitmap!="function")throw new Error("Image bitmap decoding is unavailable for Gemini cleanup.");r=await createImageBitmap(e.imageBlob),n=r.width,s=r.height}else if(e.image){n=e.image.width,s=e.image.height;const l=new OffscreenCanvas(n,s),u=l.getContext("2d",{willReadFrequently:!0});if(!u)throw new Error("Unable to create the Gemini cleanup canvas.");u.putImageData(new ImageData(new Uint8ClampedArray(e.image.data),n,s),0,0),r=l}else throw new Error("No image payload was provided for Gemini cleanup.");tt("general","running","Cleaning corner mark","Cleaning the corner and rebuilding the nearby image...",void 0,64);let a=null;try{a=await t.removeWatermarkFromImage(r,{adaptiveMode:"auto",maxPasses:4})}finally{r&&"close"in r&&typeof r.close=="function"&&r.close()}tt("general","running","Finishing cleaned image","Preparing the cleaned image for review...",void 0,92);const i=await gz(a),o=a.__watermarkMeta??null;return o?.applied===!1?tt("general","ready","No matching corner mark found","No matching corner mark was found in this image.",void 0,100):tt("general","ready","Gemini cleanup complete","The cleaned image is ready to review and download.",void 0,100),{width:n,height:s,imageBlob:i,meta:o}}self.onmessage=async e=>{const t=e.data;try{if(t.type==="prepare-inpaint-model"){const r=await YG(t.payload.qualityMode);self.postMessage({id:t.id,ok:!0,type:"prepare-inpaint-model",payload:r});return}if(t.type==="prepare-extreme"){const r=await fT();self.postMessage({id:t.id,ok:!0,type:"prepare-extreme",payload:r});return}if(t.type==="prepare-image"){const r=await bz(t.payload.imageBlob);self.postMessage({id:t.id,ok:!0,type:"prepare-image",payload:r});return}if(t.type==="refine-mask"){const r=await xz(t.payload.width,t.payload.height,t.payload.mask);self.postMessage({id:t.id,ok:!0,type:"refine-mask",payload:r},[r.mask]);return}if(t.type==="point-mask"){const r=await Ez(t.payload.width,t.payload.height,t.payload.x,t.payload.y,t.payload.scope,t.payload.boostEdges);self.postMessage({id:t.id,ok:!0,type:"point-mask",payload:r},[r.mask]);return}if(t.type==="preview-point-mask"){const r=await Dz(t.payload.width,t.payload.height,t.payload.x,t.payload.y,t.payload.scope,t.payload.boostEdges);self.postMessage({id:t.id,ok:!0,type:"preview-point-mask",payload:r},[r.mask]);return}if(t.type==="box-mask"){const r=await Iz(t.payload.width,t.payload.height,t.payload.left,t.payload.top,t.payload.right,t.payload.bottom,t.payload.padding);self.postMessage({id:t.id,ok:!0,type:"box-mask",payload:r},[r.mask]);return}if(t.type==="inpaint"){const r=await Tz(t.payload.image.width,t.payload.image.height,t.payload.image.data,t.payload.mask.width,t.payload.mask.height,t.payload.mask.data,t.payload.qualityMo
5633de,t.payload.processingMode);self.postMessage({id:t.id,ok:!0,type:"inpaint",payload:r});return}if(t.type==="extract-cutout"){const r=await Pz(t.payload.image.width,t.payload.image.height,t.payload.image.data,t.payload.mask.width,t.payload.mask.height,t.payload.mask.data);self.postMessage({id:t.id,ok:!0,type:"extract-cutout",payload:r});return}if(t.type==="upscale-image"){const r=await Bz(t.payload.image.width,t.payload.image.height,t.payload.image.data);self.postMessage({id:t.id,ok:!0,type:"upscale-image",payload:r});return}if(t.type==="remove-gemini-watermark"){const r=await Cz(t.payload);self.postMessage({id:t.id,ok:!0,type:"remove-gemini-watermark",payload:r})}}catch(r){const n={id:t.id,ok:!1,error:ka(r)};self.postMessage(n)}}})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.