museaikit
Version:
A powerful music-focused AI toolkit
2 lines • 979 kB
JavaScript
/*! For license information please see lib.js.LICENSE.txt */
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("@tensorflow/tfjs"),require("tone")):"function"==typeof define&&define.amd?define(["tf","Tone"],e):"object"==typeof exports?exports.lib=e(require("@tensorflow/tfjs"),require("tone")):t.lib=e(t.tf,t.Tone)}(self,((__WEBPACK_EXTERNAL_MODULE__6364__,__WEBPACK_EXTERNAL_MODULE__4446__)=>(()=>{var __webpack_modules__={41:(t,e,n)=>{"use strict";n.d(e,{GJ:()=>r,uI:()=>o});class r{constructor(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}get(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)}set(t,e){this.dataIdsCount++,this.data.set(t,e)}has(t){return this.data.has(t)}delete(t){return this.dataIdsCount--,this.data.delete(t)}numDataIds(){return this.dataIdsCount}}class o{time(t){return i("time")}read(t){return i("read")}readSync(t){return i("readSync")}numDataIds(){return i("numDataIds")}disposeData(t){return i("disposeData")}write(t,e,n){return i("write")}move(t,e,n,r){return i("move")}memory(){return i("memory")}floatPrecision(){return i("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}batchMatMul(t,e,n,r){return i("batchMatMul")}fusedBatchMatMul({a:t,b:e,transposeA:n,transposeB:r,bias:o,activation:s,preluActivationWeights:a}){return i("fusedBatchMatMul")}slice(t,e,n){return i("slice")}stridedSlice(t,e,n,r){return i("stridedSlice")}unstack(t,e){return i("unstack")}reverse(t,e){return i("reverse")}concat(t,e){return i("concat")}neg(t){return i("neg")}add(t,e){return i("add")}addN(t){return i("addN")}subtract(t,e){return i("subtract")}multiply(t,e){return i("multiply")}realDivide(t,e){return i("realDivide")}floorDiv(t,e){return i("floorDiv")}sum(t,e){return i("sum")}prod(t,e){return i("prod")}unsortedSegmentSum(t,e,n){return i("unsortedSegmentSum")}argMin(t,e){return i("argMin")}argMax(t,e){return i("argMax")}equal(t,e){return i("equal")}notEqual(t,e){return i("notEqual")}less(t,e){return i("less")}lessEqual(t,e){return i("lessEqual")}greater(t,e){return i("greater")}greaterEqual(t,e){return i("greaterEqual")}logicalNot(t){return i("logicalNot")}logicalAnd(t,e){return i("logicalAnd")}logicalOr(t,e){return i("logicalOr")}where(t){return i("where")}select(t,e,n){return i("select")}topk(t,e,n){return i("topk")}min(t,e){return i("min")}minimum(t,e){return i("minimum")}mod(t,e){return i("mod")}max(t,e){return i("max")}maximum(t,e){return i("maximum")}all(t,e){return i("all")}any(t,e){return i("any")}squaredDifference(t,e){return i("squaredDifference")}ceil(t){return i("ceil")}floor(t){return i("floor")}round(t){return i("round")}sign(t){return i("sign")}isNaN(t){return i("isNaN")}isInf(t){return i("isInf")}isFinite(t){return i("isFinite")}pow(t,e){return i("pow")}exp(t){return i("exp")}expm1(t){return i("expm1")}softmax(t,e){return i("softmax")}log(t){return i("log")}log1p(t){return i("log1p")}sqrt(t){return i("sqrt")}rsqrt(t){return i("rsqrt")}square(t){return i("square")}reciprocal(t){return i("reciprocal")}relu(t){return i("relu")}relu6(t){return i("relu6")}prelu(t,e){return i("prelu")}elu(t){return i("elu")}eluDer(t,e){return i("eluDer")}selu(t){return i("selu")}int(t){return i("int")}clip(t,e,n){return i("clip")}abs(t){return i("abs")}complexAbs(t){return i("complexAbs")}sigmoid(t){return i("sigmoid")}softplus(t){return i("softplus")}sin(t){return i("sin")}cos(t){return i("cos")}tan(t){return i("tan")}asin(t){return i("asin")}acos(t){return i("acos")}atan(t){return i("atan")}atan2(t,e){return i("atan2")}sinh(t){return i("sinh")}cosh(t){return i("cosh")}tanh(t){return i("tanh")}asinh(t){return i("asinh")}acosh(t){return i("acosh")}atanh(t){return i("atanh")}erf(t){return i("erf")}step(t,e){return i("step")}fusedConv2d({input:t,filter:e,convInfo:n,bias:r,activation:o,preluActivationWeights:s}){return i("fusedConv2d")}conv2d(t,e,n){return i("conv2d")}conv2dDerInput(t,e,n){return i("conv2dDerInput")}conv2dDerFilter(t,e,n){return i("conv2dDerFilter")}fusedDepthwiseConv2D({input:t,filter:e,convInfo:n,bias:r,activation:o,preluActivationWeights:s}){return i("fusedDepthwiseConv2D")}depthwiseConv2D(t,e,n){return i("depthwiseConv2D")}depthwiseConv2DDerInput(t,e,n){return i("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(t,e,n){return i("depthwiseConv2DDerFilter")}conv3d(t,e,n){return i("conv3d")}conv3dDerInput(t,e,n){return i("conv3dDerInput")}conv3dDerFilter(t,e,n){return i("conv3dDerFilter")}maxPool(t,e){return i("maxPool")}maxPoolBackprop(t,e,n,r){return i("maxPoolBackprop")}avgPool(t,e){return i("avgPool")}avgPoolBackprop(t,e,n){return i("avgPoolBackprop")}avgPool3d(t,e){return i("avgPool3d")}avgPool3dBackprop(t,e,n){return i("avgPool3dBackprop")}maxPool3d(t,e){return i("maxPool3d")}maxPool3dBackprop(t,e,n,r){return i("maxPool3dBackprop")}reshape(t,e){return i("reshape")}cast(t,e){return i("cast")}tile(t,e){return i("tile")}pad(t,e,n){return i("pad")}transpose(t,e){return i("transpose")}gather(t,e,n){return i("gather")}gatherND(t,e){return i("gatherND")}scatterND(t,e,n){return i("scatterND")}batchToSpaceND(t,e,n){return i("batchToSpaceND")}spaceToBatchND(t,e,n){return i("spaceToBatchND")}resizeBilinear(t,e,n,r){return i("resizeBilinear")}resizeBilinearBackprop(t,e,n){return i("resizeBilinearBackprop")}resizeNearestNeighbor(t,e,n,r){return i("resizeNearestNeighbor")}resizeNearestNeighborBackprop(t,e,n){return i("resizeNearestNeighborBackprop")}batchNorm(t,e,n,r,o,s){return i("batchNorm")}localResponseNormalization4D(t,e,n,r,o){return i("localResponseNormalization4D")}LRNGrad(t,e,n,r,o,s,a){return i("LRNGrad")}multinomial(t,e,n,r){return i("multinomial")}oneHot(t,e,n,r){return i("oneHot")}cumsum(t,e,n,r){return i("cumsum")}nonMaxSuppression(t,e,n,r,o){return i("nonMaxSuppression")}fft(t){return i("fft")}ifft(t){return i("ifft")}complex(t,e){return i("complex")}real(t){return i("real")}imag(t){return i("imag")}cropAndResize(t,e,n,r,o,s){return i("cropAndResize")}depthToSpace(t,e,n){return i("depthToSpace")}split(t,e,n){return i("split")}sparseToDense(t,e,n,r){return i("sparseToDense")}diag(t){return i("diag")}fill(t,e,n){return i("fill")}onesLike(t){return i("onesLike")}zerosLike(t){return i("zerosLike")}linspace(t,e,n){return i("linspace")}dispose(){return i("dispose")}}function i(t){throw new Error(`'${t}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}},73:(t,e,n)=>{"use strict";n.d(e,{o:()=>s});var r=n(6197),o=n(693),i=n(6777);const s=(0,n(3397).op)({clone_:function(t){const e=(0,i.YT)(t,"x","clone",null),n={x:e};return r.T2.runKernelFunc((()=>r.T2.makeTensorFromDataId(e.dataId,e.shape,e.dtype)),n,null,o.lz)}})},239:(t,e,n)=>{"use strict";n.d(e,{qY:()=>y,yl:()=>l,rT:()=>v,B4:()=>g,Q5:()=>m,qP:()=>f});var r=n(7315);function o(t,e,n,o){const s=(0,r.Ur)(e),c=function(t,e,n,o){const s=(0,r.Ze)(e),a=o[o.length-1],c=new Array(a).fill(0),l=e.length,h="complex64"===n?u(t):t;if(l>1)for(let t=0;t<s/a;t++){const e=t*a;for(let t=0;t<a;t++)c[t]=Math.max(c[t],i(h[e+t],0,n).length)}return c}(t,e,n,s),l=e.length,h=a(t,e,n,s,c),p=["Tensor"];return o&&(p.push(` dtype: ${n}`),p.push(` rank: ${l}`),p.push(` shape: [${e}]`),p.push(" values:")),p.push(h.map((t=>" "+t)).join("\n")),p.join("\n")}function i(t,e,n){let o;return o=Array.isArray(t)?`${parseFloat(t[0].toFixed(7))} + ${parseFloat(t[1].toFixed(7))}j`:(0,r.Kg)(t)?`'${t}'`:"bool"===n?s(t):parseFloat(t.toFixed(7)).toString(),(0,r.av)(o,e)}function s(t){return 0===t?"false":"true"}function a(t,e,n,r,o,c=!0){const l="complex64"===n?2:1,h=e[0],p=e.length;if(0===p){if("complex64"===n){return[i(u(t)[0],0,n)]}return"bool"===n?[s(t[0])]:[t[0].toString()]}if(1===p){if(h>20){const e=3*l;let r=Array.from(t.slice(0,e)),s=Array.from(t.slice((h-3)*l,h*l));return"complex64"===n&&(r=u(r),s=u(s)),["["+r.map(((t,e)=>i(t,o[e],n))).join(", ")+", ..., "+s.map(((t,e)=>i(t,o[h-3+e],n))).join(", ")+"]"]}return["["+("complex64"===n?u(t):Array.from(t)).map(((t,e)=>i(t,o[e],n))).join(", ")+"]"]}const d=e.slice(1),f=r.slice(1),m=r[0]*l,g=[];if(h>20){for(let e=0;e<3;e++){const r=e*m,i=r+m;g.push(...a(t.slice(r,i),d,n,f,o,!1))}g.push("...");for(let e=h-3;e<h;e++){const r=e*m,i=r+m;g.push(...a(t.slice(r,i),d,n,f,o,e===h-1))}}else for(let e=0;e<h;e++){const r=e*m,i=r+m;g.push(...a(t.slice(r,i),d,n,f,o,e===h-1))}const y=2===p?",":"";g[0]="["+g[0]+y;for(let t=1;t<g.length-1;t++)g[t]=" "+g[t]+y;let v=",\n";for(let t=2;t<p;t++)v+="\n";return g[g.length-1]=" "+g[g.length-1]+"]"+(c?"":v),g}function u(t){const e=[];for(let n=0;n<t.length;n+=2)e.push([t[n],t[n+1]]);return e}var c=n(6131);class l{constructor(t,e,n){if(this.dtype=e,this.shape=t.slice(),this.size=r.Ze(t),null!=n){const t=n.length;r.vA(t===this.size,(()=>`Length of values '${t}' does not match the size inferred by the shape '${this.size}'.`))}if("complex64"===e)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||r.Ab(e,this.size),this.strides=(0,r.Ur)(t)}set(t,...e){0===e.length&&(e=[0]),r.vA(e.length===this.rank,(()=>`The number of provided coordinates (${e.length}) must match the rank (${this.rank})`));const n=this.locToIndex(e);this.values[n]=t}get(...t){0===t.length&&(t=[0]);let e=0;for(const n of t){if(n<0||n>=this.shape[e]){const e=`Requested out of range element at ${t}. Buffer shape=${this.shape}`;throw new Error(e)}e++}let n=t[t.length-1];for(let e=0;e<t.length-1;++e)n+=this.strides[e]*t[e];return this.values[n]}locToIndex(t){if(0===this.rank)return 0;if(1===this.rank)return t[0];let e=t[t.length-1];for(let n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e}indexToLoc(t){if(0===this.rank)return[];if(1===this.rank)return[t];const e=new Array(this.shape.length);for(let n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e}get rank(){return this.shape.length}toTensor(){return h().makeTensor(this.values,this.shape,this.dtype)}}let h=null,p=null,d=null;function f(t){h=t}function m(t){p=t}function g(t){d=t}class y{constructor(t,e,n,o){this.kept=!1,this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||"float32",this.size=r.Ze(t),this.strides=(0,r.Ur)(t),this.dataId=n,this.id=o,this.rankType=this.rank<5?this.rank.toString():"higher"}get rank(){return this.shape.length}async buffer(){const t=await this.data();return p.buffer(this.shape,this.dtype,t)}bufferSync(){return p.buffer(this.shape,this.dtype,this.dataSync())}async array(){const t=await this.data();return(0,r.yw)(this.shape,t)}arraySync(){return(0,r.yw)(this.shape,this.dataSync())}async data(){this.throwIfDisposed();const t=h().read(this.dataId);if("string"===this.dtype){const e=await t;try{return e.map((t=>c.decodeString(t)))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return t}dataSync(){this.throwIfDisposed();const t=h().readSync(this.dataId);if("string"===this.dtype)try{return t.map((t=>c.decodeString(t)))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return t}async bytes(){this.throwIfDisposed();const t=await h().read(this.dataId);return"string"===this.dtype?t:new Uint8Array(t.buffer)}dispose(){this.isDisposed||(h().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(t=!1){return p.print(this,t)}clone(){return this.throwIfDisposed(),p.clone(this)}toString(t=!1){return o(this.dataSync(),this.shape,this.dtype,t)}cast(t){return this.throwIfDisposed(),p.cast(this,t)}variable(t=!0,e,n){return this.throwIfDisposed(),h().makeVariable(this,t,e,n)}}Object.defineProperty(y,Symbol.hasInstance,{value:t=>!!t&&null!=t.data&&null!=t.dataSync&&null!=t.throwIfDisposed});class v extends y{constructor(t,e,n,r){super(t.shape,t.dtype,t.dataId,r),this.trainable=e,this.name=n}assign(t){if(t.dtype!==this.dtype)throw new Error(`dtype of the new value (${t.dtype}) and previous value (${this.dtype}) must match`);if(!r.r1(t.shape,this.shape))throw new Error(`shape of the new value (${t.shape}) and previous value (${this.shape}) must match`);h().disposeTensor(this),this.dataId=t.dataId,h().incRef(this,null)}dispose(){h().disposeVariable(this),this.isDisposedInternal=!0}}Object.defineProperty(v,Symbol.hasInstance,{value:t=>t instanceof y&&null!=t.assign&&t.assign instanceof Function})},275:(t,e,n)=>{"use strict";n.d(e,{DDSP:()=>Zo});var r={};n.r(r),n.d(r,{mx:()=>Q,YG:()=>tt,sG:()=>et,uM:()=>nt,vS:()=>rt,px:()=>ot,jC:()=>it,BF:()=>st,Zy:()=>ut,dH:()=>q,HS:()=>ct,dl:()=>lt,_X:()=>pt,wz:()=>dt});var o=n(5239);const i={},s={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function a(t){if(!(t in i)){const e=function(t){if(1!==t&&2!==t)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");const e=function(t){if("undefined"!=typeof OffscreenCanvas&&2===t)return new OffscreenCanvas(300,150);if("undefined"!=typeof document)return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}(t);if(e.addEventListener("webglcontextlost",(e=>{e.preventDefault(),delete i[t]}),!1),1===t)return e.getContext("webgl",s)||e.getContext("experimental-webgl",s);return e.getContext("webgl2",s)}(t);if(null===e)return console.log("Could not get context for WebGL version",t),null;i[t]=e}const e=i[t];return e.isContextLost()?(delete i[t],a(t)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),i[t])}var u,c,l;function h(t,e){return[e,t]}function p(t){const e=o.ZSL.sizeFromShape(t),n=Math.ceil(e/4);return o.ZSL.sizeToSquarishShape(n)}function d(t,e){return[Math.max(1,Math.ceil(e/2)),Math.max(1,Math.ceil(t/2))]}function f(t,e){const n=t;let r,i,s,a,u,c,l,h,p,d;return 2===(0,o._K2)().getNumber("WEBGL_VERSION")?(r=n.R32F,i=n.R16F,s=n.RGBA16F,a=n.RGBA32F,u=n.RED,l=4,h=1,p=n.HALF_FLOAT,d=n.FLOAT):(r=t.RGBA,i=t.RGBA,s=t.RGBA,a=n.RGBA,u=t.RGBA,l=4,h=4,p=null!=e?e.HALF_FLOAT_OES:null,d=t.FLOAT),c=t.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:i,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:a,textureFormatFloat:u,downloadTextureFormat:c,downloadUnpackNumChannels:l,defaultNumChannels:h,textureTypeHalfFloat:p,textureTypeFloat:d}}function m(t,e){const n=e();return(0,o._K2)().getBool("DEBUG")&&function(t){const e=t.getError();if(e!==t.NO_ERROR)throw new Error("WebGL Error: "+function(t,e){switch(e){case t.NO_ERROR:return"NO_ERROR";case t.INVALID_ENUM:return"INVALID_ENUM";case t.INVALID_VALUE:return"INVALID_VALUE";case t.INVALID_OPERATION:return"INVALID_OPERATION";case t.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case t.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case t.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return`Unknown error code ${e}`}}(t,e))}(t),n}!function(t){t[t.DENSE=0]="DENSE",t[t.SHARED_BATCH=1]="SHARED_BATCH"}(u||(u={})),function(t){t[t.RENDER=0]="RENDER",t[t.UPLOAD=1]="UPLOAD",t[t.PIXELS=2]="PIXELS",t[t.DOWNLOAD=3]="DOWNLOAD"}(c||(c={})),function(t){t[t.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",t[t.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",t[t.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",t[t.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",t[t.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"}(l||(l={}));function g(t){return!!((0,o._K2)().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||0===t||5.96e-8<Math.abs(t)&&Math.abs(t)<65504)}function y(t,e){return A(t,(()=>t.getExtension(e)),'Extension "'+e+'" not supported on this browser.')}function v(t,e){const n=A(t,(()=>t.createShader(t.FRAGMENT_SHADER)),"Unable to create fragment WebGLShader.");if(m(t,(()=>t.shaderSource(n,e))),m(t,(()=>t.compileShader(n))),!1===t.getShaderParameter(n,t.COMPILE_STATUS))throw function(t,e){const n=b.exec(e);if(null==n)return console.log(`Couldn't parse line number in error: ${e}`),void console.log(t);const r=+n[1],i=t.split("\n"),s=i.length.toString().length+2,a=i.map(((t,e)=>o.ZSL.rightPad((e+1).toString(),s)+t));let u=0;for(let t=0;t<a.length;t++)u=Math.max(a[t].length,u);const c=a.slice(0,r-1),l=a.slice(r-1,r),h=a.slice(r);console.log(c.join("\n")),console.log(e.split("\n")[0]),console.log(`%c ${o.ZSL.rightPad(l[0],u)}`,"border:1px solid red; background-color:#e3d2d2; color:#a61717"),console.log(h.join("\n"))}(e,t.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}const b=/ERROR: [0-9]+:([0-9]+):/g;function w(t,e){if(m(t,(()=>t.validateProgram(e))),!1===t.getProgramParameter(e,t.VALIDATE_STATUS))throw console.log(t.getProgramInfoLog(e)),new Error("Shader program validation failed.")}function S(t,e,n,r,o,i,s){const a=t.getAttribLocation(e,n);return-1!==a&&(m(t,(()=>t.bindBuffer(t.ARRAY_BUFFER,r))),m(t,(()=>t.vertexAttribPointer(a,o,t.FLOAT,!1,i,s))),m(t,(()=>t.enableVertexAttribArray(a))),!0)}function x(t,e,n,r){m(t,(()=>function(t,e,n){I(t,n),m(t,(()=>t.activeTexture(t.TEXTURE0+n))),m(t,(()=>t.bindTexture(t.TEXTURE_2D,e)))}(t,e,r))),m(t,(()=>t.uniform1i(n,r)))}function T(t,e,n){m(t,(()=>t.bindFramebuffer(t.FRAMEBUFFER,n))),m(t,(()=>t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)))}function C(t,e){m(t,(()=>t.bindFramebuffer(t.FRAMEBUFFER,e))),m(t,(()=>t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)))}function E(t){const e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+function(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case t.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${e}`}}(t,e))}function A(t,e,n){const r=m(t,(()=>e()));if(null==r)throw new Error(n);return r}function I(t,e){const n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(r<t.TEXTURE0||r>n){throw new Error(`textureUnit must be in ${`[gl.TEXTURE0, gl.TEXTURE${n}]`}.`)}}function k(t,e=2){return o.ZSL.sizeFromShape(t.slice(0,t.length-e))}function N(t){if(0===t.length)throw Error("Cannot get rows and columns of an empty shape array.");return[t.length>1?t[t.length-2]:1,t[t.length-1]]}function _(t){let e=[1,1,1];return 0===t.length||1===t.length&&1===t[0]||(e=[k(t),...N(t)]),e}function P(t){return t%2==0}function $(t,e){if(t=t.slice(-2),e=e.slice(-2),o.ZSL.arraysEqual(t,e))return!0;if(!t.length||!e.length)return!0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return!0;if(t.length!==e.length){const n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return!0;if(P(n)&&P(r)&&(1===t[0]||1===e[0]))return!0}return t[1]===e[1]&&P(t[0])&&P(e[0])}let R,O;function M(t,e){return null!=t.getExtension(e)}function D(t){try{if(null!=a(t))return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function L(t){if(0===t)return!1;const e=a(t);if(1!==t){if(M(e,"EXT_color_buffer_float"))return F(e);const t="EXT_color_buffer_half_float";if(M(e,t)){const n=e.getExtension(t);return function(t,e){const n=f(t,e),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);const o=1,i=1;t.texImage2D(t.TEXTURE_2D,0,n.internalFormatHalfFloat,o,i,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);const s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);const a=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(s),a}(e,n)}return!1}if(!M(e,"OES_texture_float"))return!1;if(!M(e,"WEBGL_color_buffer_float"))return!1;return F(e)}function F(t){const e=f(t),n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n);t.texImage2D(t.TEXTURE_2D,0,e.internalFormatFloat,1,1,0,e.textureFormatFloat,e.textureTypeFloat,null);const r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0);const o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(n),t.deleteFramebuffer(r),o}function B(t,e){Array.isArray(t)||(t=[t]),t.forEach((t=>{null!=t&&o.ZSL.assert("complex64"!==t.dtype,(()=>`${e} does not support complex64 tensors in the WebGL backend.`))}))}const z=(0,o._K2)();function q(t){const e=new Float32Array(t.length);for(let n=0;n<t.length;++n)e[n]=Math.abs(t[n]);return e}z.registerFlag("HAS_WEBGL",(()=>z.getNumber("WEBGL_VERSION")>0)),z.registerFlag("WEBGL_VERSION",(()=>D(2)?2:D(1)?1:0)),z.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",(()=>!1)),z.registerFlag("WEBGL_BUFFER_SUPPORTED",(()=>2===z.get("WEBGL_VERSION"))),z.registerFlag("WEBGL_CPU_FORWARD",(()=>!0)),z.registerFlag("WEBGL_FORCE_F16_TEXTURES",(()=>!1)),z.registerFlag("WEBGL_PACK",(()=>z.getBool("HAS_WEBGL"))),z.registerFlag("WEBGL_PACK_NORMALIZATION",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_PACK_CLIP",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_PACK_DEPTHWISECONV",(()=>!1)),z.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_PACK_REDUCE",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_LAZILY_UNPACK",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_CONV_IM2COL",(()=>z.getBool("WEBGL_PACK"))),z.registerFlag("WEBGL_MAX_TEXTURE_SIZE",(()=>function(t){if(null==R){const e=a(t);R=e.getParameter(e.MAX_TEXTURE_SIZE)}return R}(z.getNumber("WEBGL_VERSION")))),z.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",(()=>function(t){if(null==O){const e=a(t);O=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,O)}(z.getNumber("WEBGL_VERSION")))),z.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",(()=>{const t=z.getNumber("WEBGL_VERSION");return 0===t?0:function(t){if(0===t)return 0;let e;const n=a(t);return e=M(n,"EXT_disjoint_timer_query_webgl2")&&2===t?2:M(n,"EXT_disjoint_timer_query")?1:0,e}(t)})),z.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",(()=>z.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!o.eMq.isMobile())),z.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",(()=>function(t){if(0===t)return!1;const e=a(t);if(1===t){if(!M(e,"OES_texture_float"))return!1}else if(!M(e,"EXT_color_buffer_float"))return!1;return F(e)}(z.getNumber("WEBGL_VERSION")))),z.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",(()=>!z.getBool("WEBGL_FORCE_F16_TEXTURES")&&z.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"))),z.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",(()=>L(z.getNumber("WEBGL_VERSION")))),z.registerFlag("WEBGL_FENCE_API_ENABLED",(()=>{return 2===(t=z.getNumber("WEBGL_VERSION"))&&null!=a(t).fenceSync;var t})),z.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",(()=>z.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0)),z.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",(()=>-1),(t=>{if(t<0&&-1!==t)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${t}.`)}));o.ljI;function U(t){return(e,n,r,i,s)=>{const a=o.C0T.assertAndGetBroadcastShape(e,n),u=a.length,c=o.ZSL.computeStrides(a),l=o.ZSL.sizeFromShape(a),h=o.ZSL.getTypedArrayFromDType(s,l),p=e.length,d=n.length,f=o.ZSL.computeStrides(e),m=o.ZSL.computeStrides(n),g=o.C0T.getBroadcastDims(e,a),y=o.C0T.getBroadcastDims(n,a);if(g.length+y.length===0)for(let e=0;e<h.length;++e)h[e]=t(r[e%r.length],i[e%i.length]);else for(let e=0;e<h.length;++e){const n=o.ZSL.indexToLoc(e,u,c),s=n.slice(-p);g.forEach((t=>s[t]=0));const a=o.ZSL.locToIndex(s,p,f),l=n.slice(-d);y.forEach((t=>l[t]=0));const v=o.ZSL.locToIndex(l,d,m);h[e]=t(r[a],i[v])}return[h,a]}}function V(t,e){Array.isArray(t)||(t=[t]),t.forEach((t=>{null!=t&&o.ZSL.assert("complex64"!==t.dtype,(()=>`${e} does not support complex64 tensors in the CPU backend.`))}))}function G(t){const{inputs:e,backend:n}=t,{real:r,imag:o}=e,i=n.data.get(r.dataId).values,s=n.data.get(o.dataId).values,a=n.makeTensorInfo(r.shape,"complex64");return n.data.get(a.dataId).complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",i),imag:n.makeTensorInfo(o.shape,"float32",s)},a}o.pr3;function j(t){const{inputs:e,backend:n}=t,{x:r}=e;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}o.lzr;function W(t){const{inputs:e,backend:n}=t,{input:r}=e,o=n.data.get(r.dataId).complexTensorInfos.real,i=n.data.get(o.dataId).values;return n.makeTensorInfo(o.shape,o.dtype,i)}o.LRy;function H(t){const{inputs:e,backend:n,attrs:r}=t,{x:i}=e,{dtype:s}=r;if("complex64"===s){if("complex64"===i.dtype)return j({inputs:{x:i},backend:n});const t=o.Ul9(i.shape),e=H({inputs:{x:i},backend:n,attrs:{dtype:"float32"}}),r=G({inputs:{real:e,imag:t},backend:n});return t.dispose(),n.disposeIntermediateTensorInfo(e),r}if("complex64"===i.dtype){const t=W({inputs:{input:i},backend:n}),e=H({inputs:{x:t},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(t),e}if(!o.ZSL.hasEncodingLoss(i.dtype,s)){const t=j({inputs:{x:i},backend:n});return{dataId:t.dataId,shape:t.shape,dtype:s}}if("int32"===s){const t=n.data.get(i.dataId).values,e=Int32Array.from(t);return n.makeTensorInfo(i.shape,"int32",e)}if("bool"===s){const t=n.data.get(i.dataId).values,e=o.ZSL.toTypedArray([0],i.dtype),[r,s]=U(((t,e)=>t!==e?1:0))(i.shape,[],t,e,"bool");return n.makeTensorInfo(s,"bool",r)}throw new Error(`Error in Cast: failed to cast ${i.dtype} to ${s}`)}o.KXH;function K(t,e,n,r){return null==n?({inputs:n,backend:o})=>{const{a:i,b:s}=n,a=o;V([i,s],t);const u=a.data.get(i.dataId).values,c=a.data.get(s.dataId).values,l=r||i.dtype,[h,p]=e(i.shape,s.shape,u,c,l);return a.makeTensorInfo(p,l,h)}:({inputs:t,backend:o})=>{const{a:i,b:s}=t,a=o;if("complex64"===i.dtype||"complex64"===s.dtype){const t=H({inputs:{x:i},backend:a,attrs:{dtype:"complex64"}}),e=a.data.get(t.dataId),r=e.complexTensorInfos.real,o=e.complexTensorInfos.imag,u=a.data.get(r.dataId).values,c=a.data.get(o.dataId).values,l=H({inputs:{x:s},backend:a,attrs:{dtype:"complex64"}}),h=a.data.get(l.dataId),p=h.complexTensorInfos.real,d=h.complexTensorInfos.imag,f=a.data.get(p.dataId).values,m=a.data.get(d.dataId).values,[g,y,v]=n(i.shape,s.shape,u,c,f,m),b=a.makeTensorInfo(v,"float32",g),w=a.makeTensorInfo(v,"float32",y),S=G({inputs:{real:b,imag:w},backend:a});return a.disposeIntermediateTensorInfo(t),a.disposeIntermediateTensorInfo(l),a.disposeIntermediateTensorInfo(b),a.disposeIntermediateTensorInfo(w),S}{const t=a.data.get(i.dataId).values,n=a.data.get(s.dataId).values,o=r||i.dtype,[u,c]=e(i.shape,s.shape,t,n,o);return a.makeTensorInfo(c,o,u)}}}function Y(t){return(e,n,r,i,s,a)=>{const u=o.C0T.assertAndGetBroadcastShape(e,n),c=o.ZSL.sizeFromShape(u),l=u.length,h=o.ZSL.computeStrides(u),p=o.ZSL.getTypedArrayFromDType("float32",c),d=o.ZSL.getTypedArrayFromDType("float32",c),f=o.C0T.getBroadcastDims(e,u),m=o.C0T.getBroadcastDims(n,u),g=o.C0T.mergeRealAndImagArrays(r,i),y=o.C0T.mergeRealAndImagArrays(s,a),v=e.length,b=o.ZSL.computeStrides(e),w=n.length,S=o.ZSL.computeStrides(n);if(f.length+m.length===0)for(let e=0;e<p.length;e++){const n=e%g.length,r=e%y.length,o=t(g[2*n],g[2*n+1],y[2*r],y[2*r+1]);p[e]=o.real,d[e]=o.imag}else for(let e=0;e<p.length;e++){const n=o.ZSL.indexToLoc(e,l,h),r=n.slice(-v);f.forEach((t=>r[t]=0));const i=o.ZSL.locToIndex(r,v,b),s=n.slice(-w);m.forEach((t=>s[t]=0));const a=o.ZSL.locToIndex(s,w,S),u=t(g[2*i],g[2*i+1],y[2*a],y[2*a+1]);p[e]=u.real,d[e]=u.imag}return[p,d,u]}}const Q=U(((t,e)=>t+e)),X=Y(((t,e,n,r)=>({real:t+n,imag:e+r})));K(o.OMN,Q,X),o.OMN;function Z(t){return(e,n,r)=>{const i=o.ZSL.getTypedArrayFromDType(n,e.length);for(let n=0;n<e.length;++n)i[n]=t(e[n],r);return i}}function J(t,e,n){return({inputs:r,attrs:o,backend:i})=>{const{x:s}=r;if(V(s,t),"string"===s.dtype||"string"===n)throw new Error("unaryKernelFunc does not support string input/output");const a=i,u=a.data.get(s.dataId).values,c=n||s.dtype,l=e(u,c,o);return a.makeTensorInfo(s.shape,c,l)}}const tt=Z((t=>Math.ceil(t))),et=(J(o.QDP,tt),o.QDP,Z((t=>Math.exp(t)))),nt=(J(o.ox3,et),o.ox3,Z((t=>Math.expm1(t)))),rt=(J(o.ybj,nt),o.ybj,Z((t=>Math.floor(t)))),ot=(J(o.ZgB,rt),o.ZgB,Z((t=>Math.log(t))));J(o.tG8,ot),o.tG8;function it(t,e,n,r){const i=o.ZSL.getTypedArrayFromDType(r,o.ZSL.sizeFromShape(n));for(let n=0;n<i.length;++n){const r=n*e;let o=t[r];for(let n=0;n<e;++n){const e=t[r+n];e>o&&(o=e)}i[n]=o}return i}const st=U(((t,e)=>t*e)),at=Y(((t,e,n,r)=>({real:t*n-e*r,imag:t*r+e*n}))),ut=(K(o.xu7,st,at),o.xu7,Z((t=>1/Math.sqrt(t))));J(o.TOR,ut),o.TOR;function ct(t,e,n,r,i){const s=o.Kro.isSliceContinous(r,e,n),a=o.ZSL.sizeFromShape(n),u=o.ZSL.computeStrides(r);if(s){const n=o.Kro.computeFlatOffset(e,u);return t.subarray(n,n+a)}const c=o.ZSL.getTypedArrayFromDType(i,a);for(let i=0;i<a;++i){const s=n.length,a=o.ZSL.computeStrides(n),l=o.ZSL.indexToLoc(i,s,a).map(((t,n)=>t+e[n])),h=o.ZSL.locToIndex(l,r.length,u);c[i]=t[h]}return c}o.JiE;const lt=U(((t,e)=>t-e)),ht=Y(((t,e,n,r)=>({real:t-n,imag:e-r})));K(o.PbM,lt,ht),o.PbM;function pt(t,e,n,r,i){const s=e.length,a=o.ZSL.sizeFromShape(e),u=o.ZSL.computeStrides(e),c=o.ZSL.computeStrides(i),l=o.ZSL.getTypedArrayFromDType(n,o.ZSL.sizeFromShape(i));for(let e=0;e<a;++e){const n=o.ZSL.indexToLoc(e,s,u),i=new Array(n.length);for(let t=0;t<i.length;t++)i[t]=n[r[t]];l[o.ZSL.locToIndex(i,s,c)]=t[e]}return l}function dt(t,e,n,r){const i=o.ZSL.parseAxisParam(e,n)[0],s=[1,n[0],1];for(let t=0;t<i;t++)s[0]*=n[t];s[1]=n[i];for(let t=i+1;t<n.length;t++)s[2]*=n[t];const a={},u=new Int32Array(n[i]),c=new o.ylz(s,r,t),l=[],h=1===s[0]&&1===s[2];for(let e=0;e<n[i];e++){let n;if(h)n=t[e].toString();else{const t=[];for(let n=0;n<s[0];n++)for(let r=0;r<s[2];r++)t.push(c.get(n,e,r));n=t.join(",")}if(void 0!==a[n])u[e]=a[n];else{const t=Object.keys(a).length;a[n]=t,u[e]=t,l.push(e)}}const p=s.slice();p[1]=Object.keys(a).length;const d=new o.ylz(p,r);l.forEach(((t,e)=>{for(let n=0;n<s[0];n++)for(let r=0;r<s[2];r++)d.set(c.get(n,t,r),n,e,r)}));const f=n.slice();return f[i]=p[1],{outputValues:d.values,outputShape:f,indices:u}}const{dH:ft,mx:mt,YG:gt,sG:yt,uM:vt,vS:bt,px:wt,jC:St,BF:xt,Zy:Tt,HS:Ct,dl:Et,_X:At,wz:It}=r;class kt{constructor(t,e){this.outputShape=[],this.outputShape=t,this.variableNames=e.map(((t,e)=>`T${e}`));const n=[];this.variableNames.forEach((t=>{n.push(`float v${t} = get${t}AtOutCoords();`)}));const r=this.variableNames.map((t=>`v${t}`)).join(" + ");this.userCode=`\n void main() {\n ${n.join("\n ")}\n\n float result = ${r};\n setOutput(result);\n }\n `}}class Nt{constructor(t,e){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.variableNames=e.map(((t,e)=>`T${e}`));const n=[];this.variableNames.forEach((t=>{n.push(`vec4 v${t} = get${t}AtOutCoords();`)}));const r=this.variableNames.map((t=>`v${t}`)).join(" + ");this.userCode=`\n void main() {\n ${n.join("\n ")}\n\n vec4 result = ${r};\n setOutput(result);\n }\n `}}class _t{constructor(t,e,n){this.variableNames=["A"];const{windowSize:r,batchSize:o,outSize:i}=t;n||this.variableNames.push("bestIndicesA"),this.outputShape=[o,i];const s="max"===e?">":"<",a=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=`\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ${r};\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < ${r}; i++) {\n int inIdx = ${a};\n float candidate = getA(batch, inIdx);\n if (candidate ${s} bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n `}}function Pt(t,e){return["x","y","z","w","u","v"].slice(0,e).map((e=>`${t}.${e}`))}function $t(t,e){return 1===e?[t]:Pt(t,e)}function Rt(){let t,e,n,r,i,s,a,u,c,l;return 2===(0,o._K2)().getNumber("WEBGL_VERSION")?(t="#version 300 es",e="in",n="out",r="in",i="texture",s="outputColor",a="out vec4 outputColor;",u="\n bool isnan_custom(float val) {\n return (val > 0.0 || val < 0.0) ? false : val != 0.0;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n ",c="",l="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(t="",e="attribute",n="varying",r="varying",i="texture2D",s="gl_FragColor",a="",u="\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n ",c="\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n ",l="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:i,output:s,defineOutput:a,defineSpecialNaN:u,defineSpecialInf:c,defineRound:l}}function Ot(t,e,n="index"){const r=o.ZSL.computeStrides(e);return r.map(((e,o)=>`${`int ${t[o]} = ${n} / ${e}`}; ${o===r.length-1?`int ${t[o+1]} = ${n} - ${t[o]} * ${e}`:`index -= ${t[o]} * ${e}`};`)).join("")}function Mt(t){const e=o.ZSL.computeStrides(t).map((t=>t.toString()));return`\n int getFlatIndex(ivec3 coords) {\n return coords.x * ${e[0]} + coords.y * ${e[1]} + coords.z;\n }\n`}const Dt="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n",{getBroadcastDims:Lt}=o.C0T;function Ft(t,e,n,r){const i=[];t.forEach((t=>{const e=o.ZSL.sizeFromShape(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?i.push(`uniform float ${t.name}${e>1?`[${e}]`:""};`):(i.push(`uniform sampler2D ${t.name};`),i.push(`uniform int offset${t.name};`))}));const s=i.join("\n"),a=t.map((t=>function(t,e,n=!1){let r="";r+=n?zt(t):Bt(t);const i=t.shapeInfo.logicalShape,s=e.logicalShape;i.length<=s.length&&(r+=n?function(t,e){const n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),i="get"+r+"AtOutCoords",s=t.shapeInfo.logicalShape.length,a=e.logicalShape.length,u=Lt(t.shapeInfo.logicalShape,e.logicalShape),c=Kt(a),l=a-s;let h;const p=["x","y","z","w","u","v"];h=0===s?"":a<2&&u.length>=1?"coords = 0;":u.map((t=>`coords.${p[t+l]} = 0;`)).join("\n");let d="";d=a<2&&s>0?"coords":t.shapeInfo.logicalShape.map(((t,e)=>`coords.${p[e+l]}`)).join(", ");let f="return outputValue;";const m=1===o.ZSL.sizeFromShape(t.shapeInfo.logicalShape),g=o.ZSL.sizeFromShape(e.logicalShape),y=1===g;if(1!==s||m||y){if(m&&!y)f=1===a?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(u.length){const t=s-2,e=s-1;u.indexOf(t)>-1&&u.indexOf(e)>-1?f="return vec4(outputValue.x);":u.indexOf(t)>-1?f="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":u.indexOf(e)>-1&&(f="return vec4(outputValue.xx, outputValue.zz);")}}else f="\n return vec4(outputValue.xy, outputValue.xy);\n ";return`\n vec4 ${i}() {\n ${c} coords = getOutputCoords();\n ${h}\n vec4 outputValue = get${r}(${d});\n ${f}\n }\n `}(t,e):function(t,e){const n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),i="get"+r+"AtOutCoords",s=e.texShape,a=t.shapeInfo.texShape,u=t.shapeInfo.logicalShape.length,c=e.logicalShape.length;if(!t.shapeInfo.isUniform&&u===c&&null==t.shapeInfo.flatOffset&&o.ZSL.arraysEqual(a,s))return`\n float ${i}() {\n return sampleTexture(${n}, resultUV);\n }\n `;const l=Kt(c),h=Lt(t.shapeInfo.logicalShape,e.logicalShape),p=c-u;let d;const f=["x","y","z","w","u","v"];d=0===u?"":c<2&&h.length>=1?"coords = 0;":h.map((t=>`coords.${f[t+p]} = 0;`)).join("\n");let m="";m=c<2&&u>0?"coords":t.shapeInfo.logicalShape.map(((t,e)=>`coords.${f[e+p]}`)).join(", ");return`\n float ${i}() {\n ${l} coords = getOutputCoords();\n ${d}\n return get${r}(${m});\n }\n `}(t,e));return r}(t,e,r))).join("\n"),u=e.texShape,c=Rt(),l=function(t){return`\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return ${t.texture2D}(textureSampler, uv).r;\n }\n `}(c);let h,p,d=function(t){const e=`${t.version}\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n ${t.varyingFs} vec2 resultUV;\n ${t.defineOutput}\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n ${t.defineSpecialNaN}\n ${t.defineSpecialInf}\n ${t.defineRound}\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n ${qt}\n ${Ut}\n ${Vt}\n `;return e}(c);e.isPacked?(h=function(t,e){switch(t.length){case 0:return jt();case 1:return function(t,e){const n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(1===n[0])return`\n int getOutputCoords() {\n return 2 * int(resultUV.x * ${n[1]}.0);\n }\n `;if(1===n[1])return`\n int getOutputCoords() {\n return 2 * int(resultUV.y * ${n[0]}.0);\n }\n `;return`\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${n[0]}, ${n[1]}));\n return 2 * (resTexRC.x * ${n[1]} + resTexRC.y);\n }\n `}(0,e);case 2:return function(t,e){const n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(o.ZSL.arraysEqual(t,e))return`\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2(${n[0]}, ${n[1]}));\n }\n `;const r=Math.ceil(t[1]/2);return`\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${n[0]}, ${n[1]}));\n\n int index = resTexRC.x * ${n[1]} + resTexRC.y;\n int r = 2 * (index / ${r});\n int c = imod(index, ${r}) * 2;\n\n return ivec2(r, c);\n }\n `}(t,e);case 3:return function(t,e){const n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[2]/2),o=r*Math.ceil(t[1]/2);return`\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${n[0]}, ${n[1]}));\n int index = resTexRC.x * ${n[1]} + resTexRC.y;\n\n int b = index / ${o};\n index -= b * ${o};\n\n int r = 2 * (index / ${r});\n int c = imod(index, ${r}) * 2;\n\n return ivec3(b, r, c);\n }\n `}(t,e);default:return function(t,e){const n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),o=r*Math.ceil(t[t.length-2]/2);let i=o,s="",a="b, r, c";for(let e=2;e<t.length-1;e++)i*=t[t.length-e-1],s=`\n int b${e} = index / ${i};\n index -= b${e} * ${i};\n `+s,a=`b${e}, `+a;return`\n ivec${t.length} getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${n[0]}, ${n[1]}));\n int index = resTexRC.x * ${n[1]} + resTexRC.y;\n\n ${s}\n\n int b = index / ${o};\n index -= b * ${o};\n\n int r = 2 * (index / ${r});\n int c = imod(index, ${r}) * 2;\n\n return ivec${t.length}(${a});\n }\n `}(t,e)}}(e.logicalShape,u),p=function(t){return`\n void setOutput(vec4 val) {\n ${t.output} = val;\n }\n `}(c)):(h=function(t,e){switch(t.length){case 0:return jt();case 1:return function(t,e){if(1===e[0])return`\n int getOutputCoords() {\n return int(resultUV.x * ${e[1]}.0);\n }\n `;if(1===e[1])return`\n int getOutputCoords() {\n return int(resultUV.y * ${e[0]}.0);\n }\n `;return`\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n return resTexRC.x * ${e[1]} + resTexRC.y;\n }\n `}(0,e);case 2:return function(t,e){if(o.ZSL.arraysEqual(t,e))return`\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2(${e[0]}, ${e[1]}));\n }\n `;if(1===t[1])return`\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n return ivec2(index, 0);\n }\n `;if(1===t[0])return`\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n return ivec2(0, index);\n }\n `;return`\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n int r = index / ${t[1]};\n int c = index - r * ${t[1]};\n return ivec2(r, c);\n }\n `}(t,e);case 3:return function(t,e){const n=Ot(["r","c","d"],t);return`\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n ${n}\n return ivec3(r, c, d);\n }\n `}(t,e);case 4:return function(t,e){const n=Ot(["r","c","d","d2"],t);return`\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n ${n}\n return ivec4(r, c, d, d2);\n }\n `}(t,e);case 5:return function(t,e){const n=Ot(["r","c","d","d2","d3"],t);return`\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2(${e[0]},\n ${e[1]}));\n\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n\n ${n}\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n `}(t,e);case 6:return function(t,e){const n=Ot(["r","c","d","d2","d3","d4"],t);return`\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(${e[0]}, ${e[1]}));\n int index = resTexRC.x * ${e[1]} + resTexRC.y;\n\n ${n}\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n `}(t,e);default:throw new Error(`${t.length}-D output sampling is not yet supported`)}}(e.logicalShape,u),p=function(t){return`\n void setOutput(float val) {\n ${t.output} = vec4(val, 0, 0, 0);\n }\n `}(c)),r&&(d+=Gt);return[d,l,p,s,h,a,n].join("\n")}function Bt(t){const e=t.shapeInfo.logicalShape;switch(e.length){case 0:return function(t){const e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return`float ${n}() {return ${e};}`;const[r,o]=t.shapeInfo.texShape;if(1===r&&1===o)return`\n float ${n}() {\n return sampleTexture(${e}, halfCR);\n }\n `;const[i,s]=t.shapeInfo.texShape,a=Wt(e);return`\n float ${n}() {\n vec2 uv = uvFromFlat(${i}, ${s}, ${a});\n return sampleTexture(${e}, uv);\n }\n `}(t);case 1:return function(t){const e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return`\n float ${n}(int index) {\n ${Ht(t)}\n }\n `;const r=t.shapeInfo.texShape,o=r[0],i=r[1];if(1===i&&1===o)return`\n float ${n}(int index) {\n return sampleTexture(${e}, halfCR);\n }\n `;const s=Wt(e);if(1===i)return`\n float ${n}(int index) {\n vec2 uv = vec2(0.5, (float(index + ${s}) + 0.5) / ${o}.0);\n return sampleTexture(${e}, uv);\n }\n `;if(1===o)return`\n float ${n}(int index) {\n vec2 uv = vec2((float(index + ${s}) + 0.5) / ${i}.0, 0.5);\n return sampleTexture(${e}, uv);\n }\n `;return`\n float ${n}(int index) {\n vec2 uv = uvFromFlat(${o}, ${i}, index + ${s});\n return sampleTexture(${e}, uv);\n }\n `}(t);case 2:return function(t){const e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=t.shapeInfo.texShape;if(null!=i&&o.ZSL.arraysEqual(e,i)){const t=i[0];return`\n float ${r}(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2(${i[1]}.0, ${t}.0);\n return sampleTexture(${n}, uv);\n }\n `}const{newShape:s,keptDims:a}=o.ZSL.squeezeShape(e),u=s;if(u.length<e.length){const e=["row","col"];return`\n ${Bt(Yt(t,u))}\n float ${r}(int row, int col) {\n return ${r}(${Qt(e,a)});\n }\n `}if(t.shapeInfo.isUniform)return`\n float ${r}(int row, int col) {\n int index = round(dot(vec2(row, col), vec2(${e[1]}, 1)));\n ${Ht(t)}\n }\n `;const c=i[0],l=i[1],h=Wt(n);if(1===l)return`\n float ${r}(int row, int col) {\n float index = dot(vec3(row, col, ${h}), vec3(${e[1]}, 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / ${c}.0);\n return sampleTexture(${n}, uv);\n }\n `;if(1===c)return`\n float ${r}(int row, int col) {\n float index = dot(vec3(row, col, ${h}), vec3(${e[1]}, 1, 1));\n vec2 uv = vec2((index + 0.5) / ${l}.0, 0.5);\n return sampleTexture(${n}, uv);\n }\n `;return`\n float ${r}(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${e[1]} + col + ${h};\n vec2 uv = uvFromFlat(${c}, ${l}, index);\n return sampleTexture(${n}, uv);\n }\n`}(t);case 3:return function(t){const e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=e[1]*e[2],s=e[2],{newShape:a,keptDims:u}=o.ZSL.squeezeShape(e),c=a;if(c.length<e.length){const e=["row","col","depth"];return`\n ${Bt(Yt(t,c))}\n float ${r}(int row, int col, int depth) {\n return ${r}(${Qt(e,u)});\n }\n `}if(t.shapeInfo.isUniform)return`\n float ${r}(int row, int col, int depth) {\n int index = round(dot(vec3(row, col, depth),\n vec3(${i}, ${s}, 1)));\n ${Ht(t)}\n }\n `;const l=t.shapeInfo.texShape,h=l[0],p=l[1],d=t.shapeInfo.flatOffset;if(p===i&&null==d)return`\n float ${r}(int row, int col, int depth) {\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2(${s}, 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(${p}.0, ${h}.0);\n return sampleTexture(${n}, uv);\n }\n `;if(p===s&&null==d)return`\n float ${r}(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2(${e[1]}, 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${p}.0, ${h}.0);\n return sampleTexture(${n}, uv);\n }\n `;const f=Wt(n);return`\n float ${r}(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * ${i} + col * ${s} + depth + ${f};\n vec2 uv = uvFromFlat(${h}, ${p}, index);\n return sampleTexture(${n}, uv);\n }\n `}(t);case 4:return function(t){const e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=e[3],s=e[2]*i,a=e[1]*s,{newShape:u,keptDims:c}=o.ZSL.squeezeShape(e);if(u.length<e.length){const e=["row","col","depth","depth2"];return`\n ${Bt(Yt(t,u))}\n float ${r}(int row, int col, int depth, int depth2) {\n return ${r}(${Qt(e,c)});\n }\n `}if(t.shapeInfo.isUniform)return`\n float ${r}(int row, int col, int depth, int depth2) {\n int index = round(dot(vec4(row, col, depth, depth2),\n vec4(${a}, ${s}, ${i}, 1)