From 5de30e6233ef9fc5616a14b3b648ee0b84d8c6c7 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 13 Dec 2021 21:38:55 -0500 Subject: [PATCH] rebuild --- CHANGELOG.md | 3 ++- demo/index.js | 9 +++++---- dist/human.js | 36 ++++++++++++++++++------------------ package.json | 10 +++++----- test/build.log | 48 ++++++++++++++++++++++++------------------------ 5 files changed, 54 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fc98a81..3921432f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,9 @@ ## Changelog -### **HEAD -> main** 2021/12/07 mandic00@live.com +### **HEAD -> main** 2021/12/09 mandic00@live.com +- fix node detection in electron environment ### **2.5.5** 2021/12/01 mandic00@live.com diff --git a/demo/index.js b/demo/index.js index 5d1086fd..7e424418 100644 --- a/demo/index.js +++ b/demo/index.js @@ -390,10 +390,11 @@ async function setupCamera() { }, }; // enumerate devices for diag purposes - if (initialCameraAccess) { - navigator.mediaDevices.enumerateDevices().then((devices) => log('enumerated input devices:', devices)); - log('camera constraints', constraints); - } + const devices = await navigator.mediaDevices.enumerateDevices(); + if (initialCameraAccess) log('enumerated input devices:', devices); + // to select specific camera add deviceid from enumerated devices to camera constraints + // constraints.video.deviceId = '6794499e046cf4aebf41cfeb7d1ef48a17bd65f72bafb55f3c0b06405d3d487b'; + if (initialCameraAccess) log('camera constraints', constraints); try { stream = await navigator.mediaDevices.getUserMedia(constraints); } catch (err) { diff --git a/dist/human.js b/dist/human.js index 100432e6..100b48a1 100644 --- a/dist/human.js +++ b/dist/human.js @@ -4,7 +4,7 @@ author: ' */ -var Human=(()=>{var g2=Object.defineProperty;var zE=(e,t,n)=>t in e?g2(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var LE=e=>g2(e,"__esModule",{value:!0});var ed=(e,t)=>{LE(e);for(var n in t)g2(e,n,{get:t[n],enumerable:!0})};var fe=(e,t,n)=>(zE(e,typeof t!="symbol"?t+"":t,n),n),H5=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var td=(e,t,n)=>(H5(e,t,"read from private field"),n?n.call(e):t.get(e)),nd=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},sd=(e,t,n,s)=>(H5(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n);var q1e={};ed(q1e,{Human:()=>VN,default:()=>VN,defaults:()=>Ia,env:()=>pe});function J(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function We(e,t){let n=e.endsWith("/")?"":"/",r=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${n}${t}`;if(!r.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${r}`);return r}var ie=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function y2(e,t,n="config",s=[]){for(let r of Object.keys(t))if(typeof t[r]=="object")y2(e[r],t[r],r,s);else{let a=e&&typeof e[r]!="undefined";a||s.push({reason:"unknown property",where:`${n}.${r} = ${t[r]}`});let o=e&&typeof e[r]==typeof t[r];a&&!o&&s.push({reason:"property type mismatch",where:`${n}.${r} = ${t[r]}`,expected:typeof e[r]})}return t.debug&&n==="config"&&s.length>0&&J("invalid configuration",s),s}function Rn(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,s)=>(Object.keys(s||{}).forEach(r=>{let a=n[r],o=s[r];Array.isArray(a)&&Array.isArray(o)?n[r]=a.concat(...o):t(a)&&t(o)?n[r]=Rn(a,o):n[r]=o}),n),{})}var Ia={backend:"",modelBasePath:"",wasmPath:"",debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,cropFactor:1.6,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var Pl={};ed(Pl,{Abs:()=>di,Acos:()=>ou,Acosh:()=>iu,AdadeltaOptimizer:()=>Bf,AdagradOptimizer:()=>Wf,AdamOptimizer:()=>Vf,AdamaxOptimizer:()=>Uf,Add:()=>qr,AddN:()=>Ea,All:()=>lu,Any:()=>uu,ArgMax:()=>Ra,ArgMin:()=>cu,Asin:()=>du,Asinh:()=>pu,Atan:()=>hu,Atan2:()=>mu,Atanh:()=>fu,AvgPool:()=>_a,AvgPool3D:()=>ld,AvgPool3DGrad:()=>Dh,AvgPoolGrad:()=>_h,BackendWasm:()=>m8,BatchMatMul:()=>Da,BatchToSpaceND:()=>pi,Bincount:()=>$h,BroadcastArgs:()=>Fh,BroadcastTo:()=>i3,Callback:()=>xS,CallbackList:()=>ik,Cast:()=>$a,Ceil:()=>Fa,ClipByValue:()=>Xr,Complex:()=>ud,ComplexAbs:()=>cd,Concat:()=>hi,Conv2D:()=>Pa,Conv2DBackpropFilter:()=>Ph,Conv2DBackpropInput:()=>Oa,Conv3D:()=>dd,Conv3DBackpropFilterV2:()=>Oh,Conv3DBackpropInputV2:()=>Mh,Cos:()=>Ma,Cosh:()=>za,CropAndResize:()=>mi,Cumsum:()=>fi,CustomCallback:()=>uk,DataStorage:()=>ad,DenseBincount:()=>zh,DepthToSpace:()=>gi,DepthwiseConv2dNative:()=>La,DepthwiseConv2dNativeBackpropFilter:()=>Lh,DepthwiseConv2dNativeBackpropInput:()=>Bh,Diag:()=>Wh,Dilation2D:()=>pd,Dilation2DBackpropFilter:()=>Uh,Dilation2DBackpropInput:()=>Vh,ENV:()=>Tr,EarlyStopping:()=>vS,Einsum:()=>hd,Elu:()=>Wa,EluGrad:()=>Gh,Environment:()=>a3,Equal:()=>yi,Erf:()=>gu,Exp:()=>Va,ExpandDims:()=>Ai,Expm1:()=>xi,FFT:()=>Hh,Fill:()=>yu,FlipLeftRight:()=>bi,Floor:()=>Ua,FloorDiv:()=>Ga,FromPixels:()=>Id,FusedBatchNorm:()=>Ha,FusedConv2D:()=>wo,FusedDepthwiseConv2D:()=>ko,GPGPUContext:()=>qm,GatherNd:()=>wi,GatherV2:()=>vi,GraphModel:()=>QS,Greater:()=>ki,GreaterEqual:()=>ja,History:()=>lk,IFFT:()=>jh,Identity:()=>qa,Imag:()=>fd,InputSpec:()=>Jt,IsFinite:()=>Au,IsInf:()=>xu,IsNan:()=>bu,KernelBackend:()=>nu,LRN:()=>gd,LRNGrad:()=>Xh,LayerVariable:()=>nk,LayersModel:()=>sa,LeakyRelu:()=>Si,Less:()=>Ii,LessEqual:()=>Ci,LinSpace:()=>qh,Log:()=>Xa,Log1p:()=>vu,LogSoftmax:()=>l3,LogicalAnd:()=>Ti,LogicalNot:()=>wu,LogicalOr:()=>md,MathBackendCPU:()=>QA,MathBackendWebGL:()=>Ip,Max:()=>Ka,MaxPool:()=>Ya,MaxPool3D:()=>yd,MaxPool3DGrad:()=>Zh,MaxPoolGrad:()=>Kh,MaxPoolWithArgmax:()=>Yh,Maximum:()=>Za,Mean:()=>Ja,Min:()=>Qa,Minimum:()=>eo,MirrorPad:()=>to,Mod:()=>ku,MomentumOptimizer:()=>Gf,Multinomial:()=>Jh,Multiply:()=>no,Neg:()=>Ni,NonMaxSuppressionV3:()=>Ri,NonMaxSuppressionV4:()=>Su,NonMaxSuppressionV5:()=>_i,NotEqual:()=>Ei,OP_SCOPE_SUFFIX:()=>k3,OneHot:()=>$i,OnesLike:()=>Di,Optimizer:()=>ea,OptimizerConstructors:()=>Po,Pack:()=>Fi,PadV2:()=>so,Pool:()=>R9,Pow:()=>ro,Prelu:()=>ao,Prod:()=>Pi,RMSPropOptimizer:()=>Hf,RNN:()=>ra,Range:()=>Iu,Rank:()=>N2,Real:()=>Ad,RealDiv:()=>Ba,Reciprocal:()=>Cu,Reduction:()=>Vn,Relu:()=>oo,Relu6:()=>lo,Reshape:()=>Oi,ResizeBilinear:()=>io,ResizeBilinearGrad:()=>ef,ResizeNearestNeighbor:()=>Tu,ResizeNearestNeighborGrad:()=>Qh,Reverse:()=>Mi,RotateWithOffset:()=>Yi,Round:()=>zi,Rsqrt:()=>uo,SGDOptimizer:()=>Kd,ScatterNd:()=>Li,Select:()=>Bi,Selu:()=>Nu,Sequential:()=>gm,Sigmoid:()=>po,Sign:()=>Eu,Sin:()=>co,Sinh:()=>Vi,Slice:()=>Wi,Softmax:()=>mo,Softplus:()=>Ru,SpaceToBatchND:()=>Ui,SparseFillEmptyRows:()=>xd,SparseReshape:()=>_u,SparseSegmentMean:()=>bd,SparseSegmentSum:()=>vd,SparseToDense:()=>wd,SplitV:()=>Gi,Sqrt:()=>ho,Square:()=>Du,SquaredDifference:()=>go,Step:()=>bo,StridedSlice:()=>Hi,StringNGrams:()=>kd,StringSplit:()=>tf,StringToHashBucketFast:()=>nf,Sub:()=>yo,Sum:()=>fo,SymbolicTensor:()=>br,Tan:()=>ji,Tanh:()=>Ao,Tensor:()=>et,TensorBuffer:()=>sn,Tile:()=>Kr,TopK:()=>qi,Transform:()=>Xi,Transpose:()=>xo,Unique:()=>sf,Unpack:()=>Ki,UnsortedSegmentSum:()=>Sd,Variable:()=>$d,ZerosLike:()=>Zi,_FusedMatMul:()=>vo,abs:()=>rn,acos:()=>cv,acosh:()=>dv,add:()=>ue,addN:()=>gf,all:()=>i1,any:()=>yf,argMax:()=>Fs,argMin:()=>pv,asin:()=>hv,asinh:()=>fv,atan:()=>mv,atan2:()=>gv,atanh:()=>yv,avgPool:()=>xf,avgPool3d:()=>c1,backend:()=>Rr,backend_util:()=>N,basicLSTMCell:()=>yD,batchNorm:()=>Bu,batchNorm2d:()=>vv,batchNorm3d:()=>wv,batchNorm4d:()=>kv,batchToSpaceND:()=>bf,bincount:()=>d1,booleanMaskAsync:()=>EP,broadcastArgs:()=>Sv,broadcastTo:()=>Ld,broadcast_util:()=>sl,browser:()=>Js,buffer:()=>ze,callbacks:()=>nG,cast:()=>ge,ceil:()=>Iv,clipByValue:()=>As,clone:()=>Ln,complex:()=>Co,concat:()=>St,concat1d:()=>Cv,concat2d:()=>Wu,concat3d:()=>Tv,concat4d:()=>Nv,constraints:()=>Pw,conv1d:()=>p1,conv2d:()=>_o,conv2dTranspose:()=>f1,conv3d:()=>m1,conv3dTranspose:()=>Rv,copyRegisteredKernels:()=>F9,cos:()=>vf,cosh:()=>g1,cosineWindow:()=>W1,cumsum:()=>y1,customGrad:()=>Dr,data:()=>eI,denseBincount:()=>_v,deprecationWarn:()=>a1,depthToSpace:()=>Dv,depthwiseConv2d:()=>Bd,deregisterOp:()=>aG,device_util:()=>Pu,diag:()=>qD,dilation2d:()=>$v,disableDeprecationWarnings:()=>$_,dispose:()=>te,disposeVariables:()=>F_,div:()=>de,divNoNan:()=>Fv,dot:()=>e$,dropout:()=>uw,einsum:()=>Pv,elu:()=>Wd,enableDebugMode:()=>D_,enableProdMode:()=>lv,enclosingPowerOfTwo:()=>cw,engine:()=>as,env:()=>Y,equal:()=>Ps,erf:()=>Ov,exp:()=>Os,expandDims:()=>Zt,expm1:()=>Mv,eye:()=>A1,fft:()=>Df,fill:()=>Vu,findBackend:()=>o1,findBackendFactory:()=>z_,floor:()=>Vd,floorDiv:()=>mf,forceHalfFloat:()=>RC,fused:()=>Fo,gather:()=>Uu,gatherND:()=>lw,gather_util:()=>Y2,getBackend:()=>$s,getGradient:()=>S2,getKernel:()=>rf,getKernelsForBackend:()=>Zr,getThreadsCount:()=>z2e,gpgpu_util:()=>sC,grad:()=>I$,grads:()=>C$,greater:()=>xs,greaterEqual:()=>ll,ifft:()=>jd,imag:()=>wf,image:()=>Se,inTopKAsync:()=>BP,initializers:()=>Vw,input:()=>Dk,io:()=>rs,irfft:()=>P1,isFinite:()=>m$,isInf:()=>y$,isNaN:()=>zv,keep:()=>yn,kernel_impls:()=>tr,layers:()=>Qw,leakyRelu:()=>kf,less:()=>x1,lessEqual:()=>ul,linalg:()=>bw,linspace:()=>Lv,loadGraphModel:()=>Be,loadLayersModel:()=>hV,localResponseNormalization:()=>Bv,log:()=>Ms,log1p:()=>Sf,logSigmoid:()=>D$,logSoftmax:()=>b1,logSumExp:()=>Hv,logicalAnd:()=>fr,logicalNot:()=>Cf,logicalOr:()=>k1,logicalXor:()=>G$,losses:()=>SM,matMul:()=>je,math:()=>W3,max:()=>An,maxPool:()=>Tf,maxPool3d:()=>S1,maxPoolWithArgmax:()=>jv,maximum:()=>Jr,mean:()=>Ut,memory:()=>hf,meshgrid:()=>Z$,metrics:()=>gS,min:()=>Do,minimum:()=>Ud,mirrorPad:()=>qv,mod:()=>Gd,model:()=>dV,models:()=>yS,moments:()=>Nf,movingAverage:()=>DP,mul:()=>L,multiRNNCell:()=>rF,multinomial:()=>Xv,neg:()=>zt,nextFrame:()=>vw,norm:()=>L1,notEqual:()=>Hu,oneHot:()=>Md,ones:()=>bs,onesLike:()=>zs,op:()=>G,outerProduct:()=>uF,pad:()=>er,pad1d:()=>pF,pad2d:()=>fF,pad3d:()=>gF,pad4d:()=>AF,pool:()=>kF,pow:()=>$o,prelu:()=>Rf,print:()=>P3,prod:()=>I1,profile:()=>P_,rand:()=>NF,randomGamma:()=>DF,randomNormal:()=>Kv,randomUniform:()=>ju,range:()=>qu,ready:()=>ff,real:()=>Hd,reciprocal:()=>Zv,registerBackend:()=>ol,registerCallbackConstructor:()=>fV,registerGradient:()=>u3,registerKernel:()=>dr,registerOp:()=>rG,regularizers:()=>AS,relu:()=>$r,relu6:()=>N1,removeBackend:()=>M_,reshape:()=>H,reverse:()=>Ls,reverse1d:()=>WF,reverse2d:()=>UF,reverse3d:()=>HF,reverse4d:()=>qF,rfft:()=>$f,round:()=>E1,rsqrt:()=>R1,scalar:()=>Ce,scatterND:()=>iw,scatter_util:()=>J2,selu:()=>_1,separableConv2d:()=>Yv,sequential:()=>pV,serialization:()=>ce,setBackend:()=>uv,setPlatform:()=>L_,setThreadsCount:()=>M2e,setWasmPath:()=>O2e,setWasmPaths:()=>y8,setWebGLContext:()=>zm,setdiff1dAsync:()=>Jv,shared:()=>Dm,sigmoid:()=>os,sign:()=>Qv,signal:()=>kM,sin:()=>D1,sinh:()=>$1,slice:()=>Pe,slice1d:()=>_f,slice2d:()=>F1,slice3d:()=>dl,slice4d:()=>pl,slice_util:()=>Mt,softmax:()=>Xu,softplus:()=>Gu,spaceToBatchND:()=>Ef,sparse:()=>Xd,sparseToDense:()=>B1,spectral:()=>wM,split:()=>Yt,sqrt:()=>Dn,square:()=>xt,squaredDifference:()=>O1,squeeze:()=>rt,stack:()=>an,step:()=>qd,stridedSlice:()=>ew,string:()=>Lf,sub:()=>he,sum:()=>we,sumOutType:()=>Fd,tan:()=>tw,tanh:()=>Lu,tensor:()=>pt,tensor1d:()=>Ct,tensor2d:()=>mr,tensor3d:()=>U3,tensor4d:()=>xP,tensor5d:()=>bP,tensor6d:()=>vP,tensor_util:()=>pr,test_util:()=>rv,tidy:()=>K,tile:()=>Qs,time:()=>O_,topk:()=>nw,train:()=>hl,transpose:()=>tt,truncatedNormal:()=>Ff,unique:()=>M1,unregisterGradient:()=>$9,unregisterKernel:()=>D9,unsortedSegmentSum:()=>sw,unstack:()=>is,upcastType:()=>zn,util:()=>v,valueAndGrad:()=>T$,valueAndGrads:()=>N$,variable:()=>rw,variableGrads:()=>Wv,version:()=>p0,version_converter:()=>lH,version_core:()=>iv,version_cpu:()=>Xj,version_layers:()=>ky,version_wasm:()=>L2e,version_webgl:()=>yee,webgl:()=>Aee,webgl_util:()=>T7,webgpu:()=>p6,where:()=>Wn,whereAsync:()=>z1,zeros:()=>jt,zerosLike:()=>nt});var BE=Object.create,Sh=Object.defineProperty,WE=Object.getOwnPropertyDescriptor,VE=Object.getOwnPropertyNames,UE=Object.getPrototypeOf,GE=Object.prototype.hasOwnProperty,j5=e=>Sh(e,"__esModule",{value:!0}),nn=(e,t)=>function(){return t||(0,e[Object.keys(e)[0]])((t={exports:{}}).exports,t),t.exports},Me=(e,t)=>{j5(e);for(var n in t)Sh(e,n,{get:t[n],enumerable:!0})},HE=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of VE(t))!GE.call(e,s)&&s!=="default"&&Sh(e,s,{get:()=>t[s],enumerable:!(n=WE(t,s))||n.enumerable});return e},li=e=>HE(j5(Sh(e!=null?BE(UE(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),jE=nn({"src/node_modules/long/src/long.js"(e,t){t.exports=s;var n=null;try{n=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(_){}function s(_,T,O){this.low=_|0,this.high=T|0,this.unsigned=!!O}s.prototype.__isLong__,Object.defineProperty(s.prototype,"__isLong__",{value:!0});function r(_){return(_&&_.__isLong__)===!0}s.isLong=r;var a={},o={};function i(_,T){var O,W,X;return T?(_>>>=0,(X=0<=_&&_<256)&&(W=o[_],W)?W:(O=c(_,(_|0)<0?-1:0,!0),X&&(o[_]=O),O)):(_|=0,(X=-128<=_&&_<128)&&(W=a[_],W)?W:(O=c(_,_<0?-1:0,!1),X&&(a[_]=O),O))}s.fromInt=i;function l(_,T){if(isNaN(_))return T?b:A;if(T){if(_<0)return b;if(_>=g)return R}else{if(_<=-y)return P;if(_+1>=y)return E}return _<0?l(-_,T).neg():c(_%m|0,_/m|0,T)}s.fromNumber=l;function c(_,T,O){return new s(_,T,O)}s.fromBits=c;var u=Math.pow;function d(_,T,O){if(_.length===0)throw Error("empty string");if(_==="NaN"||_==="Infinity"||_==="+Infinity"||_==="-Infinity")return A;if(typeof T=="number"?(O=T,T=!1):T=!!T,O=O||10,O<2||360)throw Error("interior hyphen");if(W===0)return d(_.substring(1),T,O).neg();for(var X=l(u(O,8)),z=A,j=0;j<_.length;j+=8){var Z=Math.min(8,_.length-j),Q=parseInt(_.substring(j,j+Z),O);if(Z<8){var ne=l(u(O,Z));z=z.mul(ne).add(l(Q))}else z=z.mul(X),z=z.add(l(Q))}return z.unsigned=T,z}s.fromString=d;function p(_,T){return typeof _=="number"?l(_,T):typeof _=="string"?d(_,T):c(_.low,_.high,typeof T=="boolean"?T:_.unsigned)}s.fromValue=p;var h=1<<16,f=1<<24,m=h*h,g=m*m,y=g/2,x=i(f),A=i(0);s.ZERO=A;var b=i(0,!0);s.UZERO=b;var w=i(1);s.ONE=w;var k=i(1,!0);s.UONE=k;var I=i(-1);s.NEG_ONE=I;var E=c(4294967295|0,2147483647|0,!1);s.MAX_VALUE=E;var R=c(4294967295|0,4294967295|0,!0);s.MAX_UNSIGNED_VALUE=R;var P=c(0,2147483648|0,!1);s.MIN_VALUE=P;var D=s.prototype;D.toInt=function(){return this.unsigned?this.low>>>0:this.low},D.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},D.toString=function(T){if(T=T||10,T<2||36>>0,ae=ne.toString(T);if(j=Q,j.isZero())return ae+Z;for(;ae.length<6;)ae="0"+ae;Z=""+ae+Z}},D.getHighBits=function(){return this.high},D.getHighBitsUnsigned=function(){return this.high>>>0},D.getLowBits=function(){return this.low},D.getLowBitsUnsigned=function(){return this.low>>>0},D.getNumBitsAbs=function(){if(this.isNegative())return this.eq(P)?64:this.neg().getNumBitsAbs();for(var T=this.high!=0?this.high:this.low,O=31;O>0&&(T&1<=0},D.isOdd=function(){return(this.low&1)==1},D.isEven=function(){return(this.low&1)==0},D.equals=function(T){return r(T)||(T=p(T)),this.unsigned!==T.unsigned&&this.high>>>31==1&&T.high>>>31==1?!1:this.high===T.high&&this.low===T.low},D.eq=D.equals,D.notEquals=function(T){return!this.eq(T)},D.neq=D.notEquals,D.ne=D.notEquals,D.lessThan=function(T){return this.comp(T)<0},D.lt=D.lessThan,D.lessThanOrEqual=function(T){return this.comp(T)<=0},D.lte=D.lessThanOrEqual,D.le=D.lessThanOrEqual,D.greaterThan=function(T){return this.comp(T)>0},D.gt=D.greaterThan,D.greaterThanOrEqual=function(T){return this.comp(T)>=0},D.gte=D.greaterThanOrEqual,D.ge=D.greaterThanOrEqual,D.compare=function(T){if(r(T)||(T=p(T)),this.eq(T))return 0;var O=this.isNegative(),W=T.isNegative();return O&&!W?-1:!O&&W?1:this.unsigned?T.high>>>0>this.high>>>0||T.high===this.high&&T.low>>>0>this.low>>>0?-1:1:this.sub(T).isNegative()?-1:1},D.comp=D.compare,D.negate=function(){return!this.unsigned&&this.eq(P)?P:this.not().add(w)},D.neg=D.negate,D.add=function(T){r(T)||(T=p(T));var O=this.high>>>16,W=this.high&65535,X=this.low>>>16,z=this.low&65535,j=T.high>>>16,Z=T.high&65535,Q=T.low>>>16,ne=T.low&65535,ae=0,U=0,oe=0,re=0;return re+=z+ne,oe+=re>>>16,re&=65535,oe+=X+Q,U+=oe>>>16,oe&=65535,U+=W+Z,ae+=U>>>16,U&=65535,ae+=O+j,ae&=65535,c(oe<<16|re,ae<<16|U,this.unsigned)},D.subtract=function(T){return r(T)||(T=p(T)),this.add(T.neg())},D.sub=D.subtract,D.multiply=function(T){if(this.isZero())return A;if(r(T)||(T=p(T)),n){var O=n.mul(this.low,this.high,T.low,T.high);return c(O,n.get_high(),this.unsigned)}if(T.isZero())return A;if(this.eq(P))return T.isOdd()?P:A;if(T.eq(P))return this.isOdd()?P:A;if(this.isNegative())return T.isNegative()?this.neg().mul(T.neg()):this.neg().mul(T).neg();if(T.isNegative())return this.mul(T.neg()).neg();if(this.lt(x)&&T.lt(x))return l(this.toNumber()*T.toNumber(),this.unsigned);var W=this.high>>>16,X=this.high&65535,z=this.low>>>16,j=this.low&65535,Z=T.high>>>16,Q=T.high&65535,ne=T.low>>>16,ae=T.low&65535,U=0,oe=0,re=0,me=0;return me+=j*ae,re+=me>>>16,me&=65535,re+=z*ae,oe+=re>>>16,re&=65535,re+=j*ne,oe+=re>>>16,re&=65535,oe+=X*ae,U+=oe>>>16,oe&=65535,oe+=z*ne,U+=oe>>>16,oe&=65535,oe+=j*Q,U+=oe>>>16,oe&=65535,U+=W*ae+X*ne+z*Q+j*Z,U&=65535,c(re<<16|me,U<<16|oe,this.unsigned)},D.mul=D.multiply,D.divide=function(T){if(r(T)||(T=p(T)),T.isZero())throw Error("division by zero");if(n){if(!this.unsigned&&this.high===-2147483648&&T.low===-1&&T.high===-1)return this;var O=(this.unsigned?n.div_u:n.div_s)(this.low,this.high,T.low,T.high);return c(O,n.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:A;var W,X,z;if(this.unsigned){if(T.unsigned||(T=T.toUnsigned()),T.gt(this))return b;if(T.gt(this.shru(1)))return k;z=b}else{if(this.eq(P)){if(T.eq(w)||T.eq(I))return P;if(T.eq(P))return w;var j=this.shr(1);return W=j.div(T).shl(1),W.eq(A)?T.isNegative()?w:I:(X=this.sub(T.mul(W)),z=W.add(X.div(T)),z)}else if(T.eq(P))return this.unsigned?b:A;if(this.isNegative())return T.isNegative()?this.neg().div(T.neg()):this.neg().div(T).neg();if(T.isNegative())return this.div(T.neg()).neg();z=A}for(X=this;X.gte(T);){W=Math.max(1,Math.floor(X.toNumber()/T.toNumber()));for(var Z=Math.ceil(Math.log(W)/Math.LN2),Q=Z<=48?1:u(2,Z-48),ne=l(W),ae=ne.mul(T);ae.isNegative()||ae.gt(X);)W-=Q,ne=l(W,this.unsigned),ae=ne.mul(T);ne.isZero()&&(ne=w),z=z.add(ne),X=X.sub(ae)}return z},D.div=D.divide,D.modulo=function(T){if(r(T)||(T=p(T)),n){var O=(this.unsigned?n.rem_u:n.rem_s)(this.low,this.high,T.low,T.high);return c(O,n.get_high(),this.unsigned)}return this.sub(this.div(T).mul(T))},D.mod=D.modulo,D.rem=D.modulo,D.not=function(){return c(~this.low,~this.high,this.unsigned)},D.and=function(T){return r(T)||(T=p(T)),c(this.low&T.low,this.high&T.high,this.unsigned)},D.or=function(T){return r(T)||(T=p(T)),c(this.low|T.low,this.high|T.high,this.unsigned)},D.xor=function(T){return r(T)||(T=p(T)),c(this.low^T.low,this.high^T.high,this.unsigned)},D.shiftLeft=function(T){return r(T)&&(T=T.toInt()),(T&=63)==0?this:T<32?c(this.low<>>32-T,this.unsigned):c(0,this.low<>>T|this.high<<32-T,this.high>>T,this.unsigned):c(this.high>>T-32,this.high>=0?0:-1,this.unsigned)},D.shr=D.shiftRight,D.shiftRightUnsigned=function(T){if(r(T)&&(T=T.toInt()),T&=63,T===0)return this;var O=this.high;if(T<32){var W=this.low;return c(W>>>T|O<<32-T,O>>>T,this.unsigned)}else return T===32?c(O,0,this.unsigned):c(O>>>T-32,0,this.unsigned)},D.shru=D.shiftRightUnsigned,D.shr_u=D.shiftRightUnsigned,D.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},D.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},D.toBytes=function(T){return T?this.toBytesLE():this.toBytesBE()},D.toBytesLE=function(){var T=this.high,O=this.low;return[O&255,O>>>8&255,O>>>16&255,O>>>24,T&255,T>>>8&255,T>>>16&255,T>>>24]},D.toBytesBE=function(){var T=this.high,O=this.low;return[T>>>24,T>>>16&255,T>>>8&255,T&255,O>>>24,O>>>16&255,O>>>8&255,O&255]},s.fromBytes=function(T,O,W){return W?s.fromBytesLE(T,O):s.fromBytesBE(T,O)},s.fromBytesLE=function(T,O){return new s(T[0]|T[1]<<8|T[2]<<16|T[3]<<24,T[4]|T[5]<<8|T[6]<<16|T[7]<<24,O)},s.fromBytesBE=function(T,O){return new s(T[4]<<24|T[5]<<16|T[6]<<8|T[7],T[0]<<24|T[1]<<16|T[2]<<8|T[3],O)}}}),qE=nn({"(disabled):src/node_modules/node-fetch/browser.js"(){}}),XE=nn({"(disabled):util"(){}}),KE=nn({"src/node_modules/seedrandom/lib/alea.js"(e,t){(function(n,s,r){function a(c){var u=this,d=l();u.next=function(){var p=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=p-(u.c=p|0)},u.c=1,u.s0=d(" "),u.s1=d(" "),u.s2=d(" "),u.s0-=d(c),u.s0<0&&(u.s0+=1),u.s1-=d(c),u.s1<0&&(u.s1+=1),u.s2-=d(c),u.s2<0&&(u.s2+=1),d=null}function o(c,u){return u.c=c.c,u.s0=c.s0,u.s1=c.s1,u.s2=c.s2,u}function i(c,u){var d=new a(c),p=u&&u.state,h=d.next;return h.int32=function(){return d.next()*4294967296|0},h.double=function(){return h()+(h()*2097152|0)*11102230246251565e-32},h.quick=h,p&&(typeof p=="object"&&o(p,d),h.state=function(){return o(d,{})}),h}function l(){var c=4022871197,u=function(d){d=String(d);for(var p=0;p>>0,h-=c,h*=c,c=h>>>0,h-=c,c+=h*4294967296}return(c>>>0)*23283064365386963e-26};return u}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.alea=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),ZE=nn({"src/node_modules/seedrandom/lib/xor128.js"(e,t){(function(n,s,r){function a(l){var c=this,u="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var p=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^p^p>>>8},l===(l|0)?c.x=l:u+=l;for(var d=0;d>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(typeof d=="object"&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),YE=nn({"src/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(n,s,r){function a(l){var c=this,u="";c.next=function(){var p=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(p^p<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,l===(l|0)?c.x=l:u+=l;for(var d=0;d>>4),c.next()}function o(l,c){return c.x=l.x,c.y=l.y,c.z=l.z,c.w=l.w,c.v=l.v,c.d=l.d,c}function i(l,c){var u=new a(l),d=c&&c.state,p=function(){return(u.next()>>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(typeof d=="object"&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),JE=nn({"src/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(n,s,r){function a(l){var c=this;c.next=function(){var d=c.x,p=c.i,h,f,m;return h=d[p],h^=h>>>7,f=h^h<<24,h=d[p+1&7],f^=h^h>>>10,h=d[p+3&7],f^=h^h>>>3,h=d[p+4&7],f^=h^h<<7,h=d[p+7&7],h=h^h<<13,f^=h^h<<9,d[p]=f,c.i=p+1&7,f};function u(d,p){var h,f,m=[];if(p===(p|0))f=m[0]=p;else for(p=""+p,h=0;h0;--h)d.next()}u(c,l)}function o(l,c){return c.x=l.x.slice(),c.i=l.i,c}function i(l,c){l==null&&(l=+new Date);var u=new a(l),d=c&&c.state,p=function(){return(u.next()>>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(d.x&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),QE=nn({"src/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(n,s,r){function a(l){var c=this;c.next=function(){var d=c.w,p=c.X,h=c.i,f,m;return c.w=d=d+1640531527|0,m=p[h+34&127],f=p[h=h+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=p[h]=m^f,c.i=h,m+(d^d>>>16)|0};function u(d,p){var h,f,m,g,y,x=[],A=128;for(p===(p|0)?(f=p,p=null):(p=p+"\0",f=0,A=Math.max(A,p.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(y=y+1640531527|0,h=x[g&127]^=f+y,m=h==0?m+1:0);for(m>=128&&(x[(p&&p.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=x[m+34&127],h=x[m=m+1&127],f^=f<<13,h^=h<<17,f^=f>>>15,h^=h>>>12,x[m]=f^h;d.w=y,d.X=x,d.i=m}u(c,l)}function o(l,c){return c.i=l.i,c.w=l.w,c.X=l.X.slice(),c}function i(l,c){l==null&&(l=+new Date);var u=new a(l),d=c&&c.state,p=function(){return(u.next()>>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(d.X&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),e9=nn({"src/node_modules/seedrandom/lib/tychei.js"(e,t){(function(n,s,r){function a(l){var c=this,u="";c.next=function(){var p=c.b,h=c.c,f=c.d,m=c.a;return p=p<<25^p>>>7^h,h=h-f|0,f=f<<24^f>>>8^m,m=m-p|0,c.b=p=p<<20^p>>>12^h,c.c=h=h-f|0,c.d=f<<16^h>>>16^m,c.a=m-p|0},c.a=0,c.b=0,c.c=2654435769|0,c.d=1367130551,l===Math.floor(l)?(c.a=l/4294967296|0,c.b=l|0):u+=l;for(var d=0;d>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(typeof d=="object"&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),t9=nn({"(disabled):crypto"(){}}),n9=nn({"src/node_modules/seedrandom/seedrandom.js"(e,t){(function(n,s,r){var a=256,o=6,i=52,l="random",c=r.pow(a,o),u=r.pow(2,i),d=u*2,p=a-1,h;function f(w,k,I){var E=[];k=k==!0?{entropy:!0}:k||{};var R=x(y(k.entropy?[w,b(s)]:w==null?A():w,3),E),P=new m(E),D=function(){for(var _=P.g(o),T=c,O=0;_=d;)_/=2,T/=2,O>>>=1;return(_+O)/T};return D.int32=function(){return P.g(4)|0},D.quick=function(){return P.g(4)/4294967296},D.double=D,x(b(P.S),s),(k.pass||I||function(_,T,O,W){return W&&(W.S&&g(W,P),_.state=function(){return g(P,{})}),O?(r[l]=_,T):_})(D,R,"global"in k?k.global:this==r,k.state)}function m(w){var k,I=w.length,E=this,R=0,P=E.i=E.j=0,D=E.S=[];for(I||(w=[I++]);R1&&(y=process.argv[1].replace(/\\/g,"/")),g=process.argv.slice(2),process.on("uncaughtException",function(C){if(!(C instanceof Qc))throw C}),process.on("unhandledRejection",Gr),x=function(C){process.exit(C)},u.inspect=function(){return"[Emscripten Module object]"};var X;try{X=s9()}catch(C){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),C}global.Worker=X.Worker}else k?(typeof read!="undefined"&&(P=function($){return read($)}),_=function($){var B;return typeof readbuffer=="function"?new Uint8Array(readbuffer($)):(B=read($,"binary"),Ne(typeof B=="object"),B)},typeof scriptArgs!="undefined"?g=scriptArgs:typeof arguments!="undefined"&&(g=arguments),typeof quit=="function"&&(x=function(C){quit(C)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(A||b)&&(b?E=self.location.href:typeof document!="undefined"&&document.currentScript&&(E=document.currentScript.src),typeof s!="undefined"&&s&&(E=s),E.indexOf("blob:")!==0?E=E.substr(0,E.lastIndexOf("/")+1):E="",w?(P=function($,B){return O||(O=Ch()),W||(W=rd()),$=W.normalize($),O.readFileSync($,B?null:"utf8")},_=function($){var B=P($,!0);return B.buffer||(B=new Uint8Array(B)),Ne(B.buffer),B}):(P=function(C){var $=new XMLHttpRequest;return $.open("GET",C,!1),$.send(null),$.responseText},b&&(_=function(C){var $=new XMLHttpRequest;return $.open("GET",C,!1),$.responseType="arraybuffer",$.send(null),new Uint8Array($.response)}),D=function(C,$,B){var ee=new XMLHttpRequest;ee.open("GET",C,!0),ee.responseType="arraybuffer",ee.onload=function(){if(ee.status==200||ee.status==0&&ee.response){$(ee.response);return}B()},ee.onerror=B,ee.send(null)}),T=function(C){document.title=C});w&&typeof performance=="undefined"&&(global.performance=r9().performance);var z=u.print||console.log.bind(console),j=u.printErr||console.warn.bind(console);for(m in f)f.hasOwnProperty(m)&&(u[m]=f[m]);f=null,u.arguments&&(g=u.arguments),u.thisProgram&&(y=u.thisProgram),u.quit&&(x=u.quit);function Z(C){Z.shown||(Z.shown={}),Z.shown[C]||(Z.shown[C]=1,j(C))}var Q=Atomics.load,ne=Atomics.store,ae=Atomics.compareExchange,U;u.wasmBinary&&(U=u.wasmBinary);var oe=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");var re,me,Ae=!1,Te;function Ne(C,$){C||Gr("Assertion failed: "+$)}function Fe(C){var $=u["_"+C];return Ne($,"Cannot call unknown function "+C+", make sure it is exported"),$}function Ue(C,$,B,ee,be){var ye={string:function(Pn){var tu=0;if(Pn!=null&&Pn!==0){var G5=(Pn.length<<2)+1;tu=Jl(G5),it(Pn,tu,G5)}return tu},array:function(Pn){var tu=Jl(Pn.length);return _t(Pn,tu),tu}};function xe(Pn){return $==="string"?Ze(Pn):$==="boolean"?Boolean(Pn):Pn}var Ee=Fe(C),ht=[],mn=0;if(ee)for(var tn=0;tn=ee);){var ye=C[$++];if(!ye)return be;if(!(ye&128)){be+=String.fromCharCode(ye);continue}var xe=C[$++]&63;if((ye&224)==192){be+=String.fromCharCode((ye&31)<<6|xe);continue}var Ee=C[$++]&63;if((ye&240)==224?ye=(ye&15)<<12|xe<<6|Ee:ye=(ye&7)<<18|xe<<12|Ee<<6|C[$++]&63,ye<65536)be+=String.fromCharCode(ye);else{var ht=ye-65536;be+=String.fromCharCode(55296|ht>>10,56320|ht&1023)}}return be}function Ze(C,$){return C?Je(o(),C,$):""}function gt(C,$,B,ee){if(!(ee>0))return 0;for(var be=B,ye=B+ee-1,xe=0;xe=55296&&Ee<=57343){var ht=C.charCodeAt(++xe);Ee=65536+((Ee&1023)<<10)|ht&1023}if(Ee<=127){if(B>=ye)break;$[B++]=Ee}else if(Ee<=2047){if(B+1>=ye)break;$[B++]=192|Ee>>6,$[B++]=128|Ee&63}else if(Ee<=65535){if(B+2>=ye)break;$[B++]=224|Ee>>12,$[B++]=128|Ee>>6&63,$[B++]=128|Ee&63}else{if(B+3>=ye)break;$[B++]=240|Ee>>18,$[B++]=128|Ee>>12&63,$[B++]=128|Ee>>6&63,$[B++]=128|Ee&63}}return $[B]=0,B-be}function it(C,$,B){return gt(C,o(),$,B)}function yt(C){for(var $=0,B=0;B=55296&&ee<=57343&&(ee=65536+((ee&1023)<<10)|C.charCodeAt(++B)&1023),ee<=127?++$:ee<=2047?$+=2:ee<=65535?$+=3:$+=4}return $}function _t(C,$){a().set(C,$)}function Qn(C,$){return C%$>0&&(C+=$-C%$),C}var lt,ms,kn,qs,es,gs,Es,Xs,Rs;function ts(C){lt=C,u.HEAP8=ms=new Int8Array(C),u.HEAP16=qs=new Int16Array(C),u.HEAP32=gs=new Int32Array(C),u.HEAPU8=kn=new Uint8Array(C),u.HEAPU16=es=new Uint16Array(C),u.HEAPU32=Es=new Uint32Array(C),u.HEAPF32=Xs=new Float32Array(C),u.HEAPF64=Rs=new Float64Array(C)}var ya=u.INITIAL_MEMORY||16777216;if(I)re=u.wasmMemory,lt=u.buffer;else if(u.wasmMemory)re=u.wasmMemory;else if(re=new WebAssembly.Memory({initial:ya/65536,maximum:2147483648/65536,shared:!0}),!(re.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),w&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");re&&(lt=re.buffer),ya=lt.byteLength,ts(lt);var En,Aa=[],_s=[],Wc=[],Vc=[],Ur=[],Yp=!1,G0=!1;I||_s.push({func:function(){mh()}});function Jp(){if(!I){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)H0(u.preRun.shift());jl(Aa)}}function Qp(){Yp=!0,!I&&jl(_s)}function eh(){I||jl(Wc)}function ns(){I||(G0=!0)}function th(){if(!I){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)j0(u.postRun.shift());jl(Ur)}}function H0(C){Aa.unshift(C)}function j0(C){Ur.unshift(C)}var Ks=0,Uc=null,ri=null;function q0(C){Ne(!I,"addRunDependency cannot be used in a pthread worker"),Ks++,u.monitorRunDependencies&&u.monitorRunDependencies(Ks)}function X0(C){if(Ks--,u.monitorRunDependencies&&u.monitorRunDependencies(Ks),Ks==0&&(Uc!==null&&(clearInterval(Uc),Uc=null),ri)){var $=ri;ri=null,$()}}u.preloadedImages={},u.preloadedAudios={};function Gr(C){u.onAbort&&u.onAbort(C),I&&console.error("Pthread aborting at "+new Error().stack),C+="",j(C),Ae=!0,Te=1,C="abort("+C+"). Build with -s ASSERTIONS=1 for more info.";var $=new WebAssembly.RuntimeError(C);throw p($),$}function ai(C,$){return String.prototype.startsWith?C.startsWith($):C.indexOf($)===0}var K0="data:application/octet-stream;base64,";function nh(C){return ai(C,K0)}var Z0="file://";function sh(C){return ai(C,Z0)}var ss="tfjs-backend-wasm-threaded-simd.wasm";nh(ss)||(ss=R(ss));function Y0(C){try{if(C==ss&&U)return new Uint8Array(U);if(_)return _(C);throw"both async and sync fetching of the wasm failed"}catch($){Gr($)}}function rh(){if(!U&&(A||b)){if(typeof fetch=="function"&&!sh(ss))return fetch(ss,{credentials:"same-origin"}).then(function(C){if(!C.ok)throw"failed to load wasm binary file at '"+ss+"'";return C.arrayBuffer()}).catch(function(){return Y0(ss)});if(D)return new Promise(function(C,$){D(ss,function(B){C(new Uint8Array(B))},$)})}return Promise.resolve().then(function(){return Y0(ss)})}function J0(){var C={a:Gg};function $(xe,Ee){var ht=xe.exports;if(u.asm=ht,En=u.asm.nb,me=Ee,!I){var mn=_e.unusedWorkers.length;_e.unusedWorkers.forEach(function(tn){_e.loadWasmModuleToWorker(tn,function(){--mn||X0("wasm-instantiate")})})}}I||q0("wasm-instantiate");function B(xe){$(xe.instance,xe.module)}function ee(xe){return rh().then(function(Ee){return WebAssembly.instantiate(Ee,C)}).then(xe,function(Ee){j("failed to asynchronously prepare wasm: "+Ee),Gr(Ee)})}function be(){return!U&&typeof WebAssembly.instantiateStreaming=="function"&&!nh(ss)&&!sh(ss)&&typeof fetch=="function"?fetch(ss,{credentials:"same-origin"}).then(function(xe){var Ee=WebAssembly.instantiateStreaming(xe,C);return Ee.then(B,function(ht){return j("wasm streaming compile failed: "+ht),j("falling back to ArrayBuffer instantiation"),ee(B)})}):ee(B)}if(u.instantiateWasm)try{var ye=u.instantiateWasm(C,$);return ye}catch(xe){return j("Module.instantiateWasm callback failed with error: "+xe),!1}return be().catch(p),{}}var ah={10216:function(){throw"Canceled!"},10234:function(C,$){setTimeout(function(){z5(C,$)},0)}};function Q0(){_e.initRuntime()}function jl(C){for(;C.length>0;){var $=C.shift();if(typeof $=="function"){$(u);continue}var B=$.func;typeof B=="number"?$.arg===void 0?En.get(B)():En.get(B)($.arg):B($.arg===void 0?null:$.arg)}}var xa={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};function Gc(C,$){if(C<=0||C>a().length||C&!0||$<0)return-28;if($==0)return 0;$>=2147483647&&($=1/0);var B=Atomics.load(i(),Ql>>2),ee=0;if(B==C){var be=Atomics.compareExchange(i(),Ql>>2,B,0);if(be==B&&(--$,ee=1,$<=0))return 1}var ye=Atomics.notify(i(),C>>2,$);if(ye>=0)return ye+ee;throw"Atomics.notify returned an unexpected value "+ye}u._emscripten_futex_wake=Gc;function eg(C){if(I)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!C)throw"Internal Error! Null pthread_ptr in killThread!";i()[C+12>>2]=0;var $=_e.pthreads[C];$.worker.terminate(),_e.freeThreadData($),_e.runningWorkers.splice(_e.runningWorkers.indexOf($.worker),1),$.worker.pthread=void 0}function tg(C){if(I)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!C)throw"Internal Error! Null pthread_ptr in cancelThread!";var $=_e.pthreads[C];$.worker.postMessage({cmd:"cancel"})}function oh(C){if(I)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!C)throw"Internal Error! Null pthread_ptr in cleanupThread!";var $=_e.pthreads[C];if($){i()[C+12>>2]=0;var B=$.worker;_e.returnWorkerToPool(B)}}var _e={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var C=8,$=0;$>2]=C;var B=C+152;i()[B>>2]=B;for(var ee=ii(512),$=0;$<128;++$)l()[ee/4+$]=0;Atomics.store(l(),C+100>>2,ee),Atomics.store(l(),C+40>>2,C),f2(C,!b,1),O5(C)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;_e.threadExitHandlers.length>0;)_e.threadExitHandlers.pop()();I&&ka()&&P5()},runExitHandlersAndDeinitThread:function(C,$){Atomics.store(l(),C+56>>2,1),Atomics.store(l(),C+60>>2,0),_e.runExitHandlers(),Atomics.store(l(),C+4>>2,$),Atomics.store(l(),C+0>>2,1),Gc(C+0,2147483647),f2(0,0,0)},threadExit:function(C){var $=ka();$&&(_e.runExitHandlersAndDeinitThread($,C),I&&postMessage({cmd:"exit"}))},threadCancel:function(){_e.runExitHandlersAndDeinitThread(ka(),-1),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var C in _e.pthreads){var $=_e.pthreads[C];$&&$.worker&&_e.returnWorkerToPool($.worker)}_e.pthreads={};for(var B=0;B<_e.unusedWorkers.length;++B){var ee=_e.unusedWorkers[B];ee.terminate()}_e.unusedWorkers=[];for(var B=0;B<_e.runningWorkers.length;++B){var ee=_e.runningWorkers[B],$=ee.pthread;_e.freeThreadData($),ee.terminate()}_e.runningWorkers=[]},freeThreadData:function(C){if(!!C){if(C.threadInfoStruct){var $=i()[C.threadInfoStruct+100>>2];i()[C.threadInfoStruct+100>>2]=0,Yc($),Yc(C.threadInfoStruct)}C.threadInfoStruct=0,C.allocatedOwnStack&&C.stackBase&&Yc(C.stackBase),C.stackBase=0,C.worker&&(C.worker.pthread=null)}},returnWorkerToPool:function(C){_e.runWithoutMainThreadQueuedCalls(function(){delete _e.pthreads[C.pthread.threadInfoStruct],_e.unusedWorkers.push(C),_e.runningWorkers.splice(_e.runningWorkers.indexOf(C),1),_e.freeThreadData(C.pthread),C.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(C){i()[U5>>2]=0;try{C()}finally{i()[U5>>2]=1}},receiveObjectTransfer:function(C){},loadWasmModuleToWorker:function(C,$){C.onmessage=function(B){var ee=B.data,be=ee.cmd;if(C.pthread&&(_e.currentProxiedOperationCallerThread=C.pthread.threadInfoStruct),ee.targetThread&&ee.targetThread!=ka()){var ye=_e.pthreads[ee.targetThread];ye?ye.worker.postMessage(B.data,ee.transferList):console.error('Internal error! Worker sent a message "'+be+'" to target pthread '+ee.targetThread+", but that thread no longer exists!"),_e.currentProxiedOperationCallerThread=void 0;return}if(be==="processQueuedMainThreadWork")bh();else if(be==="spawnThread")hh(B.data);else if(be==="cleanupThread")oh(ee.thread);else if(be==="killThread")eg(ee.thread);else if(be==="cancelThread")tg(ee.thread);else if(be==="loaded")C.loaded=!0,$&&$(C),C.runPthread&&(C.runPthread(),delete C.runPthread);else if(be==="print")z("Thread "+ee.threadId+": "+ee.text);else if(be==="printErr")j("Thread "+ee.threadId+": "+ee.text);else if(be==="alert")alert("Thread "+ee.threadId+": "+ee.text);else if(be==="exit"){var xe=C.pthread&&Atomics.load(l(),C.pthread.threadInfoStruct+64>>2);xe&&_e.returnWorkerToPool(C)}else if(be==="exitProcess")try{OE(ee.returnCode)}catch(Ee){if(Ee instanceof Qc)return;throw Ee}else be==="cancelDone"?_e.returnWorkerToPool(C):be==="objectTransfer"?_e.receiveObjectTransfer(B.data):B.data.target==="setimmediate"?C.postMessage(B.data):j("worker sent an unknown command "+be);_e.currentProxiedOperationCallerThread=void 0},C.onerror=function(B){j("pthread sent an error! "+B.filename+":"+B.lineno+": "+B.message)},w&&(C.on("message",function(B){C.onmessage({data:B})}),C.on("error",function(B){C.onerror(B)}),C.on("exit",function(B){})),C.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||s,wasmMemory:re,wasmModule:me})},allocateUnusedWorker:function(){var C=R("tfjs-backend-wasm-threaded-simd.worker.js");_e.unusedWorkers.push(new Worker(C))},getNewWorker:function(){return _e.unusedWorkers.length==0&&(_e.allocateUnusedWorker(),_e.loadWasmModuleToWorker(_e.unusedWorkers[0])),_e.unusedWorkers.length>0?_e.unusedWorkers.pop():null},busySpinWait:function(C){for(var $=performance.now()+C;performance.now()<$;);}};function ng(C,$){W5(C,$),Yl(C)}u.establishStackSpace=ng;function sg(){return oe}u.getNoExitRuntime=sg;function rg(C,$){return En.get(C)($)}u.invokeEntryPoint=rg;function ag(C,$,B,ee){Gr("Assertion failed: "+Ze(C)+", at: "+[$?Ze($):"unknown filename",B,ee?Ze(ee):"unknown function"])}function og(C,$){var B=_main(C,$)}var oi;w?oi=function(){var C=process.hrtime();return C[0]*1e3+C[1]/1e6}:I?oi=function(){return performance.now()-u.__performance_now_clock_drift}:typeof dateNow!="undefined"?oi=dateNow:oi=function(){return performance.now()};function ig(C){return i()[$5()>>2]=C,C}function lg(C,$){if(I)return ba(1,1,C,$)}function ug(C,$){if(C==$)postMessage({cmd:"processQueuedMainThreadWork"});else if(I)postMessage({targetThread:C,cmd:"processThreadQueue"});else{var B=_e.pthreads[C],ee=B&&B.worker;if(!ee)return;ee.postMessage({cmd:"processThreadQueue"})}return 1}function cg(){Gr()}function dg(C,$,B){var ee=mg($,B);return ah[C].apply(null,ee)}function pg(C,$){}function ih(C,$,B){if(C<=0||C>a().length||C&!0)return-28;if(A){if(Atomics.load(i(),C>>2)!=$)return-6;for(var be=performance.now(),ye=be+B,xe=Atomics.exchange(i(),Ql>>2,C);;){if(be=performance.now(),be>ye)return xe=Atomics.exchange(i(),Ql>>2,0),-73;if(xe=Atomics.exchange(i(),Ql>>2,0),xe==0)break;if(bh(),Atomics.load(i(),C>>2)!=$)return-6;xe=Atomics.exchange(i(),Ql>>2,C)}return 0}else{var ee=Atomics.wait(i(),C>>2,$,B);if(ee==="timed-out")return-73;if(ee==="not-equal")return-6;if(ee==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ee}}function hg(C,$,B){o().copyWithin(C,$,$+B)}function fg(){return w?a9().cpus().length:navigator.hardwareConcurrency}function ba(C,$){for(var B=arguments.length-2,ee=Jc(),be=B,ye=Jl(be*8),xe=ye>>3,Ee=0;Ee>=2;B=o()[C++];){var ee=B<105;ee&&$&1&&$++,jc.push(ee?c()[$++>>1]:i()[$]),++$}return jc}function gg(C,$,B){Hc.length=$;for(var ee=B>>3,be=0;be<$;be++)Hc[be]=c()[ee+be];var ye=C<0,xe=ye?ah[-C-1]:Ug[C];return xe.apply(null,Hc)}function yg(){return o().length}function Ag(C){try{return re.grow(C-lt.byteLength+65535>>>16),ts(re.buffer),1}catch($){}}function xg(C){var $=yg();if(C<=$)return!1;var B=2147483648;if(C>B)return!1;for(var ee=1;ee<=4;ee*=2){var be=$*(1+.2/ee);be=Math.min(be,C+100663296);var ye=Math.min(B,Qn(Math.max(C,be),65536)),xe=Ag(ye);if(xe)return!0}return!1}var Ge={inEventHandler:0,removeAllEventListeners:function(){for(var C=Ge.eventHandlers.length-1;C>=0;--C)Ge._removeHandler(C);Ge.eventHandlers=[],Ge.deferredCalls=[]},registerRemoveEventListeners:function(){Ge.removeEventListenersRegistered||(Vc.push(Ge.removeAllEventListeners),Ge.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(C,$,B){function ee(xe,Ee){if(xe.length!=Ee.length)return!1;for(var ht in xe)if(xe[ht]!=Ee[ht])return!1;return!0}for(var be in Ge.deferredCalls){var ye=Ge.deferredCalls[be];if(ye.targetFunction==C&&ee(ye.argsList,B))return}Ge.deferredCalls.push({targetFunction:C,precedence:$,argsList:B}),Ge.deferredCalls.sort(function(xe,Ee){return xe.precedence>2]=B,i()[xe+4>>2]=ee,i()[xe+8>>2]=be,h2(0,C,637534208,$,ee,xe),Yl(ye)},getTargetThreadForEventCallback:function(C){switch(C){case 1:return 0;case 2:return _e.currentProxiedOperationCallerThread;default:return C}},getNodeNameForTarget:function(C){return C?C==window?"#window":C==screen?"#screen":C&&C.nodeName?C.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function bg(C){var $=yt(C)+1,B=ii($);return it(C,B,$),B}function vg(C,$,B,ee){var be=Jc(),ye=Jl(12),xe=0;$&&(xe=bg($)),i()[ye>>2]=xe,i()[ye+4>>2]=B,i()[ye+8>>2]=ee,h2(0,C,657457152,0,xe,ye),Yl(be)}function wg(C,$,B,ee){$=$?Ze($):"",vg(C,$,B,ee)}function kg(C){return C>2?Ze(C):C}var Sg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Ig(C){C=kg(C);var $=Sg[C]||(typeof document!="undefined"?document.querySelector(C):void 0);return $}function qc(C){return Ig(C)}function lh(C,$,B){var ee=qc(C);if(!ee)return-4;if(ee.canvasSharedPtr&&(i()[ee.canvasSharedPtr>>2]=$,i()[ee.canvasSharedPtr+4>>2]=B),ee.offscreenCanvas||!ee.controlTransferredOffscreen){ee.offscreenCanvas&&(ee=ee.offscreenCanvas);var be=!1;if(ee.GLctxObject&&ee.GLctxObject.GLctx){var ye=ee.GLctxObject.GLctx.getParameter(2978);be=ye[0]===0&&ye[1]===0&&ye[2]===ee.width&&ye[3]===ee.height}ee.width=$,ee.height=B,be&&ee.GLctxObject.GLctx.viewport(0,0,$,B)}else if(ee.canvasSharedPtr){var xe=i()[ee.canvasSharedPtr+8>>2];return wg(xe,C,$,B),1}else return-4;return 0}function uh(C,$,B){return I?ba(2,1,C,$,B):lh(C,$,B)}function Cg(C,$,B){var ee=qc(C);return ee?lh(C,$,B):uh(C,$,B)}function Tg(C){}function Ng(C,$){}function Eg(C){var $=C.getExtension("ANGLE_instanced_arrays");if($)return C.vertexAttribDivisor=function(B,ee){$.vertexAttribDivisorANGLE(B,ee)},C.drawArraysInstanced=function(B,ee,be,ye){$.drawArraysInstancedANGLE(B,ee,be,ye)},C.drawElementsInstanced=function(B,ee,be,ye,xe){$.drawElementsInstancedANGLE(B,ee,be,ye,xe)},1}function Rg(C){var $=C.getExtension("OES_vertex_array_object");if($)return C.createVertexArray=function(){return $.createVertexArrayOES()},C.deleteVertexArray=function(B){$.deleteVertexArrayOES(B)},C.bindVertexArray=function(B){$.bindVertexArrayOES(B)},C.isVertexArray=function(B){return $.isVertexArrayOES(B)},1}function _g(C){var $=C.getExtension("WEBGL_draw_buffers");if($)return C.drawBuffers=function(B,ee){$.drawBuffersWEBGL(B,ee)},1}function Dg(C){return!!(C.multiDrawWebgl=C.getExtension("WEBGL_multi_draw"))}var dt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function($){dt.lastError||(dt.lastError=$)},getNewId:function(C){for(var $=dt.counter++,B=C.length;B<$;B++)C[B]=null;return $},getSource:function(C,$,B,ee){for(var be="",ye=0;ye<$;++ye){var xe=ee?i()[ee+ye*4>>2]:-1;be+=Ze(i()[B+ye*4>>2],xe<0?void 0:xe)}return be},createContext:function(C,$){var B=C.getContext("webgl",$);if(!B)return 0;var ee=dt.registerContext(B,$);return ee},registerContext:function(C,$){var B=ii(8);i()[B+4>>2]=ka();var ee={handle:B,attributes:$,version:$.majorVersion,GLctx:C};return C.canvas&&(C.canvas.GLctxObject=ee),dt.contexts[B]=ee,(typeof $.enableExtensionsByDefault=="undefined"||$.enableExtensionsByDefault)&&dt.initExtensions(ee),B},makeContextCurrent:function(C){return dt.currentContext=dt.contexts[C],u.ctx=va=dt.currentContext&&dt.currentContext.GLctx,!(C&&!va)},getContext:function(C){return dt.contexts[C]},deleteContext:function(C){dt.currentContext===dt.contexts[C]&&(dt.currentContext=null),typeof Ge=="object"&&Ge.removeAllHandlersOnTarget(dt.contexts[C].GLctx.canvas),dt.contexts[C]&&dt.contexts[C].GLctx.canvas&&(dt.contexts[C].GLctx.canvas.GLctxObject=void 0),Yc(dt.contexts[C].handle),dt.contexts[C]=null},initExtensions:function(C){if(C||(C=dt.currentContext),!C.initExtensionsDone){C.initExtensionsDone=!0;var $=C.GLctx;Eg($),Rg($),_g($),$.disjointTimerQueryExt=$.getExtension("EXT_disjoint_timer_query"),Dg($);var B=$.getSupportedExtensions()||[];B.forEach(function(ee){ee.indexOf("lose_context")<0&&ee.indexOf("debug")<0&&$.getExtension(ee)})}},populateUniformTable:function(C){for(var $=dt.programs[C],B=dt.programInfos[C]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},ee=B.uniforms,be=va.getProgramParameter($,35718),ye=0;ye>2,ee=i()[B+(24>>2)],be={alpha:!!i()[B+(0>>2)],depth:!!i()[B+(4>>2)],stencil:!!i()[B+(8>>2)],antialias:!!i()[B+(12>>2)],premultipliedAlpha:!!i()[B+(16>>2)],preserveDrawingBuffer:!!i()[B+(20>>2)],powerPreference:$g[ee],failIfMajorPerformanceCaveat:!!i()[B+(28>>2)],majorVersion:i()[B+(32>>2)],minorVersion:i()[B+(36>>2)],enableExtensionsByDefault:i()[B+(40>>2)],explicitSwapControl:i()[B+(44>>2)],proxyContextToMainThread:i()[B+(48>>2)],renderViaOffscreenBackBuffer:i()[B+(52>>2)]},ye=qc(C);if(!ye||be.explicitSwapControl)return 0;var xe=dt.createContext(ye,be);return xe}function Pg(C,$){return Fg(C,$)}var ql={mappings:{},buffers:[null,[],[]],printChar:function(C,$){var B=ql.buffers[C];$===0||$===10?((C===1?z:j)(Je(B,0)),B.length=0):B.push($)},varargs:void 0,get:function(){ql.varargs+=4;var C=i()[ql.varargs-4>>2];return C},getStr:function(C){var $=Ze(C);return $},get64:function(C,$){return C}};function ch(C){return I?ba(3,1,C):0}function dh(C,$,B,ee,be){if(I)return ba(4,1,C,$,B,ee,be)}function ph(C,$,B,ee){if(I)return ba(5,1,C,$,B,ee);for(var be=0,ye=0;ye>2],Ee=i()[$+(ye*8+4)>>2],ht=0;ht>2]=be,0}function Og(C){var $=_e.threadExitHandlers.pop();C&&$()}function Mg(C,$){_e.threadExitHandlers.push(function(){En.get(C)($)})}function hh(C){if(I)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var $=_e.getNewWorker();if($.pthread!==void 0)throw"Internal error!";if(!C.pthread_ptr)throw"Internal error, no pthread ptr!";_e.runningWorkers.push($);for(var B=ii(128*4),ee=0;ee<128;++ee)i()[B+ee*4>>2]=0;var be=C.stackBase+C.stackSize,ye=_e.pthreads[C.pthread_ptr]={worker:$,stackBase:C.stackBase,stackSize:C.stackSize,allocatedOwnStack:C.allocatedOwnStack,threadInfoStruct:C.pthread_ptr},xe=ye.threadInfoStruct>>2;Atomics.store(l(),xe+(64>>2),C.detached),Atomics.store(l(),xe+(100>>2),B),Atomics.store(l(),xe+(40>>2),ye.threadInfoStruct),Atomics.store(l(),xe+(80>>2),C.stackSize),Atomics.store(l(),xe+(76>>2),be),Atomics.store(l(),xe+(104>>2),C.stackSize),Atomics.store(l(),xe+(104+8>>2),be),Atomics.store(l(),xe+(104+12>>2),C.detached);var Ee=F5(),ht=Ee+40;Atomics.store(l(),xe+(172>>2),ht),$.pthread=ye;var mn={cmd:"run",start_routine:C.startRoutine,arg:C.arg,threadInfoStruct:C.pthread_ptr,stackBase:C.stackBase,stackSize:C.stackSize};$.runPthread=function(){mn.time=performance.now(),$.postMessage(mn,C.transferList)},$.loaded&&($.runPthread(),delete $.runPthread)}function zg(C,$,B,ee){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!C)return j("pthread_create called with a null thread pointer!"),28;var be=[],ye=0;if(I&&(be.length===0||ye))return L5(687865856,C,$,B,ee);if(ye)return ye;var xe=0,Ee=0,ht=0;$&&$!=-1?(xe=i()[$>>2],xe+=81920,Ee=i()[$+8>>2],ht=i()[$+12>>2]!==0):xe=2097152;var mn=Ee==0;mn?Ee=V5(16,xe):(Ee-=xe,Ne(Ee>0));for(var tn=ii(228),Sa=0;Sa<228>>2;++Sa)l()[(tn>>2)+Sa]=0;i()[C>>2]=tn,i()[tn+12>>2]=tn;var eu=tn+152;i()[eu>>2]=eu;var Pn={stackBase:Ee,stackSize:xe,allocatedOwnStack:mn,detached:ht,startRoutine:B,pthread_ptr:tn,arg:ee,transferList:be};return I?(Pn.cmd="spawnThread",postMessage(Pn,be)):hh(Pn),0}function Lg(){if(!!I){var C=ka();if(!!C){var $=Atomics.load(l(),C+56>>2);if(!$){var B=Atomics.load(l(),C+0>>2);if(B==2)throw"Canceled!"}}}}function Bg(){w||b||Z("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function Wg(C,$,B){if(!C)return j("pthread_join attempted on a null thread pointer!"),xa.ESRCH;if(I&&ka()==C)return j("PThread "+C+" is attempting to join to itself!"),xa.EDEADLK;if(!I&&M5()==C)return j("Main thread "+C+" is attempting to join to itself!"),xa.EDEADLK;var ee=i()[C+12>>2];if(ee!==C)return j("pthread_join attempted on thread "+C+", which does not point to a valid thread, or does not exist anymore!"),xa.ESRCH;var be=Atomics.load(l(),C+64>>2);if(be)return j("Attempted to join thread "+C+", which was already detached!"),xa.EINVAL;for(B&&Bg();;){var ye=Atomics.load(l(),C+0>>2);if(ye==1){var xe=Atomics.load(l(),C+4>>2);return $&&(i()[$>>2]=xe),Atomics.store(l(),C+64>>2,1),I?postMessage({cmd:"cleanupThread",thread:C}):oh(C),0}if(!B)return xa.EBUSY;Lg(),I||bh(),ih(C+0,ye,I?100:1)}}function Vg(C,$){return Wg(C,$,!0)}function fh(C){if(I)return ba(6,1,C);switch(C){case 30:return 16384;case 85:var $=2147483648;return $/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return ig(28),-1}I||_e.initMainThreadBlock();var va,Ug=[null,lg,uh,ch,dh,ph,fh],Gg={e:ag,r:og,x:ug,b:cg,y:dg,j:pg,d:ih,c:Gc,f:oi,p:hg,A:fg,u:gg,q:xg,v:Cg,i:Tg,s:Ng,w:Pg,l:ch,n:dh,g:ph,o:Q0,a:re||u.wasmMemory,z:Og,k:Mg,h:zg,m:Vg,t:fh},D5=J0(),mh=u.___wasm_call_ctors=function(){return(mh=u.___wasm_call_ctors=u.asm.B).apply(null,arguments)},Hg=u._init=function(){return(Hg=u._init=u.asm.C).apply(null,arguments)},jg=u._init_with_threads_count=function(){return(jg=u._init_with_threads_count=u.asm.D).apply(null,arguments)},qg=u._get_threads_count=function(){return(qg=u._get_threads_count=u.asm.E).apply(null,arguments)},Xg=u._register_tensor=function(){return(Xg=u._register_tensor=u.asm.F).apply(null,arguments)},Kg=u._dispose_data=function(){return(Kg=u._dispose_data=u.asm.G).apply(null,arguments)},Zg=u._dispose=function(){return(Zg=u._dispose=u.asm.H).apply(null,arguments)},Yg=u._Abs=function(){return(Yg=u._Abs=u.asm.I).apply(null,arguments)},Jg=u._Add=function(){return(Jg=u._Add=u.asm.J).apply(null,arguments)},Qg=u._AddN=function(){return(Qg=u._AddN=u.asm.K).apply(null,arguments)},e2=u._All=function(){return(e2=u._All=u.asm.L).apply(null,arguments)},t2=u._Any=function(){return(t2=u._Any=u.asm.M).apply(null,arguments)},n2=u._ArgMax=function(){return(n2=u._ArgMax=u.asm.N).apply(null,arguments)},s2=u._AvgPool=function(){return(s2=u._AvgPool=u.asm.O).apply(null,arguments)},r2=u._BatchMatMul=function(){return(r2=u._BatchMatMul=u.asm.P).apply(null,arguments)},a2=u._Ceil=function(){return(a2=u._Ceil=u.asm.Q).apply(null,arguments)},o2=u._ClipByValue=function(){return(o2=u._ClipByValue=u.asm.R).apply(null,arguments)},i2=u._Conv2D=function(){return(i2=u._Conv2D=u.asm.S).apply(null,arguments)},l2=u._Conv2DBackpropInput=function(){return(l2=u._Conv2DBackpropInput=u.asm.T).apply(null,arguments)},u2=u._Cos=function(){return(u2=u._Cos=u.asm.U).apply(null,arguments)},c2=u._Cosh=function(){return(c2=u._Cosh=u.asm.V).apply(null,arguments)},gh=u._CropAndResize=function(){return(gh=u._CropAndResize=u.asm.W).apply(null,arguments)},yh=u._Cumsum=function(){return(yh=u._Cumsum=u.asm.X).apply(null,arguments)},Xc=u._DepthToSpace=function(){return(Xc=u._DepthToSpace=u.asm.Y).apply(null,arguments)},Xl=u._DepthwiseConv2dNative=function(){return(Xl=u._DepthwiseConv2dNative=u.asm.Z).apply(null,arguments)},d2=u._Elu=function(){return(d2=u._Elu=u.asm._).apply(null,arguments)},Kc=u._Equal=function(){return(Kc=u._Equal=u.asm.$).apply(null,arguments)},Kl=u._Exp=function(){return(Kl=u._Exp=u.asm.aa).apply(null,arguments)},Zl=u._FlipLeftRight=function(){return(Zl=u._FlipLeftRight=u.asm.ba).apply(null,arguments)},p2=u._Floor=function(){return(p2=u._Floor=u.asm.ca).apply(null,arguments)},se=u._FloorDiv=function(){return(se=u._FloorDiv=u.asm.da).apply(null,arguments)},le=u._FusedBatchNorm=function(){return(le=u._FusedBatchNorm=u.asm.ea).apply(null,arguments)},Ie=u._FusedConv2D=function(){return(Ie=u._FusedConv2D=u.asm.fa).apply(null,arguments)},ut=u._FusedDepthwiseConv2D=function(){return(ut=u._FusedDepthwiseConv2D=u.asm.ga).apply(null,arguments)},Wt=u._Gather=function(){return(Wt=u._Gather=u.asm.ha).apply(null,arguments)},Dt=u._GatherNd=function(){return(Dt=u._GatherNd=u.asm.ia).apply(null,arguments)},Ye=u._Greater=function(){return(Ye=u._Greater=u.asm.ja).apply(null,arguments)},Qe=u._GreaterEqual=function(){return(Qe=u._GreaterEqual=u.asm.ka).apply(null,arguments)},Sn=u._LeakyRelu=function(){return(Sn=u._LeakyRelu=u.asm.la).apply(null,arguments)},Hr=u._Less=function(){return(Hr=u._Less=u.asm.ma).apply(null,arguments)},jr=u._LessEqual=function(){return(jr=u._LessEqual=u.asm.na).apply(null,arguments)},Ah=u._Log=function(){return(Ah=u._Log=u.asm.oa).apply(null,arguments)},Zc=u._LogicalAnd=function(){return(Zc=u._LogicalAnd=u.asm.pa).apply(null,arguments)},ys=u._Max=function(){return(ys=u._Max=u.asm.qa).apply(null,arguments)},wa=u._MaxPool=function(){return(wa=u._MaxPool=u.asm.ra).apply(null,arguments)},xh=u._Maximum=function(){return(xh=u._Maximum=u.asm.sa).apply(null,arguments)},UN=u._Mean=function(){return(UN=u._Mean=u.asm.ta).apply(null,arguments)},GN=u._Min=function(){return(GN=u._Min=u.asm.ua).apply(null,arguments)},HN=u._Minimum=function(){return(HN=u._Minimum=u.asm.va).apply(null,arguments)},jN=u._MirrorPad=function(){return(jN=u._MirrorPad=u.asm.wa).apply(null,arguments)},qN=u._Multiply=function(){return(qN=u._Multiply=u.asm.xa).apply(null,arguments)},XN=u._Neg=function(){return(XN=u._Neg=u.asm.ya).apply(null,arguments)},KN=u._NonMaxSuppressionV3=function(){return(KN=u._NonMaxSuppressionV3=u.asm.za).apply(null,arguments)},ZN=u._NonMaxSuppressionV4=function(){return(ZN=u._NonMaxSuppressionV4=u.asm.Aa).apply(null,arguments)},YN=u._NonMaxSuppressionV5=function(){return(YN=u._NonMaxSuppressionV5=u.asm.Ba).apply(null,arguments)},JN=u._NotEqual=function(){return(JN=u._NotEqual=u.asm.Ca).apply(null,arguments)},QN=u._OneHot=function(){return(QN=u._OneHot=u.asm.Da).apply(null,arguments)},eE=u._PadV2=function(){return(eE=u._PadV2=u.asm.Ea).apply(null,arguments)},tE=u._Pow=function(){return(tE=u._Pow=u.asm.Fa).apply(null,arguments)},nE=u._Prelu=function(){return(nE=u._Prelu=u.asm.Ga).apply(null,arguments)},sE=u._Prod=function(){return(sE=u._Prod=u.asm.Ha).apply(null,arguments)},rE=u._RealDiv=function(){return(rE=u._RealDiv=u.asm.Ia).apply(null,arguments)},aE=u._Relu=function(){return(aE=u._Relu=u.asm.Ja).apply(null,arguments)},oE=u._Relu6=function(){return(oE=u._Relu6=u.asm.Ka).apply(null,arguments)},iE=u._ResizeBilinear=function(){return(iE=u._ResizeBilinear=u.asm.La).apply(null,arguments)},lE=u._Reverse=function(){return(lE=u._Reverse=u.asm.Ma).apply(null,arguments)},uE=u._RotateWithOffset=function(){return(uE=u._RotateWithOffset=u.asm.Na).apply(null,arguments)},cE=u._Round=function(){return(cE=u._Round=u.asm.Oa).apply(null,arguments)},dE=u._Rsqrt=function(){return(dE=u._Rsqrt=u.asm.Pa).apply(null,arguments)},pE=u._ScatterNd=function(){return(pE=u._ScatterNd=u.asm.Qa).apply(null,arguments)},hE=u._SelectV2=function(){return(hE=u._SelectV2=u.asm.Ra).apply(null,arguments)},fE=u._Sigmoid=function(){return(fE=u._Sigmoid=u.asm.Sa).apply(null,arguments)},mE=u._Sin=function(){return(mE=u._Sin=u.asm.Ta).apply(null,arguments)},gE=u._Softmax=function(){return(gE=u._Softmax=u.asm.Ua).apply(null,arguments)},yE=u._SparseFillEmptyRows=function(){return(yE=u._SparseFillEmptyRows=u.asm.Va).apply(null,arguments)},AE=u._SparseReshape=function(){return(AE=u._SparseReshape=u.asm.Wa).apply(null,arguments)},xE=u._SparseSegmentReduction=function(){return(xE=u._SparseSegmentReduction=u.asm.Xa).apply(null,arguments)},bE=u._Sqrt=function(){return(bE=u._Sqrt=u.asm.Ya).apply(null,arguments)},vE=u._Square=function(){return(vE=u._Square=u.asm.Za).apply(null,arguments)},wE=u._SquaredDifference=function(){return(wE=u._SquaredDifference=u.asm._a).apply(null,arguments)},kE=u._Step=function(){return(kE=u._Step=u.asm.$a).apply(null,arguments)},SE=u._StridedSlice=function(){return(SE=u._StridedSlice=u.asm.ab).apply(null,arguments)},IE=u._Sub=function(){return(IE=u._Sub=u.asm.bb).apply(null,arguments)},CE=u._Sum=function(){return(CE=u._Sum=u.asm.cb).apply(null,arguments)},TE=u._Tan=function(){return(TE=u._Tan=u.asm.db).apply(null,arguments)},NE=u._Tanh=function(){return(NE=u._Tanh=u.asm.eb).apply(null,arguments)},EE=u._Tile=function(){return(EE=u._Tile=u.asm.fb).apply(null,arguments)},RE=u._TopK=function(){return(RE=u._TopK=u.asm.gb).apply(null,arguments)},_E=u._Transform=function(){return(_E=u._Transform=u.asm.hb).apply(null,arguments)},DE=u._Transpose=function(){return(DE=u._Transpose=u.asm.ib).apply(null,arguments)},$E=u.__FusedMatMul=function(){return($E=u.__FusedMatMul=u.asm.jb).apply(null,arguments)},ii=u._malloc=function(){return(ii=u._malloc=u.asm.kb).apply(null,arguments)},Yc=u._free=function(){return(Yc=u._free=u.asm.lb).apply(null,arguments)},$5=u.___errno_location=function(){return($5=u.___errno_location=u.asm.mb).apply(null,arguments)},F5=u._emscripten_get_global_libc=function(){return(F5=u._emscripten_get_global_libc=u.asm.ob).apply(null,arguments)},ka=u._pthread_self=function(){return(ka=u._pthread_self=u.asm.pb).apply(null,arguments)},P5=u.___pthread_tsd_run_dtors=function(){return(P5=u.___pthread_tsd_run_dtors=u.asm.qb).apply(null,arguments)},bh=u._emscripten_main_thread_process_queued_calls=function(){return(bh=u._emscripten_main_thread_process_queued_calls=u.asm.rb).apply(null,arguments)},FE=u._emscripten_current_thread_process_queued_calls=function(){return(FE=u._emscripten_current_thread_process_queued_calls=u.asm.sb).apply(null,arguments)},O5=u._emscripten_register_main_browser_thread_id=function(){return(O5=u._emscripten_register_main_browser_thread_id=u.asm.tb).apply(null,arguments)},M5=u._emscripten_main_browser_thread_id=function(){return(M5=u._emscripten_main_browser_thread_id=u.asm.ub).apply(null,arguments)},z5=u.__emscripten_do_dispatch_to_thread=function(){return(z5=u.__emscripten_do_dispatch_to_thread=u.asm.vb).apply(null,arguments)},L5=u._emscripten_sync_run_in_main_thread_4=function(){return(L5=u._emscripten_sync_run_in_main_thread_4=u.asm.wb).apply(null,arguments)},B5=u._emscripten_run_in_main_runtime_thread_js=function(){return(B5=u._emscripten_run_in_main_runtime_thread_js=u.asm.xb).apply(null,arguments)},h2=u.__emscripten_call_on_thread=function(){return(h2=u.__emscripten_call_on_thread=u.asm.yb).apply(null,arguments)},PE=u._emscripten_tls_init=function(){return(PE=u._emscripten_tls_init=u.asm.zb).apply(null,arguments)},f2=u.__emscripten_thread_init=function(){return(f2=u.__emscripten_thread_init=u.asm.Ab).apply(null,arguments)},Jc=u.stackSave=function(){return(Jc=u.stackSave=u.asm.Bb).apply(null,arguments)},Yl=u.stackRestore=function(){return(Yl=u.stackRestore=u.asm.Cb).apply(null,arguments)},Jl=u.stackAlloc=function(){return(Jl=u.stackAlloc=u.asm.Db).apply(null,arguments)},W5=u._emscripten_stack_set_limits=function(){return(W5=u._emscripten_stack_set_limits=u.asm.Eb).apply(null,arguments)},V5=u._memalign=function(){return(V5=u._memalign=u.asm.Fb).apply(null,arguments)},U5=u.__emscripten_allow_main_runtime_queued_calls=10208,Ql=u.__emscripten_main_thread_futex=10412;u.cwrap=ot,u.PThread=_e,u.PThread=_e,u.wasmMemory=re,u.ExitStatus=Qc;var vh;function Qc(C){this.name="ExitStatus",this.message="Program terminated with exit("+C+")",this.status=C}ri=function C(){vh||m2(),vh||(ri=C)};function m2(C){if(C=C||g,Ks>0)return;if(I){d(u),Qp(),postMessage({cmd:"loaded"});return}if(Jp(),Ks>0)return;function $(){vh||(vh=!0,u.calledRun=!0,!Ae&&(Qp(),eh(),d(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),th()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),$()},1)):$()}u.run=m2;function OE(C,$){if(!($&&oe&&C===0)){if(!$&&I)throw postMessage({cmd:"exitProcess",returnCode:C}),new Qc(C);oe||(_e.terminateAllThreads(),Te=C,ns(),u.onExit&&u.onExit(C),Ae=!0),x(C,new Qc(C))}}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();I&&(oe=!1,_e.initWorker()),m2();var wh;h&&(wh={uncaughtException:process.listeners("uncaughtException").filter(function(C){return!h.uncaughtException.indexOf(C)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(C){return!h.unhandledRejection.indexOf(C)>-1})});var kh;if(typeof WasmBackendModule!="undefined")kh=WasmBackendModule;else if(typeof r!="undefined")kh=r;else throw new Error("Could not find wasm module in post.js");if(wh){var ME=kh._dispose;kh._dispose=function(){ME(),wh.uncaughtException.forEach(function(C){process.removeListener("uncaughtException",C)}),wh.unhandledRejection.forEach(function(C){process.removeListener("unhandledRejection",C)})}}return r.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}}),i9=nn({"src/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var n=function(){var s=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(s=s||__filename),function(r){r=r||{};var a=typeof r!="undefined"?r:{},o,i;a.ready=new Promise(function(se,le){o=se,i=le});var l;typeof process!="undefined"&&process.listeners&&(l={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var c={},u;for(u in a)a.hasOwnProperty(u)&&(c[u]=a[u]);var d=[],p="./this.program",h=function(se,le){throw le},f=!1,m=!1,g=!1,y=!1;f=typeof window=="object",m=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!f&&!g&&!m;var x="";function A(se){return a.locateFile?a.locateFile(se,x):x+se}var b,w,k,I,E,R;g?(m?x=rd().dirname(x)+"/":x=__dirname+"/",b=function(le,Ie){return E||(E=Ch()),R||(R=rd()),le=R.normalize(le),E.readFileSync(le,Ie?null:"utf8")},k=function(le){var Ie=b(le,!0);return Ie.buffer||(Ie=new Uint8Array(Ie)),z(Ie.buffer),Ie},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),d=process.argv.slice(2),process.on("uncaughtException",function(se){if(!(se instanceof d2))throw se}),process.on("unhandledRejection",Ur),h=function(se){process.exit(se)},a.inspect=function(){return"[Emscripten Module object]"}):y?(typeof read!="undefined"&&(b=function(le){return read(le)}),k=function(le){var Ie;return typeof readbuffer=="function"?new Uint8Array(readbuffer(le)):(Ie=read(le,"binary"),z(typeof Ie=="object"),Ie)},typeof scriptArgs!="undefined"?d=scriptArgs:typeof arguments!="undefined"&&(d=arguments),typeof quit=="function"&&(h=function(se){quit(se)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(f||m)&&(m?x=self.location.href:typeof document!="undefined"&&document.currentScript&&(x=document.currentScript.src),s&&(x=s),x.indexOf("blob:")!==0?x=x.substr(0,x.lastIndexOf("/")+1):x="",b=function(se){var le=new XMLHttpRequest;return le.open("GET",se,!1),le.send(null),le.responseText},m&&(k=function(se){var le=new XMLHttpRequest;return le.open("GET",se,!1),le.responseType="arraybuffer",le.send(null),new Uint8Array(le.response)}),w=function(se,le,Ie){var ut=new XMLHttpRequest;ut.open("GET",se,!0),ut.responseType="arraybuffer",ut.onload=function(){if(ut.status==200||ut.status==0&&ut.response){le(ut.response);return}Ie()},ut.onerror=Ie,ut.send(null)},I=function(se){document.title=se});var P=a.print||console.log.bind(console),D=a.printErr||console.warn.bind(console);for(u in c)c.hasOwnProperty(u)&&(a[u]=c[u]);c=null,a.arguments&&(d=a.arguments),a.thisProgram&&(p=a.thisProgram),a.quit&&(h=a.quit);var _;a.wasmBinary&&(_=a.wasmBinary);var T=a.noExitRuntime||!0;typeof WebAssembly!="object"&&Ur("no native wasm support detected");var O,W=!1,X;function z(se,le){se||Ur("Assertion failed: "+le)}function j(se){var le=a["_"+se];return z(le,"Cannot call unknown function "+se+", make sure it is exported"),le}function Z(se,le,Ie,ut,Wt){var Dt={string:function(ys){var wa=0;if(ys!=null&&ys!==0){var xh=(ys.length<<2)+1;wa=Xc(xh),re(ys,wa,xh)}return wa},array:function(ys){var wa=Xc(ys.length);return me(ys,wa),wa}};function Ye(ys){return le==="string"?U(ys):le==="boolean"?Boolean(ys):ys}var Qe=j(se),Sn=[],Hr=0;if(ut)for(var jr=0;jr=ut);)++Wt;if(Wt-le>16&&se.subarray&&ne)return ne.decode(se.subarray(le,Wt));for(var Dt="";le>10,56320|Hr&1023)}}return Dt}function U(se,le){return se?ae(Fe,se,le):""}function oe(se,le,Ie,ut){if(!(ut>0))return 0;for(var Wt=Ie,Dt=Ie+ut-1,Ye=0;Ye=55296&&Qe<=57343){var Sn=se.charCodeAt(++Ye);Qe=65536+((Qe&1023)<<10)|Sn&1023}if(Qe<=127){if(Ie>=Dt)break;le[Ie++]=Qe}else if(Qe<=2047){if(Ie+1>=Dt)break;le[Ie++]=192|Qe>>6,le[Ie++]=128|Qe&63}else if(Qe<=65535){if(Ie+2>=Dt)break;le[Ie++]=224|Qe>>12,le[Ie++]=128|Qe>>6&63,le[Ie++]=128|Qe&63}else{if(Ie+3>=Dt)break;le[Ie++]=240|Qe>>18,le[Ie++]=128|Qe>>12&63,le[Ie++]=128|Qe>>6&63,le[Ie++]=128|Qe&63}}return le[Ie]=0,Ie-Wt}function re(se,le,Ie){return oe(se,Fe,le,Ie)}function me(se,le){Ne.set(se,le)}function Ae(se,le){return se%le>0&&(se+=le-se%le),se}var Te,Ne,Fe,Ue,ot,Je,Ze,gt,it;function yt(se){Te=se,a.HEAP8=Ne=new Int8Array(se),a.HEAP16=Ue=new Int16Array(se),a.HEAP32=Je=new Int32Array(se),a.HEAPU8=Fe=new Uint8Array(se),a.HEAPU16=ot=new Uint16Array(se),a.HEAPU32=Ze=new Uint32Array(se),a.HEAPF32=gt=new Float32Array(se),a.HEAPF64=it=new Float64Array(se)}var _t=a.INITIAL_MEMORY||16777216,Qn,lt=[],ms=[],kn=[],qs=[],es=!1;ms.push({func:function(){rh()}});function gs(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)ts(a.preRun.shift());Ks(lt)}function Es(){es=!0,Ks(ms)}function Xs(){Ks(kn)}function Rs(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)ya(a.postRun.shift());Ks(qs)}function ts(se){lt.unshift(se)}function ya(se){qs.unshift(se)}var En=0,Aa=null,_s=null;function Wc(se){En++,a.monitorRunDependencies&&a.monitorRunDependencies(En)}function Vc(se){if(En--,a.monitorRunDependencies&&a.monitorRunDependencies(En),En==0&&(Aa!==null&&(clearInterval(Aa),Aa=null),_s)){var le=_s;_s=null,le()}}a.preloadedImages={},a.preloadedAudios={};function Ur(se){a.onAbort&&a.onAbort(se),se+="",D(se),W=!0,X=1,se="abort("+se+"). Build with -s ASSERTIONS=1 for more info.";var le=new WebAssembly.RuntimeError(se);throw i(le),le}function Yp(se,le){return String.prototype.startsWith?se.startsWith(le):se.indexOf(le)===0}var G0="data:application/octet-stream;base64,";function Jp(se){return Yp(se,G0)}var Qp="file://";function eh(se){return Yp(se,Qp)}var ns="tfjs-backend-wasm.wasm";Jp(ns)||(ns=A(ns));function th(se){try{if(se==ns&&_)return new Uint8Array(_);if(k)return k(se);throw"both async and sync fetching of the wasm failed"}catch(le){Ur(le)}}function H0(){if(!_&&(f||m)){if(typeof fetch=="function"&&!eh(ns))return fetch(ns,{credentials:"same-origin"}).then(function(se){if(!se.ok)throw"failed to load wasm binary file at '"+ns+"'";return se.arrayBuffer()}).catch(function(){return th(ns)});if(w)return new Promise(function(se,le){w(ns,function(Ie){se(new Uint8Array(Ie))},le)})}return Promise.resolve().then(function(){return th(ns)})}function j0(){var se={a:ss};function le(Ye,Qe){var Sn=Ye.exports;a.asm=Sn,O=a.asm.h,yt(O.buffer),Qn=a.asm.Va,Vc("wasm-instantiate")}Wc("wasm-instantiate");function Ie(Ye){le(Ye.instance)}function ut(Ye){return H0().then(function(Qe){return WebAssembly.instantiate(Qe,se)}).then(Ye,function(Qe){D("failed to asynchronously prepare wasm: "+Qe),Ur(Qe)})}function Wt(){return!_&&typeof WebAssembly.instantiateStreaming=="function"&&!Jp(ns)&&!eh(ns)&&typeof fetch=="function"?fetch(ns,{credentials:"same-origin"}).then(function(Ye){var Qe=WebAssembly.instantiateStreaming(Ye,se);return Qe.then(Ie,function(Sn){return D("wasm streaming compile failed: "+Sn),D("falling back to ArrayBuffer instantiation"),ut(Ie)})}):ut(Ie)}if(a.instantiateWasm)try{var Dt=a.instantiateWasm(se,le);return Dt}catch(Ye){return D("Module.instantiateWasm callback failed with error: "+Ye),!1}return Wt().catch(i),{}}function Ks(se){for(;se.length>0;){var le=se.shift();if(typeof le=="function"){le(a);continue}var Ie=le.func;typeof Ie=="number"?le.arg===void 0?Qn.get(Ie)():Qn.get(Ie)(le.arg):Ie(le.arg===void 0?null:le.arg)}}function Uc(){Ur()}function ri(se,le,Ie){Fe.copyWithin(se,le,le+Ie)}function q0(){return Fe.length}function X0(se){try{return O.grow(se-Te.byteLength+65535>>>16),yt(O.buffer),1}catch(le){}}function Gr(se){var le=q0(),Ie=2147483648;if(se>Ie)return!1;for(var ut=1;ut<=4;ut*=2){var Wt=le*(1+.2/ut);Wt=Math.min(Wt,se+100663296);var Dt=Math.min(Ie,Ae(Math.max(se,Wt),65536)),Ye=X0(Dt);if(Ye)return!0}return!1}var ai={mappings:{},buffers:[null,[],[]],printChar:function(se,le){var Ie=ai.buffers[se];le===0||le===10?((se===1?P:D)(ae(Ie,0)),Ie.length=0):Ie.push(le)},varargs:void 0,get:function(){ai.varargs+=4;var se=Je[ai.varargs-4>>2];return se},getStr:function(se){var le=U(se);return le},get64:function(se,le){return se}};function K0(se){return 0}function nh(se,le,Ie,ut,Wt){}function Z0(se,le,Ie,ut){for(var Wt=0,Dt=0;Dt>2],Qe=Je[le+(Dt*8+4)>>2],Sn=0;Sn>2]=Wt,0}function sh(){return 28}var ss={a:Uc,d:ri,e:Gr,f:K0,c:nh,b:Z0,g:sh},Y0=j0(),rh=a.___wasm_call_ctors=function(){return(rh=a.___wasm_call_ctors=a.asm.i).apply(null,arguments)},J0=a._init=function(){return(J0=a._init=a.asm.j).apply(null,arguments)},ah=a._init_with_threads_count=function(){return(ah=a._init_with_threads_count=a.asm.k).apply(null,arguments)},Q0=a._get_threads_count=function(){return(Q0=a._get_threads_count=a.asm.l).apply(null,arguments)},jl=a._register_tensor=function(){return(jl=a._register_tensor=a.asm.m).apply(null,arguments)},xa=a._dispose_data=function(){return(xa=a._dispose_data=a.asm.n).apply(null,arguments)},Gc=a._dispose=function(){return(Gc=a._dispose=a.asm.o).apply(null,arguments)},eg=a._Abs=function(){return(eg=a._Abs=a.asm.p).apply(null,arguments)},tg=a._Add=function(){return(tg=a._Add=a.asm.q).apply(null,arguments)},oh=a._AddN=function(){return(oh=a._AddN=a.asm.r).apply(null,arguments)},_e=a._All=function(){return(_e=a._All=a.asm.s).apply(null,arguments)},ng=a._Any=function(){return(ng=a._Any=a.asm.t).apply(null,arguments)},sg=a._ArgMax=function(){return(sg=a._ArgMax=a.asm.u).apply(null,arguments)},rg=a._AvgPool=function(){return(rg=a._AvgPool=a.asm.v).apply(null,arguments)},ag=a._BatchMatMul=function(){return(ag=a._BatchMatMul=a.asm.w).apply(null,arguments)},og=a._Ceil=function(){return(og=a._Ceil=a.asm.x).apply(null,arguments)},oi=a._ClipByValue=function(){return(oi=a._ClipByValue=a.asm.y).apply(null,arguments)},ig=a._Conv2D=function(){return(ig=a._Conv2D=a.asm.z).apply(null,arguments)},lg=a._Conv2DBackpropInput=function(){return(lg=a._Conv2DBackpropInput=a.asm.A).apply(null,arguments)},ug=a._Cos=function(){return(ug=a._Cos=a.asm.B).apply(null,arguments)},cg=a._Cosh=function(){return(cg=a._Cosh=a.asm.C).apply(null,arguments)},dg=a._CropAndResize=function(){return(dg=a._CropAndResize=a.asm.D).apply(null,arguments)},pg=a._Cumsum=function(){return(pg=a._Cumsum=a.asm.E).apply(null,arguments)},ih=a._DepthToSpace=function(){return(ih=a._DepthToSpace=a.asm.F).apply(null,arguments)},hg=a._DepthwiseConv2dNative=function(){return(hg=a._DepthwiseConv2dNative=a.asm.G).apply(null,arguments)},fg=a._Elu=function(){return(fg=a._Elu=a.asm.H).apply(null,arguments)},ba=a._Equal=function(){return(ba=a._Equal=a.asm.I).apply(null,arguments)},Hc=a._Exp=function(){return(Hc=a._Exp=a.asm.J).apply(null,arguments)},jc=a._FlipLeftRight=function(){return(jc=a._FlipLeftRight=a.asm.K).apply(null,arguments)},mg=a._Floor=function(){return(mg=a._Floor=a.asm.L).apply(null,arguments)},gg=a._FloorDiv=function(){return(gg=a._FloorDiv=a.asm.M).apply(null,arguments)},yg=a._FusedBatchNorm=function(){return(yg=a._FusedBatchNorm=a.asm.N).apply(null,arguments)},Ag=a._FusedConv2D=function(){return(Ag=a._FusedConv2D=a.asm.O).apply(null,arguments)},xg=a._FusedDepthwiseConv2D=function(){return(xg=a._FusedDepthwiseConv2D=a.asm.P).apply(null,arguments)},Ge=a._Gather=function(){return(Ge=a._Gather=a.asm.Q).apply(null,arguments)},bg=a._GatherNd=function(){return(bg=a._GatherNd=a.asm.R).apply(null,arguments)},vg=a._Greater=function(){return(vg=a._Greater=a.asm.S).apply(null,arguments)},wg=a._GreaterEqual=function(){return(wg=a._GreaterEqual=a.asm.T).apply(null,arguments)},kg=a._LeakyRelu=function(){return(kg=a._LeakyRelu=a.asm.U).apply(null,arguments)},Sg=a._Less=function(){return(Sg=a._Less=a.asm.V).apply(null,arguments)},Ig=a._LessEqual=function(){return(Ig=a._LessEqual=a.asm.W).apply(null,arguments)},qc=a._Log=function(){return(qc=a._Log=a.asm.X).apply(null,arguments)},lh=a._LogicalAnd=function(){return(lh=a._LogicalAnd=a.asm.Y).apply(null,arguments)},uh=a._Max=function(){return(uh=a._Max=a.asm.Z).apply(null,arguments)},Cg=a._MaxPool=function(){return(Cg=a._MaxPool=a.asm._).apply(null,arguments)},Tg=a._Maximum=function(){return(Tg=a._Maximum=a.asm.$).apply(null,arguments)},Ng=a._Mean=function(){return(Ng=a._Mean=a.asm.aa).apply(null,arguments)},Eg=a._Min=function(){return(Eg=a._Min=a.asm.ba).apply(null,arguments)},Rg=a._Minimum=function(){return(Rg=a._Minimum=a.asm.ca).apply(null,arguments)},_g=a._MirrorPad=function(){return(_g=a._MirrorPad=a.asm.da).apply(null,arguments)},Dg=a._Multiply=function(){return(Dg=a._Multiply=a.asm.ea).apply(null,arguments)},dt=a._Neg=function(){return(dt=a._Neg=a.asm.fa).apply(null,arguments)},$g=a._NonMaxSuppressionV3=function(){return($g=a._NonMaxSuppressionV3=a.asm.ga).apply(null,arguments)},Fg=a._NonMaxSuppressionV4=function(){return(Fg=a._NonMaxSuppressionV4=a.asm.ha).apply(null,arguments)},Pg=a._NonMaxSuppressionV5=function(){return(Pg=a._NonMaxSuppressionV5=a.asm.ia).apply(null,arguments)},ql=a._NotEqual=function(){return(ql=a._NotEqual=a.asm.ja).apply(null,arguments)},ch=a._OneHot=function(){return(ch=a._OneHot=a.asm.ka).apply(null,arguments)},dh=a._PadV2=function(){return(dh=a._PadV2=a.asm.la).apply(null,arguments)},ph=a._Pow=function(){return(ph=a._Pow=a.asm.ma).apply(null,arguments)},Og=a._Prelu=function(){return(Og=a._Prelu=a.asm.na).apply(null,arguments)},Mg=a._Prod=function(){return(Mg=a._Prod=a.asm.oa).apply(null,arguments)},hh=a._RealDiv=function(){return(hh=a._RealDiv=a.asm.pa).apply(null,arguments)},zg=a._Relu=function(){return(zg=a._Relu=a.asm.qa).apply(null,arguments)},Lg=a._Relu6=function(){return(Lg=a._Relu6=a.asm.ra).apply(null,arguments)},Bg=a._ResizeBilinear=function(){return(Bg=a._ResizeBilinear=a.asm.sa).apply(null,arguments)},Wg=a._Reverse=function(){return(Wg=a._Reverse=a.asm.ta).apply(null,arguments)},Vg=a._RotateWithOffset=function(){return(Vg=a._RotateWithOffset=a.asm.ua).apply(null,arguments)},fh=a._Round=function(){return(fh=a._Round=a.asm.va).apply(null,arguments)},va=a._Rsqrt=function(){return(va=a._Rsqrt=a.asm.wa).apply(null,arguments)},Ug=a._ScatterNd=function(){return(Ug=a._ScatterNd=a.asm.xa).apply(null,arguments)},Gg=a._SelectV2=function(){return(Gg=a._SelectV2=a.asm.ya).apply(null,arguments)},D5=a._Sigmoid=function(){return(D5=a._Sigmoid=a.asm.za).apply(null,arguments)},mh=a._Sin=function(){return(mh=a._Sin=a.asm.Aa).apply(null,arguments)},Hg=a._Softmax=function(){return(Hg=a._Softmax=a.asm.Ba).apply(null,arguments)},jg=a._SparseFillEmptyRows=function(){return(jg=a._SparseFillEmptyRows=a.asm.Ca).apply(null,arguments)},qg=a._SparseReshape=function(){return(qg=a._SparseReshape=a.asm.Da).apply(null,arguments)},Xg=a._SparseSegmentReduction=function(){return(Xg=a._SparseSegmentReduction=a.asm.Ea).apply(null,arguments)},Kg=a._Sqrt=function(){return(Kg=a._Sqrt=a.asm.Fa).apply(null,arguments)},Zg=a._Square=function(){return(Zg=a._Square=a.asm.Ga).apply(null,arguments)},Yg=a._SquaredDifference=function(){return(Yg=a._SquaredDifference=a.asm.Ha).apply(null,arguments)},Jg=a._Step=function(){return(Jg=a._Step=a.asm.Ia).apply(null,arguments)},Qg=a._StridedSlice=function(){return(Qg=a._StridedSlice=a.asm.Ja).apply(null,arguments)},e2=a._Sub=function(){return(e2=a._Sub=a.asm.Ka).apply(null,arguments)},t2=a._Sum=function(){return(t2=a._Sum=a.asm.La).apply(null,arguments)},n2=a._Tan=function(){return(n2=a._Tan=a.asm.Ma).apply(null,arguments)},s2=a._Tanh=function(){return(s2=a._Tanh=a.asm.Na).apply(null,arguments)},r2=a._Tile=function(){return(r2=a._Tile=a.asm.Oa).apply(null,arguments)},a2=a._TopK=function(){return(a2=a._TopK=a.asm.Pa).apply(null,arguments)},o2=a._Transform=function(){return(o2=a._Transform=a.asm.Qa).apply(null,arguments)},i2=a._Transpose=function(){return(i2=a._Transpose=a.asm.Ra).apply(null,arguments)},l2=a.__FusedMatMul=function(){return(l2=a.__FusedMatMul=a.asm.Sa).apply(null,arguments)},u2=a._malloc=function(){return(u2=a._malloc=a.asm.Ta).apply(null,arguments)},c2=a._free=function(){return(c2=a._free=a.asm.Ua).apply(null,arguments)},gh=a.stackSave=function(){return(gh=a.stackSave=a.asm.Wa).apply(null,arguments)},yh=a.stackRestore=function(){return(yh=a.stackRestore=a.asm.Xa).apply(null,arguments)},Xc=a.stackAlloc=function(){return(Xc=a.stackAlloc=a.asm.Ya).apply(null,arguments)};a.cwrap=Q;var Xl;function d2(se){this.name="ExitStatus",this.message="Program terminated with exit("+se+")",this.status=se}_s=function se(){Xl||Kc(),Xl||(_s=se)};function Kc(se){if(se=se||d,En>0||(gs(),En>0))return;function le(){Xl||(Xl=!0,a.calledRun=!0,!W&&(Es(),Xs(),o(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),Rs()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),le()},1)):le()}if(a.run=Kc,a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();Kc();var Kl;l&&(Kl={uncaughtException:process.listeners("uncaughtException").filter(function(se){return!l.uncaughtException.indexOf(se)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(se){return!l.unhandledRejection.indexOf(se)>-1})});var Zl;if(typeof r!="undefined")Zl=r;else if(typeof WasmBackendModuleThreadedSimd!="undefined")Zl=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(Kl){var p2=Zl._dispose;Zl._dispose=function(){p2(),Kl.uncaughtException.forEach(function(se){process.removeListener("uncaughtException",se)}),Kl.unhandledRejection.forEach(function(se){process.removeListener("unhandledRejection",se)})}}return r.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}}),l9=1e-7,u9=1e-4,ad=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},nu=class{refCount(e){return Zs("refCount")}incRef(e){return Zs("incRef")}timerAvailable(){return!0}time(e){return Zs("time")}read(e){return Zs("read")}readSync(e){return Zs("readSync")}numDataIds(){return Zs("numDataIds")}disposeData(e,t){return Zs("disposeData")}write(e,t,n){return Zs("write")}move(e,t,n,s,r){return Zs("move")}memory(){return Zs("memory")}floatPrecision(){return Zs("floatPrecision")}epsilon(){return this.floatPrecision()===32?l9:u9}dispose(){return Zs("dispose")}};function Zs(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function X5(e){let t=e.length,n=0;for(;t>0;)n=Math.random()*t|0,t--,Th(e,t,n)}function c9(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,s=0;for(;n>0;)s=Math.random()*n|0,n--,Th(e,n,s),Th(t,n,s)}function od(e,t,n){return Math.max(e,Math.min(t,n))}function d9(e){return e%2==0?e:e+1}function Th(e,t,n){let s=e[t];e[t]=e[n],e[n]=s}function p9(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ui(e){M(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function ci(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||_n(e)&&!n)for(let s=0;s0,n){return new Promise((s,r)=>{let a=0,o=()=>{if(e()){s();return}a++;let i=t(a);if(n!=null&&a>=n){r();return}setTimeout(o,i)};o()})}function b9(e,t){let n=1,s=-1;for(let a=0;a=0)n*=e[a];else if(e[a]===-1){if(s!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${s} and dim ${a}`);s=a}else if(e[a]<0)throw Error(`Shapes can not be < 0. Found ${e[a]} at dim ${a}`);if(s===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let r=e.slice();return r[s]=t/n,r}function Ys(e,t){let n=t.length;return e=e==null?t.map((s,r)=>r):[].concat(e),M(e.every(s=>s>=-n&&s`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),M(e.every(s=>su(s)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(s=>s<0?n+s:s)}function K5(e,t){let n=[],s=[],r=t!=null&&Array.isArray(t)&&t.length===0,a=t==null||r?null:Ys(t,e).sort(),o=0;for(let i=0;ii)&&e[i]===1&&(n.push(e[i]),s.push(i)),a[o]<=i&&o++}e[i]!==1&&(n.push(e[i]),s.push(i))}return{newShape:n,keptDims:s}}function Z5(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Y5(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function J5(e,t){for(let n=0;nt+=n.length),t}function Ta(e){return typeof e=="string"||e instanceof String}function t3(e){return typeof e=="boolean"}function n3(e){return typeof e=="number"}function Nh(e){return Array.isArray(e)?Nh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":n3(e)?"float32":Ta(e)?"string":t3(e)?"bool":"float32"}function Na(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Eh(e,t){for(let n=t;n=0;--s)n[s]=n[s+1]*e[s+1];return n}function s3(e,t,n,s=!1){let r=new Array;if(t.length===1){let a=t[0]*(s?2:1);for(let o=0;ol*c)*(s?2:1);for(let l=0;lr*a)*(n?2:1);if(s===0)return[];if(s!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${n?" for a complex tensor":""}.`);return s3(0,e,t,n)}function x2(e,t){let n=Rh(e,t);for(let s=0;ss*r,1);if(t==null||t==="float32")return au(e,new Float32Array(n));if(t==="int32")return au(e,new Int32Array(n));if(t==="bool")return au(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function b2(e){e.forEach(t=>{M(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function k9(e,t,n){if(t===0)return 0;if(t===1)return e[0];let s=e[e.length-1];for(let r=0;r{let[s,r]=n.split(":");this.urlFlags[s]=T9(s,r)})}};function I9(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...s)=>(C9(t,s[0],s[1]),s.join("="))),t}function C9(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function T9(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function Y(){return Tr}var Tr=null;function N9(e){Tr=e}var w2;function o3(){if(w2==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");w2=e}return w2}function E9(){let e=o3();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function k2(e,t){let n=E9();if(n.has(e))return n.get(e);{let s=t();return n.set(e,s),n.get(e)}}var di="Abs",ou="Acos",iu="Acosh",qr="Add",Ea="AddN",lu="All",uu="Any",Ra="ArgMax",cu="ArgMin",du="Asin",pu="Asinh",hu="Atan",fu="Atanh",mu="Atan2",_a="AvgPool",_h="AvgPoolGrad",ld="AvgPool3D",Dh="AvgPool3DGrad",Da="BatchMatMul",pi="BatchToSpaceND",$h="Bincount",i3="BroadcastTo",Fh="BroadcastArgs",$a="Cast",Fa="Ceil",Xr="ClipByValue",ud="Complex",cd="ComplexAbs",hi="Concat",Pa="Conv2D",Ph="Conv2DBackpropFilter",Oa="Conv2DBackpropInput",dd="Conv3D",Oh="Conv3DBackpropFilterV2",Mh="Conv3DBackpropInputV2",Ma="Cos",za="Cosh",fi="Cumsum",mi="CropAndResize",zh="DenseBincount",gi="DepthToSpace",La="DepthwiseConv2dNative",Lh="DepthwiseConv2dNativeBackpropFilter",Bh="DepthwiseConv2dNativeBackpropInput",Wh="Diag",pd="Dilation2D",Vh="Dilation2DBackpropInput",Uh="Dilation2DBackpropFilter",Ba="RealDiv",hd="Einsum",Wa="Elu",Gh="EluGrad",gu="Erf",yi="Equal",Va="Exp",Ai="ExpandDims",xi="Expm1",Hh="FFT",yu="Fill",bi="FlipLeftRight",Ua="Floor",Ga="FloorDiv",Ha="FusedBatchNorm",vi="GatherV2",wi="GatherNd",ki="Greater",ja="GreaterEqual",qa="Identity",jh="IFFT",fd="Imag",Au="IsFinite",xu="IsInf",bu="IsNan",Si="LeakyRelu",Ii="Less",Ci="LessEqual",qh="LinSpace",Xa="Log",vu="Log1p",Ti="LogicalAnd",wu="LogicalNot",md="LogicalOr",l3="LogSoftmax",gd="LRN",Xh="LRNGrad",Ka="Max",Za="Maximum",Ya="MaxPool",Kh="MaxPoolGrad",yd="MaxPool3D",Zh="MaxPool3DGrad",Yh="MaxPoolWithArgmax",Ja="Mean",Qa="Min",eo="Minimum",to="MirrorPad",ku="Mod",Jh="Multinomial",no="Multiply",Ni="Neg",Ei="NotEqual",Ri="NonMaxSuppressionV3",Su="NonMaxSuppressionV4",_i="NonMaxSuppressionV5",Di="OnesLike",$i="OneHot",Fi="Pack",so="PadV2",R9="Pool",ro="Pow",ao="Prelu",Pi="Prod",Iu="Range",Ad="Real",Cu="Reciprocal",oo="Relu",Oi="Reshape",Tu="ResizeNearestNeighbor",Qh="ResizeNearestNeighborGrad",io="ResizeBilinear",ef="ResizeBilinearGrad",lo="Relu6",Mi="Reverse",zi="Round",uo="Rsqrt",Li="ScatterNd",Bi="Select",Nu="Selu",Wi="Slice",co="Sin",Vi="Sinh",Eu="Sign",po="Sigmoid",Ru="Softplus",ho="Sqrt",fo="Sum",Ui="SpaceToBatchND",Gi="SplitV",mo="Softmax",xd="SparseFillEmptyRows",_u="SparseReshape",bd="SparseSegmentMean",vd="SparseSegmentSum",wd="SparseToDense",go="SquaredDifference",Du="Square",Hi="StridedSlice",kd="StringNGrams",tf="StringSplit",nf="StringToHashBucketFast",yo="Sub",ji="Tan",Ao="Tanh",Kr="Tile",qi="TopK",Xi="Transform",xo="Transpose",sf="Unique",Ki="Unpack",Sd="UnsortedSegmentSum",Zi="ZerosLike",bo="Step",Id="FromPixels",Yi="RotateWithOffset",vo="_FusedMatMul",wo="FusedConv2D",ko="FusedDepthwiseConv2D";function So(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.warn(...e)}function _9(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.log(...e)}var $u=k2("kernelRegistry",()=>new Map),Cd=k2("gradRegistry",()=>new Map);function rf(e,t){let n=I2(e,t);return $u.get(n)}function S2(e){return Cd.get(e)}function Zr(e){let t=$u.entries(),n=[];for(;;){let{done:s,value:r}=t.next();if(s)break;let[a,o]=r,[i]=a.split("_");i===e&&n.push(o)}return n}function dr(e){let{kernelName:t,backendName:n}=e,s=I2(t,n);$u.has(s)&&So(`The kernel '${t}' for backend '${n}' is already registered`),$u.set(s,e)}function u3(e){let{kernelName:t}=e;Cd.has(t)&&Y().getBool("DEBUG")&&So(`Overriding the gradient for '${t}'`),Cd.set(t,e)}function D9(e,t){let n=I2(e,t);if(!$u.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);$u.delete(n)}function $9(e){if(!Cd.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Cd.delete(e)}function F9(e,t){Zr(e).forEach(s=>{let r=Object.assign({},s,{backendName:t});dr(r)})}function I2(e,t){return`${t}_${e}`}var v={};Me(v,{arraysEqual:()=>Ca,assert:()=>M,assertNonNegativeIntegerDimensions:()=>b2,assertNonNull:()=>ui,assertShapesMatch:()=>On,bytesFromStringArray:()=>e3,bytesPerElement:()=>A2,checkConversionForErrors:()=>J5,clamp:()=>od,computeStrides:()=>ru,createScalarValue:()=>B9,createShuffledIndices:()=>A9,decodeString:()=>lf,distSquared:()=>f9,encodeString:()=>Ed,fetch:()=>V9,fingerPrint64:()=>L9,flatten:()=>ci,getArrayFromDType:()=>Y5,getTypedArrayFromDType:()=>Z5,hasEncodingLoss:()=>v9,hexToLong:()=>Td,indexToLoc:()=>S9,inferDtype:()=>Nh,inferFromImplicitShape:()=>b9,isBoolean:()=>t3,isFunction:()=>Na,isInt:()=>su,isNumber:()=>n3,isPromise:()=>v2,isScalarShape:()=>m9,isString:()=>Ta,isTypedArray:()=>_n,isValidDtype:()=>Q5,locToIndex:()=>k9,makeOnesTypedArray:()=>x2,makeZerosNestedTypedArray:()=>w9,makeZerosTypedArray:()=>Rh,nearestDivisor:()=>Eh,nearestLargerEven:()=>d9,now:()=>Nd,parseAxisParam:()=>Ys,randUniform:()=>h9,repeatedTry:()=>x9,rightPad:()=>id,shuffle:()=>X5,shuffleCombo:()=>c9,sizeFromShape:()=>It,sizeToSquarishShape:()=>y9,squeezeShape:()=>K5,sum:()=>p9,swap:()=>Th,tanh:()=>g9,toNestedArray:()=>au,toTypedArray:()=>of});var c3=li(jE()),Ji=c3.default||c3;function Td(e){return Ji.fromString(e,!0,16)}var d3=Td("c3a5c85c97cb3127"),Qi=Td("b492b66fbe98f273"),Mn=Td("9ae16a3b2f90404f");function C2(e){return e.xor(e.shru(47))}function p3(e,t,n){let s=e.slice(t,t+n);return Ji.fromBytes(Array.from(s),!0,!0)}function kt(e,t){return p3(e,t,8)}function h3(e,t){return p3(e,t,4)}function gn(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function Io(e,t,n=Td("9ddfea08eb382d69")){let s=e.xor(t).mul(n);s=s.xor(s.shru(47));let r=t.xor(s).mul(n);return r=r.xor(r.shru(47)),r=r.mul(n),r}function P9(e,t,n,s,r,a){r=r.add(e),a=gn(a.add(r).add(s),21);let o=r;return r=r.add(t),r=r.add(n),a=a.add(gn(r,44)),[r.add(s),a.add(o)]}function af(e,t,n,s){return P9(kt(e,t),kt(e,t+8),kt(e,t+16),kt(e,t+24),n,s)}function O9(e,t=e.length){if(t>=8){let n=Mn.add(t*2),s=kt(e,0).add(Mn),r=kt(e,t-8),a=gn(r,37).mul(n).add(s),o=gn(s,25).add(r).mul(n);return Io(a,o,n)}if(t>=4){let n=Mn.add(t*2),s=h3(e,0);return Io(s.shl(3).add(t),h3(e,t-4),n)}if(t>0){let n=e[0],s=e[t>>1],r=e[t-1],a=n+(s<<8),o=t+(r<<2);return C2(Mn.mul(a).xor(d3.mul(o))).mul(Mn)}return Mn}function M9(e,t=e.length){let n=Mn.add(t*2),s=kt(e,0).mul(Qi),r=kt(e,8),a=kt(e,t-8).mul(n),o=kt(e,t-16).mul(Mn);return Io(gn(s.add(r),43).add(gn(a,30)).add(o),s.add(gn(r.add(Mn),18)).add(a),n)}function z9(e,t=e.length){let n=Mn.add(t*2),s=kt(e,0).mul(Mn),r=kt(e,8),a=kt(e,t-8).mul(n),o=kt(e,t-16).mul(Mn),i=gn(s.add(r),43).add(gn(a,30)).add(o),l=Io(i,s.add(gn(r.add(Mn),18)).add(a),n),c=kt(e,16).mul(n),u=kt(e,24),d=i.add(kt(e,t-32)).mul(n),p=l.add(kt(e,t-24)).mul(n);return Io(gn(c.add(u),43).add(gn(d,30)).add(p),c.add(gn(u.add(s),18)).add(d),n)}function L9(e,t=e.length){let n=Ji.fromNumber(81,!0);if(t<=32)return t<=16?O9(e,t):M9(e,t);if(t<=64)return z9(e,t);let s=n,r=n.mul(Qi).add(113),a=C2(r.mul(Mn).add(113)).mul(Mn),o=[Ji.UZERO,Ji.UZERO],i=[Ji.UZERO,Ji.UZERO];s=s.mul(Mn).add(kt(e,0));let l=0,c=(t-1>>6)*64,u=c+(t-1&63)-63;do s=gn(s.add(r).add(o[0]).add(kt(e,l+8)),37).mul(Qi),r=gn(r.add(o[1]).add(kt(e,l+48)),42).mul(Qi),s=s.xor(i[1]),r=r.add(o[0]).add(kt(e,l+40)),a=gn(a.add(i[0]),33).mul(Qi),o=af(e,l,o[1].mul(Qi),s.add(i[0])),i=af(e,l+32,a.add(i[1]),r.add(kt(e,l+16))),[a,s]=[s,a],l+=64;while(l!==c);let d=Qi.add(a.and(255).shl(1));return l=u,i[0]=i[0].add(t-1&63),o[0]=o[0].add(i[0]),i[0]=i[0].add(o[0]),s=gn(s.add(r).add(o[0]).add(kt(e,l+8)),37).mul(d),r=gn(r.add(o[1]).add(kt(e,l+48)),42).mul(d),s=s.xor(i[1].mul(9)),r=r.add(o[0].mul(9).add(kt(e,l+40))),a=gn(a.add(i[0]),33).mul(d),o=af(e,l,o[1].mul(d),s.add(i[0])),i=af(e,l+32,a.add(i[1]),r.add(kt(e,l+16))),[a,s]=[s,a],Io(Io(o[0],i[0],d).add(C2(r).mul(d3)).add(a),Io(o[1],i[1],d).add(s),d)}function B9(e,t){return t==="string"?Ed(e):of([e],t)}function W9(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function of(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=ci(e)),Y().getBool("DEBUG")&&J5(e,t),W9(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let s=0;s{s=n()},a,o=Nd();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(r);else{r();for(let l of s)l.dataSync();a=Promise.resolve({kernelMs:Nd()-o})}if(Y().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let l=0;l{G9(u,c.dtype,e)})}return{kernelName:e,outputs:s,inputs:t,timeMs:a.then(l=>l.kernelMs),extraInfo:a.then(l=>l.getExtraProfileInfo!=null?l.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:s,inputs:r,extraInfo:a}=e;n.forEach(o=>{Promise.all([o.data(),s,a]).then(i=>{this.logger.logKernelProfile(t,o,i[0],i[1],r,i[2])})})}};function G9(e,t,n){if(t!=="float32")return!1;for(let s=0;s0?f:""} `}}console.log(`%c${i} %c${o} %c${l}D ${u} %c${c} %c${d} %c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function j9(e,t,n){let s={},r={};for(let l=0;ls[m.id]=!0),h=!0,r[c.id]=!0;break}if(h)break}}let a={};a[n.id]=!0;let o={};for(let l=e.length-1;l>=0;l--){let c=e[l],u=c.inputs;for(let d=0;d=0;r--){let a=t[r],o=[];if(a.outputs.forEach(l=>{let c=e[l.id];c!=null?o.push(c):o.push(null)}),a.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${a.kernelName}.`);let i=a.gradient(o);for(let l in a.inputs){if(!(l in i))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(i)}.`);let c=n(()=>i[l]());if(c.dtype!=="float32")throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${c.dtype}'`);let u=a.inputs[l];if(!Ca(c.shape,u.shape))throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input '${l}' has shape '${c.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=c;else{let d=e[u.id];e[u.id]=s(d,c),d.dispose()}}}}var f3=20,Rd=3,T2=7;function X9(e,t,n,s){let r=ru(t),a=K9(e,t,n,r),o=t.length,i=uf(e,t,n,r,a),l=["Tensor"];return s&&(l.push(` dtype: ${n}`),l.push(` rank: ${o}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(i.map(c=>" "+c).join(` +var Human=(()=>{var g2=Object.defineProperty;var zE=(e,t,n)=>t in e?g2(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var LE=e=>g2(e,"__esModule",{value:!0});var ed=(e,t)=>{LE(e);for(var n in t)g2(e,n,{get:t[n],enumerable:!0})};var fe=(e,t,n)=>(zE(e,typeof t!="symbol"?t+"":t,n),n),H5=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var td=(e,t,n)=>(H5(e,t,"read from private field"),n?n.call(e):t.get(e)),nd=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},sd=(e,t,n,s)=>(H5(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n);var q1e={};ed(q1e,{Human:()=>VN,default:()=>VN,defaults:()=>Ia,env:()=>pe});function J(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function We(e,t){let n=e.endsWith("/")?"":"/",r=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${n}${t}`;if(!r.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${r}`);return r}var ie=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function y2(e,t,n="config",s=[]){for(let r of Object.keys(t))if(typeof t[r]=="object")y2(e[r],t[r],r,s);else{let a=e&&typeof e[r]!="undefined";a||s.push({reason:"unknown property",where:`${n}.${r} = ${t[r]}`});let o=e&&typeof e[r]==typeof t[r];a&&!o&&s.push({reason:"property type mismatch",where:`${n}.${r} = ${t[r]}`,expected:typeof e[r]})}return t.debug&&n==="config"&&s.length>0&&J("invalid configuration",s),s}function Rn(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,s)=>(Object.keys(s||{}).forEach(r=>{let a=n[r],o=s[r];Array.isArray(a)&&Array.isArray(o)?n[r]=a.concat(...o):t(a)&&t(o)?n[r]=Rn(a,o):n[r]=o}),n),{})}var Ia={backend:"",modelBasePath:"",wasmPath:"",debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,cropFactor:1.6,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var Pl={};ed(Pl,{Abs:()=>di,Acos:()=>ou,Acosh:()=>iu,AdadeltaOptimizer:()=>Bf,AdagradOptimizer:()=>Wf,AdamOptimizer:()=>Vf,AdamaxOptimizer:()=>Uf,Add:()=>qr,AddN:()=>Ea,All:()=>lu,Any:()=>uu,ArgMax:()=>Ra,ArgMin:()=>cu,Asin:()=>du,Asinh:()=>pu,Atan:()=>hu,Atan2:()=>mu,Atanh:()=>fu,AvgPool:()=>_a,AvgPool3D:()=>ld,AvgPool3DGrad:()=>Dh,AvgPoolGrad:()=>_h,BackendWasm:()=>m8,BatchMatMul:()=>Da,BatchToSpaceND:()=>pi,Bincount:()=>$h,BroadcastArgs:()=>Fh,BroadcastTo:()=>i3,Callback:()=>xS,CallbackList:()=>ik,Cast:()=>$a,Ceil:()=>Fa,ClipByValue:()=>Xr,Complex:()=>ud,ComplexAbs:()=>cd,Concat:()=>hi,Conv2D:()=>Pa,Conv2DBackpropFilter:()=>Ph,Conv2DBackpropInput:()=>Oa,Conv3D:()=>dd,Conv3DBackpropFilterV2:()=>Oh,Conv3DBackpropInputV2:()=>Mh,Cos:()=>Ma,Cosh:()=>za,CropAndResize:()=>mi,Cumsum:()=>fi,CustomCallback:()=>uk,DataStorage:()=>ad,DenseBincount:()=>zh,DepthToSpace:()=>gi,DepthwiseConv2dNative:()=>La,DepthwiseConv2dNativeBackpropFilter:()=>Lh,DepthwiseConv2dNativeBackpropInput:()=>Bh,Diag:()=>Wh,Dilation2D:()=>pd,Dilation2DBackpropFilter:()=>Uh,Dilation2DBackpropInput:()=>Vh,ENV:()=>Tr,EarlyStopping:()=>vS,Einsum:()=>hd,Elu:()=>Wa,EluGrad:()=>Gh,Environment:()=>a3,Equal:()=>yi,Erf:()=>gu,Exp:()=>Va,ExpandDims:()=>Ai,Expm1:()=>xi,FFT:()=>Hh,Fill:()=>yu,FlipLeftRight:()=>bi,Floor:()=>Ua,FloorDiv:()=>Ga,FromPixels:()=>Id,FusedBatchNorm:()=>Ha,FusedConv2D:()=>wo,FusedDepthwiseConv2D:()=>ko,GPGPUContext:()=>qm,GatherNd:()=>wi,GatherV2:()=>vi,GraphModel:()=>QS,Greater:()=>ki,GreaterEqual:()=>ja,History:()=>lk,IFFT:()=>jh,Identity:()=>qa,Imag:()=>fd,InputSpec:()=>Jt,IsFinite:()=>Au,IsInf:()=>xu,IsNan:()=>bu,KernelBackend:()=>nu,LRN:()=>gd,LRNGrad:()=>Xh,LayerVariable:()=>nk,LayersModel:()=>sa,LeakyRelu:()=>Si,Less:()=>Ii,LessEqual:()=>Ci,LinSpace:()=>qh,Log:()=>Xa,Log1p:()=>vu,LogSoftmax:()=>l3,LogicalAnd:()=>Ti,LogicalNot:()=>wu,LogicalOr:()=>md,MathBackendCPU:()=>QA,MathBackendWebGL:()=>Ip,Max:()=>Ka,MaxPool:()=>Ya,MaxPool3D:()=>yd,MaxPool3DGrad:()=>Zh,MaxPoolGrad:()=>Kh,MaxPoolWithArgmax:()=>Yh,Maximum:()=>Za,Mean:()=>Ja,Min:()=>Qa,Minimum:()=>eo,MirrorPad:()=>to,Mod:()=>ku,MomentumOptimizer:()=>Gf,Multinomial:()=>Jh,Multiply:()=>no,Neg:()=>Ni,NonMaxSuppressionV3:()=>Ri,NonMaxSuppressionV4:()=>Su,NonMaxSuppressionV5:()=>_i,NotEqual:()=>Ei,OP_SCOPE_SUFFIX:()=>k3,OneHot:()=>$i,OnesLike:()=>Di,Optimizer:()=>ea,OptimizerConstructors:()=>Po,Pack:()=>Fi,PadV2:()=>so,Pool:()=>R9,Pow:()=>ro,Prelu:()=>ao,Prod:()=>Pi,RMSPropOptimizer:()=>Hf,RNN:()=>ra,Range:()=>Iu,Rank:()=>N2,Real:()=>Ad,RealDiv:()=>Ba,Reciprocal:()=>Cu,Reduction:()=>Vn,Relu:()=>oo,Relu6:()=>lo,Reshape:()=>Oi,ResizeBilinear:()=>io,ResizeBilinearGrad:()=>ef,ResizeNearestNeighbor:()=>Tu,ResizeNearestNeighborGrad:()=>Qh,Reverse:()=>Mi,RotateWithOffset:()=>Yi,Round:()=>zi,Rsqrt:()=>uo,SGDOptimizer:()=>Kd,ScatterNd:()=>Li,Select:()=>Bi,Selu:()=>Nu,Sequential:()=>gm,Sigmoid:()=>po,Sign:()=>Eu,Sin:()=>co,Sinh:()=>Vi,Slice:()=>Wi,Softmax:()=>mo,Softplus:()=>Ru,SpaceToBatchND:()=>Ui,SparseFillEmptyRows:()=>xd,SparseReshape:()=>_u,SparseSegmentMean:()=>bd,SparseSegmentSum:()=>vd,SparseToDense:()=>wd,SplitV:()=>Gi,Sqrt:()=>ho,Square:()=>Du,SquaredDifference:()=>go,Step:()=>bo,StridedSlice:()=>Hi,StringNGrams:()=>kd,StringSplit:()=>tf,StringToHashBucketFast:()=>nf,Sub:()=>yo,Sum:()=>fo,SymbolicTensor:()=>br,Tan:()=>ji,Tanh:()=>Ao,Tensor:()=>et,TensorBuffer:()=>sn,Tile:()=>Kr,TopK:()=>qi,Transform:()=>Xi,Transpose:()=>xo,Unique:()=>sf,Unpack:()=>Ki,UnsortedSegmentSum:()=>Sd,Variable:()=>$d,ZerosLike:()=>Zi,_FusedMatMul:()=>vo,abs:()=>rn,acos:()=>cv,acosh:()=>dv,add:()=>ue,addN:()=>gf,all:()=>i1,any:()=>yf,argMax:()=>Fs,argMin:()=>pv,asin:()=>hv,asinh:()=>fv,atan:()=>mv,atan2:()=>gv,atanh:()=>yv,avgPool:()=>xf,avgPool3d:()=>c1,backend:()=>Rr,backend_util:()=>N,basicLSTMCell:()=>yD,batchNorm:()=>Bu,batchNorm2d:()=>vv,batchNorm3d:()=>wv,batchNorm4d:()=>kv,batchToSpaceND:()=>bf,bincount:()=>d1,booleanMaskAsync:()=>EP,broadcastArgs:()=>Sv,broadcastTo:()=>Ld,broadcast_util:()=>sl,browser:()=>Js,buffer:()=>ze,callbacks:()=>nG,cast:()=>ge,ceil:()=>Iv,clipByValue:()=>As,clone:()=>Ln,complex:()=>Co,concat:()=>St,concat1d:()=>Cv,concat2d:()=>Wu,concat3d:()=>Tv,concat4d:()=>Nv,constraints:()=>Pw,conv1d:()=>p1,conv2d:()=>_o,conv2dTranspose:()=>f1,conv3d:()=>m1,conv3dTranspose:()=>Rv,copyRegisteredKernels:()=>F9,cos:()=>vf,cosh:()=>g1,cosineWindow:()=>W1,cumsum:()=>y1,customGrad:()=>Dr,data:()=>e7,denseBincount:()=>_v,deprecationWarn:()=>a1,depthToSpace:()=>Dv,depthwiseConv2d:()=>Bd,deregisterOp:()=>aG,device_util:()=>Pu,diag:()=>qD,dilation2d:()=>$v,disableDeprecationWarnings:()=>$_,dispose:()=>te,disposeVariables:()=>F_,div:()=>de,divNoNan:()=>Fv,dot:()=>e$,dropout:()=>uw,einsum:()=>Pv,elu:()=>Wd,enableDebugMode:()=>D_,enableProdMode:()=>lv,enclosingPowerOfTwo:()=>cw,engine:()=>as,env:()=>Y,equal:()=>Ps,erf:()=>Ov,exp:()=>Os,expandDims:()=>Zt,expm1:()=>Mv,eye:()=>A1,fft:()=>Df,fill:()=>Vu,findBackend:()=>o1,findBackendFactory:()=>z_,floor:()=>Vd,floorDiv:()=>mf,forceHalfFloat:()=>RC,fused:()=>Fo,gather:()=>Uu,gatherND:()=>lw,gather_util:()=>Y2,getBackend:()=>$s,getGradient:()=>S2,getKernel:()=>rf,getKernelsForBackend:()=>Zr,getThreadsCount:()=>z2e,gpgpu_util:()=>sC,grad:()=>I$,grads:()=>C$,greater:()=>xs,greaterEqual:()=>ll,ifft:()=>jd,imag:()=>wf,image:()=>Se,inTopKAsync:()=>BP,initializers:()=>Vw,input:()=>Dk,io:()=>rs,irfft:()=>P1,isFinite:()=>m$,isInf:()=>y$,isNaN:()=>zv,keep:()=>yn,kernel_impls:()=>tr,layers:()=>Qw,leakyRelu:()=>kf,less:()=>x1,lessEqual:()=>ul,linalg:()=>bw,linspace:()=>Lv,loadGraphModel:()=>Be,loadLayersModel:()=>hV,localResponseNormalization:()=>Bv,log:()=>Ms,log1p:()=>Sf,logSigmoid:()=>D$,logSoftmax:()=>b1,logSumExp:()=>Hv,logicalAnd:()=>fr,logicalNot:()=>Cf,logicalOr:()=>k1,logicalXor:()=>G$,losses:()=>SM,matMul:()=>je,math:()=>W3,max:()=>An,maxPool:()=>Tf,maxPool3d:()=>S1,maxPoolWithArgmax:()=>jv,maximum:()=>Jr,mean:()=>Ut,memory:()=>hf,meshgrid:()=>Z$,metrics:()=>gS,min:()=>Do,minimum:()=>Ud,mirrorPad:()=>qv,mod:()=>Gd,model:()=>dV,models:()=>yS,moments:()=>Nf,movingAverage:()=>DP,mul:()=>L,multiRNNCell:()=>rF,multinomial:()=>Xv,neg:()=>zt,nextFrame:()=>vw,norm:()=>L1,notEqual:()=>Hu,oneHot:()=>Md,ones:()=>bs,onesLike:()=>zs,op:()=>G,outerProduct:()=>uF,pad:()=>er,pad1d:()=>pF,pad2d:()=>fF,pad3d:()=>gF,pad4d:()=>AF,pool:()=>kF,pow:()=>$o,prelu:()=>Rf,print:()=>P3,prod:()=>I1,profile:()=>P_,rand:()=>NF,randomGamma:()=>DF,randomNormal:()=>Kv,randomUniform:()=>ju,range:()=>qu,ready:()=>ff,real:()=>Hd,reciprocal:()=>Zv,registerBackend:()=>ol,registerCallbackConstructor:()=>fV,registerGradient:()=>u3,registerKernel:()=>dr,registerOp:()=>rG,regularizers:()=>AS,relu:()=>$r,relu6:()=>N1,removeBackend:()=>M_,reshape:()=>H,reverse:()=>Ls,reverse1d:()=>WF,reverse2d:()=>UF,reverse3d:()=>HF,reverse4d:()=>qF,rfft:()=>$f,round:()=>E1,rsqrt:()=>R1,scalar:()=>Ce,scatterND:()=>iw,scatter_util:()=>J2,selu:()=>_1,separableConv2d:()=>Yv,sequential:()=>pV,serialization:()=>ce,setBackend:()=>uv,setPlatform:()=>L_,setThreadsCount:()=>M2e,setWasmPath:()=>O2e,setWasmPaths:()=>y8,setWebGLContext:()=>zm,setdiff1dAsync:()=>Jv,shared:()=>Dm,sigmoid:()=>os,sign:()=>Qv,signal:()=>kM,sin:()=>D1,sinh:()=>$1,slice:()=>Pe,slice1d:()=>_f,slice2d:()=>F1,slice3d:()=>dl,slice4d:()=>pl,slice_util:()=>Mt,softmax:()=>Xu,softplus:()=>Gu,spaceToBatchND:()=>Ef,sparse:()=>Xd,sparseToDense:()=>B1,spectral:()=>wM,split:()=>Yt,sqrt:()=>Dn,square:()=>xt,squaredDifference:()=>O1,squeeze:()=>rt,stack:()=>an,step:()=>qd,stridedSlice:()=>ew,string:()=>Lf,sub:()=>he,sum:()=>we,sumOutType:()=>Fd,tan:()=>tw,tanh:()=>Lu,tensor:()=>pt,tensor1d:()=>Ct,tensor2d:()=>mr,tensor3d:()=>U3,tensor4d:()=>xP,tensor5d:()=>bP,tensor6d:()=>vP,tensor_util:()=>pr,test_util:()=>rv,tidy:()=>K,tile:()=>Qs,time:()=>O_,topk:()=>nw,train:()=>hl,transpose:()=>tt,truncatedNormal:()=>Ff,unique:()=>M1,unregisterGradient:()=>$9,unregisterKernel:()=>D9,unsortedSegmentSum:()=>sw,unstack:()=>is,upcastType:()=>zn,util:()=>v,valueAndGrad:()=>T$,valueAndGrads:()=>N$,variable:()=>rw,variableGrads:()=>Wv,version:()=>p0,version_converter:()=>lH,version_core:()=>iv,version_cpu:()=>Xj,version_layers:()=>ky,version_wasm:()=>L2e,version_webgl:()=>yee,webgl:()=>Aee,webgl_util:()=>TI,webgpu:()=>p6,where:()=>Wn,whereAsync:()=>z1,zeros:()=>jt,zerosLike:()=>nt});var BE=Object.create,Sh=Object.defineProperty,WE=Object.getOwnPropertyDescriptor,VE=Object.getOwnPropertyNames,UE=Object.getPrototypeOf,GE=Object.prototype.hasOwnProperty,j5=e=>Sh(e,"__esModule",{value:!0}),nn=(e,t)=>function(){return t||(0,e[Object.keys(e)[0]])((t={exports:{}}).exports,t),t.exports},Me=(e,t)=>{j5(e);for(var n in t)Sh(e,n,{get:t[n],enumerable:!0})},HE=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of VE(t))!GE.call(e,s)&&s!=="default"&&Sh(e,s,{get:()=>t[s],enumerable:!(n=WE(t,s))||n.enumerable});return e},li=e=>HE(j5(Sh(e!=null?BE(UE(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),jE=nn({"src/node_modules/long/src/long.js"(e,t){t.exports=s;var n=null;try{n=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(_){}function s(_,T,O){this.low=_|0,this.high=T|0,this.unsigned=!!O}s.prototype.__isLong__,Object.defineProperty(s.prototype,"__isLong__",{value:!0});function r(_){return(_&&_.__isLong__)===!0}s.isLong=r;var a={},o={};function i(_,T){var O,W,X;return T?(_>>>=0,(X=0<=_&&_<256)&&(W=o[_],W)?W:(O=c(_,(_|0)<0?-1:0,!0),X&&(o[_]=O),O)):(_|=0,(X=-128<=_&&_<128)&&(W=a[_],W)?W:(O=c(_,_<0?-1:0,!1),X&&(a[_]=O),O))}s.fromInt=i;function l(_,T){if(isNaN(_))return T?b:A;if(T){if(_<0)return b;if(_>=g)return R}else{if(_<=-y)return P;if(_+1>=y)return E}return _<0?l(-_,T).neg():c(_%m|0,_/m|0,T)}s.fromNumber=l;function c(_,T,O){return new s(_,T,O)}s.fromBits=c;var u=Math.pow;function d(_,T,O){if(_.length===0)throw Error("empty string");if(_==="NaN"||_==="Infinity"||_==="+Infinity"||_==="-Infinity")return A;if(typeof T=="number"?(O=T,T=!1):T=!!T,O=O||10,O<2||360)throw Error("interior hyphen");if(W===0)return d(_.substring(1),T,O).neg();for(var X=l(u(O,8)),z=A,j=0;j<_.length;j+=8){var Z=Math.min(8,_.length-j),Q=parseInt(_.substring(j,j+Z),O);if(Z<8){var ne=l(u(O,Z));z=z.mul(ne).add(l(Q))}else z=z.mul(X),z=z.add(l(Q))}return z.unsigned=T,z}s.fromString=d;function p(_,T){return typeof _=="number"?l(_,T):typeof _=="string"?d(_,T):c(_.low,_.high,typeof T=="boolean"?T:_.unsigned)}s.fromValue=p;var h=1<<16,f=1<<24,m=h*h,g=m*m,y=g/2,x=i(f),A=i(0);s.ZERO=A;var b=i(0,!0);s.UZERO=b;var w=i(1);s.ONE=w;var k=i(1,!0);s.UONE=k;var I=i(-1);s.NEG_ONE=I;var E=c(4294967295|0,2147483647|0,!1);s.MAX_VALUE=E;var R=c(4294967295|0,4294967295|0,!0);s.MAX_UNSIGNED_VALUE=R;var P=c(0,2147483648|0,!1);s.MIN_VALUE=P;var D=s.prototype;D.toInt=function(){return this.unsigned?this.low>>>0:this.low},D.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},D.toString=function(T){if(T=T||10,T<2||36>>0,ae=ne.toString(T);if(j=Q,j.isZero())return ae+Z;for(;ae.length<6;)ae="0"+ae;Z=""+ae+Z}},D.getHighBits=function(){return this.high},D.getHighBitsUnsigned=function(){return this.high>>>0},D.getLowBits=function(){return this.low},D.getLowBitsUnsigned=function(){return this.low>>>0},D.getNumBitsAbs=function(){if(this.isNegative())return this.eq(P)?64:this.neg().getNumBitsAbs();for(var T=this.high!=0?this.high:this.low,O=31;O>0&&(T&1<=0},D.isOdd=function(){return(this.low&1)==1},D.isEven=function(){return(this.low&1)==0},D.equals=function(T){return r(T)||(T=p(T)),this.unsigned!==T.unsigned&&this.high>>>31==1&&T.high>>>31==1?!1:this.high===T.high&&this.low===T.low},D.eq=D.equals,D.notEquals=function(T){return!this.eq(T)},D.neq=D.notEquals,D.ne=D.notEquals,D.lessThan=function(T){return this.comp(T)<0},D.lt=D.lessThan,D.lessThanOrEqual=function(T){return this.comp(T)<=0},D.lte=D.lessThanOrEqual,D.le=D.lessThanOrEqual,D.greaterThan=function(T){return this.comp(T)>0},D.gt=D.greaterThan,D.greaterThanOrEqual=function(T){return this.comp(T)>=0},D.gte=D.greaterThanOrEqual,D.ge=D.greaterThanOrEqual,D.compare=function(T){if(r(T)||(T=p(T)),this.eq(T))return 0;var O=this.isNegative(),W=T.isNegative();return O&&!W?-1:!O&&W?1:this.unsigned?T.high>>>0>this.high>>>0||T.high===this.high&&T.low>>>0>this.low>>>0?-1:1:this.sub(T).isNegative()?-1:1},D.comp=D.compare,D.negate=function(){return!this.unsigned&&this.eq(P)?P:this.not().add(w)},D.neg=D.negate,D.add=function(T){r(T)||(T=p(T));var O=this.high>>>16,W=this.high&65535,X=this.low>>>16,z=this.low&65535,j=T.high>>>16,Z=T.high&65535,Q=T.low>>>16,ne=T.low&65535,ae=0,U=0,oe=0,re=0;return re+=z+ne,oe+=re>>>16,re&=65535,oe+=X+Q,U+=oe>>>16,oe&=65535,U+=W+Z,ae+=U>>>16,U&=65535,ae+=O+j,ae&=65535,c(oe<<16|re,ae<<16|U,this.unsigned)},D.subtract=function(T){return r(T)||(T=p(T)),this.add(T.neg())},D.sub=D.subtract,D.multiply=function(T){if(this.isZero())return A;if(r(T)||(T=p(T)),n){var O=n.mul(this.low,this.high,T.low,T.high);return c(O,n.get_high(),this.unsigned)}if(T.isZero())return A;if(this.eq(P))return T.isOdd()?P:A;if(T.eq(P))return this.isOdd()?P:A;if(this.isNegative())return T.isNegative()?this.neg().mul(T.neg()):this.neg().mul(T).neg();if(T.isNegative())return this.mul(T.neg()).neg();if(this.lt(x)&&T.lt(x))return l(this.toNumber()*T.toNumber(),this.unsigned);var W=this.high>>>16,X=this.high&65535,z=this.low>>>16,j=this.low&65535,Z=T.high>>>16,Q=T.high&65535,ne=T.low>>>16,ae=T.low&65535,U=0,oe=0,re=0,me=0;return me+=j*ae,re+=me>>>16,me&=65535,re+=z*ae,oe+=re>>>16,re&=65535,re+=j*ne,oe+=re>>>16,re&=65535,oe+=X*ae,U+=oe>>>16,oe&=65535,oe+=z*ne,U+=oe>>>16,oe&=65535,oe+=j*Q,U+=oe>>>16,oe&=65535,U+=W*ae+X*ne+z*Q+j*Z,U&=65535,c(re<<16|me,U<<16|oe,this.unsigned)},D.mul=D.multiply,D.divide=function(T){if(r(T)||(T=p(T)),T.isZero())throw Error("division by zero");if(n){if(!this.unsigned&&this.high===-2147483648&&T.low===-1&&T.high===-1)return this;var O=(this.unsigned?n.div_u:n.div_s)(this.low,this.high,T.low,T.high);return c(O,n.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:A;var W,X,z;if(this.unsigned){if(T.unsigned||(T=T.toUnsigned()),T.gt(this))return b;if(T.gt(this.shru(1)))return k;z=b}else{if(this.eq(P)){if(T.eq(w)||T.eq(I))return P;if(T.eq(P))return w;var j=this.shr(1);return W=j.div(T).shl(1),W.eq(A)?T.isNegative()?w:I:(X=this.sub(T.mul(W)),z=W.add(X.div(T)),z)}else if(T.eq(P))return this.unsigned?b:A;if(this.isNegative())return T.isNegative()?this.neg().div(T.neg()):this.neg().div(T).neg();if(T.isNegative())return this.div(T.neg()).neg();z=A}for(X=this;X.gte(T);){W=Math.max(1,Math.floor(X.toNumber()/T.toNumber()));for(var Z=Math.ceil(Math.log(W)/Math.LN2),Q=Z<=48?1:u(2,Z-48),ne=l(W),ae=ne.mul(T);ae.isNegative()||ae.gt(X);)W-=Q,ne=l(W,this.unsigned),ae=ne.mul(T);ne.isZero()&&(ne=w),z=z.add(ne),X=X.sub(ae)}return z},D.div=D.divide,D.modulo=function(T){if(r(T)||(T=p(T)),n){var O=(this.unsigned?n.rem_u:n.rem_s)(this.low,this.high,T.low,T.high);return c(O,n.get_high(),this.unsigned)}return this.sub(this.div(T).mul(T))},D.mod=D.modulo,D.rem=D.modulo,D.not=function(){return c(~this.low,~this.high,this.unsigned)},D.and=function(T){return r(T)||(T=p(T)),c(this.low&T.low,this.high&T.high,this.unsigned)},D.or=function(T){return r(T)||(T=p(T)),c(this.low|T.low,this.high|T.high,this.unsigned)},D.xor=function(T){return r(T)||(T=p(T)),c(this.low^T.low,this.high^T.high,this.unsigned)},D.shiftLeft=function(T){return r(T)&&(T=T.toInt()),(T&=63)==0?this:T<32?c(this.low<>>32-T,this.unsigned):c(0,this.low<>>T|this.high<<32-T,this.high>>T,this.unsigned):c(this.high>>T-32,this.high>=0?0:-1,this.unsigned)},D.shr=D.shiftRight,D.shiftRightUnsigned=function(T){if(r(T)&&(T=T.toInt()),T&=63,T===0)return this;var O=this.high;if(T<32){var W=this.low;return c(W>>>T|O<<32-T,O>>>T,this.unsigned)}else return T===32?c(O,0,this.unsigned):c(O>>>T-32,0,this.unsigned)},D.shru=D.shiftRightUnsigned,D.shr_u=D.shiftRightUnsigned,D.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},D.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},D.toBytes=function(T){return T?this.toBytesLE():this.toBytesBE()},D.toBytesLE=function(){var T=this.high,O=this.low;return[O&255,O>>>8&255,O>>>16&255,O>>>24,T&255,T>>>8&255,T>>>16&255,T>>>24]},D.toBytesBE=function(){var T=this.high,O=this.low;return[T>>>24,T>>>16&255,T>>>8&255,T&255,O>>>24,O>>>16&255,O>>>8&255,O&255]},s.fromBytes=function(T,O,W){return W?s.fromBytesLE(T,O):s.fromBytesBE(T,O)},s.fromBytesLE=function(T,O){return new s(T[0]|T[1]<<8|T[2]<<16|T[3]<<24,T[4]|T[5]<<8|T[6]<<16|T[7]<<24,O)},s.fromBytesBE=function(T,O){return new s(T[4]<<24|T[5]<<16|T[6]<<8|T[7],T[0]<<24|T[1]<<16|T[2]<<8|T[3],O)}}}),qE=nn({"(disabled):src/node_modules/node-fetch/browser.js"(){}}),XE=nn({"(disabled):util"(){}}),KE=nn({"src/node_modules/seedrandom/lib/alea.js"(e,t){(function(n,s,r){function a(c){var u=this,d=l();u.next=function(){var p=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=p-(u.c=p|0)},u.c=1,u.s0=d(" "),u.s1=d(" "),u.s2=d(" "),u.s0-=d(c),u.s0<0&&(u.s0+=1),u.s1-=d(c),u.s1<0&&(u.s1+=1),u.s2-=d(c),u.s2<0&&(u.s2+=1),d=null}function o(c,u){return u.c=c.c,u.s0=c.s0,u.s1=c.s1,u.s2=c.s2,u}function i(c,u){var d=new a(c),p=u&&u.state,h=d.next;return h.int32=function(){return d.next()*4294967296|0},h.double=function(){return h()+(h()*2097152|0)*11102230246251565e-32},h.quick=h,p&&(typeof p=="object"&&o(p,d),h.state=function(){return o(d,{})}),h}function l(){var c=4022871197,u=function(d){d=String(d);for(var p=0;p>>0,h-=c,h*=c,c=h>>>0,h-=c,c+=h*4294967296}return(c>>>0)*23283064365386963e-26};return u}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.alea=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),ZE=nn({"src/node_modules/seedrandom/lib/xor128.js"(e,t){(function(n,s,r){function a(l){var c=this,u="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var p=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^p^p>>>8},l===(l|0)?c.x=l:u+=l;for(var d=0;d>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(typeof d=="object"&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),YE=nn({"src/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(n,s,r){function a(l){var c=this,u="";c.next=function(){var p=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(p^p<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,l===(l|0)?c.x=l:u+=l;for(var d=0;d>>4),c.next()}function o(l,c){return c.x=l.x,c.y=l.y,c.z=l.z,c.w=l.w,c.v=l.v,c.d=l.d,c}function i(l,c){var u=new a(l),d=c&&c.state,p=function(){return(u.next()>>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(typeof d=="object"&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),JE=nn({"src/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(n,s,r){function a(l){var c=this;c.next=function(){var d=c.x,p=c.i,h,f,m;return h=d[p],h^=h>>>7,f=h^h<<24,h=d[p+1&7],f^=h^h>>>10,h=d[p+3&7],f^=h^h>>>3,h=d[p+4&7],f^=h^h<<7,h=d[p+7&7],h=h^h<<13,f^=h^h<<9,d[p]=f,c.i=p+1&7,f};function u(d,p){var h,f,m=[];if(p===(p|0))f=m[0]=p;else for(p=""+p,h=0;h0;--h)d.next()}u(c,l)}function o(l,c){return c.x=l.x.slice(),c.i=l.i,c}function i(l,c){l==null&&(l=+new Date);var u=new a(l),d=c&&c.state,p=function(){return(u.next()>>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(d.x&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),QE=nn({"src/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(n,s,r){function a(l){var c=this;c.next=function(){var d=c.w,p=c.X,h=c.i,f,m;return c.w=d=d+1640531527|0,m=p[h+34&127],f=p[h=h+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=p[h]=m^f,c.i=h,m+(d^d>>>16)|0};function u(d,p){var h,f,m,g,y,x=[],A=128;for(p===(p|0)?(f=p,p=null):(p=p+"\0",f=0,A=Math.max(A,p.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(y=y+1640531527|0,h=x[g&127]^=f+y,m=h==0?m+1:0);for(m>=128&&(x[(p&&p.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=x[m+34&127],h=x[m=m+1&127],f^=f<<13,h^=h<<17,f^=f>>>15,h^=h>>>12,x[m]=f^h;d.w=y,d.X=x,d.i=m}u(c,l)}function o(l,c){return c.i=l.i,c.w=l.w,c.X=l.X.slice(),c}function i(l,c){l==null&&(l=+new Date);var u=new a(l),d=c&&c.state,p=function(){return(u.next()>>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(d.X&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),e9=nn({"src/node_modules/seedrandom/lib/tychei.js"(e,t){(function(n,s,r){function a(l){var c=this,u="";c.next=function(){var p=c.b,h=c.c,f=c.d,m=c.a;return p=p<<25^p>>>7^h,h=h-f|0,f=f<<24^f>>>8^m,m=m-p|0,c.b=p=p<<20^p>>>12^h,c.c=h=h-f|0,c.d=f<<16^h>>>16^m,c.a=m-p|0},c.a=0,c.b=0,c.c=2654435769|0,c.d=1367130551,l===Math.floor(l)?(c.a=l/4294967296|0,c.b=l|0):u+=l;for(var d=0;d>>0)/4294967296};return p.double=function(){do var h=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},p.int32=u.next,p.quick=p,d&&(typeof d=="object"&&o(d,u),p.state=function(){return o(u,{})}),p}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),t9=nn({"(disabled):crypto"(){}}),n9=nn({"src/node_modules/seedrandom/seedrandom.js"(e,t){(function(n,s,r){var a=256,o=6,i=52,l="random",c=r.pow(a,o),u=r.pow(2,i),d=u*2,p=a-1,h;function f(w,k,I){var E=[];k=k==!0?{entropy:!0}:k||{};var R=x(y(k.entropy?[w,b(s)]:w==null?A():w,3),E),P=new m(E),D=function(){for(var _=P.g(o),T=c,O=0;_=d;)_/=2,T/=2,O>>>=1;return(_+O)/T};return D.int32=function(){return P.g(4)|0},D.quick=function(){return P.g(4)/4294967296},D.double=D,x(b(P.S),s),(k.pass||I||function(_,T,O,W){return W&&(W.S&&g(W,P),_.state=function(){return g(P,{})}),O?(r[l]=_,T):_})(D,R,"global"in k?k.global:this==r,k.state)}function m(w){var k,I=w.length,E=this,R=0,P=E.i=E.j=0,D=E.S=[];for(I||(w=[I++]);R1&&(y=process.argv[1].replace(/\\/g,"/")),g=process.argv.slice(2),process.on("uncaughtException",function(C){if(!(C instanceof Qc))throw C}),process.on("unhandledRejection",Gr),x=function(C){process.exit(C)},u.inspect=function(){return"[Emscripten Module object]"};var X;try{X=s9()}catch(C){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),C}global.Worker=X.Worker}else k?(typeof read!="undefined"&&(P=function($){return read($)}),_=function($){var B;return typeof readbuffer=="function"?new Uint8Array(readbuffer($)):(B=read($,"binary"),Ne(typeof B=="object"),B)},typeof scriptArgs!="undefined"?g=scriptArgs:typeof arguments!="undefined"&&(g=arguments),typeof quit=="function"&&(x=function(C){quit(C)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(A||b)&&(b?E=self.location.href:typeof document!="undefined"&&document.currentScript&&(E=document.currentScript.src),typeof s!="undefined"&&s&&(E=s),E.indexOf("blob:")!==0?E=E.substr(0,E.lastIndexOf("/")+1):E="",w?(P=function($,B){return O||(O=Ch()),W||(W=rd()),$=W.normalize($),O.readFileSync($,B?null:"utf8")},_=function($){var B=P($,!0);return B.buffer||(B=new Uint8Array(B)),Ne(B.buffer),B}):(P=function(C){var $=new XMLHttpRequest;return $.open("GET",C,!1),$.send(null),$.responseText},b&&(_=function(C){var $=new XMLHttpRequest;return $.open("GET",C,!1),$.responseType="arraybuffer",$.send(null),new Uint8Array($.response)}),D=function(C,$,B){var ee=new XMLHttpRequest;ee.open("GET",C,!0),ee.responseType="arraybuffer",ee.onload=function(){if(ee.status==200||ee.status==0&&ee.response){$(ee.response);return}B()},ee.onerror=B,ee.send(null)}),T=function(C){document.title=C});w&&typeof performance=="undefined"&&(global.performance=r9().performance);var z=u.print||console.log.bind(console),j=u.printErr||console.warn.bind(console);for(m in f)f.hasOwnProperty(m)&&(u[m]=f[m]);f=null,u.arguments&&(g=u.arguments),u.thisProgram&&(y=u.thisProgram),u.quit&&(x=u.quit);function Z(C){Z.shown||(Z.shown={}),Z.shown[C]||(Z.shown[C]=1,j(C))}var Q=Atomics.load,ne=Atomics.store,ae=Atomics.compareExchange,U;u.wasmBinary&&(U=u.wasmBinary);var oe=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");var re,me,Ae=!1,Te;function Ne(C,$){C||Gr("Assertion failed: "+$)}function Fe(C){var $=u["_"+C];return Ne($,"Cannot call unknown function "+C+", make sure it is exported"),$}function Ue(C,$,B,ee,be){var ye={string:function(Pn){var tu=0;if(Pn!=null&&Pn!==0){var G5=(Pn.length<<2)+1;tu=Jl(G5),it(Pn,tu,G5)}return tu},array:function(Pn){var tu=Jl(Pn.length);return _t(Pn,tu),tu}};function xe(Pn){return $==="string"?Ze(Pn):$==="boolean"?Boolean(Pn):Pn}var Ee=Fe(C),ht=[],mn=0;if(ee)for(var tn=0;tn=ee);){var ye=C[$++];if(!ye)return be;if(!(ye&128)){be+=String.fromCharCode(ye);continue}var xe=C[$++]&63;if((ye&224)==192){be+=String.fromCharCode((ye&31)<<6|xe);continue}var Ee=C[$++]&63;if((ye&240)==224?ye=(ye&15)<<12|xe<<6|Ee:ye=(ye&7)<<18|xe<<12|Ee<<6|C[$++]&63,ye<65536)be+=String.fromCharCode(ye);else{var ht=ye-65536;be+=String.fromCharCode(55296|ht>>10,56320|ht&1023)}}return be}function Ze(C,$){return C?Je(o(),C,$):""}function gt(C,$,B,ee){if(!(ee>0))return 0;for(var be=B,ye=B+ee-1,xe=0;xe=55296&&Ee<=57343){var ht=C.charCodeAt(++xe);Ee=65536+((Ee&1023)<<10)|ht&1023}if(Ee<=127){if(B>=ye)break;$[B++]=Ee}else if(Ee<=2047){if(B+1>=ye)break;$[B++]=192|Ee>>6,$[B++]=128|Ee&63}else if(Ee<=65535){if(B+2>=ye)break;$[B++]=224|Ee>>12,$[B++]=128|Ee>>6&63,$[B++]=128|Ee&63}else{if(B+3>=ye)break;$[B++]=240|Ee>>18,$[B++]=128|Ee>>12&63,$[B++]=128|Ee>>6&63,$[B++]=128|Ee&63}}return $[B]=0,B-be}function it(C,$,B){return gt(C,o(),$,B)}function yt(C){for(var $=0,B=0;B=55296&&ee<=57343&&(ee=65536+((ee&1023)<<10)|C.charCodeAt(++B)&1023),ee<=127?++$:ee<=2047?$+=2:ee<=65535?$+=3:$+=4}return $}function _t(C,$){a().set(C,$)}function Qn(C,$){return C%$>0&&(C+=$-C%$),C}var lt,ms,kn,qs,es,gs,Es,Xs,Rs;function ts(C){lt=C,u.HEAP8=ms=new Int8Array(C),u.HEAP16=qs=new Int16Array(C),u.HEAP32=gs=new Int32Array(C),u.HEAPU8=kn=new Uint8Array(C),u.HEAPU16=es=new Uint16Array(C),u.HEAPU32=Es=new Uint32Array(C),u.HEAPF32=Xs=new Float32Array(C),u.HEAPF64=Rs=new Float64Array(C)}var ya=u.INITIAL_MEMORY||16777216;if(I)re=u.wasmMemory,lt=u.buffer;else if(u.wasmMemory)re=u.wasmMemory;else if(re=new WebAssembly.Memory({initial:ya/65536,maximum:2147483648/65536,shared:!0}),!(re.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),w&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");re&&(lt=re.buffer),ya=lt.byteLength,ts(lt);var En,Aa=[],_s=[],Wc=[],Vc=[],Ur=[],Yp=!1,G0=!1;I||_s.push({func:function(){mh()}});function Jp(){if(!I){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)H0(u.preRun.shift());jl(Aa)}}function Qp(){Yp=!0,!I&&jl(_s)}function eh(){I||jl(Wc)}function ns(){I||(G0=!0)}function th(){if(!I){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)j0(u.postRun.shift());jl(Ur)}}function H0(C){Aa.unshift(C)}function j0(C){Ur.unshift(C)}var Ks=0,Uc=null,ri=null;function q0(C){Ne(!I,"addRunDependency cannot be used in a pthread worker"),Ks++,u.monitorRunDependencies&&u.monitorRunDependencies(Ks)}function X0(C){if(Ks--,u.monitorRunDependencies&&u.monitorRunDependencies(Ks),Ks==0&&(Uc!==null&&(clearInterval(Uc),Uc=null),ri)){var $=ri;ri=null,$()}}u.preloadedImages={},u.preloadedAudios={};function Gr(C){u.onAbort&&u.onAbort(C),I&&console.error("Pthread aborting at "+new Error().stack),C+="",j(C),Ae=!0,Te=1,C="abort("+C+"). Build with -s ASSERTIONS=1 for more info.";var $=new WebAssembly.RuntimeError(C);throw p($),$}function ai(C,$){return String.prototype.startsWith?C.startsWith($):C.indexOf($)===0}var K0="data:application/octet-stream;base64,";function nh(C){return ai(C,K0)}var Z0="file://";function sh(C){return ai(C,Z0)}var ss="tfjs-backend-wasm-threaded-simd.wasm";nh(ss)||(ss=R(ss));function Y0(C){try{if(C==ss&&U)return new Uint8Array(U);if(_)return _(C);throw"both async and sync fetching of the wasm failed"}catch($){Gr($)}}function rh(){if(!U&&(A||b)){if(typeof fetch=="function"&&!sh(ss))return fetch(ss,{credentials:"same-origin"}).then(function(C){if(!C.ok)throw"failed to load wasm binary file at '"+ss+"'";return C.arrayBuffer()}).catch(function(){return Y0(ss)});if(D)return new Promise(function(C,$){D(ss,function(B){C(new Uint8Array(B))},$)})}return Promise.resolve().then(function(){return Y0(ss)})}function J0(){var C={a:Gg};function $(xe,Ee){var ht=xe.exports;if(u.asm=ht,En=u.asm.nb,me=Ee,!I){var mn=_e.unusedWorkers.length;_e.unusedWorkers.forEach(function(tn){_e.loadWasmModuleToWorker(tn,function(){--mn||X0("wasm-instantiate")})})}}I||q0("wasm-instantiate");function B(xe){$(xe.instance,xe.module)}function ee(xe){return rh().then(function(Ee){return WebAssembly.instantiate(Ee,C)}).then(xe,function(Ee){j("failed to asynchronously prepare wasm: "+Ee),Gr(Ee)})}function be(){return!U&&typeof WebAssembly.instantiateStreaming=="function"&&!nh(ss)&&!sh(ss)&&typeof fetch=="function"?fetch(ss,{credentials:"same-origin"}).then(function(xe){var Ee=WebAssembly.instantiateStreaming(xe,C);return Ee.then(B,function(ht){return j("wasm streaming compile failed: "+ht),j("falling back to ArrayBuffer instantiation"),ee(B)})}):ee(B)}if(u.instantiateWasm)try{var ye=u.instantiateWasm(C,$);return ye}catch(xe){return j("Module.instantiateWasm callback failed with error: "+xe),!1}return be().catch(p),{}}var ah={10216:function(){throw"Canceled!"},10234:function(C,$){setTimeout(function(){z5(C,$)},0)}};function Q0(){_e.initRuntime()}function jl(C){for(;C.length>0;){var $=C.shift();if(typeof $=="function"){$(u);continue}var B=$.func;typeof B=="number"?$.arg===void 0?En.get(B)():En.get(B)($.arg):B($.arg===void 0?null:$.arg)}}var xa={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};function Gc(C,$){if(C<=0||C>a().length||C&!0||$<0)return-28;if($==0)return 0;$>=2147483647&&($=1/0);var B=Atomics.load(i(),Ql>>2),ee=0;if(B==C){var be=Atomics.compareExchange(i(),Ql>>2,B,0);if(be==B&&(--$,ee=1,$<=0))return 1}var ye=Atomics.notify(i(),C>>2,$);if(ye>=0)return ye+ee;throw"Atomics.notify returned an unexpected value "+ye}u._emscripten_futex_wake=Gc;function eg(C){if(I)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!C)throw"Internal Error! Null pthread_ptr in killThread!";i()[C+12>>2]=0;var $=_e.pthreads[C];$.worker.terminate(),_e.freeThreadData($),_e.runningWorkers.splice(_e.runningWorkers.indexOf($.worker),1),$.worker.pthread=void 0}function tg(C){if(I)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!C)throw"Internal Error! Null pthread_ptr in cancelThread!";var $=_e.pthreads[C];$.worker.postMessage({cmd:"cancel"})}function oh(C){if(I)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!C)throw"Internal Error! Null pthread_ptr in cleanupThread!";var $=_e.pthreads[C];if($){i()[C+12>>2]=0;var B=$.worker;_e.returnWorkerToPool(B)}}var _e={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var C=8,$=0;$>2]=C;var B=C+152;i()[B>>2]=B;for(var ee=ii(512),$=0;$<128;++$)l()[ee/4+$]=0;Atomics.store(l(),C+100>>2,ee),Atomics.store(l(),C+40>>2,C),f2(C,!b,1),O5(C)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;_e.threadExitHandlers.length>0;)_e.threadExitHandlers.pop()();I&&ka()&&P5()},runExitHandlersAndDeinitThread:function(C,$){Atomics.store(l(),C+56>>2,1),Atomics.store(l(),C+60>>2,0),_e.runExitHandlers(),Atomics.store(l(),C+4>>2,$),Atomics.store(l(),C+0>>2,1),Gc(C+0,2147483647),f2(0,0,0)},threadExit:function(C){var $=ka();$&&(_e.runExitHandlersAndDeinitThread($,C),I&&postMessage({cmd:"exit"}))},threadCancel:function(){_e.runExitHandlersAndDeinitThread(ka(),-1),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var C in _e.pthreads){var $=_e.pthreads[C];$&&$.worker&&_e.returnWorkerToPool($.worker)}_e.pthreads={};for(var B=0;B<_e.unusedWorkers.length;++B){var ee=_e.unusedWorkers[B];ee.terminate()}_e.unusedWorkers=[];for(var B=0;B<_e.runningWorkers.length;++B){var ee=_e.runningWorkers[B],$=ee.pthread;_e.freeThreadData($),ee.terminate()}_e.runningWorkers=[]},freeThreadData:function(C){if(!!C){if(C.threadInfoStruct){var $=i()[C.threadInfoStruct+100>>2];i()[C.threadInfoStruct+100>>2]=0,Yc($),Yc(C.threadInfoStruct)}C.threadInfoStruct=0,C.allocatedOwnStack&&C.stackBase&&Yc(C.stackBase),C.stackBase=0,C.worker&&(C.worker.pthread=null)}},returnWorkerToPool:function(C){_e.runWithoutMainThreadQueuedCalls(function(){delete _e.pthreads[C.pthread.threadInfoStruct],_e.unusedWorkers.push(C),_e.runningWorkers.splice(_e.runningWorkers.indexOf(C),1),_e.freeThreadData(C.pthread),C.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(C){i()[U5>>2]=0;try{C()}finally{i()[U5>>2]=1}},receiveObjectTransfer:function(C){},loadWasmModuleToWorker:function(C,$){C.onmessage=function(B){var ee=B.data,be=ee.cmd;if(C.pthread&&(_e.currentProxiedOperationCallerThread=C.pthread.threadInfoStruct),ee.targetThread&&ee.targetThread!=ka()){var ye=_e.pthreads[ee.targetThread];ye?ye.worker.postMessage(B.data,ee.transferList):console.error('Internal error! Worker sent a message "'+be+'" to target pthread '+ee.targetThread+", but that thread no longer exists!"),_e.currentProxiedOperationCallerThread=void 0;return}if(be==="processQueuedMainThreadWork")bh();else if(be==="spawnThread")hh(B.data);else if(be==="cleanupThread")oh(ee.thread);else if(be==="killThread")eg(ee.thread);else if(be==="cancelThread")tg(ee.thread);else if(be==="loaded")C.loaded=!0,$&&$(C),C.runPthread&&(C.runPthread(),delete C.runPthread);else if(be==="print")z("Thread "+ee.threadId+": "+ee.text);else if(be==="printErr")j("Thread "+ee.threadId+": "+ee.text);else if(be==="alert")alert("Thread "+ee.threadId+": "+ee.text);else if(be==="exit"){var xe=C.pthread&&Atomics.load(l(),C.pthread.threadInfoStruct+64>>2);xe&&_e.returnWorkerToPool(C)}else if(be==="exitProcess")try{OE(ee.returnCode)}catch(Ee){if(Ee instanceof Qc)return;throw Ee}else be==="cancelDone"?_e.returnWorkerToPool(C):be==="objectTransfer"?_e.receiveObjectTransfer(B.data):B.data.target==="setimmediate"?C.postMessage(B.data):j("worker sent an unknown command "+be);_e.currentProxiedOperationCallerThread=void 0},C.onerror=function(B){j("pthread sent an error! "+B.filename+":"+B.lineno+": "+B.message)},w&&(C.on("message",function(B){C.onmessage({data:B})}),C.on("error",function(B){C.onerror(B)}),C.on("exit",function(B){})),C.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||s,wasmMemory:re,wasmModule:me})},allocateUnusedWorker:function(){var C=R("tfjs-backend-wasm-threaded-simd.worker.js");_e.unusedWorkers.push(new Worker(C))},getNewWorker:function(){return _e.unusedWorkers.length==0&&(_e.allocateUnusedWorker(),_e.loadWasmModuleToWorker(_e.unusedWorkers[0])),_e.unusedWorkers.length>0?_e.unusedWorkers.pop():null},busySpinWait:function(C){for(var $=performance.now()+C;performance.now()<$;);}};function ng(C,$){W5(C,$),Yl(C)}u.establishStackSpace=ng;function sg(){return oe}u.getNoExitRuntime=sg;function rg(C,$){return En.get(C)($)}u.invokeEntryPoint=rg;function ag(C,$,B,ee){Gr("Assertion failed: "+Ze(C)+", at: "+[$?Ze($):"unknown filename",B,ee?Ze(ee):"unknown function"])}function og(C,$){var B=_main(C,$)}var oi;w?oi=function(){var C=process.hrtime();return C[0]*1e3+C[1]/1e6}:I?oi=function(){return performance.now()-u.__performance_now_clock_drift}:typeof dateNow!="undefined"?oi=dateNow:oi=function(){return performance.now()};function ig(C){return i()[$5()>>2]=C,C}function lg(C,$){if(I)return ba(1,1,C,$)}function ug(C,$){if(C==$)postMessage({cmd:"processQueuedMainThreadWork"});else if(I)postMessage({targetThread:C,cmd:"processThreadQueue"});else{var B=_e.pthreads[C],ee=B&&B.worker;if(!ee)return;ee.postMessage({cmd:"processThreadQueue"})}return 1}function cg(){Gr()}function dg(C,$,B){var ee=mg($,B);return ah[C].apply(null,ee)}function pg(C,$){}function ih(C,$,B){if(C<=0||C>a().length||C&!0)return-28;if(A){if(Atomics.load(i(),C>>2)!=$)return-6;for(var be=performance.now(),ye=be+B,xe=Atomics.exchange(i(),Ql>>2,C);;){if(be=performance.now(),be>ye)return xe=Atomics.exchange(i(),Ql>>2,0),-73;if(xe=Atomics.exchange(i(),Ql>>2,0),xe==0)break;if(bh(),Atomics.load(i(),C>>2)!=$)return-6;xe=Atomics.exchange(i(),Ql>>2,C)}return 0}else{var ee=Atomics.wait(i(),C>>2,$,B);if(ee==="timed-out")return-73;if(ee==="not-equal")return-6;if(ee==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ee}}function hg(C,$,B){o().copyWithin(C,$,$+B)}function fg(){return w?a9().cpus().length:navigator.hardwareConcurrency}function ba(C,$){for(var B=arguments.length-2,ee=Jc(),be=B,ye=Jl(be*8),xe=ye>>3,Ee=0;Ee>=2;B=o()[C++];){var ee=B<105;ee&&$&1&&$++,jc.push(ee?c()[$++>>1]:i()[$]),++$}return jc}function gg(C,$,B){Hc.length=$;for(var ee=B>>3,be=0;be<$;be++)Hc[be]=c()[ee+be];var ye=C<0,xe=ye?ah[-C-1]:Ug[C];return xe.apply(null,Hc)}function yg(){return o().length}function Ag(C){try{return re.grow(C-lt.byteLength+65535>>>16),ts(re.buffer),1}catch($){}}function xg(C){var $=yg();if(C<=$)return!1;var B=2147483648;if(C>B)return!1;for(var ee=1;ee<=4;ee*=2){var be=$*(1+.2/ee);be=Math.min(be,C+100663296);var ye=Math.min(B,Qn(Math.max(C,be),65536)),xe=Ag(ye);if(xe)return!0}return!1}var Ge={inEventHandler:0,removeAllEventListeners:function(){for(var C=Ge.eventHandlers.length-1;C>=0;--C)Ge._removeHandler(C);Ge.eventHandlers=[],Ge.deferredCalls=[]},registerRemoveEventListeners:function(){Ge.removeEventListenersRegistered||(Vc.push(Ge.removeAllEventListeners),Ge.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(C,$,B){function ee(xe,Ee){if(xe.length!=Ee.length)return!1;for(var ht in xe)if(xe[ht]!=Ee[ht])return!1;return!0}for(var be in Ge.deferredCalls){var ye=Ge.deferredCalls[be];if(ye.targetFunction==C&&ee(ye.argsList,B))return}Ge.deferredCalls.push({targetFunction:C,precedence:$,argsList:B}),Ge.deferredCalls.sort(function(xe,Ee){return xe.precedence>2]=B,i()[xe+4>>2]=ee,i()[xe+8>>2]=be,h2(0,C,637534208,$,ee,xe),Yl(ye)},getTargetThreadForEventCallback:function(C){switch(C){case 1:return 0;case 2:return _e.currentProxiedOperationCallerThread;default:return C}},getNodeNameForTarget:function(C){return C?C==window?"#window":C==screen?"#screen":C&&C.nodeName?C.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function bg(C){var $=yt(C)+1,B=ii($);return it(C,B,$),B}function vg(C,$,B,ee){var be=Jc(),ye=Jl(12),xe=0;$&&(xe=bg($)),i()[ye>>2]=xe,i()[ye+4>>2]=B,i()[ye+8>>2]=ee,h2(0,C,657457152,0,xe,ye),Yl(be)}function wg(C,$,B,ee){$=$?Ze($):"",vg(C,$,B,ee)}function kg(C){return C>2?Ze(C):C}var Sg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Ig(C){C=kg(C);var $=Sg[C]||(typeof document!="undefined"?document.querySelector(C):void 0);return $}function qc(C){return Ig(C)}function lh(C,$,B){var ee=qc(C);if(!ee)return-4;if(ee.canvasSharedPtr&&(i()[ee.canvasSharedPtr>>2]=$,i()[ee.canvasSharedPtr+4>>2]=B),ee.offscreenCanvas||!ee.controlTransferredOffscreen){ee.offscreenCanvas&&(ee=ee.offscreenCanvas);var be=!1;if(ee.GLctxObject&&ee.GLctxObject.GLctx){var ye=ee.GLctxObject.GLctx.getParameter(2978);be=ye[0]===0&&ye[1]===0&&ye[2]===ee.width&&ye[3]===ee.height}ee.width=$,ee.height=B,be&&ee.GLctxObject.GLctx.viewport(0,0,$,B)}else if(ee.canvasSharedPtr){var xe=i()[ee.canvasSharedPtr+8>>2];return wg(xe,C,$,B),1}else return-4;return 0}function uh(C,$,B){return I?ba(2,1,C,$,B):lh(C,$,B)}function Cg(C,$,B){var ee=qc(C);return ee?lh(C,$,B):uh(C,$,B)}function Tg(C){}function Ng(C,$){}function Eg(C){var $=C.getExtension("ANGLE_instanced_arrays");if($)return C.vertexAttribDivisor=function(B,ee){$.vertexAttribDivisorANGLE(B,ee)},C.drawArraysInstanced=function(B,ee,be,ye){$.drawArraysInstancedANGLE(B,ee,be,ye)},C.drawElementsInstanced=function(B,ee,be,ye,xe){$.drawElementsInstancedANGLE(B,ee,be,ye,xe)},1}function Rg(C){var $=C.getExtension("OES_vertex_array_object");if($)return C.createVertexArray=function(){return $.createVertexArrayOES()},C.deleteVertexArray=function(B){$.deleteVertexArrayOES(B)},C.bindVertexArray=function(B){$.bindVertexArrayOES(B)},C.isVertexArray=function(B){return $.isVertexArrayOES(B)},1}function _g(C){var $=C.getExtension("WEBGL_draw_buffers");if($)return C.drawBuffers=function(B,ee){$.drawBuffersWEBGL(B,ee)},1}function Dg(C){return!!(C.multiDrawWebgl=C.getExtension("WEBGL_multi_draw"))}var dt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function($){dt.lastError||(dt.lastError=$)},getNewId:function(C){for(var $=dt.counter++,B=C.length;B<$;B++)C[B]=null;return $},getSource:function(C,$,B,ee){for(var be="",ye=0;ye<$;++ye){var xe=ee?i()[ee+ye*4>>2]:-1;be+=Ze(i()[B+ye*4>>2],xe<0?void 0:xe)}return be},createContext:function(C,$){var B=C.getContext("webgl",$);if(!B)return 0;var ee=dt.registerContext(B,$);return ee},registerContext:function(C,$){var B=ii(8);i()[B+4>>2]=ka();var ee={handle:B,attributes:$,version:$.majorVersion,GLctx:C};return C.canvas&&(C.canvas.GLctxObject=ee),dt.contexts[B]=ee,(typeof $.enableExtensionsByDefault=="undefined"||$.enableExtensionsByDefault)&&dt.initExtensions(ee),B},makeContextCurrent:function(C){return dt.currentContext=dt.contexts[C],u.ctx=va=dt.currentContext&&dt.currentContext.GLctx,!(C&&!va)},getContext:function(C){return dt.contexts[C]},deleteContext:function(C){dt.currentContext===dt.contexts[C]&&(dt.currentContext=null),typeof Ge=="object"&&Ge.removeAllHandlersOnTarget(dt.contexts[C].GLctx.canvas),dt.contexts[C]&&dt.contexts[C].GLctx.canvas&&(dt.contexts[C].GLctx.canvas.GLctxObject=void 0),Yc(dt.contexts[C].handle),dt.contexts[C]=null},initExtensions:function(C){if(C||(C=dt.currentContext),!C.initExtensionsDone){C.initExtensionsDone=!0;var $=C.GLctx;Eg($),Rg($),_g($),$.disjointTimerQueryExt=$.getExtension("EXT_disjoint_timer_query"),Dg($);var B=$.getSupportedExtensions()||[];B.forEach(function(ee){ee.indexOf("lose_context")<0&&ee.indexOf("debug")<0&&$.getExtension(ee)})}},populateUniformTable:function(C){for(var $=dt.programs[C],B=dt.programInfos[C]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},ee=B.uniforms,be=va.getProgramParameter($,35718),ye=0;ye>2,ee=i()[B+(24>>2)],be={alpha:!!i()[B+(0>>2)],depth:!!i()[B+(4>>2)],stencil:!!i()[B+(8>>2)],antialias:!!i()[B+(12>>2)],premultipliedAlpha:!!i()[B+(16>>2)],preserveDrawingBuffer:!!i()[B+(20>>2)],powerPreference:$g[ee],failIfMajorPerformanceCaveat:!!i()[B+(28>>2)],majorVersion:i()[B+(32>>2)],minorVersion:i()[B+(36>>2)],enableExtensionsByDefault:i()[B+(40>>2)],explicitSwapControl:i()[B+(44>>2)],proxyContextToMainThread:i()[B+(48>>2)],renderViaOffscreenBackBuffer:i()[B+(52>>2)]},ye=qc(C);if(!ye||be.explicitSwapControl)return 0;var xe=dt.createContext(ye,be);return xe}function Pg(C,$){return Fg(C,$)}var ql={mappings:{},buffers:[null,[],[]],printChar:function(C,$){var B=ql.buffers[C];$===0||$===10?((C===1?z:j)(Je(B,0)),B.length=0):B.push($)},varargs:void 0,get:function(){ql.varargs+=4;var C=i()[ql.varargs-4>>2];return C},getStr:function(C){var $=Ze(C);return $},get64:function(C,$){return C}};function ch(C){return I?ba(3,1,C):0}function dh(C,$,B,ee,be){if(I)return ba(4,1,C,$,B,ee,be)}function ph(C,$,B,ee){if(I)return ba(5,1,C,$,B,ee);for(var be=0,ye=0;ye>2],Ee=i()[$+(ye*8+4)>>2],ht=0;ht>2]=be,0}function Og(C){var $=_e.threadExitHandlers.pop();C&&$()}function Mg(C,$){_e.threadExitHandlers.push(function(){En.get(C)($)})}function hh(C){if(I)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var $=_e.getNewWorker();if($.pthread!==void 0)throw"Internal error!";if(!C.pthread_ptr)throw"Internal error, no pthread ptr!";_e.runningWorkers.push($);for(var B=ii(128*4),ee=0;ee<128;++ee)i()[B+ee*4>>2]=0;var be=C.stackBase+C.stackSize,ye=_e.pthreads[C.pthread_ptr]={worker:$,stackBase:C.stackBase,stackSize:C.stackSize,allocatedOwnStack:C.allocatedOwnStack,threadInfoStruct:C.pthread_ptr},xe=ye.threadInfoStruct>>2;Atomics.store(l(),xe+(64>>2),C.detached),Atomics.store(l(),xe+(100>>2),B),Atomics.store(l(),xe+(40>>2),ye.threadInfoStruct),Atomics.store(l(),xe+(80>>2),C.stackSize),Atomics.store(l(),xe+(76>>2),be),Atomics.store(l(),xe+(104>>2),C.stackSize),Atomics.store(l(),xe+(104+8>>2),be),Atomics.store(l(),xe+(104+12>>2),C.detached);var Ee=F5(),ht=Ee+40;Atomics.store(l(),xe+(172>>2),ht),$.pthread=ye;var mn={cmd:"run",start_routine:C.startRoutine,arg:C.arg,threadInfoStruct:C.pthread_ptr,stackBase:C.stackBase,stackSize:C.stackSize};$.runPthread=function(){mn.time=performance.now(),$.postMessage(mn,C.transferList)},$.loaded&&($.runPthread(),delete $.runPthread)}function zg(C,$,B,ee){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!C)return j("pthread_create called with a null thread pointer!"),28;var be=[],ye=0;if(I&&(be.length===0||ye))return L5(687865856,C,$,B,ee);if(ye)return ye;var xe=0,Ee=0,ht=0;$&&$!=-1?(xe=i()[$>>2],xe+=81920,Ee=i()[$+8>>2],ht=i()[$+12>>2]!==0):xe=2097152;var mn=Ee==0;mn?Ee=V5(16,xe):(Ee-=xe,Ne(Ee>0));for(var tn=ii(228),Sa=0;Sa<228>>2;++Sa)l()[(tn>>2)+Sa]=0;i()[C>>2]=tn,i()[tn+12>>2]=tn;var eu=tn+152;i()[eu>>2]=eu;var Pn={stackBase:Ee,stackSize:xe,allocatedOwnStack:mn,detached:ht,startRoutine:B,pthread_ptr:tn,arg:ee,transferList:be};return I?(Pn.cmd="spawnThread",postMessage(Pn,be)):hh(Pn),0}function Lg(){if(!!I){var C=ka();if(!!C){var $=Atomics.load(l(),C+56>>2);if(!$){var B=Atomics.load(l(),C+0>>2);if(B==2)throw"Canceled!"}}}}function Bg(){w||b||Z("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function Wg(C,$,B){if(!C)return j("pthread_join attempted on a null thread pointer!"),xa.ESRCH;if(I&&ka()==C)return j("PThread "+C+" is attempting to join to itself!"),xa.EDEADLK;if(!I&&M5()==C)return j("Main thread "+C+" is attempting to join to itself!"),xa.EDEADLK;var ee=i()[C+12>>2];if(ee!==C)return j("pthread_join attempted on thread "+C+", which does not point to a valid thread, or does not exist anymore!"),xa.ESRCH;var be=Atomics.load(l(),C+64>>2);if(be)return j("Attempted to join thread "+C+", which was already detached!"),xa.EINVAL;for(B&&Bg();;){var ye=Atomics.load(l(),C+0>>2);if(ye==1){var xe=Atomics.load(l(),C+4>>2);return $&&(i()[$>>2]=xe),Atomics.store(l(),C+64>>2,1),I?postMessage({cmd:"cleanupThread",thread:C}):oh(C),0}if(!B)return xa.EBUSY;Lg(),I||bh(),ih(C+0,ye,I?100:1)}}function Vg(C,$){return Wg(C,$,!0)}function fh(C){if(I)return ba(6,1,C);switch(C){case 30:return 16384;case 85:var $=2147483648;return $/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return ig(28),-1}I||_e.initMainThreadBlock();var va,Ug=[null,lg,uh,ch,dh,ph,fh],Gg={e:ag,r:og,x:ug,b:cg,y:dg,j:pg,d:ih,c:Gc,f:oi,p:hg,A:fg,u:gg,q:xg,v:Cg,i:Tg,s:Ng,w:Pg,l:ch,n:dh,g:ph,o:Q0,a:re||u.wasmMemory,z:Og,k:Mg,h:zg,m:Vg,t:fh},D5=J0(),mh=u.___wasm_call_ctors=function(){return(mh=u.___wasm_call_ctors=u.asm.B).apply(null,arguments)},Hg=u._init=function(){return(Hg=u._init=u.asm.C).apply(null,arguments)},jg=u._init_with_threads_count=function(){return(jg=u._init_with_threads_count=u.asm.D).apply(null,arguments)},qg=u._get_threads_count=function(){return(qg=u._get_threads_count=u.asm.E).apply(null,arguments)},Xg=u._register_tensor=function(){return(Xg=u._register_tensor=u.asm.F).apply(null,arguments)},Kg=u._dispose_data=function(){return(Kg=u._dispose_data=u.asm.G).apply(null,arguments)},Zg=u._dispose=function(){return(Zg=u._dispose=u.asm.H).apply(null,arguments)},Yg=u._Abs=function(){return(Yg=u._Abs=u.asm.I).apply(null,arguments)},Jg=u._Add=function(){return(Jg=u._Add=u.asm.J).apply(null,arguments)},Qg=u._AddN=function(){return(Qg=u._AddN=u.asm.K).apply(null,arguments)},e2=u._All=function(){return(e2=u._All=u.asm.L).apply(null,arguments)},t2=u._Any=function(){return(t2=u._Any=u.asm.M).apply(null,arguments)},n2=u._ArgMax=function(){return(n2=u._ArgMax=u.asm.N).apply(null,arguments)},s2=u._AvgPool=function(){return(s2=u._AvgPool=u.asm.O).apply(null,arguments)},r2=u._BatchMatMul=function(){return(r2=u._BatchMatMul=u.asm.P).apply(null,arguments)},a2=u._Ceil=function(){return(a2=u._Ceil=u.asm.Q).apply(null,arguments)},o2=u._ClipByValue=function(){return(o2=u._ClipByValue=u.asm.R).apply(null,arguments)},i2=u._Conv2D=function(){return(i2=u._Conv2D=u.asm.S).apply(null,arguments)},l2=u._Conv2DBackpropInput=function(){return(l2=u._Conv2DBackpropInput=u.asm.T).apply(null,arguments)},u2=u._Cos=function(){return(u2=u._Cos=u.asm.U).apply(null,arguments)},c2=u._Cosh=function(){return(c2=u._Cosh=u.asm.V).apply(null,arguments)},gh=u._CropAndResize=function(){return(gh=u._CropAndResize=u.asm.W).apply(null,arguments)},yh=u._Cumsum=function(){return(yh=u._Cumsum=u.asm.X).apply(null,arguments)},Xc=u._DepthToSpace=function(){return(Xc=u._DepthToSpace=u.asm.Y).apply(null,arguments)},Xl=u._DepthwiseConv2dNative=function(){return(Xl=u._DepthwiseConv2dNative=u.asm.Z).apply(null,arguments)},d2=u._Elu=function(){return(d2=u._Elu=u.asm._).apply(null,arguments)},Kc=u._Equal=function(){return(Kc=u._Equal=u.asm.$).apply(null,arguments)},Kl=u._Exp=function(){return(Kl=u._Exp=u.asm.aa).apply(null,arguments)},Zl=u._FlipLeftRight=function(){return(Zl=u._FlipLeftRight=u.asm.ba).apply(null,arguments)},p2=u._Floor=function(){return(p2=u._Floor=u.asm.ca).apply(null,arguments)},se=u._FloorDiv=function(){return(se=u._FloorDiv=u.asm.da).apply(null,arguments)},le=u._FusedBatchNorm=function(){return(le=u._FusedBatchNorm=u.asm.ea).apply(null,arguments)},Ie=u._FusedConv2D=function(){return(Ie=u._FusedConv2D=u.asm.fa).apply(null,arguments)},ut=u._FusedDepthwiseConv2D=function(){return(ut=u._FusedDepthwiseConv2D=u.asm.ga).apply(null,arguments)},Wt=u._Gather=function(){return(Wt=u._Gather=u.asm.ha).apply(null,arguments)},Dt=u._GatherNd=function(){return(Dt=u._GatherNd=u.asm.ia).apply(null,arguments)},Ye=u._Greater=function(){return(Ye=u._Greater=u.asm.ja).apply(null,arguments)},Qe=u._GreaterEqual=function(){return(Qe=u._GreaterEqual=u.asm.ka).apply(null,arguments)},Sn=u._LeakyRelu=function(){return(Sn=u._LeakyRelu=u.asm.la).apply(null,arguments)},Hr=u._Less=function(){return(Hr=u._Less=u.asm.ma).apply(null,arguments)},jr=u._LessEqual=function(){return(jr=u._LessEqual=u.asm.na).apply(null,arguments)},Ah=u._Log=function(){return(Ah=u._Log=u.asm.oa).apply(null,arguments)},Zc=u._LogicalAnd=function(){return(Zc=u._LogicalAnd=u.asm.pa).apply(null,arguments)},ys=u._Max=function(){return(ys=u._Max=u.asm.qa).apply(null,arguments)},wa=u._MaxPool=function(){return(wa=u._MaxPool=u.asm.ra).apply(null,arguments)},xh=u._Maximum=function(){return(xh=u._Maximum=u.asm.sa).apply(null,arguments)},UN=u._Mean=function(){return(UN=u._Mean=u.asm.ta).apply(null,arguments)},GN=u._Min=function(){return(GN=u._Min=u.asm.ua).apply(null,arguments)},HN=u._Minimum=function(){return(HN=u._Minimum=u.asm.va).apply(null,arguments)},jN=u._MirrorPad=function(){return(jN=u._MirrorPad=u.asm.wa).apply(null,arguments)},qN=u._Multiply=function(){return(qN=u._Multiply=u.asm.xa).apply(null,arguments)},XN=u._Neg=function(){return(XN=u._Neg=u.asm.ya).apply(null,arguments)},KN=u._NonMaxSuppressionV3=function(){return(KN=u._NonMaxSuppressionV3=u.asm.za).apply(null,arguments)},ZN=u._NonMaxSuppressionV4=function(){return(ZN=u._NonMaxSuppressionV4=u.asm.Aa).apply(null,arguments)},YN=u._NonMaxSuppressionV5=function(){return(YN=u._NonMaxSuppressionV5=u.asm.Ba).apply(null,arguments)},JN=u._NotEqual=function(){return(JN=u._NotEqual=u.asm.Ca).apply(null,arguments)},QN=u._OneHot=function(){return(QN=u._OneHot=u.asm.Da).apply(null,arguments)},eE=u._PadV2=function(){return(eE=u._PadV2=u.asm.Ea).apply(null,arguments)},tE=u._Pow=function(){return(tE=u._Pow=u.asm.Fa).apply(null,arguments)},nE=u._Prelu=function(){return(nE=u._Prelu=u.asm.Ga).apply(null,arguments)},sE=u._Prod=function(){return(sE=u._Prod=u.asm.Ha).apply(null,arguments)},rE=u._RealDiv=function(){return(rE=u._RealDiv=u.asm.Ia).apply(null,arguments)},aE=u._Relu=function(){return(aE=u._Relu=u.asm.Ja).apply(null,arguments)},oE=u._Relu6=function(){return(oE=u._Relu6=u.asm.Ka).apply(null,arguments)},iE=u._ResizeBilinear=function(){return(iE=u._ResizeBilinear=u.asm.La).apply(null,arguments)},lE=u._Reverse=function(){return(lE=u._Reverse=u.asm.Ma).apply(null,arguments)},uE=u._RotateWithOffset=function(){return(uE=u._RotateWithOffset=u.asm.Na).apply(null,arguments)},cE=u._Round=function(){return(cE=u._Round=u.asm.Oa).apply(null,arguments)},dE=u._Rsqrt=function(){return(dE=u._Rsqrt=u.asm.Pa).apply(null,arguments)},pE=u._ScatterNd=function(){return(pE=u._ScatterNd=u.asm.Qa).apply(null,arguments)},hE=u._SelectV2=function(){return(hE=u._SelectV2=u.asm.Ra).apply(null,arguments)},fE=u._Sigmoid=function(){return(fE=u._Sigmoid=u.asm.Sa).apply(null,arguments)},mE=u._Sin=function(){return(mE=u._Sin=u.asm.Ta).apply(null,arguments)},gE=u._Softmax=function(){return(gE=u._Softmax=u.asm.Ua).apply(null,arguments)},yE=u._SparseFillEmptyRows=function(){return(yE=u._SparseFillEmptyRows=u.asm.Va).apply(null,arguments)},AE=u._SparseReshape=function(){return(AE=u._SparseReshape=u.asm.Wa).apply(null,arguments)},xE=u._SparseSegmentReduction=function(){return(xE=u._SparseSegmentReduction=u.asm.Xa).apply(null,arguments)},bE=u._Sqrt=function(){return(bE=u._Sqrt=u.asm.Ya).apply(null,arguments)},vE=u._Square=function(){return(vE=u._Square=u.asm.Za).apply(null,arguments)},wE=u._SquaredDifference=function(){return(wE=u._SquaredDifference=u.asm._a).apply(null,arguments)},kE=u._Step=function(){return(kE=u._Step=u.asm.$a).apply(null,arguments)},SE=u._StridedSlice=function(){return(SE=u._StridedSlice=u.asm.ab).apply(null,arguments)},IE=u._Sub=function(){return(IE=u._Sub=u.asm.bb).apply(null,arguments)},CE=u._Sum=function(){return(CE=u._Sum=u.asm.cb).apply(null,arguments)},TE=u._Tan=function(){return(TE=u._Tan=u.asm.db).apply(null,arguments)},NE=u._Tanh=function(){return(NE=u._Tanh=u.asm.eb).apply(null,arguments)},EE=u._Tile=function(){return(EE=u._Tile=u.asm.fb).apply(null,arguments)},RE=u._TopK=function(){return(RE=u._TopK=u.asm.gb).apply(null,arguments)},_E=u._Transform=function(){return(_E=u._Transform=u.asm.hb).apply(null,arguments)},DE=u._Transpose=function(){return(DE=u._Transpose=u.asm.ib).apply(null,arguments)},$E=u.__FusedMatMul=function(){return($E=u.__FusedMatMul=u.asm.jb).apply(null,arguments)},ii=u._malloc=function(){return(ii=u._malloc=u.asm.kb).apply(null,arguments)},Yc=u._free=function(){return(Yc=u._free=u.asm.lb).apply(null,arguments)},$5=u.___errno_location=function(){return($5=u.___errno_location=u.asm.mb).apply(null,arguments)},F5=u._emscripten_get_global_libc=function(){return(F5=u._emscripten_get_global_libc=u.asm.ob).apply(null,arguments)},ka=u._pthread_self=function(){return(ka=u._pthread_self=u.asm.pb).apply(null,arguments)},P5=u.___pthread_tsd_run_dtors=function(){return(P5=u.___pthread_tsd_run_dtors=u.asm.qb).apply(null,arguments)},bh=u._emscripten_main_thread_process_queued_calls=function(){return(bh=u._emscripten_main_thread_process_queued_calls=u.asm.rb).apply(null,arguments)},FE=u._emscripten_current_thread_process_queued_calls=function(){return(FE=u._emscripten_current_thread_process_queued_calls=u.asm.sb).apply(null,arguments)},O5=u._emscripten_register_main_browser_thread_id=function(){return(O5=u._emscripten_register_main_browser_thread_id=u.asm.tb).apply(null,arguments)},M5=u._emscripten_main_browser_thread_id=function(){return(M5=u._emscripten_main_browser_thread_id=u.asm.ub).apply(null,arguments)},z5=u.__emscripten_do_dispatch_to_thread=function(){return(z5=u.__emscripten_do_dispatch_to_thread=u.asm.vb).apply(null,arguments)},L5=u._emscripten_sync_run_in_main_thread_4=function(){return(L5=u._emscripten_sync_run_in_main_thread_4=u.asm.wb).apply(null,arguments)},B5=u._emscripten_run_in_main_runtime_thread_js=function(){return(B5=u._emscripten_run_in_main_runtime_thread_js=u.asm.xb).apply(null,arguments)},h2=u.__emscripten_call_on_thread=function(){return(h2=u.__emscripten_call_on_thread=u.asm.yb).apply(null,arguments)},PE=u._emscripten_tls_init=function(){return(PE=u._emscripten_tls_init=u.asm.zb).apply(null,arguments)},f2=u.__emscripten_thread_init=function(){return(f2=u.__emscripten_thread_init=u.asm.Ab).apply(null,arguments)},Jc=u.stackSave=function(){return(Jc=u.stackSave=u.asm.Bb).apply(null,arguments)},Yl=u.stackRestore=function(){return(Yl=u.stackRestore=u.asm.Cb).apply(null,arguments)},Jl=u.stackAlloc=function(){return(Jl=u.stackAlloc=u.asm.Db).apply(null,arguments)},W5=u._emscripten_stack_set_limits=function(){return(W5=u._emscripten_stack_set_limits=u.asm.Eb).apply(null,arguments)},V5=u._memalign=function(){return(V5=u._memalign=u.asm.Fb).apply(null,arguments)},U5=u.__emscripten_allow_main_runtime_queued_calls=10208,Ql=u.__emscripten_main_thread_futex=10412;u.cwrap=ot,u.PThread=_e,u.PThread=_e,u.wasmMemory=re,u.ExitStatus=Qc;var vh;function Qc(C){this.name="ExitStatus",this.message="Program terminated with exit("+C+")",this.status=C}ri=function C(){vh||m2(),vh||(ri=C)};function m2(C){if(C=C||g,Ks>0)return;if(I){d(u),Qp(),postMessage({cmd:"loaded"});return}if(Jp(),Ks>0)return;function $(){vh||(vh=!0,u.calledRun=!0,!Ae&&(Qp(),eh(),d(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),th()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),$()},1)):$()}u.run=m2;function OE(C,$){if(!($&&oe&&C===0)){if(!$&&I)throw postMessage({cmd:"exitProcess",returnCode:C}),new Qc(C);oe||(_e.terminateAllThreads(),Te=C,ns(),u.onExit&&u.onExit(C),Ae=!0),x(C,new Qc(C))}}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();I&&(oe=!1,_e.initWorker()),m2();var wh;h&&(wh={uncaughtException:process.listeners("uncaughtException").filter(function(C){return!h.uncaughtException.indexOf(C)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(C){return!h.unhandledRejection.indexOf(C)>-1})});var kh;if(typeof WasmBackendModule!="undefined")kh=WasmBackendModule;else if(typeof r!="undefined")kh=r;else throw new Error("Could not find wasm module in post.js");if(wh){var ME=kh._dispose;kh._dispose=function(){ME(),wh.uncaughtException.forEach(function(C){process.removeListener("uncaughtException",C)}),wh.unhandledRejection.forEach(function(C){process.removeListener("unhandledRejection",C)})}}return r.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}}),i9=nn({"src/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var n=function(){var s=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(s=s||__filename),function(r){r=r||{};var a=typeof r!="undefined"?r:{},o,i;a.ready=new Promise(function(se,le){o=se,i=le});var l;typeof process!="undefined"&&process.listeners&&(l={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var c={},u;for(u in a)a.hasOwnProperty(u)&&(c[u]=a[u]);var d=[],p="./this.program",h=function(se,le){throw le},f=!1,m=!1,g=!1,y=!1;f=typeof window=="object",m=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!f&&!g&&!m;var x="";function A(se){return a.locateFile?a.locateFile(se,x):x+se}var b,w,k,I,E,R;g?(m?x=rd().dirname(x)+"/":x=__dirname+"/",b=function(le,Ie){return E||(E=Ch()),R||(R=rd()),le=R.normalize(le),E.readFileSync(le,Ie?null:"utf8")},k=function(le){var Ie=b(le,!0);return Ie.buffer||(Ie=new Uint8Array(Ie)),z(Ie.buffer),Ie},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),d=process.argv.slice(2),process.on("uncaughtException",function(se){if(!(se instanceof d2))throw se}),process.on("unhandledRejection",Ur),h=function(se){process.exit(se)},a.inspect=function(){return"[Emscripten Module object]"}):y?(typeof read!="undefined"&&(b=function(le){return read(le)}),k=function(le){var Ie;return typeof readbuffer=="function"?new Uint8Array(readbuffer(le)):(Ie=read(le,"binary"),z(typeof Ie=="object"),Ie)},typeof scriptArgs!="undefined"?d=scriptArgs:typeof arguments!="undefined"&&(d=arguments),typeof quit=="function"&&(h=function(se){quit(se)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(f||m)&&(m?x=self.location.href:typeof document!="undefined"&&document.currentScript&&(x=document.currentScript.src),s&&(x=s),x.indexOf("blob:")!==0?x=x.substr(0,x.lastIndexOf("/")+1):x="",b=function(se){var le=new XMLHttpRequest;return le.open("GET",se,!1),le.send(null),le.responseText},m&&(k=function(se){var le=new XMLHttpRequest;return le.open("GET",se,!1),le.responseType="arraybuffer",le.send(null),new Uint8Array(le.response)}),w=function(se,le,Ie){var ut=new XMLHttpRequest;ut.open("GET",se,!0),ut.responseType="arraybuffer",ut.onload=function(){if(ut.status==200||ut.status==0&&ut.response){le(ut.response);return}Ie()},ut.onerror=Ie,ut.send(null)},I=function(se){document.title=se});var P=a.print||console.log.bind(console),D=a.printErr||console.warn.bind(console);for(u in c)c.hasOwnProperty(u)&&(a[u]=c[u]);c=null,a.arguments&&(d=a.arguments),a.thisProgram&&(p=a.thisProgram),a.quit&&(h=a.quit);var _;a.wasmBinary&&(_=a.wasmBinary);var T=a.noExitRuntime||!0;typeof WebAssembly!="object"&&Ur("no native wasm support detected");var O,W=!1,X;function z(se,le){se||Ur("Assertion failed: "+le)}function j(se){var le=a["_"+se];return z(le,"Cannot call unknown function "+se+", make sure it is exported"),le}function Z(se,le,Ie,ut,Wt){var Dt={string:function(ys){var wa=0;if(ys!=null&&ys!==0){var xh=(ys.length<<2)+1;wa=Xc(xh),re(ys,wa,xh)}return wa},array:function(ys){var wa=Xc(ys.length);return me(ys,wa),wa}};function Ye(ys){return le==="string"?U(ys):le==="boolean"?Boolean(ys):ys}var Qe=j(se),Sn=[],Hr=0;if(ut)for(var jr=0;jr=ut);)++Wt;if(Wt-le>16&&se.subarray&&ne)return ne.decode(se.subarray(le,Wt));for(var Dt="";le>10,56320|Hr&1023)}}return Dt}function U(se,le){return se?ae(Fe,se,le):""}function oe(se,le,Ie,ut){if(!(ut>0))return 0;for(var Wt=Ie,Dt=Ie+ut-1,Ye=0;Ye=55296&&Qe<=57343){var Sn=se.charCodeAt(++Ye);Qe=65536+((Qe&1023)<<10)|Sn&1023}if(Qe<=127){if(Ie>=Dt)break;le[Ie++]=Qe}else if(Qe<=2047){if(Ie+1>=Dt)break;le[Ie++]=192|Qe>>6,le[Ie++]=128|Qe&63}else if(Qe<=65535){if(Ie+2>=Dt)break;le[Ie++]=224|Qe>>12,le[Ie++]=128|Qe>>6&63,le[Ie++]=128|Qe&63}else{if(Ie+3>=Dt)break;le[Ie++]=240|Qe>>18,le[Ie++]=128|Qe>>12&63,le[Ie++]=128|Qe>>6&63,le[Ie++]=128|Qe&63}}return le[Ie]=0,Ie-Wt}function re(se,le,Ie){return oe(se,Fe,le,Ie)}function me(se,le){Ne.set(se,le)}function Ae(se,le){return se%le>0&&(se+=le-se%le),se}var Te,Ne,Fe,Ue,ot,Je,Ze,gt,it;function yt(se){Te=se,a.HEAP8=Ne=new Int8Array(se),a.HEAP16=Ue=new Int16Array(se),a.HEAP32=Je=new Int32Array(se),a.HEAPU8=Fe=new Uint8Array(se),a.HEAPU16=ot=new Uint16Array(se),a.HEAPU32=Ze=new Uint32Array(se),a.HEAPF32=gt=new Float32Array(se),a.HEAPF64=it=new Float64Array(se)}var _t=a.INITIAL_MEMORY||16777216,Qn,lt=[],ms=[],kn=[],qs=[],es=!1;ms.push({func:function(){rh()}});function gs(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)ts(a.preRun.shift());Ks(lt)}function Es(){es=!0,Ks(ms)}function Xs(){Ks(kn)}function Rs(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)ya(a.postRun.shift());Ks(qs)}function ts(se){lt.unshift(se)}function ya(se){qs.unshift(se)}var En=0,Aa=null,_s=null;function Wc(se){En++,a.monitorRunDependencies&&a.monitorRunDependencies(En)}function Vc(se){if(En--,a.monitorRunDependencies&&a.monitorRunDependencies(En),En==0&&(Aa!==null&&(clearInterval(Aa),Aa=null),_s)){var le=_s;_s=null,le()}}a.preloadedImages={},a.preloadedAudios={};function Ur(se){a.onAbort&&a.onAbort(se),se+="",D(se),W=!0,X=1,se="abort("+se+"). Build with -s ASSERTIONS=1 for more info.";var le=new WebAssembly.RuntimeError(se);throw i(le),le}function Yp(se,le){return String.prototype.startsWith?se.startsWith(le):se.indexOf(le)===0}var G0="data:application/octet-stream;base64,";function Jp(se){return Yp(se,G0)}var Qp="file://";function eh(se){return Yp(se,Qp)}var ns="tfjs-backend-wasm.wasm";Jp(ns)||(ns=A(ns));function th(se){try{if(se==ns&&_)return new Uint8Array(_);if(k)return k(se);throw"both async and sync fetching of the wasm failed"}catch(le){Ur(le)}}function H0(){if(!_&&(f||m)){if(typeof fetch=="function"&&!eh(ns))return fetch(ns,{credentials:"same-origin"}).then(function(se){if(!se.ok)throw"failed to load wasm binary file at '"+ns+"'";return se.arrayBuffer()}).catch(function(){return th(ns)});if(w)return new Promise(function(se,le){w(ns,function(Ie){se(new Uint8Array(Ie))},le)})}return Promise.resolve().then(function(){return th(ns)})}function j0(){var se={a:ss};function le(Ye,Qe){var Sn=Ye.exports;a.asm=Sn,O=a.asm.h,yt(O.buffer),Qn=a.asm.Va,Vc("wasm-instantiate")}Wc("wasm-instantiate");function Ie(Ye){le(Ye.instance)}function ut(Ye){return H0().then(function(Qe){return WebAssembly.instantiate(Qe,se)}).then(Ye,function(Qe){D("failed to asynchronously prepare wasm: "+Qe),Ur(Qe)})}function Wt(){return!_&&typeof WebAssembly.instantiateStreaming=="function"&&!Jp(ns)&&!eh(ns)&&typeof fetch=="function"?fetch(ns,{credentials:"same-origin"}).then(function(Ye){var Qe=WebAssembly.instantiateStreaming(Ye,se);return Qe.then(Ie,function(Sn){return D("wasm streaming compile failed: "+Sn),D("falling back to ArrayBuffer instantiation"),ut(Ie)})}):ut(Ie)}if(a.instantiateWasm)try{var Dt=a.instantiateWasm(se,le);return Dt}catch(Ye){return D("Module.instantiateWasm callback failed with error: "+Ye),!1}return Wt().catch(i),{}}function Ks(se){for(;se.length>0;){var le=se.shift();if(typeof le=="function"){le(a);continue}var Ie=le.func;typeof Ie=="number"?le.arg===void 0?Qn.get(Ie)():Qn.get(Ie)(le.arg):Ie(le.arg===void 0?null:le.arg)}}function Uc(){Ur()}function ri(se,le,Ie){Fe.copyWithin(se,le,le+Ie)}function q0(){return Fe.length}function X0(se){try{return O.grow(se-Te.byteLength+65535>>>16),yt(O.buffer),1}catch(le){}}function Gr(se){var le=q0(),Ie=2147483648;if(se>Ie)return!1;for(var ut=1;ut<=4;ut*=2){var Wt=le*(1+.2/ut);Wt=Math.min(Wt,se+100663296);var Dt=Math.min(Ie,Ae(Math.max(se,Wt),65536)),Ye=X0(Dt);if(Ye)return!0}return!1}var ai={mappings:{},buffers:[null,[],[]],printChar:function(se,le){var Ie=ai.buffers[se];le===0||le===10?((se===1?P:D)(ae(Ie,0)),Ie.length=0):Ie.push(le)},varargs:void 0,get:function(){ai.varargs+=4;var se=Je[ai.varargs-4>>2];return se},getStr:function(se){var le=U(se);return le},get64:function(se,le){return se}};function K0(se){return 0}function nh(se,le,Ie,ut,Wt){}function Z0(se,le,Ie,ut){for(var Wt=0,Dt=0;Dt>2],Qe=Je[le+(Dt*8+4)>>2],Sn=0;Sn>2]=Wt,0}function sh(){return 28}var ss={a:Uc,d:ri,e:Gr,f:K0,c:nh,b:Z0,g:sh},Y0=j0(),rh=a.___wasm_call_ctors=function(){return(rh=a.___wasm_call_ctors=a.asm.i).apply(null,arguments)},J0=a._init=function(){return(J0=a._init=a.asm.j).apply(null,arguments)},ah=a._init_with_threads_count=function(){return(ah=a._init_with_threads_count=a.asm.k).apply(null,arguments)},Q0=a._get_threads_count=function(){return(Q0=a._get_threads_count=a.asm.l).apply(null,arguments)},jl=a._register_tensor=function(){return(jl=a._register_tensor=a.asm.m).apply(null,arguments)},xa=a._dispose_data=function(){return(xa=a._dispose_data=a.asm.n).apply(null,arguments)},Gc=a._dispose=function(){return(Gc=a._dispose=a.asm.o).apply(null,arguments)},eg=a._Abs=function(){return(eg=a._Abs=a.asm.p).apply(null,arguments)},tg=a._Add=function(){return(tg=a._Add=a.asm.q).apply(null,arguments)},oh=a._AddN=function(){return(oh=a._AddN=a.asm.r).apply(null,arguments)},_e=a._All=function(){return(_e=a._All=a.asm.s).apply(null,arguments)},ng=a._Any=function(){return(ng=a._Any=a.asm.t).apply(null,arguments)},sg=a._ArgMax=function(){return(sg=a._ArgMax=a.asm.u).apply(null,arguments)},rg=a._AvgPool=function(){return(rg=a._AvgPool=a.asm.v).apply(null,arguments)},ag=a._BatchMatMul=function(){return(ag=a._BatchMatMul=a.asm.w).apply(null,arguments)},og=a._Ceil=function(){return(og=a._Ceil=a.asm.x).apply(null,arguments)},oi=a._ClipByValue=function(){return(oi=a._ClipByValue=a.asm.y).apply(null,arguments)},ig=a._Conv2D=function(){return(ig=a._Conv2D=a.asm.z).apply(null,arguments)},lg=a._Conv2DBackpropInput=function(){return(lg=a._Conv2DBackpropInput=a.asm.A).apply(null,arguments)},ug=a._Cos=function(){return(ug=a._Cos=a.asm.B).apply(null,arguments)},cg=a._Cosh=function(){return(cg=a._Cosh=a.asm.C).apply(null,arguments)},dg=a._CropAndResize=function(){return(dg=a._CropAndResize=a.asm.D).apply(null,arguments)},pg=a._Cumsum=function(){return(pg=a._Cumsum=a.asm.E).apply(null,arguments)},ih=a._DepthToSpace=function(){return(ih=a._DepthToSpace=a.asm.F).apply(null,arguments)},hg=a._DepthwiseConv2dNative=function(){return(hg=a._DepthwiseConv2dNative=a.asm.G).apply(null,arguments)},fg=a._Elu=function(){return(fg=a._Elu=a.asm.H).apply(null,arguments)},ba=a._Equal=function(){return(ba=a._Equal=a.asm.I).apply(null,arguments)},Hc=a._Exp=function(){return(Hc=a._Exp=a.asm.J).apply(null,arguments)},jc=a._FlipLeftRight=function(){return(jc=a._FlipLeftRight=a.asm.K).apply(null,arguments)},mg=a._Floor=function(){return(mg=a._Floor=a.asm.L).apply(null,arguments)},gg=a._FloorDiv=function(){return(gg=a._FloorDiv=a.asm.M).apply(null,arguments)},yg=a._FusedBatchNorm=function(){return(yg=a._FusedBatchNorm=a.asm.N).apply(null,arguments)},Ag=a._FusedConv2D=function(){return(Ag=a._FusedConv2D=a.asm.O).apply(null,arguments)},xg=a._FusedDepthwiseConv2D=function(){return(xg=a._FusedDepthwiseConv2D=a.asm.P).apply(null,arguments)},Ge=a._Gather=function(){return(Ge=a._Gather=a.asm.Q).apply(null,arguments)},bg=a._GatherNd=function(){return(bg=a._GatherNd=a.asm.R).apply(null,arguments)},vg=a._Greater=function(){return(vg=a._Greater=a.asm.S).apply(null,arguments)},wg=a._GreaterEqual=function(){return(wg=a._GreaterEqual=a.asm.T).apply(null,arguments)},kg=a._LeakyRelu=function(){return(kg=a._LeakyRelu=a.asm.U).apply(null,arguments)},Sg=a._Less=function(){return(Sg=a._Less=a.asm.V).apply(null,arguments)},Ig=a._LessEqual=function(){return(Ig=a._LessEqual=a.asm.W).apply(null,arguments)},qc=a._Log=function(){return(qc=a._Log=a.asm.X).apply(null,arguments)},lh=a._LogicalAnd=function(){return(lh=a._LogicalAnd=a.asm.Y).apply(null,arguments)},uh=a._Max=function(){return(uh=a._Max=a.asm.Z).apply(null,arguments)},Cg=a._MaxPool=function(){return(Cg=a._MaxPool=a.asm._).apply(null,arguments)},Tg=a._Maximum=function(){return(Tg=a._Maximum=a.asm.$).apply(null,arguments)},Ng=a._Mean=function(){return(Ng=a._Mean=a.asm.aa).apply(null,arguments)},Eg=a._Min=function(){return(Eg=a._Min=a.asm.ba).apply(null,arguments)},Rg=a._Minimum=function(){return(Rg=a._Minimum=a.asm.ca).apply(null,arguments)},_g=a._MirrorPad=function(){return(_g=a._MirrorPad=a.asm.da).apply(null,arguments)},Dg=a._Multiply=function(){return(Dg=a._Multiply=a.asm.ea).apply(null,arguments)},dt=a._Neg=function(){return(dt=a._Neg=a.asm.fa).apply(null,arguments)},$g=a._NonMaxSuppressionV3=function(){return($g=a._NonMaxSuppressionV3=a.asm.ga).apply(null,arguments)},Fg=a._NonMaxSuppressionV4=function(){return(Fg=a._NonMaxSuppressionV4=a.asm.ha).apply(null,arguments)},Pg=a._NonMaxSuppressionV5=function(){return(Pg=a._NonMaxSuppressionV5=a.asm.ia).apply(null,arguments)},ql=a._NotEqual=function(){return(ql=a._NotEqual=a.asm.ja).apply(null,arguments)},ch=a._OneHot=function(){return(ch=a._OneHot=a.asm.ka).apply(null,arguments)},dh=a._PadV2=function(){return(dh=a._PadV2=a.asm.la).apply(null,arguments)},ph=a._Pow=function(){return(ph=a._Pow=a.asm.ma).apply(null,arguments)},Og=a._Prelu=function(){return(Og=a._Prelu=a.asm.na).apply(null,arguments)},Mg=a._Prod=function(){return(Mg=a._Prod=a.asm.oa).apply(null,arguments)},hh=a._RealDiv=function(){return(hh=a._RealDiv=a.asm.pa).apply(null,arguments)},zg=a._Relu=function(){return(zg=a._Relu=a.asm.qa).apply(null,arguments)},Lg=a._Relu6=function(){return(Lg=a._Relu6=a.asm.ra).apply(null,arguments)},Bg=a._ResizeBilinear=function(){return(Bg=a._ResizeBilinear=a.asm.sa).apply(null,arguments)},Wg=a._Reverse=function(){return(Wg=a._Reverse=a.asm.ta).apply(null,arguments)},Vg=a._RotateWithOffset=function(){return(Vg=a._RotateWithOffset=a.asm.ua).apply(null,arguments)},fh=a._Round=function(){return(fh=a._Round=a.asm.va).apply(null,arguments)},va=a._Rsqrt=function(){return(va=a._Rsqrt=a.asm.wa).apply(null,arguments)},Ug=a._ScatterNd=function(){return(Ug=a._ScatterNd=a.asm.xa).apply(null,arguments)},Gg=a._SelectV2=function(){return(Gg=a._SelectV2=a.asm.ya).apply(null,arguments)},D5=a._Sigmoid=function(){return(D5=a._Sigmoid=a.asm.za).apply(null,arguments)},mh=a._Sin=function(){return(mh=a._Sin=a.asm.Aa).apply(null,arguments)},Hg=a._Softmax=function(){return(Hg=a._Softmax=a.asm.Ba).apply(null,arguments)},jg=a._SparseFillEmptyRows=function(){return(jg=a._SparseFillEmptyRows=a.asm.Ca).apply(null,arguments)},qg=a._SparseReshape=function(){return(qg=a._SparseReshape=a.asm.Da).apply(null,arguments)},Xg=a._SparseSegmentReduction=function(){return(Xg=a._SparseSegmentReduction=a.asm.Ea).apply(null,arguments)},Kg=a._Sqrt=function(){return(Kg=a._Sqrt=a.asm.Fa).apply(null,arguments)},Zg=a._Square=function(){return(Zg=a._Square=a.asm.Ga).apply(null,arguments)},Yg=a._SquaredDifference=function(){return(Yg=a._SquaredDifference=a.asm.Ha).apply(null,arguments)},Jg=a._Step=function(){return(Jg=a._Step=a.asm.Ia).apply(null,arguments)},Qg=a._StridedSlice=function(){return(Qg=a._StridedSlice=a.asm.Ja).apply(null,arguments)},e2=a._Sub=function(){return(e2=a._Sub=a.asm.Ka).apply(null,arguments)},t2=a._Sum=function(){return(t2=a._Sum=a.asm.La).apply(null,arguments)},n2=a._Tan=function(){return(n2=a._Tan=a.asm.Ma).apply(null,arguments)},s2=a._Tanh=function(){return(s2=a._Tanh=a.asm.Na).apply(null,arguments)},r2=a._Tile=function(){return(r2=a._Tile=a.asm.Oa).apply(null,arguments)},a2=a._TopK=function(){return(a2=a._TopK=a.asm.Pa).apply(null,arguments)},o2=a._Transform=function(){return(o2=a._Transform=a.asm.Qa).apply(null,arguments)},i2=a._Transpose=function(){return(i2=a._Transpose=a.asm.Ra).apply(null,arguments)},l2=a.__FusedMatMul=function(){return(l2=a.__FusedMatMul=a.asm.Sa).apply(null,arguments)},u2=a._malloc=function(){return(u2=a._malloc=a.asm.Ta).apply(null,arguments)},c2=a._free=function(){return(c2=a._free=a.asm.Ua).apply(null,arguments)},gh=a.stackSave=function(){return(gh=a.stackSave=a.asm.Wa).apply(null,arguments)},yh=a.stackRestore=function(){return(yh=a.stackRestore=a.asm.Xa).apply(null,arguments)},Xc=a.stackAlloc=function(){return(Xc=a.stackAlloc=a.asm.Ya).apply(null,arguments)};a.cwrap=Q;var Xl;function d2(se){this.name="ExitStatus",this.message="Program terminated with exit("+se+")",this.status=se}_s=function se(){Xl||Kc(),Xl||(_s=se)};function Kc(se){if(se=se||d,En>0||(gs(),En>0))return;function le(){Xl||(Xl=!0,a.calledRun=!0,!W&&(Es(),Xs(),o(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),Rs()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),le()},1)):le()}if(a.run=Kc,a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();Kc();var Kl;l&&(Kl={uncaughtException:process.listeners("uncaughtException").filter(function(se){return!l.uncaughtException.indexOf(se)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(se){return!l.unhandledRejection.indexOf(se)>-1})});var Zl;if(typeof r!="undefined")Zl=r;else if(typeof WasmBackendModuleThreadedSimd!="undefined")Zl=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(Kl){var p2=Zl._dispose;Zl._dispose=function(){p2(),Kl.uncaughtException.forEach(function(se){process.removeListener("uncaughtException",se)}),Kl.unhandledRejection.forEach(function(se){process.removeListener("unhandledRejection",se)})}}return r.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}}),l9=1e-7,u9=1e-4,ad=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},nu=class{refCount(e){return Zs("refCount")}incRef(e){return Zs("incRef")}timerAvailable(){return!0}time(e){return Zs("time")}read(e){return Zs("read")}readSync(e){return Zs("readSync")}numDataIds(){return Zs("numDataIds")}disposeData(e,t){return Zs("disposeData")}write(e,t,n){return Zs("write")}move(e,t,n,s,r){return Zs("move")}memory(){return Zs("memory")}floatPrecision(){return Zs("floatPrecision")}epsilon(){return this.floatPrecision()===32?l9:u9}dispose(){return Zs("dispose")}};function Zs(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function X5(e){let t=e.length,n=0;for(;t>0;)n=Math.random()*t|0,t--,Th(e,t,n)}function c9(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,s=0;for(;n>0;)s=Math.random()*n|0,n--,Th(e,n,s),Th(t,n,s)}function od(e,t,n){return Math.max(e,Math.min(t,n))}function d9(e){return e%2==0?e:e+1}function Th(e,t,n){let s=e[t];e[t]=e[n],e[n]=s}function p9(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ui(e){M(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function ci(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||_n(e)&&!n)for(let s=0;s0,n){return new Promise((s,r)=>{let a=0,o=()=>{if(e()){s();return}a++;let i=t(a);if(n!=null&&a>=n){r();return}setTimeout(o,i)};o()})}function b9(e,t){let n=1,s=-1;for(let a=0;a=0)n*=e[a];else if(e[a]===-1){if(s!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${s} and dim ${a}`);s=a}else if(e[a]<0)throw Error(`Shapes can not be < 0. Found ${e[a]} at dim ${a}`);if(s===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let r=e.slice();return r[s]=t/n,r}function Ys(e,t){let n=t.length;return e=e==null?t.map((s,r)=>r):[].concat(e),M(e.every(s=>s>=-n&&s`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),M(e.every(s=>su(s)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(s=>s<0?n+s:s)}function K5(e,t){let n=[],s=[],r=t!=null&&Array.isArray(t)&&t.length===0,a=t==null||r?null:Ys(t,e).sort(),o=0;for(let i=0;ii)&&e[i]===1&&(n.push(e[i]),s.push(i)),a[o]<=i&&o++}e[i]!==1&&(n.push(e[i]),s.push(i))}return{newShape:n,keptDims:s}}function Z5(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Y5(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function J5(e,t){for(let n=0;nt+=n.length),t}function Ta(e){return typeof e=="string"||e instanceof String}function t3(e){return typeof e=="boolean"}function n3(e){return typeof e=="number"}function Nh(e){return Array.isArray(e)?Nh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":n3(e)?"float32":Ta(e)?"string":t3(e)?"bool":"float32"}function Na(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Eh(e,t){for(let n=t;n=0;--s)n[s]=n[s+1]*e[s+1];return n}function s3(e,t,n,s=!1){let r=new Array;if(t.length===1){let a=t[0]*(s?2:1);for(let o=0;ol*c)*(s?2:1);for(let l=0;lr*a)*(n?2:1);if(s===0)return[];if(s!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${n?" for a complex tensor":""}.`);return s3(0,e,t,n)}function x2(e,t){let n=Rh(e,t);for(let s=0;ss*r,1);if(t==null||t==="float32")return au(e,new Float32Array(n));if(t==="int32")return au(e,new Int32Array(n));if(t==="bool")return au(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function b2(e){e.forEach(t=>{M(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function k9(e,t,n){if(t===0)return 0;if(t===1)return e[0];let s=e[e.length-1];for(let r=0;r{let[s,r]=n.split(":");this.urlFlags[s]=T9(s,r)})}};function I9(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...s)=>(C9(t,s[0],s[1]),s.join("="))),t}function C9(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function T9(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function Y(){return Tr}var Tr=null;function N9(e){Tr=e}var w2;function o3(){if(w2==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");w2=e}return w2}function E9(){let e=o3();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function k2(e,t){let n=E9();if(n.has(e))return n.get(e);{let s=t();return n.set(e,s),n.get(e)}}var di="Abs",ou="Acos",iu="Acosh",qr="Add",Ea="AddN",lu="All",uu="Any",Ra="ArgMax",cu="ArgMin",du="Asin",pu="Asinh",hu="Atan",fu="Atanh",mu="Atan2",_a="AvgPool",_h="AvgPoolGrad",ld="AvgPool3D",Dh="AvgPool3DGrad",Da="BatchMatMul",pi="BatchToSpaceND",$h="Bincount",i3="BroadcastTo",Fh="BroadcastArgs",$a="Cast",Fa="Ceil",Xr="ClipByValue",ud="Complex",cd="ComplexAbs",hi="Concat",Pa="Conv2D",Ph="Conv2DBackpropFilter",Oa="Conv2DBackpropInput",dd="Conv3D",Oh="Conv3DBackpropFilterV2",Mh="Conv3DBackpropInputV2",Ma="Cos",za="Cosh",fi="Cumsum",mi="CropAndResize",zh="DenseBincount",gi="DepthToSpace",La="DepthwiseConv2dNative",Lh="DepthwiseConv2dNativeBackpropFilter",Bh="DepthwiseConv2dNativeBackpropInput",Wh="Diag",pd="Dilation2D",Vh="Dilation2DBackpropInput",Uh="Dilation2DBackpropFilter",Ba="RealDiv",hd="Einsum",Wa="Elu",Gh="EluGrad",gu="Erf",yi="Equal",Va="Exp",Ai="ExpandDims",xi="Expm1",Hh="FFT",yu="Fill",bi="FlipLeftRight",Ua="Floor",Ga="FloorDiv",Ha="FusedBatchNorm",vi="GatherV2",wi="GatherNd",ki="Greater",ja="GreaterEqual",qa="Identity",jh="IFFT",fd="Imag",Au="IsFinite",xu="IsInf",bu="IsNan",Si="LeakyRelu",Ii="Less",Ci="LessEqual",qh="LinSpace",Xa="Log",vu="Log1p",Ti="LogicalAnd",wu="LogicalNot",md="LogicalOr",l3="LogSoftmax",gd="LRN",Xh="LRNGrad",Ka="Max",Za="Maximum",Ya="MaxPool",Kh="MaxPoolGrad",yd="MaxPool3D",Zh="MaxPool3DGrad",Yh="MaxPoolWithArgmax",Ja="Mean",Qa="Min",eo="Minimum",to="MirrorPad",ku="Mod",Jh="Multinomial",no="Multiply",Ni="Neg",Ei="NotEqual",Ri="NonMaxSuppressionV3",Su="NonMaxSuppressionV4",_i="NonMaxSuppressionV5",Di="OnesLike",$i="OneHot",Fi="Pack",so="PadV2",R9="Pool",ro="Pow",ao="Prelu",Pi="Prod",Iu="Range",Ad="Real",Cu="Reciprocal",oo="Relu",Oi="Reshape",Tu="ResizeNearestNeighbor",Qh="ResizeNearestNeighborGrad",io="ResizeBilinear",ef="ResizeBilinearGrad",lo="Relu6",Mi="Reverse",zi="Round",uo="Rsqrt",Li="ScatterNd",Bi="Select",Nu="Selu",Wi="Slice",co="Sin",Vi="Sinh",Eu="Sign",po="Sigmoid",Ru="Softplus",ho="Sqrt",fo="Sum",Ui="SpaceToBatchND",Gi="SplitV",mo="Softmax",xd="SparseFillEmptyRows",_u="SparseReshape",bd="SparseSegmentMean",vd="SparseSegmentSum",wd="SparseToDense",go="SquaredDifference",Du="Square",Hi="StridedSlice",kd="StringNGrams",tf="StringSplit",nf="StringToHashBucketFast",yo="Sub",ji="Tan",Ao="Tanh",Kr="Tile",qi="TopK",Xi="Transform",xo="Transpose",sf="Unique",Ki="Unpack",Sd="UnsortedSegmentSum",Zi="ZerosLike",bo="Step",Id="FromPixels",Yi="RotateWithOffset",vo="_FusedMatMul",wo="FusedConv2D",ko="FusedDepthwiseConv2D";function So(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.warn(...e)}function _9(...e){Y().getBool("IS_TEST")||Y().getBool("PROD")||console.log(...e)}var $u=k2("kernelRegistry",()=>new Map),Cd=k2("gradRegistry",()=>new Map);function rf(e,t){let n=I2(e,t);return $u.get(n)}function S2(e){return Cd.get(e)}function Zr(e){let t=$u.entries(),n=[];for(;;){let{done:s,value:r}=t.next();if(s)break;let[a,o]=r,[i]=a.split("_");i===e&&n.push(o)}return n}function dr(e){let{kernelName:t,backendName:n}=e,s=I2(t,n);$u.has(s)&&So(`The kernel '${t}' for backend '${n}' is already registered`),$u.set(s,e)}function u3(e){let{kernelName:t}=e;Cd.has(t)&&Y().getBool("DEBUG")&&So(`Overriding the gradient for '${t}'`),Cd.set(t,e)}function D9(e,t){let n=I2(e,t);if(!$u.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);$u.delete(n)}function $9(e){if(!Cd.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Cd.delete(e)}function F9(e,t){Zr(e).forEach(s=>{let r=Object.assign({},s,{backendName:t});dr(r)})}function I2(e,t){return`${t}_${e}`}var v={};Me(v,{arraysEqual:()=>Ca,assert:()=>M,assertNonNegativeIntegerDimensions:()=>b2,assertNonNull:()=>ui,assertShapesMatch:()=>On,bytesFromStringArray:()=>e3,bytesPerElement:()=>A2,checkConversionForErrors:()=>J5,clamp:()=>od,computeStrides:()=>ru,createScalarValue:()=>B9,createShuffledIndices:()=>A9,decodeString:()=>lf,distSquared:()=>f9,encodeString:()=>Ed,fetch:()=>V9,fingerPrint64:()=>L9,flatten:()=>ci,getArrayFromDType:()=>Y5,getTypedArrayFromDType:()=>Z5,hasEncodingLoss:()=>v9,hexToLong:()=>Td,indexToLoc:()=>S9,inferDtype:()=>Nh,inferFromImplicitShape:()=>b9,isBoolean:()=>t3,isFunction:()=>Na,isInt:()=>su,isNumber:()=>n3,isPromise:()=>v2,isScalarShape:()=>m9,isString:()=>Ta,isTypedArray:()=>_n,isValidDtype:()=>Q5,locToIndex:()=>k9,makeOnesTypedArray:()=>x2,makeZerosNestedTypedArray:()=>w9,makeZerosTypedArray:()=>Rh,nearestDivisor:()=>Eh,nearestLargerEven:()=>d9,now:()=>Nd,parseAxisParam:()=>Ys,randUniform:()=>h9,repeatedTry:()=>x9,rightPad:()=>id,shuffle:()=>X5,shuffleCombo:()=>c9,sizeFromShape:()=>It,sizeToSquarishShape:()=>y9,squeezeShape:()=>K5,sum:()=>p9,swap:()=>Th,tanh:()=>g9,toNestedArray:()=>au,toTypedArray:()=>of});var c3=li(jE()),Ji=c3.default||c3;function Td(e){return Ji.fromString(e,!0,16)}var d3=Td("c3a5c85c97cb3127"),Qi=Td("b492b66fbe98f273"),Mn=Td("9ae16a3b2f90404f");function C2(e){return e.xor(e.shru(47))}function p3(e,t,n){let s=e.slice(t,t+n);return Ji.fromBytes(Array.from(s),!0,!0)}function kt(e,t){return p3(e,t,8)}function h3(e,t){return p3(e,t,4)}function gn(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function Io(e,t,n=Td("9ddfea08eb382d69")){let s=e.xor(t).mul(n);s=s.xor(s.shru(47));let r=t.xor(s).mul(n);return r=r.xor(r.shru(47)),r=r.mul(n),r}function P9(e,t,n,s,r,a){r=r.add(e),a=gn(a.add(r).add(s),21);let o=r;return r=r.add(t),r=r.add(n),a=a.add(gn(r,44)),[r.add(s),a.add(o)]}function af(e,t,n,s){return P9(kt(e,t),kt(e,t+8),kt(e,t+16),kt(e,t+24),n,s)}function O9(e,t=e.length){if(t>=8){let n=Mn.add(t*2),s=kt(e,0).add(Mn),r=kt(e,t-8),a=gn(r,37).mul(n).add(s),o=gn(s,25).add(r).mul(n);return Io(a,o,n)}if(t>=4){let n=Mn.add(t*2),s=h3(e,0);return Io(s.shl(3).add(t),h3(e,t-4),n)}if(t>0){let n=e[0],s=e[t>>1],r=e[t-1],a=n+(s<<8),o=t+(r<<2);return C2(Mn.mul(a).xor(d3.mul(o))).mul(Mn)}return Mn}function M9(e,t=e.length){let n=Mn.add(t*2),s=kt(e,0).mul(Qi),r=kt(e,8),a=kt(e,t-8).mul(n),o=kt(e,t-16).mul(Mn);return Io(gn(s.add(r),43).add(gn(a,30)).add(o),s.add(gn(r.add(Mn),18)).add(a),n)}function z9(e,t=e.length){let n=Mn.add(t*2),s=kt(e,0).mul(Mn),r=kt(e,8),a=kt(e,t-8).mul(n),o=kt(e,t-16).mul(Mn),i=gn(s.add(r),43).add(gn(a,30)).add(o),l=Io(i,s.add(gn(r.add(Mn),18)).add(a),n),c=kt(e,16).mul(n),u=kt(e,24),d=i.add(kt(e,t-32)).mul(n),p=l.add(kt(e,t-24)).mul(n);return Io(gn(c.add(u),43).add(gn(d,30)).add(p),c.add(gn(u.add(s),18)).add(d),n)}function L9(e,t=e.length){let n=Ji.fromNumber(81,!0);if(t<=32)return t<=16?O9(e,t):M9(e,t);if(t<=64)return z9(e,t);let s=n,r=n.mul(Qi).add(113),a=C2(r.mul(Mn).add(113)).mul(Mn),o=[Ji.UZERO,Ji.UZERO],i=[Ji.UZERO,Ji.UZERO];s=s.mul(Mn).add(kt(e,0));let l=0,c=(t-1>>6)*64,u=c+(t-1&63)-63;do s=gn(s.add(r).add(o[0]).add(kt(e,l+8)),37).mul(Qi),r=gn(r.add(o[1]).add(kt(e,l+48)),42).mul(Qi),s=s.xor(i[1]),r=r.add(o[0]).add(kt(e,l+40)),a=gn(a.add(i[0]),33).mul(Qi),o=af(e,l,o[1].mul(Qi),s.add(i[0])),i=af(e,l+32,a.add(i[1]),r.add(kt(e,l+16))),[a,s]=[s,a],l+=64;while(l!==c);let d=Qi.add(a.and(255).shl(1));return l=u,i[0]=i[0].add(t-1&63),o[0]=o[0].add(i[0]),i[0]=i[0].add(o[0]),s=gn(s.add(r).add(o[0]).add(kt(e,l+8)),37).mul(d),r=gn(r.add(o[1]).add(kt(e,l+48)),42).mul(d),s=s.xor(i[1].mul(9)),r=r.add(o[0].mul(9).add(kt(e,l+40))),a=gn(a.add(i[0]),33).mul(d),o=af(e,l,o[1].mul(d),s.add(i[0])),i=af(e,l+32,a.add(i[1]),r.add(kt(e,l+16))),[a,s]=[s,a],Io(Io(o[0],i[0],d).add(C2(r).mul(d3)).add(a),Io(o[1],i[1],d).add(s),d)}function B9(e,t){return t==="string"?Ed(e):of([e],t)}function W9(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function of(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=ci(e)),Y().getBool("DEBUG")&&J5(e,t),W9(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let s=0;s{s=n()},a,o=Nd();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(r);else{r();for(let l of s)l.dataSync();a=Promise.resolve({kernelMs:Nd()-o})}if(Y().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let l=0;l{G9(u,c.dtype,e)})}return{kernelName:e,outputs:s,inputs:t,timeMs:a.then(l=>l.kernelMs),extraInfo:a.then(l=>l.getExtraProfileInfo!=null?l.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:s,inputs:r,extraInfo:a}=e;n.forEach(o=>{Promise.all([o.data(),s,a]).then(i=>{this.logger.logKernelProfile(t,o,i[0],i[1],r,i[2])})})}};function G9(e,t,n){if(t!=="float32")return!1;for(let s=0;s0?f:""} `}}console.log(`%c${i} %c${o} %c${l}D ${u} %c${c} %c${d} %c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function j9(e,t,n){let s={},r={};for(let l=0;ls[m.id]=!0),h=!0,r[c.id]=!0;break}if(h)break}}let a={};a[n.id]=!0;let o={};for(let l=e.length-1;l>=0;l--){let c=e[l],u=c.inputs;for(let d=0;d=0;r--){let a=t[r],o=[];if(a.outputs.forEach(l=>{let c=e[l.id];c!=null?o.push(c):o.push(null)}),a.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${a.kernelName}.`);let i=a.gradient(o);for(let l in a.inputs){if(!(l in i))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(i)}.`);let c=n(()=>i[l]());if(c.dtype!=="float32")throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${c.dtype}'`);let u=a.inputs[l];if(!Ca(c.shape,u.shape))throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input '${l}' has shape '${c.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=c;else{let d=e[u.id];e[u.id]=s(d,c),d.dispose()}}}}var f3=20,Rd=3,T2=7;function X9(e,t,n,s){let r=ru(t),a=K9(e,t,n,r),o=t.length,i=uf(e,t,n,r,a),l=["Tensor"];return s&&(l.push(` dtype: ${n}`),l.push(` rank: ${o}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(i.map(c=>" "+c).join(` `)),l.join(` `)}function K9(e,t,n,s){let r=It(t),a=s[s.length-1],o=new Array(a).fill(0),i=t.length,l=n==="complex64"?Dd(e):e;if(i>1)for(let c=0;cf3){let g=Rd*o,y=Array.from(e.slice(0,g)),x=Array.from(e.slice((i-Rd)*o,i*o));return n==="complex64"&&(y=Dd(y),x=Dd(x)),["["+y.map((A,b)=>_d(A,r[b],n)).join(", ")+", ..., "+x.map((A,b)=>_d(A,r[i-Rd+b],n)).join(", ")+"]"]}let m=n==="complex64"?Dd(e):Array.from(e);return["["+m.map((g,y)=>_d(g,r[y],n)).join(", ")+"]"]}let c=t.slice(1),u=s.slice(1),d=s[0]*o,p=[];if(i>f3){for(let m=0;mt.fail(),()=>t())}function N_(e tensor.shape[0], but sum of lengths is ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let r=n===0?0:t.size/n,a=[];K(()=>{t=H(t,[1,n,r]);for(let i=0;i{if(n!==r.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${r.dtype}`);ar(t,r.shape,"TensorList shape mismatch: "),yn(r)}),this.idTensor=Ce(0),this.maxNumElements=s,yn(this.idTensor)}get id(){return this.idTensor.id}copy(){return new hp([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);ar(e,this.elementShape,"TensorList shape mismatch: ");let s=pp(this.elementShape,this.tensors,e);return K(()=>{let r=this.tensors.map(a=>H(a,s));return an(r,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=pp(this.elementShape,this.tensors,e),s=this.tensors.pop();return ar(s.shape,e,"TensorList shape mismatch: "),H(s,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(ar(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");yn(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);ar(this.tensors[e].shape,t,"TensorList shape mismatch: ");let s=pp(this.elementShape,this.tensors,t);return H(this.tensors[e],s)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);ar(this.elementShape,t.shape,"TensorList shape mismatch: "),yn(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);ar(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let s=pp(this.elementShape,this.tensors,n);return e.length===0?pt([],[0].concat(s)):K(()=>{let r=e.map(a=>H(this.tensors[a],s));return an(r,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);ar(this.elementShape,t,"TensorList shape mismatch: ");let n=pp(this.elementShape,this.tensors,t);return this.size()===0?pt([],[0].concat(n)):K(()=>{let s=this.tensors.map(r=>H(r,n));return St(s,0)})}};function _G(e,t,n){let s=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let r=e.shape.slice(1);ar(r,t,"TensorList shape mismatch: ");let a=is(e);return new hp(a,t,s)}function DG(e,t,n){return new hp([],e,t,n)}function $G(e,t,n,s){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let r=Math.max(...t);if(s!=null&&s!==-1&&r>=s)throw new Error(`Max index must be < array size (${r} vs. ${s})`);let a=new hp([],n,e.dtype,s),o=is(e,0);return t.forEach((i,l)=>{a.setItem(i,o[l])}),a}function FG(e,t,n){let s=0,r=t.map(u=>(s+=u,s));if(s!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${s}, and tensor's shape is: ${e.shape}`);let a=e.shape.slice(1),o=qA(a,n),i=s===0?0:e.size/s,l=K(()=>{let u=[];e=H(e,[1,s,i]);for(let d=0;d{switch(e.op){case"If":case"StatelessIf":{let s=S("thenBranch",e,t,n),r=S("elseBranch",e,t,n),a=S("cond",e,t,n),o=S("args",e,t,n);return(await a.data())[0]?n.functionMap[s].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap):n.functionMap[r].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let s=S("body",e,t,n),r=S("cond",e,t,n),a=S("args",e,t,n),o=await n.functionMap[r].executeFunctionAsync(a,n.tensorArrayMap,n.tensorListMap),i=a.map(u=>u.id),l=await o[0].data();o.forEach(u=>{!u.kept&&i.indexOf(u.id)===-1&&u.dispose()});let c=a;for(;l[0];){let u=c;c=await n.functionMap[s].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);let d=c.map(h=>h.id);u.forEach(h=>{!h.kept&&i.indexOf(h.id)===-1&&d.indexOf(h.id)===-1&&h.dispose()});let p=await n.functionMap[r].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);l=await p[0].data(),p.forEach(h=>{!h.kept&&i.indexOf(h.id)===-1&&d.indexOf(h.id)===-1&&h.dispose()})}return c}case"LoopCond":{let s=S("pred",e,t,n);return[aa(s)]}case"Switch":{let s=S("pred",e,t,n),r=S("data",e,t,n);return r.kept||(r=aa(r)),(await s.data())[0]?[void 0,r]:[r,void 0]}case"Merge":{let s=e.inputNames.find(r=>Un(r,t,n)!==void 0);if(s){let r=Un(s,t,n);return[aa(r)]}return}case"Enter":{let s=S("frameName",e,t,n),r=S("tensor",e,t,n);return n.enterFrame(s),[aa(r)]}case"Exit":{let s=S("tensor",e,t,n);return n.exitFrame(),[aa(s)]}case"NextIteration":{let s=S("tensor",e,t,n);return n.nextIteration(),[aa(s)]}case"TensorArrayV3":{let s=S("size",e,t,n),r=S("dtype",e,t,n),a=S("elementShape",e,t,n),o=S("dynamicSize",e,t,n),i=S("clearAfterRead",e,t,n),l=S("identicalElementShapes",e,t,n),c=S("name",e,t,n),u=new RG(c,r,s,a,l,o,i);return n.addTensorArray(u),[u.idTensor,Ce(1)]}case"TensorArrayWriteV3":{let s=S("tensorArrayId",e,t,n),r=S("index",e,t,n),a=S("tensor",e,t,n),o=n.getTensorArray(s.id);return o.write(r,a),[o.idTensor]}case"TensorArrayReadV3":{let s=S("tensorArrayId",e,t,n),r=S("index",e,t,n);return[n.getTensorArray(s.id).read(r)]}case"TensorArrayGatherV3":{let s=S("tensorArrayId",e,t,n),r=S("indices",e,t,n),a=S("dtype",e,t,n);return[n.getTensorArray(s.id).gather(r,a)]}case"TensorArrayScatterV3":{let s=S("tensorArrayId",e,t,n),r=S("indices",e,t,n),a=S("tensor",e,t,n),o=n.getTensorArray(s.id);return o.scatter(r,a),[o.idTensor]}case"TensorArrayConcatV3":{let s=S("tensorArrayId",e,t,n),r=n.getTensorArray(s.id),a=S("dtype",e,t,n);return[r.concat(a)]}case"TensorArraySplitV3":{let s=S("tensorArrayId",e,t,n),r=S("tensor",e,t,n),a=S("lengths",e,t,n),o=n.getTensorArray(s.id);return o.split(a,r),[o.idTensor]}case"TensorArraySizeV3":{let s=S("tensorArrayId",e,t,n),r=n.getTensorArray(s.id);return[Ce(r.size(),"int32")]}case"TensorArrayCloseV3":{let s=S("tensorArrayId",e,t,n),r=n.getTensorArray(s.id);return r.clearAndClose(),[r.idTensor]}case"TensorListSetItem":{let s=S("tensorListId",e,t,n),r=S("index",e,t,n),a=S("tensor",e,t,n),o=n.getTensorList(s.id);return o.setItem(r,a),[o.idTensor]}case"TensorListGetItem":{let s=S("tensorListId",e,t,n),r=S("index",e,t,n),a=S("elementShape",e,t,n),o=S("elementDType",e,t,n);return[n.getTensorList(s.id).getItem(r,a,o)]}case"TensorListScatterV2":case"TensorListScatter":{let s=S("indices",e,t,n),r=S("tensor",e,t,n),a=S("elementShape",e,t,n),o=S("numElements",e,t,n),i=$G(r,s,a,o);return n.addTensorList(i),[i.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let s=S("elementShape",e,t,n),r=S("elementDType",e,t,n),a;e.op==="TensorListReserve"?a="numElements":a="maxNumElements";let o=S(a,e,t,n),i=DG(s,r,o);return n.addTensorList(i),[i.idTensor]}case"TensorListGather":{let s=S("tensorListId",e,t,n),r=S("indices",e,t,n),a=S("elementShape",e,t,n),o=S("elementDType",e,t,n);return[n.getTensorList(s.id).gather(r,o,a)]}case"TensorListStack":{let s=S("tensorListId",e,t,n),r=S("elementShape",e,t,n),a=S("elementDType",e,t,n),o=S("numElements",e,t,n);return[n.getTensorList(s.id).stack(r,a,o)]}case"TensorListFromTensor":{let s=S("tensor",e,t,n),r=S("elementShape",e,t,n),a=S("elementDType",e,t,n),o=_G(s,r,a);return n.addTensorList(o),[o.idTensor]}case"TensorListConcat":{let s=S("tensorListId",e,t,n),r=n.getTensorList(s.id),a=S("dtype",e,t,n),o=S("elementShape",e,t,n);return[r.concat(a,o)]}case"TensorListPushBack":{let s=S("tensorListId",e,t,n),r=S("tensor",e,t,n),a=n.getTensorList(s.id);return a.pushBack(r),[a.idTensor]}case"TensorListPopBack":{let s=S("tensorListId",e,t,n),r=S("elementShape",e,t,n),a=S("elementDType",e,t,n);return[n.getTensorList(s.id).popBack(r,a)]}case"TensorListSplit":{let s=S("tensor",e,t,n),r=S("elementShape",e,t,n),a=S("lengths",e,t,n),o=FG(s,a,r);return n.addTensorList(o),[o.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function XS(e,t,n){let[s,r]=S("fusedOps",e,t,n),a=s==="biasadd",o=!a,i=r==="prelu",l=s==="fusedbatchnorm",c=S("numArgs",e,t,n);if(a){if(i&&c!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&a&&c!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(l)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported");let u=S("strides",e,t,n),d=Tm(e,t,n),p=S("dataFormat",e,t,n).toUpperCase(),h=S("dilations",e,t,n),[f,m]=S("args",e,t,n);o&&(m=f,f=void 0);let g=S("leakyreluAlpha",e,t,n);return{stride:u,pad:d,dataFormat:p,dilations:h,biasArg:f,preluArg:m,activationFunc:r,leakyreluAlpha:g}}var OG=(e,t,n)=>{switch(e.op){case"Conv1D":{let s=S("stride",e,t,n),r=S("pad",e,t,n),a=S("dataFormat",e,t,n).toUpperCase(),o=S("dilation",e,t,n);return[p1(S("x",e,t,n),S("filter",e,t,n),s,r,a,o)]}case"Conv2D":{let s=S("strides",e,t,n),r=Tm(e,t,n),a=S("dataFormat",e,t,n).toUpperCase(),o=S("dilations",e,t,n);return[_o(S("x",e,t,n),S("filter",e,t,n),[s[1],s[2]],r,a,[o[1],o[2]])]}case"_FusedConv2D":{let{stride:s,pad:r,dataFormat:a,dilations:o,biasArg:i,preluArg:l,activationFunc:c,leakyreluAlpha:u}=XS(e,t,n);return[Fo.conv2d({x:S("x",e,t,n),filter:S("filter",e,t,n),strides:[s[1],s[2]],pad:r,dataFormat:a,dilations:[o[1],o[2]],bias:i,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"FusedDepthwiseConv2dNative":{let{stride:s,pad:r,dataFormat:a,dilations:o,biasArg:i,preluArg:l,activationFunc:c,leakyreluAlpha:u}=XS(e,t,n);return[Fo.depthwiseConv2d({x:S("x",e,t,n),filter:S("filter",e,t,n),strides:[s[1],s[2]],pad:r,dataFormat:a,dilations:[o[1],o[2]],bias:i,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let s=S("outputShape",e,t,n),r=S("strides",e,t,n),a=Tm(e,t,n);return[f1(S("x",e,t,n),S("filter",e,t,n),s,[r[1],r[2]],a)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let s=S("strides",e,t,n),r=Tm(e,t,n),a=S("dilations",e,t,n),o=S("dataFormat",e,t,n).toUpperCase();return[Bd(S("input",e,t,n),S("filter",e,t,n),[s[1],s[2]],r,o,[a[1],a[2]])]}case"Conv3D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("dataFormat",e,t,n).toUpperCase(),o=S("dilations",e,t,n);return[m1(S("x",e,t,n),S("filter",e,t,n),[s[1],s[2],s[3]],r,a,[o[1],o[2],o[3]])]}case"AvgPool":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[xf(S("x",e,t,n),[a[1],a[2]],[s[1],s[2]],r)]}case"MaxPool":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[Tf(S("x",e,t,n),[a[1],a[2]],[s[1],s[2]],r)]}case"MaxPoolWithArgmax":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n),o=S("includeBatchInIndex",e,t,n),{result:i,indexes:l}=jv(S("x",e,t,n),[a[1],a[2]],[s[1],s[2]],r,o);return[i,l]}case"AvgPool3D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[c1(S("x",e,t,n),[a[1],a[2],a[3]],[s[1],s[2],s[3]],r)]}case"MaxPool3D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[S1(S("x",e,t,n),[a[1],a[2],a[3]],[s[1],s[2],s[3]],r)]}case"Dilation2D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("dilations",e,t,n),o=s[1],i=s[2],l=a[1],c=a[2];return[$v(S("x",e,t,n),S("filter",e,t,n),[o,i],r,[l,c],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},MG=(e,t,n)=>{switch(e.op){case"Fill":{let s=S("shape",e,t,n),r=S("dtype",e,t,n),a=S("value",e,t,n);return[Vu(s,a,r)]}case"LinSpace":{let s=S("start",e,t,n),r=S("stop",e,t,n),a=S("num",e,t,n);return[Lv(s,r,a)]}case"Multinomial":{let s=S("logits",e,t,n),r=S("numSamples",e,t,n),a=S("seed",e,t,n);return[Xv(s,r,a)]}case"OneHot":{let s=S("indices",e,t,n),r=S("depth",e,t,n),a=S("onValue",e,t,n),o=S("offValue",e,t,n);return[Md(s,r,a,o)]}case"Ones":return[bs(S("shape",e,t,n),S("dtype",e,t,n))];case"OnesLike":return[zs(S("x",e,t,n))];case"RandomUniform":return[ju(S("shape",e,t,n),S("minval",e,t,n),S("maxval",e,t,n),S("dtype",e,t,n))];case"Range":{let s=S("start",e,t,n),r=S("stop",e,t,n),a=S("step",e,t,n);return[qu(s,r,a,S("dtype",e,t,n))]}case"TruncatedNormal":{let s=S("shape",e,t,n),r=S("mean",e,t,n),a=S("stdDev",e,t,n),o=S("seed",e,t,n);return[Ff(s,r,a,S("dtype",e,t,n),o)]}case"Zeros":return[jt(S("shape",e,t,n),S("dtype",e,t,n))];case"ZerosLike":return[nt(S("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function XA(e,t,n){let s=S("boxes",e,t,n),r=S("scores",e,t,n),a=S("maxOutputSize",e,t,n),o=S("iouThreshold",e,t,n),i=S("scoreThreshold",e,t,n),l=S("softNmsSigma",e,t,n);return{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i,softNmsSigma:l}}var zG=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i,softNmsSigma:l}=XA(e,t,n),c=await Se.nonMaxSuppressionWithScoreAsync(s,r,a,o,i,l);return[c.selectedIndices,c.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i}=XA(e,t,n),l=S("padToMaxOutputSize",e,t,n),c=await Se.nonMaxSuppressionPaddedAsync(s,r,a,o,i,l);return[c.selectedIndices,c.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i}=XA(e,t,n);return[await Se.nonMaxSuppressionAsync(s,r,a,o,i)]}case"Where":{let s=ge(S("condition",e,t,n),"bool"),r=[await z1(s)];return s.dispose(),r}case"ListDiff":return Jv(S("x",e,t,n),S("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},LG=(e,t,n)=>{switch(e.op){case"TopKV2":{let s=S("x",e,t,n),r=S("k",e,t,n),a=S("sorted",e,t,n),o=nw(s,r,a);return[o.values,o.indices]}case"Unique":{let s=S("x",e,t,n),r=M1(s);return[r.values,r.indices]}case"UniqueV2":{let s=S("x",e,t,n),r=S("axis",e,t,n),a=M1(s,r);return[a.values,a.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},BG=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let s=S("default",e,t,n);return[Un(e.name,t,n)||s];case"Placeholder":return[Un(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let c=S("x",e,t,n);return[aa(c)]}case"IdentityN":return S("x",e,t,n).map(c=>aa(c));case"Snapshot":let r=S("x",e,t,n);return[aa(r)];case"Shape":return[Ct(S("x",e,t,n).shape,"int32")];case"ShapeN":return S("x",e,t,n).map(c=>Ct(c.shape));case"Size":return[Ce(S("x",e,t,n).size,"int32")];case"Rank":return[Ce(S("x",e,t,n).rank,"int32")];case"NoOp":return[Ce(1)];case"Print":let a=S("x",e,t,n),o=S("data",e,t,n),i=S("message",e,t,n),l=S("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(i);for(let c=0;ce.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return Ce(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(s=>s.dispose()),this.tensorMap.clear(),K(()=>{let s=is(t),r=n.length,a=s.length;v.assert(r===a,()=>`The number of elements doesn't match, keys has ${r} elements, the values has ${a} elements.`);for(let o=0;o{let s=[];for(let r=0;r{switch(e.op){case"HashTable":case"HashTableV2":{let r=S("keyDType",e,t,n),a=S("valueDType",e,t,n),o=new WG(r,a);return s.addHashTable(e.name,o),[o.handle]}case"LookupTableImport":case"LookupTableImportV2":{let r=S("tableHandle",e,t,n,s),a=S("keys",e,t,n),o=S("values",e,t,n);return[await s.getHashTableById(r.id).import(a,o)]}case"LookupTableFind":case"LookupTableFindV2":{let r=S("tableHandle",e,t,n,s),a=S("keys",e,t,n),o=S("defaultValue",e,t,n);return[await s.getHashTableById(r.id).find(a,o)]}case"LookupTableSize":case"LookupTableSizeV2":{let r=S("tableHandle",e,t,n,s);return[s.getHashTableById(r.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},UG=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let s=S("images",e,t,n),r=S("size",e,t,n),a=S("alignCorners",e,t,n),o=S("halfPixelCenters",e,t,n);return[Se.resizeBilinear(s,[r[0],r[1]],a,o)]}case"ResizeNearestNeighbor":{let s=S("images",e,t,n),r=S("size",e,t,n),a=S("alignCorners",e,t,n),o=S("halfPixelCenters",e,t,n);return[Se.resizeNearestNeighbor(s,[r[0],r[1]],a,o)]}case"CropAndResize":{let s=S("image",e,t,n),r=S("boxes",e,t,n),a=S("boxInd",e,t,n),o=S("cropSize",e,t,n),i=S("method",e,t,n),l=S("extrapolationValue",e,t,n);return[Se.cropAndResize(s,r,a,o,i,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},GG=(e,t,n)=>{switch(e.op){case"Equal":return[Ps(S("a",e,t,n),S("b",e,t,n))];case"NotEqual":return[Hu(S("a",e,t,n),S("b",e,t,n))];case"Greater":return[xs(S("a",e,t,n),S("b",e,t,n))];case"GreaterEqual":return[ll(S("a",e,t,n),S("b",e,t,n))];case"Less":return[x1(S("a",e,t,n),S("b",e,t,n))];case"LessEqual":return[ul(S("a",e,t,n),S("b",e,t,n))];case"LogicalAnd":return[fr(S("a",e,t,n),S("b",e,t,n))];case"LogicalNot":return[Cf(S("a",e,t,n))];case"LogicalOr":return[k1(S("a",e,t,n),S("b",e,t,n))];case"Select":case"SelectV2":return[Wn(S("condition",e,t,n),S("a",e,t,n),S("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},HG=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[je(S("a",e,t,n),S("b",e,t,n),S("transposeA",e,t,n),S("transposeB",e,t,n))];case"Einsum":return[Pv(S("equation",e,t,n),...S("tensors",e,t,n))];case"Transpose":return[tt(S("x",e,t,n),S("perm",e,t,n))];case"_FusedMatMul":let[s,r]=S("fusedOps",e,t,n),a=s==="biasadd",o=r==="prelu",i=S("numArgs",e,t,n),l=S("leakyreluAlpha",e,t,n);if(a){if(o&&i!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!o&&i!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[c,u]=S("args",e,t,n);return[Fo.matMul({a:S("a",e,t,n),b:S("b",e,t,n),transposeA:S("transposeA",e,t,n),transposeB:S("transposeB",e,t,n),bias:c,activation:r,preluActivationWeights:u,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},jG=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[Bu(S("x",e,t,n),S("mean",e,t,n),S("variance",e,t,n),S("offset",e,t,n),S("scale",e,t,n),S("epsilon",e,t,n))];case"FusedBatchNormV3":return[Bu(S("x",e,t,n),S("mean",e,t,n),S("variance",e,t,n),S("offset",e,t,n),S("scale",e,t,n),S("epsilon",e,t,n))];case"LRN":return[Bv(S("x",e,t,n),S("radius",e,t,n),S("bias",e,t,n),S("alpha",e,t,n),S("beta",e,t,n))];case"Softmax":return[Xu(S("x",e,t,n))];case"LogSoftmax":return[b1(S("x",e,t,n))];case"SparseToDense":return[B1(S("sparseIndices",e,t,n),S("outputShape",e,t,n),S("sparseValues",e,t,n),S("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},qG=(e,t,n)=>{switch(e.op){case"Max":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[An(S("x",e,t,n),o,i)]}case"Mean":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[Ut(S("x",e,t,n),o,i)]}case"Min":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[Do(S("x",e,t,n),o,i)]}case"Sum":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[we(S("x",e,t,n),o,i)]}case"All":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[i1(S("x",e,t,n),o,i)]}case"Any":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[yf(S("x",e,t,n),o,i)]}case"ArgMax":{let o=S("axis",e,t,n);return[Fs(S("x",e,t,n),o)]}case"ArgMin":{let o=S("axis",e,t,n);return[pv(S("x",e,t,n),o)]}case"Prod":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[I1(S("x",e,t,n),o,i)]}case"Cumsum":{let o=S("axis",e,t,n),i=S("exclusive",e,t,n),l=S("reverse",e,t,n);return[y1(S("x",e,t,n),o,i,l)]}case"Bincount":let s=S("x",e,t,n),r=S("weights",e,t,n),a=S("size",e,t,n);return[d1(s,r,a)];case"DenseBincount":{let o=S("x",e,t,n),i=S("weights",e,t,n),l=S("size",e,t,n),c=S("binaryOutput",e,t,n);return[_v(o,i,l,c)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},XG=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let s=S("n",e,t,n),r=S("axis",e,t,n),a=S("tensors",e,t,n);return a=a.slice(0,s),[St(a,r)]}case"Gather":{let s=S("x",e,t,n),r=S("indices",e,t,n);return[Uu(s,ge(r,"int32"),0)]}case"GatherV2":{let s=S("axis",e,t,n),r=S("batchDims",e,t,n),a=S("x",e,t,n),o=S("indices",e,t,n);return[Uu(a,ge(o,"int32"),s,r)]}case"Reverse":{let s=S("dims",e,t,n),r=[];for(let o=0;o{let s=S("axis",e,t,n),r=S("tensors",e,t,n),a=r[0].shape,o=rt(r[0]).shape,i=r.map(l=>{let c=v.arraysEqual(l.shape,a);if(!c&&!v.arraysEqual(rt(l).shape,o))throw new Error("the input tensors shape does not match");return c?l:H(l,a)});return[an(i,s)]});case"Unpack":{let s=S("axis",e,t,n),r=S("tensor",e,t,n);return is(r,s)}case"Tile":{let s=S("reps",e,t,n);return[Qs(S("x",e,t,n),s)]}case"Split":case"SplitV":{let s=S("axis",e,t,n),r=S("numOrSizeSplits",e,t,n),a=S("x",e,t,n);return Yt(a,r,s)}case"ScatterNd":{let s=S("indices",e,t,n),r=S("values",e,t,n),a=S("shape",e,t,n);return[iw(s,r,a)]}case"GatherNd":{let s=S("x",e,t,n),r=S("indices",e,t,n);return[lw(s,r)]}case"SparseToDense":{let s=S("sparseIndices",e,t,n),r=S("outputShape",e,t,n),a=S("sparseValues",e,t,n),o=S("defaultValue",e,t,n);return[B1(s,a,r,a.dtype===o.dtype?o:ge(o,a.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},KG=(e,t,n)=>{switch(e.op){case"SparseFillEmptyRows":{let{outputIndices:s,outputValues:r,emptyRowIndicator:a,reverseIndexMap:o}=Xd.sparseFillEmptyRows(S("indices",e,t,n),S("values",e,t,n),S("denseShape",e,t,n),S("defaultValue",e,t,n));return[s,r,a,o]}case"SparseReshape":{let{outputIndices:s,outputShape:r}=Xd.sparseReshape(S("inputIndices",e,t,n),S("inputShape",e,t,n),S("newShape",e,t,n));return[s,r]}case"SparseSegmentMean":return[Xd.sparseSegmentMean(S("data",e,t,n),S("indices",e,t,n),S("segmentIds",e,t,n))];case"SparseSegmentSum":return[Xd.sparseSegmentSum(S("data",e,t,n),S("indices",e,t,n),S("segmentIds",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},ZG=(e,t,n)=>{switch(e.op){case"FFT":return[Df(S("x",e,t,n))];case"IFFT":return[jd(S("x",e,t,n))];case"RFFT":return[$f(S("x",e,t,n))];case"IRFFT":return[P1(S("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},YG=(e,t,n)=>{switch(e.op){case"StringNGrams":{let{nGrams:s,nGramsSplits:r}=Lf.stringNGrams(S("data",e,t,n),S("dataSplits",e,t,n),S("separator",e,t,n),S("nGramWidths",e,t,n),S("leftPad",e,t,n),S("rightPad",e,t,n),S("padWidth",e,t,n),S("preserveShortSequences",e,t,n));return[s,r]}case"StringSplit":{let{indices:s,values:r,shape:a}=Lf.stringSplit(S("input",e,t,n),S("delimiter",e,t,n),S("skipEmpty",e,t,n));return[s,r,a]}case"StringToHashBucketFast":return[Lf.stringToHashBucketFast(S("input",e,t,n),S("numBuckets",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},JG=(e,t,n)=>{switch(e.op){case"Cast":return[ge(S("x",e,t,n),S("dtype",e,t,n))];case"ExpandDims":{let s=S("axis",e,t,n);return[Zt(S("x",e,t,n),s)]}case"Squeeze":{let s=S("axis",e,t,n);return[rt(S("x",e,t,n),s)]}case"Reshape":return[H(S("x",e,t,n),S("shape",e,t,n))];case"MirrorPad":return[qv(S("x",e,t,n),S("padding",e,t,n),S("mode",e,t,n))];case"PadV2":case"Pad":return[er(S("x",e,t,n),S("padding",e,t,n),S("constantValue",e,t,n))];case"SpaceToBatchND":{let s=S("blockShape",e,t,n),r=S("paddings",e,t,n);return[Ef(S("x",e,t,n),s,r)]}case"BatchToSpaceND":{let s=S("blockShape",e,t,n),r=S("crops",e,t,n);return[bf(S("x",e,t,n),s,r)]}case"DepthToSpace":{let s=S("blockSize",e,t,n),r=S("dataFormat",e,t,n).toUpperCase();return[Dv(S("x",e,t,n),s,r)]}case"BroadcastTo":return[Ld(S("x",e,t,n),S("shape",e,t,n))];case"BroadcastArgs":return[Sv(S("s0",e,t,n),S("s1",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function KS(e,t,n,s){let r=((a,o,i)=>{switch(a.category){case"arithmetic":return K(()=>NG(a,o,i));case"basic_math":return K(()=>EG(a,o,i));case"control":return PG(a,o,i);case"convolution":return K(()=>OG(a,o,i));case"creation":return K(()=>MG(a,o,i));case"dynamic":return zG(a,o,i);case"evaluation":return K(()=>LG(a,o,i));case"image":return K(()=>UG(a,o,i));case"graph":return K(()=>BG(a,o,i));case"logical":return K(()=>GG(a,o,i));case"matrices":return K(()=>HG(a,o,i));case"normalization":return K(()=>jG(a,o,i));case"reduction":return K(()=>qG(a,o,i));case"slice_join":return K(()=>XG(a,o,i));case"sparse":return K(()=>KG(a,o,i));case"spectral":return K(()=>ZG(a,o,i));case"string":return K(()=>YG(a,o,i));case"transformation":return K(()=>JG(a,o,i));case"hash_table":return VG(a,o,i,s);case"custom":let l=kS(a.op);if(l&&l.customExecutor)return l.customExecutor(new TG(a,o,i));throw TypeError(`Custom op ${a.op} is not registered.`);default:throw TypeError(`Unknown op '${a.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(r)?r.then(a=>[].concat(a)):[].concat(r)}var ZS=class{constructor(e={},t={},n={},s={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=s,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function YS(e,t,n,s){let r=new Set,a=[],o=null,i=null,l=new Set,c=Object.keys(e).map(p=>vs(p)[0]),u=[];s!=null&&(u=s.map(p=>vs(p.name)[0]));let d=[...t];for(;d.length>0;){let p=d.pop();if((JS(p)||sH(p)||rH(p))&&o==null&&(o=p,i=o.children.map(h=>h.name).filter(h=>r.has(h))),r.add(p.name),n[p.name]==null&&c.indexOf(p.name)===-1&&u.indexOf(p.name)===-1){if(p.inputs.length===0){a.push(p.name);continue}p.inputs.forEach(h=>{l.has(h.name)||(l.add(h.name),d.push(h))})}}return{inputs:e,outputs:t,usedNodes:r,missingInputs:a,dynamicNode:o,syncInputs:i}}function QG(e,t,n){let{usedNodes:s,inputs:r}=n,a=[],o=Object.keys(r).map(u=>vs(u)[0]).map(u=>e.nodes[u]),i=e.initNodes;o.forEach(u=>{s.has(u.name)&&a.push(u)}),e.weights.forEach(u=>{s.has(u.name)&&a.push(u)}),i!=null&&i.forEach(u=>{s.has(u.name)&&a.push(u)});let l=new Set,c=[];for(;a.length>0;){let u=a.pop();l.add(u.name),t[u.name]||c.push(u),u.children.forEach(d=>{!l.has(d.name)&&s.has(d.name)&&d.inputs.every(p=>l.has(p.name))&&a.push(d)})}return c}var eH=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],tH=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],nH=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function JS(e){return eH.indexOf(e.op)>=0}function sH(e){return tH.indexOf(e.op)>=0}function rH(e){return nH.indexOf(e.op)>=0}var KA=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this.intermediateTensors={},this.keepTensorForDebug=!1,this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new KA(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(s=>s.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(r=>r.name).sort(),s=t.map(r=>r.name).sort();return n.join(this.SEPERATOR)+"--"+s.join(this.SEPERATOR)}compile(e,t){let n=YS(e,t,this.weightMap,this._initNodes),{missingInputs:s,dynamicNode:r,syncInputs:a}=n;if(r!=null)throw new Error(`This execution contains the node '${r.name}', which has the dynamic op '${r.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${a}]`);if(s.length>0){let o=t.map(l=>l.name),i=Object.keys(e);throw new Error(`Cannot compute the outputs [${o}] from the provided inputs [${i}]. Missing the following inputs: [${s}]`)}return QG(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let s=n.map(u=>this.graph.nodes[vs(u)[0]]),r=t.map(u=>vs(u)[0]),a=r.map(u=>this.graph.nodes[u]);this.resetIntermediateTensors(),a.length===0&&(a=this._outputs);let o=this.getCompilationKey(s,a),i=this.compiledMap.get(o);i==null&&(i=this.compile(e,a),this.compiledMap.set(o,i));let l={},c={};return K(()=>{let u=new ZS(this.weightMap,l,c,this.functionExecutorMap),d={...this.weightMap};Object.keys(e).forEach(f=>{let[m,g]=vs(f),y=[];y[g]=e[f],d[m]=y});let p=this.getFrozenTensorIds(d),h={};for(let f=0;fUn(f,d,u))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(s=>s.id)));return new Set(t)}checkTensorForDisposal(e,t,n,s,r,a,o){t.category==="control"||a.indexOf(e)!==-1||(n[e].forEach(i=>{i!=null&&(o[i.id]=(o[i.id]||0)+t.children.length)}),t.inputs.forEach(i=>{if(i.category!=="control"){let l=oG(i.name,n,s);l!=null&&l.forEach(c=>{if(c&&!c.kept&&!r.has(c.id)){let u=o[c.id];if(u===1){if(!this.keepTensorForDebug)c.dispose();else{let[d,p]=Lr(t.name,s);this.intermediateTensors[d]?this.intermediateTensors[d][p]=c:(this.intermediateTensors[d]=[],this.intermediateTensors[d][p]=c)}delete o[c.id]}else u!=null&&o[c.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}disposeIntermediateTensors(){!this.intermediateTensors||(Object.keys(this.intermediateTensors).forEach(e=>this.intermediateTensors[e].forEach(t=>t.dispose())),this.disposeTensorsMap())}disposeTensorsMap(){!this.tensorsMap||Object.keys(this.tensorsMap).forEach(e=>{this.tensorsMap[e].forEach(n=>{n&&!n.kept&&!n.isDisposed&&!this.keepIds.has(n.id)&&n.dispose()})})}getIntermediateTensors(){return this.tensorsMap}resetIntermediateTensors(){for(let e in this.intermediateTensors)this.intermediateTensors[e].forEach(t=>t.dispose()),delete this.intermediateTensors[e]}async _executeAsync(e,t,n=!1,s={},r={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));try{this.keepTensorForDebug=Y().getBool("KEEP_INTERMEDIATE_TENSORS")}catch(c){console.warn(c.message)}this.resetIntermediateTensors();let a=new ZS(this.weightMap,s,r,this.functionExecutorMap);this.tensorsMap=await this.executeWithControlFlow(e,a,t,n);let o=t.map(c=>Un(c,this.tensorsMap,a)),i=o.map(c=>c.id),l=Object.keys(e).map(c=>e[c].id);return this.keepIds=new Set([...i,...l,...this.weightIds]),this.keepTensorForDebug||this.disposeTensorsMap(),this.parent==null&&a.dispose(this.keepIds),o}async executeFunctionAsync(e,t,n){let s=e.reduce((r,a,o)=>(r[this.inputs[o].name]=a,r),{});return this._executeAsync(s,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,s){let r=Object.keys(e),a=r.map(x=>this.graph.nodes[vs(x)[0]]),o=n.map(x=>vs(x)[0]),i=o.map(x=>this.graph.nodes[x]);i.length===0&&(i=this._outputs);let{usedNodes:l,missingInputs:c,dynamicNode:u,syncInputs:d}=YS(e,i,this.weightMap,this._initNodes),p=[...a,...this.graph.weights,...this._initNodes||[]].map(x=>({node:x,contexts:t.currentContext})),h={...this.weightMap};Object.keys(e).forEach(x=>{let[A,b]=vs(x),w=[];w[b]=e[x],h[A]=w});let f={},m=this.getFrozenTensorIds(h),g={};for(;p.length>0;){let x=this.processStack(a,p,t,h,g,m,o,f,l);await Promise.all(x)}u==null&&!s&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=i.filter(x=>!JS(x)&&!Un(x.name,h,t)).map(x=>x.name);if(y.length>0){let x="";throw u!=null&&(x=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${d}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${r}]. Consider providing the following inputs: [${c}]. ${x}`)}return h}processStack(e,t,n,s,r,a,o,i,l){let c=[];for(;t.length>0;){let u=t.pop();n.currentContext=u.contexts;let d="";if(u.node.op==="Enter"&&S("isConstant",u.node,s,n)&&([d]=Lr(u.node.name,n)),s[u.node.name]==null){let p=KS(u.node,s,n,this._resourceManager);d||([d]=Lr(u.node.name,n));let h=n.currentContext;v.isPromise(p)?c.push(p.then(f=>(s[d]=f,n.currentContext=h,this.checkTensorForDisposal(d,u.node,s,n,a,o,i),this.processChildNodes(u.node,t,n,s,r,l),f))):(s[d]=p,this.checkTensorForDisposal(d,u.node,s,n,a,o,i),this.processChildNodes(u.node,t,n,s,r,l))}else this.processChildNodes(u.node,t,n,s,r,l)}return c}processChildNodes(e,t,n,s,r,a){e.children.forEach(o=>{let[i]=Lr(o.name,n);r[i]||!a.has(o.name)||(o.op==="Merge"?o.inputNames.some(l=>!!Un(l,s,n))&&(r[i]=!0,t.push({contexts:n.currentContext,node:o})):o.inputNames.every(l=>!!Un(l,s,n))&&(r[i]=!0,t.push({contexts:n.currentContext,node:o})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[s]=vs(t),r=this.graph.nodes[s];if(r.attrParams.shape&&r.attrParams.shape.value){let a=r.attrParams.shape.value,o=a.length===n.shape.length&&n.shape.every((i,l)=>a[l]===-1||a[l]===i);v.assert(o,()=>`The shape of dict['${r.name}'] provided in model.execute(dict) must be [${a}], but was [${n.shape}]`)}r.attrParams.dtype&&r.attrParams.dtype.value&&v.assert(n.dtype===r.attrParams.dtype.value,()=>`The dtype of dict['${r.name}'] provided in model.execute(dict) must be ${r.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let s=this._signature.inputs[n];t[s.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[s]=vs(n);return this.graph.nodes[s]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=vs(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},aH=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},oH="?tfjs-format=file",iH="model.json",QS=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new aH}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=rs.browserHTTPRequest(e,this.loadOptions);else{let t=rs.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(rs.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let s=rs.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new KA(US.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(s),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let r=US.Instance.transformGraph(e.modelInitializer);this.initializer=new KA(r),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=rs.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof et)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,s)=>(t[n]=e[s],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}getIntermediateTensors(){return this.executor.getIntermediateTensors()}disposeIntermediateTensors(){this.executor.disposeIntermediateTensors()}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Be(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${iH}${oH}`);let n=new QS(e,t);return await n.load(),n}var lH="0.0.0",eI={};Me(eI,{CSVDataset:()=>fI,Dataset:()=>sc,FileDataSource:()=>vI,TextLineDataset:()=>dI,URLDataSource:()=>wI,array:()=>_H,csv:()=>VH,func:()=>UH,generator:()=>GH,microphone:()=>jH,version_data:()=>qH,webcam:()=>HH,zip:()=>DH});var uH=li(Ih()),cH=li(Ih());function dH(e,t){return Nm(e,t)}function Nm(e,t,n=new Map,s=new Set){if(e==null)return null;if(typeof Blob=="function"&&e instanceof Blob)return e.slice();if(s.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(r.recurse)if(nc(e)){let a=Array.isArray(e)?[]:{};s.add(e);for(let o in e){let i=e[o],l=Nm(i,t,n,s);a[o]=l}return s.delete(e),e.__proto__&&(a.__proto__=e.__proto__),a}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,r.value),r.value}function pH(e,t=nI){return tI(e,t)}function tI(e,t,n=new Set){let s=e[0];if(n.has(s))throw new Error("Circular references are not supported.");let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(r.recurse)if(nc(s)){let a=Array.isArray(s)?[]:{};n.add(s);for(let o in s){let i=e.map(c=>c[o]),l=tI(i,t,n);a[o]=l}return n.delete(s),a}else throw new Error(`Can't recurse into non-iterable type: ${s}`);else return r.value}function nI(e){return e===null?null:nc(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function sI(e,t){let n=new Map;Nm(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let o=await a;n.set(r,o)}}return Nm(e,t,n)}function nc(e){let t=!1;if(Y().get("IS_BROWSER"))t=e instanceof TextDecoder;else{let{StringDecoder:n}=q5();t=e instanceof n}return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof et)&&!(e instanceof Promise)&&!t)}function hH(e){return e==null||fH(e)||Array.isArray(e)||typeof e=="object"&&e instanceof et||v.isTypedArray(e)}function fH(e){return e===null||typeof e!="object"&&typeof e!="function"}function mH(e){return dH(e,gH)}function gH(e){return e instanceof et?{value:e.clone(),recurse:!1}:nc(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var rI=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},aI=class extends rI{constructor(){super(aI.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let s=0;st===!0)}rowMajorBatch(e,t=!0){return new SH(this,e,t)}columnMajorBatch(e,t=!0,n=nI){return this.rowMajorBatch(e,t).map(r=>pH(r,n))}concatenate(e,t){return new uI(iI([this,e]),t)}take(e){return e<0||e==null?this:new kH(this,e)}skip(e){return e<0||e==null?this:new wH(this,e)}prefetch(e){return new cI(this,e)}shuffle(e,t){return new RH(this,e,t)}serial(){return new vH(this)}},xH=class extends bn{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:mH(e),done:!1}}},bH=class extends bn{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},vH=class extends bn{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},wH=class extends bn{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},SH=class extends bn{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},IH=class extends bn{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;te(e.value)}}},CH=class extends bn{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=pr.getTensorsInContainer(e.value),n=this.transform(e.value),s=pr.getTensorsInContainer(n);for(let r of t)pr.isTensorInList(r,s)||r.dispose();return{value:n,done:!1}}},TH=class extends bn{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},lI=class extends bn{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=pr.getTensorsInContainer(e.value),n=await this.transform(e.value),s=pr.getTensorsInContainer(n);for(let r of t)pr.isTensorInList(r,s)||r.dispose();return{value:n,done:!1}}},YA=class extends bn{constructor(){super();this.outputQueue=new oI,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},NH=class extends YA{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=pr.getTensorsInContainer(e.value),n=this.transform(e.value),s=pr.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let r of t)pr.isTensorInList(r,s)||r.dispose();return!0}},uI=class extends bn{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},Em;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(Em||(Em={}));var EH=class extends bn{constructor(e,t=0){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function s(a){return a instanceof bn?{value:a.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let r=await sI(this.iterators,s);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case 0:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case 1:return{value:null,done:!0};case 2:default:}return this.count++,{value:r,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},cI=class extends bn{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new rI(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},RH=class extends cI{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=cH.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},sc=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is - ${e}`);let s;return this.size===1/0||this.size==null?s=this.size:t?s=Math.ceil(this.size/e):s=Math.floor(this.size/e),ws(async()=>(await n.iterator()).columnMajorBatch(e,t,$H),s)}concatenate(e){let t=this,n;return this.size===1/0||e.size===1/0?n=1/0:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,ws(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===1/0?n=1/0:n=null,ws(async()=>(await t.iterator()).filter(s=>K(()=>e(s))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return ws(async()=>(await t.iterator()).map(n=>K(()=>e(n))),this.size)}mapAsync(e){let t=this;return ws(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return ws(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=1/0:n=null,ws(async()=>{let s=ZA(async()=>({value:await t.iterator(),done:!1}));return yH(s.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let s=this,r=uH.alea(t||v.now().toString());return ws(async()=>{let a=r.int32();return n&&(a+=r.int32()),(await s.iterator()).shuffle(e,a.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,ws(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===1/0)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===1/0)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};sc.MAX_BUFFER_SIZE=1e4;function ws(e,t=null){return new class extends sc{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function _H(e){return ws(async()=>iI(e),e.length)}function DH(e){if(!nc(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await sI(e,s=>{if(s instanceof sc)return{value:s.iterator(),recurse:!1};if(nc(s))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return AH(n,Em.SHORTEST)},t)}function $H(e){if(e===null)return null;let t=e[0];return hH(t)?{value:FH(e),recurse:!1}:{value:null,recurse:!0}}function FH(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof et?an(e):pt(e)}var dI=class extends sc{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` -`).map(s=>(s.endsWith("\r")&&(s=s.slice(0,-1)),s))}},Rm='"',fp=Symbol("out"),pI=Symbol("field"),_m=Symbol("quote"),JA=Symbol("quoteafterquote"),hI=Symbol("quoteinquote"),fI=class extends sc{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new dI(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((s,r)=>(s[r]=s[r]+1||1,s),{}),n=Object.keys(t).filter(s=>t[s]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let s of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(s)===-1)throw new Error('The key "'+s+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let t=await(await this.base.iterator()).next();if(t.done)throw new Error("No data was found for CSV parsing.");let n=t.value;return this.parseRow(n,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},s={};for(let r=0;r14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(Y().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new mI(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let s=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(s,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let s=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(s,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(s=>{let r=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-1/0&&s({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(r),s({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((s,r)=>n.set(s,r*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),pt(n,t)}},gI=class extends bn{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=Ct([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,s=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,r=(1-n)/2,a=(1-s)/2,o=r+n,i=s+a;this.cropBox=mr([a,r,i,o],[1,4])}else this.cropBox=mr([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(Y().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new gI(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=Js.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return K(()=>{let t=Zt(ge(e,"float32"),0),n;n=Se.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let s=n.shape;return H(n,s.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(t=>t.stop());try{this.webcamVideoElement.srcObject=null}catch(t){console.log(t),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},yI=class{},AI=class extends bn{split(e){return new PH(this,e)}},PH=class extends AI{constructor(e,t){super();this.upstream=e,this.impl=new OH(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},OH=class extends YA{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},MH=class extends bn{decodeUTF8(){return new zH(this)}},zH=class extends AI{constructor(e){super();this.upstream=e,this.impl=new LH(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},LH=class extends YA{constructor(e){super();if(this.upstream=e,Y().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=q5();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return Y().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},xI=class extends MH{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(Y().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((t,n)=>{let s=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)t(new Uint8Array(this.file.slice(this.offset,s)));else{let r=new FileReader;r.onload=o=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return n(new TypeError("FileReader returned unknown type."));t(i)},r.onabort=o=>n(new Error("Aborted")),r.onerror=o=>n(new Error(o.type));let a=this.file.slice(this.offset,s);r.readAsArrayBuffer(a)}this.offset=s}),done:!1}}};async function BH(e,t={},n){let s,r;typeof e=="string"?s=e:(s=e.url,r=WH(e));let a=await(n||v.fetch)(s,r);if(a.ok){let o=new Uint8Array(await a.arrayBuffer());return new xI(o,t)}else throw new Error(a.statusText)}var WH=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function bI(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var vI=class extends yI{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(bI(this.input)&&Y().get("IS_NODE")){let e=Ch();this.input=e.readFileSync(this.input.substr(7))}return new xI(this.input,this.options)}},wI=class extends yI{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return bI(this.url)?new vI(this.url,this.fileOptions).iterator():BH(this.url,this.fileOptions)}};function VH(e,t={}){return new fI(new wI(e),t)}function UH(e){let t=ZA(e);return ws(async()=>t)}function GH(e){return ws(async()=>{let t=await e();return ZA(()=>t.next())})}async function HH(e,t){return gI.create(e,t)}async function jH(e){return mI.create(e)}var qH="0.0.0";function Re(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var XH=tr.whereImpl,kI=class extends nu{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new ad(this,as())}nextDataId(){return kI.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,Y().get("IS_NODE")&&N.warn(` + ${s}, and tensor's shape is: ${e.shape}`);let a=e.shape.slice(1),o=qA(a,n),i=s===0?0:e.size/s,l=K(()=>{let u=[];e=H(e,[1,s,i]);for(let d=0;d{switch(e.op){case"If":case"StatelessIf":{let s=S("thenBranch",e,t,n),r=S("elseBranch",e,t,n),a=S("cond",e,t,n),o=S("args",e,t,n);return(await a.data())[0]?n.functionMap[s].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap):n.functionMap[r].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let s=S("body",e,t,n),r=S("cond",e,t,n),a=S("args",e,t,n),o=await n.functionMap[r].executeFunctionAsync(a,n.tensorArrayMap,n.tensorListMap),i=a.map(u=>u.id),l=await o[0].data();o.forEach(u=>{!u.kept&&i.indexOf(u.id)===-1&&u.dispose()});let c=a;for(;l[0];){let u=c;c=await n.functionMap[s].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);let d=c.map(h=>h.id);u.forEach(h=>{!h.kept&&i.indexOf(h.id)===-1&&d.indexOf(h.id)===-1&&h.dispose()});let p=await n.functionMap[r].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);l=await p[0].data(),p.forEach(h=>{!h.kept&&i.indexOf(h.id)===-1&&d.indexOf(h.id)===-1&&h.dispose()})}return c}case"LoopCond":{let s=S("pred",e,t,n);return[aa(s)]}case"Switch":{let s=S("pred",e,t,n),r=S("data",e,t,n);return r.kept||(r=aa(r)),(await s.data())[0]?[void 0,r]:[r,void 0]}case"Merge":{let s=e.inputNames.find(r=>Un(r,t,n)!==void 0);if(s){let r=Un(s,t,n);return[aa(r)]}return}case"Enter":{let s=S("frameName",e,t,n),r=S("tensor",e,t,n);return n.enterFrame(s),[aa(r)]}case"Exit":{let s=S("tensor",e,t,n);return n.exitFrame(),[aa(s)]}case"NextIteration":{let s=S("tensor",e,t,n);return n.nextIteration(),[aa(s)]}case"TensorArrayV3":{let s=S("size",e,t,n),r=S("dtype",e,t,n),a=S("elementShape",e,t,n),o=S("dynamicSize",e,t,n),i=S("clearAfterRead",e,t,n),l=S("identicalElementShapes",e,t,n),c=S("name",e,t,n),u=new RG(c,r,s,a,l,o,i);return n.addTensorArray(u),[u.idTensor,Ce(1)]}case"TensorArrayWriteV3":{let s=S("tensorArrayId",e,t,n),r=S("index",e,t,n),a=S("tensor",e,t,n),o=n.getTensorArray(s.id);return o.write(r,a),[o.idTensor]}case"TensorArrayReadV3":{let s=S("tensorArrayId",e,t,n),r=S("index",e,t,n);return[n.getTensorArray(s.id).read(r)]}case"TensorArrayGatherV3":{let s=S("tensorArrayId",e,t,n),r=S("indices",e,t,n),a=S("dtype",e,t,n);return[n.getTensorArray(s.id).gather(r,a)]}case"TensorArrayScatterV3":{let s=S("tensorArrayId",e,t,n),r=S("indices",e,t,n),a=S("tensor",e,t,n),o=n.getTensorArray(s.id);return o.scatter(r,a),[o.idTensor]}case"TensorArrayConcatV3":{let s=S("tensorArrayId",e,t,n),r=n.getTensorArray(s.id),a=S("dtype",e,t,n);return[r.concat(a)]}case"TensorArraySplitV3":{let s=S("tensorArrayId",e,t,n),r=S("tensor",e,t,n),a=S("lengths",e,t,n),o=n.getTensorArray(s.id);return o.split(a,r),[o.idTensor]}case"TensorArraySizeV3":{let s=S("tensorArrayId",e,t,n),r=n.getTensorArray(s.id);return[Ce(r.size(),"int32")]}case"TensorArrayCloseV3":{let s=S("tensorArrayId",e,t,n),r=n.getTensorArray(s.id);return r.clearAndClose(),[r.idTensor]}case"TensorListSetItem":{let s=S("tensorListId",e,t,n),r=S("index",e,t,n),a=S("tensor",e,t,n),o=n.getTensorList(s.id);return o.setItem(r,a),[o.idTensor]}case"TensorListGetItem":{let s=S("tensorListId",e,t,n),r=S("index",e,t,n),a=S("elementShape",e,t,n),o=S("elementDType",e,t,n);return[n.getTensorList(s.id).getItem(r,a,o)]}case"TensorListScatterV2":case"TensorListScatter":{let s=S("indices",e,t,n),r=S("tensor",e,t,n),a=S("elementShape",e,t,n),o=S("numElements",e,t,n),i=$G(r,s,a,o);return n.addTensorList(i),[i.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let s=S("elementShape",e,t,n),r=S("elementDType",e,t,n),a;e.op==="TensorListReserve"?a="numElements":a="maxNumElements";let o=S(a,e,t,n),i=DG(s,r,o);return n.addTensorList(i),[i.idTensor]}case"TensorListGather":{let s=S("tensorListId",e,t,n),r=S("indices",e,t,n),a=S("elementShape",e,t,n),o=S("elementDType",e,t,n);return[n.getTensorList(s.id).gather(r,o,a)]}case"TensorListStack":{let s=S("tensorListId",e,t,n),r=S("elementShape",e,t,n),a=S("elementDType",e,t,n),o=S("numElements",e,t,n);return[n.getTensorList(s.id).stack(r,a,o)]}case"TensorListFromTensor":{let s=S("tensor",e,t,n),r=S("elementShape",e,t,n),a=S("elementDType",e,t,n),o=_G(s,r,a);return n.addTensorList(o),[o.idTensor]}case"TensorListConcat":{let s=S("tensorListId",e,t,n),r=n.getTensorList(s.id),a=S("dtype",e,t,n),o=S("elementShape",e,t,n);return[r.concat(a,o)]}case"TensorListPushBack":{let s=S("tensorListId",e,t,n),r=S("tensor",e,t,n),a=n.getTensorList(s.id);return a.pushBack(r),[a.idTensor]}case"TensorListPopBack":{let s=S("tensorListId",e,t,n),r=S("elementShape",e,t,n),a=S("elementDType",e,t,n);return[n.getTensorList(s.id).popBack(r,a)]}case"TensorListSplit":{let s=S("tensor",e,t,n),r=S("elementShape",e,t,n),a=S("lengths",e,t,n),o=FG(s,a,r);return n.addTensorList(o),[o.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function XS(e,t,n){let[s,r]=S("fusedOps",e,t,n),a=s==="biasadd",o=!a,i=r==="prelu",l=s==="fusedbatchnorm",c=S("numArgs",e,t,n);if(a){if(i&&c!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&a&&c!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(l)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported");let u=S("strides",e,t,n),d=Tm(e,t,n),p=S("dataFormat",e,t,n).toUpperCase(),h=S("dilations",e,t,n),[f,m]=S("args",e,t,n);o&&(m=f,f=void 0);let g=S("leakyreluAlpha",e,t,n);return{stride:u,pad:d,dataFormat:p,dilations:h,biasArg:f,preluArg:m,activationFunc:r,leakyreluAlpha:g}}var OG=(e,t,n)=>{switch(e.op){case"Conv1D":{let s=S("stride",e,t,n),r=S("pad",e,t,n),a=S("dataFormat",e,t,n).toUpperCase(),o=S("dilation",e,t,n);return[p1(S("x",e,t,n),S("filter",e,t,n),s,r,a,o)]}case"Conv2D":{let s=S("strides",e,t,n),r=Tm(e,t,n),a=S("dataFormat",e,t,n).toUpperCase(),o=S("dilations",e,t,n);return[_o(S("x",e,t,n),S("filter",e,t,n),[s[1],s[2]],r,a,[o[1],o[2]])]}case"_FusedConv2D":{let{stride:s,pad:r,dataFormat:a,dilations:o,biasArg:i,preluArg:l,activationFunc:c,leakyreluAlpha:u}=XS(e,t,n);return[Fo.conv2d({x:S("x",e,t,n),filter:S("filter",e,t,n),strides:[s[1],s[2]],pad:r,dataFormat:a,dilations:[o[1],o[2]],bias:i,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"FusedDepthwiseConv2dNative":{let{stride:s,pad:r,dataFormat:a,dilations:o,biasArg:i,preluArg:l,activationFunc:c,leakyreluAlpha:u}=XS(e,t,n);return[Fo.depthwiseConv2d({x:S("x",e,t,n),filter:S("filter",e,t,n),strides:[s[1],s[2]],pad:r,dataFormat:a,dilations:[o[1],o[2]],bias:i,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let s=S("outputShape",e,t,n),r=S("strides",e,t,n),a=Tm(e,t,n);return[f1(S("x",e,t,n),S("filter",e,t,n),s,[r[1],r[2]],a)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let s=S("strides",e,t,n),r=Tm(e,t,n),a=S("dilations",e,t,n),o=S("dataFormat",e,t,n).toUpperCase();return[Bd(S("input",e,t,n),S("filter",e,t,n),[s[1],s[2]],r,o,[a[1],a[2]])]}case"Conv3D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("dataFormat",e,t,n).toUpperCase(),o=S("dilations",e,t,n);return[m1(S("x",e,t,n),S("filter",e,t,n),[s[1],s[2],s[3]],r,a,[o[1],o[2],o[3]])]}case"AvgPool":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[xf(S("x",e,t,n),[a[1],a[2]],[s[1],s[2]],r)]}case"MaxPool":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[Tf(S("x",e,t,n),[a[1],a[2]],[s[1],s[2]],r)]}case"MaxPoolWithArgmax":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n),o=S("includeBatchInIndex",e,t,n),{result:i,indexes:l}=jv(S("x",e,t,n),[a[1],a[2]],[s[1],s[2]],r,o);return[i,l]}case"AvgPool3D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[c1(S("x",e,t,n),[a[1],a[2],a[3]],[s[1],s[2],s[3]],r)]}case"MaxPool3D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("kernelSize",e,t,n);return[S1(S("x",e,t,n),[a[1],a[2],a[3]],[s[1],s[2],s[3]],r)]}case"Dilation2D":{let s=S("strides",e,t,n),r=S("pad",e,t,n),a=S("dilations",e,t,n),o=s[1],i=s[2],l=a[1],c=a[2];return[$v(S("x",e,t,n),S("filter",e,t,n),[o,i],r,[l,c],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},MG=(e,t,n)=>{switch(e.op){case"Fill":{let s=S("shape",e,t,n),r=S("dtype",e,t,n),a=S("value",e,t,n);return[Vu(s,a,r)]}case"LinSpace":{let s=S("start",e,t,n),r=S("stop",e,t,n),a=S("num",e,t,n);return[Lv(s,r,a)]}case"Multinomial":{let s=S("logits",e,t,n),r=S("numSamples",e,t,n),a=S("seed",e,t,n);return[Xv(s,r,a)]}case"OneHot":{let s=S("indices",e,t,n),r=S("depth",e,t,n),a=S("onValue",e,t,n),o=S("offValue",e,t,n);return[Md(s,r,a,o)]}case"Ones":return[bs(S("shape",e,t,n),S("dtype",e,t,n))];case"OnesLike":return[zs(S("x",e,t,n))];case"RandomUniform":return[ju(S("shape",e,t,n),S("minval",e,t,n),S("maxval",e,t,n),S("dtype",e,t,n))];case"Range":{let s=S("start",e,t,n),r=S("stop",e,t,n),a=S("step",e,t,n);return[qu(s,r,a,S("dtype",e,t,n))]}case"TruncatedNormal":{let s=S("shape",e,t,n),r=S("mean",e,t,n),a=S("stdDev",e,t,n),o=S("seed",e,t,n);return[Ff(s,r,a,S("dtype",e,t,n),o)]}case"Zeros":return[jt(S("shape",e,t,n),S("dtype",e,t,n))];case"ZerosLike":return[nt(S("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function XA(e,t,n){let s=S("boxes",e,t,n),r=S("scores",e,t,n),a=S("maxOutputSize",e,t,n),o=S("iouThreshold",e,t,n),i=S("scoreThreshold",e,t,n),l=S("softNmsSigma",e,t,n);return{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i,softNmsSigma:l}}var zG=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i,softNmsSigma:l}=XA(e,t,n),c=await Se.nonMaxSuppressionWithScoreAsync(s,r,a,o,i,l);return[c.selectedIndices,c.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i}=XA(e,t,n),l=S("padToMaxOutputSize",e,t,n),c=await Se.nonMaxSuppressionPaddedAsync(s,r,a,o,i,l);return[c.selectedIndices,c.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:s,scores:r,maxOutputSize:a,iouThreshold:o,scoreThreshold:i}=XA(e,t,n);return[await Se.nonMaxSuppressionAsync(s,r,a,o,i)]}case"Where":{let s=ge(S("condition",e,t,n),"bool"),r=[await z1(s)];return s.dispose(),r}case"ListDiff":return Jv(S("x",e,t,n),S("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},LG=(e,t,n)=>{switch(e.op){case"TopKV2":{let s=S("x",e,t,n),r=S("k",e,t,n),a=S("sorted",e,t,n),o=nw(s,r,a);return[o.values,o.indices]}case"Unique":{let s=S("x",e,t,n),r=M1(s);return[r.values,r.indices]}case"UniqueV2":{let s=S("x",e,t,n),r=S("axis",e,t,n),a=M1(s,r);return[a.values,a.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},BG=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let s=S("default",e,t,n);return[Un(e.name,t,n)||s];case"Placeholder":return[Un(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let c=S("x",e,t,n);return[aa(c)]}case"IdentityN":return S("x",e,t,n).map(c=>aa(c));case"Snapshot":let r=S("x",e,t,n);return[aa(r)];case"Shape":return[Ct(S("x",e,t,n).shape,"int32")];case"ShapeN":return S("x",e,t,n).map(c=>Ct(c.shape));case"Size":return[Ce(S("x",e,t,n).size,"int32")];case"Rank":return[Ce(S("x",e,t,n).rank,"int32")];case"NoOp":return[Ce(1)];case"Print":let a=S("x",e,t,n),o=S("data",e,t,n),i=S("message",e,t,n),l=S("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(i);for(let c=0;ce.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return Ce(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(s=>s.dispose()),this.tensorMap.clear(),K(()=>{let s=is(t),r=n.length,a=s.length;v.assert(r===a,()=>`The number of elements doesn't match, keys has ${r} elements, the values has ${a} elements.`);for(let o=0;o{let s=[];for(let r=0;r{switch(e.op){case"HashTable":case"HashTableV2":{let r=S("keyDType",e,t,n),a=S("valueDType",e,t,n),o=new WG(r,a);return s.addHashTable(e.name,o),[o.handle]}case"LookupTableImport":case"LookupTableImportV2":{let r=S("tableHandle",e,t,n,s),a=S("keys",e,t,n),o=S("values",e,t,n);return[await s.getHashTableById(r.id).import(a,o)]}case"LookupTableFind":case"LookupTableFindV2":{let r=S("tableHandle",e,t,n,s),a=S("keys",e,t,n),o=S("defaultValue",e,t,n);return[await s.getHashTableById(r.id).find(a,o)]}case"LookupTableSize":case"LookupTableSizeV2":{let r=S("tableHandle",e,t,n,s);return[s.getHashTableById(r.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},UG=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let s=S("images",e,t,n),r=S("size",e,t,n),a=S("alignCorners",e,t,n),o=S("halfPixelCenters",e,t,n);return[Se.resizeBilinear(s,[r[0],r[1]],a,o)]}case"ResizeNearestNeighbor":{let s=S("images",e,t,n),r=S("size",e,t,n),a=S("alignCorners",e,t,n),o=S("halfPixelCenters",e,t,n);return[Se.resizeNearestNeighbor(s,[r[0],r[1]],a,o)]}case"CropAndResize":{let s=S("image",e,t,n),r=S("boxes",e,t,n),a=S("boxInd",e,t,n),o=S("cropSize",e,t,n),i=S("method",e,t,n),l=S("extrapolationValue",e,t,n);return[Se.cropAndResize(s,r,a,o,i,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},GG=(e,t,n)=>{switch(e.op){case"Equal":return[Ps(S("a",e,t,n),S("b",e,t,n))];case"NotEqual":return[Hu(S("a",e,t,n),S("b",e,t,n))];case"Greater":return[xs(S("a",e,t,n),S("b",e,t,n))];case"GreaterEqual":return[ll(S("a",e,t,n),S("b",e,t,n))];case"Less":return[x1(S("a",e,t,n),S("b",e,t,n))];case"LessEqual":return[ul(S("a",e,t,n),S("b",e,t,n))];case"LogicalAnd":return[fr(S("a",e,t,n),S("b",e,t,n))];case"LogicalNot":return[Cf(S("a",e,t,n))];case"LogicalOr":return[k1(S("a",e,t,n),S("b",e,t,n))];case"Select":case"SelectV2":return[Wn(S("condition",e,t,n),S("a",e,t,n),S("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},HG=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[je(S("a",e,t,n),S("b",e,t,n),S("transposeA",e,t,n),S("transposeB",e,t,n))];case"Einsum":return[Pv(S("equation",e,t,n),...S("tensors",e,t,n))];case"Transpose":return[tt(S("x",e,t,n),S("perm",e,t,n))];case"_FusedMatMul":let[s,r]=S("fusedOps",e,t,n),a=s==="biasadd",o=r==="prelu",i=S("numArgs",e,t,n),l=S("leakyreluAlpha",e,t,n);if(a){if(o&&i!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!o&&i!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[c,u]=S("args",e,t,n);return[Fo.matMul({a:S("a",e,t,n),b:S("b",e,t,n),transposeA:S("transposeA",e,t,n),transposeB:S("transposeB",e,t,n),bias:c,activation:r,preluActivationWeights:u,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},jG=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[Bu(S("x",e,t,n),S("mean",e,t,n),S("variance",e,t,n),S("offset",e,t,n),S("scale",e,t,n),S("epsilon",e,t,n))];case"FusedBatchNormV3":return[Bu(S("x",e,t,n),S("mean",e,t,n),S("variance",e,t,n),S("offset",e,t,n),S("scale",e,t,n),S("epsilon",e,t,n))];case"LRN":return[Bv(S("x",e,t,n),S("radius",e,t,n),S("bias",e,t,n),S("alpha",e,t,n),S("beta",e,t,n))];case"Softmax":return[Xu(S("x",e,t,n))];case"LogSoftmax":return[b1(S("x",e,t,n))];case"SparseToDense":return[B1(S("sparseIndices",e,t,n),S("outputShape",e,t,n),S("sparseValues",e,t,n),S("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},qG=(e,t,n)=>{switch(e.op){case"Max":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[An(S("x",e,t,n),o,i)]}case"Mean":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[Ut(S("x",e,t,n),o,i)]}case"Min":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[Do(S("x",e,t,n),o,i)]}case"Sum":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[we(S("x",e,t,n),o,i)]}case"All":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[i1(S("x",e,t,n),o,i)]}case"Any":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[yf(S("x",e,t,n),o,i)]}case"ArgMax":{let o=S("axis",e,t,n);return[Fs(S("x",e,t,n),o)]}case"ArgMin":{let o=S("axis",e,t,n);return[pv(S("x",e,t,n),o)]}case"Prod":{let o=S("axis",e,t,n),i=S("keepDims",e,t,n);return[I1(S("x",e,t,n),o,i)]}case"Cumsum":{let o=S("axis",e,t,n),i=S("exclusive",e,t,n),l=S("reverse",e,t,n);return[y1(S("x",e,t,n),o,i,l)]}case"Bincount":let s=S("x",e,t,n),r=S("weights",e,t,n),a=S("size",e,t,n);return[d1(s,r,a)];case"DenseBincount":{let o=S("x",e,t,n),i=S("weights",e,t,n),l=S("size",e,t,n),c=S("binaryOutput",e,t,n);return[_v(o,i,l,c)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},XG=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let s=S("n",e,t,n),r=S("axis",e,t,n),a=S("tensors",e,t,n);return a=a.slice(0,s),[St(a,r)]}case"Gather":{let s=S("x",e,t,n),r=S("indices",e,t,n);return[Uu(s,ge(r,"int32"),0)]}case"GatherV2":{let s=S("axis",e,t,n),r=S("batchDims",e,t,n),a=S("x",e,t,n),o=S("indices",e,t,n);return[Uu(a,ge(o,"int32"),s,r)]}case"Reverse":{let s=S("dims",e,t,n),r=[];for(let o=0;o{let s=S("axis",e,t,n),r=S("tensors",e,t,n),a=r[0].shape,o=rt(r[0]).shape,i=r.map(l=>{let c=v.arraysEqual(l.shape,a);if(!c&&!v.arraysEqual(rt(l).shape,o))throw new Error("the input tensors shape does not match");return c?l:H(l,a)});return[an(i,s)]});case"Unpack":{let s=S("axis",e,t,n),r=S("tensor",e,t,n);return is(r,s)}case"Tile":{let s=S("reps",e,t,n);return[Qs(S("x",e,t,n),s)]}case"Split":case"SplitV":{let s=S("axis",e,t,n),r=S("numOrSizeSplits",e,t,n),a=S("x",e,t,n);return Yt(a,r,s)}case"ScatterNd":{let s=S("indices",e,t,n),r=S("values",e,t,n),a=S("shape",e,t,n);return[iw(s,r,a)]}case"GatherNd":{let s=S("x",e,t,n),r=S("indices",e,t,n);return[lw(s,r)]}case"SparseToDense":{let s=S("sparseIndices",e,t,n),r=S("outputShape",e,t,n),a=S("sparseValues",e,t,n),o=S("defaultValue",e,t,n);return[B1(s,a,r,a.dtype===o.dtype?o:ge(o,a.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},KG=(e,t,n)=>{switch(e.op){case"SparseFillEmptyRows":{let{outputIndices:s,outputValues:r,emptyRowIndicator:a,reverseIndexMap:o}=Xd.sparseFillEmptyRows(S("indices",e,t,n),S("values",e,t,n),S("denseShape",e,t,n),S("defaultValue",e,t,n));return[s,r,a,o]}case"SparseReshape":{let{outputIndices:s,outputShape:r}=Xd.sparseReshape(S("inputIndices",e,t,n),S("inputShape",e,t,n),S("newShape",e,t,n));return[s,r]}case"SparseSegmentMean":return[Xd.sparseSegmentMean(S("data",e,t,n),S("indices",e,t,n),S("segmentIds",e,t,n))];case"SparseSegmentSum":return[Xd.sparseSegmentSum(S("data",e,t,n),S("indices",e,t,n),S("segmentIds",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},ZG=(e,t,n)=>{switch(e.op){case"FFT":return[Df(S("x",e,t,n))];case"IFFT":return[jd(S("x",e,t,n))];case"RFFT":return[$f(S("x",e,t,n))];case"IRFFT":return[P1(S("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},YG=(e,t,n)=>{switch(e.op){case"StringNGrams":{let{nGrams:s,nGramsSplits:r}=Lf.stringNGrams(S("data",e,t,n),S("dataSplits",e,t,n),S("separator",e,t,n),S("nGramWidths",e,t,n),S("leftPad",e,t,n),S("rightPad",e,t,n),S("padWidth",e,t,n),S("preserveShortSequences",e,t,n));return[s,r]}case"StringSplit":{let{indices:s,values:r,shape:a}=Lf.stringSplit(S("input",e,t,n),S("delimiter",e,t,n),S("skipEmpty",e,t,n));return[s,r,a]}case"StringToHashBucketFast":return[Lf.stringToHashBucketFast(S("input",e,t,n),S("numBuckets",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},JG=(e,t,n)=>{switch(e.op){case"Cast":return[ge(S("x",e,t,n),S("dtype",e,t,n))];case"ExpandDims":{let s=S("axis",e,t,n);return[Zt(S("x",e,t,n),s)]}case"Squeeze":{let s=S("axis",e,t,n);return[rt(S("x",e,t,n),s)]}case"Reshape":return[H(S("x",e,t,n),S("shape",e,t,n))];case"MirrorPad":return[qv(S("x",e,t,n),S("padding",e,t,n),S("mode",e,t,n))];case"PadV2":case"Pad":return[er(S("x",e,t,n),S("padding",e,t,n),S("constantValue",e,t,n))];case"SpaceToBatchND":{let s=S("blockShape",e,t,n),r=S("paddings",e,t,n);return[Ef(S("x",e,t,n),s,r)]}case"BatchToSpaceND":{let s=S("blockShape",e,t,n),r=S("crops",e,t,n);return[bf(S("x",e,t,n),s,r)]}case"DepthToSpace":{let s=S("blockSize",e,t,n),r=S("dataFormat",e,t,n).toUpperCase();return[Dv(S("x",e,t,n),s,r)]}case"BroadcastTo":return[Ld(S("x",e,t,n),S("shape",e,t,n))];case"BroadcastArgs":return[Sv(S("s0",e,t,n),S("s1",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function KS(e,t,n,s){let r=((a,o,i)=>{switch(a.category){case"arithmetic":return K(()=>NG(a,o,i));case"basic_math":return K(()=>EG(a,o,i));case"control":return PG(a,o,i);case"convolution":return K(()=>OG(a,o,i));case"creation":return K(()=>MG(a,o,i));case"dynamic":return zG(a,o,i);case"evaluation":return K(()=>LG(a,o,i));case"image":return K(()=>UG(a,o,i));case"graph":return K(()=>BG(a,o,i));case"logical":return K(()=>GG(a,o,i));case"matrices":return K(()=>HG(a,o,i));case"normalization":return K(()=>jG(a,o,i));case"reduction":return K(()=>qG(a,o,i));case"slice_join":return K(()=>XG(a,o,i));case"sparse":return K(()=>KG(a,o,i));case"spectral":return K(()=>ZG(a,o,i));case"string":return K(()=>YG(a,o,i));case"transformation":return K(()=>JG(a,o,i));case"hash_table":return VG(a,o,i,s);case"custom":let l=kS(a.op);if(l&&l.customExecutor)return l.customExecutor(new TG(a,o,i));throw TypeError(`Custom op ${a.op} is not registered.`);default:throw TypeError(`Unknown op '${a.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(r)?r.then(a=>[].concat(a)):[].concat(r)}var ZS=class{constructor(e={},t={},n={},s={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=s,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function YS(e,t,n,s){let r=new Set,a=[],o=null,i=null,l=new Set,c=Object.keys(e).map(p=>vs(p)[0]),u=[];s!=null&&(u=s.map(p=>vs(p.name)[0]));let d=[...t];for(;d.length>0;){let p=d.pop();if((JS(p)||sH(p)||rH(p))&&o==null&&(o=p,i=o.children.map(h=>h.name).filter(h=>r.has(h))),r.add(p.name),n[p.name]==null&&c.indexOf(p.name)===-1&&u.indexOf(p.name)===-1){if(p.inputs.length===0){a.push(p.name);continue}p.inputs.forEach(h=>{l.has(h.name)||(l.add(h.name),d.push(h))})}}return{inputs:e,outputs:t,usedNodes:r,missingInputs:a,dynamicNode:o,syncInputs:i}}function QG(e,t,n){let{usedNodes:s,inputs:r}=n,a=[],o=Object.keys(r).map(u=>vs(u)[0]).map(u=>e.nodes[u]),i=e.initNodes;o.forEach(u=>{s.has(u.name)&&a.push(u)}),e.weights.forEach(u=>{s.has(u.name)&&a.push(u)}),i!=null&&i.forEach(u=>{s.has(u.name)&&a.push(u)});let l=new Set,c=[];for(;a.length>0;){let u=a.pop();l.add(u.name),t[u.name]||c.push(u),u.children.forEach(d=>{!l.has(d.name)&&s.has(d.name)&&d.inputs.every(p=>l.has(p.name))&&a.push(d)})}return c}var eH=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],tH=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],nH=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function JS(e){return eH.indexOf(e.op)>=0}function sH(e){return tH.indexOf(e.op)>=0}function rH(e){return nH.indexOf(e.op)>=0}var KA=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this.intermediateTensors={},this.keepTensorForDebug=!1,this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new KA(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(s=>s.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(r=>r.name).sort(),s=t.map(r=>r.name).sort();return n.join(this.SEPERATOR)+"--"+s.join(this.SEPERATOR)}compile(e,t){let n=YS(e,t,this.weightMap,this._initNodes),{missingInputs:s,dynamicNode:r,syncInputs:a}=n;if(r!=null)throw new Error(`This execution contains the node '${r.name}', which has the dynamic op '${r.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${a}]`);if(s.length>0){let o=t.map(l=>l.name),i=Object.keys(e);throw new Error(`Cannot compute the outputs [${o}] from the provided inputs [${i}]. Missing the following inputs: [${s}]`)}return QG(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let s=n.map(u=>this.graph.nodes[vs(u)[0]]),r=t.map(u=>vs(u)[0]),a=r.map(u=>this.graph.nodes[u]);this.resetIntermediateTensors(),a.length===0&&(a=this._outputs);let o=this.getCompilationKey(s,a),i=this.compiledMap.get(o);i==null&&(i=this.compile(e,a),this.compiledMap.set(o,i));let l={},c={};return K(()=>{let u=new ZS(this.weightMap,l,c,this.functionExecutorMap),d={...this.weightMap};Object.keys(e).forEach(f=>{let[m,g]=vs(f),y=[];y[g]=e[f],d[m]=y});let p=this.getFrozenTensorIds(d),h={};for(let f=0;fUn(f,d,u))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(s=>s.id)));return new Set(t)}checkTensorForDisposal(e,t,n,s,r,a,o){t.category==="control"||a.indexOf(e)!==-1||(n[e].forEach(i=>{i!=null&&(o[i.id]=(o[i.id]||0)+t.children.length)}),t.inputs.forEach(i=>{if(i.category!=="control"){let l=oG(i.name,n,s);l!=null&&l.forEach(c=>{if(c&&!c.kept&&!r.has(c.id)){let u=o[c.id];if(u===1){if(!this.keepTensorForDebug)c.dispose();else{let[d,p]=Lr(t.name,s);this.intermediateTensors[d]?this.intermediateTensors[d][p]=c:(this.intermediateTensors[d]=[],this.intermediateTensors[d][p]=c)}delete o[c.id]}else u!=null&&o[c.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}disposeIntermediateTensors(){!this.intermediateTensors||(Object.keys(this.intermediateTensors).forEach(e=>this.intermediateTensors[e].forEach(t=>t.dispose())),this.disposeTensorsMap())}disposeTensorsMap(){!this.tensorsMap||Object.keys(this.tensorsMap).forEach(e=>{this.tensorsMap[e].forEach(n=>{n&&!n.kept&&!n.isDisposed&&!this.keepIds.has(n.id)&&n.dispose()})})}getIntermediateTensors(){return this.tensorsMap}resetIntermediateTensors(){for(let e in this.intermediateTensors)this.intermediateTensors[e].forEach(t=>t.dispose()),delete this.intermediateTensors[e]}async _executeAsync(e,t,n=!1,s={},r={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));try{this.keepTensorForDebug=Y().getBool("KEEP_INTERMEDIATE_TENSORS")}catch(c){console.warn(c.message)}this.resetIntermediateTensors();let a=new ZS(this.weightMap,s,r,this.functionExecutorMap);this.tensorsMap=await this.executeWithControlFlow(e,a,t,n);let o=t.map(c=>Un(c,this.tensorsMap,a)),i=o.map(c=>c.id),l=Object.keys(e).map(c=>e[c].id);return this.keepIds=new Set([...i,...l,...this.weightIds]),this.keepTensorForDebug||this.disposeTensorsMap(),this.parent==null&&a.dispose(this.keepIds),o}async executeFunctionAsync(e,t,n){let s=e.reduce((r,a,o)=>(r[this.inputs[o].name]=a,r),{});return this._executeAsync(s,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,s){let r=Object.keys(e),a=r.map(x=>this.graph.nodes[vs(x)[0]]),o=n.map(x=>vs(x)[0]),i=o.map(x=>this.graph.nodes[x]);i.length===0&&(i=this._outputs);let{usedNodes:l,missingInputs:c,dynamicNode:u,syncInputs:d}=YS(e,i,this.weightMap,this._initNodes),p=[...a,...this.graph.weights,...this._initNodes||[]].map(x=>({node:x,contexts:t.currentContext})),h={...this.weightMap};Object.keys(e).forEach(x=>{let[A,b]=vs(x),w=[];w[b]=e[x],h[A]=w});let f={},m=this.getFrozenTensorIds(h),g={};for(;p.length>0;){let x=this.processStack(a,p,t,h,g,m,o,f,l);await Promise.all(x)}u==null&&!s&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=i.filter(x=>!JS(x)&&!Un(x.name,h,t)).map(x=>x.name);if(y.length>0){let x="";throw u!=null&&(x=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${d}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${r}]. Consider providing the following inputs: [${c}]. ${x}`)}return h}processStack(e,t,n,s,r,a,o,i,l){let c=[];for(;t.length>0;){let u=t.pop();n.currentContext=u.contexts;let d="";if(u.node.op==="Enter"&&S("isConstant",u.node,s,n)&&([d]=Lr(u.node.name,n)),s[u.node.name]==null){let p=KS(u.node,s,n,this._resourceManager);d||([d]=Lr(u.node.name,n));let h=n.currentContext;v.isPromise(p)?c.push(p.then(f=>(s[d]=f,n.currentContext=h,this.checkTensorForDisposal(d,u.node,s,n,a,o,i),this.processChildNodes(u.node,t,n,s,r,l),f))):(s[d]=p,this.checkTensorForDisposal(d,u.node,s,n,a,o,i),this.processChildNodes(u.node,t,n,s,r,l))}else this.processChildNodes(u.node,t,n,s,r,l)}return c}processChildNodes(e,t,n,s,r,a){e.children.forEach(o=>{let[i]=Lr(o.name,n);r[i]||!a.has(o.name)||(o.op==="Merge"?o.inputNames.some(l=>!!Un(l,s,n))&&(r[i]=!0,t.push({contexts:n.currentContext,node:o})):o.inputNames.every(l=>!!Un(l,s,n))&&(r[i]=!0,t.push({contexts:n.currentContext,node:o})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[s]=vs(t),r=this.graph.nodes[s];if(r.attrParams.shape&&r.attrParams.shape.value){let a=r.attrParams.shape.value,o=a.length===n.shape.length&&n.shape.every((i,l)=>a[l]===-1||a[l]===i);v.assert(o,()=>`The shape of dict['${r.name}'] provided in model.execute(dict) must be [${a}], but was [${n.shape}]`)}r.attrParams.dtype&&r.attrParams.dtype.value&&v.assert(n.dtype===r.attrParams.dtype.value,()=>`The dtype of dict['${r.name}'] provided in model.execute(dict) must be ${r.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let s=this._signature.inputs[n];t[s.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[s]=vs(n);return this.graph.nodes[s]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=vs(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},aH=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},oH="?tfjs-format=file",iH="model.json",QS=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new aH}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=rs.browserHTTPRequest(e,this.loadOptions);else{let t=rs.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(rs.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let s=rs.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new KA(US.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(s),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let r=US.Instance.transformGraph(e.modelInitializer);this.initializer=new KA(r),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=rs.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof et)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,s)=>(t[n]=e[s],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}getIntermediateTensors(){return this.executor.getIntermediateTensors()}disposeIntermediateTensors(){this.executor.disposeIntermediateTensors()}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Be(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${iH}${oH}`);let n=new QS(e,t);return await n.load(),n}var lH="0.0.0",e7={};Me(e7,{CSVDataset:()=>f7,Dataset:()=>sc,FileDataSource:()=>v7,TextLineDataset:()=>d7,URLDataSource:()=>w7,array:()=>_H,csv:()=>VH,func:()=>UH,generator:()=>GH,microphone:()=>jH,version_data:()=>qH,webcam:()=>HH,zip:()=>DH});var uH=li(Ih()),cH=li(Ih());function dH(e,t){return Nm(e,t)}function Nm(e,t,n=new Map,s=new Set){if(e==null)return null;if(typeof Blob=="function"&&e instanceof Blob)return e.slice();if(s.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(r.recurse)if(nc(e)){let a=Array.isArray(e)?[]:{};s.add(e);for(let o in e){let i=e[o],l=Nm(i,t,n,s);a[o]=l}return s.delete(e),e.__proto__&&(a.__proto__=e.__proto__),a}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,r.value),r.value}function pH(e,t=n7){return t7(e,t)}function t7(e,t,n=new Set){let s=e[0];if(n.has(s))throw new Error("Circular references are not supported.");let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(r.recurse)if(nc(s)){let a=Array.isArray(s)?[]:{};n.add(s);for(let o in s){let i=e.map(c=>c[o]),l=t7(i,t,n);a[o]=l}return n.delete(s),a}else throw new Error(`Can't recurse into non-iterable type: ${s}`);else return r.value}function n7(e){return e===null?null:nc(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function s7(e,t){let n=new Map;Nm(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let o=await a;n.set(r,o)}}return Nm(e,t,n)}function nc(e){let t=!1;if(Y().get("IS_BROWSER"))t=e instanceof TextDecoder;else{let{StringDecoder:n}=q5();t=e instanceof n}return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof et)&&!(e instanceof Promise)&&!t)}function hH(e){return e==null||fH(e)||Array.isArray(e)||typeof e=="object"&&e instanceof et||v.isTypedArray(e)}function fH(e){return e===null||typeof e!="object"&&typeof e!="function"}function mH(e){return dH(e,gH)}function gH(e){return e instanceof et?{value:e.clone(),recurse:!1}:nc(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var r7=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},a7=class extends r7{constructor(){super(a7.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let s=0;st===!0)}rowMajorBatch(e,t=!0){return new SH(this,e,t)}columnMajorBatch(e,t=!0,n=n7){return this.rowMajorBatch(e,t).map(r=>pH(r,n))}concatenate(e,t){return new u7(i7([this,e]),t)}take(e){return e<0||e==null?this:new kH(this,e)}skip(e){return e<0||e==null?this:new wH(this,e)}prefetch(e){return new c7(this,e)}shuffle(e,t){return new RH(this,e,t)}serial(){return new vH(this)}},xH=class extends bn{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:mH(e),done:!1}}},bH=class extends bn{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},vH=class extends bn{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},wH=class extends bn{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},SH=class extends bn{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},IH=class extends bn{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;te(e.value)}}},CH=class extends bn{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=pr.getTensorsInContainer(e.value),n=this.transform(e.value),s=pr.getTensorsInContainer(n);for(let r of t)pr.isTensorInList(r,s)||r.dispose();return{value:n,done:!1}}},TH=class extends bn{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},l7=class extends bn{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=pr.getTensorsInContainer(e.value),n=await this.transform(e.value),s=pr.getTensorsInContainer(n);for(let r of t)pr.isTensorInList(r,s)||r.dispose();return{value:n,done:!1}}},YA=class extends bn{constructor(){super();this.outputQueue=new o7,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},NH=class extends YA{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=pr.getTensorsInContainer(e.value),n=this.transform(e.value),s=pr.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let r of t)pr.isTensorInList(r,s)||r.dispose();return!0}},u7=class extends bn{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},Em;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(Em||(Em={}));var EH=class extends bn{constructor(e,t=0){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function s(a){return a instanceof bn?{value:a.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let r=await s7(this.iterators,s);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case 0:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case 1:return{value:null,done:!0};case 2:default:}return this.count++,{value:r,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},c7=class extends bn{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new r7(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},RH=class extends c7{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=cH.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},sc=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is + ${e}`);let s;return this.size===1/0||this.size==null?s=this.size:t?s=Math.ceil(this.size/e):s=Math.floor(this.size/e),ws(async()=>(await n.iterator()).columnMajorBatch(e,t,$H),s)}concatenate(e){let t=this,n;return this.size===1/0||e.size===1/0?n=1/0:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,ws(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===1/0?n=1/0:n=null,ws(async()=>(await t.iterator()).filter(s=>K(()=>e(s))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return ws(async()=>(await t.iterator()).map(n=>K(()=>e(n))),this.size)}mapAsync(e){let t=this;return ws(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return ws(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=1/0:n=null,ws(async()=>{let s=ZA(async()=>({value:await t.iterator(),done:!1}));return yH(s.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let s=this,r=uH.alea(t||v.now().toString());return ws(async()=>{let a=r.int32();return n&&(a+=r.int32()),(await s.iterator()).shuffle(e,a.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,ws(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===1/0)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===1/0)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};sc.MAX_BUFFER_SIZE=1e4;function ws(e,t=null){return new class extends sc{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function _H(e){return ws(async()=>i7(e),e.length)}function DH(e){if(!nc(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await s7(e,s=>{if(s instanceof sc)return{value:s.iterator(),recurse:!1};if(nc(s))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return AH(n,Em.SHORTEST)},t)}function $H(e){if(e===null)return null;let t=e[0];return hH(t)?{value:FH(e),recurse:!1}:{value:null,recurse:!0}}function FH(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof et?an(e):pt(e)}var d7=class extends sc{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` +`).map(s=>(s.endsWith("\r")&&(s=s.slice(0,-1)),s))}},Rm='"',fp=Symbol("out"),p7=Symbol("field"),_m=Symbol("quote"),JA=Symbol("quoteafterquote"),h7=Symbol("quoteinquote"),f7=class extends sc{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new d7(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((s,r)=>(s[r]=s[r]+1||1,s),{}),n=Object.keys(t).filter(s=>t[s]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let s of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(s)===-1)throw new Error('The key "'+s+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let t=await(await this.base.iterator()).next();if(t.done)throw new Error("No data was found for CSV parsing.");let n=t.value;return this.parseRow(n,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},s={};for(let r=0;r14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(Y().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new m7(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let s=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(s,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let s=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(s,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(s=>{let r=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-1/0&&s({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(r),s({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((s,r)=>n.set(s,r*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),pt(n,t)}},g7=class extends bn{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=Ct([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,s=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,r=(1-n)/2,a=(1-s)/2,o=r+n,i=s+a;this.cropBox=mr([a,r,i,o],[1,4])}else this.cropBox=mr([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(Y().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new g7(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=Js.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return K(()=>{let t=Zt(ge(e,"float32"),0),n;n=Se.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let s=n.shape;return H(n,s.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(t=>t.stop());try{this.webcamVideoElement.srcObject=null}catch(t){console.log(t),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},y7=class{},A7=class extends bn{split(e){return new PH(this,e)}},PH=class extends A7{constructor(e,t){super();this.upstream=e,this.impl=new OH(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},OH=class extends YA{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},MH=class extends bn{decodeUTF8(){return new zH(this)}},zH=class extends A7{constructor(e){super();this.upstream=e,this.impl=new LH(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},LH=class extends YA{constructor(e){super();if(this.upstream=e,Y().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=q5();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return Y().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},x7=class extends MH{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(Y().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((t,n)=>{let s=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)t(new Uint8Array(this.file.slice(this.offset,s)));else{let r=new FileReader;r.onload=o=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return n(new TypeError("FileReader returned unknown type."));t(i)},r.onabort=o=>n(new Error("Aborted")),r.onerror=o=>n(new Error(o.type));let a=this.file.slice(this.offset,s);r.readAsArrayBuffer(a)}this.offset=s}),done:!1}}};async function BH(e,t={},n){let s,r;typeof e=="string"?s=e:(s=e.url,r=WH(e));let a=await(n||v.fetch)(s,r);if(a.ok){let o=new Uint8Array(await a.arrayBuffer());return new x7(o,t)}else throw new Error(a.statusText)}var WH=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function b7(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var v7=class extends y7{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(b7(this.input)&&Y().get("IS_NODE")){let e=Ch();this.input=e.readFileSync(this.input.substr(7))}return new x7(this.input,this.options)}},w7=class extends y7{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return b7(this.url)?new v7(this.url,this.fileOptions).iterator():BH(this.url,this.fileOptions)}};function VH(e,t={}){return new f7(new w7(e),t)}function UH(e){let t=ZA(e);return ws(async()=>t)}function GH(e){return ws(async()=>{let t=await e();return ZA(()=>t.next())})}async function HH(e,t){return g7.create(e,t)}async function jH(e){return m7.create(e)}var qH="0.0.0";function Re(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var XH=tr.whereImpl,k7=class extends nu{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new ad(this,as())}nextDataId(){return k7.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,Y().get("IS_NODE")&&N.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let s={id:this.nextDataId()};return this.data.set(s,{values:e,dtype:n,refCount:1}),s}makeTensorInfo(e,t,n){let s;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let r=n.map(a=>v.encodeString(a));s=this.write(r,e,t)}else s=this.write(n,e,t);return{dataId:s,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,s,r){this.data.set(e,{values:t,dtype:s,refCount:r})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let s=this.readSync(n.real.dataId),r=this.readSync(n.imag.dataId);return N.mergeRealAndImagArrays(s,r)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(s=>v.decodeString(s))}catch(s){throw new Error("Failed to decode encoded string bytes into utf-8")}return ze(e.shape,e.dtype,n)}makeOutput(e,t,n){let s=this.write(e,t,n);return as().makeTensorFromDataId(s,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){Re([e],"where");let t=this.readSync(e.dataId);return XH(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}},QA=kI;QA.nextDataId=0;var Dm={};Me(Dm,{addImpl:()=>II,bincountImpl:()=>tx,bincountReduceImpl:()=>CI,ceilImpl:()=>TI,concatImpl:()=>nx,equalImpl:()=>NI,expImpl:()=>RI,expm1Impl:()=>DI,floorImpl:()=>$I,gatherNdImpl:()=>FI,gatherV2Impl:()=>PI,greaterEqualImpl:()=>MI,greaterImpl:()=>OI,lessEqualImpl:()=>LI,lessImpl:()=>zI,linSpaceImpl:()=>BI,logImpl:()=>WI,maxImpl:()=>VI,maximumImpl:()=>UI,minimumImpl:()=>GI,multiplyImpl:()=>sx,negImpl:()=>HI,notEqualImpl:()=>jI,prodImpl:()=>qI,rangeImpl:()=>ax,rsqrtImpl:()=>XI,sigmoidImpl:()=>Oj,simpleAbsImpl:()=>SI,sliceImpl:()=>Pm,sparseFillEmptyRowsImpl:()=>ZI,sparseReshapeImpl:()=>YI,sparseSegmentReductionImpl:()=>ox,sqrtImpl:()=>Lj,squaredDifferenceImpl:()=>JI,stridedSliceImpl:()=>QI,stringNGramsImpl:()=>e7,stringSplitImpl:()=>t7,stringToHashBucketFastImpl:()=>n7,subImpl:()=>s7,tileImpl:()=>r7,topKImpl:()=>o7,transposeImpl:()=>rx,uniqueImpl:()=>i7});function SI(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;Re(t,"abs");let s=new Float32Array(v.sizeFromShape(t.shape)),r=n.data.get(t.dataId).values;return s=SI(r),n.makeOutput(s,t.shape,t.dtype)},ZH={kernelName:di,backendName:"cpu",kernelFunc:KH};function Qt(e){return(t,n,s,r,a)=>{let o=N.assertAndGetBroadcastShape(t,n),i=o.length,l=v.computeStrides(o),c=v.sizeFromShape(o),u=v.getTypedArrayFromDType(a,c),d=t.length,p=n.length,h=v.computeStrides(t),f=v.computeStrides(n),m=N.getBroadcastDims(t,o),g=N.getBroadcastDims(n,o);if(m.length+g.length===0)for(let y=0;yA[I]=0);let b=v.locToIndex(A,d,h),w=x.slice(-p);g.forEach(I=>w[I]=0);let k=v.locToIndex(w,p,f);u[y]=e(s[b],r[k])}return[u,o]}}function ks(e){let{inputs:t,backend:n}=e,{real:s,imag:r}=t,a=n.data.get(s.dataId).values,o=n.data.get(r.dataId).values,i=n.makeTensorInfo(s.shape,"complex64"),l=n.data.get(i.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(s.shape,"float32",a),imag:n.makeTensorInfo(r.shape,"float32",o)},i}var YH={kernelName:ud,backendName:"cpu",kernelFunc:ks};function $m(e,t,n="float32"){if(n==="complex64"){let r=$m(e,t,"float32"),a=$m(e,t,"float32");return ks({inputs:{real:r,imag:a},backend:e})}let s=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,s)}function Br(e){let{inputs:t,backend:n}=e,{x:s}=t;return n.incRef(s.dataId),{dataId:s.dataId,shape:s.shape,dtype:s.dtype}}var JH={kernelName:qa,backendName:"cpu",kernelFunc:Br};function kl(e){let{inputs:t,backend:n}=e,{input:s}=t,r=n.data.get(s.dataId).complexTensorInfos.real,a=n.data.get(r.dataId).values;return n.makeTensorInfo(r.shape,r.dtype,a)}var QH={kernelName:Ad,backendName:"cpu",kernelFunc:kl};function Uo(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{dtype:a}=s;if(a==="complex64"){if(r.dtype==="complex64")return Br({inputs:{x:r},backend:n});let o=$m(n,r.shape,r.dtype),i=Uo({inputs:{x:r},backend:n,attrs:{dtype:"float32"}}),l=ks({inputs:{real:i,imag:o},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(i),l}if(r.dtype==="complex64"){let o=kl({inputs:{input:r},backend:n}),i=Uo({inputs:{x:o},backend:n,attrs:{dtype:a}});return n.disposeIntermediateTensorInfo(o),i}if(!v.hasEncodingLoss(r.dtype,a)){let o=Br({inputs:{x:r},backend:n});return{dataId:o.dataId,shape:o.shape,dtype:a}}if(a==="int32"){let o=n.data.get(r.dataId).values,i=Int32Array.from(o);return n.makeTensorInfo(r.shape,"int32",i)}if(a==="bool"){let o=n.data.get(r.dataId).values,i=v.toTypedArray([0],r.dtype),[l,c]=Qt((u,d)=>u!==d?1:0)(r.shape,[],o,i,"bool");return n.makeTensorInfo(c,"bool",l)}throw new Error(`Error in Cast: failed to cast ${r.dtype} to ${a}`)}var ej={kernelName:$a,backendName:"cpu",kernelFunc:Uo};function vn(e,t,n,s){return n==null?({inputs:r,backend:a})=>{let{a:o,b:i}=r,l=a;Re([o,i],e);let c=l.data.get(o.dataId).values,u=l.data.get(i.dataId).values,d=o.dtype==="string"?N.fromUint8ToStringArray(c):c,p=o.dtype==="string"?N.fromUint8ToStringArray(u):u,h=s||o.dtype,[f,m]=t(o.shape,i.shape,d,p,h);return l.makeTensorInfo(m,h,f)}:({inputs:r,backend:a})=>{let{a:o,b:i}=r,l=a;if(o.dtype==="complex64"||i.dtype==="complex64"){let c=Uo({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),u=l.data.get(c.dataId),d=u.complexTensorInfos.real,p=u.complexTensorInfos.imag,h=l.data.get(d.dataId).values,f=l.data.get(p.dataId).values,m=Uo({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),g=l.data.get(m.dataId),y=g.complexTensorInfos.real,x=g.complexTensorInfos.imag,A=l.data.get(y.dataId).values,b=l.data.get(x.dataId).values,[w,k,I]=n(o.shape,i.shape,h,f,A,b),E=l.makeTensorInfo(I,"float32",w),R=l.makeTensorInfo(I,"float32",k),P=ks({inputs:{real:E,imag:R},backend:l});return l.disposeIntermediateTensorInfo(c),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(E),l.disposeIntermediateTensorInfo(R),P}else{let c=l.data.get(o.dataId).values,u=l.data.get(i.dataId).values,d=s||o.dtype,[p,h]=t(o.shape,i.shape,c,u,d);return l.makeTensorInfo(h,d,p)}}}function ex(e){return(t,n,s,r,a,o)=>{let i=N.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(i),c=i.length,u=v.computeStrides(i),d=v.getTypedArrayFromDType("float32",l),p=v.getTypedArrayFromDType("float32",l),h=N.getBroadcastDims(t,i),f=N.getBroadcastDims(n,i),m=N.mergeRealAndImagArrays(s,r),g=N.mergeRealAndImagArrays(a,o),y=t.length,x=v.computeStrides(t),A=n.length,b=v.computeStrides(n);if(h.length+f.length===0)for(let w=0;wI[_]=0);let E=v.locToIndex(I,y,x),R=k.slice(-A);f.forEach(_=>R[_]=0);let P=v.locToIndex(R,A,b),D=e(m[E*2],m[E*2+1],g[P*2],g[P*2+1]);d[w]=D.real,p[w]=D.imag}return[d,p,i]}}var II=Qt((e,t)=>e+t),tj=ex((e,t,n,s)=>({real:e+n,imag:t+s})),mp=vn(qr,II,tj),nj={kernelName:qr,backendName:"cpu",kernelFunc:mp};function tx(e,t,n,s,r){let a=v.sizeFromShape(s),o=v.makeZerosTypedArray(r,n);for(let i=0;i=r||(a>0?o[l]+=t[i]:o[l]+=1)}return o}function CI(e,t,n,s=!1){let r=e.shape[0],a=e.shape[1],o=ze([r,n],t.dtype);for(let i=0;i=n||(s?o.set(1,i,c):t.size>0?o.set(o.get(i,c)+t.get(i,l),i,c):o.set(o.get(i,c)+1,i,c))}return o}function Go(e){return(t,n,s)=>{let r=v.getTypedArrayFromDType(n,t.length);for(let a=0;a{let{x:o}=s;if(Re(o,e),o.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let i=a,l=i.data.get(o.dataId).values,c=v.sizeFromShape(o.shape),u=n||o.dtype,d=v.getArrayFromDType(u,c);for(let p=0;p{let{x:o}=s;if(Re(o,e),o.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let i=a,l=i.data.get(o.dataId).values,c=n||o.dtype,u=t(l,c,r);return i.makeTensorInfo(o.shape,c,u)}}var TI=Go(e=>Math.ceil(e)),sj=rc(Fa,TI),rj={kernelName:Fa,backendName:"cpu",kernelFunc:sj};function nx(e,t,n,s){let r=v.getArrayFromDType(n,v.sizeFromShape(t));if(s&&n!=="string"){let a=0;e.forEach(o=>{let i=v.sizeFromShape(o.shape);r.set(o.vals,a),a+=i})}else{let a=0;e.forEach(o=>{let i=n==="string"?N.fromUint8ToStringArray(o.vals):o.vals,l=0;for(let c=0;ce===t?1:0),EI=vn(yi,NI,null,"bool"),aj={kernelName:yi,backendName:"cpu",kernelFunc:EI},RI=Go(e=>Math.exp(e)),_I=rc(Va,RI,"float32"),oj={kernelName:Va,backendName:"cpu",kernelFunc:_I},DI=Go(e=>Math.expm1(e)),ij=rc(xi,DI),lj={kernelName:xi,backendName:"cpu",kernelFunc:ij},$I=Go(e=>Math.floor(e)),uj=rc(Ua,$I),cj={kernelName:Ua,backendName:"cpu",kernelFunc:uj};function FI(e,t,n,s,r,a,o,i,l){let c=ze([s,a],n);for(let u=0;u=l/a)throw new Error(`Invalid indices: ${d} does not index into ${i}`);for(let h=0;he>t?1:0),dj=vn(ki,OI,null,"bool"),pj={kernelName:ki,backendName:"cpu",kernelFunc:dj},MI=Qt((e,t)=>e>=t?1:0),hj=vn(ja,MI,null,"bool"),fj={kernelName:ja,backendName:"cpu",kernelFunc:hj},zI=Qt((e,t)=>ee<=t?1:0),yj=vn(Ci,LI,null,"bool"),Aj={kernelName:Ci,backendName:"cpu",kernelFunc:yj};function BI(e,t,n){let s=(t-e)/(n-1),r=v.makeZerosTypedArray(n,"float32");r[0]=e;for(let a=1;aMath.log(e)),xj=rc(Xa,WI),bj={kernelName:Xa,backendName:"cpu",kernelFunc:xj};function VI(e,t,n,s){let r=v.getTypedArrayFromDType(s,v.sizeFromShape(n));for(let a=0;ai)&&(i=c)}r[a]=i}return r}var UI=Qt((e,t)=>Math.max(e,t)),vj=vn(Za,UI),wj={kernelName:Za,backendName:"cpu",kernelFunc:vj},GI=Qt((e,t)=>Math.min(e,t)),kj=vn(eo,GI),Sj={kernelName:eo,backendName:"cpu",kernelFunc:kj},sx=Qt((e,t)=>e*t),Ij=ex((e,t,n,s)=>({real:e*n-t*s,imag:e*s+t*n})),Fm=vn(no,sx,Ij),Cj={kernelName:no,backendName:"cpu",kernelFunc:Fm};function HI(e,t,n){let s=v.createScalarValue(-1,n);return sx([],t,s,e,n)}function Tj(e){let{inputs:t,backend:n}=e,{x:s}=t;Re(s,"neg");let r=n.data.get(s.dataId).values,[a,o]=HI(r,s.shape,s.dtype);return n.makeTensorInfo(o,s.dtype,a)}var Nj={kernelName:Ni,backendName:"cpu",kernelFunc:Tj},jI=Qt((e,t)=>e!==t?1:0),Ej=vn(Ei,jI,null,"bool"),Rj={kernelName:Ei,backendName:"cpu",kernelFunc:Ej};function rx(e,t,n,s,r){let a=t.length,o=v.sizeFromShape(t),i=v.computeStrides(t),l=v.computeStrides(r),c=v.getTypedArrayFromDType(n,v.sizeFromShape(r));for(let u=0;un.disposeIntermediateTensorInfo(x)),n.makeTensorInfo(y,g,f)}var $j={kernelName:Pi,backendName:"cpu",kernelFunc:Dj};function ax(e,t,n,s){let r=e===t,a=e1;if(r||a||o)return v.makeZerosTypedArray(0,s);let i=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(i,s);t1/Math.sqrt(e)),Fj=rc(uo,XI),Pj={kernelName:uo,backendName:"cpu",kernelFunc:Fj},Oj=Go(e=>1/(1+Math.exp(-e))),KI=mt(po,e=>1/(1+Math.exp(-e))),Mj={kernelName:po,backendName:"cpu",kernelFunc:KI};function Pm(e,t,n,s,r){let a=Mt.isSliceContinous(s,t,n),o=v.sizeFromShape(n),i=v.computeStrides(s);if(a){let d=Mt.computeFlatOffset(t,i);return r==="string"?e.slice(d,d+o):e.subarray(d,d+o)}let l=r==="string"?N.fromUint8ToStringArray(e):e,c=ze(s,r,l),u=ze(n,r);for(let d=0;df+t[m]);u.set(c.get(...h),...p)}return r==="string"?N.fromStringArrayToUint8(u.values):u.values}function Sl(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{begin:a,size:o}=s;Re(r,"slice");let[i,l]=Mt.parseSliceParams(r,a,o);Mt.assertParamsValid(r,i,l);let c=n.data.get(r.dataId).values,u=Pm(c,i,l,r.shape,r.dtype);return n.makeTensorInfo(l,r.dtype,u)}var zj={kernelName:Wi,backendName:"cpu",kernelFunc:Sl};function ZI(e,t,n,s,r,a,o){let i=t[0],l=a[0],c=new Array(l),u=new Array(i),d=t[1];if(l===0){if(i!==0)throw new Error(N.getSparseFillEmptyRowsIndicesDenseShapeMismatch(i));let g=v.getArrayFromDType(n,0),y=v.getArrayFromDType(r,0);return[g,[0,d],y,c,u]}let p=!0,h=0,f=new Array(l).fill(0);for(let g=0;g=l)throw new Error(N.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(g,y,l));++f[y],p=p&&y>=h,h=y}let m=!0;for(let g=0;g0&&(f[g]+=f[g-1])}if(m&&p){let g=e,y=s;for(let x=0;x0){h[p-1]=1;for(let g=p-2;g>=0;--g)h[g]=h[g+1]*s[g+1]}let f=[];if(i>0){f[i-1]=1;for(let g=i-2;g>=0;--g)f[g]=f[g+1]*l[g+1]}let m=v.getArrayFromDType(n,o*i);for(let g=0;g0?r[i-1]+1:0;if(d<0)throw new Error(N.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());let p=t.slice();p[0]=d;let h=p.reduce((A,b)=>A*b,1),f=v.getArrayFromDType(n,h);if(i===0)return d>0&&f.fill(o),[f,p];if(d<=0)throw new Error(N.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());let m=0,g=1,y=0,x=r[m];for(;;){let A=0;if(g=A)throw new Error(N.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage())}if(x<0||x>=d)throw new Error(N.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(x,d));x>y&&f.fill(o,y*c,x*c);for(let b=m;b=l[0])throw new Error(N.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(b,s[b],l[0]));for(let k=0;ki)break}return yMath.sqrt(e)),Bj=mt(ho,e=>Math.sqrt(e)),Wj={kernelName:ho,backendName:"cpu",kernelFunc:Bj},JI=Qt((e,t)=>{let n=e-t;return n*n}),Vj=vn(go,JI),Uj={kernelName:go,backendName:"cpu",kernelFunc:Vj};function QI(e,t,n,s){let r=ze(e,t.dtype);for(let a=0;a0?0:o-i),p=0;p+=l*this.leftPad.length;for(let y=0;yy.forEach(x=>f[m++]=x);for(let y=0;y0){g(e[d+u-1]);for(let y=0;y0){let i=t[0];if(i!==0)throw new Error(`First split value must be 0, got ${i}`);for(let l=1;l=i;if(c=c&&t[l]<=n,!c)throw new Error(`Invalid split value ${t[l]}, must be in [${i}, ${n}]`);i=t[l]}if(i!==n)throw new Error(`Last split value must be data size. Expected ${n}, got ${i}`)}let r=s-1,a=v.getArrayFromDType("int32",s);if(n===0||s===0){let i=new Array(n);for(let l=0;l<=r;++l)a[l]=0;return[i,a]}a[0]=0;for(let i=1;i<=r;++i){let l=t[i]-t[i-1],c=0;this.nGramWidths.forEach(u=>{c+=this.getNumNGrams(l,u)}),this.preserveShort&&l>0&&c===0&&(c=1),a[i]=a[i-1]+c}let o=new Array(a[r]);for(let i=0;i{let d=t[i+1]-t[i],p=this.getNumNGrams(d,u);this.createNGrams(e,l,o,c,p,u),c+=p}),this.preserveShort&&c===a[i]){let u=t[i+1]-t[i];if(u===0)continue;let d=u+2*this.padWidth,p=1;this.createNGrams(e,l,o,c,p,d)}}return[o,a]}};function e7(e,t,n,s,r,a,o,i){return new Gj(n,s,r,a,o,i).compute(e,t)}function Hj(e,t,n,s){if(!e.length)return;if(t.length===0){for(let a=0;ae-t),jj=ex((e,t,n,s)=>({real:e-n,imag:t-s})),ix=vn(yo,s7,jj),qj={kernelName:yo,backendName:"cpu",kernelFunc:ix};function r7(e,t){let n=new Array(e.rank);for(let r=0;r{let n=t.value-e.value;return n===0?e.index-t.index:n};function a7(e,t,n=0,s=e.length-1){for(;s>n;){if(s-n>600){let i=s-n+1,l=t-n+1,c=Math.log(i),u=.5*Math.exp(2*c/3),d=.5*Math.sqrt(c*u*(i-u)/i)*Math.sign(l-i/2),p=Math.max(n,Math.floor(t-l*u/i+d)),h=Math.min(s,Math.floor(t+(i-l)*u/i+d));a7(e,t,p,h)}let r=e[t],a=n,o=s;for(v.swap(e,n,t),gp(e[s],r)>0&&v.swap(e,n,s);a0;)o=o-1}gp(e[n],r)===0?v.swap(e,n,o):(o=o+1,v.swap(e,o,s)),o<=t&&(n=o+1),t<=o&&(s=o-1)}}function o7(e,t,n,s,r){let a=t[t.length-1],[o,i]=[e.length/a,a],l=v.getTypedArrayFromDType(n,o*s),c=v.getTypedArrayFromDType("int32",o*s);for(let d=0;df[A]={value:x,index:A}),s{for(let g=0;gnew QA,1);var l7=mt(Wa,e=>e>=0?e:Math.exp(e)-1),Kj={kernelName:Wa,backendName:"cpu",kernelFunc:l7};function u7(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{alpha:a}=s;Re([r],"leakyRelu");let o=v.sizeFromShape(r.shape),i=n.data.get(r.dataId).values,l=v.getTypedArrayFromDType("float32",o);for(let c=0;ce<0?t*e:e);function c7(e){let{inputs:t,backend:n}=e,{x:s,alpha:r}=t;Re([s,r],"prelu");let a=n.data.get(s.dataId).values,o=n.data.get(r.dataId).values,[i,l]=Yj(s.shape,r.shape,a,o,"float32");return n.makeTensorInfo(l,"float32",i)}var Jj={kernelName:ao,backendName:"cpu",kernelFunc:c7},d7=mt(oo,e=>Math.max(0,e)),Qj={kernelName:oo,backendName:"cpu",kernelFunc:d7},p7=mt(lo,e=>Math.min(Math.max(0,e),6)),eq={kernelName:lo,backendName:"cpu",kernelFunc:p7};function lx(e,t,n,s,r){if(n==="linear")return Br({inputs:{x:t},backend:e});if(n==="relu")return d7({inputs:{x:t},backend:e});if(n==="elu")return l7({inputs:{x:t},backend:e});if(n==="relu6")return p7({inputs:{x:t},backend:e});if(n==="prelu")return c7({inputs:{x:t,alpha:s},backend:e});if(n==="leakyrelu")return u7({inputs:{x:t},backend:e,attrs:{alpha:r}});if(n==="sigmoid")return KI({inputs:{x:t},backend:e});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function Pt(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{shape:a}=s,o=v.sizeFromShape(r.shape),i=v.inferFromImplicitShape(a,o),l=v.sizeFromShape(i);v.assert(o===l,()=>`The new shape (${i}) has ${l} elements and the old shape (${r.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`),n.incRef(r.dataId);let c=n.data.get(r.dataId);if(c.complexTensorInfos!=null){let u=c.complexTensorInfos.real,d=c.complexTensorInfos.imag;u.shape=i,d.shape=i}return{dataId:r.dataId,shape:i,dtype:r.dtype}}var tq={kernelName:Oi,backendName:"cpu",kernelFunc:Pt};function h7(e){let{inputs:t,backend:n,attrs:s}=e,{a:r,b:a}=t,{transposeA:o,transposeB:i}=s;Re([r,a],"matMul");let l=r.shape.length,c=a.shape.length,u=o?r.shape[l-2]:r.shape[l-1],d=i?a.shape[c-1]:a.shape[c-2],p=o?r.shape[l-1]:r.shape[l-2],h=i?a.shape[c-2]:a.shape[c-1],f=r.shape.slice(0,-2),m=a.shape.slice(0,-2),g=v.sizeFromShape(f),y=v.sizeFromShape(m),A=sl.assertAndGetBroadcastShape(r.shape.slice(0,-2),a.shape.slice(0,-2)).concat([p,h]);v.assert(u===d,()=>`Error in matMul: inner shapes (${u}) and (${d}) of Tensors with shapes ${r.shape} and ${a.shape} and transposeA=${o} and transposeB=${i} must match.`);let b=o?[g,u,p]:[g,p,u],w=i?[y,h,d]:[y,d,h],k=Pt({inputs:{x:r},backend:n,attrs:{shape:b}}),I=Pt({inputs:{x:a},backend:n,attrs:{shape:w}}),E=o?k.shape[1]:k.shape[2],R=o?k.shape[2]:k.shape[1],P=i?I.shape[1]:I.shape[2],D=Math.max(g,y),_=n.data.get(k.dataId).values,T=n.data.get(I.dataId).values,O=v.computeStrides(k.shape),W=v.computeStrides(I.shape),[X,z,j]=o?[O[0],1,O[1]]:[O[0],O[1],1],[Z,Q,ne]=i?[1,W[1],W[0]]:[W[1],1,W[0]],ae=R*P,U=ze([D,R,P],k.dtype),oe=U.values,re=n.blockSize;for(let me=0;meMath.acos(e)),oq={kernelName:ou,backendName:"cpu",kernelFunc:aq},iq=mt(iu,e=>Math.acosh(e)),lq={kernelName:iu,backendName:"cpu",kernelFunc:iq};function uq(e){let{inputs:t,backend:n}=e,s=t;Re(t,"addN");let r=s.map(i=>n.data.get(i.dataId).values),a=ze(s[0].shape,s[0].dtype),o=a.values;for(let i=0;ix&&(x=w,A=b)}h[g]=A}return c.forEach(g=>n.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var gq={kernelName:Ra,backendName:"cpu",kernelFunc:mq};function yq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a}=s;Re(r,"argMin");let o=v.parseAxisParam(a,r.shape),i=N.getAxesPermutation(o,r.shape.length),l=r,c=[];i!=null&&(l=Ws({inputs:{x:r},backend:n,attrs:{perm:i}}),c.push(l),o=N.getInnerMostAxes(o.length,l.shape.length)),o=[o[0]],N.assertAxesAreInnerMostDims("argMin",o,l.shape.length);let[u,d]=N.computeOutAndReduceShapes(l.shape,o),p=v.sizeFromShape(u),h=v.makeZerosTypedArray(p,"int32"),f=v.sizeFromShape(d),m=n.data.get(l.dataId).values;for(let g=0;gn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var Aq={kernelName:cu,backendName:"cpu",kernelFunc:yq},xq=mt(du,e=>Math.asin(e)),bq={kernelName:du,backendName:"cpu",kernelFunc:xq},vq=mt(pu,e=>Math.asinh(e)),wq={kernelName:pu,backendName:"cpu",kernelFunc:vq},kq=mt(hu,e=>Math.atan(e)),Sq={kernelName:hu,backendName:"cpu",kernelFunc:kq},Iq=Qt((e,t)=>Math.atan2(e,t)),Cq=vn(mu,Iq),Tq={kernelName:mu,backendName:"cpu",kernelFunc:Cq},Nq=mt(fu,e=>Math.atanh(e)),Eq={kernelName:fu,backendName:"cpu",kernelFunc:Nq};function ux(e,t,n,s,r,a){let o=r.strideHeight,i=r.strideWidth,l=r.dilationHeight,c=r.dilationWidth,u=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,h=r.padInfo.left,f=a==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=ze(r.outShape,n),g=m.values,y=r.outShape[1]*r.outShape[2]*r.outShape[3],x=r.outShape[2]*r.outShape[3],A=r.outShape[3];for(let b=0;bz?z=re:a==="avg"&&(j+=re,Z++)}if(isNaN(z))break}let Q=_+T*A+I;g[Q]=a==="avg"?j/Z:z}}}return m}function f7(e,t,n,s,r=!1,a=!1){let o=ze(s.outShape,"int32"),i=s.strideHeight,l=s.strideWidth,c=s.dilationHeight,u=s.dilationWidth,d=s.effectiveFilterHeight,p=s.effectiveFilterWidth,h=s.padInfo.top,f=s.padInfo.left,m=ze(t,n,e);for(let g=0;gP&&(P=X,r?D=a?((g*s.inHeight+_)*s.inWidth+O)*s.inChannels+y:(_*s.inWidth+O)*s.inChannels+y:D=T*p+W)}}o.set(D,g,x,k,y)}}return o}function m7(e,t,n,s,r,a){let o=r.strideDepth,i=r.strideHeight,l=r.strideWidth,c=r.dilationDepth,u=r.dilationHeight,d=r.dilationWidth,p=r.effectiveFilterDepth,h=r.effectiveFilterHeight,f=r.effectiveFilterWidth,m=r.padInfo.front,g=r.padInfo.top,y=r.padInfo.left,x=a==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,A=ze(r.outShape,n),b=A.values,w=r.outShape[1]*r.outShape[2]*r.outShape[3]*r.outShape[4],k=r.outShape[2]*r.outShape[3]*r.outShape[4],I=r.outShape[3]*r.outShape[4],E=r.outShape[4];for(let R=0;RTe?Te=_t:a==="avg"&&(Ne+=_t,Fe++),isNaN(Te))break}if(isNaN(Te))break}if(isNaN(Te))break}let Ue=Ae+_;b[Ue]=a==="avg"?Ne/Fe:Te}}}}return A}function Rq(e,t){let n=ze(t.outShape,"int32"),s=t.strideDepth,r=t.strideHeight,a=t.strideWidth,o=t.dilationDepth,i=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,u=t.effectiveFilterHeight,d=t.effectiveFilterWidth,p=t.padInfo.front,h=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=T&&(T=ne,O=X*u*d+j*u+Q)}}}n.set(O,m,y,w,R,g)}}}return n}function _q(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t;Re(r,"avgPool");let{filterSize:a,strides:o,pad:i,dimRoundingMode:l}=s,c=1;v.assert(N.eitherStridesOrDilationsAreOne(o,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${o} and dilations '${c}'`);let u=N.computePool2DInfo(r.shape,a,o,c,i,l),d;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))d=Br({inputs:{x:r},backend:n});else{let p=n.data.get(r.dataId).values,h=v.computeStrides(r.shape),f=ux(p,r.shape,r.dtype,h,u,"avg");d=n.makeTensorInfo(u.outShape,r.dtype,f.values)}return d}var Dq={kernelName:_a,backendName:"cpu",kernelFunc:_q};function $q(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{filterSize:a,strides:o,pad:i,dimRoundingMode:l,dataFormat:c}=s;Re(r,"avgPool3d");let u=N.computePool3DInfo(r.shape,a,o,1,i,l,c),d=n.data.get(r.dataId).values,p=m7(d,r.shape,r.dtype,v.computeStrides(r.shape),u,"avg");return n.makeTensorInfo(p.shape,"float32",p.values)}var Fq={kernelName:ld,backendName:"cpu",kernelFunc:$q};function Pq(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a}=t,{filterSize:o,strides:i,pad:l,dimRoundingMode:c}=s;Re([r,a],"avgPool3DGrad");let u=N.computePool3DInfo(a.shape,o,i,1,l,c),d=u.strideDepth,p=u.strideHeight,h=u.strideWidth,f=u.filterDepth,m=u.filterHeight,g=u.filterWidth,y=u.dilationDepth,x=u.dilationHeight,A=u.dilationWidth,b=u.effectiveFilterDepth,w=u.effectiveFilterHeight,k=u.effectiveFilterWidth,I=b-1-u.padInfo.front,E=k-1-u.padInfo.left,R=w-1-u.padInfo.top,P=ze(a.shape,"float32"),D=1/(f*m*g),_=n.bufferSync(r);for(let T=0;T=u.outDepth||Math.floor(U)!==U))for(let oe=0;oe=u.outHeight||Math.floor(re)!==re))for(let me=0;me=u.outWidth||Math.floor(Ae)!==Ae)continue;ne+=_.get(T,U,re,Ae,O)}}}P.set(ne*D,T,W,X,z,O)}return n.makeTensorInfo(P.shape,P.dtype,P.values)}var Oq={kernelName:Dh,backendName:"cpu",kernelFunc:Pq};function Mq(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a}=t,o=a;Re([r,a],"avgPoolGrad");let{filterSize:i,strides:l,pad:c}=s,u=N.computePool2DInfo(o.shape,i,l,1,c),d=u.strideHeight,p=u.strideWidth,h=u.filterHeight,f=u.filterWidth,m=u.dilationHeight,g=u.dilationWidth,y=u.effectiveFilterHeight,x=u.effectiveFilterWidth,A=x-1-u.padInfo.left,b=y-1-u.padInfo.top,w=ze(o.shape,"float32"),k=1/(h*f),I=n.data.get(r.dataId).values,E=ze(r.shape,"float32",I);for(let R=0;R=u.outHeight||Math.floor(z)!==z))for(let j=0;j=u.outWidth||Math.floor(Z)!==Z)continue;W+=E.get(R,z,Z,P)}}w.set(W*k,R,D,_,P)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var zq={kernelName:_h,backendName:"cpu",kernelFunc:Mq};function Lq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,scale:a,offset:o,mean:i,variance:l}=t;v.assert(i.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(o==null||i.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(a==null||i.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),Re([r,i,l,a,o],"batchNorm");let{varianceEpsilon:c}=s;c==null&&(c=.001);let u=n.data.get(r.dataId).values,d=n.data.get(i.dataId).values,p=n.data.get(l.dataId).values,h=a?n.data.get(a.dataId).values:new Float32Array([1]),f=o?n.data.get(o.dataId).values:new Float32Array([0]),m=new Float32Array(u.length),g=f.length,y=h.length,x=p.length,A=d.length,b=0,w=0,k=0,I=0;for(let E=0;E=g&&(b=0),w>=A&&(w=0),k>=y&&(k=0),I>=x&&(I=0);return n.makeTensorInfo(r.shape,r.dtype,m)}var Bq={kernelName:Ha,backendName:"cpu",kernelFunc:Lq};function Wq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{blockShape:a,crops:o}=s;Re([r],"batchToSpaceND");let i=a.reduce((y,x)=>y*x),l=N.getReshaped(r.shape,a,i),c=N.getPermuted(l.length,a.length),u=N.getReshapedPermuted(r.shape,a,i),d=N.getSliceBeginCoords(o,a.length),p=N.getSliceSize(u,o,a.length),h=Pt({inputs:{x:r},backend:n,attrs:{shape:l}}),f=Ws({inputs:{x:h},backend:n,attrs:{perm:c}}),m=Pt({inputs:{x:f},backend:n,attrs:{shape:u}}),g=Sl({inputs:{x:m},backend:n,attrs:{begin:d,size:p}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),g}var Vq={kernelName:pi,backendName:"cpu",kernelFunc:Wq};function Uq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,weights:a}=t,{size:o}=s,i=n.data.get(r.dataId).values,l=n.data.get(a.dataId).values,c=tx(i,l,a.dtype,a.shape,o);return n.makeTensorInfo([o],a.dtype,c)}var Gq={kernelName:$h,backendName:"cpu",kernelFunc:Uq};function Hq(e){let{inputs:t,backend:n}=e,{s0:s,s1:r}=t,a=n.data.get(s.dataId).values,o=n.data.get(r.dataId).values,i=N.assertAndGetBroadcastShape(Array.from(a),Array.from(o));return n.makeTensorInfo([i.length],"int32",Int32Array.from(i))}var jq={kernelName:Fh,backendName:"cpu",kernelFunc:Hq},qq=mt(Xr,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,s=new Float32Array(v.sizeFromShape(t.shape)),r=n.data.get(t.dataId),a=r.complexTensorInfos.real,o=r.complexTensorInfos.imag,i=n.data.get(a.dataId).values,l=n.data.get(o.dataId).values;for(let c=0;cm.shape),a);if(v.sizeFromShape(o)===0)return n.makeTensorInfo(o,t[0].dtype,[]);let i=t.filter(m=>v.sizeFromShape(m.shape)>0);if(i.length===1)return Br({inputs:{x:i[0]},backend:n});let l=i.map(m=>m.shape);if(N.assertParamsConsistent(l,a),i[0].dtype==="complex64"){let m=i.map(b=>kl({inputs:{input:b},backend:n})),g=i.map(b=>ac({inputs:{input:b},backend:n})),y=oc({inputs:m,backend:n,attrs:{axis:a}}),x=oc({inputs:g,backend:n,attrs:{axis:a}}),A=ks({inputs:{real:y,imag:x},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),g.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(x),A}let c=i.map(m=>{let g=v.sizeFromShape(m.shape.slice(a));return Pt({inputs:{x:m},backend:n,attrs:{shape:[-1,g]}})}),u=c.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));o=N.computeOutShape(c.map(m=>m.shape),1);let d=c[0].shape[0]===1,p=nx(u,o,t[0].dtype,d),h=N.computeOutShape(i.map(m=>m.shape),a),f=n.makeTensorInfo(h,t[0].dtype,p);return c.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var Jq={kernelName:hi,backendName:"cpu",kernelFunc:oc};function g7(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,filter:a}=t,{strides:o,pad:i,dataFormat:l,dilations:c,dimRoundingMode:u}=s;Re([r,a],"conv2d");let d=N.convertConv2DDataFormat(l),p=N.computeConv2DInfo(r.shape,a.shape,o,c,i,u,!1,d),h=p.filterHeight,f=p.filterWidth,m=p.dilationHeight,g=p.dilationWidth,y=p.padInfo.left,x=p.padInfo.top,A=p.dataFormat==="channelsLast",b=new sn(p.outShape,r.dtype),w=v.computeStrides(r.shape),k=v.computeStrides(a.shape),I=w[0],E=A?w[1]:w[2],R=A?w[2]:1,P=A?1:w[1],D=b.strides[0],_=A?b.strides[1]:b.strides[2],T=A?b.strides[2]:1,O=A?1:b.strides[1],W=n.data.get(r.dataId).values,X=n.data.get(a.dataId).values,z=b.values;for(let j=0;j=p.inHeight)continue;let me=oe*k[0],Ae=Z+re*E;for(let Te=0;Te=p.inWidth)continue;let Je=me+Ue*k[1],Ze=Ae+ot*R,gt=Je;for(let it=0;it=c.inDepth)continue;let j=X*R[0],Z=D+z*E[1];for(let Q=0;Q=c.inHeight)continue;let re=j+U*R[1],me=Z+oe*E[2];for(let Ae=0;Ae=c.inWidth)continue;let ot=re+Fe*R[2],Je=me+Ue*c.inChannels,Ze=ot;for(let gt=0;gtMath.cos(e)),dX={kernelName:Ma,backendName:"cpu",kernelFunc:cX},pX=mt(za,e=>Math.cosh(e)),hX={kernelName:za,backendName:"cpu",kernelFunc:pX};function fX(e){let{inputs:t,backend:n,attrs:s}=e,{image:r,boxes:a,boxInd:o}=t,{cropSize:i,method:l,extrapolationValue:c}=s,[u,d,p,h]=r.shape,f=a.shape[0],[m,g]=i,y=ze([f,m,g,h],"float32"),x=n.data.get(a.dataId).values,A=n.data.get(o.dataId).values,b=n.data.get(r.dataId).values,w=v.computeStrides(r.shape),k=v.computeStrides(y.shape);for(let I=0;I=u)continue;let O=m>1?(D-R)*(d-1)/(m-1):0,W=g>1?(_-P)*(p-1)/(g-1):0;for(let X=0;X1?R*(d-1)+X*O:.5*(R+D)*(d-1);if(z<0||z>d-1){for(let j=0;j1?P*(p-1)+ne*W:.5*(P+_)*(p-1);if(ae<0||ae>p-1){for(let me=0;me1?P*(p-1)+j*W:.5*(P+_)*(p-1);if(Z<0||Z>p-1){for(let ae=0;aey+f-x-1:(y,x)=>y+x;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${o}`);let i=r.shape[0],l=r.shape[1],c=r.shape[2],u=r.shape[3],d=l*a,p=c*a,h=u/(a*a),f=n.data.get(r.dataId).values,m=new Float32Array(i*d*p*h),g=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${o} and dilations '${p}'`);let h=N.computeConv2DInfo(r.shape,a.shape,o,p,i,c,!0),{filterHeight:f,filterWidth:m,dilationHeight:g,dilationWidth:y,padInfo:x}=h,A=x.left,b=x.top,w=h.outChannels/h.inChannels,k=new sn(h.outShape,r.dtype),I=n.data.get(r.dataId).values,E=n.data.get(a.dataId).values,R=k.values;for(let P=0;P=h.inHeight)continue;let j=X*d[0],Z=D+z*u[1];for(let Q=0;Q=h.inWidth)continue;let re=j+U*d[1],me=Z+oe*h.inChannels,Ae=ne,Te=re;for(let Ne=0;Ne{let{x:s,filter:r}=e,{strides:a,pad:o,dilations:i}=n,l=t,c=l.data.get(s.dataId).values,u=s.shape.length,d=l.data.get(r.dataId).values,p=r.shape.length,{batchSize:h,inHeight:f,inWidth:m,inChannels:g,outHeight:y,outWidth:x,padInfo:A,strideHeight:b,strideWidth:w,filterHeight:k,filterWidth:I,dilationHeight:E,dilationWidth:R,outShape:P}=N.computeDilation2DInfo(s.shape,r.shape,a,o,"NHWC",i),D=v.sizeFromShape(P),_=P.length,T=v.getArrayFromDType(s.dtype,D);for(let W=0;W=0&&oe=0&&mene&&(ne=Ne)}}}let ae=v.locToIndex([W,X,j,Q],_,v.computeStrides(P));T[ae]=ne}}}return{dataId:l.write(v.toTypedArray(T,s.dtype),P,s.dtype),shape:P,dtype:s.dtype}}},RX={kernelName:Uh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:s,filter:r,dy:a}=e,{strides:o,pad:i,dilations:l}=n,c=t,u=v.toNestedArray(s.shape,c.data.get(s.dataId).values),d=v.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:p,inHeight:h,inWidth:f,inChannels:m,outHeight:g,outWidth:y,padInfo:x,strideHeight:A,strideWidth:b,filterHeight:w,filterWidth:k,dilationHeight:I,dilationWidth:E,outShape:R}=N.computeDilation2DInfo(s.shape,r.shape,o,i,"NHWC",l);v.assert(a.rank===R.length,()=>`Error in ${Uh}, dy must have the same rank as output ${R.length}, but got ${a.rank}`);let P=v.toNestedArray(R,c.data.get(a.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let T=0;T=0&&U=0&&reZ&&(Z=me,Q=ae,ne=oe)}}}D[Q][ne][j]+=P[T][O][X][j]}}}return{dataId:c.write(v.toTypedArray(D,s.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},_X={kernelName:Vh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:s,filter:r,dy:a}=e,{strides:o,pad:i,dilations:l}=n,c=t,u=v.toNestedArray(s.shape,c.data.get(s.dataId).values),d=v.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:p,inHeight:h,inWidth:f,inChannels:m,outHeight:g,outWidth:y,padInfo:x,strideHeight:A,strideWidth:b,filterHeight:w,filterWidth:k,dilationHeight:I,dilationWidth:E,outShape:R}=N.computeDilation2DInfo(s.shape,r.shape,o,i,"NHWC",l);v.assert(a.rank===R.length,()=>`Error in ${Vh}, dy must have the same rank as output ${R.length}, but got ${a.rank}`);let P=v.toNestedArray(R,c.data.get(a.dataId).values),D=v.makeZerosNestedTypedArray(s.shape,s.dtype);for(let T=0;T=0&&U=0&&reZ&&(Z=me,Q=U,ne=re)}}}D[T][Q][ne][j]+=P[T][O][X][j]}}}return{dataId:c.write(v.toTypedArray(D,s.dtype),s.shape,s.dtype),shape:s.shape,dtype:s.dtype}}};function yp(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a,keepDims:o}=s;Re(r,"sum");let i;r.dtype==="bool"?i=Uo({inputs:{x:r},backend:n,attrs:{dtype:"int32"}}):i=Br({inputs:{x:r},backend:n});let l=i.shape.length,c=v.parseAxisParam(a,i.shape),u=N.getAxesPermutation(c,l),d=c,p=i;u!=null&&(p=Ws({inputs:{x:i},backend:n,attrs:{perm:u}}),d=N.getInnerMostAxes(d.length,l)),N.assertAxesAreInnerMostDims("sum",d,p.shape.length);let[h,f]=N.computeOutAndReduceShapes(p.shape,d),m=N.upcastType(p.dtype,"int32"),g=$m(n,h,m),y=v.sizeFromShape(f),x=n.data.get(g.dataId).values,A=n.data.get(p.dataId).values;for(let b=0;b=0&&(p=yp({inputs:{x:p},backend:n,attrs:{axis:c[m]-(o.length-h),keepDims:!1}}),f.push(p)),h--)}for(let m of f)m!==p&&n.disposeIntermediateTensorInfo(m);return p}var FX={kernelName:hd,backendName:"cpu",kernelFunc:$X};function PX(e){let{inputs:t,backend:n}=e,{dy:s,y:r}=t;Re([s,r],"eluGrad");let a=new Float32Array(v.sizeFromShape(r.shape)),o=n.data.get(r.dataId).values,i=n.data.get(s.dataId).values;for(let l=0;l=1?a[l]=i[l]:a[l]=i[l]*(c+1)}return n.makeTensorInfo(r.shape,"float32",a)}var OX={kernelName:Gh,backendName:"cpu",kernelFunc:PX},MX=N.ERF_P,zX=N.ERF_A1,LX=N.ERF_A2,BX=N.ERF_A3,WX=N.ERF_A4,VX=N.ERF_A5,UX=mt(gu,e=>{let t=Math.sign(e),n=Math.abs(e),s=1/(1+MX*n);return t*(1-((((VX*s+WX)*s+BX)*s+LX)*s+zX)*s*Math.exp(-n*n))}),GX={kernelName:gu,backendName:"cpu",kernelFunc:UX};function Om(e){let{inputs:t,backend:n,attrs:s}=e,{input:r}=t,{dim:a}=s,o=r.shape.length,i=r.shape.slice(),l=a;return a<0&&(v.assert(-(o+1)<=a,()=>`Axis must be in the interval [${-(o+1)}, ${o}]`),l=o+a+1),i.splice(l,0,1),Pt({inputs:{x:r},backend:n,attrs:{shape:i}})}var HX={kernelName:Ai,backendName:"cpu",kernelFunc:Om},jX=Qt((e,t)=>e/t),cx=vn(Ba,jX),dx={kernelName:Ba,backendName:"cpu",kernelFunc:cx};function A7(e,t,n){let s=e.shape,r=s[0],a=s[1],o=n.data.get(e.dataId),i=o.complexTensorInfos.real,l=o.complexTensorInfos.imag,c=[r,a],u=v.sizeFromShape(c),d=v.getTypedArrayFromDType("float32",u),p=v.getTypedArrayFromDType("float32",u);for(let g=0;g{let{image:s}=e,r=n,a=v.getTypedArrayFromDType(s.dtype,v.sizeFromShape(s.shape)),[o,i,l,c]=s.shape,u=r.data.get(s.dataId).values;for(let p=0;p=0&&AMath.floor(e/t)),nK=vn(Ga,tK,null,"int32"),sK={kernelName:Ga,backendName:"cpu",kernelFunc:nK};function rK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,filter:a,bias:o,preluActivationWeights:i}=t,{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p,activation:h,leakyreluAlpha:f}=s,m=g7({inputs:{x:r,filter:a},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p}});if(o){let g=m;m=mp({inputs:{a:m,b:o},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=m;m=lx(n,m,h,i,f),n.disposeIntermediateTensorInfo(g)}return m}var aK={kernelName:wo,backendName:"cpu",kernelFunc:rK};function oK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,filter:a,bias:o,preluActivationWeights:i}=t,{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p,activation:h,leakyreluAlpha:f}=s,m=y7({inputs:{x:r,filter:a},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p}});if(o){let g=m;m=mp({inputs:{a:m,b:o},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=m;m=lx(n,m,h,i,f),n.disposeIntermediateTensorInfo(g)}return m}var iK={kernelName:ko,backendName:"cpu",kernelFunc:oK};function lK(e){let{inputs:t,backend:n}=e,{params:s,indices:r}=t,a=v.sizeFromShape(s.shape),o=r.shape,i=o[o.length-1],[l,c,u,d]=N.prepareAndValidate(s,r);if(c===0)return n.makeTensorInfo(l,s.dtype,[]);let p=n.data.get(r.dataId).values,h=n.bufferSync(s),f=FI(p,h,s.dtype,c,i,u,d,s.shape,a);return n.makeTensorInfo(l,s.dtype,f.values)}var uK={kernelName:wi,backendName:"cpu",kernelFunc:lK};function cK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,indices:a}=t,{axis:o,batchDims:i}=s;Re([r,a],"gatherV2");let l=v.parseAxisParam(o,r.shape)[0],c=n.data.get(a.dataId).values,u=r.shape[l];for(let b=0;b=0,()=>`GatherV2: the index value ${w} is not in [0, ${u-1}]`)}let d=i;i==null&&(d=0);let p=v.sizeFromShape(a.shape),h=N.segment_util.collectGatherOpShapeInfo(r,a,l,d),f=Pt({inputs:{x:r},backend:n,attrs:{shape:[h.batchSize,h.outerSize,h.dimSize,h.sliceSize]}}),m=Pt({inputs:{x:a},backend:n,attrs:{shape:[h.batchSize,p/h.batchSize]}}),g=[h.batchSize,h.outerSize,p/h.batchSize,h.sliceSize],y=n.bufferSync(m),x=n.bufferSync(f),A=PI(x,y,g);return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),n.makeTensorInfo(h.outputShape,A.dtype,A.values)}var dK={kernelName:vi,backendName:"cpu",kernelFunc:cK};function pK(e){let{inputs:t,backend:n}=e,{input:s}=t,r=v.sizeFromShape(s.shape),a=s.shape[s.shape.length-1],o=r/a,i=Pt({inputs:{x:s},backend:n,attrs:{shape:[o,a]}}),l=A7(i,!0,n),c=Pt({inputs:{x:l},backend:n,attrs:{shape:s.shape}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),c}var hK={kernelName:jh,backendName:"cpu",kernelFunc:pK},fK=mt(Au,e=>Number.isFinite(e)?1:0,"bool"),mK={kernelName:Au,backendName:"cpu",kernelFunc:fK},gK=mt(xu,e=>Math.abs(e)===1/0?1:0,"bool"),yK={kernelName:xu,backendName:"cpu",kernelFunc:gK},AK=mt(bu,e=>Number.isNaN(e)?1:0,"bool"),xK={kernelName:bu,backendName:"cpu",kernelFunc:AK};function bK(e){let{backend:t,attrs:n}=e,{start:s,stop:r,num:a}=n,o=BI(s,r,a);return t.makeTensorInfo([o.length],"float32",o)}var vK={kernelName:qh,backendName:"cpu",kernelFunc:bK},wK=mt(vu,e=>Math.log1p(e)),kK={kernelName:vu,backendName:"cpu",kernelFunc:wK},SK=Qt((e,t)=>e&&t),IK=vn(Ti,SK,null,"bool"),CK={kernelName:Ti,backendName:"cpu",kernelFunc:IK},TK=mt(wu,e=>e?0:1,"bool"),NK={kernelName:wu,backendName:"cpu",kernelFunc:TK},EK=Qt((e,t)=>e||t),RK=vn(md,EK,null,"bool"),_K={kernelName:md,backendName:"cpu",kernelFunc:RK};function DK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{depthRadius:a,bias:o,alpha:i,beta:l}=s;Re(r,"LRN");let c=r.shape[3],u=c-1,d=n.data.get(r.dataId).values,p=v.sizeFromShape(r.shape),h=new Float32Array(p);function f(m){let g=m%c,y=m-g+Math.max(0,g-a),x=m-g+Math.min(g+a,u),A=0;for(;y<=x;y++){let b=d[y];A+=b*b}return A}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${o} and dilations '${c}'`);let u=N.computePool2DInfo(r.shape,a,o,c,i,l),d;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))d=Br({inputs:{x:r},backend:n});else{let p=n.data.get(r.dataId).values,h=v.computeStrides(r.shape),f=ux(p,r.shape,r.dtype,h,u,"max");d=n.makeTensorInfo(u.outShape,r.dtype,f.values)}return d}var zK={kernelName:Ya,backendName:"cpu",kernelFunc:MK};function LK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{filterSize:a,strides:o,pad:i,dimRoundingMode:l,dataFormat:c}=s;Re(r,"maxPool3d");let u=N.computePool3DInfo(r.shape,a,o,1,i,l,c),d=n.data.get(r.dataId).values,p=m7(d,r.shape,r.dtype,v.computeStrides(r.shape),u,"max");return n.makeTensorInfo(p.shape,"float32",p.values)}var BK={kernelName:yd,backendName:"cpu",kernelFunc:LK};function WK(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a}=t,{filterSize:o,strides:i,pad:l,dimRoundingMode:c}=s;Re([r,a],"maxPool3DGrad");let u=N.computePool3DInfo(a.shape,o,i,1,l,c),d=n.bufferSync(a),p=Rq(d,u),h=u.strideDepth,f=u.strideHeight,m=u.strideWidth,g=u.dilationDepth,y=u.dilationHeight,x=u.dilationWidth,A=u.effectiveFilterDepth,b=u.effectiveFilterHeight,w=u.effectiveFilterWidth,k=A-1-u.padInfo.front,I=w-1-u.padInfo.left,E=b-1-u.padInfo.top,R=ze(a.shape,"float32"),P=n.bufferSync(r);for(let D=0;D=u.outDepth||Math.floor(ne)!==ne))for(let ae=0;ae=u.outHeight||Math.floor(U)!==U))for(let oe=0;oe=u.outWidth||Math.floor(re)!==re)continue;let me=A*b*w-1-p.get(D,ne,U,re,_),Ae=Q*b*w+ae*w+oe,Te=me===Ae?1:0;if(Te===0)continue;Z+=P.get(D,ne,U,re,_)*Te}}}R.set(Z,D,T,O,W,_)}return n.makeTensorInfo(R.shape,R.dtype,R.values)}var VK={kernelName:Zh,backendName:"cpu",kernelFunc:WK};function UK(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a,output:o}=t,i=a;Re([a,o],"maxPoolGrad");let{filterSize:l,strides:c,pad:u,dimRoundingMode:d}=s,p=N.computePool2DInfo(i.shape,l,c,1,u,d),h=n.data.get(i.dataId).values,f=ze(p.outShape,i.dtype,f7(h,i.shape,i.dtype,p).values),m=p.strideHeight,g=p.strideWidth,y=p.dilationHeight,x=p.dilationWidth,A=p.effectiveFilterHeight,b=p.effectiveFilterWidth,w=b-1-p.padInfo.left,k=A-1-p.padInfo.top,I=ze(i.shape,"float32"),E=n.data.get(r.dataId).values,R=ze(r.shape,"float32",E);for(let P=0;P=p.outHeight||Math.floor(j)!==j))for(let Z=0;Z=p.outWidth||Math.floor(Q)!==Q)continue;let ne=A*b-1-f.get(P,j,Q,D),ae=z*b+Z,U=ne===ae?1:0;if(U===0)continue;X+=R.get(P,j,Q,D)*U}}I.set(X,P,_,T,D)}return n.makeTensorInfo(I.shape,I.dtype,I.values)}var GK={kernelName:Kh,backendName:"cpu",kernelFunc:UK};function HK(e,t,n,s,r){let a=v.computeStrides(t),o=ux(e,t,n,a,r,"max"),i=f7(e,t,n,r,!0,s);return[o.values,i.values]}var jK={kernelName:Yh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:s}=e,{filterSize:r,strides:a,pad:o,includeBatchInIndex:i}=t,l=n;Re(s,"MaxPoolWithArgmax");let c=l.data.get(s.dataId).values,u=N.computePool2DInfo(s.shape,r,a,[1,1],o),[d,p]=HK(c,s.shape,s.dtype,i,u),h=l.write(d,u.outShape,s.dtype),f=l.write(p,u.outShape,s.dtype);return[{dataId:h,shape:u.outShape,dtype:s.dtype},{dataId:f,shape:u.outShape,dtype:"int32"}]}};function qK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a,keepDims:o}=s,i=v.parseAxisParam(a,r.shape),c=N.computeOutAndReduceShapes(r.shape,i)[1],u=v.sizeFromShape(c),d=[],p=n.makeTensorInfo([],"float32",new Float32Array([u]));d.push(p);let h=Uo({inputs:{x:r},backend:n,attrs:{dtype:"float32"}});d.push(h);let f=cx({inputs:{a:h,b:p},backend:n});d.push(f);let m=yp({inputs:{x:f},backend:n,attrs:{axis:a,keepDims:o}});return d.forEach(g=>n.disposeIntermediateTensorInfo(g)),m}var XK={kernelName:Ja,backendName:"cpu",kernelFunc:qK};function KK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a,keepDims:o}=s;Re(r,"min");let i=v.parseAxisParam(a,r.shape),l=i,c=N.getAxesPermutation(l,r.shape.length),u=r;c!=null&&(u=Ws({inputs:{x:r},backend:n,attrs:{perm:c}}),l=N.getInnerMostAxes(l.length,r.shape.length)),N.assertAxesAreInnerMostDims("min",l,u.shape.length);let[d,p]=N.computeOutAndReduceShapes(u.shape,l),h=v.sizeFromShape(p),f=v.makeZerosTypedArray(v.sizeFromShape(d),u.dtype),m=n.data.get(u.dataId).values;for(let y=0;yA[0]+r.shape[b]+A[1]),l=a.map(A=>A[0]),c=a.map((A,b)=>A[0]+r.shape[b]),u=o==="reflect"?0:1,d=n.data.get(r.dataId).values,p=r.shape.length,h=v.computeStrides(r.shape),f=v.sizeFromShape(i),m=i.length,g=v.computeStrides(i),y=v.getTypedArrayFromDType(r.dtype,f);for(let A=0;A=c[k]&&(b[k]=(c[k]-1)*2-b[k]+u);b=b.map((k,I)=>k-l[I]);let w=v.locToIndex(b,p,h);y[A]=d[w]}return{dataId:n.write(y,i,r.dtype),shape:i,dtype:r.dtype}}var JK={kernelName:to,backendName:"cpu",kernelFunc:YK},QK=Qt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),eZ=vn(ku,QK),tZ={kernelName:ku,backendName:"cpu",kernelFunc:eZ},nZ=li(Ih());function b7(e){let{inputs:t,backend:n,attrs:s}=e,{logits:r}=t,{dim:a}=s,o=r.shape.length,i=a;if(i===-1&&(i=o-1),i!==o-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${o} and dim was ${i}`);let l=v.parseAxisParam([i],r.shape),c=x7({inputs:{x:r},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),u=N.expandShapeToKeepDim(c.shape,l),d=Pt({inputs:{x:c},backend:n,attrs:{shape:u}}),p=ix({inputs:{a:r,b:d},backend:n}),h=_I({inputs:{x:p},backend:n}),f=yp({inputs:{x:h},backend:n,attrs:{axis:l,keepDims:!1}}),m=Pt({inputs:{x:f},backend:n,attrs:{shape:u}}),g=cx({inputs:{a:h,b:m},backend:n});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),g}var sZ={kernelName:mo,backendName:"cpu",kernelFunc:b7};function rZ(e){let{inputs:t,backend:n,attrs:s}=e,{logits:r}=t,{numSamples:a,seed:o,normalized:i}=s;Re(r,"multinomial");let l=i?r:b7({inputs:{logits:r},backend:n,attrs:{dim:-1}}),c=l.shape[0],u=l.shape[1],d=n.data.get(l.dataId).values,p=[c,a],h=v.makeZerosTypedArray(v.sizeFromShape(p),"int32");for(let f=0;f=0&&u[d]{v.assertShapesMatch(a,u.shape,"All tensors passed to stack must have matching shapes"),v.assert(o===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let i=[],l=t.map(u=>{let d=Om({inputs:{input:u},backend:n,attrs:{dim:r}});return i.push(d),d}),c=oc({inputs:l,backend:n,attrs:{axis:r}});return i.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var xZ={kernelName:Fi,backendName:"cpu",kernelFunc:w7};function bZ(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{paddings:a,constantValue:o}=s;Re(r,"pad");let i=a.map((x,A)=>x[0]+r.shape[A]+x[1]),l=a.map(x=>x[0]),c=n.data.get(r.dataId).values,u=v.sizeFromShape(r.shape),d=r.shape.length,p=v.computeStrides(r.shape),h=v.sizeFromShape(i),f=i.length,m=v.computeStrides(i),g=v.getTypedArrayFromDType(r.dtype,h);o!==0&&g.fill(o);for(let x=0;xk+l[I]),w=v.locToIndex(b,f,m);g[w]=c[x]}return{dataId:n.write(g,i,r.dtype),shape:i,dtype:r.dtype}}var k7={kernelName:so,backendName:"cpu",kernelFunc:bZ},vZ=Qt((e,t)=>Math.pow(e,t)),wZ=vn(ro,vZ),kZ={kernelName:ro,backendName:"cpu",kernelFunc:wZ};function SZ(e){let{backend:t,attrs:n}=e,{start:s,stop:r,dtype:a,step:o}=n,i=ax(s,r,o,a);return t.makeTensorInfo([i.length],a,i)}var IZ={kernelName:Iu,backendName:"cpu",kernelFunc:SZ},CZ=mt(Cu,e=>1/e),TZ={kernelName:Cu,backendName:"cpu",kernelFunc:CZ};function NZ(e){let{inputs:t,backend:n,attrs:s}=e,{images:r}=t,{alignCorners:a,halfPixelCenters:o,size:i}=s;Re(r,"resizeBilinear");let l=v.computeStrides(r.shape),[c,u]=i,[d,p,h,f]=r.shape,m=n.data.get(r.dataId).values,g=new Float32Array(v.sizeFromShape([d,c,u,f])),y=[a&&c>1?p-1:p,a&&u>1?h-1:h],x=[a&&c>1?c-1:c,a&&u>1?u-1:u],A=0,b=y[0]/x[0],w=y[1]/x[1];for(let k=0;k1?c-1:c,o&&h>1?u-1:u],g=[o&&p>1?p-1:p,o&&h>1?h-1:h],y=m[0]/g[0],x=m[1]/g[1],A=n.data.get(a.dataId).values,b=0;for(let w=0;w1?p-1:p,a&&u>1?h-1:h],x=[a&&c>1?c-1:c,a&&u>1?u-1:u],A=y[0]/x[0],b=y[1]/x[1],w=0;for(let k=0;k1?u-1:u,o&&f>1?d-1:d],x=[o&&h>1?h-1:h,o&&f>1?f-1:f],A=y[0]/x[0],b=y[1]/x[1],w=1/A,k=1/b,I=Math.ceil(w)*2+2,E=Math.ceil(k)*2+2;for(let R=0;R=h)continue;let U=P+ae*l[1],oe=ae*A,re=Math.min(u-1,o?Math.round(oe):Math.floor(oe));if(D===re)for(let me=0;me=f)continue;let Te=U+Ae*l[2],Ne=Ae*b,Fe=Math.min(d-1,o?Math.round(Ne):Math.floor(Ne));W===Fe&&(Q+=g[Te+Z])}}m[X+Z]=Q}}}}return n.makeTensorInfo(r.shape,r.dtype,m)}var PZ={kernelName:Qh,backendName:"cpu",kernelFunc:FZ};function OZ(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{dims:a}=s;Re(r,"reverse");let o=r.shape.length,i=v.parseAxisParam(a,r.shape);if(o===0)return Br({inputs:{x:r},backend:n});let l=new sn(r.shape,r.dtype),c=n.bufferSync(r);for(let u=0;up[h]=r.shape[h]-1-p[h]),l.set(c.get(...p),...d)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var MZ={kernelName:Mi,backendName:"cpu",kernelFunc:OZ},zZ={kernelName:Yi,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:s}=e,{radians:r,fillValue:a,center:o}=t,i=n,l=v.getTypedArrayFromDType(s.dtype,v.sizeFromShape(s.shape)),[c,u,d,p]=s.shape,[h,f]=N.getImageCenter(o,u,d),m=255,g=Math.sin(r),y=Math.cos(r),x=i.data.get(s.dataId).values;for(let b=0;b=0&&O=0&&W{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),BZ={kernelName:zi,backendName:"cpu",kernelFunc:LZ};function S7(e,t,n,s,r,a,o,i,l,c){let u=[s/r,r],d=e.values,p=t.values;if(s===0)return ze(n,t.dtype);let h=ze(u,t.dtype);h.values.fill(l);for(let f=0;f=s/r)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||r.shape.length===1?1:v.sizeFromShape(r.shape.slice(1));for(let f=0;fe>=0?jZ*e:HZ*(Math.exp(e)-1)),XZ={kernelName:Nu,backendName:"cpu",kernelFunc:qZ},KZ=mt(Eu,e=>e<0?-1:e>0?1:0),ZZ={kernelName:Eu,backendName:"cpu",kernelFunc:KZ},YZ=mt(co,e=>Math.sin(e)),JZ={kernelName:co,backendName:"cpu",kernelFunc:YZ},QZ=mt(Vi,e=>Math.sinh(e)),eY={kernelName:Vi,backendName:"cpu",kernelFunc:QZ},tY=11920928955078125e-23,I7=Math.log(tY)+2,nY=mt(Ru,e=>{let t=e>-I7,n=e0&&v.isString(n[0])){let r=n.map(a=>v.encodeString(a));s=this.write(r,e,t)}else s=this.write(n,e,t);return{dataId:s,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,s,r){this.data.set(e,{values:t,dtype:s,refCount:r})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let s=this.readSync(n.real.dataId),r=this.readSync(n.imag.dataId);return N.mergeRealAndImagArrays(s,r)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(s=>v.decodeString(s))}catch(s){throw new Error("Failed to decode encoded string bytes into utf-8")}return ze(e.shape,e.dtype,n)}makeOutput(e,t,n){let s=this.write(e,t,n);return as().makeTensorFromDataId(s,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){Re([e],"where");let t=this.readSync(e.dataId);return XH(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}},QA=k7;QA.nextDataId=0;var Dm={};Me(Dm,{addImpl:()=>I7,bincountImpl:()=>tx,bincountReduceImpl:()=>C7,ceilImpl:()=>T7,concatImpl:()=>nx,equalImpl:()=>N7,expImpl:()=>R7,expm1Impl:()=>D7,floorImpl:()=>$7,gatherNdImpl:()=>F7,gatherV2Impl:()=>P7,greaterEqualImpl:()=>M7,greaterImpl:()=>O7,lessEqualImpl:()=>L7,lessImpl:()=>z7,linSpaceImpl:()=>B7,logImpl:()=>W7,maxImpl:()=>V7,maximumImpl:()=>U7,minimumImpl:()=>G7,multiplyImpl:()=>sx,negImpl:()=>H7,notEqualImpl:()=>j7,prodImpl:()=>q7,rangeImpl:()=>ax,rsqrtImpl:()=>X7,sigmoidImpl:()=>Oj,simpleAbsImpl:()=>S7,sliceImpl:()=>Pm,sparseFillEmptyRowsImpl:()=>Z7,sparseReshapeImpl:()=>Y7,sparseSegmentReductionImpl:()=>ox,sqrtImpl:()=>Lj,squaredDifferenceImpl:()=>J7,stridedSliceImpl:()=>Q7,stringNGramsImpl:()=>eI,stringSplitImpl:()=>tI,stringToHashBucketFastImpl:()=>nI,subImpl:()=>sI,tileImpl:()=>rI,topKImpl:()=>oI,transposeImpl:()=>rx,uniqueImpl:()=>iI});function S7(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;Re(t,"abs");let s=new Float32Array(v.sizeFromShape(t.shape)),r=n.data.get(t.dataId).values;return s=S7(r),n.makeOutput(s,t.shape,t.dtype)},ZH={kernelName:di,backendName:"cpu",kernelFunc:KH};function Qt(e){return(t,n,s,r,a)=>{let o=N.assertAndGetBroadcastShape(t,n),i=o.length,l=v.computeStrides(o),c=v.sizeFromShape(o),u=v.getTypedArrayFromDType(a,c),d=t.length,p=n.length,h=v.computeStrides(t),f=v.computeStrides(n),m=N.getBroadcastDims(t,o),g=N.getBroadcastDims(n,o);if(m.length+g.length===0)for(let y=0;yA[I]=0);let b=v.locToIndex(A,d,h),w=x.slice(-p);g.forEach(I=>w[I]=0);let k=v.locToIndex(w,p,f);u[y]=e(s[b],r[k])}return[u,o]}}function ks(e){let{inputs:t,backend:n}=e,{real:s,imag:r}=t,a=n.data.get(s.dataId).values,o=n.data.get(r.dataId).values,i=n.makeTensorInfo(s.shape,"complex64"),l=n.data.get(i.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(s.shape,"float32",a),imag:n.makeTensorInfo(r.shape,"float32",o)},i}var YH={kernelName:ud,backendName:"cpu",kernelFunc:ks};function $m(e,t,n="float32"){if(n==="complex64"){let r=$m(e,t,"float32"),a=$m(e,t,"float32");return ks({inputs:{real:r,imag:a},backend:e})}let s=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,s)}function Br(e){let{inputs:t,backend:n}=e,{x:s}=t;return n.incRef(s.dataId),{dataId:s.dataId,shape:s.shape,dtype:s.dtype}}var JH={kernelName:qa,backendName:"cpu",kernelFunc:Br};function kl(e){let{inputs:t,backend:n}=e,{input:s}=t,r=n.data.get(s.dataId).complexTensorInfos.real,a=n.data.get(r.dataId).values;return n.makeTensorInfo(r.shape,r.dtype,a)}var QH={kernelName:Ad,backendName:"cpu",kernelFunc:kl};function Uo(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{dtype:a}=s;if(a==="complex64"){if(r.dtype==="complex64")return Br({inputs:{x:r},backend:n});let o=$m(n,r.shape,r.dtype),i=Uo({inputs:{x:r},backend:n,attrs:{dtype:"float32"}}),l=ks({inputs:{real:i,imag:o},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(i),l}if(r.dtype==="complex64"){let o=kl({inputs:{input:r},backend:n}),i=Uo({inputs:{x:o},backend:n,attrs:{dtype:a}});return n.disposeIntermediateTensorInfo(o),i}if(!v.hasEncodingLoss(r.dtype,a)){let o=Br({inputs:{x:r},backend:n});return{dataId:o.dataId,shape:o.shape,dtype:a}}if(a==="int32"){let o=n.data.get(r.dataId).values,i=Int32Array.from(o);return n.makeTensorInfo(r.shape,"int32",i)}if(a==="bool"){let o=n.data.get(r.dataId).values,i=v.toTypedArray([0],r.dtype),[l,c]=Qt((u,d)=>u!==d?1:0)(r.shape,[],o,i,"bool");return n.makeTensorInfo(c,"bool",l)}throw new Error(`Error in Cast: failed to cast ${r.dtype} to ${a}`)}var ej={kernelName:$a,backendName:"cpu",kernelFunc:Uo};function vn(e,t,n,s){return n==null?({inputs:r,backend:a})=>{let{a:o,b:i}=r,l=a;Re([o,i],e);let c=l.data.get(o.dataId).values,u=l.data.get(i.dataId).values,d=o.dtype==="string"?N.fromUint8ToStringArray(c):c,p=o.dtype==="string"?N.fromUint8ToStringArray(u):u,h=s||o.dtype,[f,m]=t(o.shape,i.shape,d,p,h);return l.makeTensorInfo(m,h,f)}:({inputs:r,backend:a})=>{let{a:o,b:i}=r,l=a;if(o.dtype==="complex64"||i.dtype==="complex64"){let c=Uo({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),u=l.data.get(c.dataId),d=u.complexTensorInfos.real,p=u.complexTensorInfos.imag,h=l.data.get(d.dataId).values,f=l.data.get(p.dataId).values,m=Uo({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),g=l.data.get(m.dataId),y=g.complexTensorInfos.real,x=g.complexTensorInfos.imag,A=l.data.get(y.dataId).values,b=l.data.get(x.dataId).values,[w,k,I]=n(o.shape,i.shape,h,f,A,b),E=l.makeTensorInfo(I,"float32",w),R=l.makeTensorInfo(I,"float32",k),P=ks({inputs:{real:E,imag:R},backend:l});return l.disposeIntermediateTensorInfo(c),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(E),l.disposeIntermediateTensorInfo(R),P}else{let c=l.data.get(o.dataId).values,u=l.data.get(i.dataId).values,d=s||o.dtype,[p,h]=t(o.shape,i.shape,c,u,d);return l.makeTensorInfo(h,d,p)}}}function ex(e){return(t,n,s,r,a,o)=>{let i=N.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(i),c=i.length,u=v.computeStrides(i),d=v.getTypedArrayFromDType("float32",l),p=v.getTypedArrayFromDType("float32",l),h=N.getBroadcastDims(t,i),f=N.getBroadcastDims(n,i),m=N.mergeRealAndImagArrays(s,r),g=N.mergeRealAndImagArrays(a,o),y=t.length,x=v.computeStrides(t),A=n.length,b=v.computeStrides(n);if(h.length+f.length===0)for(let w=0;wI[_]=0);let E=v.locToIndex(I,y,x),R=k.slice(-A);f.forEach(_=>R[_]=0);let P=v.locToIndex(R,A,b),D=e(m[E*2],m[E*2+1],g[P*2],g[P*2+1]);d[w]=D.real,p[w]=D.imag}return[d,p,i]}}var I7=Qt((e,t)=>e+t),tj=ex((e,t,n,s)=>({real:e+n,imag:t+s})),mp=vn(qr,I7,tj),nj={kernelName:qr,backendName:"cpu",kernelFunc:mp};function tx(e,t,n,s,r){let a=v.sizeFromShape(s),o=v.makeZerosTypedArray(r,n);for(let i=0;i=r||(a>0?o[l]+=t[i]:o[l]+=1)}return o}function C7(e,t,n,s=!1){let r=e.shape[0],a=e.shape[1],o=ze([r,n],t.dtype);for(let i=0;i=n||(s?o.set(1,i,c):t.size>0?o.set(o.get(i,c)+t.get(i,l),i,c):o.set(o.get(i,c)+1,i,c))}return o}function Go(e){return(t,n,s)=>{let r=v.getTypedArrayFromDType(n,t.length);for(let a=0;a{let{x:o}=s;if(Re(o,e),o.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let i=a,l=i.data.get(o.dataId).values,c=v.sizeFromShape(o.shape),u=n||o.dtype,d=v.getArrayFromDType(u,c);for(let p=0;p{let{x:o}=s;if(Re(o,e),o.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let i=a,l=i.data.get(o.dataId).values,c=n||o.dtype,u=t(l,c,r);return i.makeTensorInfo(o.shape,c,u)}}var T7=Go(e=>Math.ceil(e)),sj=rc(Fa,T7),rj={kernelName:Fa,backendName:"cpu",kernelFunc:sj};function nx(e,t,n,s){let r=v.getArrayFromDType(n,v.sizeFromShape(t));if(s&&n!=="string"){let a=0;e.forEach(o=>{let i=v.sizeFromShape(o.shape);r.set(o.vals,a),a+=i})}else{let a=0;e.forEach(o=>{let i=n==="string"?N.fromUint8ToStringArray(o.vals):o.vals,l=0;for(let c=0;ce===t?1:0),E7=vn(yi,N7,null,"bool"),aj={kernelName:yi,backendName:"cpu",kernelFunc:E7},R7=Go(e=>Math.exp(e)),_7=rc(Va,R7,"float32"),oj={kernelName:Va,backendName:"cpu",kernelFunc:_7},D7=Go(e=>Math.expm1(e)),ij=rc(xi,D7),lj={kernelName:xi,backendName:"cpu",kernelFunc:ij},$7=Go(e=>Math.floor(e)),uj=rc(Ua,$7),cj={kernelName:Ua,backendName:"cpu",kernelFunc:uj};function F7(e,t,n,s,r,a,o,i,l){let c=ze([s,a],n);for(let u=0;u=l/a)throw new Error(`Invalid indices: ${d} does not index into ${i}`);for(let h=0;he>t?1:0),dj=vn(ki,O7,null,"bool"),pj={kernelName:ki,backendName:"cpu",kernelFunc:dj},M7=Qt((e,t)=>e>=t?1:0),hj=vn(ja,M7,null,"bool"),fj={kernelName:ja,backendName:"cpu",kernelFunc:hj},z7=Qt((e,t)=>ee<=t?1:0),yj=vn(Ci,L7,null,"bool"),Aj={kernelName:Ci,backendName:"cpu",kernelFunc:yj};function B7(e,t,n){let s=(t-e)/(n-1),r=v.makeZerosTypedArray(n,"float32");r[0]=e;for(let a=1;aMath.log(e)),xj=rc(Xa,W7),bj={kernelName:Xa,backendName:"cpu",kernelFunc:xj};function V7(e,t,n,s){let r=v.getTypedArrayFromDType(s,v.sizeFromShape(n));for(let a=0;ai)&&(i=c)}r[a]=i}return r}var U7=Qt((e,t)=>Math.max(e,t)),vj=vn(Za,U7),wj={kernelName:Za,backendName:"cpu",kernelFunc:vj},G7=Qt((e,t)=>Math.min(e,t)),kj=vn(eo,G7),Sj={kernelName:eo,backendName:"cpu",kernelFunc:kj},sx=Qt((e,t)=>e*t),Ij=ex((e,t,n,s)=>({real:e*n-t*s,imag:e*s+t*n})),Fm=vn(no,sx,Ij),Cj={kernelName:no,backendName:"cpu",kernelFunc:Fm};function H7(e,t,n){let s=v.createScalarValue(-1,n);return sx([],t,s,e,n)}function Tj(e){let{inputs:t,backend:n}=e,{x:s}=t;Re(s,"neg");let r=n.data.get(s.dataId).values,[a,o]=H7(r,s.shape,s.dtype);return n.makeTensorInfo(o,s.dtype,a)}var Nj={kernelName:Ni,backendName:"cpu",kernelFunc:Tj},j7=Qt((e,t)=>e!==t?1:0),Ej=vn(Ei,j7,null,"bool"),Rj={kernelName:Ei,backendName:"cpu",kernelFunc:Ej};function rx(e,t,n,s,r){let a=t.length,o=v.sizeFromShape(t),i=v.computeStrides(t),l=v.computeStrides(r),c=v.getTypedArrayFromDType(n,v.sizeFromShape(r));for(let u=0;un.disposeIntermediateTensorInfo(x)),n.makeTensorInfo(y,g,f)}var $j={kernelName:Pi,backendName:"cpu",kernelFunc:Dj};function ax(e,t,n,s){let r=e===t,a=e1;if(r||a||o)return v.makeZerosTypedArray(0,s);let i=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(i,s);t1/Math.sqrt(e)),Fj=rc(uo,X7),Pj={kernelName:uo,backendName:"cpu",kernelFunc:Fj},Oj=Go(e=>1/(1+Math.exp(-e))),K7=mt(po,e=>1/(1+Math.exp(-e))),Mj={kernelName:po,backendName:"cpu",kernelFunc:K7};function Pm(e,t,n,s,r){let a=Mt.isSliceContinous(s,t,n),o=v.sizeFromShape(n),i=v.computeStrides(s);if(a){let d=Mt.computeFlatOffset(t,i);return r==="string"?e.slice(d,d+o):e.subarray(d,d+o)}let l=r==="string"?N.fromUint8ToStringArray(e):e,c=ze(s,r,l),u=ze(n,r);for(let d=0;df+t[m]);u.set(c.get(...h),...p)}return r==="string"?N.fromStringArrayToUint8(u.values):u.values}function Sl(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{begin:a,size:o}=s;Re(r,"slice");let[i,l]=Mt.parseSliceParams(r,a,o);Mt.assertParamsValid(r,i,l);let c=n.data.get(r.dataId).values,u=Pm(c,i,l,r.shape,r.dtype);return n.makeTensorInfo(l,r.dtype,u)}var zj={kernelName:Wi,backendName:"cpu",kernelFunc:Sl};function Z7(e,t,n,s,r,a,o){let i=t[0],l=a[0],c=new Array(l),u=new Array(i),d=t[1];if(l===0){if(i!==0)throw new Error(N.getSparseFillEmptyRowsIndicesDenseShapeMismatch(i));let g=v.getArrayFromDType(n,0),y=v.getArrayFromDType(r,0);return[g,[0,d],y,c,u]}let p=!0,h=0,f=new Array(l).fill(0);for(let g=0;g=l)throw new Error(N.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(g,y,l));++f[y],p=p&&y>=h,h=y}let m=!0;for(let g=0;g0&&(f[g]+=f[g-1])}if(m&&p){let g=e,y=s;for(let x=0;x0){h[p-1]=1;for(let g=p-2;g>=0;--g)h[g]=h[g+1]*s[g+1]}let f=[];if(i>0){f[i-1]=1;for(let g=i-2;g>=0;--g)f[g]=f[g+1]*l[g+1]}let m=v.getArrayFromDType(n,o*i);for(let g=0;g0?r[i-1]+1:0;if(d<0)throw new Error(N.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());let p=t.slice();p[0]=d;let h=p.reduce((A,b)=>A*b,1),f=v.getArrayFromDType(n,h);if(i===0)return d>0&&f.fill(o),[f,p];if(d<=0)throw new Error(N.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());let m=0,g=1,y=0,x=r[m];for(;;){let A=0;if(g=A)throw new Error(N.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage())}if(x<0||x>=d)throw new Error(N.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(x,d));x>y&&f.fill(o,y*c,x*c);for(let b=m;b=l[0])throw new Error(N.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(b,s[b],l[0]));for(let k=0;ki)break}return yMath.sqrt(e)),Bj=mt(ho,e=>Math.sqrt(e)),Wj={kernelName:ho,backendName:"cpu",kernelFunc:Bj},J7=Qt((e,t)=>{let n=e-t;return n*n}),Vj=vn(go,J7),Uj={kernelName:go,backendName:"cpu",kernelFunc:Vj};function Q7(e,t,n,s){let r=ze(e,t.dtype);for(let a=0;a0?0:o-i),p=0;p+=l*this.leftPad.length;for(let y=0;yy.forEach(x=>f[m++]=x);for(let y=0;y0){g(e[d+u-1]);for(let y=0;y0){let i=t[0];if(i!==0)throw new Error(`First split value must be 0, got ${i}`);for(let l=1;l=i;if(c=c&&t[l]<=n,!c)throw new Error(`Invalid split value ${t[l]}, must be in [${i}, ${n}]`);i=t[l]}if(i!==n)throw new Error(`Last split value must be data size. Expected ${n}, got ${i}`)}let r=s-1,a=v.getArrayFromDType("int32",s);if(n===0||s===0){let i=new Array(n);for(let l=0;l<=r;++l)a[l]=0;return[i,a]}a[0]=0;for(let i=1;i<=r;++i){let l=t[i]-t[i-1],c=0;this.nGramWidths.forEach(u=>{c+=this.getNumNGrams(l,u)}),this.preserveShort&&l>0&&c===0&&(c=1),a[i]=a[i-1]+c}let o=new Array(a[r]);for(let i=0;i{let d=t[i+1]-t[i],p=this.getNumNGrams(d,u);this.createNGrams(e,l,o,c,p,u),c+=p}),this.preserveShort&&c===a[i]){let u=t[i+1]-t[i];if(u===0)continue;let d=u+2*this.padWidth,p=1;this.createNGrams(e,l,o,c,p,d)}}return[o,a]}};function eI(e,t,n,s,r,a,o,i){return new Gj(n,s,r,a,o,i).compute(e,t)}function Hj(e,t,n,s){if(!e.length)return;if(t.length===0){for(let a=0;ae-t),jj=ex((e,t,n,s)=>({real:e-n,imag:t-s})),ix=vn(yo,sI,jj),qj={kernelName:yo,backendName:"cpu",kernelFunc:ix};function rI(e,t){let n=new Array(e.rank);for(let r=0;r{let n=t.value-e.value;return n===0?e.index-t.index:n};function aI(e,t,n=0,s=e.length-1){for(;s>n;){if(s-n>600){let i=s-n+1,l=t-n+1,c=Math.log(i),u=.5*Math.exp(2*c/3),d=.5*Math.sqrt(c*u*(i-u)/i)*Math.sign(l-i/2),p=Math.max(n,Math.floor(t-l*u/i+d)),h=Math.min(s,Math.floor(t+(i-l)*u/i+d));aI(e,t,p,h)}let r=e[t],a=n,o=s;for(v.swap(e,n,t),gp(e[s],r)>0&&v.swap(e,n,s);a0;)o=o-1}gp(e[n],r)===0?v.swap(e,n,o):(o=o+1,v.swap(e,o,s)),o<=t&&(n=o+1),t<=o&&(s=o-1)}}function oI(e,t,n,s,r){let a=t[t.length-1],[o,i]=[e.length/a,a],l=v.getTypedArrayFromDType(n,o*s),c=v.getTypedArrayFromDType("int32",o*s);for(let d=0;df[A]={value:x,index:A}),s{for(let g=0;gnew QA,1);var lI=mt(Wa,e=>e>=0?e:Math.exp(e)-1),Kj={kernelName:Wa,backendName:"cpu",kernelFunc:lI};function uI(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{alpha:a}=s;Re([r],"leakyRelu");let o=v.sizeFromShape(r.shape),i=n.data.get(r.dataId).values,l=v.getTypedArrayFromDType("float32",o);for(let c=0;ce<0?t*e:e);function cI(e){let{inputs:t,backend:n}=e,{x:s,alpha:r}=t;Re([s,r],"prelu");let a=n.data.get(s.dataId).values,o=n.data.get(r.dataId).values,[i,l]=Yj(s.shape,r.shape,a,o,"float32");return n.makeTensorInfo(l,"float32",i)}var Jj={kernelName:ao,backendName:"cpu",kernelFunc:cI},dI=mt(oo,e=>Math.max(0,e)),Qj={kernelName:oo,backendName:"cpu",kernelFunc:dI},pI=mt(lo,e=>Math.min(Math.max(0,e),6)),eq={kernelName:lo,backendName:"cpu",kernelFunc:pI};function lx(e,t,n,s,r){if(n==="linear")return Br({inputs:{x:t},backend:e});if(n==="relu")return dI({inputs:{x:t},backend:e});if(n==="elu")return lI({inputs:{x:t},backend:e});if(n==="relu6")return pI({inputs:{x:t},backend:e});if(n==="prelu")return cI({inputs:{x:t,alpha:s},backend:e});if(n==="leakyrelu")return uI({inputs:{x:t},backend:e,attrs:{alpha:r}});if(n==="sigmoid")return K7({inputs:{x:t},backend:e});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function Pt(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{shape:a}=s,o=v.sizeFromShape(r.shape),i=v.inferFromImplicitShape(a,o),l=v.sizeFromShape(i);v.assert(o===l,()=>`The new shape (${i}) has ${l} elements and the old shape (${r.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`),n.incRef(r.dataId);let c=n.data.get(r.dataId);if(c.complexTensorInfos!=null){let u=c.complexTensorInfos.real,d=c.complexTensorInfos.imag;u.shape=i,d.shape=i}return{dataId:r.dataId,shape:i,dtype:r.dtype}}var tq={kernelName:Oi,backendName:"cpu",kernelFunc:Pt};function hI(e){let{inputs:t,backend:n,attrs:s}=e,{a:r,b:a}=t,{transposeA:o,transposeB:i}=s;Re([r,a],"matMul");let l=r.shape.length,c=a.shape.length,u=o?r.shape[l-2]:r.shape[l-1],d=i?a.shape[c-1]:a.shape[c-2],p=o?r.shape[l-1]:r.shape[l-2],h=i?a.shape[c-2]:a.shape[c-1],f=r.shape.slice(0,-2),m=a.shape.slice(0,-2),g=v.sizeFromShape(f),y=v.sizeFromShape(m),A=sl.assertAndGetBroadcastShape(r.shape.slice(0,-2),a.shape.slice(0,-2)).concat([p,h]);v.assert(u===d,()=>`Error in matMul: inner shapes (${u}) and (${d}) of Tensors with shapes ${r.shape} and ${a.shape} and transposeA=${o} and transposeB=${i} must match.`);let b=o?[g,u,p]:[g,p,u],w=i?[y,h,d]:[y,d,h],k=Pt({inputs:{x:r},backend:n,attrs:{shape:b}}),I=Pt({inputs:{x:a},backend:n,attrs:{shape:w}}),E=o?k.shape[1]:k.shape[2],R=o?k.shape[2]:k.shape[1],P=i?I.shape[1]:I.shape[2],D=Math.max(g,y),_=n.data.get(k.dataId).values,T=n.data.get(I.dataId).values,O=v.computeStrides(k.shape),W=v.computeStrides(I.shape),[X,z,j]=o?[O[0],1,O[1]]:[O[0],O[1],1],[Z,Q,ne]=i?[1,W[1],W[0]]:[W[1],1,W[0]],ae=R*P,U=ze([D,R,P],k.dtype),oe=U.values,re=n.blockSize;for(let me=0;meMath.acos(e)),oq={kernelName:ou,backendName:"cpu",kernelFunc:aq},iq=mt(iu,e=>Math.acosh(e)),lq={kernelName:iu,backendName:"cpu",kernelFunc:iq};function uq(e){let{inputs:t,backend:n}=e,s=t;Re(t,"addN");let r=s.map(i=>n.data.get(i.dataId).values),a=ze(s[0].shape,s[0].dtype),o=a.values;for(let i=0;ix&&(x=w,A=b)}h[g]=A}return c.forEach(g=>n.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var gq={kernelName:Ra,backendName:"cpu",kernelFunc:mq};function yq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a}=s;Re(r,"argMin");let o=v.parseAxisParam(a,r.shape),i=N.getAxesPermutation(o,r.shape.length),l=r,c=[];i!=null&&(l=Ws({inputs:{x:r},backend:n,attrs:{perm:i}}),c.push(l),o=N.getInnerMostAxes(o.length,l.shape.length)),o=[o[0]],N.assertAxesAreInnerMostDims("argMin",o,l.shape.length);let[u,d]=N.computeOutAndReduceShapes(l.shape,o),p=v.sizeFromShape(u),h=v.makeZerosTypedArray(p,"int32"),f=v.sizeFromShape(d),m=n.data.get(l.dataId).values;for(let g=0;gn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var Aq={kernelName:cu,backendName:"cpu",kernelFunc:yq},xq=mt(du,e=>Math.asin(e)),bq={kernelName:du,backendName:"cpu",kernelFunc:xq},vq=mt(pu,e=>Math.asinh(e)),wq={kernelName:pu,backendName:"cpu",kernelFunc:vq},kq=mt(hu,e=>Math.atan(e)),Sq={kernelName:hu,backendName:"cpu",kernelFunc:kq},Iq=Qt((e,t)=>Math.atan2(e,t)),Cq=vn(mu,Iq),Tq={kernelName:mu,backendName:"cpu",kernelFunc:Cq},Nq=mt(fu,e=>Math.atanh(e)),Eq={kernelName:fu,backendName:"cpu",kernelFunc:Nq};function ux(e,t,n,s,r,a){let o=r.strideHeight,i=r.strideWidth,l=r.dilationHeight,c=r.dilationWidth,u=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,h=r.padInfo.left,f=a==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=ze(r.outShape,n),g=m.values,y=r.outShape[1]*r.outShape[2]*r.outShape[3],x=r.outShape[2]*r.outShape[3],A=r.outShape[3];for(let b=0;bz?z=re:a==="avg"&&(j+=re,Z++)}if(isNaN(z))break}let Q=_+T*A+I;g[Q]=a==="avg"?j/Z:z}}}return m}function fI(e,t,n,s,r=!1,a=!1){let o=ze(s.outShape,"int32"),i=s.strideHeight,l=s.strideWidth,c=s.dilationHeight,u=s.dilationWidth,d=s.effectiveFilterHeight,p=s.effectiveFilterWidth,h=s.padInfo.top,f=s.padInfo.left,m=ze(t,n,e);for(let g=0;gP&&(P=X,r?D=a?((g*s.inHeight+_)*s.inWidth+O)*s.inChannels+y:(_*s.inWidth+O)*s.inChannels+y:D=T*p+W)}}o.set(D,g,x,k,y)}}return o}function mI(e,t,n,s,r,a){let o=r.strideDepth,i=r.strideHeight,l=r.strideWidth,c=r.dilationDepth,u=r.dilationHeight,d=r.dilationWidth,p=r.effectiveFilterDepth,h=r.effectiveFilterHeight,f=r.effectiveFilterWidth,m=r.padInfo.front,g=r.padInfo.top,y=r.padInfo.left,x=a==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,A=ze(r.outShape,n),b=A.values,w=r.outShape[1]*r.outShape[2]*r.outShape[3]*r.outShape[4],k=r.outShape[2]*r.outShape[3]*r.outShape[4],I=r.outShape[3]*r.outShape[4],E=r.outShape[4];for(let R=0;RTe?Te=_t:a==="avg"&&(Ne+=_t,Fe++),isNaN(Te))break}if(isNaN(Te))break}if(isNaN(Te))break}let Ue=Ae+_;b[Ue]=a==="avg"?Ne/Fe:Te}}}}return A}function Rq(e,t){let n=ze(t.outShape,"int32"),s=t.strideDepth,r=t.strideHeight,a=t.strideWidth,o=t.dilationDepth,i=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,u=t.effectiveFilterHeight,d=t.effectiveFilterWidth,p=t.padInfo.front,h=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=T&&(T=ne,O=X*u*d+j*u+Q)}}}n.set(O,m,y,w,R,g)}}}return n}function _q(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t;Re(r,"avgPool");let{filterSize:a,strides:o,pad:i,dimRoundingMode:l}=s,c=1;v.assert(N.eitherStridesOrDilationsAreOne(o,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${o} and dilations '${c}'`);let u=N.computePool2DInfo(r.shape,a,o,c,i,l),d;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))d=Br({inputs:{x:r},backend:n});else{let p=n.data.get(r.dataId).values,h=v.computeStrides(r.shape),f=ux(p,r.shape,r.dtype,h,u,"avg");d=n.makeTensorInfo(u.outShape,r.dtype,f.values)}return d}var Dq={kernelName:_a,backendName:"cpu",kernelFunc:_q};function $q(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{filterSize:a,strides:o,pad:i,dimRoundingMode:l,dataFormat:c}=s;Re(r,"avgPool3d");let u=N.computePool3DInfo(r.shape,a,o,1,i,l,c),d=n.data.get(r.dataId).values,p=mI(d,r.shape,r.dtype,v.computeStrides(r.shape),u,"avg");return n.makeTensorInfo(p.shape,"float32",p.values)}var Fq={kernelName:ld,backendName:"cpu",kernelFunc:$q};function Pq(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a}=t,{filterSize:o,strides:i,pad:l,dimRoundingMode:c}=s;Re([r,a],"avgPool3DGrad");let u=N.computePool3DInfo(a.shape,o,i,1,l,c),d=u.strideDepth,p=u.strideHeight,h=u.strideWidth,f=u.filterDepth,m=u.filterHeight,g=u.filterWidth,y=u.dilationDepth,x=u.dilationHeight,A=u.dilationWidth,b=u.effectiveFilterDepth,w=u.effectiveFilterHeight,k=u.effectiveFilterWidth,I=b-1-u.padInfo.front,E=k-1-u.padInfo.left,R=w-1-u.padInfo.top,P=ze(a.shape,"float32"),D=1/(f*m*g),_=n.bufferSync(r);for(let T=0;T=u.outDepth||Math.floor(U)!==U))for(let oe=0;oe=u.outHeight||Math.floor(re)!==re))for(let me=0;me=u.outWidth||Math.floor(Ae)!==Ae)continue;ne+=_.get(T,U,re,Ae,O)}}}P.set(ne*D,T,W,X,z,O)}return n.makeTensorInfo(P.shape,P.dtype,P.values)}var Oq={kernelName:Dh,backendName:"cpu",kernelFunc:Pq};function Mq(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a}=t,o=a;Re([r,a],"avgPoolGrad");let{filterSize:i,strides:l,pad:c}=s,u=N.computePool2DInfo(o.shape,i,l,1,c),d=u.strideHeight,p=u.strideWidth,h=u.filterHeight,f=u.filterWidth,m=u.dilationHeight,g=u.dilationWidth,y=u.effectiveFilterHeight,x=u.effectiveFilterWidth,A=x-1-u.padInfo.left,b=y-1-u.padInfo.top,w=ze(o.shape,"float32"),k=1/(h*f),I=n.data.get(r.dataId).values,E=ze(r.shape,"float32",I);for(let R=0;R=u.outHeight||Math.floor(z)!==z))for(let j=0;j=u.outWidth||Math.floor(Z)!==Z)continue;W+=E.get(R,z,Z,P)}}w.set(W*k,R,D,_,P)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var zq={kernelName:_h,backendName:"cpu",kernelFunc:Mq};function Lq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,scale:a,offset:o,mean:i,variance:l}=t;v.assert(i.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(o==null||i.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(a==null||i.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),Re([r,i,l,a,o],"batchNorm");let{varianceEpsilon:c}=s;c==null&&(c=.001);let u=n.data.get(r.dataId).values,d=n.data.get(i.dataId).values,p=n.data.get(l.dataId).values,h=a?n.data.get(a.dataId).values:new Float32Array([1]),f=o?n.data.get(o.dataId).values:new Float32Array([0]),m=new Float32Array(u.length),g=f.length,y=h.length,x=p.length,A=d.length,b=0,w=0,k=0,I=0;for(let E=0;E=g&&(b=0),w>=A&&(w=0),k>=y&&(k=0),I>=x&&(I=0);return n.makeTensorInfo(r.shape,r.dtype,m)}var Bq={kernelName:Ha,backendName:"cpu",kernelFunc:Lq};function Wq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{blockShape:a,crops:o}=s;Re([r],"batchToSpaceND");let i=a.reduce((y,x)=>y*x),l=N.getReshaped(r.shape,a,i),c=N.getPermuted(l.length,a.length),u=N.getReshapedPermuted(r.shape,a,i),d=N.getSliceBeginCoords(o,a.length),p=N.getSliceSize(u,o,a.length),h=Pt({inputs:{x:r},backend:n,attrs:{shape:l}}),f=Ws({inputs:{x:h},backend:n,attrs:{perm:c}}),m=Pt({inputs:{x:f},backend:n,attrs:{shape:u}}),g=Sl({inputs:{x:m},backend:n,attrs:{begin:d,size:p}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),g}var Vq={kernelName:pi,backendName:"cpu",kernelFunc:Wq};function Uq(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,weights:a}=t,{size:o}=s,i=n.data.get(r.dataId).values,l=n.data.get(a.dataId).values,c=tx(i,l,a.dtype,a.shape,o);return n.makeTensorInfo([o],a.dtype,c)}var Gq={kernelName:$h,backendName:"cpu",kernelFunc:Uq};function Hq(e){let{inputs:t,backend:n}=e,{s0:s,s1:r}=t,a=n.data.get(s.dataId).values,o=n.data.get(r.dataId).values,i=N.assertAndGetBroadcastShape(Array.from(a),Array.from(o));return n.makeTensorInfo([i.length],"int32",Int32Array.from(i))}var jq={kernelName:Fh,backendName:"cpu",kernelFunc:Hq},qq=mt(Xr,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,s=new Float32Array(v.sizeFromShape(t.shape)),r=n.data.get(t.dataId),a=r.complexTensorInfos.real,o=r.complexTensorInfos.imag,i=n.data.get(a.dataId).values,l=n.data.get(o.dataId).values;for(let c=0;cm.shape),a);if(v.sizeFromShape(o)===0)return n.makeTensorInfo(o,t[0].dtype,[]);let i=t.filter(m=>v.sizeFromShape(m.shape)>0);if(i.length===1)return Br({inputs:{x:i[0]},backend:n});let l=i.map(m=>m.shape);if(N.assertParamsConsistent(l,a),i[0].dtype==="complex64"){let m=i.map(b=>kl({inputs:{input:b},backend:n})),g=i.map(b=>ac({inputs:{input:b},backend:n})),y=oc({inputs:m,backend:n,attrs:{axis:a}}),x=oc({inputs:g,backend:n,attrs:{axis:a}}),A=ks({inputs:{real:y,imag:x},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),g.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(x),A}let c=i.map(m=>{let g=v.sizeFromShape(m.shape.slice(a));return Pt({inputs:{x:m},backend:n,attrs:{shape:[-1,g]}})}),u=c.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));o=N.computeOutShape(c.map(m=>m.shape),1);let d=c[0].shape[0]===1,p=nx(u,o,t[0].dtype,d),h=N.computeOutShape(i.map(m=>m.shape),a),f=n.makeTensorInfo(h,t[0].dtype,p);return c.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var Jq={kernelName:hi,backendName:"cpu",kernelFunc:oc};function gI(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,filter:a}=t,{strides:o,pad:i,dataFormat:l,dilations:c,dimRoundingMode:u}=s;Re([r,a],"conv2d");let d=N.convertConv2DDataFormat(l),p=N.computeConv2DInfo(r.shape,a.shape,o,c,i,u,!1,d),h=p.filterHeight,f=p.filterWidth,m=p.dilationHeight,g=p.dilationWidth,y=p.padInfo.left,x=p.padInfo.top,A=p.dataFormat==="channelsLast",b=new sn(p.outShape,r.dtype),w=v.computeStrides(r.shape),k=v.computeStrides(a.shape),I=w[0],E=A?w[1]:w[2],R=A?w[2]:1,P=A?1:w[1],D=b.strides[0],_=A?b.strides[1]:b.strides[2],T=A?b.strides[2]:1,O=A?1:b.strides[1],W=n.data.get(r.dataId).values,X=n.data.get(a.dataId).values,z=b.values;for(let j=0;j=p.inHeight)continue;let me=oe*k[0],Ae=Z+re*E;for(let Te=0;Te=p.inWidth)continue;let Je=me+Ue*k[1],Ze=Ae+ot*R,gt=Je;for(let it=0;it=c.inDepth)continue;let j=X*R[0],Z=D+z*E[1];for(let Q=0;Q=c.inHeight)continue;let re=j+U*R[1],me=Z+oe*E[2];for(let Ae=0;Ae=c.inWidth)continue;let ot=re+Fe*R[2],Je=me+Ue*c.inChannels,Ze=ot;for(let gt=0;gtMath.cos(e)),dX={kernelName:Ma,backendName:"cpu",kernelFunc:cX},pX=mt(za,e=>Math.cosh(e)),hX={kernelName:za,backendName:"cpu",kernelFunc:pX};function fX(e){let{inputs:t,backend:n,attrs:s}=e,{image:r,boxes:a,boxInd:o}=t,{cropSize:i,method:l,extrapolationValue:c}=s,[u,d,p,h]=r.shape,f=a.shape[0],[m,g]=i,y=ze([f,m,g,h],"float32"),x=n.data.get(a.dataId).values,A=n.data.get(o.dataId).values,b=n.data.get(r.dataId).values,w=v.computeStrides(r.shape),k=v.computeStrides(y.shape);for(let I=0;I=u)continue;let O=m>1?(D-R)*(d-1)/(m-1):0,W=g>1?(_-P)*(p-1)/(g-1):0;for(let X=0;X1?R*(d-1)+X*O:.5*(R+D)*(d-1);if(z<0||z>d-1){for(let j=0;j1?P*(p-1)+ne*W:.5*(P+_)*(p-1);if(ae<0||ae>p-1){for(let me=0;me1?P*(p-1)+j*W:.5*(P+_)*(p-1);if(Z<0||Z>p-1){for(let ae=0;aey+f-x-1:(y,x)=>y+x;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${o}`);let i=r.shape[0],l=r.shape[1],c=r.shape[2],u=r.shape[3],d=l*a,p=c*a,h=u/(a*a),f=n.data.get(r.dataId).values,m=new Float32Array(i*d*p*h),g=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${o} and dilations '${p}'`);let h=N.computeConv2DInfo(r.shape,a.shape,o,p,i,c,!0),{filterHeight:f,filterWidth:m,dilationHeight:g,dilationWidth:y,padInfo:x}=h,A=x.left,b=x.top,w=h.outChannels/h.inChannels,k=new sn(h.outShape,r.dtype),I=n.data.get(r.dataId).values,E=n.data.get(a.dataId).values,R=k.values;for(let P=0;P=h.inHeight)continue;let j=X*d[0],Z=D+z*u[1];for(let Q=0;Q=h.inWidth)continue;let re=j+U*d[1],me=Z+oe*h.inChannels,Ae=ne,Te=re;for(let Ne=0;Ne{let{x:s,filter:r}=e,{strides:a,pad:o,dilations:i}=n,l=t,c=l.data.get(s.dataId).values,u=s.shape.length,d=l.data.get(r.dataId).values,p=r.shape.length,{batchSize:h,inHeight:f,inWidth:m,inChannels:g,outHeight:y,outWidth:x,padInfo:A,strideHeight:b,strideWidth:w,filterHeight:k,filterWidth:I,dilationHeight:E,dilationWidth:R,outShape:P}=N.computeDilation2DInfo(s.shape,r.shape,a,o,"NHWC",i),D=v.sizeFromShape(P),_=P.length,T=v.getArrayFromDType(s.dtype,D);for(let W=0;W=0&&oe=0&&mene&&(ne=Ne)}}}let ae=v.locToIndex([W,X,j,Q],_,v.computeStrides(P));T[ae]=ne}}}return{dataId:l.write(v.toTypedArray(T,s.dtype),P,s.dtype),shape:P,dtype:s.dtype}}},RX={kernelName:Uh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:s,filter:r,dy:a}=e,{strides:o,pad:i,dilations:l}=n,c=t,u=v.toNestedArray(s.shape,c.data.get(s.dataId).values),d=v.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:p,inHeight:h,inWidth:f,inChannels:m,outHeight:g,outWidth:y,padInfo:x,strideHeight:A,strideWidth:b,filterHeight:w,filterWidth:k,dilationHeight:I,dilationWidth:E,outShape:R}=N.computeDilation2DInfo(s.shape,r.shape,o,i,"NHWC",l);v.assert(a.rank===R.length,()=>`Error in ${Uh}, dy must have the same rank as output ${R.length}, but got ${a.rank}`);let P=v.toNestedArray(R,c.data.get(a.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let T=0;T=0&&U=0&&reZ&&(Z=me,Q=ae,ne=oe)}}}D[Q][ne][j]+=P[T][O][X][j]}}}return{dataId:c.write(v.toTypedArray(D,s.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},_X={kernelName:Vh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:s,filter:r,dy:a}=e,{strides:o,pad:i,dilations:l}=n,c=t,u=v.toNestedArray(s.shape,c.data.get(s.dataId).values),d=v.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:p,inHeight:h,inWidth:f,inChannels:m,outHeight:g,outWidth:y,padInfo:x,strideHeight:A,strideWidth:b,filterHeight:w,filterWidth:k,dilationHeight:I,dilationWidth:E,outShape:R}=N.computeDilation2DInfo(s.shape,r.shape,o,i,"NHWC",l);v.assert(a.rank===R.length,()=>`Error in ${Vh}, dy must have the same rank as output ${R.length}, but got ${a.rank}`);let P=v.toNestedArray(R,c.data.get(a.dataId).values),D=v.makeZerosNestedTypedArray(s.shape,s.dtype);for(let T=0;T=0&&U=0&&reZ&&(Z=me,Q=U,ne=re)}}}D[T][Q][ne][j]+=P[T][O][X][j]}}}return{dataId:c.write(v.toTypedArray(D,s.dtype),s.shape,s.dtype),shape:s.shape,dtype:s.dtype}}};function yp(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a,keepDims:o}=s;Re(r,"sum");let i;r.dtype==="bool"?i=Uo({inputs:{x:r},backend:n,attrs:{dtype:"int32"}}):i=Br({inputs:{x:r},backend:n});let l=i.shape.length,c=v.parseAxisParam(a,i.shape),u=N.getAxesPermutation(c,l),d=c,p=i;u!=null&&(p=Ws({inputs:{x:i},backend:n,attrs:{perm:u}}),d=N.getInnerMostAxes(d.length,l)),N.assertAxesAreInnerMostDims("sum",d,p.shape.length);let[h,f]=N.computeOutAndReduceShapes(p.shape,d),m=N.upcastType(p.dtype,"int32"),g=$m(n,h,m),y=v.sizeFromShape(f),x=n.data.get(g.dataId).values,A=n.data.get(p.dataId).values;for(let b=0;b=0&&(p=yp({inputs:{x:p},backend:n,attrs:{axis:c[m]-(o.length-h),keepDims:!1}}),f.push(p)),h--)}for(let m of f)m!==p&&n.disposeIntermediateTensorInfo(m);return p}var FX={kernelName:hd,backendName:"cpu",kernelFunc:$X};function PX(e){let{inputs:t,backend:n}=e,{dy:s,y:r}=t;Re([s,r],"eluGrad");let a=new Float32Array(v.sizeFromShape(r.shape)),o=n.data.get(r.dataId).values,i=n.data.get(s.dataId).values;for(let l=0;l=1?a[l]=i[l]:a[l]=i[l]*(c+1)}return n.makeTensorInfo(r.shape,"float32",a)}var OX={kernelName:Gh,backendName:"cpu",kernelFunc:PX},MX=N.ERF_P,zX=N.ERF_A1,LX=N.ERF_A2,BX=N.ERF_A3,WX=N.ERF_A4,VX=N.ERF_A5,UX=mt(gu,e=>{let t=Math.sign(e),n=Math.abs(e),s=1/(1+MX*n);return t*(1-((((VX*s+WX)*s+BX)*s+LX)*s+zX)*s*Math.exp(-n*n))}),GX={kernelName:gu,backendName:"cpu",kernelFunc:UX};function Om(e){let{inputs:t,backend:n,attrs:s}=e,{input:r}=t,{dim:a}=s,o=r.shape.length,i=r.shape.slice(),l=a;return a<0&&(v.assert(-(o+1)<=a,()=>`Axis must be in the interval [${-(o+1)}, ${o}]`),l=o+a+1),i.splice(l,0,1),Pt({inputs:{x:r},backend:n,attrs:{shape:i}})}var HX={kernelName:Ai,backendName:"cpu",kernelFunc:Om},jX=Qt((e,t)=>e/t),cx=vn(Ba,jX),dx={kernelName:Ba,backendName:"cpu",kernelFunc:cx};function AI(e,t,n){let s=e.shape,r=s[0],a=s[1],o=n.data.get(e.dataId),i=o.complexTensorInfos.real,l=o.complexTensorInfos.imag,c=[r,a],u=v.sizeFromShape(c),d=v.getTypedArrayFromDType("float32",u),p=v.getTypedArrayFromDType("float32",u);for(let g=0;g{let{image:s}=e,r=n,a=v.getTypedArrayFromDType(s.dtype,v.sizeFromShape(s.shape)),[o,i,l,c]=s.shape,u=r.data.get(s.dataId).values;for(let p=0;p=0&&AMath.floor(e/t)),nK=vn(Ga,tK,null,"int32"),sK={kernelName:Ga,backendName:"cpu",kernelFunc:nK};function rK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,filter:a,bias:o,preluActivationWeights:i}=t,{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p,activation:h,leakyreluAlpha:f}=s,m=gI({inputs:{x:r,filter:a},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p}});if(o){let g=m;m=mp({inputs:{a:m,b:o},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=m;m=lx(n,m,h,i,f),n.disposeIntermediateTensorInfo(g)}return m}var aK={kernelName:wo,backendName:"cpu",kernelFunc:rK};function oK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,filter:a,bias:o,preluActivationWeights:i}=t,{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p,activation:h,leakyreluAlpha:f}=s,m=yI({inputs:{x:r,filter:a},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:d,dimRoundingMode:p}});if(o){let g=m;m=mp({inputs:{a:m,b:o},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=m;m=lx(n,m,h,i,f),n.disposeIntermediateTensorInfo(g)}return m}var iK={kernelName:ko,backendName:"cpu",kernelFunc:oK};function lK(e){let{inputs:t,backend:n}=e,{params:s,indices:r}=t,a=v.sizeFromShape(s.shape),o=r.shape,i=o[o.length-1],[l,c,u,d]=N.prepareAndValidate(s,r);if(c===0)return n.makeTensorInfo(l,s.dtype,[]);let p=n.data.get(r.dataId).values,h=n.bufferSync(s),f=F7(p,h,s.dtype,c,i,u,d,s.shape,a);return n.makeTensorInfo(l,s.dtype,f.values)}var uK={kernelName:wi,backendName:"cpu",kernelFunc:lK};function cK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r,indices:a}=t,{axis:o,batchDims:i}=s;Re([r,a],"gatherV2");let l=v.parseAxisParam(o,r.shape)[0],c=n.data.get(a.dataId).values,u=r.shape[l];for(let b=0;b=0,()=>`GatherV2: the index value ${w} is not in [0, ${u-1}]`)}let d=i;i==null&&(d=0);let p=v.sizeFromShape(a.shape),h=N.segment_util.collectGatherOpShapeInfo(r,a,l,d),f=Pt({inputs:{x:r},backend:n,attrs:{shape:[h.batchSize,h.outerSize,h.dimSize,h.sliceSize]}}),m=Pt({inputs:{x:a},backend:n,attrs:{shape:[h.batchSize,p/h.batchSize]}}),g=[h.batchSize,h.outerSize,p/h.batchSize,h.sliceSize],y=n.bufferSync(m),x=n.bufferSync(f),A=P7(x,y,g);return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),n.makeTensorInfo(h.outputShape,A.dtype,A.values)}var dK={kernelName:vi,backendName:"cpu",kernelFunc:cK};function pK(e){let{inputs:t,backend:n}=e,{input:s}=t,r=v.sizeFromShape(s.shape),a=s.shape[s.shape.length-1],o=r/a,i=Pt({inputs:{x:s},backend:n,attrs:{shape:[o,a]}}),l=AI(i,!0,n),c=Pt({inputs:{x:l},backend:n,attrs:{shape:s.shape}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),c}var hK={kernelName:jh,backendName:"cpu",kernelFunc:pK},fK=mt(Au,e=>Number.isFinite(e)?1:0,"bool"),mK={kernelName:Au,backendName:"cpu",kernelFunc:fK},gK=mt(xu,e=>Math.abs(e)===1/0?1:0,"bool"),yK={kernelName:xu,backendName:"cpu",kernelFunc:gK},AK=mt(bu,e=>Number.isNaN(e)?1:0,"bool"),xK={kernelName:bu,backendName:"cpu",kernelFunc:AK};function bK(e){let{backend:t,attrs:n}=e,{start:s,stop:r,num:a}=n,o=B7(s,r,a);return t.makeTensorInfo([o.length],"float32",o)}var vK={kernelName:qh,backendName:"cpu",kernelFunc:bK},wK=mt(vu,e=>Math.log1p(e)),kK={kernelName:vu,backendName:"cpu",kernelFunc:wK},SK=Qt((e,t)=>e&&t),IK=vn(Ti,SK,null,"bool"),CK={kernelName:Ti,backendName:"cpu",kernelFunc:IK},TK=mt(wu,e=>e?0:1,"bool"),NK={kernelName:wu,backendName:"cpu",kernelFunc:TK},EK=Qt((e,t)=>e||t),RK=vn(md,EK,null,"bool"),_K={kernelName:md,backendName:"cpu",kernelFunc:RK};function DK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{depthRadius:a,bias:o,alpha:i,beta:l}=s;Re(r,"LRN");let c=r.shape[3],u=c-1,d=n.data.get(r.dataId).values,p=v.sizeFromShape(r.shape),h=new Float32Array(p);function f(m){let g=m%c,y=m-g+Math.max(0,g-a),x=m-g+Math.min(g+a,u),A=0;for(;y<=x;y++){let b=d[y];A+=b*b}return A}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${o} and dilations '${c}'`);let u=N.computePool2DInfo(r.shape,a,o,c,i,l),d;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))d=Br({inputs:{x:r},backend:n});else{let p=n.data.get(r.dataId).values,h=v.computeStrides(r.shape),f=ux(p,r.shape,r.dtype,h,u,"max");d=n.makeTensorInfo(u.outShape,r.dtype,f.values)}return d}var zK={kernelName:Ya,backendName:"cpu",kernelFunc:MK};function LK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{filterSize:a,strides:o,pad:i,dimRoundingMode:l,dataFormat:c}=s;Re(r,"maxPool3d");let u=N.computePool3DInfo(r.shape,a,o,1,i,l,c),d=n.data.get(r.dataId).values,p=mI(d,r.shape,r.dtype,v.computeStrides(r.shape),u,"max");return n.makeTensorInfo(p.shape,"float32",p.values)}var BK={kernelName:yd,backendName:"cpu",kernelFunc:LK};function WK(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a}=t,{filterSize:o,strides:i,pad:l,dimRoundingMode:c}=s;Re([r,a],"maxPool3DGrad");let u=N.computePool3DInfo(a.shape,o,i,1,l,c),d=n.bufferSync(a),p=Rq(d,u),h=u.strideDepth,f=u.strideHeight,m=u.strideWidth,g=u.dilationDepth,y=u.dilationHeight,x=u.dilationWidth,A=u.effectiveFilterDepth,b=u.effectiveFilterHeight,w=u.effectiveFilterWidth,k=A-1-u.padInfo.front,I=w-1-u.padInfo.left,E=b-1-u.padInfo.top,R=ze(a.shape,"float32"),P=n.bufferSync(r);for(let D=0;D=u.outDepth||Math.floor(ne)!==ne))for(let ae=0;ae=u.outHeight||Math.floor(U)!==U))for(let oe=0;oe=u.outWidth||Math.floor(re)!==re)continue;let me=A*b*w-1-p.get(D,ne,U,re,_),Ae=Q*b*w+ae*w+oe,Te=me===Ae?1:0;if(Te===0)continue;Z+=P.get(D,ne,U,re,_)*Te}}}R.set(Z,D,T,O,W,_)}return n.makeTensorInfo(R.shape,R.dtype,R.values)}var VK={kernelName:Zh,backendName:"cpu",kernelFunc:WK};function UK(e){let{inputs:t,backend:n,attrs:s}=e,{dy:r,input:a,output:o}=t,i=a;Re([a,o],"maxPoolGrad");let{filterSize:l,strides:c,pad:u,dimRoundingMode:d}=s,p=N.computePool2DInfo(i.shape,l,c,1,u,d),h=n.data.get(i.dataId).values,f=ze(p.outShape,i.dtype,fI(h,i.shape,i.dtype,p).values),m=p.strideHeight,g=p.strideWidth,y=p.dilationHeight,x=p.dilationWidth,A=p.effectiveFilterHeight,b=p.effectiveFilterWidth,w=b-1-p.padInfo.left,k=A-1-p.padInfo.top,I=ze(i.shape,"float32"),E=n.data.get(r.dataId).values,R=ze(r.shape,"float32",E);for(let P=0;P=p.outHeight||Math.floor(j)!==j))for(let Z=0;Z=p.outWidth||Math.floor(Q)!==Q)continue;let ne=A*b-1-f.get(P,j,Q,D),ae=z*b+Z,U=ne===ae?1:0;if(U===0)continue;X+=R.get(P,j,Q,D)*U}}I.set(X,P,_,T,D)}return n.makeTensorInfo(I.shape,I.dtype,I.values)}var GK={kernelName:Kh,backendName:"cpu",kernelFunc:UK};function HK(e,t,n,s,r){let a=v.computeStrides(t),o=ux(e,t,n,a,r,"max"),i=fI(e,t,n,r,!0,s);return[o.values,i.values]}var jK={kernelName:Yh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:s}=e,{filterSize:r,strides:a,pad:o,includeBatchInIndex:i}=t,l=n;Re(s,"MaxPoolWithArgmax");let c=l.data.get(s.dataId).values,u=N.computePool2DInfo(s.shape,r,a,[1,1],o),[d,p]=HK(c,s.shape,s.dtype,i,u),h=l.write(d,u.outShape,s.dtype),f=l.write(p,u.outShape,s.dtype);return[{dataId:h,shape:u.outShape,dtype:s.dtype},{dataId:f,shape:u.outShape,dtype:"int32"}]}};function qK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a,keepDims:o}=s,i=v.parseAxisParam(a,r.shape),c=N.computeOutAndReduceShapes(r.shape,i)[1],u=v.sizeFromShape(c),d=[],p=n.makeTensorInfo([],"float32",new Float32Array([u]));d.push(p);let h=Uo({inputs:{x:r},backend:n,attrs:{dtype:"float32"}});d.push(h);let f=cx({inputs:{a:h,b:p},backend:n});d.push(f);let m=yp({inputs:{x:f},backend:n,attrs:{axis:a,keepDims:o}});return d.forEach(g=>n.disposeIntermediateTensorInfo(g)),m}var XK={kernelName:Ja,backendName:"cpu",kernelFunc:qK};function KK(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{axis:a,keepDims:o}=s;Re(r,"min");let i=v.parseAxisParam(a,r.shape),l=i,c=N.getAxesPermutation(l,r.shape.length),u=r;c!=null&&(u=Ws({inputs:{x:r},backend:n,attrs:{perm:c}}),l=N.getInnerMostAxes(l.length,r.shape.length)),N.assertAxesAreInnerMostDims("min",l,u.shape.length);let[d,p]=N.computeOutAndReduceShapes(u.shape,l),h=v.sizeFromShape(p),f=v.makeZerosTypedArray(v.sizeFromShape(d),u.dtype),m=n.data.get(u.dataId).values;for(let y=0;yA[0]+r.shape[b]+A[1]),l=a.map(A=>A[0]),c=a.map((A,b)=>A[0]+r.shape[b]),u=o==="reflect"?0:1,d=n.data.get(r.dataId).values,p=r.shape.length,h=v.computeStrides(r.shape),f=v.sizeFromShape(i),m=i.length,g=v.computeStrides(i),y=v.getTypedArrayFromDType(r.dtype,f);for(let A=0;A=c[k]&&(b[k]=(c[k]-1)*2-b[k]+u);b=b.map((k,I)=>k-l[I]);let w=v.locToIndex(b,p,h);y[A]=d[w]}return{dataId:n.write(y,i,r.dtype),shape:i,dtype:r.dtype}}var JK={kernelName:to,backendName:"cpu",kernelFunc:YK},QK=Qt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),eZ=vn(ku,QK),tZ={kernelName:ku,backendName:"cpu",kernelFunc:eZ},nZ=li(Ih());function bI(e){let{inputs:t,backend:n,attrs:s}=e,{logits:r}=t,{dim:a}=s,o=r.shape.length,i=a;if(i===-1&&(i=o-1),i!==o-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${o} and dim was ${i}`);let l=v.parseAxisParam([i],r.shape),c=xI({inputs:{x:r},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),u=N.expandShapeToKeepDim(c.shape,l),d=Pt({inputs:{x:c},backend:n,attrs:{shape:u}}),p=ix({inputs:{a:r,b:d},backend:n}),h=_7({inputs:{x:p},backend:n}),f=yp({inputs:{x:h},backend:n,attrs:{axis:l,keepDims:!1}}),m=Pt({inputs:{x:f},backend:n,attrs:{shape:u}}),g=cx({inputs:{a:h,b:m},backend:n});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),g}var sZ={kernelName:mo,backendName:"cpu",kernelFunc:bI};function rZ(e){let{inputs:t,backend:n,attrs:s}=e,{logits:r}=t,{numSamples:a,seed:o,normalized:i}=s;Re(r,"multinomial");let l=i?r:bI({inputs:{logits:r},backend:n,attrs:{dim:-1}}),c=l.shape[0],u=l.shape[1],d=n.data.get(l.dataId).values,p=[c,a],h=v.makeZerosTypedArray(v.sizeFromShape(p),"int32");for(let f=0;f=0&&u[d]{v.assertShapesMatch(a,u.shape,"All tensors passed to stack must have matching shapes"),v.assert(o===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let i=[],l=t.map(u=>{let d=Om({inputs:{input:u},backend:n,attrs:{dim:r}});return i.push(d),d}),c=oc({inputs:l,backend:n,attrs:{axis:r}});return i.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var xZ={kernelName:Fi,backendName:"cpu",kernelFunc:wI};function bZ(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{paddings:a,constantValue:o}=s;Re(r,"pad");let i=a.map((x,A)=>x[0]+r.shape[A]+x[1]),l=a.map(x=>x[0]),c=n.data.get(r.dataId).values,u=v.sizeFromShape(r.shape),d=r.shape.length,p=v.computeStrides(r.shape),h=v.sizeFromShape(i),f=i.length,m=v.computeStrides(i),g=v.getTypedArrayFromDType(r.dtype,h);o!==0&&g.fill(o);for(let x=0;xk+l[I]),w=v.locToIndex(b,f,m);g[w]=c[x]}return{dataId:n.write(g,i,r.dtype),shape:i,dtype:r.dtype}}var kI={kernelName:so,backendName:"cpu",kernelFunc:bZ},vZ=Qt((e,t)=>Math.pow(e,t)),wZ=vn(ro,vZ),kZ={kernelName:ro,backendName:"cpu",kernelFunc:wZ};function SZ(e){let{backend:t,attrs:n}=e,{start:s,stop:r,dtype:a,step:o}=n,i=ax(s,r,o,a);return t.makeTensorInfo([i.length],a,i)}var IZ={kernelName:Iu,backendName:"cpu",kernelFunc:SZ},CZ=mt(Cu,e=>1/e),TZ={kernelName:Cu,backendName:"cpu",kernelFunc:CZ};function NZ(e){let{inputs:t,backend:n,attrs:s}=e,{images:r}=t,{alignCorners:a,halfPixelCenters:o,size:i}=s;Re(r,"resizeBilinear");let l=v.computeStrides(r.shape),[c,u]=i,[d,p,h,f]=r.shape,m=n.data.get(r.dataId).values,g=new Float32Array(v.sizeFromShape([d,c,u,f])),y=[a&&c>1?p-1:p,a&&u>1?h-1:h],x=[a&&c>1?c-1:c,a&&u>1?u-1:u],A=0,b=y[0]/x[0],w=y[1]/x[1];for(let k=0;k1?c-1:c,o&&h>1?u-1:u],g=[o&&p>1?p-1:p,o&&h>1?h-1:h],y=m[0]/g[0],x=m[1]/g[1],A=n.data.get(a.dataId).values,b=0;for(let w=0;w1?p-1:p,a&&u>1?h-1:h],x=[a&&c>1?c-1:c,a&&u>1?u-1:u],A=y[0]/x[0],b=y[1]/x[1],w=0;for(let k=0;k1?u-1:u,o&&f>1?d-1:d],x=[o&&h>1?h-1:h,o&&f>1?f-1:f],A=y[0]/x[0],b=y[1]/x[1],w=1/A,k=1/b,I=Math.ceil(w)*2+2,E=Math.ceil(k)*2+2;for(let R=0;R=h)continue;let U=P+ae*l[1],oe=ae*A,re=Math.min(u-1,o?Math.round(oe):Math.floor(oe));if(D===re)for(let me=0;me=f)continue;let Te=U+Ae*l[2],Ne=Ae*b,Fe=Math.min(d-1,o?Math.round(Ne):Math.floor(Ne));W===Fe&&(Q+=g[Te+Z])}}m[X+Z]=Q}}}}return n.makeTensorInfo(r.shape,r.dtype,m)}var PZ={kernelName:Qh,backendName:"cpu",kernelFunc:FZ};function OZ(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{dims:a}=s;Re(r,"reverse");let o=r.shape.length,i=v.parseAxisParam(a,r.shape);if(o===0)return Br({inputs:{x:r},backend:n});let l=new sn(r.shape,r.dtype),c=n.bufferSync(r);for(let u=0;up[h]=r.shape[h]-1-p[h]),l.set(c.get(...p),...d)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var MZ={kernelName:Mi,backendName:"cpu",kernelFunc:OZ},zZ={kernelName:Yi,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:s}=e,{radians:r,fillValue:a,center:o}=t,i=n,l=v.getTypedArrayFromDType(s.dtype,v.sizeFromShape(s.shape)),[c,u,d,p]=s.shape,[h,f]=N.getImageCenter(o,u,d),m=255,g=Math.sin(r),y=Math.cos(r),x=i.data.get(s.dataId).values;for(let b=0;b=0&&O=0&&W{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),BZ={kernelName:zi,backendName:"cpu",kernelFunc:LZ};function SI(e,t,n,s,r,a,o,i,l,c){let u=[s/r,r],d=e.values,p=t.values;if(s===0)return ze(n,t.dtype);let h=ze(u,t.dtype);h.values.fill(l);for(let f=0;f=s/r)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||r.shape.length===1?1:v.sizeFromShape(r.shape.slice(1));for(let f=0;fe>=0?jZ*e:HZ*(Math.exp(e)-1)),XZ={kernelName:Nu,backendName:"cpu",kernelFunc:qZ},KZ=mt(Eu,e=>e<0?-1:e>0?1:0),ZZ={kernelName:Eu,backendName:"cpu",kernelFunc:KZ},YZ=mt(co,e=>Math.sin(e)),JZ={kernelName:co,backendName:"cpu",kernelFunc:YZ},QZ=mt(Vi,e=>Math.sinh(e)),eY={kernelName:Vi,backendName:"cpu",kernelFunc:QZ},tY=11920928955078125e-23,II=Math.log(tY)+2,nY=mt(Ru,e=>{let t=e>-II,n=eNumber(g)))),n.makeTensorInfo([m.length],s.dtype,new Int32Array(m))]}var iY={kernelName:xd,backendName:"cpu",kernelFunc:oY};function lY(e){let{inputs:t,backend:n}=e,{inputIndices:s,inputShape:r,newShape:a}=t;if(s.shape.length!==2)throw new Error(`Input indices should be a matrix but received shape + ${o.shape}`);let i=n.data.get(s.dataId).values,l=n.data.get(r.dataId).values,c=n.data.get(a.dataId).values,u=n.data.get(o.dataId).values[0],[d,p,h,f,m]=Z7(i,s.shape,s.dtype,l,r.dtype,c,u);return[n.makeTensorInfo(p,s.dtype,d),n.makeTensorInfo([p[0]],r.dtype,h),n.makeTensorInfo([f.length],"bool",new Uint8Array(f.map(g=>Number(g)))),n.makeTensorInfo([m.length],s.dtype,new Int32Array(m))]}var iY={kernelName:xd,backendName:"cpu",kernelFunc:oY};function lY(e){let{inputs:t,backend:n}=e,{inputIndices:s,inputShape:r,newShape:a}=t;if(s.shape.length!==2)throw new Error(`Input indices should be a matrix but received shape ${s.shape}`);if(r.shape.length!==1)throw new Error(`Input shape should be a vector but received shape - ${r.shape}`);if(a.shape.length!==1)throw new Error(`Target shape should be a vector but received shape ${a.shape}`);let o=Array.from(n.data.get(r.dataId).values),i=n.data.get(s.dataId).values,l=Array.from(n.data.get(a.dataId).values),[c,u,d]=YI(i,s.shape,s.dtype,o,l);return[n.makeTensorInfo(u,s.dtype,c),n.makeTensorInfo([d.length],a.dtype,new Int32Array(d))]}var uY={kernelName:_u,backendName:"cpu",kernelFunc:lY};function cY(e){let{inputs:t,backend:n}=e,{data:s,indices:r,segmentIds:a}=t;if(s.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(r.shape.length!==1)throw new Error(`Indices should be a vector but received shape + ${r.shape}`);if(a.shape.length!==1)throw new Error(`Target shape should be a vector but received shape ${a.shape}`);let o=Array.from(n.data.get(r.dataId).values),i=n.data.get(s.dataId).values,l=Array.from(n.data.get(a.dataId).values),[c,u,d]=Y7(i,s.shape,s.dtype,o,l);return[n.makeTensorInfo(u,s.dtype,c),n.makeTensorInfo([d.length],a.dtype,new Int32Array(d))]}var uY={kernelName:_u,backendName:"cpu",kernelFunc:lY};function cY(e){let{inputs:t,backend:n}=e,{data:s,indices:r,segmentIds:a}=t;if(s.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(r.shape.length!==1)throw new Error(`Indices should be a vector but received shape ${r.shape}`);if(a.shape.length!==1)throw new Error(`Segment ids should be a vector but received shape ${a.shape}`);if(r.shape[0]!==a.shape[0])throw new Error("segmentIds and indices should have same size.");let o=n.data.get(s.dataId).values,i=n.data.get(r.dataId).values,l=n.data.get(a.dataId).values,[c,u]=ox(o,s.shape,s.dtype,i,l,!0);return n.makeTensorInfo(u,s.dtype,c)}var dY={kernelName:bd,backendName:"cpu",kernelFunc:cY};function pY(e){let{inputs:t,backend:n}=e,{data:s,indices:r,segmentIds:a}=t;if(s.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(r.shape.length!==1)throw new Error(`Indices should be a vector but received shape ${r.shape}`);if(a.shape.length!==1)throw new Error(`Segment ids should be a vector but received shape - ${a.shape}`);if(r.shape[0]!==a.shape[0])throw new Error("segmentIds and indices should have same size.");let o=n.data.get(s.dataId).values,i=n.data.get(r.dataId).values,l=n.data.get(a.dataId).values,[c,u]=ox(o,s.shape,s.dtype,i,l);return n.makeTensorInfo(u,s.dtype,c)}var hY={kernelName:vd,backendName:"cpu",kernelFunc:pY};function fY(e){let{inputs:t,backend:n,attrs:s}=e,{sparseIndices:r,sparseValues:a,defaultValue:o}=t,{outputShape:i}=s,{sliceRank:l,numUpdates:c,sliceSize:u,strides:d,outputSize:p}=N.calculateShapes(a,r,i),h=!1,f=n.bufferSync(r),m=n.bufferSync(a),g=n.data.get(o.dataId).values[0],y=S7(f,m,i,p,u,c,l,d,g,h);return n.makeTensorInfo(i,y.dtype,y.values)}var mY={kernelName:wd,backendName:"cpu",kernelFunc:fY};function gY(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{numOrSizeSplits:a,axis:o}=s,i=v.parseAxisParam(o,r.shape)[0],l=N.prepareSplitSize(r,a,i),c=new Array(r.shape.length).fill(0),u=r.shape.slice();return l.map(d=>{let p=[...u];p[i]=d;let h=Sl({inputs:{x:r},backend:n,attrs:{begin:c,size:p}});return c[i]+=d,h})}var yY={kernelName:Gi,backendName:"cpu",kernelFunc:gY},AY={kernelName:Du,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,s=t;Re(n,"square");let r=s.data.get(n.dataId).values,a=new Float32Array(r.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),bY={kernelName:bo,backendName:"cpu",kernelFunc:xY};function vY(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{begin:a,end:o,strides:i,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:d,shrinkAxisMask:p}=s;Re(r,"stridedSlice");let{finalShapeSparse:h,finalShape:f,isIdentity:m,sliceDim0:g,isSimpleSlice:y,begin:x,end:A,strides:b}=Mt.sliceInfo(r.shape,a,o,i,l,c,u,d,p),w;if(m)w=Pt({inputs:{x:r},backend:n,attrs:{shape:f}});else if(g||y){v.assert(r.shape.length>=1,()=>`Input must have rank at least 1, got: ${r.shape.length}`);let k=Mt.computeOutShape(x,A,b),I=Sl({inputs:{x:r},backend:n,attrs:{begin:x,size:k}});w=Pt({inputs:{x:I},backend:n,attrs:{shape:f}}),n.disposeIntermediateTensorInfo(I)}else{let k=n.bufferSync(r),I=QI(h,k,b,x);w=n.makeTensorInfo(f,I.dtype,I.values)}return w}var wY={kernelName:Hi,backendName:"cpu",kernelFunc:vY};function kY(e){let{inputs:t,backend:n,attrs:s}=e,{separator:r,nGramWidths:a,leftPad:o,rightPad:i,padWidth:l,preserveShortSequences:c}=s,{data:u,dataSplits:d}=t,p=n.data.get(u.dataId).values,h=n.data.get(d.dataId).values,[f,m]=e7(p,h,r,a,o,i,l,c);return[n.makeTensorInfo([f.length],"string",f),n.makeTensorInfo(d.shape,"int32",m)]}var SY={kernelName:kd,backendName:"cpu",kernelFunc:kY};function IY(e){let{inputs:t,backend:n,attrs:s}=e,{skipEmpty:r}=s,{input:a,delimiter:o}=t;if(a.dtype!=="string")throw new Error("Input must be of datatype string");if(a.shape.length!==1)throw new Error(`Input must be a vector, got shape: ${a.shape}`);if(o.shape.length!==0)throw new Error(`Delimiter must be a scalar, got shape: ${o.shape}`);let i=n.data.get(a.dataId).values,l=n.data.get(o.dataId).values[0],[c,u,d]=t7(i,l,r),p=u.length;return[n.makeTensorInfo([p,2],"int32",c),n.makeTensorInfo([p],"string",u),n.makeTensorInfo([2],"int32",new Int32Array(d))]}var CY={kernelName:tf,backendName:"cpu",kernelFunc:IY};function TY(e){let{inputs:t,backend:n,attrs:s}=e,{numBuckets:r}=s,{input:a}=t;if(a.dtype!=="string")throw new Error("Input must be of datatype string");if(r<=0)throw new Error("Number of buckets must be at least 1");let o=n.data.get(a.dataId).values,i=n7(o,r);return n.makeTensorInfo(a.shape,"int32",i)}var NY={kernelName:nf,backendName:"cpu",kernelFunc:TY},EY=mt(ji,e=>Math.tan(e)),RY={kernelName:ji,backendName:"cpu",kernelFunc:EY},_Y=mt(Ao,e=>Math.tanh(e)),DY={kernelName:Ao,backendName:"cpu",kernelFunc:_Y};function $Y(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{reps:a}=s;Re(r,"tile");let o=r7(n.bufferSync(r),a);return n.makeTensorInfo(o.shape,o.dtype,o.values)}var FY={kernelName:Kr,backendName:"cpu",kernelFunc:$Y};function PY(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{k:a,sorted:o}=s;Re(r,"topk");let i=n.data.get(r.dataId).values,[l,c]=o7(i,r.shape,r.dtype,a,o);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var OY={kernelName:qi,backendName:"cpu",kernelFunc:PY};function MY(e){let{inputs:t,attrs:n,backend:s}=e,{image:r,transforms:a}=t,{interpolation:o,fillMode:i,fillValue:l,outputShape:c}=n,[u,d,p,h]=r.shape,[f,m]=c!=null?c:[d,p],g=[u,f,m,h],y=v.computeStrides(r.shape),x=y[0],A=y[1],b=y[2],w=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(g));w.fill(l);let k=s.data.get(r.dataId).values,I=s.data.get(a.dataId).values;for(let R=0;Rt-1)if(t<=1)n=0;else{let s=2*t;n-=s*Math.trunc(n/s),n>=t&&(n=s-n-1)}return v.clamp(0,n,t-1)}function BY(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let s=t-1;n+=t*(Math.trunc(-n/s)+1)}else if(n>t-1)if(t<=1)n=0;else{let s=t-1;n-=t*Math.trunc(n/s)}return v.clamp(0,n,t-1)}function WY(e,t){return e}function VY(e,t){return v.clamp(0,e,t-1)}function Ap(e,t,n,s,r,a,o,i,l,c,u){let d=o*s+i*r+l*a+c;return 0<=i&&in.disposeIntermediateTensorInfo(f)),h}var ZY={kernelName:Sd,backendName:"cpu",kernelFunc:KY},YY=[rq,ZH,oq,lq,nj,cq,pq,fq,gq,Aq,bq,wq,Sq,Tq,Eq,Dq,Fq,Oq,zq,nq,Bq,Vq,Gq,jq,ej,rj,Xq,YH,Zq,Jq,tX,sX,Qq,iX,uX,aX,dX,hX,mX,yX,xX,vX,wX,SX,CX,NX,EX,_X,RX,dx,FX,Kj,OX,aj,GX,oj,HX,lj,YX,JX,eK,cj,sK,aK,iK,uK,dK,pj,fj,JH,hK,Yq,mK,yK,xK,Zj,gj,Aj,vK,bj,kK,CK,NK,_K,$K,PK,wj,zK,BK,VK,GK,jK,OK,XK,ZK,Sj,JK,tZ,aZ,Cj,Nj,lZ,dZ,fZ,Rj,gZ,AZ,xZ,k7,kZ,Jj,$j,IZ,QH,TZ,Qj,eq,tq,EZ,_Z,$Z,PZ,MZ,zZ,BZ,Pj,VZ,GZ,XZ,Mj,ZZ,JZ,eY,zj,sZ,sY,aY,iY,uY,dY,hY,mY,yY,Wj,AY,Uj,bY,wY,SY,CY,NY,qj,DX,RY,DY,FY,OY,_j,zY,jY,XY,ZY,yZ];for(let e of YY)dr(e);var T7={};Me(T7,{assertNotComplex:()=>lc,bindCanvasToFramebuffer:()=>uJ,bindColorTextureToFramebuffer:()=>Wm,bindTextureToProgramUniformSampler:()=>V7,bindTextureUnit:()=>L7,bindVertexBufferToProgramAttribute:()=>gx,callAndCheck:()=>ke,canBeRepresented:()=>N7,createFragmentShader:()=>_7,createFramebuffer:()=>z7,createProgram:()=>D7,createStaticIndexBuffer:()=>P7,createStaticVertexBuffer:()=>F7,createTexture:()=>O7,createVertexShader:()=>R7,getBatchDim:()=>Cl,getExtensionOrThrow:()=>vp,getFramebufferErrorMessage:()=>U7,getMaxTexturesInShader:()=>q7,getNumChannels:()=>iJ,getProgramUniformLocation:()=>W7,getProgramUniformLocationOrThrow:()=>B7,getRowsCols:()=>Tl,getShapeAs3D:()=>Vm,getTextureShapeFromLogicalShape:()=>H7,getWebGLDisjointQueryTimerVersion:()=>X7,getWebGLErrorMessage:()=>E7,getWebGLMaxTextureSize:()=>j7,hasExtension:()=>Us,isCapableOfRenderingToFloatTexture:()=>K7,isDownloadFloatTextureEnabled:()=>Z7,isReshapeFree:()=>kp,isWebGLFenceEnabled:()=>Y7,isWebGLVersionEnabled:()=>Ax,linkProgram:()=>$7,resetMaxTextureSize:()=>cJ,resetMaxTexturesInShader:()=>dJ,unbindColorTextureFromFramebuffer:()=>yx,unbindTextureUnit:()=>lJ,validateFramebuffer:()=>wp,validateProgram:()=>Bm,validateTextureSize:()=>M7});var Il={},fx={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function zm(e,t){Il[e]=t}function Wr(e){if(!(e in Il)){let n=QY(e);if(n!==null)Il[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=Il[e];return t==null||t.isContextLost()?(delete Il[e],Wr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),Il[e])}function JY(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function QY(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=JY(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete Il[e]},!1),e===1?t.getContext("webgl",fx)||t.getContext("experimental-webgl",fx):t.getContext("webgl2",fx)}var xp;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(xp||(xp={}));var Vs;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Vs||(Vs={}));var In;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(In||(In={}));function bp(e,t){return[t,e]}function eJ(e,t){return e*t}function Lm(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function ic(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function tJ(e,t){let[n,s]=ic(e,t);return n*s*4}function mx(e,t){let n=e,s,r,a,o,i,l,c,u,d,p;return Y().getNumber("WEBGL_VERSION")===2?(s=n.R32F,r=n.R16F,a=n.RGBA16F,o=n.RGBA32F,i=n.RED,c=4,u=1,d=n.HALF_FLOAT,p=n.FLOAT,l=n.RGBA8):(s=e.RGBA,r=e.RGBA,a=e.RGBA,o=n.RGBA,i=e.RGBA,c=4,u=4,d=t!=null?t.HALF_FLOAT_OES:null,p=e.FLOAT,l=e.RGBA),{internalFormatFloat:s,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:a,internalFormatPackedFloat:o,textureFormatFloat:i,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:u,textureTypeHalfFloat:d,textureTypeFloat:p}}function ke(e,t){let n=t();return Y().getBool("DEBUG")&&nJ(e),n}function nJ(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+E7(e,t))}var sJ=596e-10,rJ=65504;function N7(e){return!!(Y().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||sJe.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function R7(e,t){let n=oa(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(ke(e,()=>e.shaderSource(n,t)),ke(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function _7(e,t){let n=oa(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(ke(e,()=>e.shaderSource(n,t)),ke(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw oJ(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var aJ=/ERROR: [0-9]+:([0-9]+):/g;function oJ(e,t){let n=aJ.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let s=+n[1],r=e.split(` + ${a.shape}`);if(r.shape[0]!==a.shape[0])throw new Error("segmentIds and indices should have same size.");let o=n.data.get(s.dataId).values,i=n.data.get(r.dataId).values,l=n.data.get(a.dataId).values,[c,u]=ox(o,s.shape,s.dtype,i,l);return n.makeTensorInfo(u,s.dtype,c)}var hY={kernelName:vd,backendName:"cpu",kernelFunc:pY};function fY(e){let{inputs:t,backend:n,attrs:s}=e,{sparseIndices:r,sparseValues:a,defaultValue:o}=t,{outputShape:i}=s,{sliceRank:l,numUpdates:c,sliceSize:u,strides:d,outputSize:p}=N.calculateShapes(a,r,i),h=!1,f=n.bufferSync(r),m=n.bufferSync(a),g=n.data.get(o.dataId).values[0],y=SI(f,m,i,p,u,c,l,d,g,h);return n.makeTensorInfo(i,y.dtype,y.values)}var mY={kernelName:wd,backendName:"cpu",kernelFunc:fY};function gY(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{numOrSizeSplits:a,axis:o}=s,i=v.parseAxisParam(o,r.shape)[0],l=N.prepareSplitSize(r,a,i),c=new Array(r.shape.length).fill(0),u=r.shape.slice();return l.map(d=>{let p=[...u];p[i]=d;let h=Sl({inputs:{x:r},backend:n,attrs:{begin:c,size:p}});return c[i]+=d,h})}var yY={kernelName:Gi,backendName:"cpu",kernelFunc:gY},AY={kernelName:Du,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,s=t;Re(n,"square");let r=s.data.get(n.dataId).values,a=new Float32Array(r.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),bY={kernelName:bo,backendName:"cpu",kernelFunc:xY};function vY(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{begin:a,end:o,strides:i,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:d,shrinkAxisMask:p}=s;Re(r,"stridedSlice");let{finalShapeSparse:h,finalShape:f,isIdentity:m,sliceDim0:g,isSimpleSlice:y,begin:x,end:A,strides:b}=Mt.sliceInfo(r.shape,a,o,i,l,c,u,d,p),w;if(m)w=Pt({inputs:{x:r},backend:n,attrs:{shape:f}});else if(g||y){v.assert(r.shape.length>=1,()=>`Input must have rank at least 1, got: ${r.shape.length}`);let k=Mt.computeOutShape(x,A,b),I=Sl({inputs:{x:r},backend:n,attrs:{begin:x,size:k}});w=Pt({inputs:{x:I},backend:n,attrs:{shape:f}}),n.disposeIntermediateTensorInfo(I)}else{let k=n.bufferSync(r),I=Q7(h,k,b,x);w=n.makeTensorInfo(f,I.dtype,I.values)}return w}var wY={kernelName:Hi,backendName:"cpu",kernelFunc:vY};function kY(e){let{inputs:t,backend:n,attrs:s}=e,{separator:r,nGramWidths:a,leftPad:o,rightPad:i,padWidth:l,preserveShortSequences:c}=s,{data:u,dataSplits:d}=t,p=n.data.get(u.dataId).values,h=n.data.get(d.dataId).values,[f,m]=eI(p,h,r,a,o,i,l,c);return[n.makeTensorInfo([f.length],"string",f),n.makeTensorInfo(d.shape,"int32",m)]}var SY={kernelName:kd,backendName:"cpu",kernelFunc:kY};function IY(e){let{inputs:t,backend:n,attrs:s}=e,{skipEmpty:r}=s,{input:a,delimiter:o}=t;if(a.dtype!=="string")throw new Error("Input must be of datatype string");if(a.shape.length!==1)throw new Error(`Input must be a vector, got shape: ${a.shape}`);if(o.shape.length!==0)throw new Error(`Delimiter must be a scalar, got shape: ${o.shape}`);let i=n.data.get(a.dataId).values,l=n.data.get(o.dataId).values[0],[c,u,d]=tI(i,l,r),p=u.length;return[n.makeTensorInfo([p,2],"int32",c),n.makeTensorInfo([p],"string",u),n.makeTensorInfo([2],"int32",new Int32Array(d))]}var CY={kernelName:tf,backendName:"cpu",kernelFunc:IY};function TY(e){let{inputs:t,backend:n,attrs:s}=e,{numBuckets:r}=s,{input:a}=t;if(a.dtype!=="string")throw new Error("Input must be of datatype string");if(r<=0)throw new Error("Number of buckets must be at least 1");let o=n.data.get(a.dataId).values,i=nI(o,r);return n.makeTensorInfo(a.shape,"int32",i)}var NY={kernelName:nf,backendName:"cpu",kernelFunc:TY},EY=mt(ji,e=>Math.tan(e)),RY={kernelName:ji,backendName:"cpu",kernelFunc:EY},_Y=mt(Ao,e=>Math.tanh(e)),DY={kernelName:Ao,backendName:"cpu",kernelFunc:_Y};function $Y(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{reps:a}=s;Re(r,"tile");let o=rI(n.bufferSync(r),a);return n.makeTensorInfo(o.shape,o.dtype,o.values)}var FY={kernelName:Kr,backendName:"cpu",kernelFunc:$Y};function PY(e){let{inputs:t,backend:n,attrs:s}=e,{x:r}=t,{k:a,sorted:o}=s;Re(r,"topk");let i=n.data.get(r.dataId).values,[l,c]=oI(i,r.shape,r.dtype,a,o);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var OY={kernelName:qi,backendName:"cpu",kernelFunc:PY};function MY(e){let{inputs:t,attrs:n,backend:s}=e,{image:r,transforms:a}=t,{interpolation:o,fillMode:i,fillValue:l,outputShape:c}=n,[u,d,p,h]=r.shape,[f,m]=c!=null?c:[d,p],g=[u,f,m,h],y=v.computeStrides(r.shape),x=y[0],A=y[1],b=y[2],w=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(g));w.fill(l);let k=s.data.get(r.dataId).values,I=s.data.get(a.dataId).values;for(let R=0;Rt-1)if(t<=1)n=0;else{let s=2*t;n-=s*Math.trunc(n/s),n>=t&&(n=s-n-1)}return v.clamp(0,n,t-1)}function BY(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let s=t-1;n+=t*(Math.trunc(-n/s)+1)}else if(n>t-1)if(t<=1)n=0;else{let s=t-1;n-=t*Math.trunc(n/s)}return v.clamp(0,n,t-1)}function WY(e,t){return e}function VY(e,t){return v.clamp(0,e,t-1)}function Ap(e,t,n,s,r,a,o,i,l,c,u){let d=o*s+i*r+l*a+c;return 0<=i&&in.disposeIntermediateTensorInfo(f)),h}var ZY={kernelName:Sd,backendName:"cpu",kernelFunc:KY},YY=[rq,ZH,oq,lq,nj,cq,pq,fq,gq,Aq,bq,wq,Sq,Tq,Eq,Dq,Fq,Oq,zq,nq,Bq,Vq,Gq,jq,ej,rj,Xq,YH,Zq,Jq,tX,sX,Qq,iX,uX,aX,dX,hX,mX,yX,xX,vX,wX,SX,CX,NX,EX,_X,RX,dx,FX,Kj,OX,aj,GX,oj,HX,lj,YX,JX,eK,cj,sK,aK,iK,uK,dK,pj,fj,JH,hK,Yq,mK,yK,xK,Zj,gj,Aj,vK,bj,kK,CK,NK,_K,$K,PK,wj,zK,BK,VK,GK,jK,OK,XK,ZK,Sj,JK,tZ,aZ,Cj,Nj,lZ,dZ,fZ,Rj,gZ,AZ,xZ,kI,kZ,Jj,$j,IZ,QH,TZ,Qj,eq,tq,EZ,_Z,$Z,PZ,MZ,zZ,BZ,Pj,VZ,GZ,XZ,Mj,ZZ,JZ,eY,zj,sZ,sY,aY,iY,uY,dY,hY,mY,yY,Wj,AY,Uj,bY,wY,SY,CY,NY,qj,DX,RY,DY,FY,OY,_j,zY,jY,XY,ZY,yZ];for(let e of YY)dr(e);var TI={};Me(TI,{assertNotComplex:()=>lc,bindCanvasToFramebuffer:()=>uJ,bindColorTextureToFramebuffer:()=>Wm,bindTextureToProgramUniformSampler:()=>VI,bindTextureUnit:()=>LI,bindVertexBufferToProgramAttribute:()=>gx,callAndCheck:()=>ke,canBeRepresented:()=>NI,createFragmentShader:()=>_I,createFramebuffer:()=>zI,createProgram:()=>DI,createStaticIndexBuffer:()=>PI,createStaticVertexBuffer:()=>FI,createTexture:()=>OI,createVertexShader:()=>RI,getBatchDim:()=>Cl,getExtensionOrThrow:()=>vp,getFramebufferErrorMessage:()=>UI,getMaxTexturesInShader:()=>qI,getNumChannels:()=>iJ,getProgramUniformLocation:()=>WI,getProgramUniformLocationOrThrow:()=>BI,getRowsCols:()=>Tl,getShapeAs3D:()=>Vm,getTextureShapeFromLogicalShape:()=>HI,getWebGLDisjointQueryTimerVersion:()=>XI,getWebGLErrorMessage:()=>EI,getWebGLMaxTextureSize:()=>jI,hasExtension:()=>Us,isCapableOfRenderingToFloatTexture:()=>KI,isDownloadFloatTextureEnabled:()=>ZI,isReshapeFree:()=>kp,isWebGLFenceEnabled:()=>YI,isWebGLVersionEnabled:()=>Ax,linkProgram:()=>$I,resetMaxTextureSize:()=>cJ,resetMaxTexturesInShader:()=>dJ,unbindColorTextureFromFramebuffer:()=>yx,unbindTextureUnit:()=>lJ,validateFramebuffer:()=>wp,validateProgram:()=>Bm,validateTextureSize:()=>MI});var Il={},fx={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function zm(e,t){Il[e]=t}function Wr(e){if(!(e in Il)){let n=QY(e);if(n!==null)Il[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=Il[e];return t==null||t.isContextLost()?(delete Il[e],Wr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),Il[e])}function JY(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function QY(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=JY(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete Il[e]},!1),e===1?t.getContext("webgl",fx)||t.getContext("experimental-webgl",fx):t.getContext("webgl2",fx)}var xp;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(xp||(xp={}));var Vs;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Vs||(Vs={}));var In;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(In||(In={}));function bp(e,t){return[t,e]}function eJ(e,t){return e*t}function Lm(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function ic(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function tJ(e,t){let[n,s]=ic(e,t);return n*s*4}function mx(e,t){let n=e,s,r,a,o,i,l,c,u,d,p;return Y().getNumber("WEBGL_VERSION")===2?(s=n.R32F,r=n.R16F,a=n.RGBA16F,o=n.RGBA32F,i=n.RED,c=4,u=1,d=n.HALF_FLOAT,p=n.FLOAT,l=n.RGBA8):(s=e.RGBA,r=e.RGBA,a=e.RGBA,o=n.RGBA,i=e.RGBA,c=4,u=4,d=t!=null?t.HALF_FLOAT_OES:null,p=e.FLOAT,l=e.RGBA),{internalFormatFloat:s,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:a,internalFormatPackedFloat:o,textureFormatFloat:i,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:u,textureTypeHalfFloat:d,textureTypeFloat:p}}function ke(e,t){let n=t();return Y().getBool("DEBUG")&&nJ(e),n}function nJ(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+EI(e,t))}var sJ=596e-10,rJ=65504;function NI(e){return!!(Y().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||sJe.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function RI(e,t){let n=oa(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(ke(e,()=>e.shaderSource(n,t)),ke(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function _I(e,t){let n=oa(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(ke(e,()=>e.shaderSource(n,t)),ke(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw oJ(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var aJ=/ERROR: [0-9]+:([0-9]+):/g;function oJ(e,t){let n=aJ.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let s=+n[1],r=e.split(` `),a=r.length.toString().length+2,o=r.map((d,p)=>v.rightPad((p+1).toString(),a)+d),i=0;for(let d=0;de.createProgram(),"Unable to create WebGLProgram.")}function $7(e,t){if(ke(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function Bm(e,t){if(ke(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function F7(e,t){let n=oa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),ke(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function P7(e,t){let n=oa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return ke(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),ke(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function iJ(){return Y().getNumber("WEBGL_VERSION")===2?1:4}function O7(e){return oa(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function M7(e,t){let n=Y().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let s=`[${e}x${t}]`;throw new Error("Requested texture size "+s+" is invalid.")}if(e>n||t>n){let s=`[${e}x${t}]`,r=`[${n}x${n}]`;throw new Error("Requested texture size "+s+" greater than WebGL maximum on this browser / GPU "+r+".")}}function z7(e){return oa(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function gx(e,t,n,s,r,a,o){let i=e.getAttribLocation(t,n);return i===-1?!1:(ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,s)),ke(e,()=>e.vertexAttribPointer(i,r,e.FLOAT,!1,a,o)),ke(e,()=>e.enableVertexAttribArray(i)),!0)}function L7(e,t,n){G7(e,n),ke(e,()=>e.activeTexture(e.TEXTURE0+n)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function lJ(e,t){G7(e,t),ke(e,()=>e.activeTexture(e.TEXTURE0+t)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function B7(e,t,n){return oa(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function W7(e,t,n){return e.getUniformLocation(t,n)}function V7(e,t,n,s){ke(e,()=>L7(e,t,s)),ke(e,()=>e.uniform1i(n,s))}function uJ(e){ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),ke(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),ke(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function Wm(e,t,n){ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),ke(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function yx(e,t){ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),ke(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function wp(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+U7(e,t))}function U7(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function oa(e,t,n){let s=ke(e,()=>t());if(s==null)throw new Error(n);return s}function G7(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,s=t+e.TEXTURE0;if(sn){let r=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${r}.`)}}function Cl(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function Tl(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Vm(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[Cl(e),...Tl(e)]),t}function H7(e,t=!1){let n=Y().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((r,a)=>a>=e.length-2?v.nearestLargerEven(e[a]):e[a]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let s=v.sizeFromShape(e);if(e.length<=1&&s<=n)return[1,s];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let r=Cl(e),a=2,o=2;return e.length&&([a,o]=Tl(e)),s=r*(a/2)*(o/2),v.sizeToSquarishShape(s).map(i=>i*2)}return v.sizeToSquarishShape(s)}function Um(e){return e%2==0}function kp(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],s=t.slice(-1)[0];if(n===s||Um(n)&&Um(s)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&Um(e[0])&&Um(t[0])}var Gm,Hm;function j7(e){if(Gm==null){let t=Wr(e);Gm=t.getParameter(t.MAX_TEXTURE_SIZE)}return Gm}function cJ(){Gm=null}function dJ(){Hm=null}function q7(e){if(Hm==null){let t=Wr(e);Hm=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Hm)}function X7(e){if(e===0)return 0;let t,n=Wr(e);return Us(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Us(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function Us(e,t){return e.getExtension(t)!=null}function Ax(e){try{if(Wr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function K7(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Us(t,"OES_texture_float"))return!1}else if(!Us(t,"EXT_color_buffer_float"))return!1;return xx(t)}function Z7(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Us(t,"OES_texture_float")||!Us(t,"WEBGL_color_buffer_float"))return!1}else{if(Us(t,"EXT_color_buffer_float"))return xx(t);let s="EXT_color_buffer_half_float";if(Us(t,s)){let r=t.getExtension(s);return pJ(t,r)}return!1}return xx(t)}function xx(e){let t=mx(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let s=1,r=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,s,r,0,t.textureFormatFloat,t.textureTypeFloat,null);let a=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,a),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(a),o}function pJ(e,t){let n=mx(e,t),s=e.createTexture();e.bindTexture(e.TEXTURE_2D,s);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,r,a,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let o=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,o),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(s),e.deleteFramebuffer(o),i}function Y7(e){return e!==2?!1:Wr(e).fenceSync!=null}function lc(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var $e=Y();$e.registerFlag("HAS_WEBGL",()=>$e.getNumber("WEBGL_VERSION")>0);$e.registerFlag("WEBGL_VERSION",()=>Ax(2)?2:Ax(1)?1:0);$e.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);$e.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>$e.get("WEBGL_VERSION")===2);$e.registerFlag("WEBGL_CPU_FORWARD",()=>!0);$e.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);$e.registerFlag("WEBGL_PACK",()=>$e.getBool("HAS_WEBGL"));$e.registerFlag("WEBGL_PACK_NORMALIZATION",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_CLIP",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_REDUCE",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_LAZILY_UNPACK",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_CONV_IM2COL",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>j7($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>q7($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=$e.getNumber("WEBGL_VERSION");return e===0?0:X7(e)});$e.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>$e.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Pu.isMobile());$e.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>K7($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>$e.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:$e.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));$e.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>Z7($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_FENCE_API_ENABLED",()=>Y7($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>$e.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);$e.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});$e.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Pu.isMobile()?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});$e.registerFlag("CPU_HANDOFF_SIZE_THRESHOLD",()=>128);$e.registerFlag("WEBGL_USE_SHAPES_UNIFORMS",()=>!1);$e.registerFlag("TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD",()=>1e5);$e.registerFlag("TOPK_K_CPU_HANDOFF_THRESHOLD",()=>128);function Gn(){let e,t,n,s,r,a,o,i,l,c;return Y().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",s="in",r="texture",a="outputColor",o="out vec4 outputColor;",i=` +`))}function DI(e){return oa(e,()=>e.createProgram(),"Unable to create WebGLProgram.")}function $I(e,t){if(ke(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function Bm(e,t){if(ke(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function FI(e,t){let n=oa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),ke(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function PI(e,t){let n=oa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return ke(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),ke(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function iJ(){return Y().getNumber("WEBGL_VERSION")===2?1:4}function OI(e){return oa(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function MI(e,t){let n=Y().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let s=`[${e}x${t}]`;throw new Error("Requested texture size "+s+" is invalid.")}if(e>n||t>n){let s=`[${e}x${t}]`,r=`[${n}x${n}]`;throw new Error("Requested texture size "+s+" greater than WebGL maximum on this browser / GPU "+r+".")}}function zI(e){return oa(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function gx(e,t,n,s,r,a,o){let i=e.getAttribLocation(t,n);return i===-1?!1:(ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,s)),ke(e,()=>e.vertexAttribPointer(i,r,e.FLOAT,!1,a,o)),ke(e,()=>e.enableVertexAttribArray(i)),!0)}function LI(e,t,n){GI(e,n),ke(e,()=>e.activeTexture(e.TEXTURE0+n)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function lJ(e,t){GI(e,t),ke(e,()=>e.activeTexture(e.TEXTURE0+t)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function BI(e,t,n){return oa(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function WI(e,t,n){return e.getUniformLocation(t,n)}function VI(e,t,n,s){ke(e,()=>LI(e,t,s)),ke(e,()=>e.uniform1i(n,s))}function uJ(e){ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),ke(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),ke(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function Wm(e,t,n){ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),ke(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function yx(e,t){ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),ke(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function wp(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+UI(e,t))}function UI(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function oa(e,t,n){let s=ke(e,()=>t());if(s==null)throw new Error(n);return s}function GI(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,s=t+e.TEXTURE0;if(sn){let r=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${r}.`)}}function Cl(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function Tl(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Vm(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[Cl(e),...Tl(e)]),t}function HI(e,t=!1){let n=Y().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((r,a)=>a>=e.length-2?v.nearestLargerEven(e[a]):e[a]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let s=v.sizeFromShape(e);if(e.length<=1&&s<=n)return[1,s];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let r=Cl(e),a=2,o=2;return e.length&&([a,o]=Tl(e)),s=r*(a/2)*(o/2),v.sizeToSquarishShape(s).map(i=>i*2)}return v.sizeToSquarishShape(s)}function Um(e){return e%2==0}function kp(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],s=t.slice(-1)[0];if(n===s||Um(n)&&Um(s)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&Um(e[0])&&Um(t[0])}var Gm,Hm;function jI(e){if(Gm==null){let t=Wr(e);Gm=t.getParameter(t.MAX_TEXTURE_SIZE)}return Gm}function cJ(){Gm=null}function dJ(){Hm=null}function qI(e){if(Hm==null){let t=Wr(e);Hm=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Hm)}function XI(e){if(e===0)return 0;let t,n=Wr(e);return Us(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Us(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function Us(e,t){return e.getExtension(t)!=null}function Ax(e){try{if(Wr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function KI(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Us(t,"OES_texture_float"))return!1}else if(!Us(t,"EXT_color_buffer_float"))return!1;return xx(t)}function ZI(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Us(t,"OES_texture_float")||!Us(t,"WEBGL_color_buffer_float"))return!1}else{if(Us(t,"EXT_color_buffer_float"))return xx(t);let s="EXT_color_buffer_half_float";if(Us(t,s)){let r=t.getExtension(s);return pJ(t,r)}return!1}return xx(t)}function xx(e){let t=mx(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let s=1,r=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,s,r,0,t.textureFormatFloat,t.textureTypeFloat,null);let a=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,a),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(a),o}function pJ(e,t){let n=mx(e,t),s=e.createTexture();e.bindTexture(e.TEXTURE_2D,s);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,r,a,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let o=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,o),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(s),e.deleteFramebuffer(o),i}function YI(e){return e!==2?!1:Wr(e).fenceSync!=null}function lc(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var $e=Y();$e.registerFlag("HAS_WEBGL",()=>$e.getNumber("WEBGL_VERSION")>0);$e.registerFlag("WEBGL_VERSION",()=>Ax(2)?2:Ax(1)?1:0);$e.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);$e.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>$e.get("WEBGL_VERSION")===2);$e.registerFlag("WEBGL_CPU_FORWARD",()=>!0);$e.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);$e.registerFlag("WEBGL_PACK",()=>$e.getBool("HAS_WEBGL"));$e.registerFlag("WEBGL_PACK_NORMALIZATION",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_CLIP",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_PACK_REDUCE",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_LAZILY_UNPACK",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_CONV_IM2COL",()=>$e.getBool("WEBGL_PACK"));$e.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>jI($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>qI($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=$e.getNumber("WEBGL_VERSION");return e===0?0:XI(e)});$e.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>$e.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Pu.isMobile());$e.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>KI($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>$e.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:$e.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));$e.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>ZI($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_FENCE_API_ENABLED",()=>YI($e.getNumber("WEBGL_VERSION")));$e.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>$e.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);$e.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});$e.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Pu.isMobile()?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});$e.registerFlag("CPU_HANDOFF_SIZE_THRESHOLD",()=>128);$e.registerFlag("WEBGL_USE_SHAPES_UNIFORMS",()=>!1);$e.registerFlag("TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD",()=>1e5);$e.registerFlag("TOPK_K_CPU_HANDOFF_THRESHOLD",()=>128);function Gn(){let e,t,n,s,r,a,o,i,l,c;return Y().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",s="in",r="texture",a="outputColor",o="out vec4 outputColor;",i=` bool isnan_custom(float val) { return (val > 0.0 || val < 0.0) ? false : val != 0.0; } @@ -111,7 +111,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee int getFlatIndex(ivec3 coords) { return coords.x * outShapeStrides[0] + coords.y * outShapeStrides[1] + coords.z; } -`}var J7=` +`}var JI=` const float FLOAT_MAX = 1.70141184e38; const float FLOAT_MIN = 1.17549435e-38; @@ -150,7 +150,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return c / 255.0; } -`,{getBroadcastDims:Q7}=N;function mJ(e,t,n){let s=[];if(e.forEach(h=>{let f=v.sizeFromShape(h.shapeInfo.logicalShape);if(h.shapeInfo.isUniform?s.push(`uniform float ${h.name}${f>1?`[${f}]`:""};`):(s.push(`uniform sampler2D ${h.name};`),s.push(`uniform int offset${h.name};`)),n.enableShapeUniforms){let{uniformShape:m}=wx(n.packedInputs,h.shapeInfo.logicalShape,h.shapeInfo.texShape);switch(m.length){case 1:s.push(`uniform int ${h.name}Shape;`);break;case 2:s.push(`uniform ivec2 ${h.name}Shape;`);break;case 3:s.push(`uniform ivec3 ${h.name}Shape;`);break;case 4:s.push(`uniform ivec4 ${h.name}Shape;`);break;default:break}s.push(`uniform ivec2 ${h.name}TexShape;`)}}),n.enableShapeUniforms){switch(t.logicalShape.length){case 1:s.push("uniform int outShape;");break;case 2:s.push("uniform ivec2 outShape;"),s.push("uniform int outShapeStrides;");break;case 3:s.push("uniform ivec3 outShape;"),s.push("uniform ivec2 outShapeStrides;");break;case 4:s.push("uniform ivec4 outShape;"),s.push("uniform ivec3 outShapeStrides;");break;default:break}s.push("uniform ivec2 outTexShape;")}n.customUniforms&&n.customUniforms.forEach(h=>{s.push(`uniform ${h.type} ${h.name}${h.arrayIndex?`[${h.arrayIndex}]`:""};`)});let r=s.join(` +`,{getBroadcastDims:QI}=N;function mJ(e,t,n){let s=[];if(e.forEach(h=>{let f=v.sizeFromShape(h.shapeInfo.logicalShape);if(h.shapeInfo.isUniform?s.push(`uniform float ${h.name}${f>1?`[${f}]`:""};`):(s.push(`uniform sampler2D ${h.name};`),s.push(`uniform int offset${h.name};`)),n.enableShapeUniforms){let{uniformShape:m}=wx(n.packedInputs,h.shapeInfo.logicalShape,h.shapeInfo.texShape);switch(m.length){case 1:s.push(`uniform int ${h.name}Shape;`);break;case 2:s.push(`uniform ivec2 ${h.name}Shape;`);break;case 3:s.push(`uniform ivec3 ${h.name}Shape;`);break;case 4:s.push(`uniform ivec4 ${h.name}Shape;`);break;default:break}s.push(`uniform ivec2 ${h.name}TexShape;`)}}),n.enableShapeUniforms){switch(t.logicalShape.length){case 1:s.push("uniform int outShape;");break;case 2:s.push("uniform ivec2 outShape;"),s.push("uniform int outShapeStrides;");break;case 3:s.push("uniform ivec3 outShape;"),s.push("uniform ivec2 outShapeStrides;");break;case 4:s.push("uniform ivec4 outShape;"),s.push("uniform ivec3 outShapeStrides;");break;default:break}s.push("uniform ivec2 outTexShape;")}n.customUniforms&&n.customUniforms.forEach(h=>{s.push(`uniform ${h.type} ${h.name}${h.arrayIndex?`[${h.arrayIndex}]`:""};`)});let r=s.join(` `),a=e.map(h=>gJ(h,t,n.packedInputs,n.enableShapeUniforms)).join(` `),o=t.texShape,i=Gn(),l=xJ(i),c,u,d=wJ(i);return t.isPacked?(c=yJ(t.logicalShape,o,n.enableShapeUniforms),u=vJ(i)):(c=AJ(t.logicalShape,o,n.enableShapeUniforms),u=bJ(i)),n.packedInputs&&(d+=CJ),[d,l,u,r,c,a,n.userCode].join(` `)}function uc(e,t=!1){let n=e.shapeInfo.logicalShape;switch(n.length){case 0:return zJ(e,t);case 1:return BJ(e,t);case 2:return VJ(e,t);case 3:return GJ(e,t);case 4:return jJ(e,t);case 5:return qJ(e);case 6:return XJ(e);default:throw new Error(`${n.length}-D input sampling is not yet supported`)}}function eC(e,t){switch(e.shapeInfo.logicalShape.length){case 0:return MJ(e);case 1:return LJ(e,t);case 2:return WJ(e,t);case 3:return UJ(e,t);default:return HJ(e,t)}}function gJ(e,t,n=!1,s){let r="";n?r+=eC(e,s):r+=uc(e,s);let a=e.shapeInfo.logicalShape,o=t.logicalShape;return a.length<=o.length&&(n?r+=KJ(e,t):r+=ZJ(e,t)),r}function yJ(e,t,n){switch(e.length){case 0:return tC();case 1:return TJ(e,t,n);case 2:return PJ(e,t,n);case 3:return EJ(e,t,n);default:return _J(e,t,n)}}function AJ(e,t,n){switch(e.length){case 0:return tC();case 1:return NJ(e,t,n);case 2:return OJ(e,t,n);case 3:return RJ(e,t,n);case 4:return DJ(e,t,n);case 5:return $J(e,t);case 6:return FJ(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function xJ(e){return` @@ -954,7 +954,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, return ${t}[i]; } } - `}function KJ(e,t){let n=e.name,s=n.charAt(0).toUpperCase()+n.slice(1),r="get"+s+"AtOutCoords",a=e.shapeInfo.logicalShape.length,o=t.logicalShape.length,i=Q7(e.shapeInfo.logicalShape,t.logicalShape),l=vt(o),c=o-a,u,d=["x","y","z","w","u","v"];a===0?u="":o<2&&i.length>=1?u="coords = 0;":u=i.map(x=>`coords.${d[x+c]} = 0;`).join(` + `}function KJ(e,t){let n=e.name,s=n.charAt(0).toUpperCase()+n.slice(1),r="get"+s+"AtOutCoords",a=e.shapeInfo.logicalShape.length,o=t.logicalShape.length,i=QI(e.shapeInfo.logicalShape,t.logicalShape),l=vt(o),c=o-a,u,d=["x","y","z","w","u","v"];a===0?u="":o<2&&i.length>=1?u="coords = 0;":u=i.map(x=>`coords.${d[x+c]} = 0;`).join(` `);let p="";o<2&&a>0?p="coords":p=e.shapeInfo.logicalShape.map((x,A)=>`coords.${d[A+c]}`).join(", ");let h="return outputValue;",m=v.sizeFromShape(e.shapeInfo.logicalShape)===1,y=v.sizeFromShape(t.logicalShape)===1;if(a===1&&!m&&!y)h=` return vec4(outputValue.xy, outputValue.xy); `;else if(m&&!y)o===1?h=` @@ -972,14 +972,14 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float ${r}() { return sampleTexture(${n}, resultUV); } - `;let c=vt(l),u=Q7(e.shapeInfo.logicalShape,t.logicalShape),d=l-i,p,h=["x","y","z","w","u","v"];i===0?p="":l<2&&u.length>=1?p="coords = 0;":p=u.map(m=>`coords.${h[m+d]} = 0;`).join(` + `;let c=vt(l),u=QI(e.shapeInfo.logicalShape,t.logicalShape),d=l-i,p,h=["x","y","z","w","u","v"];i===0?p="":l<2&&u.length>=1?p="coords = 0;":p=u.map(m=>`coords.${h[m+d]} = 0;`).join(` `);let f="";return l<2&&i>0?f="coords":f=e.shapeInfo.logicalShape.map((m,g)=>`coords.${h[g+d]}`).join(", "),` float ${r}() { ${c} coords = getOutputCoords(); ${p} return get${s}(${f}); } - `}function vt(e){if(e<=1)return"int";if(e===2)return"ivec2";if(e===3)return"ivec3";if(e===4)return"ivec4";if(e===5)return"ivec5";if(e===6)return"ivec6";throw Error(`GPU for rank ${e} is not yet supported`)}function wx(e,t,n){let{newShape:s,keptDims:r}=v.squeezeShape(t),a=t.length,o=e&&a===3&&t[0]===1,i=o?t.slice(1):s,l=!e&&a>1&&!v.arraysEqual(t,n)&&s.lengthe[n]).join(", ")}function YJ(e,t,n,s){let r=n.map((b,w)=>{let k={logicalShape:b.shape,texShape:b.isUniform?null:b.texData.texShape,isUniform:b.isUniform,isPacked:b.isUniform?!1:b.texData.isPacked,flatOffset:null};return b.texData!=null&&b.texData.slice!=null&&b.texData.slice.flatOffset>0&&(k.flatOffset=b.texData.slice.flatOffset),{name:t.variableNames[w],shapeInfo:k}}),a=r.map(b=>b.shapeInfo),o={logicalShape:s.shape,texShape:s.texData.texShape,isUniform:!1,isPacked:s.texData.isPacked,flatOffset:null},i=mJ(r,o,t),l=_7(e.gl,i),c=e.createProgram(l),u=null,d=e.getUniformLocation(c,"NAN",!1);Y().getNumber("WEBGL_VERSION")===1&&(u=e.getUniformLocation(c,"INFINITY",!1));let p=!1,h={},f={},m={};for(let b=0;b{A[w]=e.getUniformLocation(c,b.name,p)}),{program:t,fragmentShader:l,source:i,webGLProgram:c,uniformLocations:h,customUniformLocations:A,inShapeInfos:a,outShapeInfo:o,infLoc:u,nanLoc:d,inShapesLocations:f,inTexShapesLocations:m,outShapeLocation:g,outShapeStridesLocation:x,outTexShapeLocation:y}}function nC(e,t){if(e.length!==t.length)throw Error(`Binary was compiled with ${e.length} inputs, but was executed with ${t.length} inputs`);e.forEach((n,s)=>{let r=n.logicalShape,a=t[s],o=a.shape;if(!v.arraysEqual(r,o))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${r} and ${o} must match`);if(n.isUniform&&a.isUniform)return;let i=n.texShape,l=a.isUniform?null:a.texData.texShape;if(!v.arraysEqual(i,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${i} and ${l} must match`)})}function JJ(e,t,n,s,r){t.program.enableShapeUniforms||(nC(t.inShapeInfos,n),nC([t.outShapeInfo],[s]));let a=s.texData.texture,o=s.texData.texShape;s.texData.isPacked?e.setOutputPackedMatrixTexture(a,o[0],o[1]):e.setOutputMatrixTexture(a,o[0],o[1]),e.setProgram(t.webGLProgram),Y().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,1/0),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((l,c)=>{let u=t.program.variableNames[c],d=t.uniformLocations[u],p=t.uniformLocations[`offset${u}`],h=t.inShapesLocations[`${u}Shape`],f=t.inTexShapesLocations[`${u}TexShape`];if(h){let{uniformShape:m}=wx(t.program.packedInputs,l.shape,l.texData.texShape);switch(m.length){case 1:e.gl.uniform1iv(h,new Int32Array(m));break;case 2:e.gl.uniform2iv(h,new Int32Array(m));break;case 3:e.gl.uniform3iv(h,new Int32Array(m));break;case 4:e.gl.uniform4iv(h,new Int32Array(m));break;default:break}}if(f&&e.gl.uniform2i(f,l.texData.texShape[0],l.texData.texShape[1]),d!=null){if(l.isUniform){if(v.sizeFromShape(l.shape)<2)e.gl.uniform1f(d,l.uniformValues[0]);else{let m=l.uniformValues;m instanceof Float32Array||(m=new Float32Array(m)),e.gl.uniform1fv(d,m)}return}l.texData.slice!=null&&p!=null&&e.gl.uniform1i(p,l.texData.slice.flatOffset),e.setInputMatrixTexture(l.texData.texture,d,c)}});let i=t.outShapeLocation;if(i)switch(s.shape.length){case 1:e.gl.uniform1iv(i,new Int32Array(s.shape));break;case 2:e.gl.uniform2iv(i,new Int32Array(s.shape));break;case 3:e.gl.uniform3iv(i,new Int32Array(s.shape));break;case 4:e.gl.uniform4iv(i,new Int32Array(s.shape));break;default:break}if(t.outShapeStridesLocation){let l=v.computeStrides(s.shape);switch(s.shape.length){case 2:e.gl.uniform1iv(t.outShapeStridesLocation,new Int32Array(l));break;case 3:e.gl.uniform2iv(t.outShapeStridesLocation,new Int32Array(l));break;case 4:e.gl.uniform3iv(t.outShapeStridesLocation,new Int32Array(l));break;default:break}}t.outTexShapeLocation&&e.gl.uniform2i(t.outTexShapeLocation,s.texData.texShape[0],s.texData.texShape[1]),t.program.customUniforms&&r&&t.program.customUniforms.forEach((l,c)=>{let u=t.customUniformLocations[c],d=r[c];if(l.type==="float")e.gl.uniform1fv(u,d);else if(l.type==="vec2")e.gl.uniform2fv(u,d);else if(l.type==="vec3")e.gl.uniform3fv(u,d);else if(l.type==="vec4")e.gl.uniform4fv(u,d);else if(l.type==="int")e.gl.uniform1iv(u,d);else if(l.type==="ivec2")e.gl.uniform2iv(u,d);else if(l.type==="ivec3")e.gl.uniform3iv(u,d);else if(l.type==="ivec4")e.gl.uniform4iv(u,d);else throw Error(`uniform type ${l.type} is not supported yet.`)}),e.executeProgram()}function QJ(e,t,n){let s="";t.concat(n).forEach(o=>{let i=o.texData!=null&&o.texData.slice!=null&&o.texData.slice.flatOffset>0;if(e.enableShapeUniforms&&!o.isUniform){let l=o.texData.texShape,{useSqueezeShape:c,uniformShape:u,keptDims:d}=wx(e.packedInputs,o.shape,l),p="",h="",f="";if(u.length===1&&e.packedInputs){let w=[Math.ceil(l[0]/2),Math.ceil(l[1]/2)];p=`${w[0]>1}_${w[1]>1}`}else if(u.length===2&&!e.packedInputs)h=`${u[0]>1}_${u[1]>1}`;else if(u.length>2&&!e.packedInputs){let w=v.computeStrides(u);f=`${w[0]===l[1]}_${w[w.length-1]===l[1]}`}let m=o.shape.length,g=u.length===2&&v.arraysEqual(o.shape,l),y=v.sizeFromShape(o.shape)===1,x=N.getBroadcastDims(o.shape,n.shape),A=!e.packedInputs&&m===n.shape.length&&v.arraysEqual(l,n.texData.texShape),b=e.packedInputs||u.length>2?"":`${l[0]>1}_${l[1]>1}`;s+=`${m}_${A}_${c?d:""}_${u.length}_${y}_${x}_${g}_${p}_${h}_${f}_${b}_${i}`}else{let l=o.isUniform?"uniform":o.texData.texShape;s+=`${o.shape}_${l}_${i}`}});let r=e.userCode,a=e.constructor.name;return a+="_"+s+"_"+r+`${Y().getNumber("WEBGL_VERSION")}`,a}function ds(e){return Y().getBool("WEBGL_USE_SHAPES_UNIFORMS")&&e<=4}var eQ=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=xp.DENSE,this.customUniforms=[{name:"texShape",type:"ivec2"}];let t=Gn();this.outputShape=e,this.enableShapeUniforms=ds(this.outputShape.length),this.userCode=` + `}function vt(e){if(e<=1)return"int";if(e===2)return"ivec2";if(e===3)return"ivec3";if(e===4)return"ivec4";if(e===5)return"ivec5";if(e===6)return"ivec6";throw Error(`GPU for rank ${e} is not yet supported`)}function wx(e,t,n){let{newShape:s,keptDims:r}=v.squeezeShape(t),a=t.length,o=e&&a===3&&t[0]===1,i=o?t.slice(1):s,l=!e&&a>1&&!v.arraysEqual(t,n)&&s.lengthe[n]).join(", ")}function YJ(e,t,n,s){let r=n.map((b,w)=>{let k={logicalShape:b.shape,texShape:b.isUniform?null:b.texData.texShape,isUniform:b.isUniform,isPacked:b.isUniform?!1:b.texData.isPacked,flatOffset:null};return b.texData!=null&&b.texData.slice!=null&&b.texData.slice.flatOffset>0&&(k.flatOffset=b.texData.slice.flatOffset),{name:t.variableNames[w],shapeInfo:k}}),a=r.map(b=>b.shapeInfo),o={logicalShape:s.shape,texShape:s.texData.texShape,isUniform:!1,isPacked:s.texData.isPacked,flatOffset:null},i=mJ(r,o,t),l=_I(e.gl,i),c=e.createProgram(l),u=null,d=e.getUniformLocation(c,"NAN",!1);Y().getNumber("WEBGL_VERSION")===1&&(u=e.getUniformLocation(c,"INFINITY",!1));let p=!1,h={},f={},m={};for(let b=0;b{A[w]=e.getUniformLocation(c,b.name,p)}),{program:t,fragmentShader:l,source:i,webGLProgram:c,uniformLocations:h,customUniformLocations:A,inShapeInfos:a,outShapeInfo:o,infLoc:u,nanLoc:d,inShapesLocations:f,inTexShapesLocations:m,outShapeLocation:g,outShapeStridesLocation:x,outTexShapeLocation:y}}function nC(e,t){if(e.length!==t.length)throw Error(`Binary was compiled with ${e.length} inputs, but was executed with ${t.length} inputs`);e.forEach((n,s)=>{let r=n.logicalShape,a=t[s],o=a.shape;if(!v.arraysEqual(r,o))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${r} and ${o} must match`);if(n.isUniform&&a.isUniform)return;let i=n.texShape,l=a.isUniform?null:a.texData.texShape;if(!v.arraysEqual(i,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${i} and ${l} must match`)})}function JJ(e,t,n,s,r){t.program.enableShapeUniforms||(nC(t.inShapeInfos,n),nC([t.outShapeInfo],[s]));let a=s.texData.texture,o=s.texData.texShape;s.texData.isPacked?e.setOutputPackedMatrixTexture(a,o[0],o[1]):e.setOutputMatrixTexture(a,o[0],o[1]),e.setProgram(t.webGLProgram),Y().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,1/0),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((l,c)=>{let u=t.program.variableNames[c],d=t.uniformLocations[u],p=t.uniformLocations[`offset${u}`],h=t.inShapesLocations[`${u}Shape`],f=t.inTexShapesLocations[`${u}TexShape`];if(h){let{uniformShape:m}=wx(t.program.packedInputs,l.shape,l.texData.texShape);switch(m.length){case 1:e.gl.uniform1iv(h,new Int32Array(m));break;case 2:e.gl.uniform2iv(h,new Int32Array(m));break;case 3:e.gl.uniform3iv(h,new Int32Array(m));break;case 4:e.gl.uniform4iv(h,new Int32Array(m));break;default:break}}if(f&&e.gl.uniform2i(f,l.texData.texShape[0],l.texData.texShape[1]),d!=null){if(l.isUniform){if(v.sizeFromShape(l.shape)<2)e.gl.uniform1f(d,l.uniformValues[0]);else{let m=l.uniformValues;m instanceof Float32Array||(m=new Float32Array(m)),e.gl.uniform1fv(d,m)}return}l.texData.slice!=null&&p!=null&&e.gl.uniform1i(p,l.texData.slice.flatOffset),e.setInputMatrixTexture(l.texData.texture,d,c)}});let i=t.outShapeLocation;if(i)switch(s.shape.length){case 1:e.gl.uniform1iv(i,new Int32Array(s.shape));break;case 2:e.gl.uniform2iv(i,new Int32Array(s.shape));break;case 3:e.gl.uniform3iv(i,new Int32Array(s.shape));break;case 4:e.gl.uniform4iv(i,new Int32Array(s.shape));break;default:break}if(t.outShapeStridesLocation){let l=v.computeStrides(s.shape);switch(s.shape.length){case 2:e.gl.uniform1iv(t.outShapeStridesLocation,new Int32Array(l));break;case 3:e.gl.uniform2iv(t.outShapeStridesLocation,new Int32Array(l));break;case 4:e.gl.uniform3iv(t.outShapeStridesLocation,new Int32Array(l));break;default:break}}t.outTexShapeLocation&&e.gl.uniform2i(t.outTexShapeLocation,s.texData.texShape[0],s.texData.texShape[1]),t.program.customUniforms&&r&&t.program.customUniforms.forEach((l,c)=>{let u=t.customUniformLocations[c],d=r[c];if(l.type==="float")e.gl.uniform1fv(u,d);else if(l.type==="vec2")e.gl.uniform2fv(u,d);else if(l.type==="vec3")e.gl.uniform3fv(u,d);else if(l.type==="vec4")e.gl.uniform4fv(u,d);else if(l.type==="int")e.gl.uniform1iv(u,d);else if(l.type==="ivec2")e.gl.uniform2iv(u,d);else if(l.type==="ivec3")e.gl.uniform3iv(u,d);else if(l.type==="ivec4")e.gl.uniform4iv(u,d);else throw Error(`uniform type ${l.type} is not supported yet.`)}),e.executeProgram()}function QJ(e,t,n){let s="";t.concat(n).forEach(o=>{let i=o.texData!=null&&o.texData.slice!=null&&o.texData.slice.flatOffset>0;if(e.enableShapeUniforms&&!o.isUniform){let l=o.texData.texShape,{useSqueezeShape:c,uniformShape:u,keptDims:d}=wx(e.packedInputs,o.shape,l),p="",h="",f="";if(u.length===1&&e.packedInputs){let w=[Math.ceil(l[0]/2),Math.ceil(l[1]/2)];p=`${w[0]>1}_${w[1]>1}`}else if(u.length===2&&!e.packedInputs)h=`${u[0]>1}_${u[1]>1}`;else if(u.length>2&&!e.packedInputs){let w=v.computeStrides(u);f=`${w[0]===l[1]}_${w[w.length-1]===l[1]}`}let m=o.shape.length,g=u.length===2&&v.arraysEqual(o.shape,l),y=v.sizeFromShape(o.shape)===1,x=N.getBroadcastDims(o.shape,n.shape),A=!e.packedInputs&&m===n.shape.length&&v.arraysEqual(l,n.texData.texShape),b=e.packedInputs||u.length>2?"":`${l[0]>1}_${l[1]>1}`;s+=`${m}_${A}_${c?d:""}_${u.length}_${y}_${x}_${g}_${p}_${h}_${f}_${b}_${i}`}else{let l=o.isUniform?"uniform":o.texData.texShape;s+=`${o.shape}_${l}_${i}`}});let r=e.userCode,a=e.constructor.name;return a+="_"+s+"_"+r+`${Y().getNumber("WEBGL_VERSION")}`,a}function ds(e){return Y().getBool("WEBGL_USE_SHAPES_UNIFORMS")&&e<=4}var eQ=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=xp.DENSE,this.customUniforms=[{name:"texShape",type:"ivec2"}];let t=Gn();this.outputShape=e,this.enableShapeUniforms=ds(this.outputShape.length),this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { ${this.enableShapeUniforms?jm(["r","c","d"],e):Nl(["r","c","d"],e)} return ivec3(r, c, d); @@ -1020,14 +1020,14 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ${t.output} = result; } `}},nQ=class{constructor(e){this.variableNames=["A"],this.outTexUsage=Vs.DOWNLOAD;let t=Gn();this.outputShape=e,this.userCode=` - ${J7} + ${JI} void main() { float x = getAAtOutCoords(); ${t.output} = encode_float(x); } `}},sQ=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Vs.DOWNLOAD;let t=Gn();this.outputShape=e,this.userCode=` - ${J7} + ${JI} void main() { ivec3 coords = getOutputCoords(); @@ -1117,7 +1117,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return R7(e,n)}function aC(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return F7(e,t)}function oC(e){let t=new Uint16Array([0,1,2,2,1,3]);return P7(e,t)}function Sp(e,t,n,s,r,a){M7(t,n);let o=O7(e),i=e.TEXTURE_2D;return ke(e,()=>e.bindTexture(i,o)),ke(e,()=>e.texParameteri(i,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),ke(e,()=>e.texParameteri(i,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),ke(e,()=>e.texParameteri(i,e.TEXTURE_MIN_FILTER,e.NEAREST)),ke(e,()=>e.texParameteri(i,e.TEXTURE_MAG_FILTER,e.NEAREST)),Y().getNumber("WEBGL_VERSION")===1?ke(e,()=>e.texImage2D(i,0,s,t,n,0,r,a,null)):ke(e,()=>e.texStorage2D(i,1,s,t,n)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null)),o}function kx(e){return e.internalFormatFloat}function iC(e,t,n,s){let[r,a]=bp(t,n);return Sp(e,r,a,kx(s),s.textureFormatFloat,e.FLOAT)}function Sx(e){return e.internalFormatHalfFloat}function lC(e,t,n,s){let[r,a]=bp(t,n);return Sp(e,r,a,Sx(s),s.textureFormatFloat,s.textureTypeHalfFloat)}function Ix(e){return e.downloadTextureFormat}function uC(e,t,n,s){let[r,a]=bp(t,n);return Sp(e,r,a,Ix(s),e.RGBA,e.UNSIGNED_BYTE)}function Cx(e){return e.internalFormatPackedFloat}function cC(e,t,n,s){let[r,a]=ic(t,n);return Sp(e,r,a,Cx(s),e.RGBA,e.FLOAT)}function Tx(e){return e.internalFormatPackedHalfFloat}function dC(e,t,n,s){let[r,a]=ic(t,n);return Sp(e,r,a,Tx(s),e.RGBA,s.textureTypeHalfFloat)}function pC(e,t,n){let s=0,r=3*4,a=3*4+2*4;return ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),gx(e,t,"clipSpacePos",n,3,a,s)&&gx(e,t,"uv",n,2,a,r)}function hC(e,t,n,s,r,a){ke(e,()=>e.bindTexture(e.TEXTURE_2D,t));let o,i,l;r instanceof Uint8Array?(o=new Uint8Array(n*s*4),i=e.UNSIGNED_BYTE,l=e.RGBA):(o=new Float32Array(n*s*4),i=e.FLOAT,l=a.internalFormatPackedFloat),o.set(r),Y().getNumber("WEBGL_VERSION")===2?ke(e,()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,n,s,e.RGBA,i,o)):ke(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,s,0,e.RGBA,i,o)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function fC(e,t,n){ke(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?Y().getNumber("WEBGL_VERSION")===2?(ke(e,()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,n.width,n.height,e.RGBA,e.UNSIGNED_BYTE,n.data)),e.flush()):ke(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):Y().getNumber("WEBGL_VERSION")===2?(ke(e,()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,n)),e.flush()):ke(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function mC(e,t,n,s){let r=e.createBuffer();ke(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,r));let i=4*4*t*n;return ke(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,i,e.STREAM_READ)),ke(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),ke(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),r}function gC(e,t,n){let s=e,r=new Float32Array(n);return s.bindBuffer(s.PIXEL_PACK_BUFFER,t),s.getBufferSubData(s.PIXEL_PACK_BUFFER,0,r),s.bindBuffer(s.PIXEL_PACK_BUFFER,null),r}function yC(e,t,n,s){let[r,a]=bp(t,n),o=4,i=new Uint8Array(eJ(t*n,o));return ke(e,()=>e.readPixels(0,0,r,a,s.downloadTextureFormat,e.UNSIGNED_BYTE,i)),new Float32Array(i.buffer)}function AC(e,t,n,s,r,a,o,i){let l=e,c=new Float32Array(tJ(a,o));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,c),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),c}function xC(e,t,n){let s=new Float32Array(t*n*4);return ke(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,s)),s}var qm=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=Y().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,zm(t,e)):this.gl=Wr(t);let n="WEBGL_color_buffer_float",s="EXT_color_buffer_half_float";if(Y().getNumber("WEBGL_VERSION")===1){let r="OES_texture_float",a="OES_texture_half_float";if(this.textureFloatExtension=vp(this.gl,r),Us(this.gl,a))this.textureHalfFloatExtension=vp(this.gl,a);else if(Y().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Us(this.gl,s))this.colorBufferHalfFloatExtension=vp(this.gl,s);else if(Y().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Us(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(Us(this.gl,s))this.colorBufferHalfFloatExtension=this.gl.getExtension(s);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=aC(this.gl),this.indexBuffer=oC(this.gl),this.framebuffer=z7(this.gl),this.textureConfig=mx(this.gl,this.textureHalfFloatExtension)}get debug(){return Y().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;ke(e,()=>e.finish()),ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),ke(e,()=>e.deleteFramebuffer(this.framebuffer)),ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),ke(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),ke(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),iC(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),lC(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),uC(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),fC(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,s){this.throwIfDisposed(),hC(this.gl,e,t,n,s,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),dC(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),cC(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(yx(this.gl,this.framebuffer),this.outputTexture=null),ke(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>yC(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,s,r,a){return AC(this.gl,e,t,n,s,r,a,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return gC(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let s=mC(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),s}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(Y().getBool("WEBGL_FENCE_API_ENABLED")){let s=e,r=s.fenceSync(s.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let a=s.clientWaitSync(r,0,0);return a===s.ALREADY_SIGNALED||a===s.CONDITION_SATISFIED},t=r}else Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>xC(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl;this.vertexShader==null&&(this.vertexShader=rC(t));let n=D7(t);return ke(t,()=>t.attachShader(n,this.vertexShader)),ke(t,()=>t.attachShader(n,e)),$7(t,n),this.debug&&Bm(t,n),this.vertexAttrsAreBound||(this.setProgram(n),this.vertexAttrsAreBound=pC(t,this.program,this.vertexBuffer)),n}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&ke(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&Bm(this.gl,this.program),ke(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?B7(this.gl,e,t):W7(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),ke(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),V7(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[s,r]=ic(t,n);this.setOutputMatrixTextureDriver(e,s,r)}setOutputMatrixWriteRegion(e,t,n,s){this.setOutputMatrixWriteRegionDriver(n,e,s,t)}setOutputPackedMatrixWriteRegion(e,t,n,s){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&Bm(this.gl,this.program),wp(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),ke(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),ke(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=vp(this.gl,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,s=this.getQueryTimerExtensionWebGL2(),r=n.createQuery();return n.beginQuery(s.TIME_ELAPSED_EXT,r),r}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,s=this.getQueryTimerExtensionWebGL2(),r=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(s.GPU_DISJOINT_EXT)),r&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),s=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),s&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=oQ(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),Wm(this.gl,e,this.framebuffer),this.debug&&wp(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(Wm(this.gl,this.outputTexture,this.framebuffer),this.debug&&wp(this.gl)):yx(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let s=this.gl;Wm(s,e,this.framebuffer),this.debug&&wp(s),this.outputTexture=e,ke(s,()=>s.viewport(0,0,t,n)),ke(s,()=>s.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,s){this.throwIfDisposed(),ke(this.gl,()=>this.gl.scissor(e,t,n,s))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function oQ(e){let t=0;for(;t`${e}.${n}`)}function Hn(e,t){return t===1?[e]:kC(e,t)}function HQ(e,t){if(e===1)return"rc";let n="";for(let s=0;se.bindTexture(i,o)),ke(e,()=>e.texParameteri(i,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),ke(e,()=>e.texParameteri(i,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),ke(e,()=>e.texParameteri(i,e.TEXTURE_MIN_FILTER,e.NEAREST)),ke(e,()=>e.texParameteri(i,e.TEXTURE_MAG_FILTER,e.NEAREST)),Y().getNumber("WEBGL_VERSION")===1?ke(e,()=>e.texImage2D(i,0,s,t,n,0,r,a,null)):ke(e,()=>e.texStorage2D(i,1,s,t,n)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null)),o}function kx(e){return e.internalFormatFloat}function iC(e,t,n,s){let[r,a]=bp(t,n);return Sp(e,r,a,kx(s),s.textureFormatFloat,e.FLOAT)}function Sx(e){return e.internalFormatHalfFloat}function lC(e,t,n,s){let[r,a]=bp(t,n);return Sp(e,r,a,Sx(s),s.textureFormatFloat,s.textureTypeHalfFloat)}function Ix(e){return e.downloadTextureFormat}function uC(e,t,n,s){let[r,a]=bp(t,n);return Sp(e,r,a,Ix(s),e.RGBA,e.UNSIGNED_BYTE)}function Cx(e){return e.internalFormatPackedFloat}function cC(e,t,n,s){let[r,a]=ic(t,n);return Sp(e,r,a,Cx(s),e.RGBA,e.FLOAT)}function Tx(e){return e.internalFormatPackedHalfFloat}function dC(e,t,n,s){let[r,a]=ic(t,n);return Sp(e,r,a,Tx(s),e.RGBA,s.textureTypeHalfFloat)}function pC(e,t,n){let s=0,r=3*4,a=3*4+2*4;return ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),gx(e,t,"clipSpacePos",n,3,a,s)&&gx(e,t,"uv",n,2,a,r)}function hC(e,t,n,s,r,a){ke(e,()=>e.bindTexture(e.TEXTURE_2D,t));let o,i,l;r instanceof Uint8Array?(o=new Uint8Array(n*s*4),i=e.UNSIGNED_BYTE,l=e.RGBA):(o=new Float32Array(n*s*4),i=e.FLOAT,l=a.internalFormatPackedFloat),o.set(r),Y().getNumber("WEBGL_VERSION")===2?ke(e,()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,n,s,e.RGBA,i,o)):ke(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,s,0,e.RGBA,i,o)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function fC(e,t,n){ke(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?Y().getNumber("WEBGL_VERSION")===2?(ke(e,()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,n.width,n.height,e.RGBA,e.UNSIGNED_BYTE,n.data)),e.flush()):ke(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):Y().getNumber("WEBGL_VERSION")===2?(ke(e,()=>e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,n)),e.flush()):ke(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),ke(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function mC(e,t,n,s){let r=e.createBuffer();ke(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,r));let i=4*4*t*n;return ke(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,i,e.STREAM_READ)),ke(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),ke(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),r}function gC(e,t,n){let s=e,r=new Float32Array(n);return s.bindBuffer(s.PIXEL_PACK_BUFFER,t),s.getBufferSubData(s.PIXEL_PACK_BUFFER,0,r),s.bindBuffer(s.PIXEL_PACK_BUFFER,null),r}function yC(e,t,n,s){let[r,a]=bp(t,n),o=4,i=new Uint8Array(eJ(t*n,o));return ke(e,()=>e.readPixels(0,0,r,a,s.downloadTextureFormat,e.UNSIGNED_BYTE,i)),new Float32Array(i.buffer)}function AC(e,t,n,s,r,a,o,i){let l=e,c=new Float32Array(tJ(a,o));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,c),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),c}function xC(e,t,n){let s=new Float32Array(t*n*4);return ke(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,s)),s}var qm=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=Y().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,zm(t,e)):this.gl=Wr(t);let n="WEBGL_color_buffer_float",s="EXT_color_buffer_half_float";if(Y().getNumber("WEBGL_VERSION")===1){let r="OES_texture_float",a="OES_texture_half_float";if(this.textureFloatExtension=vp(this.gl,r),Us(this.gl,a))this.textureHalfFloatExtension=vp(this.gl,a);else if(Y().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Us(this.gl,s))this.colorBufferHalfFloatExtension=vp(this.gl,s);else if(Y().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Us(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(Us(this.gl,s))this.colorBufferHalfFloatExtension=this.gl.getExtension(s);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=aC(this.gl),this.indexBuffer=oC(this.gl),this.framebuffer=zI(this.gl),this.textureConfig=mx(this.gl,this.textureHalfFloatExtension)}get debug(){return Y().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;ke(e,()=>e.finish()),ke(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),ke(e,()=>e.deleteFramebuffer(this.framebuffer)),ke(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),ke(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),ke(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),iC(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),lC(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),uC(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),fC(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,s){this.throwIfDisposed(),hC(this.gl,e,t,n,s,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),dC(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),cC(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(yx(this.gl,this.framebuffer),this.outputTexture=null),ke(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>yC(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,s,r,a){return AC(this.gl,e,t,n,s,r,a,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return gC(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let s=mC(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),s}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(Y().getBool("WEBGL_FENCE_API_ENABLED")){let s=e,r=s.fenceSync(s.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let a=s.clientWaitSync(r,0,0);return a===s.ALREADY_SIGNALED||a===s.CONDITION_SATISFIED},t=r}else Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>xC(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl;this.vertexShader==null&&(this.vertexShader=rC(t));let n=DI(t);return ke(t,()=>t.attachShader(n,this.vertexShader)),ke(t,()=>t.attachShader(n,e)),$I(t,n),this.debug&&Bm(t,n),this.vertexAttrsAreBound||(this.setProgram(n),this.vertexAttrsAreBound=pC(t,this.program,this.vertexBuffer)),n}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&ke(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&Bm(this.gl,this.program),ke(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?BI(this.gl,e,t):WI(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),ke(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),VI(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[s,r]=ic(t,n);this.setOutputMatrixTextureDriver(e,s,r)}setOutputMatrixWriteRegion(e,t,n,s){this.setOutputMatrixWriteRegionDriver(n,e,s,t)}setOutputPackedMatrixWriteRegion(e,t,n,s){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&Bm(this.gl,this.program),wp(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),ke(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),ke(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=vp(this.gl,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,s=this.getQueryTimerExtensionWebGL2(),r=n.createQuery();return n.beginQuery(s.TIME_ELAPSED_EXT,r),r}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,s=this.getQueryTimerExtensionWebGL2(),r=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(s.GPU_DISJOINT_EXT)),r&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),s=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),s&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=oQ(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),Wm(this.gl,e,this.framebuffer),this.debug&&wp(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(Wm(this.gl,this.outputTexture,this.framebuffer),this.debug&&wp(this.gl)):yx(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let s=this.gl;Wm(s,e,this.framebuffer),this.debug&&wp(s),this.outputTexture=e,ke(s,()=>s.viewport(0,0,t,n)),ke(s,()=>s.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,s){this.throwIfDisposed(),ke(this.gl,()=>this.gl.scissor(e,t,n,s))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function oQ(e){let t=0;for(;t`${e}.${n}`)}function Hn(e,t){return t===1?[e]:kC(e,t)}function HQ(e,t){if(e===1)return"rc";let n="";for(let s=0;sh.push(f))}let t=this.texData.get(e),{values:n,shape:s,slice:r,dtype:a,complexTensorInfos:o,isPacked:i}=t;if(r!=null){let h;i?h=new hc(s,Xm):h=new Ho(s,Xm);let f=this.runWebGLProgram(h,[{dataId:e,shape:s,dtype:a}],a),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(Y().getBool("DEBUG")&&!Y().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&Y().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,c;if(a!=="complex64"&&Y().get("WEBGL_BUFFER_SUPPORTED")){c=this.decode(e);let h=this.texData.get(c.dataId);l=this.gpgpu.createBufferFromTexture(h.texture,...Lm(s))}this.pendingRead.set(e,[]),a!=="complex64"&&await this.gpgpu.createAndWaitForFence();let u;if(a==="complex64"){let h=await Promise.all([this.read(o.real.dataId),this.read(o.imag.dataId)]),f=h[0],m=h[1];u=N.mergeRealAndImagArrays(f,m)}else if(l==null)u=this.getValuesFromTexture(e);else{let h=v.sizeFromShape(s);u=this.gpgpu.downloadFloat32MatrixFromBuffer(l,h)}if(c!=null&&this.disposeIntermediateTensorInfo(c),l!=null){let h=this.gpgpu.gl;ke(h,()=>h.deleteBuffer(l))}let d=this.convertAndCacheOnCPU(e,u),p=this.pendingRead.get(e);return this.pendingRead.delete(e),p.forEach(h=>h(d)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&as().removeDataId(e,this),this.pendingDeletes--),d}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(s=>v.decodeString(s))}catch(s){throw new Error("Failed to decode encoded string bytes into utf-8")}return ze(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],s=!1;this.programTimersStack==null?(this.programTimersStack=n,s=!0):this.activeTimers.push(n),this.activeTimers=n,e();let r=v.flatten(this.activeTimers.map(i=>i.query)).filter(i=>i!=null),a=v.flatten(this.activeTimers.map(i=>i.name)).filter(i=>i!=null);this.activeTimers=t,s&&(this.programTimersStack=null);let o={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let i=await Promise.all(r);o.kernelMs=v.sum(i),o.getExtraProfileInfo=()=>i.map((l,c)=>({name:a[c],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else o.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,o}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:s,usage:r,isPacked:a,slice:o}=this.texData.get(e),i=o&&o.origDataId||e,l=this.dataRefCount.get(i);l>1?this.dataRefCount.set(i,l-1):(this.dataRefCount.delete(i),t!=null&&(this.numBytesInGPU-=this.computeBytes(s,n),this.textureManager.releaseTexture(t,s,r,a)));let c=this.texData.get(e);c.texture=null,c.texShape=null,c.isPacked=!1,c.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}shouldExecuteOnCPU(e,t=hee){return Y().getBool("WEBGL_CPU_FORWARD")&&e.every(n=>this.texData.get(n.dataId).texture==null&&v.sizeFromShape(n.shape)0&&v.isString(n[0])){let r=n.map(a=>v.encodeString(a));s=this.write(r,e,t)}else s=this.write(n,e,t);return this.texData.get(s).usage=null,{dataId:s,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:s}=this.makeTensorInfo(e,t,n);return as().makeTensorFromDataId(s,e,t,this)}unpackTensor(e){let t=new lee(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new jQ(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[Cl(e.shape),...Tl(e.shape)],s={dtype:e.dtype,shape:n,dataId:e.dataId},r=[Cl(t),...Tl(t)],a=new SC(r,n),o=!0,i=[n],l=this.runWebGLProgram(a,[s],e.dtype,i,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:s,dtype:r}=t,a=Vm(s),o,i=Lm(a);n?o=new tQ(a):o=new eQ(a);let l=!0,c=[i],u=this.runWebGLProgram(o,[{shape:a,dtype:r,dataId:e}],r,c,l);return{dtype:r,shape:s,dataId:u.dataId}}runWebGLProgram(e,t,n,s,r=!1){let a=this.makeTensorInfo(e.outputShape,n),o=this.texData.get(a.dataId);if(e.packedOutput&&(o.isPacked=!0),e.outPackingScheme===xp.DENSE){let m=Lm(e.outputShape);o.texShape=m.map(g=>g*2)}if(e.outTexUsage!=null&&(o.usage=e.outTexUsage),v.sizeFromShape(a.shape)===0)return o.values=v.getTypedArrayFromDType(a.dtype,0),a;let i=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let g=this.texData.get(m.dataId);if(g.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=Y().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:g.values};e.packedInputs&&(g.isPacked=!0,g.shape=m.shape)}if(this.uploadToGPU(m.dataId),!!g.isPacked!=!!e.packedInputs)m=g.isPacked?this.unpackTensor(m):this.packTensor(m),i.push(m),g=this.texData.get(m.dataId);else if(g.isPacked&&!kp(g.shape,m.shape)){let y=m,x=m.shape;m.shape=g.shape,m=this.packedReshape(m,x),i.push(m),g=this.texData.get(m.dataId),y.shape=x}return{shape:m.shape,texData:g,isUniform:!1}});this.uploadToGPU(a.dataId);let c={shape:a.shape,texData:o,isUniform:!1},u=QJ(e,l,c),d=this.getAndSaveBinary(u,()=>YJ(this.gpgpu,e,l,c)),p=this.activeTimers!=null,h;p&&(h=this.startTimer()),JJ(this.gpgpu,d,l,c,s),i.forEach(m=>this.disposeIntermediateTensorInfo(m)),p&&(h=this.endTimer(h),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(h)}));let f=Y().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!Y().getBool("WEBGL_LAZILY_UNPACK")&&o.isPacked&&r===!1){let m=this.unpackTensor(a);return this.disposeIntermediateTensorInfo(a),m}return a}compileAndRun(e,t,n,s,r=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,s,r)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(Y().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(t=>{this.gpgpu.deleteProgram(this.binaryCache[t].webGLProgram),delete this.binaryCache[t]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=K(()=>{if(!Y().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=Y().getBool("DEBUG");Y().set("DEBUG",!1);let t=this.abs(Ce(1e-8)).dataSync()[0];if(Y().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?cee:dee}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:s,values:r,texture:a,usage:o,isPacked:i}=t;if(a!=null)return;let l=this.activeTimers!=null,c;l&&(c=v.now());let u=t.texShape;if(u==null&&(u=H7(n,i),t.texShape=u),r!=null){let d=Vm(n),p,h=u[1],f=u[0],m=r instanceof Uint8Array||r instanceof Uint8ClampedArray;(i||!m)&&([h,f]=ic(u[0],u[1])),i?p=new aQ(d,m):p=new rQ(d,m);let g=m?[f,h]:u,y=this.makeTensorInfo(g,s),x=this.texData.get(y.dataId);m?x.usage=Vs.PIXELS:x.usage=Vs.UPLOAD,x.texShape=g,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(y.dataId),h,f,r);let A=[[f,h]],b=!0,w=this.runWebGLProgram(p,[y],s,A,b),k=this.texData.get(w.dataId);t.texture=k.texture,t.texShape=k.texShape,t.isPacked=k.isPacked,t.usage=k.usage,this.disposeIntermediateTensorInfo(y),this.texData.delete(w.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-c)}else{let d=this.acquireTexture(u,o,s,i);t.texture=d}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:s}=n;return this.releaseGPUData(e),t!=null&&(n.values=gee(t,s)),n.values}acquireTexture(e,t,n,s){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let r=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${r} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,s)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}},Ip=EC;Ip.nextDataId=0;function gee(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let s=0;snew Ip,2);var Aee={forceHalfFloat:RC},_C=` + `}},uee=tr.whereImpl,cee=1e-7,dee=1e-4,Km={};function pee(e){return e in Km||(Km[e]={}),Km[e]}var hee=Y().getNumber("CPU_HANDOFF_SIZE_THRESHOLD"),fee=600;function mee(){return Y().global.screen==null?1024:Y().global.screen.height*Y().global.screen.width*window.devicePixelRatio*fee/1024/1024}var EC=class extends nu{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.pendingDeletes=0,this.disposed=!1,!Y().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Wr(Y().getNumber("WEBGL_VERSION"));this.binaryCache=pee(Y().getNumber("WEBGL_VERSION")),this.gpgpu=new qm(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new XQ(this.gpgpu),this.numMBBeforeWarning=mee(),this.texData=new ad(this,as())}nextDataId(){return EC.nextDataId++}numDataIds(){return this.texData.numDataIds()-this.pendingDeletes}write(e,t,n){if((Y().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||Y().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let s={id:this.nextDataId()};return this.texData.set(s,{shape:t,dtype:n,values:e,usage:Vs.UPLOAD,refCount:1}),s}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,s,r){if(Y().getBool("DEBUG")&&this.checkNumericalProblems(t),s==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:s,values:t,usage:Vs.UPLOAD,refCount:r})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:s,complexTensorInfos:r,slice:a,shape:o,isPacked:i}=t;if(a!=null){let d;i?d=new hc(o,Xm):d=new Ho(o,Xm);let p=this.runWebGLProgram(d,[{dataId:e,shape:o,dtype:s}],s),h=this.readSync(p.dataId);return this.disposeIntermediateTensorInfo(p),h}if(n!=null)return this.convertAndCacheOnCPU(e);if(s==="string")return n;let l=this.activeTimers!=null,c;l&&(c=v.now());let u;if(s==="complex64"){let d=this.readSync(r.real.dataId),p=this.readSync(r.imag.dataId);u=N.mergeRealAndImagArrays(d,p)}else u=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=v.now()-c),this.convertAndCacheOnCPU(e,u)}async read(e){if(this.pendingRead.has(e)){let h=this.pendingRead.get(e);return new Promise(f=>h.push(f))}let t=this.texData.get(e),{values:n,shape:s,slice:r,dtype:a,complexTensorInfos:o,isPacked:i}=t;if(r!=null){let h;i?h=new hc(s,Xm):h=new Ho(s,Xm);let f=this.runWebGLProgram(h,[{dataId:e,shape:s,dtype:a}],a),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(Y().getBool("DEBUG")&&!Y().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&Y().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,c;if(a!=="complex64"&&Y().get("WEBGL_BUFFER_SUPPORTED")){c=this.decode(e);let h=this.texData.get(c.dataId);l=this.gpgpu.createBufferFromTexture(h.texture,...Lm(s))}this.pendingRead.set(e,[]),a!=="complex64"&&await this.gpgpu.createAndWaitForFence();let u;if(a==="complex64"){let h=await Promise.all([this.read(o.real.dataId),this.read(o.imag.dataId)]),f=h[0],m=h[1];u=N.mergeRealAndImagArrays(f,m)}else if(l==null)u=this.getValuesFromTexture(e);else{let h=v.sizeFromShape(s);u=this.gpgpu.downloadFloat32MatrixFromBuffer(l,h)}if(c!=null&&this.disposeIntermediateTensorInfo(c),l!=null){let h=this.gpgpu.gl;ke(h,()=>h.deleteBuffer(l))}let d=this.convertAndCacheOnCPU(e,u),p=this.pendingRead.get(e);return this.pendingRead.delete(e),p.forEach(h=>h(d)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&as().removeDataId(e,this),this.pendingDeletes--),d}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(s=>v.decodeString(s))}catch(s){throw new Error("Failed to decode encoded string bytes into utf-8")}return ze(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],s=!1;this.programTimersStack==null?(this.programTimersStack=n,s=!0):this.activeTimers.push(n),this.activeTimers=n,e();let r=v.flatten(this.activeTimers.map(i=>i.query)).filter(i=>i!=null),a=v.flatten(this.activeTimers.map(i=>i.name)).filter(i=>i!=null);this.activeTimers=t,s&&(this.programTimersStack=null);let o={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let i=await Promise.all(r);o.kernelMs=v.sum(i),o.getExtraProfileInfo=()=>i.map((l,c)=>({name:a[c],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else o.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,o}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(Y().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:s,usage:r,isPacked:a,slice:o}=this.texData.get(e),i=o&&o.origDataId||e,l=this.dataRefCount.get(i);l>1?this.dataRefCount.set(i,l-1):(this.dataRefCount.delete(i),t!=null&&(this.numBytesInGPU-=this.computeBytes(s,n),this.textureManager.releaseTexture(t,s,r,a)));let c=this.texData.get(e);c.texture=null,c.texShape=null,c.isPacked=!1,c.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}shouldExecuteOnCPU(e,t=hee){return Y().getBool("WEBGL_CPU_FORWARD")&&e.every(n=>this.texData.get(n.dataId).texture==null&&v.sizeFromShape(n.shape)0&&v.isString(n[0])){let r=n.map(a=>v.encodeString(a));s=this.write(r,e,t)}else s=this.write(n,e,t);return this.texData.get(s).usage=null,{dataId:s,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:s}=this.makeTensorInfo(e,t,n);return as().makeTensorFromDataId(s,e,t,this)}unpackTensor(e){let t=new lee(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new jQ(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[Cl(e.shape),...Tl(e.shape)],s={dtype:e.dtype,shape:n,dataId:e.dataId},r=[Cl(t),...Tl(t)],a=new SC(r,n),o=!0,i=[n],l=this.runWebGLProgram(a,[s],e.dtype,i,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:s,dtype:r}=t,a=Vm(s),o,i=Lm(a);n?o=new tQ(a):o=new eQ(a);let l=!0,c=[i],u=this.runWebGLProgram(o,[{shape:a,dtype:r,dataId:e}],r,c,l);return{dtype:r,shape:s,dataId:u.dataId}}runWebGLProgram(e,t,n,s,r=!1){let a=this.makeTensorInfo(e.outputShape,n),o=this.texData.get(a.dataId);if(e.packedOutput&&(o.isPacked=!0),e.outPackingScheme===xp.DENSE){let m=Lm(e.outputShape);o.texShape=m.map(g=>g*2)}if(e.outTexUsage!=null&&(o.usage=e.outTexUsage),v.sizeFromShape(a.shape)===0)return o.values=v.getTypedArrayFromDType(a.dtype,0),a;let i=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let g=this.texData.get(m.dataId);if(g.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=Y().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:g.values};e.packedInputs&&(g.isPacked=!0,g.shape=m.shape)}if(this.uploadToGPU(m.dataId),!!g.isPacked!=!!e.packedInputs)m=g.isPacked?this.unpackTensor(m):this.packTensor(m),i.push(m),g=this.texData.get(m.dataId);else if(g.isPacked&&!kp(g.shape,m.shape)){let y=m,x=m.shape;m.shape=g.shape,m=this.packedReshape(m,x),i.push(m),g=this.texData.get(m.dataId),y.shape=x}return{shape:m.shape,texData:g,isUniform:!1}});this.uploadToGPU(a.dataId);let c={shape:a.shape,texData:o,isUniform:!1},u=QJ(e,l,c),d=this.getAndSaveBinary(u,()=>YJ(this.gpgpu,e,l,c)),p=this.activeTimers!=null,h;p&&(h=this.startTimer()),JJ(this.gpgpu,d,l,c,s),i.forEach(m=>this.disposeIntermediateTensorInfo(m)),p&&(h=this.endTimer(h),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(h)}));let f=Y().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!Y().getBool("WEBGL_LAZILY_UNPACK")&&o.isPacked&&r===!1){let m=this.unpackTensor(a);return this.disposeIntermediateTensorInfo(a),m}return a}compileAndRun(e,t,n,s,r=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,s,r)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(Y().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(t=>{this.gpgpu.deleteProgram(this.binaryCache[t].webGLProgram),delete this.binaryCache[t]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=K(()=>{if(!Y().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=Y().getBool("DEBUG");Y().set("DEBUG",!1);let t=this.abs(Ce(1e-8)).dataSync()[0];if(Y().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?cee:dee}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:s,values:r,texture:a,usage:o,isPacked:i}=t;if(a!=null)return;let l=this.activeTimers!=null,c;l&&(c=v.now());let u=t.texShape;if(u==null&&(u=HI(n,i),t.texShape=u),r!=null){let d=Vm(n),p,h=u[1],f=u[0],m=r instanceof Uint8Array||r instanceof Uint8ClampedArray;(i||!m)&&([h,f]=ic(u[0],u[1])),i?p=new aQ(d,m):p=new rQ(d,m);let g=m?[f,h]:u,y=this.makeTensorInfo(g,s),x=this.texData.get(y.dataId);m?x.usage=Vs.PIXELS:x.usage=Vs.UPLOAD,x.texShape=g,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(y.dataId),h,f,r);let A=[[f,h]],b=!0,w=this.runWebGLProgram(p,[y],s,A,b),k=this.texData.get(w.dataId);t.texture=k.texture,t.texShape=k.texShape,t.isPacked=k.isPacked,t.usage=k.usage,this.disposeIntermediateTensorInfo(y),this.texData.delete(w.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-c)}else{let d=this.acquireTexture(u,o,s,i);t.texture=d}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:s}=n;return this.releaseGPUData(e),t!=null&&(n.values=gee(t,s)),n.values}acquireTexture(e,t,n,s){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let r=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${r} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,s)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}},Ip=EC;Ip.nextDataId=0;function gee(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let s=0;snew Ip,2);var Aee={forceHalfFloat:RC},_C=` if (isnan(a)) return a; if (isnan(b)) return b; `,fc=class{constructor(e,t,n){this.variableNames=["A","B"],this.outputShape=N.assertAndGetBroadcastShape(t,n),this.enableShapeUniforms=ds(this.outputShape.length),this.userCode=` diff --git a/package.json b/package.json index 356e892f..03d5c1c0 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "tensorflow" ], "devDependencies": { - "@microsoft/api-extractor": "^7.19.1", + "@microsoft/api-extractor": "^7.19.2", "@tensorflow/tfjs": "^3.12.0", "@tensorflow/tfjs-backend-cpu": "^3.12.0", "@tensorflow/tfjs-backend-wasm": "^3.12.0", @@ -67,14 +67,14 @@ "@tensorflow/tfjs-node-gpu": "^3.12.0", "@types/node": "^16.11.12", "@types/offscreencanvas": "^2019.6.4", - "@typescript-eslint/eslint-plugin": "^5.6.0", - "@typescript-eslint/parser": "^5.6.0", + "@typescript-eslint/eslint-plugin": "^5.7.0", + "@typescript-eslint/parser": "^5.7.0", "@vladmandic/build": "^0.6.6", "@vladmandic/pilogger": "^0.3.5", "@vladmandic/tfjs": "github:vladmandic/tfjs", "canvas": "^2.8.0", "dayjs": "^1.10.7", - "esbuild": "^0.14.2", + "esbuild": "^0.14.3", "eslint": "8.4.1", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-html": "^6.2.0", @@ -87,6 +87,6 @@ "seedrandom": "^3.0.5", "tslib": "^2.3.1", "typedoc": "0.22.10", - "typescript": "4.5.2" + "typescript": "4.5.4" } } diff --git a/test/build.log b/test/build.log index 858e2d1f..98bd7812 100644 --- a/test/build.log +++ b/test/build.log @@ -1,24 +1,24 @@ -2021-12-09 14:24:16 INFO:  Application: {"name":"@vladmandic/human","version":"2.5.5"} -2021-12-09 14:24:16 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} -2021-12-09 14:24:16 INFO:  Toolchain: {"build":"0.6.6","esbuild":"0.13.15","typescript":"4.5.2","typedoc":"0.22.10","eslint":"8.4.1"} -2021-12-09 14:24:16 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} -2021-12-09 14:24:16 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} -2021-12-09 14:24:16 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275} -2021-12-09 14:24:16 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":63,"inputBytes":556477,"outputBytes":464775} -2021-12-09 14:24:16 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283} -2021-12-09 14:24:16 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":63,"inputBytes":556485,"outputBytes":464779} -2021-12-09 14:24:16 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350} -2021-12-09 14:24:16 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":63,"inputBytes":556552,"outputBytes":464851} -2021-12-09 14:24:16 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652} -2021-12-09 14:24:16 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912} -2021-12-09 14:24:17 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":63,"inputBytes":556114,"outputBytes":466537} -2021-12-09 14:24:17 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":2516192} -2021-12-09 14:24:17 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":63,"inputBytes":3071394,"outputBytes":1632670} -2021-12-09 14:24:18 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":63,"inputBytes":3071394,"outputBytes":2989550} -2021-12-09 14:24:37 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":110} -2021-12-09 14:24:44 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":52,"generated":true} -2021-12-09 14:24:44 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5864,"outputBytes":4127} -2021-12-09 14:24:44 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15174,"outputBytes":11794} -2021-12-09 14:25:20 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":93,"errors":0,"warnings":0} -2021-12-09 14:25:20 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} -2021-12-09 14:25:20 INFO:  Done... +2021-12-13 21:37:36 INFO:  Application: {"name":"@vladmandic/human","version":"2.5.5"} +2021-12-13 21:37:36 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} +2021-12-13 21:37:36 INFO:  Toolchain: {"build":"0.6.6","esbuild":"0.13.15","typescript":"4.5.4","typedoc":"0.22.10","eslint":"8.4.1"} +2021-12-13 21:37:36 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} +2021-12-13 21:37:36 STATE: Clean: {"locations":["dist/*","types/lib/*","typedoc/*"]} +2021-12-13 21:37:36 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275} +2021-12-13 21:37:36 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":63,"inputBytes":556477,"outputBytes":464775} +2021-12-13 21:37:36 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283} +2021-12-13 21:37:36 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":63,"inputBytes":556485,"outputBytes":464779} +2021-12-13 21:37:36 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350} +2021-12-13 21:37:37 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":63,"inputBytes":556552,"outputBytes":464851} +2021-12-13 21:37:37 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652} +2021-12-13 21:37:37 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912} +2021-12-13 21:37:37 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":63,"inputBytes":556114,"outputBytes":466537} +2021-12-13 21:37:37 STATE: Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":2516192} +2021-12-13 21:37:37 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":63,"inputBytes":3071394,"outputBytes":1632670} +2021-12-13 21:37:38 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":63,"inputBytes":3071394,"outputBytes":2989550} +2021-12-13 21:37:58 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":110} +2021-12-13 21:38:05 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":52,"generated":true} +2021-12-13 21:38:05 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5864,"outputBytes":4127} +2021-12-13 21:38:05 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15174,"outputBytes":11794} +2021-12-13 21:38:41 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":93,"errors":0,"warnings":0} +2021-12-13 21:38:41 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} +2021-12-13 21:38:41 INFO:  Done...