/* Face-API homepage: author: ' */ var faceapi=(()=>{var Hb=Object.defineProperty;var cD=Object.getOwnPropertyDescriptor;var uD=Object.getOwnPropertyNames;var lD=Object.prototype.hasOwnProperty;var dD=e=>Hb(e,"__esModule",{value:!0});var pD=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,n)=>(typeof require!="undefined"?require:t)[n]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var Gp=(e,t)=>{for(var n in t)Hb(e,n,{get:t[n],enumerable:!0})},hD=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of uD(t))!lD.call(e,s)&&(n||s!=="default")&&Hb(e,s,{get:()=>t[s],enumerable:!(r=cD(t,s))||r.enumerable});return e};var fD=(e=>(t,n)=>e&&e.get(t)||(n=hD(dD({}),t,1),e&&e.set(t,n),n))(typeof WeakMap!="undefined"?new WeakMap:0);var Yue={};Gp(Yue,{AgeGenderNet:()=>eg,BoundingBox:()=>Vu,Box:()=>lt,ComposableTask:()=>Or,ComputeAllFaceDescriptorsTask:()=>Aa,ComputeFaceDescriptorsTaskBase:()=>cg,ComputeSingleFaceDescriptorTask:()=>Da,DetectAllFaceLandmarksTask:()=>lg,DetectAllFacesTask:()=>mp,DetectFaceLandmarksTaskBase:()=>ug,DetectFacesTaskBase:()=>pg,DetectSingleFaceLandmarksTask:()=>dg,DetectSingleFaceTask:()=>hg,Dimensions:()=>_n,FACE_EXPRESSION_LABELS:()=>M0,FaceDetection:()=>wt,FaceDetectionNet:()=>eA,FaceExpressionNet:()=>Zm,FaceExpressions:()=>Ea,FaceLandmark68Net:()=>Zu,FaceLandmark68TinyNet:()=>tg,FaceLandmarkNet:()=>VE,FaceLandmarks:()=>xr,FaceLandmarks5:()=>NE,FaceLandmarks68:()=>Gu,FaceMatch:()=>rp,FaceMatcher:()=>mg,FaceRecognitionNet:()=>Ju,Gender:()=>Qm,LabeledBox:()=>sp,LabeledFaceDescriptors:()=>Os,NetInput:()=>Ms,NeuralNetwork:()=>dn,ObjectDetection:()=>Na,Point:()=>Oe,PredictedBox:()=>_E,Rect:()=>Uu,SsdMobilenetv1:()=>Di,SsdMobilenetv1Options:()=>Pr,TinyFaceDetector:()=>rl,TinyFaceDetectorOptions:()=>ig,TinyYolov2:()=>tl,TinyYolov2Options:()=>bs,allFaces:()=>que,allFacesSsdMobilenetv1:()=>mA,allFacesTinyYolov2:()=>jue,awaitMediaLoaded:()=>D0,bufferToImage:()=>$0,computeFaceDescriptor:()=>$ue,createCanvas:()=>Ni,createCanvasFromMedia:()=>cp,createFaceDetectionNet:()=>Tue,createFaceRecognitionNet:()=>fue,createSsdMobilenetv1:()=>QE,createTinyFaceDetector:()=>Kue,createTinyYolov2:()=>_ue,detectAllFaces:()=>fg,detectFaceLandmarks:()=>hA,detectFaceLandmarksTiny:()=>Due,detectLandmarks:()=>Gue,detectSingleFace:()=>Hue,draw:()=>W0,env:()=>nt,euclideanDistance:()=>Z0,extendWithAge:()=>sg,extendWithFaceDescriptor:()=>rg,extendWithFaceDetection:()=>Si,extendWithFaceExpressions:()=>Jm,extendWithFaceLandmarks:()=>Yu,extendWithGender:()=>ag,extractFaceTensors:()=>ju,extractFaces:()=>Hu,fetchImage:()=>eue,fetchJson:()=>P0,fetchNetWeights:()=>tue,fetchOrThrow:()=>Ls,fetchVideo:()=>nue,getContext2dOrThrow:()=>Gn,getMediaDimensions:()=>Ci,imageTensorToCanvas:()=>F0,imageToSquare:()=>R0,inverseSigmoid:()=>qce,iou:()=>x0,isMediaElement:()=>Vm,isMediaLoaded:()=>ip,isWithAge:()=>mue,isWithFaceDetection:()=>gs,isWithFaceExpressions:()=>L0,isWithFaceLandmarks:()=>Ei,isWithGender:()=>gue,loadAgeGenderModel:()=>Wue,loadFaceDetectionModel:()=>Vue,loadFaceExpressionModel:()=>zue,loadFaceLandmarkModel:()=>Mue,loadFaceLandmarkTinyModel:()=>Lue,loadFaceRecognitionModel:()=>Bue,loadSsdMobilenetv1Model:()=>fA,loadTinyFaceDetectorModel:()=>Pue,loadTinyYolov2Model:()=>Oue,loadWeightMap:()=>O0,locateFaces:()=>Uue,matchDimensions:()=>rue,minBbox:()=>w0,nets:()=>rt,nonMaxSuppression:()=>k0,normalize:()=>Qr,padToSquare:()=>I0,predictAgeAndGender:()=>Rue,recognizeFaceExpressions:()=>Fue,resizeResults:()=>gA,resolveInput:()=>Ti,shuffleArray:()=>jce,sigmoid:()=>np,ssdMobilenetv1:()=>pA,tf:()=>Pe,tinyFaceDetector:()=>Eue,tinyYolov2:()=>Aue,toNetInput:()=>yt,utils:()=>v0,validateConfig:()=>q0,version:()=>Xue});var Pe={};Gp(Pe,{Abs:()=>vc,Acos:()=>xc,Acosh:()=>wc,AdadeltaOptimizer:()=>rm,AdagradOptimizer:()=>sm,AdamOptimizer:()=>am,AdamaxOptimizer:()=>om,Add:()=>ma,AddN:()=>go,All:()=>kc,Any:()=>Ic,ArgMax:()=>bo,ArgMin:()=>rd,Asin:()=>Sc,Asinh:()=>Tc,Atan:()=>Cc,Atan2:()=>_c,Atanh:()=>Nc,AvgPool:()=>yo,AvgPool3D:()=>sd,AvgPool3DGrad:()=>Kh,AvgPoolGrad:()=>qh,BackendWasm:()=>TE,BatchMatMul:()=>vo,BatchToSpaceND:()=>Ec,Bincount:()=>Xh,BroadcastArgs:()=>Yh,BroadcastTo:()=>tI,Callback:()=>sC,CallbackList:()=>cT,Cast:()=>xo,Ceil:()=>wo,ClipByValue:()=>ga,Complex:()=>Zh,ComplexAbs:()=>ad,Concat:()=>Ac,Conv2D:()=>ko,Conv2DBackpropFilter:()=>Jh,Conv2DBackpropInput:()=>Io,Conv3D:()=>od,Conv3DBackpropFilterV2:()=>Qh,Conv3DBackpropInputV2:()=>ef,Cos:()=>So,Cosh:()=>To,CropAndResize:()=>Dc,Cumsum:()=>Co,CustomCallback:()=>lT,DataStorage:()=>Gh,DenseBincount:()=>tf,DepthToSpace:()=>$c,DepthwiseConv2dNative:()=>No,DepthwiseConv2dNativeBackpropFilter:()=>nf,DepthwiseConv2dNativeBackpropInput:()=>rf,Diag:()=>sf,Dilation2D:()=>id,Dilation2DBackpropFilter:()=>yh,Dilation2DBackpropInput:()=>bh,ENV:()=>cv,EarlyStopping:()=>aC,Einsum:()=>af,Elu:()=>Eo,EluGrad:()=>of,Environment:()=>Qk,Equal:()=>Rc,Erf:()=>Fc,Exp:()=>Ao,ExpandDims:()=>Pc,Expm1:()=>Oc,FFT:()=>cf,Fill:()=>cd,FlipLeftRight:()=>Mc,Floor:()=>Do,FloorDiv:()=>$o,FromPixels:()=>vh,FusedBatchNorm:()=>Fo,FusedConv2D:()=>Ja,FusedDepthwiseConv2D:()=>Qa,GPGPUContext:()=>ph,GatherNd:()=>Bc,GatherV2:()=>Lc,GraphModel:()=>EC,Greater:()=>zc,GreaterEqual:()=>Ro,History:()=>uT,IFFT:()=>uf,Identity:()=>Po,Imag:()=>lf,InputSpec:()=>zt,IsFinite:()=>Wc,IsInf:()=>Vc,IsNan:()=>Uc,KernelBackend:()=>nd,LRN:()=>dd,LRNGrad:()=>pf,LayerVariable:()=>sT,LayersModel:()=>_s,LeakyRelu:()=>Oo,Less:()=>Gc,LessEqual:()=>Hc,LinSpace:()=>df,Log:()=>Mo,Log1p:()=>jc,LogSoftmax:()=>nI,LogicalAnd:()=>qc,LogicalNot:()=>ud,LogicalOr:()=>ld,MathBackendWebGL:()=>Dm,Max:()=>Lo,MaxPool:()=>zo,MaxPool3D:()=>pd,MaxPool3DGrad:()=>ff,MaxPoolGrad:()=>hf,MaxPoolWithArgmax:()=>mf,Maximum:()=>Bo,Mean:()=>Wo,Min:()=>Vo,Minimum:()=>Uo,MirrorPad:()=>Go,Mod:()=>Kc,MomentumOptimizer:()=>im,Multinomial:()=>gf,Multiply:()=>Ho,Neg:()=>Xc,NonMaxSuppressionV3:()=>Zc,NonMaxSuppressionV4:()=>Jc,NonMaxSuppressionV5:()=>Qc,NotEqual:()=>Yc,OP_SCOPE_SUFFIX:()=>pI,OneHot:()=>jo,OnesLike:()=>eu,Optimizer:()=>$s,OptimizerConstructors:()=>Xs,Pack:()=>tu,PadV2:()=>qo,Pool:()=>d$,Pow:()=>Ko,Prelu:()=>Xo,Prod:()=>nu,RMSPropOptimizer:()=>cm,RNN:()=>fs,Range:()=>hd,Rank:()=>uy,Real:()=>bf,RealDiv:()=>_o,Reciprocal:()=>ru,Reduction:()=>vn,Relu:()=>Yo,Relu6:()=>Jo,Reshape:()=>su,ResizeBilinear:()=>Zo,ResizeBilinearGrad:()=>vf,ResizeNearestNeighbor:()=>fd,ResizeNearestNeighborGrad:()=>yf,Reverse:()=>Qo,RotateWithOffset:()=>xu,Round:()=>ei,Rsqrt:()=>ti,SGDOptimizer:()=>Pd,ScatterNd:()=>au,Select:()=>ou,Selu:()=>iu,Sequential:()=>pc,Sigmoid:()=>ri,Sign:()=>lu,Sin:()=>ni,Sinh:()=>uu,Slice:()=>cu,Softmax:()=>oi,Softplus:()=>du,SpaceToBatchND:()=>pu,SparseFillEmptyRows:()=>md,SparseReshape:()=>fu,SparseSegmentMean:()=>gd,SparseSegmentSum:()=>bd,SparseToDense:()=>xf,SplitV:()=>hu,Sqrt:()=>si,Square:()=>yd,SquaredDifference:()=>ii,Step:()=>ya,StridedSlice:()=>mu,StringNGrams:()=>wf,StringSplit:()=>kf,StringToHashBucketFast:()=>If,Sub:()=>ci,Sum:()=>ai,SymbolicTensor:()=>zr,Tan:()=>ui,Tanh:()=>li,Tensor:()=>Ee,TensorBuffer:()=>Ht,Tile:()=>ba,TopK:()=>gu,Transform:()=>bu,Transpose:()=>di,Unique:()=>Sf,Unpack:()=>yu,UnsortedSegmentSum:()=>vd,Variable:()=>aa,ZerosLike:()=>vu,_FusedMatMul:()=>Za,abs:()=>Bt,acos:()=>Sv,acosh:()=>Tv,add:()=>Y,addN:()=>HI,all:()=>Af,any:()=>Hl,argMax:()=>no,argMin:()=>Cv,asin:()=>Nv,asinh:()=>_v,atan:()=>Ev,atan2:()=>Av,atanh:()=>Dv,avgPool:()=>gr,avgPool3d:()=>Fv,backend:()=>GI,backend_util:()=>_,basicLSTMCell:()=>rP,batchNorm:()=>Es,batchNorm2d:()=>XI,batchNorm3d:()=>YI,batchNorm4d:()=>ZI,batchToSpaceND:()=>Cd,bincount:()=>Rv,booleanMaskAsync:()=>cM,broadcastArgs:()=>JI,broadcastTo:()=>nc,broadcast_util:()=>wu,browser:()=>pi,buffer:()=>We,callbacks:()=>RG,cast:()=>ce,ceil:()=>Pv,clipByValue:()=>en,clone:()=>Ns,complex:()=>oa,concat:()=>tt,concat1d:()=>QI,concat2d:()=>eS,concat3d:()=>tS,concat4d:()=>nS,constraints:()=>HS,conv1d:()=>Df,conv2d:()=>Pt,conv2dTranspose:()=>$f,conv3d:()=>Mv,conv3dTranspose:()=>sS,copyRegisteredKernels:()=>m$,cos:()=>Nd,cosh:()=>Ff,cosineWindow:()=>ux,cumsum:()=>Rf,customGrad:()=>cs,data:()=>AC,denseBincount:()=>aS,deprecationWarn:()=>Iv,depthToSpace:()=>Lv,depthwiseConv2d:()=>wa,deregisterOp:()=>MG,device_util:()=>Id,diag:()=>FP,dilation2d:()=>Bv,disableDeprecationWarnings:()=>mR,dispose:()=>De,disposeVariables:()=>gR,div:()=>ge,divNoNan:()=>zv,dot:()=>oS,dropout:()=>NS,einsum:()=>iS,elu:()=>ku,enableDebugMode:()=>fR,enableProdMode:()=>hR,enclosingPowerOfTwo:()=>_S,engine:()=>ns,env:()=>J,equal:()=>tr,erf:()=>Wv,exp:()=>gn,expandDims:()=>fn,expm1:()=>Vv,eye:()=>Uv,fft:()=>Fd,fill:()=>Tn,findBackend:()=>IR,findBackendFactory:()=>SR,floor:()=>Iu,floorDiv:()=>Ef,forceHalfFloat:()=>KN,fused:()=>ca,gather:()=>so,gatherND:()=>CS,gather_util:()=>bv,getBackend:()=>wR,getGradient:()=>iy,getKernel:()=>xh,getKernelsForBackend:()=>wh,getThreadsCount:()=>Fce,gpgpu_util:()=>CN,grad:()=>cO,grads:()=>uO,greater:()=>Wn,greaterEqual:()=>ka,ifft:()=>uc,imag:()=>Pf,image:()=>Qn,inTopKAsync:()=>vM,initializers:()=>XS,input:()=>ST,io:()=>Zt,irfft:()=>Xf,isFinite:()=>cS,isInf:()=>uS,isNaN:()=>Gv,keep:()=>Jt,kernel_impls:()=>hs,layers:()=>nT,leakyRelu:()=>_d,less:()=>Of,lessEqual:()=>Ia,linalg:()=>LS,linspace:()=>lS,loadGraphModel:()=>zH,loadLayersModel:()=>GV,localResponseNormalization:()=>Hv,log:()=>nr,log1p:()=>Ed,logSigmoid:()=>pS,logSoftmax:()=>Lf,logSumExp:()=>Kv,logicalAnd:()=>Ar,logicalNot:()=>Ad,logicalOr:()=>Bf,logicalXor:()=>gS,losses:()=>tB,matMul:()=>Ae,math:()=>CI,max:()=>_r,maxPool:()=>Mt,maxPool3d:()=>Xv,maxPoolWithArgmax:()=>bS,maximum:()=>ps,mean:()=>Et,memory:()=>Sh,meshgrid:()=>DO,metrics:()=>tC,min:()=>jl,minimum:()=>Su,mirrorPad:()=>Yv,mod:()=>Zv,model:()=>VV,models:()=>nC,moments:()=>zf,movingAverage:()=>dM,mul:()=>V,multiRNNCell:()=>BO,multinomial:()=>yS,neg:()=>Ct,nextFrame:()=>BS,norm:()=>Jf,notEqual:()=>oo,oneHot:()=>ic,ones:()=>Jn,onesLike:()=>rr,op:()=>W,outerProduct:()=>GO,pad:()=>br,pad1d:()=>qO,pad2d:()=>XO,pad3d:()=>ZO,pad4d:()=>QO,pool:()=>vS,pow:()=>As,prelu:()=>$d,print:()=>kI,prod:()=>Wf,profile:()=>bR,rand:()=>c3,randomGamma:()=>p3,randomNormal:()=>xS,randomUniform:()=>Tu,range:()=>cc,ready:()=>xR,real:()=>ql,reciprocal:()=>ex,registerBackend:()=>_f,registerCallbackConstructor:()=>HV,registerGradient:()=>rI,registerKernel:()=>xd,registerOp:()=>OG,regularizers:()=>rC,relu:()=>Ke,relu6:()=>Vf,removeBackend:()=>kR,reshape:()=>U,reverse:()=>sr,reverse1d:()=>w3,reverse2d:()=>I3,reverse3d:()=>T3,reverse4d:()=>N3,rfft:()=>Rd,round:()=>Uf,rsqrt:()=>Gf,scalar:()=>Ie,scatterND:()=>TS,scatter_util:()=>yv,selu:()=>Hf,separableConv2d:()=>fi,sequential:()=>UV,serialization:()=>ie,setBackend:()=>vR,setPlatform:()=>TR,setThreadsCount:()=>$ce,setWasmPath:()=>Ace,setWasmPaths:()=>Dce,setWebGLContext:()=>Z2,setdiff1dAsync:()=>wS,sigmoid:()=>fr,sign:()=>tx,signal:()=>eB,sin:()=>jf,sinh:()=>qf,slice:()=>ze,slice1d:()=>Kf,slice2d:()=>nx,slice3d:()=>Cu,slice4d:()=>Kl,slice_util:()=>jt,softmax:()=>Xr,softplus:()=>hi,spaceToBatchND:()=>Dd,sparse:()=>Nl,sparseToDense:()=>cx,spectral:()=>QL,split:()=>Ln,sqrt:()=>cn,square:()=>ut,squaredDifference:()=>Yf,squeeze:()=>us,stack:()=>Ot,step:()=>Nu,stridedSlice:()=>rx,string:()=>ah,sub:()=>fe,sum:()=>xe,sumOutType:()=>Cf,tan:()=>sx,tanh:()=>ro,tensor:()=>er,tensor1d:()=>He,tensor2d:()=>Vr,tensor3d:()=>Nf,tensor4d:()=>Yr,tensor5d:()=>Q3,tensor6d:()=>eM,tensor_util:()=>Wr,test_util:()=>WI,tidy:()=>M,tile:()=>Mn,time:()=>yR,topk:()=>ax,train:()=>Ba,transpose:()=>Fe,truncatedNormal:()=>Zf,unique:()=>Ch,unregisterGradient:()=>f$,unregisterKernel:()=>h$,unsortedSegmentSum:()=>ox,unstack:()=>ft,upcastType:()=>Er,util:()=>k,valueAndGrad:()=>lO,valueAndGrads:()=>dO,variable:()=>kS,variableGrads:()=>dS,version:()=>Gce,version_converter:()=>WH,version_core:()=>pR,version_layers:()=>Fx,version_wasm:()=>Rce,version_webgl:()=>X9,webgl:()=>Y9,webgl_util:()=>Y2,where:()=>mn,whereAsync:()=>ix,zeros:()=>St,zerosLike:()=>je});var mD=Object.create,Uh=Object.defineProperty,gD=Object.getOwnPropertyDescriptor,Lk=Object.getOwnPropertyNames,bD=Object.getPrototypeOf,yD=Object.prototype.hasOwnProperty,vD=e=>Uh(e,"__esModule",{value:!0}),gt=(e,t)=>function(){return t||(0,e[Lk(e)[0]])((t={exports:{}}).exports,t),t.exports},$e=(e,t)=>{for(var n in t)Uh(e,n,{get:t[n],enumerable:!0})},xD=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Lk(t))!yD.call(e,s)&&(n||s!=="default")&&Uh(e,s,{get:()=>t[s],enumerable:!(r=gD(t,s))||r.enumerable});return e},fo=(e,t)=>xD(vD(Uh(e!=null?mD(bD(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),wD=gt({"node_modules/.pnpm/long@4.0.0/node_modules/long/src/long.js"(e,t){t.exports=r;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(R){}function r(R,C,L){this.low=R|0,this.high=C|0,this.unsigned=!!L}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0});function s(R){return(R&&R.__isLong__)===!0}r.isLong=s;var a={},o={};function i(R,C){var L,G,j;return C?(R>>>=0,(j=0<=R&&R<256)&&(G=o[R],G)?G:(L=l(R,(R|0)<0?-1:0,!0),j&&(o[R]=L),L)):(R|=0,(j=-128<=R&&R<128)&&(G=a[R],G)?G:(L=l(R,R<0?-1:0,!1),j&&(a[R]=L),L))}r.fromInt=i;function c(R,C){if(isNaN(R))return C?x:v;if(C){if(R<0)return x;if(R>=g)return D}else{if(R<=-b)return P;if(R+1>=b)return $}return R<0?c(-R,C).neg():l(R%m|0,R/m|0,C)}r.fromNumber=c;function l(R,C,L){return new r(R,C,L)}r.fromBits=l;var u=Math.pow;function d(R,C,L){if(R.length===0)throw Error("empty string");if(R==="NaN"||R==="Infinity"||R==="+Infinity"||R==="-Infinity")return v;if(typeof C=="number"?(L=C,C=!1):C=!!C,L=L||10,L<2||360)throw Error("interior hyphen");if(G===0)return d(R.substring(1),C,L).neg();for(var j=c(u(L,8)),K=v,q=0;q>>0:this.low},F.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},F.toString=function(C){if(C=C||10,C<2||36>>0,oe=se.toString(C);if(q=te,q.isZero())return oe+Z;for(;oe.length<6;)oe="0"+oe;Z=""+oe+Z}},F.getHighBits=function(){return this.high},F.getHighBitsUnsigned=function(){return this.high>>>0},F.getLowBits=function(){return this.low},F.getLowBitsUnsigned=function(){return this.low>>>0},F.getNumBitsAbs=function(){if(this.isNegative())return this.eq(P)?64:this.neg().getNumBitsAbs();for(var C=this.high!=0?this.high:this.low,L=31;L>0&&(C&1<=0},F.isOdd=function(){return(this.low&1)===1},F.isEven=function(){return(this.low&1)===0},F.equals=function(C){return s(C)||(C=p(C)),this.unsigned!==C.unsigned&&this.high>>>31===1&&C.high>>>31===1?!1:this.high===C.high&&this.low===C.low},F.eq=F.equals,F.notEquals=function(C){return!this.eq(C)},F.neq=F.notEquals,F.ne=F.notEquals,F.lessThan=function(C){return this.comp(C)<0},F.lt=F.lessThan,F.lessThanOrEqual=function(C){return this.comp(C)<=0},F.lte=F.lessThanOrEqual,F.le=F.lessThanOrEqual,F.greaterThan=function(C){return this.comp(C)>0},F.gt=F.greaterThan,F.greaterThanOrEqual=function(C){return this.comp(C)>=0},F.gte=F.greaterThanOrEqual,F.ge=F.greaterThanOrEqual,F.compare=function(C){if(s(C)||(C=p(C)),this.eq(C))return 0;var L=this.isNegative(),G=C.isNegative();return L&&!G?-1:!L&&G?1:this.unsigned?C.high>>>0>this.high>>>0||C.high===this.high&&C.low>>>0>this.low>>>0?-1:1:this.sub(C).isNegative()?-1:1},F.comp=F.compare,F.negate=function(){return!this.unsigned&&this.eq(P)?P:this.not().add(w)},F.neg=F.negate,F.add=function(C){s(C)||(C=p(C));var L=this.high>>>16,G=this.high&65535,j=this.low>>>16,K=this.low&65535,q=C.high>>>16,Z=C.high&65535,te=C.low>>>16,se=C.low&65535,oe=0,re=0,ue=0,ne=0;return ne+=K+se,ue+=ne>>>16,ne&=65535,ue+=j+te,re+=ue>>>16,ue&=65535,re+=G+Z,oe+=re>>>16,re&=65535,oe+=L+q,oe&=65535,l(ue<<16|ne,oe<<16|re,this.unsigned)},F.subtract=function(C){return s(C)||(C=p(C)),this.add(C.neg())},F.sub=F.subtract,F.multiply=function(C){if(this.isZero())return v;if(s(C)||(C=p(C)),n){var L=n.mul(this.low,this.high,C.low,C.high);return l(L,n.get_high(),this.unsigned)}if(C.isZero())return v;if(this.eq(P))return C.isOdd()?P:v;if(C.eq(P))return this.isOdd()?P:v;if(this.isNegative())return C.isNegative()?this.neg().mul(C.neg()):this.neg().mul(C).neg();if(C.isNegative())return this.mul(C.neg()).neg();if(this.lt(y)&&C.lt(y))return c(this.toNumber()*C.toNumber(),this.unsigned);var G=this.high>>>16,j=this.high&65535,K=this.low>>>16,q=this.low&65535,Z=C.high>>>16,te=C.high&65535,se=C.low>>>16,oe=C.low&65535,re=0,ue=0,ne=0,he=0;return he+=q*oe,ne+=he>>>16,he&=65535,ne+=K*oe,ue+=ne>>>16,ne&=65535,ne+=q*se,ue+=ne>>>16,ne&=65535,ue+=j*oe,re+=ue>>>16,ue&=65535,ue+=K*se,re+=ue>>>16,ue&=65535,ue+=q*te,re+=ue>>>16,ue&=65535,re+=G*oe+j*se+K*te+q*Z,re&=65535,l(ne<<16|he,re<<16|ue,this.unsigned)},F.mul=F.multiply,F.divide=function(C){if(s(C)||(C=p(C)),C.isZero())throw Error("division by zero");if(n){if(!this.unsigned&&this.high===-2147483648&&C.low===-1&&C.high===-1)return this;var L=(this.unsigned?n.div_u:n.div_s)(this.low,this.high,C.low,C.high);return l(L,n.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?x:v;var G,j,K;if(this.unsigned){if(C.unsigned||(C=C.toUnsigned()),C.gt(this))return x;if(C.gt(this.shru(1)))return T;K=x}else{if(this.eq(P)){if(C.eq(w)||C.eq(N))return P;if(C.eq(P))return w;var q=this.shr(1);return G=q.div(C).shl(1),G.eq(v)?C.isNegative()?w:N:(j=this.sub(C.mul(G)),K=G.add(j.div(C)),K)}else if(C.eq(P))return this.unsigned?x:v;if(this.isNegative())return C.isNegative()?this.neg().div(C.neg()):this.neg().div(C).neg();if(C.isNegative())return this.div(C.neg()).neg();K=v}for(j=this;j.gte(C);){G=Math.max(1,Math.floor(j.toNumber()/C.toNumber()));for(var Z=Math.ceil(Math.log(G)/Math.LN2),te=Z<=48?1:u(2,Z-48),se=c(G),oe=se.mul(C);oe.isNegative()||oe.gt(j);)G-=te,se=c(G,this.unsigned),oe=se.mul(C);se.isZero()&&(se=w),K=K.add(se),j=j.sub(oe)}return K},F.div=F.divide,F.modulo=function(C){if(s(C)||(C=p(C)),n){var L=(this.unsigned?n.rem_u:n.rem_s)(this.low,this.high,C.low,C.high);return l(L,n.get_high(),this.unsigned)}return this.sub(this.div(C).mul(C))},F.mod=F.modulo,F.rem=F.modulo,F.not=function(){return l(~this.low,~this.high,this.unsigned)},F.and=function(C){return s(C)||(C=p(C)),l(this.low&C.low,this.high&C.high,this.unsigned)},F.or=function(C){return s(C)||(C=p(C)),l(this.low|C.low,this.high|C.high,this.unsigned)},F.xor=function(C){return s(C)||(C=p(C)),l(this.low^C.low,this.high^C.high,this.unsigned)},F.shiftLeft=function(C){return s(C)&&(C=C.toInt()),(C&=63)===0?this:C<32?l(this.low<>>32-C,this.unsigned):l(0,this.low<>>C|this.high<<32-C,this.high>>C,this.unsigned):l(this.high>>C-32,this.high>=0?0:-1,this.unsigned)},F.shr=F.shiftRight,F.shiftRightUnsigned=function(C){if(s(C)&&(C=C.toInt()),C&=63,C===0)return this;var L=this.high;if(C<32){var G=this.low;return l(G>>>C|L<<32-C,L>>>C,this.unsigned)}else return C===32?l(L,0,this.unsigned):l(L>>>C-32,0,this.unsigned)},F.shru=F.shiftRightUnsigned,F.shr_u=F.shiftRightUnsigned,F.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},F.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},F.toBytes=function(C){return C?this.toBytesLE():this.toBytesBE()},F.toBytesLE=function(){var C=this.high,L=this.low;return[L&255,L>>>8&255,L>>>16&255,L>>>24,C&255,C>>>8&255,C>>>16&255,C>>>24]},F.toBytesBE=function(){var C=this.high,L=this.low;return[C>>>24,C>>>16&255,C>>>8&255,C&255,L>>>24,L>>>16&255,L>>>8&255,L&255]},r.fromBytes=function(C,L,G){return G?r.fromBytesLE(C,L):r.fromBytesBE(C,L)},r.fromBytesLE=function(C,L){return new r(C[0]|C[1]<<8|C[2]<<16|C[3]<<24,C[4]|C[5]<<8|C[6]<<16|C[7]<<24,L)},r.fromBytesBE=function(C,L){return new r(C[4]<<24|C[5]<<16|C[6]<<8|C[7],C[0]<<24|C[1]<<16|C[2]<<8|C[3],L)}}}),kD=gt({"(disabled):node_modules/.pnpm/node-fetch@2.6.7/node_modules/node-fetch/browser.js"(){}}),ID=gt({"(disabled):util"(){}}),SD=gt({"node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/alea.js"(e,t){(function(n,r,s){function a(l){var u=this,d=c();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(l),u.s0<0&&(u.s0+=1),u.s1-=d(l),u.s1<0&&(u.s1+=1),u.s2-=d(l),u.s2<0&&(u.s2+=1),d=null}function o(l,u){return u.c=l.c,u.s0=l.s0,u.s1=l.s1,u.s2=l.s2,u}function i(l,u){var d=new a(l),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 c(){var l=4022871197,u=function(d){d=d.toString();for(var p=0;p>>0,h-=l,h*=l,l=h>>>0,h-=l,l+=h*4294967296}return(l>>>0)*23283064365386963e-26};return u}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.alea=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),TD=gt({"node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xor128.js"(e,t){(function(n,r,s){function a(c){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var p=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^p^p>>>8},c===(c|0)?l.x=c:u+=c;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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xor128=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),CD=gt({"node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(n,r,s){function a(c){var l=this,u="";l.next=function(){var p=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(p^p<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,c===(c|0)?l.x=c:u+=c;for(var d=0;d>>4),l.next()}function o(c,l){return l.x=c.x,l.y=c.y,l.z=c.z,l.w=c.w,l.v=c.v,l.d=c.d,l}function i(c,l){var u=new a(c),d=l&&l.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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xorwow=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),ND=gt({"node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(n,r,s){function a(c){var l=this;l.next=function(){var d=l.x,p=l.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,l.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(l,c)}function o(c,l){return l.x=c.x.slice(),l.i=c.i,l}function i(c,l){c==null&&(c=+new Date);var u=new a(c),d=l&&l.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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xorshift7=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),_D=gt({"node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(n,r,s){function a(c){var l=this;l.next=function(){var d=l.w,p=l.X,h=l.i,f,m;return l.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,l.i=h,m+(d^d>>>16)|0};function u(d,p){var h,f,m,g,b,y=[],v=128;for(p===(p|0)?(f=p,p=null):(p=p+"\0",f=0,v=Math.max(v,p.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(b=b+1640531527|0,h=y[g&127]^=f+b,m=h==0?m+1:0);for(m>=128&&(y[(p&&p.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=y[m+34&127],h=y[m=m+1&127],f^=f<<13,h^=h<<17,f^=f>>>15,h^=h>>>12,y[m]=f^h;d.w=b,d.X=y,d.i=m}u(l,c)}function o(c,l){return l.i=c.i,l.w=c.w,l.X=c.X.slice(),l}function i(c,l){c==null&&(c=+new Date);var u=new a(c),d=l&&l.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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xor4096=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),ED=gt({"node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/tychei.js"(e,t){(function(n,r,s){function a(c){var l=this,u="";l.next=function(){var p=l.b,h=l.c,f=l.d,m=l.a;return p=p<<25^p>>>7^h,h=h-f|0,f=f<<24^f>>>8^m,m=m-p|0,l.b=p=p<<20^p>>>12^h,l.c=h=h-f|0,l.d=f<<16^h>>>16^m,l.a=m-p|0},l.a=0,l.b=0,l.c=-1640531527,l.d=1367130551,c===Math.floor(c)?(l.a=c/4294967296|0,l.b=c|0):u+=c;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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.tychei=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),Bk=gt({"(disabled):crypto"(){}}),AD=gt({"node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/seedrandom.js"(e,t){(function(n,r){var s=this,a=256,o=6,i=52,c="random",l=r.pow(a,o),u=r.pow(2,i),d=u*2,p=a-1,h;function f(w,T,N){var $=[];T=T==!0?{entropy:!0}:T||{};var D=y(b(T.entropy?[w,x(n)]:w==null?v():w,3),$),P=new m($),F=function(){for(var R=P.g(o),C=l,L=0;R=d;)R/=2,C/=2,L>>>=1;return(R+L)/C};return F.int32=function(){return P.g(4)|0},F.quick=function(){return P.g(4)/4294967296},F.double=F,y(x(P.S),n),(T.pass||N||function(R,C,L,G){return G&&(G.S&&g(G,P),R.state=function(){return g(P,{})}),L?(r[c]=R,C):R})(F,D,"global"in T?T.global:this==r,T.state)}r["seed"+c]=f;function m(w){var T,N=w.length,$=this,D=0,P=$.i=$.j=0,F=$.S=[];for(N||(w=[N++]);D>>0,h-=l,h*=l,l=h>>>0,h-=l,l+=h*4294967296}return(l>>>0)*23283064365386963e-26};return u}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.alea=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),$D=gt({"node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xor128.js"(e,t){(function(n,r,s){function a(c){var l=this,u="";l.x=0,l.y=0,l.z=0,l.w=0,l.next=function(){var p=l.x^l.x<<11;return l.x=l.y,l.y=l.z,l.z=l.w,l.w^=l.w>>>19^p^p>>>8},c===(c|0)?l.x=c:u+=c;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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xor128=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),FD=gt({"node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(n,r,s){function a(c){var l=this,u="";l.next=function(){var p=l.x^l.x>>>2;return l.x=l.y,l.y=l.z,l.z=l.w,l.w=l.v,(l.d=l.d+362437|0)+(l.v=l.v^l.v<<4^(p^p<<1))|0},l.x=0,l.y=0,l.z=0,l.w=0,l.v=0,c===(c|0)?l.x=c:u+=c;for(var d=0;d>>4),l.next()}function o(c,l){return l.x=c.x,l.y=c.y,l.z=c.z,l.w=c.w,l.v=c.v,l.d=c.d,l}function i(c,l){var u=new a(c),d=l&&l.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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xorwow=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),RD=gt({"node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(n,r,s){function a(c){var l=this;l.next=function(){var d=l.x,p=l.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,l.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(l,c)}function o(c,l){return l.x=c.x.slice(),l.i=c.i,l}function i(c,l){c==null&&(c=+new Date);var u=new a(c),d=l&&l.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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xorshift7=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),PD=gt({"node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(n,r,s){function a(c){var l=this;l.next=function(){var d=l.w,p=l.X,h=l.i,f,m;return l.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,l.i=h,m+(d^d>>>16)|0};function u(d,p){var h,f,m,g,b,y=[],v=128;for(p===(p|0)?(f=p,p=null):(p=p+"\0",f=0,v=Math.max(v,p.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(b=b+1640531527|0,h=y[g&127]^=f+b,m=h==0?m+1:0);for(m>=128&&(y[(p&&p.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=y[m+34&127],h=y[m=m+1&127],f^=f<<13,h^=h<<17,f^=f>>>15,h^=h>>>12,y[m]=f^h;d.w=b,d.X=y,d.i=m}u(l,c)}function o(c,l){return l.i=c.i,l.w=c.w,l.X=c.X.slice(),l}function i(c,l){c==null&&(c=+new Date);var u=new a(c),d=l&&l.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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.xor4096=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),OD=gt({"node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/tychei.js"(e,t){(function(n,r,s){function a(c){var l=this,u="";l.next=function(){var p=l.b,h=l.c,f=l.d,m=l.a;return p=p<<25^p>>>7^h,h=h-f|0,f=f<<24^f>>>8^m,m=m-p|0,l.b=p=p<<20^p>>>12^h,l.c=h=h-f|0,l.d=f<<16^h>>>16^m,l.a=m-p|0},l.a=0,l.b=0,l.c=-1640531527,l.d=1367130551,c===Math.floor(c)?(l.a=c/4294967296|0,l.b=c|0):u+=c;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}r&&r.exports?r.exports=i:s&&s.amd?s(function(){return i}):this.tychei=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),MD=gt({"node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/seedrandom.js"(e,t){(function(n,r,s){var a=256,o=6,i=52,c="random",l=s.pow(a,o),u=s.pow(2,i),d=u*2,p=a-1,h;function f(w,T,N){var $=[];T=T==!0?{entropy:!0}:T||{};var D=y(b(T.entropy?[w,x(r)]:w==null?v():w,3),$),P=new m($),F=function(){for(var R=P.g(o),C=l,L=0;R=d;)R/=2,C/=2,L>>>=1;return(R+L)/C};return F.int32=function(){return P.g(4)|0},F.quick=function(){return P.g(4)/4294967296},F.double=F,y(x(P.S),r),(T.pass||N||function(R,C,L,G){return G&&(G.S&&g(G,P),R.state=function(){return g(P,{})}),L?(s[c]=R,C):R})(F,D,"global"in T?T.global:this==s,T.state)}function m(w){var T,N=w.length,$=this,D=0,P=$.i=$.j=0,F=$.S=[];for(N||(w=[N++]);D1&&(b=process.argv[1].replace(/\\/g,"/")),g=process.argv.slice(2),process.on("uncaughtException",function(S){if(!(S instanceof xl))throw S}),process.on("unhandledRejection",vs),y=function(S){process.exit(S)},u.inspect=function(){return"[Emscripten Module object]"};var j;try{j=LD()}catch(S){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),S}global.Worker=j.Worker}else T?(typeof read!="undefined"&&(P=function(E){return read(E)}),R=function(E){var B;return typeof readbuffer=="function"?new Uint8Array(readbuffer(E)):(B=read(E,"binary"),Se(typeof B=="object"),B)},typeof scriptArgs!="undefined"?g=scriptArgs:typeof arguments!="undefined"&&(g=arguments),typeof quit=="function"&&(y=function(S){quit(S)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(v||x)&&(x?$=self.location.href:typeof document!="undefined"&&document.currentScript&&($=document.currentScript.src),typeof r!="undefined"&&r&&($=r),$.indexOf("blob:")!==0?$=$.substr(0,$.lastIndexOf("/")+1):$="",w?(P=function(E,B){return L||(L=fh()),G||(G=Pl()),E=G.normalize(E),L.readFileSync(E,B?null:"utf8")},R=function(E){var B=P(E,!0);return B.buffer||(B=new Uint8Array(B)),Se(B.buffer),B}):(P=function(S){var E=new XMLHttpRequest;return E.open("GET",S,!1),E.send(null),E.responseText},x&&(R=function(S){var E=new XMLHttpRequest;return E.open("GET",S,!1),E.responseType="arraybuffer",E.send(null),new Uint8Array(E.response)}),F=function(S,E,B){var X=new XMLHttpRequest;X.open("GET",S,!0),X.responseType="arraybuffer",X.onload=function(){if(X.status==200||X.status==0&&X.response){E(X.response);return}B()},X.onerror=B,X.send(null)}),C=function(S){document.title=S});w&&typeof performance=="undefined"&&(global.performance=BD().performance);var K=u.print||console.log.bind(console),q=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&&(b=u.thisProgram),u.quit&&(y=u.quit);function Z(S){Z.shown||(Z.shown={}),Z.shown[S]||(Z.shown[S]=1,q(S))}var te=Atomics.load,se=Atomics.store,oe=Atomics.compareExchange,re;u.wasmBinary&&(re=u.wasmBinary);var ue=u.noExitRuntime||!0;typeof WebAssembly!="object"&&vs("no native wasm support detected");var ne,he,ye=!1,Ce;function Se(S,E){S||vs("Assertion failed: "+E)}function _e(S){var E=u["_"+S];return Se(E,"Cannot call unknown function "+S+", make sure it is exported"),E}function Le(S,E,B,X,pe){var le={string:function(bn){var ji=0;if(bn!=null&&bn!==0){var l1=(bn.length<<2)+1;ji=Ui(l1),Je(bn,ji,l1)}return ji},array:function(bn){var ji=Ui(bn.length);return kt(bn,ji),ji}};function de(bn){return E==="string"?Ue(bn):E==="boolean"?Boolean(bn):bn}var we=_e(S),at=[],Xt=0;if(X)for(var Ut=0;Ut=X);){var le=S[E++];if(!le)return pe;if(!(le&128)){pe+=String.fromCharCode(le);continue}var de=S[E++]&63;if((le&224)==192){pe+=String.fromCharCode((le&31)<<6|de);continue}var we=S[E++]&63;if((le&240)==224?le=(le&15)<<12|de<<6|we:le=(le&7)<<18|de<<12|we<<6|S[E++]&63,le<65536)pe+=String.fromCharCode(le);else{var at=le-65536;pe+=String.fromCharCode(55296|at>>10,56320|at&1023)}}return pe}function Ue(S,E){return S?Ve(o(),S,E):""}function ct(S,E,B,X){if(!(X>0))return 0;for(var pe=B,le=B+X-1,de=0;de=55296&&we<=57343){var at=S.charCodeAt(++de);we=65536+((we&1023)<<10)|at&1023}if(we<=127){if(B>=le)break;E[B++]=we}else if(we<=2047){if(B+1>=le)break;E[B++]=192|we>>6,E[B++]=128|we&63}else if(we<=65535){if(B+2>=le)break;E[B++]=224|we>>12,E[B++]=128|we>>6&63,E[B++]=128|we&63}else{if(B+3>=le)break;E[B++]=240|we>>18,E[B++]=128|we>>12&63,E[B++]=128|we>>6&63,E[B++]=128|we&63}}return E[B]=0,B-pe}function Je(S,E,B){return ct(S,o(),E,B)}function dt(S){for(var E=0,B=0;B=55296&&X<=57343&&(X=65536+((X&1023)<<10)|S.charCodeAt(++B)&1023),X<=127?++E:X<=2047?E+=2:X<=65535?E+=3:E+=4}return E}function kt(S,E){a().set(S,E)}function Dn(S,E){return S%E>0&&(S+=E-S%E),S}var Qe,jn,sn,wr,$n,qn,ir,kr,cr;function Fn(S){Qe=S,u.HEAP8=jn=new Int8Array(S),u.HEAP16=wr=new Int16Array(S),u.HEAP32=qn=new Int32Array(S),u.HEAPU8=sn=new Uint8Array(S),u.HEAPU16=$n=new Uint16Array(S),u.HEAPU32=ir=new Uint32Array(S),u.HEAPF32=kr=new Float32Array(S),u.HEAPF64=cr=new Float64Array(S)}var Ws=u.INITIAL_MEMORY||16777216;if(N)ne=u.wasmMemory,Qe=u.buffer;else if(u.wasmMemory)ne=u.wasmMemory;else if(ne=new WebAssembly.Memory({initial:Ws/65536,maximum:32768,shared:!0}),!(ne.buffer instanceof SharedArrayBuffer))throw q("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");ne&&(Qe=ne.buffer),Ws=Qe.byteLength,Fn(Qe);var pn,Vs=[],ur=[],cl=[],ul=[],ys=[],gp=!1,gg=!1;N||ur.push({func:function(){Rp()}});function bp(){if(!N){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)bg(u.preRun.shift());Mi(Vs)}}function yp(){gp=!0,!N&&Mi(ur)}function vp(){N||Mi(cl)}function Rn(){N||(gg=!0)}function xp(){if(!N){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)yg(u.postRun.shift());Mi(ys)}}function bg(S){Vs.unshift(S)}function yg(S){ys.unshift(S)}var Ir=0,ll=null,$a=null;function vg(S){Se(!N,"addRunDependency cannot be used in a pthread worker"),Ir++,u.monitorRunDependencies&&u.monitorRunDependencies(Ir)}function xg(S){if(Ir--,u.monitorRunDependencies&&u.monitorRunDependencies(Ir),Ir==0&&(ll!==null&&(clearInterval(ll),ll=null),$a)){var E=$a;$a=null,E()}}u.preloadedImages={},u.preloadedAudios={};function vs(S){u.onAbort&&u.onAbort(S),N&&console.error("Pthread aborting at "+new Error().stack),S+="",q(S),ye=!0,Ce=1,S="abort("+S+"). Build with -s ASSERTIONS=1 for more info.";var E=new WebAssembly.RuntimeError(S);throw p(E),E}function Fa(S,E){return String.prototype.startsWith?S.startsWith(E):S.indexOf(E)===0}var wg="data:application/octet-stream;base64,";function wp(S){return Fa(S,wg)}var kg="file://";function kp(S){return Fa(S,kg)}var Pn="tfjs-backend-wasm-threaded-simd.wasm";wp(Pn)||(Pn=D(Pn));function Ip(S){try{if(S==Pn&&re)return new Uint8Array(re);if(R)return R(S);throw"both async and sync fetching of the wasm failed"}catch(E){vs(E)}}function Ig(){if(!re&&(v||x)){if(typeof fetch=="function"&&!kp(Pn))return fetch(Pn,{credentials:"same-origin"}).then(function(S){if(!S.ok)throw"failed to load wasm binary file at '"+Pn+"'";return S.arrayBuffer()}).catch(function(){return Ip(Pn)});if(F)return new Promise(function(S,E){F(Pn,function(B){S(new Uint8Array(B))},E)})}return Promise.resolve().then(function(){return Ip(Pn)})}function Sg(){var S={a:gb};function E(de,we){var at=de.exports;if(u.asm=at,pn=u.asm.I,he=we,!N){var Xt=Te.unusedWorkers.length;Te.unusedWorkers.forEach(function(Ut){Te.loadWasmModuleToWorker(Ut,function(){--Xt||xg("wasm-instantiate")})})}}N||vg("wasm-instantiate");function B(de){E(de.instance,de.module)}function X(de){return Ig().then(function(we){return WebAssembly.instantiate(we,S)}).then(de,function(we){q("failed to asynchronously prepare wasm: "+we),vs(we)})}function pe(){return!re&&typeof WebAssembly.instantiateStreaming=="function"&&!wp(Pn)&&!kp(Pn)&&typeof fetch=="function"?fetch(Pn,{credentials:"same-origin"}).then(function(de){var we=WebAssembly.instantiateStreaming(de,S);return we.then(B,function(at){return q("wasm streaming compile failed: "+at),q("falling back to ArrayBuffer instantiation"),X(B)})}):X(B)}if(u.instantiateWasm)try{var le=u.instantiateWasm(S,E);return le}catch(de){return q("Module.instantiateWasm callback failed with error: "+de),!1}return pe().catch(p),{}}var Tg={10664:function(){throw"Canceled!"},10682:function(S,E){setTimeout(function(){s1(S,E)},0)}};function Sp(){Te.initRuntime()}function Mi(S){for(;S.length>0;){var E=S.shift();if(typeof E=="function"){E(u);continue}var B=E.func;typeof B=="number"?E.arg===void 0?pn.get(B)():pn.get(B)(E.arg):B(E.arg===void 0?null:E.arg)}}var Us={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 dl(S,E){if(S<=0||S>a().length||S&!0||E<0)return-28;if(E==0)return 0;E>=2147483647&&(E=1/0);var B=Atomics.load(i(),Gi>>2),X=0;if(B==S){var pe=Atomics.compareExchange(i(),Gi>>2,B,0);if(pe==B&&(--E,X=1,E<=0))return 1}var le=Atomics.notify(i(),S>>2,E);if(le>=0)return le+X;throw"Atomics.notify returned an unexpected value "+le}u._emscripten_futex_wake=dl;function Cg(S){if(N)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in killThread!";i()[S+12>>2]=0;var E=Te.pthreads[S];E.worker.terminate(),Te.freeThreadData(E),Te.runningWorkers.splice(Te.runningWorkers.indexOf(E.worker),1),E.worker.pthread=void 0}function Ng(S){if(N)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cancelThread!";var E=Te.pthreads[S];E.worker.postMessage({cmd:"cancel"})}function Tp(S){if(N)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!S)throw"Internal Error! Null pthread_ptr in cleanupThread!";var E=Te.pthreads[S];if(E){i()[S+12>>2]=0;var B=E.worker;Te.returnWorkerToPool(B)}}var Te={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var S=8,E=0;E>2]=S;var B=S+152;i()[B>>2]=B;for(var X=Pa(512),E=0;E<128;++E)c()[X/4+E]=0;Atomics.store(c(),S+100>>2,X),Atomics.store(c(),S+40>>2,S),Ub(S,!x,1),n1(S)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Te.threadExitHandlers.length>0;)Te.threadExitHandlers.pop()();N&&qs()&&t1()},runExitHandlersAndDeinitThread:function(S,E){Atomics.store(c(),S+56>>2,1),Atomics.store(c(),S+60>>2,0),Te.runExitHandlers(),Atomics.store(c(),S+4>>2,E),Atomics.store(c(),S+0>>2,1),dl(S+0,2147483647),Ub(0,0,0)},threadExit:function(S){var E=qs();E&&(Te.runExitHandlersAndDeinitThread(E,S),N&&postMessage({cmd:"exit"}))},threadCancel:function(){Te.runExitHandlersAndDeinitThread(qs(),-1),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var S in Te.pthreads){var E=Te.pthreads[S];E&&E.worker&&Te.returnWorkerToPool(E.worker)}Te.pthreads={};for(var B=0;B>2];i()[S.threadInfoStruct+100>>2]=0,yl(E),yl(S.threadInfoStruct)}S.threadInfoStruct=0,S.allocatedOwnStack&&S.stackBase&&yl(S.stackBase),S.stackBase=0,S.worker&&(S.worker.pthread=null)}},returnWorkerToPool:function(S){Te.runWithoutMainThreadQueuedCalls(function(){delete Te.pthreads[S.pthread.threadInfoStruct],Te.unusedWorkers.push(S),Te.runningWorkers.splice(Te.runningWorkers.indexOf(S),1),Te.freeThreadData(S.pthread),S.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(S){i()[u1>>2]=0;try{S()}finally{i()[u1>>2]=1}},receiveObjectTransfer:function(S){},loadWasmModuleToWorker:function(S,E){S.onmessage=function(B){var X=B.data,pe=X.cmd;if(S.pthread&&(Te.currentProxiedOperationCallerThread=S.pthread.threadInfoStruct),X.targetThread&&X.targetThread!=qs()){var le=Te.pthreads[X.targetThread];le?le.worker.postMessage(B.data,X.transferList):console.error('Internal error! Worker sent a message "'+pe+'" to target pthread '+X.targetThread+", but that thread no longer exists!"),Te.currentProxiedOperationCallerThread=void 0;return}if(pe==="processQueuedMainThreadWork")zp();else if(pe==="spawnThread")$p(B.data);else if(pe==="cleanupThread")Tp(X.thread);else if(pe==="killThread")Cg(X.thread);else if(pe==="cancelThread")Ng(X.thread);else if(pe==="loaded")S.loaded=!0,E&&E(S),S.runPthread&&(S.runPthread(),delete S.runPthread);else if(pe==="print")K("Thread "+X.threadId+": "+X.text);else if(pe==="printErr")q("Thread "+X.threadId+": "+X.text);else if(pe==="alert")alert("Thread "+X.threadId+": "+X.text);else if(pe==="exit"){var de=S.pthread&&Atomics.load(c(),S.pthread.threadInfoStruct+64>>2);de&&Te.returnWorkerToPool(S)}else if(pe==="exitProcess")try{oD(X.returnCode)}catch(we){if(we instanceof xl)return;throw we}else pe==="cancelDone"?Te.returnWorkerToPool(S):pe==="objectTransfer"?Te.receiveObjectTransfer(B.data):B.data.target==="setimmediate"?S.postMessage(B.data):q("worker sent an unknown command "+pe);Te.currentProxiedOperationCallerThread=void 0},S.onerror=function(B){q("pthread sent an error! "+B.filename+":"+B.lineno+": "+B.message)},w&&(S.on("message",function(B){S.onmessage({data:B})}),S.on("error",function(B){S.onerror(B)}),S.on("exit",function(B){})),S.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||r,wasmMemory:ne,wasmModule:he})},allocateUnusedWorker:function(){var S=D("tfjs-backend-wasm-threaded-simd.worker.js");Te.unusedWorkers.push(new Worker(S))},getNewWorker:function(){return Te.unusedWorkers.length==0&&(Te.allocateUnusedWorker(),Te.loadWasmModuleToWorker(Te.unusedWorkers[0])),Te.unusedWorkers.length>0?Te.unusedWorkers.pop():null},busySpinWait:function(S){for(var E=performance.now()+S;performance.now()>2]=S,S}function Rg(S,E){if(N)return Gs(1,1,S,E)}function Pg(S,E){if(S==E)postMessage({cmd:"processQueuedMainThreadWork"});else if(N)postMessage({targetThread:S,cmd:"processThreadQueue"});else{var B=Te.pthreads[S],X=B&&B.worker;if(!X)return;X.postMessage({cmd:"processThreadQueue"})}return 1}function Og(){vs()}function Mg(S,E,B){var X=Wg(E,B);return Tg[S].apply(null,X)}function Lg(S,E){}function Cp(S,E,B){if(S<=0||S>a().length||S&!0)return-28;if(v){if(Atomics.load(i(),S>>2)!=E)return-6;for(var pe=performance.now(),le=pe+B,de=Atomics.exchange(i(),Gi>>2,S);;){if(pe=performance.now(),pe>le)return de=Atomics.exchange(i(),Gi>>2,0),-73;if(de=Atomics.exchange(i(),Gi>>2,0),de==0)break;if(zp(),Atomics.load(i(),S>>2)!=E)return-6;de=Atomics.exchange(i(),Gi>>2,S)}return 0}else{var X=Atomics.wait(i(),S>>2,E,B);if(X==="timed-out")return-73;if(X==="not-equal")return-6;if(X==="ok")return 0;throw"Atomics.wait returned an unexpected value "+X}}function Bg(S,E,B){o().copyWithin(S,E,E+B)}function zg(){return w?zD().cpus().length:navigator.hardwareConcurrency}function Gs(S,E){for(var B=arguments.length-2,X=vl(),pe=B,le=Ui(pe*8),de=le>>3,we=0;we>=2;B=o()[S++];){var X=B<105;X&&E&1&&E++,hl.push(X?l()[E++>>1]:i()[E]),++E}return hl}function Vg(S,E,B){pl.length=E;for(var X=B>>3,pe=0;pe>>16),Fn(ne.buffer),1}catch(E){}}function Hg(S){var E=Ug();if(S<=E)return!1;var B=2147483648;if(S>B)return!1;for(var X=1;X<=4;X*=2){var pe=E*(1+.2/X);pe=Math.min(pe,S+100663296);var le=Math.min(B,Dn(Math.max(S,pe),65536)),de=Gg(le);if(de)return!0}return!1}var Be={inEventHandler:0,removeAllEventListeners:function(){for(var S=Be.eventHandlers.length-1;S>=0;--S)Be._removeHandler(S);Be.eventHandlers=[],Be.deferredCalls=[]},registerRemoveEventListeners:function(){Be.removeEventListenersRegistered||(ul.push(Be.removeAllEventListeners),Be.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(S,E,B){function X(de,we){if(de.length!=we.length)return!1;for(var at in de)if(de[at]!=we[at])return!1;return!0}for(var pe in Be.deferredCalls){var le=Be.deferredCalls[pe];if(le.targetFunction==S&&X(le.argsList,B))return}Be.deferredCalls.push({targetFunction:S,precedence:E,argsList:B}),Be.deferredCalls.sort(function(de,we){return de.precedence>2]=B,i()[de+4>>2]=X,i()[de+8>>2]=pe,Vb(0,S,637534208,E,X,de),Vi(le)},getTargetThreadForEventCallback:function(S){switch(S){case 1:return 0;case 2:return Te.currentProxiedOperationCallerThread;default:return S}},getNodeNameForTarget:function(S){return S?S==window?"#window":S==screen?"#screen":S&&S.nodeName?S.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function jg(S){var E=dt(S)+1,B=Pa(E);return Je(S,B,E),B}function qg(S,E,B,X){var pe=vl(),le=Ui(12),de=0;E&&(de=jg(E)),i()[le>>2]=de,i()[le+4>>2]=B,i()[le+8>>2]=X,Vb(0,S,657457152,0,de,le),Vi(pe)}function Kg(S,E,B,X){E=E?Ue(E):"",qg(S,E,B,X)}function Xg(S){return S>2?Ue(S):S}var Yg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Zg(S){S=Xg(S);var E=Yg[S]||(typeof document!="undefined"?document.querySelector(S):void 0);return E}function fl(S){return Zg(S)}function Np(S,E,B){var X=fl(S);if(!X)return-4;if(X.canvasSharedPtr&&(i()[X.canvasSharedPtr>>2]=E,i()[X.canvasSharedPtr+4>>2]=B),X.offscreenCanvas||!X.controlTransferredOffscreen){X.offscreenCanvas&&(X=X.offscreenCanvas);var pe=!1;if(X.GLctxObject&&X.GLctxObject.GLctx){var le=X.GLctxObject.GLctx.getParameter(2978);pe=le[0]===0&&le[1]===0&&le[2]===X.width&&le[3]===X.height}X.width=E,X.height=B,pe&&X.GLctxObject.GLctx.viewport(0,0,E,B)}else if(X.canvasSharedPtr){var de=i()[X.canvasSharedPtr+8>>2];return Kg(de,S,E,B),1}else return-4;return 0}function _p(S,E,B){return N?Gs(2,1,S,E,B):Np(S,E,B)}function Jg(S,E,B){var X=fl(S);return X?Np(S,E,B):_p(S,E,B)}function Qg(S){}function eb(S,E){}function tb(S){var E=S.getExtension("ANGLE_instanced_arrays");if(E)return S.vertexAttribDivisor=function(B,X){E.vertexAttribDivisorANGLE(B,X)},S.drawArraysInstanced=function(B,X,pe,le){E.drawArraysInstancedANGLE(B,X,pe,le)},S.drawElementsInstanced=function(B,X,pe,le,de){E.drawElementsInstancedANGLE(B,X,pe,le,de)},1}function nb(S){var E=S.getExtension("OES_vertex_array_object");if(E)return S.createVertexArray=function(){return E.createVertexArrayOES()},S.deleteVertexArray=function(B){E.deleteVertexArrayOES(B)},S.bindVertexArray=function(B){E.bindVertexArrayOES(B)},S.isVertexArray=function(B){return E.isVertexArrayOES(B)},1}function rb(S){var E=S.getExtension("WEBGL_draw_buffers");if(E)return S.drawBuffers=function(B,X){E.drawBuffersWEBGL(B,X)},1}function sb(S){return!!(S.multiDrawWebgl=S.getExtension("WEBGL_multi_draw"))}var st={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(E){st.lastError||(st.lastError=E)},getNewId:function(S){for(var E=st.counter++,B=S.length;B>2]:-1;pe+=Ue(i()[B+le*4>>2],de<0?void 0:de)}return pe},createContext:function(S,E){var B=S.getContext("webgl",E);if(!B)return 0;var X=st.registerContext(B,E);return X},registerContext:function(S,E){var B=Pa(8);i()[B+4>>2]=qs();var X={handle:B,attributes:E,version:E.majorVersion,GLctx:S};return S.canvas&&(S.canvas.GLctxObject=X),st.contexts[B]=X,(typeof E.enableExtensionsByDefault=="undefined"||E.enableExtensionsByDefault)&&st.initExtensions(X),B},makeContextCurrent:function(S){return st.currentContext=st.contexts[S],u.ctx=Hs=st.currentContext&&st.currentContext.GLctx,!(S&&!Hs)},getContext:function(S){return st.contexts[S]},deleteContext:function(S){st.currentContext===st.contexts[S]&&(st.currentContext=null),typeof Be=="object"&&Be.removeAllHandlersOnTarget(st.contexts[S].GLctx.canvas),st.contexts[S]&&st.contexts[S].GLctx.canvas&&(st.contexts[S].GLctx.canvas.GLctxObject=void 0),yl(st.contexts[S].handle),st.contexts[S]=null},initExtensions:function(S){if(S||(S=st.currentContext),!S.initExtensionsDone){S.initExtensionsDone=!0;var E=S.GLctx;tb(E),nb(E),rb(E),E.disjointTimerQueryExt=E.getExtension("EXT_disjoint_timer_query"),sb(E);var B=E.getSupportedExtensions()||[];B.forEach(function(X){X.indexOf("lose_context")<0&&X.indexOf("debug")<0&&E.getExtension(X)})}},populateUniformTable:function(S){for(var E=st.programs[S],B=st.programInfos[S]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},X=B.uniforms,pe=Hs.getProgramParameter(E,35718),le=0;le>2,X=i()[B+6],pe={alpha:!!i()[B+0],depth:!!i()[B+1],stencil:!!i()[B+2],antialias:!!i()[B+3],premultipliedAlpha:!!i()[B+4],preserveDrawingBuffer:!!i()[B+5],powerPreference:ab[X],failIfMajorPerformanceCaveat:!!i()[B+7],majorVersion:i()[B+8],minorVersion:i()[B+9],enableExtensionsByDefault:i()[B+10],explicitSwapControl:i()[B+11],proxyContextToMainThread:i()[B+12],renderViaOffscreenBackBuffer:i()[B+13]},le=fl(S);if(!le||pe.explicitSwapControl)return 0;var de=st.createContext(le,pe);return de}function ib(S,E){return ob(S,E)}var Li={mappings:{},buffers:[null,[],[]],printChar:function(S,E){var B=Li.buffers[S];E===0||E===10?((S===1?K:q)(Ve(B,0)),B.length=0):B.push(E)},varargs:void 0,get:function(){Li.varargs+=4;var S=i()[Li.varargs-4>>2];return S},getStr:function(S){var E=Ue(S);return E},get64:function(S,E){return S}};function Ep(S){return N?Gs(3,1,S):0}function Ap(S,E,B,X,pe){if(N)return Gs(4,1,S,E,B,X,pe)}function Dp(S,E,B,X){if(N)return Gs(5,1,S,E,B,X);for(var pe=0,le=0;le>2],we=i()[E+(le*8+4)>>2],at=0;at>2]=pe,0}function cb(S){var E=Te.threadExitHandlers.pop();S&&E()}function ub(S,E){Te.threadExitHandlers.push(function(){pn.get(S)(E)})}function $p(S){if(N)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var E=Te.getNewWorker();if(E.pthread!==void 0)throw"Internal error!";if(!S.pthread_ptr)throw"Internal error, no pthread ptr!";Te.runningWorkers.push(E);for(var B=Pa(128*4),X=0;X<128;++X)i()[B+X*4>>2]=0;var pe=S.stackBase+S.stackSize,le=Te.pthreads[S.pthread_ptr]={worker:E,stackBase:S.stackBase,stackSize:S.stackSize,allocatedOwnStack:S.allocatedOwnStack,threadInfoStruct:S.pthread_ptr},de=le.threadInfoStruct>>2;Atomics.store(c(),de+16,S.detached),Atomics.store(c(),de+25,B),Atomics.store(c(),de+10,le.threadInfoStruct),Atomics.store(c(),de+20,S.stackSize),Atomics.store(c(),de+19,pe),Atomics.store(c(),de+26,S.stackSize),Atomics.store(c(),de+28,pe),Atomics.store(c(),de+29,S.detached);var we=e1(),at=we+40;Atomics.store(c(),de+43,at),E.pthread=le;var Xt={cmd:"run",start_routine:S.startRoutine,arg:S.arg,threadInfoStruct:S.pthread_ptr,stackBase:S.stackBase,stackSize:S.stackSize};E.runPthread=function(){Xt.time=performance.now(),E.postMessage(Xt,S.transferList)},E.loaded&&(E.runPthread(),delete E.runPthread)}function lb(S,E,B,X){if(typeof SharedArrayBuffer=="undefined")return q("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!S)return q("pthread_create called with a null thread pointer!"),28;var pe=[],le=0;if(N&&(pe.length===0||le))return a1(687865856,S,E,B,X);if(le)return le;var de=0,we=0,at=0;E&&E!=-1?(de=i()[E>>2],de+=81920,we=i()[E+8>>2],at=i()[E+12>>2]!==0):de=2097152;var Xt=we==0;Xt?we=c1(16,de):(we-=de,Se(we>0));for(var Ut=Pa(228),Ks=0;Ks<57;++Ks)c()[(Ut>>2)+Ks]=0;i()[S>>2]=Ut,i()[Ut+12>>2]=Ut;var Hi=Ut+152;i()[Hi>>2]=Hi;var bn={stackBase:we,stackSize:de,allocatedOwnStack:Xt,detached:at,startRoutine:B,pthread_ptr:Ut,arg:X,transferList:pe};return N?(bn.cmd="spawnThread",postMessage(bn,pe)):$p(bn),0}function db(){if(!!N){var S=qs();if(!!S){var E=Atomics.load(c(),S+56>>2);if(!E){var B=Atomics.load(c(),S+0>>2);if(B==2)throw"Canceled!"}}}}function pb(){w||x||Z("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function hb(S,E,B){if(!S)return q("pthread_join attempted on a null thread pointer!"),Us.ESRCH;if(N&&qs()==S)return q("PThread "+S+" is attempting to join to itself!"),Us.EDEADLK;if(!N&&r1()==S)return q("Main thread "+S+" is attempting to join to itself!"),Us.EDEADLK;var X=i()[S+12>>2];if(X!==S)return q("pthread_join attempted on thread "+S+", which does not point to a valid thread, or does not exist anymore!"),Us.ESRCH;var pe=Atomics.load(c(),S+64>>2);if(pe)return q("Attempted to join thread "+S+", which was already detached!"),Us.EINVAL;for(B&&pb();;){var le=Atomics.load(c(),S+0>>2);if(le==1){var de=Atomics.load(c(),S+4>>2);return E&&(i()[E>>2]=de),Atomics.store(c(),S+64>>2,1),N?postMessage({cmd:"cleanupThread",thread:S}):Tp(S),0}if(!B)return Us.EBUSY;db(),N||zp(),Cp(S+0,le,N?100:1)}}function fb(S,E){return hb(S,E,!0)}function Fp(S){if(N)return Gs(6,1,S);switch(S){case 30:return 16384;case 85:var E=2147483648;return E/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 Fg(28),-1}N||Te.initMainThreadBlock();var Hs,mb=[null,Rg,_p,Ep,Ap,Dp,Fp],gb={e:Dg,r:$g,x:Pg,b:Og,y:Mg,j:Lg,d:Cp,c:dl,f:Ra,p:Bg,A:zg,u:Vg,q:Hg,v:Jg,i:Qg,s:eb,w:ib,l:Ep,n:Ap,g:Dp,o:Sp,a:ne||u.wasmMemory,z:cb,k:ub,h:lb,m:fb,t:Fp},J0=Sg(),Rp=u.___wasm_call_ctors=function(){return(Rp=u.___wasm_call_ctors=u.asm.B).apply(null,arguments)},bb=u._init=function(){return(bb=u._init=u.asm.C).apply(null,arguments)},yb=u._init_with_threads_count=function(){return(yb=u._init_with_threads_count=u.asm.D).apply(null,arguments)},vb=u._get_threads_count=function(){return(vb=u._get_threads_count=u.asm.E).apply(null,arguments)},xb=u._register_tensor=function(){return(xb=u._register_tensor=u.asm.F).apply(null,arguments)},wb=u._dispose_data=function(){return(wb=u._dispose_data=u.asm.G).apply(null,arguments)},kb=u._dispose=function(){return(kb=u._dispose=u.asm.H).apply(null,arguments)},Ib=u._Abs=function(){return(Ib=u._Abs=u.asm.J).apply(null,arguments)},Sb=u._Add=function(){return(Sb=u._Add=u.asm.K).apply(null,arguments)},Tb=u._AddN=function(){return(Tb=u._AddN=u.asm.L).apply(null,arguments)},Cb=u._All=function(){return(Cb=u._All=u.asm.M).apply(null,arguments)},Nb=u._Any=function(){return(Nb=u._Any=u.asm.N).apply(null,arguments)},_b=u._ArgMax=function(){return(_b=u._ArgMax=u.asm.O).apply(null,arguments)},Eb=u._AvgPool=function(){return(Eb=u._AvgPool=u.asm.P).apply(null,arguments)},Ab=u._BatchMatMul=function(){return(Ab=u._BatchMatMul=u.asm.Q).apply(null,arguments)},Db=u._Ceil=function(){return(Db=u._Ceil=u.asm.R).apply(null,arguments)},$b=u._ClipByValue=function(){return($b=u._ClipByValue=u.asm.S).apply(null,arguments)},Fb=u._Conv2D=function(){return(Fb=u._Conv2D=u.asm.T).apply(null,arguments)},Rb=u._Conv2DBackpropInput=function(){return(Rb=u._Conv2DBackpropInput=u.asm.U).apply(null,arguments)},Pb=u._Cos=function(){return(Pb=u._Cos=u.asm.V).apply(null,arguments)},Ob=u._Cosh=function(){return(Ob=u._Cosh=u.asm.W).apply(null,arguments)},Mb=u._CropAndResize=function(){return(Mb=u._CropAndResize=u.asm.X).apply(null,arguments)},Lb=u._Cumsum=function(){return(Lb=u._Cumsum=u.asm.Y).apply(null,arguments)},Bb=u._DepthToSpace=function(){return(Bb=u._DepthToSpace=u.asm.Z).apply(null,arguments)},Pp=u._DepthwiseConv2dNative=function(){return(Pp=u._DepthwiseConv2dNative=u.asm._).apply(null,arguments)},Op=u._Elu=function(){return(Op=u._Elu=u.asm.$).apply(null,arguments)},Mp=u._Equal=function(){return(Mp=u._Equal=u.asm.aa).apply(null,arguments)},ml=u._Exp=function(){return(ml=u._Exp=u.asm.ba).apply(null,arguments)},Bi=u._FlipLeftRight=function(){return(Bi=u._FlipLeftRight=u.asm.ca).apply(null,arguments)},zb=u._Floor=function(){return(zb=u._Floor=u.asm.da).apply(null,arguments)},gl=u._FloorDiv=function(){return(gl=u._FloorDiv=u.asm.ea).apply(null,arguments)},zi=u._FusedBatchNorm=function(){return(zi=u._FusedBatchNorm=u.asm.fa).apply(null,arguments)},Wi=u._FusedConv2D=function(){return(Wi=u._FusedConv2D=u.asm.ga).apply(null,arguments)},Wb=u._FusedDepthwiseConv2D=function(){return(Wb=u._FusedDepthwiseConv2D=u.asm.ha).apply(null,arguments)},Q=u._Gather=function(){return(Q=u._Gather=u.asm.ia).apply(null,arguments)},ae=u._GatherNd=function(){return(ae=u._GatherNd=u.asm.ja).apply(null,arguments)},ve=u._Greater=function(){return(ve=u._Greater=u.asm.ka).apply(null,arguments)},et=u._GreaterEqual=function(){return(et=u._GreaterEqual=u.asm.la).apply(null,arguments)},$t=u._LeakyRelu=function(){return($t=u._LeakyRelu=u.asm.ma).apply(null,arguments)},It=u._Less=function(){return(It=u._Less=u.asm.na).apply(null,arguments)},Ge=u._LessEqual=function(){return(Ge=u._LessEqual=u.asm.oa).apply(null,arguments)},qe=u._Log=function(){return(qe=u._Log=u.asm.pa).apply(null,arguments)},an=u._LogicalAnd=function(){return(an=u._LogicalAnd=u.asm.qa).apply(null,arguments)},xs=u._Max=function(){return(xs=u._Max=u.asm.ra).apply(null,arguments)},ws=u._MaxPool=function(){return(ws=u._MaxPool=u.asm.sa).apply(null,arguments)},Lp=u._Maximum=function(){return(Lp=u._Maximum=u.asm.ta).apply(null,arguments)},bl=u._Mean=function(){return(bl=u._Mean=u.asm.ua).apply(null,arguments)},Kn=u._Min=function(){return(Kn=u._Min=u.asm.va).apply(null,arguments)},js=u._Minimum=function(){return(js=u._Minimum=u.asm.wa).apply(null,arguments)},Bp=u._MirrorPad=function(){return(Bp=u._MirrorPad=u.asm.xa).apply(null,arguments)},bA=u._Multiply=function(){return(bA=u._Multiply=u.asm.ya).apply(null,arguments)},yA=u._Neg=function(){return(yA=u._Neg=u.asm.za).apply(null,arguments)},vA=u._NonMaxSuppressionV3=function(){return(vA=u._NonMaxSuppressionV3=u.asm.Aa).apply(null,arguments)},xA=u._NonMaxSuppressionV4=function(){return(xA=u._NonMaxSuppressionV4=u.asm.Ba).apply(null,arguments)},wA=u._NonMaxSuppressionV5=function(){return(wA=u._NonMaxSuppressionV5=u.asm.Ca).apply(null,arguments)},kA=u._NotEqual=function(){return(kA=u._NotEqual=u.asm.Da).apply(null,arguments)},IA=u._OneHot=function(){return(IA=u._OneHot=u.asm.Ea).apply(null,arguments)},SA=u._PadV2=function(){return(SA=u._PadV2=u.asm.Fa).apply(null,arguments)},TA=u._Pow=function(){return(TA=u._Pow=u.asm.Ga).apply(null,arguments)},CA=u._Prelu=function(){return(CA=u._Prelu=u.asm.Ha).apply(null,arguments)},NA=u._Prod=function(){return(NA=u._Prod=u.asm.Ia).apply(null,arguments)},_A=u._RealDiv=function(){return(_A=u._RealDiv=u.asm.Ja).apply(null,arguments)},EA=u._Relu=function(){return(EA=u._Relu=u.asm.Ka).apply(null,arguments)},AA=u._Relu6=function(){return(AA=u._Relu6=u.asm.La).apply(null,arguments)},DA=u._ResizeBilinear=function(){return(DA=u._ResizeBilinear=u.asm.Ma).apply(null,arguments)},$A=u._Reverse=function(){return($A=u._Reverse=u.asm.Na).apply(null,arguments)},FA=u._RotateWithOffset=function(){return(FA=u._RotateWithOffset=u.asm.Oa).apply(null,arguments)},RA=u._Round=function(){return(RA=u._Round=u.asm.Pa).apply(null,arguments)},PA=u._Rsqrt=function(){return(PA=u._Rsqrt=u.asm.Qa).apply(null,arguments)},OA=u._ScatterNd=function(){return(OA=u._ScatterNd=u.asm.Ra).apply(null,arguments)},MA=u._SelectV2=function(){return(MA=u._SelectV2=u.asm.Sa).apply(null,arguments)},LA=u._Sigmoid=function(){return(LA=u._Sigmoid=u.asm.Ta).apply(null,arguments)},BA=u._Sin=function(){return(BA=u._Sin=u.asm.Ua).apply(null,arguments)},zA=u._Softmax=function(){return(zA=u._Softmax=u.asm.Va).apply(null,arguments)},WA=u._SparseFillEmptyRows=function(){return(WA=u._SparseFillEmptyRows=u.asm.Wa).apply(null,arguments)},VA=u._SparseReshape=function(){return(VA=u._SparseReshape=u.asm.Xa).apply(null,arguments)},UA=u._SparseSegmentReduction=function(){return(UA=u._SparseSegmentReduction=u.asm.Ya).apply(null,arguments)},GA=u._Sqrt=function(){return(GA=u._Sqrt=u.asm.Za).apply(null,arguments)},HA=u._Square=function(){return(HA=u._Square=u.asm._a).apply(null,arguments)},jA=u._SquaredDifference=function(){return(jA=u._SquaredDifference=u.asm.$a).apply(null,arguments)},qA=u._Step=function(){return(qA=u._Step=u.asm.ab).apply(null,arguments)},KA=u._StridedSlice=function(){return(KA=u._StridedSlice=u.asm.bb).apply(null,arguments)},XA=u._Sub=function(){return(XA=u._Sub=u.asm.cb).apply(null,arguments)},YA=u._Sum=function(){return(YA=u._Sum=u.asm.db).apply(null,arguments)},ZA=u._Tan=function(){return(ZA=u._Tan=u.asm.eb).apply(null,arguments)},JA=u._Tanh=function(){return(JA=u._Tanh=u.asm.fb).apply(null,arguments)},QA=u._Tile=function(){return(QA=u._Tile=u.asm.gb).apply(null,arguments)},eD=u._TopK=function(){return(eD=u._TopK=u.asm.hb).apply(null,arguments)},tD=u._Transform=function(){return(tD=u._Transform=u.asm.ib).apply(null,arguments)},nD=u._Transpose=function(){return(nD=u._Transpose=u.asm.jb).apply(null,arguments)},rD=u.__FusedMatMul=function(){return(rD=u.__FusedMatMul=u.asm.kb).apply(null,arguments)},Pa=u._malloc=function(){return(Pa=u._malloc=u.asm.lb).apply(null,arguments)},yl=u._free=function(){return(yl=u._free=u.asm.mb).apply(null,arguments)},Q0=u.___errno_location=function(){return(Q0=u.___errno_location=u.asm.nb).apply(null,arguments)},e1=u._emscripten_get_global_libc=function(){return(e1=u._emscripten_get_global_libc=u.asm.ob).apply(null,arguments)},qs=u._pthread_self=function(){return(qs=u._pthread_self=u.asm.pb).apply(null,arguments)},t1=u.___pthread_tsd_run_dtors=function(){return(t1=u.___pthread_tsd_run_dtors=u.asm.qb).apply(null,arguments)},zp=u._emscripten_main_thread_process_queued_calls=function(){return(zp=u._emscripten_main_thread_process_queued_calls=u.asm.rb).apply(null,arguments)},sD=u._emscripten_current_thread_process_queued_calls=function(){return(sD=u._emscripten_current_thread_process_queued_calls=u.asm.sb).apply(null,arguments)},n1=u._emscripten_register_main_browser_thread_id=function(){return(n1=u._emscripten_register_main_browser_thread_id=u.asm.tb).apply(null,arguments)},r1=u._emscripten_main_browser_thread_id=function(){return(r1=u._emscripten_main_browser_thread_id=u.asm.ub).apply(null,arguments)},s1=u.__emscripten_do_dispatch_to_thread=function(){return(s1=u.__emscripten_do_dispatch_to_thread=u.asm.vb).apply(null,arguments)},a1=u._emscripten_sync_run_in_main_thread_4=function(){return(a1=u._emscripten_sync_run_in_main_thread_4=u.asm.wb).apply(null,arguments)},o1=u._emscripten_run_in_main_runtime_thread_js=function(){return(o1=u._emscripten_run_in_main_runtime_thread_js=u.asm.xb).apply(null,arguments)},Vb=u.__emscripten_call_on_thread=function(){return(Vb=u.__emscripten_call_on_thread=u.asm.yb).apply(null,arguments)},aD=u._emscripten_tls_init=function(){return(aD=u._emscripten_tls_init=u.asm.zb).apply(null,arguments)},Ub=u.__emscripten_thread_init=function(){return(Ub=u.__emscripten_thread_init=u.asm.Ab).apply(null,arguments)},vl=u.stackSave=function(){return(vl=u.stackSave=u.asm.Bb).apply(null,arguments)},Vi=u.stackRestore=function(){return(Vi=u.stackRestore=u.asm.Cb).apply(null,arguments)},Ui=u.stackAlloc=function(){return(Ui=u.stackAlloc=u.asm.Db).apply(null,arguments)},i1=u._emscripten_stack_set_limits=function(){return(i1=u._emscripten_stack_set_limits=u.asm.Eb).apply(null,arguments)},c1=u._memalign=function(){return(c1=u._memalign=u.asm.Fb).apply(null,arguments)},u1=u.__emscripten_allow_main_runtime_queued_calls=10656,Gi=u.__emscripten_main_thread_futex=12292;u.cwrap=Ze,u.PThread=Te,u.PThread=Te,u.wasmMemory=ne,u.ExitStatus=xl;var Wp;function xl(S){this.name="ExitStatus",this.message="Program terminated with exit("+S+")",this.status=S}$a=function S(){Wp||Gb(),Wp||($a=S)};function Gb(S){if(S=S||g,Ir>0)return;if(N){d(u),yp(),postMessage({cmd:"loaded"});return}if(bp(),Ir>0)return;function E(){Wp||(Wp=!0,u.calledRun=!0,!ye&&(yp(),vp(),d(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),xp()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),E()},1)):E()}u.run=Gb;function oD(S,E){if(!(E&&ue&&S===0)){if(!E&&N)throw postMessage({cmd:"exitProcess",returnCode:S}),new xl(S);ue||(Te.terminateAllThreads(),Ce=S,Rn(),u.onExit&&u.onExit(S),ye=!0),y(S,new xl(S))}}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();N&&(ue=!1,Te.initWorker()),Gb();var Vp;h&&(Vp={uncaughtException:process.listeners("uncaughtException").filter(function(S){return!h.uncaughtException.indexOf(S)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(S){return!h.unhandledRejection.indexOf(S)>-1})});var Up;if(typeof WasmBackendModule!="undefined")Up=WasmBackendModule;else if(typeof s!="undefined")Up=s;else throw new Error("Could not find wasm module in post.js");if(Vp){var iD=Up._dispose;Up._dispose=function(){iD(),Vp.uncaughtException.forEach(function(S){process.removeListener("uncaughtException",S)}),Vp.unhandledRejection.forEach(function(S){process.removeListener("unhandledRejection",S)})}}return s.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)}}),VD=gt({"node_modules/.pnpm/@tensorflow+tfjs-backend-wasm@3.13.0_@tensorflow+tfjs-core@3.13.0/node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(s){s=s||{};var a=typeof s!="undefined"?s:{},o,i;a.ready=new Promise(function(Q,ae){o=Q,i=ae});var c;typeof process!="undefined"&&process.listeners&&(c={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var l={},u;for(u in a)a.hasOwnProperty(u)&&(l[u]=a[u]);var d=[],p="./this.program",h=function(Q,ae){throw ae},f=!1,m=!1,g=!1,b=!1;f=typeof window=="object",m=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b=!f&&!g&&!m;var y="";function v(Q){return a.locateFile?a.locateFile(Q,y):y+Q}var x,w,T,N,$,D;g?(m?y=Pl().dirname(y)+"/":y=__dirname+"/",x=function(ae,ve){return $||($=fh()),D||(D=Pl()),ae=D.normalize(ae),$.readFileSync(ae,ve?null:"utf8")},T=function(ae){var ve=x(ae,!0);return ve.buffer||(ve=new Uint8Array(ve)),K(ve.buffer),ve},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),d=process.argv.slice(2),process.on("uncaughtException",function(Q){if(!(Q instanceof zb))throw Q}),process.on("unhandledRejection",ys),h=function(Q){process.exit(Q)},a.inspect=function(){return"[Emscripten Module object]"}):b?(typeof read!="undefined"&&(x=function(ae){return read(ae)}),T=function(ae){var ve;return typeof readbuffer=="function"?new Uint8Array(readbuffer(ae)):(ve=read(ae,"binary"),K(typeof ve=="object"),ve)},typeof scriptArgs!="undefined"?d=scriptArgs:typeof arguments!="undefined"&&(d=arguments),typeof quit=="function"&&(h=function(Q){quit(Q)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(f||m)&&(m?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",x=function(Q){var ae=new XMLHttpRequest;return ae.open("GET",Q,!1),ae.send(null),ae.responseText},m&&(T=function(Q){var ae=new XMLHttpRequest;return ae.open("GET",Q,!1),ae.responseType="arraybuffer",ae.send(null),new Uint8Array(ae.response)}),w=function(Q,ae,ve){var et=new XMLHttpRequest;et.open("GET",Q,!0),et.responseType="arraybuffer",et.onload=function(){if(et.status==200||et.status==0&&et.response){ae(et.response);return}ve()},et.onerror=ve,et.send(null)},N=function(Q){document.title=Q});var P=a.print||console.log.bind(console),F=a.printErr||console.warn.bind(console);for(u in l)l.hasOwnProperty(u)&&(a[u]=l[u]);l=null,a.arguments&&(d=a.arguments),a.thisProgram&&(p=a.thisProgram),a.quit&&(h=a.quit);var R;a.wasmBinary&&(R=a.wasmBinary);var C=a.noExitRuntime||!0;typeof WebAssembly!="object"&&ys("no native wasm support detected");var L,G=!1,j;function K(Q,ae){Q||ys("Assertion failed: "+ae)}function q(Q){var ae=a["_"+Q];return K(ae,"Cannot call unknown function "+Q+", make sure it is exported"),ae}function Z(Q,ae,ve,et,$t){var It={string:function(Kn){var js=0;if(Kn!=null&&Kn!==0){var Bp=(Kn.length<<2)+1;js=ml(Bp),ne(Kn,js,Bp)}return js},array:function(Kn){var js=ml(Kn.length);return he(Kn,js),js}};function Ge(Kn){return ae==="string"?re(Kn):ae==="boolean"?Boolean(Kn):Kn}var qe=q(Q),an=[],xs=0;if(et)for(var ws=0;ws=et);)++$t;if($t-ae>16&&Q.subarray&&se)return se.decode(Q.subarray(ae,$t));for(var It="";ae<$t;){var Ge=Q[ae++];if(!(Ge&128)){It+=String.fromCharCode(Ge);continue}var qe=Q[ae++]&63;if((Ge&224)==192){It+=String.fromCharCode((Ge&31)<<6|qe);continue}var an=Q[ae++]&63;if((Ge&240)==224?Ge=(Ge&15)<<12|qe<<6|an:Ge=(Ge&7)<<18|qe<<12|an<<6|Q[ae++]&63,Ge<65536)It+=String.fromCharCode(Ge);else{var xs=Ge-65536;It+=String.fromCharCode(55296|xs>>10,56320|xs&1023)}}return It}function re(Q,ae){return Q?oe(_e,Q,ae):""}function ue(Q,ae,ve,et){if(!(et>0))return 0;for(var $t=ve,It=ve+et-1,Ge=0;Ge=55296&&qe<=57343){var an=Q.charCodeAt(++Ge);qe=65536+((qe&1023)<<10)|an&1023}if(qe<=127){if(ve>=It)break;ae[ve++]=qe}else if(qe<=2047){if(ve+1>=It)break;ae[ve++]=192|qe>>6,ae[ve++]=128|qe&63}else if(qe<=65535){if(ve+2>=It)break;ae[ve++]=224|qe>>12,ae[ve++]=128|qe>>6&63,ae[ve++]=128|qe&63}else{if(ve+3>=It)break;ae[ve++]=240|qe>>18,ae[ve++]=128|qe>>12&63,ae[ve++]=128|qe>>6&63,ae[ve++]=128|qe&63}}return ae[ve]=0,ve-$t}function ne(Q,ae,ve){return ue(Q,_e,ae,ve)}function he(Q,ae){Se.set(Q,ae)}function ye(Q,ae){return Q%ae>0&&(Q+=ae-Q%ae),Q}var Ce,Se,_e,Le,Ze,Ve,Ue,ct,Je;function dt(Q){Ce=Q,a.HEAP8=Se=new Int8Array(Q),a.HEAP16=Le=new Int16Array(Q),a.HEAP32=Ve=new Int32Array(Q),a.HEAPU8=_e=new Uint8Array(Q),a.HEAPU16=Ze=new Uint16Array(Q),a.HEAPU32=Ue=new Uint32Array(Q),a.HEAPF32=ct=new Float32Array(Q),a.HEAPF64=Je=new Float64Array(Q)}var kt=a.INITIAL_MEMORY||16777216,Dn,Qe=[],jn=[],sn=[],wr=[],$n=!1;jn.push({func:function(){Sp()}});function qn(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)Fn(a.preRun.shift());Ir(Qe)}function ir(){$n=!0,Ir(jn)}function kr(){Ir(sn)}function cr(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)Ws(a.postRun.shift());Ir(wr)}function Fn(Q){Qe.unshift(Q)}function Ws(Q){wr.unshift(Q)}var pn=0,Vs=null,ur=null;function cl(Q){pn++,a.monitorRunDependencies&&a.monitorRunDependencies(pn)}function ul(Q){if(pn--,a.monitorRunDependencies&&a.monitorRunDependencies(pn),pn==0&&(Vs!==null&&(clearInterval(Vs),Vs=null),ur)){var ae=ur;ur=null,ae()}}a.preloadedImages={},a.preloadedAudios={};function ys(Q){a.onAbort&&a.onAbort(Q),Q+="",F(Q),G=!0,j=1,Q="abort("+Q+"). Build with -s ASSERTIONS=1 for more info.";var ae=new WebAssembly.RuntimeError(Q);throw i(ae),ae}function gp(Q,ae){return String.prototype.startsWith?Q.startsWith(ae):Q.indexOf(ae)===0}var gg="data:application/octet-stream;base64,";function bp(Q){return gp(Q,gg)}var yp="file://";function vp(Q){return gp(Q,yp)}var Rn="tfjs-backend-wasm.wasm";bp(Rn)||(Rn=v(Rn));function xp(Q){try{if(Q==Rn&&R)return new Uint8Array(R);if(T)return T(Q);throw"both async and sync fetching of the wasm failed"}catch(ae){ys(ae)}}function bg(){if(!R&&(f||m)){if(typeof fetch=="function"&&!vp(Rn))return fetch(Rn,{credentials:"same-origin"}).then(function(Q){if(!Q.ok)throw"failed to load wasm binary file at '"+Rn+"'";return Q.arrayBuffer()}).catch(function(){return xp(Rn)});if(w)return new Promise(function(Q,ae){w(Rn,function(ve){Q(new Uint8Array(ve))},ae)})}return Promise.resolve().then(function(){return xp(Rn)})}function yg(){var Q={a:Sg};function ae(Ge,qe){var an=Ge.exports;a.asm=an,L=a.asm.j,dt(L.buffer),Dn=a.asm.r,ul("wasm-instantiate")}cl("wasm-instantiate");function ve(Ge){ae(Ge.instance)}function et(Ge){return bg().then(function(qe){return WebAssembly.instantiate(qe,Q)}).then(Ge,function(qe){F("failed to asynchronously prepare wasm: "+qe),ys(qe)})}function $t(){return!R&&typeof WebAssembly.instantiateStreaming=="function"&&!bp(Rn)&&!vp(Rn)&&typeof fetch=="function"?fetch(Rn,{credentials:"same-origin"}).then(function(Ge){var qe=WebAssembly.instantiateStreaming(Ge,Q);return qe.then(ve,function(an){return F("wasm streaming compile failed: "+an),F("falling back to ArrayBuffer instantiation"),et(ve)})}):et(ve)}if(a.instantiateWasm)try{var It=a.instantiateWasm(Q,ae);return It}catch(Ge){return F("Module.instantiateWasm callback failed with error: "+Ge),!1}return $t().catch(i),{}}function Ir(Q){for(;Q.length>0;){var ae=Q.shift();if(typeof ae=="function"){ae(a);continue}var ve=ae.func;typeof ve=="number"?ae.arg===void 0?Dn.get(ve)():Dn.get(ve)(ae.arg):ve(ae.arg===void 0?null:ae.arg)}}function ll(){ys()}function $a(Q,ae,ve){_e.copyWithin(Q,ae,ae+ve)}function vg(){return _e.length}function xg(Q){try{return L.grow(Q-Ce.byteLength+65535>>>16),dt(L.buffer),1}catch(ae){}}function vs(Q){var ae=vg(),ve=2147483648;if(Q>ve)return!1;for(var et=1;et<=4;et*=2){var $t=ae*(1+.2/et);$t=Math.min($t,Q+100663296);var It=Math.min(ve,ye(Math.max(Q,$t),65536)),Ge=xg(It);if(Ge)return!0}return!1}var Fa={mappings:{},buffers:[null,[],[]],printChar:function(Q,ae){var ve=Fa.buffers[Q];ae===0||ae===10?((Q===1?P:F)(oe(ve,0)),ve.length=0):ve.push(ae)},varargs:void 0,get:function(){Fa.varargs+=4;var Q=Ve[Fa.varargs-4>>2];return Q},getStr:function(Q){var ae=re(Q);return ae},get64:function(Q,ae){return Q}};function wg(Q){return 0}function wp(Q,ae,ve,et,$t){}function kg(Q,ae,ve,et){for(var $t=0,It=0;It>2],qe=Ve[ae+(It*8+4)>>2],an=0;an>2]=$t,0}function kp(){return 6}function Pn(){return 28}function Ip(Q){return Ve[Pp()>>2]=Q,Q}function Ig(Q){switch(Q){case 30:return 16384;case 85:var ae=2147483648;return ae/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 Ip(28),-1}var Sg={a:ll,d:$a,e:vs,f:wg,c:wp,b:kg,h:kp,g:Pn,i:Ig},Tg=yg(),Sp=a.___wasm_call_ctors=function(){return(Sp=a.___wasm_call_ctors=a.asm.k).apply(null,arguments)},Mi=a._init=function(){return(Mi=a._init=a.asm.l).apply(null,arguments)},Us=a._init_with_threads_count=function(){return(Us=a._init_with_threads_count=a.asm.m).apply(null,arguments)},dl=a._get_threads_count=function(){return(dl=a._get_threads_count=a.asm.n).apply(null,arguments)},Cg=a._register_tensor=function(){return(Cg=a._register_tensor=a.asm.o).apply(null,arguments)},Ng=a._dispose_data=function(){return(Ng=a._dispose_data=a.asm.p).apply(null,arguments)},Tp=a._dispose=function(){return(Tp=a._dispose=a.asm.q).apply(null,arguments)},Te=a._Abs=function(){return(Te=a._Abs=a.asm.s).apply(null,arguments)},_g=a._Add=function(){return(_g=a._Add=a.asm.t).apply(null,arguments)},Eg=a._AddN=function(){return(Eg=a._AddN=a.asm.u).apply(null,arguments)},Ag=a._All=function(){return(Ag=a._All=a.asm.v).apply(null,arguments)},Dg=a._Any=function(){return(Dg=a._Any=a.asm.w).apply(null,arguments)},$g=a._ArgMax=function(){return($g=a._ArgMax=a.asm.x).apply(null,arguments)},Ra=a._AvgPool=function(){return(Ra=a._AvgPool=a.asm.y).apply(null,arguments)},Fg=a._BatchMatMul=function(){return(Fg=a._BatchMatMul=a.asm.z).apply(null,arguments)},Rg=a._Ceil=function(){return(Rg=a._Ceil=a.asm.A).apply(null,arguments)},Pg=a._ClipByValue=function(){return(Pg=a._ClipByValue=a.asm.B).apply(null,arguments)},Og=a._Conv2D=function(){return(Og=a._Conv2D=a.asm.C).apply(null,arguments)},Mg=a._Conv2DBackpropInput=function(){return(Mg=a._Conv2DBackpropInput=a.asm.D).apply(null,arguments)},Lg=a._Cos=function(){return(Lg=a._Cos=a.asm.E).apply(null,arguments)},Cp=a._Cosh=function(){return(Cp=a._Cosh=a.asm.F).apply(null,arguments)},Bg=a._CropAndResize=function(){return(Bg=a._CropAndResize=a.asm.G).apply(null,arguments)},zg=a._Cumsum=function(){return(zg=a._Cumsum=a.asm.H).apply(null,arguments)},Gs=a._DepthToSpace=function(){return(Gs=a._DepthToSpace=a.asm.I).apply(null,arguments)},pl=a._DepthwiseConv2dNative=function(){return(pl=a._DepthwiseConv2dNative=a.asm.J).apply(null,arguments)},hl=a._Elu=function(){return(hl=a._Elu=a.asm.K).apply(null,arguments)},Wg=a._Equal=function(){return(Wg=a._Equal=a.asm.L).apply(null,arguments)},Vg=a._Exp=function(){return(Vg=a._Exp=a.asm.M).apply(null,arguments)},Ug=a._FlipLeftRight=function(){return(Ug=a._FlipLeftRight=a.asm.N).apply(null,arguments)},Gg=a._Floor=function(){return(Gg=a._Floor=a.asm.O).apply(null,arguments)},Hg=a._FloorDiv=function(){return(Hg=a._FloorDiv=a.asm.P).apply(null,arguments)},Be=a._FusedBatchNorm=function(){return(Be=a._FusedBatchNorm=a.asm.Q).apply(null,arguments)},jg=a._FusedConv2D=function(){return(jg=a._FusedConv2D=a.asm.R).apply(null,arguments)},qg=a._FusedDepthwiseConv2D=function(){return(qg=a._FusedDepthwiseConv2D=a.asm.S).apply(null,arguments)},Kg=a._Gather=function(){return(Kg=a._Gather=a.asm.T).apply(null,arguments)},Xg=a._GatherNd=function(){return(Xg=a._GatherNd=a.asm.U).apply(null,arguments)},Yg=a._Greater=function(){return(Yg=a._Greater=a.asm.V).apply(null,arguments)},Zg=a._GreaterEqual=function(){return(Zg=a._GreaterEqual=a.asm.W).apply(null,arguments)},fl=a._LeakyRelu=function(){return(fl=a._LeakyRelu=a.asm.X).apply(null,arguments)},Np=a._Less=function(){return(Np=a._Less=a.asm.Y).apply(null,arguments)},_p=a._LessEqual=function(){return(_p=a._LessEqual=a.asm.Z).apply(null,arguments)},Jg=a._Log=function(){return(Jg=a._Log=a.asm._).apply(null,arguments)},Qg=a._LogicalAnd=function(){return(Qg=a._LogicalAnd=a.asm.$).apply(null,arguments)},eb=a._Max=function(){return(eb=a._Max=a.asm.aa).apply(null,arguments)},tb=a._MaxPool=function(){return(tb=a._MaxPool=a.asm.ba).apply(null,arguments)},nb=a._Maximum=function(){return(nb=a._Maximum=a.asm.ca).apply(null,arguments)},rb=a._Mean=function(){return(rb=a._Mean=a.asm.da).apply(null,arguments)},sb=a._Min=function(){return(sb=a._Min=a.asm.ea).apply(null,arguments)},st=a._Minimum=function(){return(st=a._Minimum=a.asm.fa).apply(null,arguments)},ab=a._MirrorPad=function(){return(ab=a._MirrorPad=a.asm.ga).apply(null,arguments)},ob=a._Multiply=function(){return(ob=a._Multiply=a.asm.ha).apply(null,arguments)},ib=a._Neg=function(){return(ib=a._Neg=a.asm.ia).apply(null,arguments)},Li=a._NonMaxSuppressionV3=function(){return(Li=a._NonMaxSuppressionV3=a.asm.ja).apply(null,arguments)},Ep=a._NonMaxSuppressionV4=function(){return(Ep=a._NonMaxSuppressionV4=a.asm.ka).apply(null,arguments)},Ap=a._NonMaxSuppressionV5=function(){return(Ap=a._NonMaxSuppressionV5=a.asm.la).apply(null,arguments)},Dp=a._NotEqual=function(){return(Dp=a._NotEqual=a.asm.ma).apply(null,arguments)},cb=a._OneHot=function(){return(cb=a._OneHot=a.asm.na).apply(null,arguments)},ub=a._PadV2=function(){return(ub=a._PadV2=a.asm.oa).apply(null,arguments)},$p=a._Pow=function(){return($p=a._Pow=a.asm.pa).apply(null,arguments)},lb=a._Prelu=function(){return(lb=a._Prelu=a.asm.qa).apply(null,arguments)},db=a._Prod=function(){return(db=a._Prod=a.asm.ra).apply(null,arguments)},pb=a._RealDiv=function(){return(pb=a._RealDiv=a.asm.sa).apply(null,arguments)},hb=a._Relu=function(){return(hb=a._Relu=a.asm.ta).apply(null,arguments)},fb=a._Relu6=function(){return(fb=a._Relu6=a.asm.ua).apply(null,arguments)},Fp=a._ResizeBilinear=function(){return(Fp=a._ResizeBilinear=a.asm.va).apply(null,arguments)},Hs=a._Reverse=function(){return(Hs=a._Reverse=a.asm.wa).apply(null,arguments)},mb=a._RotateWithOffset=function(){return(mb=a._RotateWithOffset=a.asm.xa).apply(null,arguments)},gb=a._Round=function(){return(gb=a._Round=a.asm.ya).apply(null,arguments)},J0=a._Rsqrt=function(){return(J0=a._Rsqrt=a.asm.za).apply(null,arguments)},Rp=a._ScatterNd=function(){return(Rp=a._ScatterNd=a.asm.Aa).apply(null,arguments)},bb=a._SelectV2=function(){return(bb=a._SelectV2=a.asm.Ba).apply(null,arguments)},yb=a._Sigmoid=function(){return(yb=a._Sigmoid=a.asm.Ca).apply(null,arguments)},vb=a._Sin=function(){return(vb=a._Sin=a.asm.Da).apply(null,arguments)},xb=a._Softmax=function(){return(xb=a._Softmax=a.asm.Ea).apply(null,arguments)},wb=a._SparseFillEmptyRows=function(){return(wb=a._SparseFillEmptyRows=a.asm.Fa).apply(null,arguments)},kb=a._SparseReshape=function(){return(kb=a._SparseReshape=a.asm.Ga).apply(null,arguments)},Ib=a._SparseSegmentReduction=function(){return(Ib=a._SparseSegmentReduction=a.asm.Ha).apply(null,arguments)},Sb=a._Sqrt=function(){return(Sb=a._Sqrt=a.asm.Ia).apply(null,arguments)},Tb=a._Square=function(){return(Tb=a._Square=a.asm.Ja).apply(null,arguments)},Cb=a._SquaredDifference=function(){return(Cb=a._SquaredDifference=a.asm.Ka).apply(null,arguments)},Nb=a._Step=function(){return(Nb=a._Step=a.asm.La).apply(null,arguments)},_b=a._StridedSlice=function(){return(_b=a._StridedSlice=a.asm.Ma).apply(null,arguments)},Eb=a._Sub=function(){return(Eb=a._Sub=a.asm.Na).apply(null,arguments)},Ab=a._Sum=function(){return(Ab=a._Sum=a.asm.Oa).apply(null,arguments)},Db=a._Tan=function(){return(Db=a._Tan=a.asm.Pa).apply(null,arguments)},$b=a._Tanh=function(){return($b=a._Tanh=a.asm.Qa).apply(null,arguments)},Fb=a._Tile=function(){return(Fb=a._Tile=a.asm.Ra).apply(null,arguments)},Rb=a._TopK=function(){return(Rb=a._TopK=a.asm.Sa).apply(null,arguments)},Pb=a._Transform=function(){return(Pb=a._Transform=a.asm.Ta).apply(null,arguments)},Ob=a._Transpose=function(){return(Ob=a._Transpose=a.asm.Ua).apply(null,arguments)},Mb=a.__FusedMatMul=function(){return(Mb=a.__FusedMatMul=a.asm.Va).apply(null,arguments)},Lb=a._malloc=function(){return(Lb=a._malloc=a.asm.Wa).apply(null,arguments)},Bb=a._free=function(){return(Bb=a._free=a.asm.Xa).apply(null,arguments)},Pp=a.___errno_location=function(){return(Pp=a.___errno_location=a.asm.Ya).apply(null,arguments)},Op=a.stackSave=function(){return(Op=a.stackSave=a.asm.Za).apply(null,arguments)},Mp=a.stackRestore=function(){return(Mp=a.stackRestore=a.asm._a).apply(null,arguments)},ml=a.stackAlloc=function(){return(ml=a.stackAlloc=a.asm.$a).apply(null,arguments)};a.cwrap=te;var Bi;function zb(Q){this.name="ExitStatus",this.message="Program terminated with exit("+Q+")",this.status=Q}ur=function Q(){Bi||gl(),Bi||(ur=Q)};function gl(Q){if(Q=Q||d,pn>0||(qn(),pn>0))return;function ae(){Bi||(Bi=!0,a.calledRun=!0,!G&&(ir(),kr(),o(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),cr()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),ae()},1)):ae()}if(a.run=gl,a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();gl();var zi;c&&(zi={uncaughtException:process.listeners("uncaughtException").filter(function(Q){return!c.uncaughtException.indexOf(Q)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(Q){return!c.unhandledRejection.indexOf(Q)>-1})});var Wi;if(typeof s!="undefined")Wi=s;else if(typeof WasmBackendModuleThreadedSimd!="undefined")Wi=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(zi){var Wb=Wi._dispose;Wi._dispose=function(){Wb(),zi.uncaughtException.forEach(function(Q){process.removeListener("uncaughtException",Q)}),zi.unhandledRejection.forEach(function(Q){process.removeListener("unhandledRejection",Q)})}}return s.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)}}),UD=1e-7,GD=1e-4,Gh=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}},nd=class{refCount(e){return lr("refCount")}incRef(e){return lr("incRef")}timerAvailable(){return!0}time(e){return lr("time")}read(e){return lr("read")}readSync(e){return lr("readSync")}readToGPU(e,t){return lr("readToGPU")}numDataIds(){return lr("numDataIds")}disposeData(e,t){return lr("disposeData")}write(e,t,n){return lr("write")}move(e,t,n,r,s){return lr("move")}memory(){return lr("memory")}floatPrecision(){return lr("floatPrecision")}epsilon(){return this.floatPrecision()===32?UD:GD}dispose(){return lr("dispose")}};function lr(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 Uk(e){let t=e.length,n=0;for(;t>0;)n=Math.random()*t|0,t--,mh(e,t,n)}function HD(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,r=0;for(;n>0;)r=Math.random()*n|0,n--,mh(e,n,r),mh(t,n,r)}function zl(e,t,n){return Math.max(e,Math.min(t,n))}function jD(e){return e%2===0?e:e+1}function mh(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function qD(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function mo(e){O(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function Ya(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||hn(e)&&!n)for(let r=0;r0,n){return new Promise((r,s)=>{let a=0,o=()=>{if(e()){r();return}a++;let i=t(a);if(n!=null&&a>=n){s();return}setTimeout(o,i)};o()})}function t$(e,t){let n=1,r=-1;for(let a=0;a=0)n*=e[a];else if(e[a]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${a}`);r=a}else if(e[a]<0)throw Error(`Shapes can not be < 0. Found ${e[a]} at dim ${a}`);if(r===-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 s=e.slice();return s[r]=t/n,s}function Dr(e,t){let n=t.length;return e=e==null?t.map((r,s)=>s):[].concat(e),O(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),O(e.every(r=>sc(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function Gk(e,t){let n=[],r=[],s=t!=null&&Array.isArray(t)&&t.length===0,a=t==null||s?null:Dr(t,e).sort(),o=0;for(let i=0;ii)&&e[i]===1&&(n.push(e[i]),r.push(i)),a[o]<=i&&o++}e[i]!==1&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function Hk(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 jk(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 qk(e,t){for(let n=0;nt+=n.length),t}function Js(e){return typeof e=="string"||e instanceof String}function Yk(e){return typeof e=="boolean"}function Zk(e){return typeof e=="number"}function Hh(e){return Array.isArray(e)?Hh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":Zk(e)?"float32":Js(e)?"string":Yk(e)?"bool":"float32"}function sa(e){return!!(e&&e.constructor&&e.call&&e.apply)}function gh(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function Jk(e,t,n,r=!1){let s=new Array;if(t.length===1){let a=t[0]*(r?2:1);for(let o=0;oc*l)*(r?2:1);for(let c=0;cs*a)*(n?2:1);if(r===0)return[];if(r!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${n?" for a complex tensor":""}.`);return Jk(0,e,t,n)}function av(e,t){let n=jh(e,t);for(let r=0;rr*s,1);if(t==null||t==="float32")return Qi(e,new Float32Array(n));if(t==="int32")return Qi(e,new Int32Array(n));if(t==="bool")return Qi(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function ov(e){e.forEach(t=>{O(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function s$(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let s=0;s{let[r,s]=n.split(":");this.urlFlags[r]=c$(r,s)})}};function o$(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(i$(t,r[0],r[1]),r.join("="))),t}function i$(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function c$(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 J(){return cv}var cv=null;function u$(e){cv=e}var jb;function eI(){if(jb==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");jb=e}return jb}function l$(){let e=eI();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function uv(e,t){let n=l$();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var vc="Abs",xc="Acos",wc="Acosh",ma="Add",go="AddN",kc="All",Ic="Any",bo="ArgMax",rd="ArgMin",Sc="Asin",Tc="Asinh",Cc="Atan",Nc="Atanh",_c="Atan2",yo="AvgPool",qh="AvgPoolGrad",sd="AvgPool3D",Kh="AvgPool3DGrad",vo="BatchMatMul",Ec="BatchToSpaceND",Xh="Bincount",tI="BroadcastTo",Yh="BroadcastArgs",xo="Cast",wo="Ceil",ga="ClipByValue",Zh="Complex",ad="ComplexAbs",Ac="Concat",ko="Conv2D",Jh="Conv2DBackpropFilter",Io="Conv2DBackpropInput",od="Conv3D",Qh="Conv3DBackpropFilterV2",ef="Conv3DBackpropInputV2",So="Cos",To="Cosh",Co="Cumsum",Dc="CropAndResize",tf="DenseBincount",$c="DepthToSpace",No="DepthwiseConv2dNative",nf="DepthwiseConv2dNativeBackpropFilter",rf="DepthwiseConv2dNativeBackpropInput",sf="Diag",id="Dilation2D",bh="Dilation2DBackpropInput",yh="Dilation2DBackpropFilter",_o="RealDiv",af="Einsum",Eo="Elu",of="EluGrad",Fc="Erf",Rc="Equal",Ao="Exp",Pc="ExpandDims",Oc="Expm1",cf="FFT",cd="Fill",Mc="FlipLeftRight",Do="Floor",$o="FloorDiv",Fo="FusedBatchNorm",Lc="GatherV2",Bc="GatherNd",zc="Greater",Ro="GreaterEqual",Po="Identity",uf="IFFT",lf="Imag",Wc="IsFinite",Vc="IsInf",Uc="IsNan",Oo="LeakyRelu",Gc="Less",Hc="LessEqual",df="LinSpace",Mo="Log",jc="Log1p",qc="LogicalAnd",ud="LogicalNot",ld="LogicalOr",nI="LogSoftmax",dd="LRN",pf="LRNGrad",Lo="Max",Bo="Maximum",zo="MaxPool",hf="MaxPoolGrad",pd="MaxPool3D",ff="MaxPool3DGrad",mf="MaxPoolWithArgmax",Wo="Mean",Vo="Min",Uo="Minimum",Go="MirrorPad",Kc="Mod",gf="Multinomial",Ho="Multiply",Xc="Neg",Yc="NotEqual",Zc="NonMaxSuppressionV3",Jc="NonMaxSuppressionV4",Qc="NonMaxSuppressionV5",eu="OnesLike",jo="OneHot",tu="Pack",qo="PadV2",d$="Pool",Ko="Pow",Xo="Prelu",nu="Prod",hd="Range",bf="Real",ru="Reciprocal",Yo="Relu",su="Reshape",fd="ResizeNearestNeighbor",yf="ResizeNearestNeighborGrad",Zo="ResizeBilinear",vf="ResizeBilinearGrad",Jo="Relu6",Qo="Reverse",ei="Round",ti="Rsqrt",au="ScatterNd",ou="Select",iu="Selu",cu="Slice",ni="Sin",uu="Sinh",lu="Sign",ri="Sigmoid",du="Softplus",si="Sqrt",ai="Sum",pu="SpaceToBatchND",hu="SplitV",oi="Softmax",md="SparseFillEmptyRows",fu="SparseReshape",gd="SparseSegmentMean",bd="SparseSegmentSum",xf="SparseToDense",ii="SquaredDifference",yd="Square",mu="StridedSlice",wf="StringNGrams",kf="StringSplit",If="StringToHashBucketFast",ci="Sub",ui="Tan",li="Tanh",ba="Tile",gu="TopK",bu="Transform",di="Transpose",Sf="Unique",yu="Unpack",vd="UnsortedSegmentSum",vu="ZerosLike",ya="Step",vh="FromPixels",xu="RotateWithOffset",Za="_FusedMatMul",Ja="FusedConv2D",Qa="FusedDepthwiseConv2D";function Zs(...e){J().getBool("IS_TEST")||J().getBool("PROD")||console.warn(...e)}function p$(...e){J().getBool("IS_TEST")||J().getBool("PROD")||console.log(...e)}var ac=uv("kernelRegistry",()=>new Map),Wl=uv("gradRegistry",()=>new Map);function xh(e,t){let n=lv(e,t);return ac.get(n)}function iy(e){return Wl.get(e)}function wh(e){let t=ac.entries(),n=[];for(;;){let{done:r,value:s}=t.next();if(r)break;let[a,o]=s,[i]=a.split("_");i===e&&n.push(o)}return n}function xd(e){let{kernelName:t,backendName:n}=e,r=lv(t,n);ac.has(r)&&Zs(`The kernel '${t}' for backend '${n}' is already registered`),ac.set(r,e)}function rI(e){let{kernelName:t}=e;Wl.has(t)&&J().getBool("DEBUG")&&Zs(`Overriding the gradient for '${t}'`),Wl.set(t,e)}function h$(e,t){let n=lv(e,t);if(!ac.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);ac.delete(n)}function f$(e){if(!Wl.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Wl.delete(e)}function m$(e,t){wh(e).forEach(r=>{let s=Object.assign({},r,{backendName:t});xd(s)})}function lv(e,t){return`${t}_${e}`}var k={};$e(k,{arraysEqual:()=>fa,assert:()=>O,assertNonNegativeIntegerDimensions:()=>ov,assertNonNull:()=>mo,assertShapesMatch:()=>In,bytesFromStringArray:()=>Xk,bytesPerElement:()=>oy,checkConversionForErrors:()=>qk,clamp:()=>zl,computeStrides:()=>yc,createScalarValue:()=>w$,createShuffledIndices:()=>QD,decodeString:()=>kh,distSquared:()=>XD,encodeString:()=>kd,fetch:()=>I$,fingerPrint64:()=>x$,flatten:()=>Ya,getArrayFromDType:()=>jk,getTypedArrayFromDType:()=>Hk,hasEncodingLoss:()=>n$,hexToLong:()=>wd,indexToLoc:()=>a$,inferDtype:()=>Hh,inferFromImplicitShape:()=>t$,isBoolean:()=>Yk,isFunction:()=>sa,isInt:()=>sc,isNumber:()=>Zk,isPromise:()=>iv,isScalarShape:()=>YD,isString:()=>Js,isTypedArray:()=>hn,isValidDtype:()=>Kk,locToIndex:()=>s$,makeOnesTypedArray:()=>av,makeZerosNestedTypedArray:()=>r$,makeZerosTypedArray:()=>jh,nearestDivisor:()=>gh,nearestLargerEven:()=>jD,now:()=>Vl,parseAxisParam:()=>Dr,randUniform:()=>KD,repeatedTry:()=>e$,rightPad:()=>Ol,shuffle:()=>Uk,shuffleCombo:()=>HD,sizeFromShape:()=>xt,sizeToSquarishShape:()=>JD,squeezeShape:()=>Gk,sum:()=>qD,swap:()=>mh,tanh:()=>ZD,toNestedArray:()=>Qi,toTypedArray:()=>Tf});var p1=fo(wD()),za=p1.default||p1;function wd(e){return za.fromString(e,!0,16)}var sI=wd("c3a5c85c97cb3127"),La=wd("b492b66fbe98f273"),yn=wd("9ae16a3b2f90404f");function cy(e){return e.xor(e.shru(47))}function aI(e,t,n){let r=e.slice(t,t+n);return za.fromBytes(Array.from(r),!0,!0)}function bt(e,t){return aI(e,t,8)}function h1(e,t){return aI(e,t,4)}function Yt(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function ta(e,t,n=wd("9ddfea08eb382d69")){let r=e.xor(t).mul(n);r=r.xor(r.shru(47));let s=t.xor(r).mul(n);return s=s.xor(s.shru(47)),s=s.mul(n),s}function g$(e,t,n,r,s,a){s=s.add(e),a=Yt(a.add(s).add(r),21);let o=s;return s=s.add(t),s=s.add(n),a=a.add(Yt(s,44)),[s.add(r),a.add(o)]}function Hp(e,t,n,r){return g$(bt(e,t),bt(e,t+8),bt(e,t+16),bt(e,t+24),n,r)}function b$(e,t=e.length){if(t>=8){let n=yn.add(t*2),r=bt(e,0).add(yn),s=bt(e,t-8),a=Yt(s,37).mul(n).add(r),o=Yt(r,25).add(s).mul(n);return ta(a,o,n)}if(t>=4){let n=yn.add(t*2),r=h1(e,0);return ta(r.shl(3).add(t),h1(e,t-4),n)}if(t>0){let n=e[0],r=e[t>>1],s=e[t-1],a=n+(r<<8),o=t+(s<<2);return cy(yn.mul(a).xor(sI.mul(o))).mul(yn)}return yn}function y$(e,t=e.length){let n=yn.add(t*2),r=bt(e,0).mul(La),s=bt(e,8),a=bt(e,t-8).mul(n),o=bt(e,t-16).mul(yn);return ta(Yt(r.add(s),43).add(Yt(a,30)).add(o),r.add(Yt(s.add(yn),18)).add(a),n)}function v$(e,t=e.length){let n=yn.add(t*2),r=bt(e,0).mul(yn),s=bt(e,8),a=bt(e,t-8).mul(n),o=bt(e,t-16).mul(yn),i=Yt(r.add(s),43).add(Yt(a,30)).add(o),c=ta(i,r.add(Yt(s.add(yn),18)).add(a),n),l=bt(e,16).mul(n),u=bt(e,24),d=i.add(bt(e,t-32)).mul(n),p=c.add(bt(e,t-24)).mul(n);return ta(Yt(l.add(u),43).add(Yt(d,30)).add(p),l.add(Yt(u.add(r),18)).add(d),n)}function x$(e,t=e.length){let n=za.fromNumber(81,!0);if(t<=32)return t<=16?b$(e,t):y$(e,t);if(t<=64)return v$(e,t);let r=n,s=n.mul(La).add(113),a=cy(s.mul(yn).add(113)).mul(yn),o=[za.UZERO,za.UZERO],i=[za.UZERO,za.UZERO];r=r.mul(yn).add(bt(e,0));let c=0,l=(t-1>>6)*64,u=l+(t-1&63)-63;do r=Yt(r.add(s).add(o[0]).add(bt(e,c+8)),37).mul(La),s=Yt(s.add(o[1]).add(bt(e,c+48)),42).mul(La),r=r.xor(i[1]),s=s.add(o[0]).add(bt(e,c+40)),a=Yt(a.add(i[0]),33).mul(La),o=Hp(e,c,o[1].mul(La),r.add(i[0])),i=Hp(e,c+32,a.add(i[1]),s.add(bt(e,c+16))),[a,r]=[r,a],c+=64;while(c!==l);let d=La.add(a.and(255).shl(1));return c=u,i[0]=i[0].add(t-1&63),o[0]=o[0].add(i[0]),i[0]=i[0].add(o[0]),r=Yt(r.add(s).add(o[0]).add(bt(e,c+8)),37).mul(d),s=Yt(s.add(o[1]).add(bt(e,c+48)),42).mul(d),r=r.xor(i[1].mul(9)),s=s.add(o[0].mul(9).add(bt(e,c+40))),a=Yt(a.add(i[0]),33).mul(d),o=Hp(e,c,o[1].mul(d),r.add(i[0])),i=Hp(e,c+32,a.add(i[1]),s.add(bt(e,c+16))),[a,r]=[r,a],ta(ta(o[0],i[0],d).add(cy(s).mul(sI)).add(a),ta(o[1],i[1],d).add(r),d)}function w$(e,t){return t==="string"?kd(e):Tf([e],t)}function k$(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function Tf(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Ya(e)),J().getBool("DEBUG")&&qk(e,t),k$(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 r=0;r{r=n()},a,o=Vl();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(s);else{s();for(let c of r)c.dataSync();a=Promise.resolve({kernelMs:Vl()-o})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let c=0;c{T$(u,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:a.then(c=>c.kernelMs),extraInfo:a.then(c=>c.getExtraProfileInfo!=null?c.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:s,extraInfo:a}=e;n.forEach(o=>{Promise.all([o.data(),r,a]).then(i=>{this.logger.logKernelProfile(t,o,i[0],i[1],s,i[2])})})}};function T$(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${i} %c${o} %c${c}D ${u} %c${l} %c${d} %c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function N$(e,t,n){let r={},s={};for(let c=0;cr[m.id]=!0),h=!0,s[l.id]=!0;break}if(h)break}}let a={};a[n.id]=!0;let o={};for(let c=e.length-1;c>=0;c--){let l=e[c],u=l.inputs;for(let d=0;d=0;s--){let a=t[s],o=[];if(a.outputs.forEach(c=>{let l=e[c.id];l!=null?o.push(l):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 c in a.inputs){if(!(c in i))throw new Error(`Cannot backprop through input ${c}. Available gradients found: ${Object.keys(i)}.`);let l=n(()=>i[c]());if(l.dtype!=="float32")throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input ${c} must have 'float32' dtype, but has '${l.dtype}'`);let u=a.inputs[c];if(!fa(l.shape,u.shape))throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input '${c}' has shape '${l.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=l;else{let d=e[u.id];e[u.id]=r(d,l),d.dispose()}}}}var f1=20,wl=3,qb=7;function E$(e,t,n,r){let s=yc(t),a=A$(e,t,n,s),o=t.length,i=rh(e,t,n,s,a),c=["Tensor"];return r&&(c.push(` dtype: ${n}`),c.push(` rank: ${o}`),c.push(` shape: [${t}]`),c.push(" values:")),c.push(i.map(l=>" "+l).join(` `)),c.join(` `)}function A$(e,t,n,r){let s=xt(t),a=r[r.length-1],o=new Array(a).fill(0),i=t.length,c=n==="complex64"?Cl(e):e;if(i>1)for(let l=0;lf1){let g=wl*o,b=Array.from(e.slice(0,g)),y=Array.from(e.slice((i-wl)*o,i*o));return n==="complex64"&&(b=Cl(b),y=Cl(y)),["["+b.map((v,x)=>Tl(v,s[x],n)).join(", ")+", ..., "+y.map((v,x)=>Tl(v,s[i-wl+x],n)).join(", ")+"]"]}let m=n==="complex64"?Cl(e):Array.from(e);return["["+m.map((g,b)=>Tl(g,s[b],n)).join(", ")+"]"]}let l=t.slice(1),u=r.slice(1),d=r[0]*o,p=[];if(i>f1){for(let m=0;m`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||jk(t,this.size),this.strides=yc(e)}set(e,...t){t.length===0&&(t=[0]),O(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let s=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(s)}t++}let n=e[e.length-1];for(let r=0;rkh(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataToGPU(e){return this.throwIfDisposed(),Mr().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();let e=Mr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>kh(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Mr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Mr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Yi.print(this,e)}clone(){return this.throwIfDisposed(),Yi.clone(this)}toString(e=!1){let t=this.dataSync();return E$(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Yi.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Mr().makeVariable(this,e,t,n)}};Object.defineProperty(Ee,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function ee(){return uv("Tensor",()=>Ee)}ee();var aa=class extends Ee{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!fa(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Mr().disposeTensor(this),this.dataId=e.dataId,Mr().incRef(this,null)}dispose(){Mr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(aa,Symbol.hasInstance,{value:e=>e instanceof Ee&&e.assign!=null&&e.assign instanceof Function});var Wr={};$e(Wr,{assertTypesMatch:()=>iI,getTensorsInContainer:()=>dv,isTensorInList:()=>O$,makeTypesMatch:()=>Dt});var uy;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(uy||(uy={}));var ly;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(ly||(ly={}));var dy;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(dy||(dy={}));var py;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(py||(py={}));var hy;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(hy||(hy={}));var P$={float32:py,int32:ly,bool:dy,complex64:hy};function Er(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return P$[e][t]}function Cf(e){return Er(e,"int32")}function Dt(e,t){if(e.dtype===t.dtype)return[e,t];let n=Er(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function iI(e,t){O(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function O$(e,t){return t.some(n=>n.id===e.id)}function dv(e){let t=[];return cI(e,t,new Set),t}function cI(e,t,n){if(e==null)return;if(e instanceof Ee){t.push(e);return}if(!M$(e))return;let r=e;for(let s in r){let a=r[s];n.has(a)||(n.add(a),cI(a,t,n))}}function M$(e){return Array.isArray(e)||typeof e=="object"}function Kb(e){return e.kernelName!=null}var m1=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Ul=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new m1}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{t.setupFunc!=null&&t.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){wh(e).forEach(n=>{n.disposeFunc!=null&&n.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof nd)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,s=n.then(a=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Ul.nextTensorId++}nextVariableId(){return Ul.nextVariableId++}clone(e){let t=z.runKernel(Po,{x:e}),n={x:e},r=a=>({x:()=>{let o="float32",i={x:a},c={dtype:o};return z.runKernel(xo,i,c)}}),s=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,s,{}),t}runKernel(e,t,n){if(this.backendName==null&&this.backend,!(xh(e,this.backendName)!=null))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),s=0;n.forEach(i=>{s+=i.dtype==="complex64"?3:1});let a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],o=r-t-s-a;if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),s=this.state.numBytes,a=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let o;this.backendName==null&&this.backend;let i,c=Kb(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(Kb(e)){let{kernelName:h,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let g=xh(h,this.backendName);O(g!=null,()=>`Cannot find registered kernel '${h}' for backend '${this.backendName}'`),o=()=>{let b=this.backend.numDataIds();i=g.kernelFunc({inputs:f,attrs:m,backend:this.backend});let y=Array.isArray(i)?i:[i];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(h,b,y);let v=y.map(x=>{if(x.rank!=null)return x;let{dataId:w,shape:T,dtype:N}=x;return this.makeTensorFromDataId(w,T,N)});if(r){let x=this.getTensorsForGradient(h,f,v);n=this.saveTensorsForBackwardMode(x)}return v}}else{let{forwardFunc:h}=e,f=m=>{!r||(n=m.map(g=>this.keep(this.clone(g))))};o=()=>{let m=this.backend.numDataIds();i=this.tidy(()=>h(this.backend,f));let g=Array.isArray(i)?i:[i];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(c,m,g),g}}let{inputs:l,attrs:u}=e,d=Kb(e)?null:e.backwardsFunc,p;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=o():(p=this.profiler.profileKernel(c,l,()=>o()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(p),t=p.outputs)}),r&&this.addTapeNode(c,l,t,d,n,u),this.state.profiling&&this.state.activeProfile.kernels.push({name:c,bytesAdded:this.state.numBytes-s,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-a,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(l).map(h=>l[h]!=null?l[h].shape:null),outputShapes:t.map(h=>h.shape),kernelTimeMs:p.timeMs,extraInfo:p.extraInfo}),Array.isArray(i)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(n=>this.keep(this.clone(n)))}getTensorsForGradient(e,t,n){let r=iy(e);if(r!=null){let s=r.inputsToSave||[],a=r.outputsToSave||[],o;r.saveAllInputs?(O(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),o=Object.keys(t).map(c=>t[c])):o=s.map(c=>t[c]);let i=n.filter((c,l)=>a[l]);return o.concat(i)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let s=e;n==="string"&&Js(e[0])&&(s=e.map(i=>kd(i)));let a=r.write(s,t,n),o=new Ee(t,n,a,this.nextTensorId());if(this.trackTensor(o,r),n==="string"){let i=this.state.tensorInfo.get(a),c=Xk(s);this.state.numBytes+=c-i.bytes,i.bytes=c}return o}makeTensorFromDataId(e,t,n,r){n=n||"float32";let s=new Ee(t,n,e,this.nextTensorId());return this.trackTensor(s,r),s}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let s=new aa(e,t,n,this.nextTensorId());if(this.state.registeredVariables[s.name]!=null)throw new Error(`Variable with name ${s.name} was already registered`);return this.state.registeredVariables[s.name]=s,this.incRef(s,this.backend),s}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*oy(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof aa||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*oy(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,s,a){let o={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:s},i=iy(e);i!=null&&(r=i.gradFunc),r!=null&&(o.gradient=c=>(c=c.map((l,u)=>{if(l==null){let d=n[u],p=jh(d.size,d.dtype);return this.makeTensor(p,d.shape,d.dtype)}return l}),r(c.length>1?c:c[0],s,a))),this.state.activeTape.push(o)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=dv(e),n=new Set(t.map(s=>s.id));for(let s=0;s{!s.kept&&s.scopeId===r.id&&this.track(s)})}gradients(e,t,n,r=!1){if(O(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let s=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));O(s instanceof Ee,()=>"The result y returned by f() must be a tensor.");let a=N$(this.state.activeTape,t,s);if(!r&&a.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let o={};o[s.id]=n==null?L$(s.shape):n,_$(o,a,c=>this.tidy(c),B$);let i=t.map(c=>o[c.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(c=>{for(let l of c.saved)l.dispose()}),this.state.activeTape=null),{value:s,grads:i}})}customGrad(e){return O(sa(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{O(t.every(o=>o instanceof Ee),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((o,i)=>{r[i]=o});let s=(o,i)=>(n=e(...t,i),O(n.value instanceof Ee,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),O(sa(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),a=(o,i)=>{let c=n.gradFunc(o,i),l=Array.isArray(c)?c:[c];O(l.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),O(l.every(d=>d instanceof Ee),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let u={};return l.forEach((d,p)=>{u[p]=()=>d}),u};return this.runKernelFunc({forwardFunc:s,backwardsFunc:a,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){let t=Vl(),n=await this.backend.time(e);return n.wallMs=Vl()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new m1;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Ul.nextTensorId=0;Ul.nextVariableId=0;function L$(e){let t=av(xt(e),"float32");return z.makeTensor(t,e,"float32")}function uI(){let e=eI();if(e._tfengine==null){let t=new Qk(e);e._tfengine=new Ul(t)}return u$(e._tfengine.ENV),$$(()=>e._tfengine),e._tfengine}var z=uI();function B$(e,t){let n={a:e,b:t};return z.runKernel(ma,n)}var Id={};$e(Id,{isBrowser:()=>lI,isMobile:()=>V$,mockIsMobile:()=>W$});function z$(){return typeof navigator!="undefined"&&navigator!=null}var fy;function W$(e){fy=e}function V$(e){if(fy!==void 0)return fy;if(e||z$()){if(e||(e=navigator),e.product==="ReactNative")return!0;let t=e.userAgent||e.vendor||(typeof window!="undefined"?window.opera:"");if(!t){let n=e;return n.userAgentData&&n.userAgentData.mobile}return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))}return!1}function lI(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Hr=J();Hr.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Hr.registerFlag("IS_BROWSER",()=>lI());Hr.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Hr.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Hr.registerFlag("PROD",()=>!1);Hr.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Hr.getBool("DEBUG"));Hr.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Hr.registerFlag("IS_TEST",()=>!1);Hr.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);Hr.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function is(e,t){let n=e;if(hn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||hn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&dI(e,r,[]),r}function dI(e,t,n){if(n=n||[],!Array.isArray(e)&&!hn(e)){O(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}O(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),O(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let s=0;s=0&&(s=r),g1(r,s,t,n),e==null||!hn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let c=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${c}'`)}let a=is(e,s);!hn(e)&&!Array.isArray(e)&&(e=[e]);let i=s!=="string"?Tf(e,s):Ya(e,[],!0);return z.makeTensor(i,a,s)}function Gl(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,o)=>A(a,`${t}[${o}]`,n,r))}var pI="__op";function W(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+pI;let s=(...a)=>{z.startScope(n);try{let o=r(...a);return iv(o)&&console.error("Cannot return a Promise inside of tidy."),z.endScope(o),o}catch(o){throw z.endScope(null),o}};return Object.defineProperty(s,"name",{value:n,configurable:!0}),s}function U$(e,t){let n=A(e,"real","complex"),r=A(t,"imag","complex");In(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let s={real:n,imag:r};return z.runKernel(Zh,s)}var oa=W({complex_:U$});function va(e,t,n,r){if(r==null&&(r=Hh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!hn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){ov(t);let s=xt(t),a=xt(n);O(s===a,()=>`Based on the provided shape, [${t}], the tensor should have ${s} values but has ${a}`);for(let o=0;o`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!hn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?Tf(e,r):Ya(e,[],!0),z.makeTensor(e,t,r)}function er(e,t,n){let r=is(e,n);return va(e,t,r,n)}var my={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},Ih=4;async function G$(e,t){let n=[],r=[],s=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);for(let o=0;o{let p=await c.bytes(),h=p.reduce((g,b)=>g+b.length,0)+Ih*p.length,f=new Uint8Array(h),m=0;for(let g=0;g{if(t+=a.byteLength,n.push(a.byteLength===a.buffer.byteLength?a:new a.constructor(a)),!(a instanceof Float32Array||a instanceof Int32Array||a instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${a.constructor.name}`)});let r=new Uint8Array(t),s=0;return n.forEach(a=>{r.set(new Uint8Array(a.buffer),s),s+=a.byteLength}),r.buffer}var pv=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function b1(e){return pv?Buffer.byteLength(e):new Blob([e]).size}function j$(e){if(pv)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,s=t.length;r{t+=s.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(s=>{n.set(new Uint8Array(s),r),r+=s.byteLength}),n.buffer}function y1(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function fI(e,t){let n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:t};return e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer),e.trainingConfig!=null&&(n.trainingConfig=e.trainingConfig),n}async function fv(e,t){let n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};if(e.trainingConfig!=null&&(n.trainingConfig=e.trainingConfig),e.weightsManifest!=null){let[r,s]=await t(e.weightsManifest);n.weightSpecs=r,n.weightData=s}return e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer),n}function Sd(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:b1(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:b1(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function K$(){let e=n=>{let r=n<<13,s=0;for(;(r&8388608)===0;)s-=8388608,r<<=1;return r&=-8388609,s+=947912704,r|s},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function X$(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function Y$(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function Z$(){let e=K$(),t=X$(),n=Y$();return r=>{let s=new ArrayBuffer(4*r.length),a=new Uint32Array(s);for(let o=0;o>10]+(i&1023)]+t[i>>10];a[o]=c}return new Float32Array(s)}}var Ft=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Ft.instance==null&&(Ft.instance=new Ft),Ft.instance}static registerSaveRouter(e){Ft.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Ft.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Ft.getHandlers(e,"save")}static getLoadHandlers(e,t){return Ft.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?Ft.getInstance().loadRouters:Ft.getInstance().saveRouters).forEach(a=>{let o=a(e,n);o!==null&&r.push(o)}),r}},J$=e=>Ft.registerSaveRouter(e),Q$=e=>Ft.registerLoadRouter(e),eF=e=>Ft.getSaveHandlers(e),tF=(e,t)=>Ft.getLoadHandlers(e,t),gy="tensorflowjs",by=1,Ga="models_store",Qs="model_info_store";function mI(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function yy(e){let t=e.result;t.createObjectStore(Ga,{keyPath:"modelPath"}),t.createObjectStore(Qs,{keyPath:"modelPath"})}var eo=class{constructor(e){if(this.indexedDB=mI(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let s=this.indexedDB.open(gy,by);s.onupgradeneeded=()=>yy(s),s.onsuccess=()=>{let a=s.result;if(t==null){let o=a.transaction(Ga,"readonly"),c=o.objectStore(Ga).get(this.modelPath);c.onsuccess=()=>{if(c.result==null)return a.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(c.result.modelArtifacts)},c.onerror=l=>(a.close(),r(c.error)),o.oncomplete=()=>a.close()}else{let o=Sd(t),i=a.transaction(Qs,"readwrite"),c=i.objectStore(Qs),l=c.put({modelPath:this.modelPath,modelArtifactsInfo:o}),u;l.onsuccess=()=>{u=a.transaction(Ga,"readwrite");let p=u.objectStore(Ga).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:o});p.onsuccess=()=>n({modelArtifactsInfo:o}),p.onerror=h=>{c=i.objectStore(Qs);let f=c.delete(this.modelPath);f.onsuccess=()=>(a.close(),r(p.error)),f.onerror=m=>(a.close(),r(p.error))}},l.onerror=d=>(a.close(),r(l.error)),i.oncomplete=()=>{u==null?a.close():u.oncomplete=()=>a.close()}}},s.onerror=a=>r(s.error)})}};eo.URL_SCHEME="indexeddb://";var gI=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(eo.URL_SCHEME)?nF(e.slice(eo.URL_SCHEME.length)):null;Ft.registerSaveRouter(gI);Ft.registerLoadRouter(gI);function nF(e){return new eo(e)}function rF(e){return e.startsWith(eo.URL_SCHEME)?e.slice(eo.URL_SCHEME.length):e}var sF=class{constructor(){this.indexedDB=mI()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(gy,by);n.onupgradeneeded=()=>yy(n),n.onsuccess=()=>{let r=n.result,s=r.transaction(Qs,"readonly"),o=s.objectStore(Qs).getAll();o.onsuccess=()=>{let i={};for(let c of o.result)i[c.modelPath]=c.modelArtifactsInfo;e(i)},o.onerror=i=>(r.close(),t(o.error)),s.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=rF(e),new Promise((t,n)=>{let r=this.indexedDB.open(gy,by);r.onupgradeneeded=()=>yy(r),r.onsuccess=()=>{let s=r.result,a=s.transaction(Qs,"readwrite"),o=a.objectStore(Qs),i=o.get(e),c;i.onsuccess=()=>{if(i.result==null)return s.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let l=o.delete(e),u=()=>{c=s.transaction(Ga,"readwrite");let p=c.objectStore(Ga).delete(e);p.onsuccess=()=>t(i.result.modelArtifactsInfo),p.onerror=h=>n(i.error)};l.onsuccess=u,l.onerror=d=>(u(),s.close(),n(i.error))}},i.onerror=l=>(s.close(),n(i.error)),a.oncomplete=()=>{c==null?s.close():c.oncomplete=()=>s.close()}},r.onerror=s=>n(r.error)})}},Ts="/",Zi="tensorflowjs_models",bI="info",aF="model_topology",oF="weight_specs",iF="weight_data",cF="model_metadata";function yI(e){return{info:[Zi,e,bI].join(Ts),topology:[Zi,e,aF].join(Ts),weightSpecs:[Zi,e,oF].join(Ts),weightData:[Zi,e,iF].join(Ts),modelMetadata:[Zi,e,cF].join(Ts)}}function vI(e){for(let t of Object.values(e))window.localStorage.removeItem(t)}function uF(e){let t=e.split(Ts);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(Ts)}function lF(e){return e.startsWith(to.URL_SCHEME)?e.slice(to.URL_SCHEME.length):e}var to=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=yI(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Sd(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,j$(e.weightData));let s={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:e.signature!=null?e.signature:void 0,userDefinedMetadata:e.userDefinedMetadata!=null?e.userDefinedMetadata:void 0,modelInitializer:e.modelInitializer!=null?e.modelInitializer:void 0,trainingConfig:e.trainingConfig!=null?e.trainingConfig:void 0};return this.LS.setItem(this.keys.modelMetadata,JSON.stringify(s)),{modelArtifactsInfo:r}}catch(s){throw vI(this.keys),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let s=this.LS.getItem(this.keys.modelMetadata);if(s!=null){let o=JSON.parse(s);t.format=o.format,t.generatedBy=o.generatedBy,t.convertedBy=o.convertedBy,o.signature!=null&&(t.signature=o.signature),o.userDefinedMetadata!=null&&(t.userDefinedMetadata=o.userDefinedMetadata),o.modelInitializer!=null&&(t.modelInitializer=o.modelInitializer),o.trainingConfig!=null&&(t.trainingConfig=o.trainingConfig)}let a=this.LS.getItem(this.keys.weightData);if(a==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=q$(a),t}};to.URL_SCHEME="localstorage://";var xI=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(to.URL_SCHEME)?dF(e.slice(to.URL_SCHEME.length)):null;Ft.registerSaveRouter(xI);Ft.registerLoadRouter(xI);function dF(e){return new to(e)}var pF=class{constructor(){O(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),O(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Zi+Ts,n=Ts+bI;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(ec)&&(e=e.slice(0,e.indexOf(ec))),O(e.length>0,()=>"scheme must not be an empty string.");let n=dr.getInstance();O(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function sh(e){if(e.indexOf(ec)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${dr.getSchemes().join(",")}`);return{scheme:e.split(ec)[0],path:e.split(ec)[1]}}async function wI(e,t,n=!1){O(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=Ft.getLoadHandlers(e);O(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),O(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let s=r[0],a=Ft.getSaveHandlers(t);O(a.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),O(a.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let o=a[0],i=sh(e).scheme,c=sh(e).path,l=i===sh(e).scheme,u=await s.load();n&&l&&await dr.getManager(i).removeModel(c);let d=await o.save(u);return n&&!l&&await dr.getManager(i).removeModel(c),d.modelArtifactsInfo}async function hF(){let e=dr.getSchemes(),t={};for(let n of e){let r=await dr.getManager(n).listModels();for(let s in r){let a=n+ec+s;t[a]=r[s]}}return t}async function fF(e){let t=sh(e);return dr.getManager(t.scheme).removeModel(t.path)}async function mF(e,t){return wI(e,t,!1)}async function gF(e,t){return wI(e,t,!0)}var bF=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new bF);try{dr.registerManager(to.URL_SCHEME,new pF)}catch(e){}try{dr.registerManager(eo.URL_SCHEME,new sF)}catch(e){}}var yF={importFetch:()=>kD()},Xb,vF=class{constructor(){this.util=ID(),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(Xb==null&&(Xb=yF.importFetch()),Xb(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new vF);function We(e,t="float32",n){return t=t||"float32",ov(e),new Ht(e,t,n)}function xF(e,t){let n=A(e,"x","cast");if(!Kk(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},s={dtype:t};return z.runKernel(xo,r,s)}var ce=W({cast_:xF});function wF(e){let n={x:A(e,"x","clone","string_or_numeric")};return z.runKernel(Po,n)}var Ns=W({clone_:wF});function kI(e,t=!1){console.log(e.toString(t))}uI();var kF={buffer:We,cast:ce,clone:Ns,print:kI};F$(kF);var Zt={};$e(Zt,{browserFiles:()=>EF,browserHTTPRequest:()=>RF,concatenateArrayBuffers:()=>hv,copyModel:()=>mF,decodeWeights:()=>hI,encodeWeights:()=>G$,fromMemory:()=>OF,getLoadHandlers:()=>tF,getModelArtifactsForJSON:()=>fv,getModelArtifactsInfoForJSON:()=>Sd,getSaveHandlers:()=>eF,http:()=>gv,isHTTPScheme:()=>vy,listModels:()=>hF,loadWeights:()=>AF,moveModel:()=>gF,registerLoadRouter:()=>Q$,registerSaveRouter:()=>J$,removeModel:()=>fF,weightsLoaderFactory:()=>SI,withSaveHandler:()=>MF});var IF="model",SF=".json",TF=".weights.bin";function v1(e){return new Promise(t=>setTimeout(t)).then(e)}var oc=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(oc.URL_SCHEME)&&(e=e.slice(oc.URL_SCHEME.length)),(e==null||e.length===0)&&(e=IF),this.modelJsonFileName=e+SF,this.weightDataFileName=e+TF}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r=fI(e,n),s=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),a=this.modelJsonAnchor==null?document.createElement("a"):this.modelJsonAnchor;if(a.download=this.modelJsonFileName,a.href=s,await v1(()=>a.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let o=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;o.download=this.weightDataFileName,o.href=t,await v1(()=>o.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Sd(e)}}}};oc.URL_SCHEME="downloads://";var CF=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.jsonFile=e[0],this.weightsFiles=e.slice(1)}async load(){return new Promise((e,t)=>{let n=new FileReader;n.onload=r=>{let s=JSON.parse(r.target.result),a=s.modelTopology;if(a==null){t(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));return}if(s.weightsManifest==null){t(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));return}if(this.weightsFiles.length===0){e({modelTopology:a});return}let i=fv(s,c=>this.loadWeights(c));e(i)},n.onerror=r=>t(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),n.readAsText(this.jsonFile)})}loadWeights(e){let t=[],n=[];for(let a of e)t.push(...a.weights),n.push(...a.paths);let r=this.checkManifestAndWeightFiles(e),s=n.map(a=>this.loadWeightsFile(a,r[a]));return Promise.all(s).then(a=>[t,hv(a)])}loadWeightsFile(e,t){return new Promise((n,r)=>{let s=new FileReader;s.onload=a=>{let o=a.target.result;n(o)},s.onerror=a=>r(`Failed to weights data from file of path '${e}'.`),s.readAsArrayBuffer(t)})}checkManifestAndWeightFiles(e){let t=[],n=this.weightsFiles.map(s=>y1(s.name)),r={};for(let s of e)s.paths.forEach(a=>{let o=y1(a);if(t.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(t.push(o),n.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);r[a]=this.weightsFiles[n.indexOf(o)]});if(t.length!==this.weightsFiles.length)throw new Error(`Mismatch in the number of files in weights manifest (${t.length}) and the number of weight files provided (${this.weightsFiles.length}).`);return r}},NF=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(oc.URL_SCHEME)?_F(e.slice(oc.URL_SCHEME.length)):null;Ft.registerSaveRouter(NF);function _F(e="model"){return new oc(e)}function EF(e){return new CF(e)}function x1(e,t,n,r){o(e),n=n==null?0:n,r=r==null?1:r,i(n,r);let s=0,a=c=>(c.then(l=>{let u=n+ ++s/e.length*(r-n);return t(u),l}),c);function o(c){O(c!=null&&Array.isArray(c)&&c.length>0,()=>"promises must be a none empty array")}function i(c,l){O(c>=0&&c<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${c}`),O(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${l}`),O(l>=c,()=>`startFraction must be no more than endFraction, but got startFraction ${c} and endFraction ${l}`)}return Promise.all(e.map(a))}async function II(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(d=>n(d,t.requestInit,{isBinary:!0})),s=0,a=.5,i=(t.onProgress==null?await Promise.all(r):await x1(r,t.onProgress,s,a)).map(d=>d.arrayBuffer()),c=.5,l=1;return t.onProgress==null?await Promise.all(i):await x1(i,t.onProgress,c,l)}async function AF(e,t="",n,r){return SI(o=>II(o,{requestInit:r}))(e,t,n)}function SI(e){return async(t,n="",r)=>{let s=t.map(()=>!1),a={},o=r!=null?r.map(()=>!1):[],i=[];if(t.forEach((h,f)=>{let m=0;h.weights.forEach(g=>{let b="quantization"in g?g.quantization.dtype:g.dtype,y=my[b]*xt(g.shape),v=()=>{s[f]=!0,a[f]==null&&(a[f]=[]),a[f].push({manifestEntry:g,groupOffset:m,sizeBytes:y})};r!=null?r.forEach((x,w)=>{x===g.name&&(v(),o[w]=!0)}):v(),i.push(g.name),m+=y})}),!o.every(h=>h)){let h=r.filter((f,m)=>!o[m]);throw new Error(`Could not find weights in manifest with names: ${h.join(", ")}. Manifest JSON has weights with names: ${i.join(", ")}.`)}let c=s.reduce((h,f,m)=>(f&&h.push(m),h),[]),l=[];c.forEach(h=>{t[h].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;l.push(m)})});let u=await e(l),d={},p=0;return c.forEach(h=>{let f=t[h].paths.length,m=0;for(let x=0;x{let w=g.slice(x.groupOffset,x.groupOffset+x.sizeBytes),T=hI(w,[x.manifestEntry]);for(let N in T)d[N]=T[N]}),p+=f}),d}}var DF="application/octet-stream",$F="application/json",mv=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(O(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,O(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&O(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r=fI(e,n);t.body.append("model.json",new Blob([JSON.stringify(r)],{type:$F}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:DF}),"model.weights.bin");let s=await this.fetch(this.path,t);if(s.ok)return{modelArtifactsInfo:Sd(e),responses:[s]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${s.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(s){let a=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?a+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":a+=" Please make sure the server is serving valid JSON for this request.",new Error(a)}let n=t.modelTopology,r=t.weightsManifest;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);return fv(t,s=>this.loadWeights(s))}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=FF(t),s=this.weightPathPrefix||n,a=[];for(let l of e)a.push(...l.weights);let o=[],i=[];for(let l of e)for(let u of l.paths)this.weightUrlConverter!=null?i.push(this.weightUrlConverter(u)):o.push(s+u+r);this.weightUrlConverter&&o.push(...await Promise.all(i));let c=await II(o,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[a,hv(c)]}};mv.URL_SCHEME_REGEX=/^https?:\/\//;function FF(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),s=n>t?e.substring(n):"";return[r+"/",s]}function vy(e){return e.match(mv.URL_SCHEME_REGEX)!=null}var TI=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>vy(r)):n=vy(e),n)return gv(e,t)}return null};Ft.registerSaveRouter(TI);Ft.registerLoadRouter(TI);function gv(e,t){return new mv(e,t)}function RF(e,t){return gv(e,t)}var Yb=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},PF=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function OF(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Yb(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Yb({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Yb({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function MF(e){return new PF(e)}var CI={};$e(CI,{confusionMatrix:()=>VF});function LF(e,t,n=!1,r=!1){let s=A(e,"a","matMul"),a=A(t,"b","matMul");[s,a]=Dt(s,a);let o={a:s,b:a},i={transposeA:n,transposeB:r};return z.runKernel(vo,o,i)}var Ae=W({matMul_:LF});function BF(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:A(e,"indices","oneHot","int32")},o={depth:t,onValue:n,offValue:r};return z.runKernel(jo,a,o)}var ic=W({oneHot_:BF});function zF(e,t){let n=A(e,"x","transpose");if(t==null&&(t=n.shape.map((a,o)=>o).reverse()),O(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(a=>{O(a>=0&&a`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},s={perm:t};return z.runKernel(di,r,s)}var Fe=W({transpose_:zF});function WF(e,t,n){let r=A(e,"labels","confusionMatrix"),s=A(t,"predictions","confusionMatrix");O(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),O(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),O(s.rank===1,()=>`Expected the rank of predictions to be 1, but got ${s.rank}`),O(r.shape[0]===s.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${s.shape[0]}. Labels and predictions should have the same number of elements.`),O(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let a=ic(ce(r,"int32"),n),o=ic(ce(s,"int32"),n),i=Fe(a),c=Ae(i,o);return ce(c,"int32")}var VF=W({confusionMatrix_:WF}),wu={};$e(wu,{assertAndGetBroadcastShape:()=>ht,getBroadcastDims:()=>NI,getReductionAxes:()=>Wt});function NI(e,t){let n=e.length,r=[];for(let s=0;s1&&o===1&&r.unshift(a)}return r}function Wt(e,t){let n=[];for(let r=0;r1)&&n.unshift(a)}return n}function ht(e,t){let n=[],r=Math.max(e.length,t.length);for(let s=0;sXF,fromPixelsAsync:()=>qF,toPixels:()=>KF});function Nf(e,t,n){if(mo(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=is(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return va(e,t,r,n)}var Oa;function _I(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,s=!1,a=!1,o=!1,i=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)s=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)a=!0;else if(e.getContext!=null)o=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)i=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(s&&s&&e.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the