varwX=Object.create;varfx=Object.defineProperty;var_X=Object.getOwnPropertyDescriptor;varCX=Object.getOwnPropertyNames;varSX=Object.getPrototypeOf,NX=Object.prototype.hasOwnProperty;varAX=r=>fx(r,"__esModule",{value:!0});varAp=r=>{if(typeofrequire!="undefined")returnrequire(r);thrownewError('Dynamic require of "'+r+'" is not supported')};varhr=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ge=(r,e)=>{for(vartine)fx(r,t,{get:e[t],enumerable:!0})},DX=(r,e,t)=>{if(e&&typeofe=="object"||typeofe=="function")for(letnofCX(e))!NX.call(r,n)&&n!=="default"&&fx(r,n,{get:()=>e[n],enumerable:!(t=_X(e,n))||t.enumerable});returnr},Wi=r=>DX(AX(fx(r!=null?wX(SX(r)):{},"default",r&&r.__esModule&&"default"inr?{get:()=>r.default,enumerable:!0}:{value:r,enumerable:!0})),r);varDw=hr((Owe,TF)=>{TF.exports=pr;varrs=null;try{rs=newWebAssembly.Instance(newWebAssembly.Module(newUint8Array([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){}functionpr(r,e,t){this.low=r|0,this.high=e|0,this.unsigned=!!t}pr.prototype.__isLong__;Object.defineProperty(pr.prototype,"__isLong__",{value:!0});functionyo(r){return(r&&r.__isLong__)===!0}pr.isLong=yo;varcF={},mF={};functionMp(r,e){vart,n,o;returne?(r>>>=0,(o=0<=r&&r<256)&&(n=mF[r],n)?n:(t=cr(r,(r|0)<0?-1:0,!0),o&&(mF[r]=t),t)):(r|=0,(o=-128<=r&&r<128)&&(n=cF[r],n)?n:(t=cr(r,r<0?-1:0,!1),o&&(cF[r]=t),t))}pr.fromInt=Mp;functionns(r,e){if(isNaN(r))returne?Fp:os;if(e){if(r<0)returnFp;if(r>=dF)returnxF}else{if(r<=-hF)returnxo;if(r+1>=hF)returnyF}returnr<0?ns(-r,e).neg():cr(r%Pm|0,r/Pm|0,e)}pr.fromNumber=ns;functioncr(r,e,t){returnnewpr(r,e,t)}pr.fromBits=cr;varIx=Math.pow;functionNw(r,e,t){if(r.length===0)throwError("empty string");if(r==="NaN"||r==="Infinity"||r==="+Infinity"||r==="-Infinity")returnos;if(typeofe=="number"?(t=e,e=!1):e=!!e,t=t||10,t<2||36<t)throwRangeError("radix");varn;if((n=r.indexOf("-"))>0)throwError("interior hyphen");if(n===0)returnNw(r.substring(1),e,t).neg();for(varo=ns(Ix(t,8)),s=os,i=0;i<r.length;i+=8){vara=Math.min(8,r.length-i),l=parseInt(r.substring(i,i+a),t);if(a<8){varu=ns(Ix(t,a));s=s.mul(u).add(ns(l))}elses=s.mul(o),s=s.add(ns(l))}returns.unsigned=e,s}pr.fromString=Nw;functionPs(r,e){returntypeofr=="number"?ns(r,e):typeofr=="string"?Nw(r,e):cr(r.low,r.high,typeofe=="boolean"?e:r.unsigned)}pr.fromValue=Ps;varfF=1<<16,i7=1<<24,Pm=fF*fF,dF=Pm*Pm,hF=dF/2,gF=Mp(i7),os=Mp(0);pr.ZERO=os;varFp=Mp(0,!0);pr.UZERO=Fp;varBm=Mp(1);pr.ONE=Bm;varbF=Mp(1,!0);pr.UONE=bF;varAw=Mp(-1);pr.NEG_ONE=Aw;varyF=cr(4294967295|0,2147483647|0,!1);pr.MAX_VALUE=yF;varxF=cr(4294967295|0,4294967295|0,!0);pr.MAX_UNSIGNED_VALUE=xF;varxo=cr(0,2147483648|0,!1);pr.MIN_VALUE=xo;varSe=pr.prototype;Se.toInt=function(){returnthis.unsigned?this.low>>>0:this.low};Se.toNumber=function(){returnthis.unsigned?(this.high>>>0)*Pm+(this.low>>>0):this.high*Pm+(this.low>>>0)};Se.toString=function(e){if(e=e||10,e<2||36<e)throwRangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(xo)){vart=ns(e),n=this.div(t),o=n.mul(t).sub(this);returnn.toString(e)+o.toInt().toString(e)}elsereturn"-"+this.neg().toString(e);for(vars=ns(Ix(e,6),this.unsigned),i=this,a="";;){varl=i.div(s),u=i.sub(l.mul(s)).toInt()>>>0,p
`;return m[m.length-1]=" "+m[m.length-1]+"]"+(s?"":d),m}function kh(r){let e=[];for(let t=0;t<r.length;t+=2)e.push([r[t],r[t+1]]);return e}var Pp=class{constructor(e,t,n){this.dtype=t;if(this.shape=e.slice(),this.size=Ct(e),n!=null){let o=n.length;P(o===this.size,()=>`Lengthofvalues'${o}'doesnotmatchthesizeinferredbytheshape'${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||hw(t,this.size),this.strides=ni(e)}set(e,...t){t.length===0&&(t=[0]),P(t.length===this.rank,()=>`Thenumberofprovidedcoordinates(${t.length})mustmatchtherank(${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let o of e){if(o<0||o>=this.shape[t]){let s=`Requestedoutofrangeelementat${e}.Buffershape=${this.shape}`;throw new Error(s)}t++}let n=e[e.length-1];for(let o=0;o<e.length-1;++o)n+=this.strides[o]*e[o];return this.values[n]}locToIndex(e){if(this.rank===0)return 0;if(this.rank===1)return e[0];let t=e[e.length-1];for(let n=0;n<e.length-1;++n)t+=this.strides[n]*e[n];return t}indexToLoc(e){if(this.rank===0)return[];if(this.rank===1)return[e];let t=new Array(this.shape.length);for(let n=0;n<t.length-1;++n)t[n]=Math.floor(e/this.strides[n]),e-=t[n]*this.strides[n];return t[t.length-1]=e,t}get rank(){return this.shape.length}toTensor(){return oi().makeTensor(this.values,this.shape,this.dtype)}},oi=null,Gm=null,y7=null;function MF(r){oi=r}function FF(r){Gm=r}function RF(r){y7=r}var Yt=class{constructor(e,t,n,o){this.kept=!1;this.isDisposedInternal=!1;this.shape=e.slice(),this.dtype=t||"float32",this.size=Ct(e),this.strides=ni(e),this.dataId=n,this.id=o,this.rankType=this.rank<5?this.rank.toString():"higher"}get rank(){return this.shape.length}async buffer(){let e=await this.data();return Gm.buffer(this.shape,this.dtype,e)}bufferSync(){return Gm.buffer(this.shape,this.dtype,this.dataSync())}async array(){let e=await this.data();return Ep(this.shape,e,this.dtype==="complex64")}arraySync(){return Ep(this.shape,this.dataSync(),this.dtype==="complex64")}async data(){this.throwIfDisposed();let e=oi().read(this.dataId);if(this.dtype==="string"){let t=await e;try{return t.map(n=>zm(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}dataSync(){this.throwIfDisposed();let e=oi().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>zm(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 oi().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(oi().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Gm.print(this,e)}clone(){return this.throwIfDisposed(),Gm.clone(this)}toString(e=!1){let t=this.dataSync();return DF(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Gm.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),oi().makeVariable(this,e,t,n)}};Object.defineProperty(Yt,Symbol.hasInstance,{value:r=>!!r&&r.data!=null&&r.dataSync!=null&&r.throwIfDisposed!=null});function x7(){return hh("Tensor",()=>Yt)}x7();var Cu=class extends Yt{constructor(e,t,n,o){super(e.shape,e.dtype,e.dataId,o);this.trainable=t;this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtypeofthenewvalue(${e.dtype})andpreviousvalue(${this.dtype})mustmatch`);if(!En(e.shape,this.shape))throw new Error(`shapeofthenewvalue(${e.shape})andpreviousvalue(${this.shape})mustmatch`);oi().disposeTensor(this),this.dataId=e.dataId,oi().incRef(this,null)}dispose(){oi().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Cu,Symbol.hasInstance,{value:r=>r instanceof Yt&&r.as
ManifestJSONhasweightswithnames:${a.join(", ")}.`)}let l=o.reduce((f,d,h)=>(d&&f.push(h),f),[]),u=[];l.forEach(f=>{e[f].paths.forEach(d=>{let h=t+(t.endsWith("/")?"":"/")+d;u.push(h)})});let p=await r(u),c={},m=0;return l.forEach(f=>{let d=e[f].paths.length,h=0;for(let k=0;k<d;k++)h+=p[m+k].byteLength;let g=new ArrayBuffer(h),b=new Uint8Array(g),y=0;for(let k=0;k<d;k++){let I=new Uint8Array(p[m+k]);b.set(I,y),y+=I.byteLength}s[f].forEach(k=>{let I=g.slice(k.groupOffset,k.groupOffset+k.sizeBytes),S=Nx(I,[k.manifestEntry]);for(let N in S)c[N]=S[N]}),m+=d}),c}}var J7="application/octet-stream",Q7="application/json",Ex=class{constructor(e,t){this.DEFAULT_METHOD="POST";if(t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(P(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=Ze().platform.fetch,P(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&P(e.length===2,()=>`URLpathsforhttpmusthavealengthof2,(actuallengthis${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}],o={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(o.signature=e.signature),e.userDefinedMetadata!=null&&(o.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(o.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(o)],{type:Q7}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:J7}),"model.weights.bin");let s=await this.fetch(this.path,t);if(s.ok)return{modelArtifactsInfo:si(e),responses:[s]};throw new Error(`BrowserHTTPRequest.save()failedduetoHTTPresponsestatus${s.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Requestto${this.path}failedwithstatuscode${e.status}.PleaseverifythisURLpointstothemodelJSONofthemodeltoload.`);let t;try{t=await e.json()}catch(d){let h=`FailedtoparsemodelJSONofresponsefrom${this.path}.`;throw this.path.endsWith(".pb")?h+=" 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.":h+=" Please make sure the server is serving valid JSON for this request.",new Error(h)}let n=t.modelTopology,o=t.weightsManifest,s=t.generatedBy,i=t.convertedBy,a=t.format,l=t.signature,u=t.userDefinedMetadata;if(n==null&&o==null)throw new Error(`TheJSONfromHTTPpath${this.path}containsneithermodeltopologyormanifestforweights.`);let p,c;o!=null&&([p,c]=await this.loadWeights(o));let m={modelTopology:n,weightSpecs:p,weightData:c,generatedBy:s,convertedBy:i,format:a};l!=null&&(m.signature=l),u!=null&&(m.userDefinedMetadata=u);let f=t.modelInitializer;return f&&(m.modelInitializer=f),m}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,o]=eY(t),s=this.weightPathPrefix||n,i=[];for(let p of e)i.push(...p.weights);let a=[],l=[];for(let p of e)for(let c of p.paths)this.weightUrlConverter!=null?l.push(this.weightUrlConverter(c)):a.push(s+c+o);this.weightUrlConverter&&a.push(...await Promise.all(l));let u=await t_(a,{requestInit:thi
Actual:${o}.
Expected:${s}.`);for(let i=0;i<s.length;++i){let a=o[i],l=s[i];if(!t(a,l))throw new Error(`Arraysdiffer:actual[${i}]=${a},expected[${i}]=${l}.
Actual:${o}.
Expected:${s}.`)}}function xY(r,e){r().then(()=>e.fail(),()=>e())}function TY(r,e){let t=typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[e]:e;return $s(r)||$s(r[0])||$s(e)||$s(e[0])?s_(r,t,(n,o)=>n==o):s_(r,e,(n,o)=>a_(n,o,0))}function PR(r,e,t){if(t==null&&(t=zx()),!a_(r,e,t))throw new Error(`Numbersdiffer:actual===${r},expected===${e}`)}function a_(r,e,t){return!isFinite(r)&&!isFinite(e)?!0:!(isNaN(r)||isNaN(e)||Math.abs(r-e)>t)}function kY(r,e,t){for(let n=0;n<r.length;n++)if(r[n]<e||r[n]>t)throw new Error(`Valueoutofrange:${r[n]}low:${e},high:${t}`)}function IY(r,e){expect(new Float32Array(r)).toEqual(new Float32Array(e))}function BR(r){for(let e=0;e<r.length;e++){let t=r[e];Array.isArray(t)?BR(t):r[e]=_u(t)}return r}var vY="3.7.0";function xAe(){Ze().set("PROD",!0)}function TAe(){Ze().set("DEBUG",!0)}function kAe(){Ze().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function wY(r){Ze().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(r+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}RF(wY);function IAe(){L.disposeVariables()}function vAe(){return L}function wAe(){return L.memory()}function _Ae(r){return L.profile(r)}function mr(r,e){return L.tidy(r,e)}function $r(r){Ih(r).forEach(t=>t.dispose())}function zR(r){return L.keep(r)}function CAe(r){return L.time(r)}function SAe(r){return L.setBackend(r)}function NAe(){return L.ready()}function AAe(){return L.backendName}function DAe(r){L.removeBackend(r)}function EAe(r){return L.findBackend(r)}function MAe(r){return L.findBackendFactory(r)}function FAe(r,e,t=1){return L.registerBackend(r,e,t)}function RAe(){return L.backend}function LAe(r,e){Ze().setPlatform(r,e)}function _Y(r,e){let t=w(r,"a","add"),n=w(e,"b","add");[t,n]=Qe(t,n);let o={a:t,b:n};return L.runKernel(bx,o)}var Re=E({add_:_Y});function CY(r,e){let t=w(r,"a","floorDiv"),n=w(e,"b","floorDiv");[t,n]=Qe(t,n);let o={a:t,b:n};return L.runKernel(S2,o)}var i_=E({floorDiv_:CY});function SY(r,e){let t=w(r,"a","div"),n=w(e,"b","div");if([t,n]=Qe(t,n),t.dtype==="int32"&&n.dtype==="int32")return i_(t,n);let o={a:t,b:n},s={};return L.runKernel(h2,o,s)}var ct=E({div_:SY});function NY(r,e){let t=w(r,"a","mul"),n=w(e,"b","mul");[t,n]=Qe(t,n);let o={a:t,b:n};return L.runKernel(sM,o)}var fe=E({mul_:NY});function AY(r){let e=w(r,"x","abs");if(e.dtype==="complex64"){let t={x:e};return L.runKernel(ZE,t)}else{let t={x:e};return L.runKernel(DE,t)}}var un=E({abs_:AY});function DY(r){let t={x:w(r,"x","acos")};return L.runKernel(EE,t)}var EY=E({acos_:DY});function MY(r){let t={x:w(r,"x","acosh")};return L.runKernel(ME,t)}var FY=E({acosh_:MY});function RY(r){P(Array.isArray(r),()=>"The argument passed to tf.addN() must be a list of tensors"),P(r.length>=1,()=>`Mustpassatleastonetensortotf.addN(),butgot${r.length}`);let e=r.map((o,s)=>w(o,`tensors${s}`,"addN")),t=e[0];e.forEach(o=>{if(o.dtype!==t.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),e.forEach(o=>{if(!En(o.shape,t.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let n=e;return L.runKernel(FE,n)}var LY=E({addN_:RY});function $Y(r,e=null,t=!1){let o={x:w(r,"x","all","bool")},s={axis:e,keepDims:t};return L.runKernel(RE,o,s)}var PY=E({all_:$Y});function BY(r,e=null,t=!1){let o={x:w(r,"x","any","bool")},s={axis:e,keepDims:t};return L.runKernel(LE,o,s)}var OY=E({any_:BY});function zY(r,e=0){let n={x:w(r,"x","argMax")},o={axis:e};return L.runKernel($E,n,o)}var GY=E({argMax_:zY});function WY(r,e=0){let n={x:w(r,"x","argMin")},o={axis:e};return L.runKernel(PE,n,o)}var KY=E({argMin_:WY});function VY(r){let t={x:w(r,"x","asin")};return L.runKernel(BE,t)}var UY=E({asin_:VY});function jY(r){let t={x:w(r,"x","asinh")};return L.runKernel(OE,t)}var HY=E({asinh_:jY});function qY(r){let t={x:w(r,"x","atan")};return L.runKernel(zE,t)}var XY=E({atan_:qY});function YY(r,e){let t=w(r,"a","atan2"),n=w(e,"b","atan2");[t,n]=Qe(t,n);let o={a:t,b:n};return L.runKernel(WE,o)}var ZY=E({atan2_:YY});f
withdtype${s.dtype}.`)}),t.length===1)return Os(t[0]);let n=t,o={axis:e};return L.runKernel(JE,n,o)}var Dr=E({concat_:p9});function c9(r){let t={x:w(r,"x","sigmoid")};return L.runKernel($M,t)}var Xi=E({sigmoid_:c9});function m9(r,e,t){let n=w(r,"x","slice","string_or_numeric");if(n.rank===0)throw new Error("Slicing scalar is not possible");let o={x:n},s={begin:e,size:t};return L.runKernel(MM,o,s)}var kt=E({slice_:m9});function f9(r){let t={x:w(r,"x","tanh")};return L.runKernel(tF,t)}var Wx=E({tanh_:f9});function d9(r,e,t,n,o,s){let i=w(r,"forgetBias","basicLSTMCell"),a=w(e,"lstmKernel","basicLSTMCell"),l=w(t,"lstmBias","basicLSTMCell"),u=w(n,"data","basicLSTMCell"),p=w(o,"c","basicLSTMCell"),c=w(s,"h","basicLSTMCell"),m=Dr([u,c],1),f=gt(m,a),d=Re(f,l),h=d.shape[0],g=d.shape[1]/4,b=[h,g],y=kt(d,[0,0],b),T=kt(d,[0,g],b),k=kt(d,[0,g*2],b),I=kt(d,[0,g*3],b),S=Re(fe(Xi(y),Wx(T)),fe(p,Xi(Re(i,k)))),N=fe(Wx(S),Xi(I));return[S,N]}var h9=E({basicLSTMCell_:d9});function g9(r,e,t){let n=w(r,"x","batchToSpaceND"),o=e.reduce((a,l)=>a*l);P(n.rank>=1+e.length,()=>`inputrankis${n.rank}butshouldbe>thanblockShape.length${e.length}`),P(t.length===e.length,()=>`crops.lengthis${t.length}butshouldbeequaltoblockShape.length${e.length}`),P(n.shape[0]%o==0,()=>`inputtensorbatchis${n.shape[0]}butisnotdivisiblebytheproductoftheelementsofblockShape${e.join(" * ")}===${o}`);let s={x:n},i={blockShape:e,crops:t};return L.runKernel(jE,s,i)}var m_=E({batchToSpaceND_:g9});function KR(r){let e;return r.rank===0||r.rank===1?e=te(r,[1,1,1,r.size]):r.rank===2?e=te(r,[1,1,r.shape[0],r.shape[1]]):r.rank===3?e=te(r,[1,r.shape[0],r.shape[1],r.shape[2]]):e=r,e}function b9(r,e,t,n,o,s){s==null&&(s=.001);let i=w(r,"x","batchNorm"),a=w(e,"mean","batchNorm"),l=w(t,"variance","batchNorm"),u;o!=null&&(u=w(o,"scale","batchNorm"));let p;n!=null&&(p=w(n,"offset","batchNorm")),P(a.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),P(p==null||a.rank===p.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),P(u==null||a.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let m={x:KR(i),scale:u,offset:p,mean:a,variance:l},f={varianceEpsilon:s},d=L.runKernel(N2,m,f);return te(d,i.shape)}var Wp=E({batchNorm_:b9});function y9(r,e,t,n,o,s){let i=w(r,"x","batchNorm"),a=w(e,"mean","batchNorm"),l=w(t,"variance","batchNorm"),u;o!=null&&(u=w(o,"scale","batchNorm"));let p;return n!=null&&(p=w(n,"offset","batchNorm")),P(i.rank===2,()=>`ErrorinbatchNorm2D:xmustberank2butgotrank${i.rank}.`),P(a.rank===2||a.rank===1,()=>`ErrorinbatchNorm2D:meanmustberank2orrank1butgotrank${a.rank}.`),P(l.rank===2||l.rank===1,()=>`ErrorinbatchNorm2D:variancemustberank2orrank1butgotrank${l.rank}.`),u!=null&&P(u.rank===2||u.rank===1,()=>`ErrorinbatchNorm2D:scalemustberank2orrank1butgotrank${u.rank}.`),p!=null&&P(p.rank===2||p.rank===1,()=>`ErrorinbatchNorm2D:offsetmustberank2orrank1butgotrank${p.rank}.`),Wp(i,a,l,p,u,s)}var x9=E({batchNorm2d_:y9});function T9(r,e,t,n,o,s){let i=w(r,"x","batchNorm"),a=w(e,"mean","batchNorm"),l=w(t,"variance","batchNorm"),u;o!=null&&(u=w(o,"scale","batchNorm"));let p;return n!=null&&(p=w(n,"offset","batchNorm")),P(i.rank===3,()=>`ErrorinbatchNorm3D:xmustberank3butgotrank${i.rank}.`),P(a.rank===3||a.rank===1,()=>`ErrorinbatchNorm3D:meanmustberank3orrank1butgotrank${a.rank}.`),P(l.rank===3||l.rank===1,()=>`ErrorinbatchNorm3D:variancemustberank3orrank1butgotrank${l.rank}.`),u!=null&&P(u.rank===3||u.rank===1,()=>`ErrorinbatchNorm3D:scalemustberank3orrank1butgotrank${u.rank}.`),p!=null&&P(p.rank===3||p.rank===1,()=>`ErrorinbatchNorm3D:offsetmustberank3orrank1butgotrank${p.rank}.`),Wp(i,a,l,p,u,s)}var k9=E({batchNorm3d_:T9});function I9(r,e,t,n,o,s){let i=w(r,"x","batchNorm"),a=w(e,"mean","batchNorm"),l=w(t,"variance","batchNorm"),u;o!=null&&(u=w(o,"scale","batchNorm"));let p;ret
rank${s.rank}.`),P(Qt(e),()=>`ErrorinlocalResponseNormalization:depthRadiusmustbeanintegerbutgotdepthRadius${e}.`);let i=s,a=!1;s.rank===3&&(a=!0,i=te(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:e,bias:t,alpha:n,beta:o},p=L.runKernel(H2,l,u);return a?te(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var jZ=E({localResponseNormalization_:UZ});function HZ(r){let t={x:w(r,"x","log")};return L.runKernel(W2,t)}var Au=E({log_:HZ});function qZ(r){let t={x:w(r,"x","log1p")};return L.runKernel(K2,t)}var I_=E({log1p_:qZ});function XZ(r){return P(ri(r),()=>"The f passed in grad(f) must be a function"),(e,t)=>{let n=w(e,"x","tf.grad","string_or_numeric"),o=t!=null?w(t,"dy","tf.grad"):null;return L.tidy(()=>{let{value:s,grads:i}=L.gradients(()=>r(n),[n],o);return o!=null&&Jt(s.shape,o.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Vx(i),i[0]})}}function YZ(r){return P(ri(r),()=>"The f passed in grads(f) must be a function"),(e,t)=>{P(Array.isArray(e),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let n=Ki(e,"args","tf.grads","string_or_numeric"),o=t!=null?w(t,"dy","tf.grads"):null;return L.tidy(()=>{let{value:s,grads:i}=L.gradients(()=>r(...n),n,o);return o!=null&&Jt(s.shape,o.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Vx(i),i})}}function ZZ(r){return P(ri(r),()=>"The f passed in valueAndGrad(f) must be a function"),(e,t)=>{P(e instanceof Yt,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),P(t==null||t instanceof Yt,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:n,value:o}=L.gradients(()=>r(e),[e],t);return Vx(n),{grad:n[0],value:o}}}function JZ(r){return P(ri(r),()=>"The f passed in valueAndGrads(f) must be a function"),(e,t)=>{P(Array.isArray(e)&&e.every(o=>o instanceof Yt),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),P(t==null||t instanceof Yt,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let n=L.gradients(()=>r(...e),e,t);return t!=null&&Jt(n.value.shape,t.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Vx(n.grads),n}}function v_(r,e){P(ri(r),()=>"The f passed in variableGrads(f) must be a function"),P(e==null||Array.isArray(e)&&e.every(u=>u instanceof Cu),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let t=e!=null;if(!t){e=[];for(let u in L.registeredVariables)e.push(L.registeredVariables[u])}let n=t?e.filter(u=>!u.trainable):null,o=e.length;e=e.filter(u=>u.trainable),P(e.length>0,()=>`variableGrads()expectsatleastoneoftheinputvariablestobetrainable,butnoneofthe${o}variablesistrainable.`);let s=!0,{value:i,grads:a}=L.gradients(r,e,null,s);P(a.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),P(i.rank===0,()=>`ThefpassedinvariableGrads(f)mustreturnascalar,butitreturnedarank-${i.rank}tensor`);let l={};return e.forEach((u,p)=>{a[p]!=null&&(l[u.name]=a[p])}),n!=null&&n.forEach(u=>l[u.name]=null),{value:i,grads:l}}function $n(r){return L.customGrad(r)}function Vx(r){if(r.filter(t=>t==null).length>0)throw new Error(`Cannotcomputegradientofy=f(x)withrespecttox.Makesurethat
${o.shape}`);if(s.rank!==1)throw new Error(`ValuesshouldbeTensor1Dbutreceivedshape${s.shape}`);if(i.rank!==1)throw new Error(`DenseshapeshouldbeTensor1Dbutreceivedshape${i.shape}`);if(a.rank!==0)throw new Error(`Defaultvalueshouldbeascalarbutreceivedshape${a.shape}`);let l={indices:o,values:s,denseShape:i,defaultValue:a},u=L.runKernel(KM,l);return{outputIndices:u[0],outputValues:u[1],emptyRowIndicator:u[2],reverseIndexMap:u[3]}}var jL=E({sparseFillEmptyRows_:Mte});function Fte(r,e,t){let n=w(r,"inputIndices","sparseReshape"),o=w(e,"inputShape","sparseReshape"),s=w(t,"newShape","sparseReshape");if(n.rank!==2)throw new Error(`InputindicesshouldbeTensor2Dbutreceivedshape
${n.shape}`);if(o.rank!==1)throw new Error(`InputshapeshouldbeTensor1Dbutreceivedshape${o.shape}`);if(s.rank!==1)throw new Error(`NewshapeshouldbeTensor1Dbutreceivedshape${s.shape}`);let i={inputIndices:n,inputShape:o,newShape:s},a=L.runKernel(VM,i);return{outputIndices:a[0],outputShape:a[1]}}var HL=E({sparseReshape_:Fte});function Rte(r,e,t){let n=w(r,"data","sparseSegmentMean"),o=w(e,"indices","sparseSegmentMean"),s=w(t,"segmentIds","sparseSegmentMean");if(n.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.rank!==1)throw new Error(`IndicesshouldbeTensor1Dbutreceivedshape
${o.shape}`);if(s.rank!==1)throw new Error(`SegmentidsshouldbeTensor1Dbutreceivedshape
${s.shape}`);let i={data:n,indices:o,segmentIds:s};return L.runKernel(UM,i)}var qL=E({sparseSegmentMean_:Rte});function Lte(r,e,t){let n=w(r,"data","sparseSegmentSum"),o=w(e,"indices","sparseSegmentSum"),s=w(t,"segmentIds","sparseSegmentSum");if(n.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.rank!==1)throw new Error(`IndicesshouldbeTensor1Dbutreceivedshape
${o.shape}`);if(s.rank!==1)throw new Error(`SegmentidsshouldbeTensor1Dbutreceivedshape
${s.shape}`);let i={data:n,indices:o,segmentIds:s};return L.runKernel(jM,i)}var XL=E({sparseSegmentSum_:Lte});function $te(r,e,t,n,o,s,i,a){let l=w(r,"data","stringNGrams","string");if(l.dtype!=="string")throw new Error("Data must be of datatype string");if(l.shape.length!==1)throw new Error(`Datamustbeavector,saw:${l.shape}`);let u=w(e,"dataSplits","stringNGrams");if(u.dtype!=="int32")throw new Error("Data splits must be of datatype int32");let p={separator:t,nGramWidths:n,leftPad:o,rightPad:s,padWidth:i,preserveShortSequences:a},c={data:l,dataSplits:u},m=L.runKernel(YM,c,p);return{nGrams:m[0],nGramsSplits:m[1]}}var YL=E({stringNGrams_:$te});function Pte(r,e,t=!0){let n=w(r,"input","stringSplit","string"),o=w(e,"delimiter","stringSplit","string");if(n.rank!==1)throw new Error(`InputshouldbeTensor1Dbutreceivedshape${n.shape}`);if(o.rank!==0)throw new Error(`Delimitershouldbeascalarbutreceivedshape${o.shape}`);let s={skipEmpty:t},i={input:n,delimiter:o},a=L.runKernel(ZM,i,s);return{indices:a[0],values:a[1],shape:a[2]}}var ZL=E({stringSplit_:Pte});function Bte(r,e){let t=w(r,"input","stringToHashBucketFast","string"),n={numBuckets:e};if(e<=0)throw new Error("Number of buckets must be at least 1");let o={input:t};return L.runKernel(JM,o,n)}var JL=E({stringToHashBucketFast_:Bte});var W9e={fft:Eh,ifft:Qm,rfft:Mh,irfft:H_},H9e={hammingWindow:bL,hannWindow:Jx,frame:Qx,stft:yL},iZe={flipLeftRight:TL,resizeNearestNeighbor:EL,resizeBilinear:DL,rotateWithOffset:kL,cropAndResize:xL,nonMaxSuppression:IL,nonMaxSuppressionAsync:_L,nonMaxSuppressionWithScore:CL,nonMaxSuppressionWithScoreAsync:SL,nonMaxSuppressionPadded:NL,nonMaxSuppressionPaddedAsync:AL,threshold:ML,transform:FL},cZe={bandPart:RL,gramSchmidt:LL,qr:PL},kZe={absoluteDifference:BL,computeWeightedLoss:cn,cosineDistance:OL,hingeLoss:zL,huberLoss:GL,logLoss:WL,meanSquaredError:KL,sigmoidCrossEntropy:VL,softmaxCrossEntropy:UL},CZe={sparseFillEmptyRows:jL,sparseReshape:HL,sparseSegmentMean:qL,sparseSegmentSum:XL},DZe={stringNGrams:YL,stringSplit:ZL,stringToHashBucketFast:JL};var ro=class extends Ox{minimize(e,t=!1,n){let{value:o,grads:s}=this.computeGradients(e,n);if(n!=null){let i=n.map(a=>({name:a.name,tensor:s[a.name]}));this.applyGradients(i)}else this.applyGradients(s);return $r(s),t?o:(o.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return v_(e,t)}dispose(){this.iterations_!=null&&$r(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:Je(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights()isnotimplementedforthisoptimizerclass${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(ro,Symbol.hasInstance,{value:r=>r.minimize!=null&&r.computeGradients!=null&&r.applyGradients!=null});var Qp=class extends ro{constructor(e,t,n=null){super();this.learningRate=e;this.rho=t;this.epsilon=n;this.accumulatedGrads=[];this.accumulatedUpdates=[];n==null&&(this.epsilon=L.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(n=>n.name):Object.keys(e)).forEach((n,o)=>{let s=L.registeredVariables[n],i=!1;this.accumulatedGrads[o]==null&&(this.accumulatedGrads[o]={originalName:`${n}/accum_grad`,variable:mr(()=>qr(s).variable(i))}),this.accumulatedUpdates[o]==null&&(this.accumulatedUpdates[o]={originalName:`${n}/accum_var`,variable:mr(()=>qr(s).variable(i))});let a=Array.isArray(e)?e[o].tensor:e[n];if(a==null)return;let l=this.accumulatedGrads[o].variable,u=this.accumulatedUpdates[o].variable;mr(()=>{let p=Re(fe(l,this.rho),fe(pn(a),1-this.rho)),c=fe(ct(To(Re(u,this.epsilon)),To(Re(l,this.epsilon))),a),m=Re(fe(u,this.rho),fe(pn(c),1-this.rho));l.assign(p),u.assign(m);let f=Re(fe(c,-this.learningRate),s);s.assign(f)})}),this.incrementIterations()}dispose(){th
${s}).`);if(t<n)throw new Error(`batchDims(${n})mustbelessthanorequaltoaxis(${t}).`);for(let c=0;c<n;++c)if(r.shape[c]!==e.shape[c])throw new Error(`x.shape[${c}]:${r.shape[c]}shouldbeequaltoindices.shape[${c}]:${e.shape[c]}.`);let i=r.shape[t],a=[],l=1,u=1,p=1;for(let c=0;c<n;++c)a.push(r.shape[c]),l*=r.shape[c];for(let c=n;c<t;c++)a.push(r.shape[c]),u*=r.shape[c];for(let c=n;c<o;c++)a.push(e.shape[c]);for(let c=t+1;c<s;c++)a.push(r.shape[c]),p*=r.shape[c];return{batchSize:l,sliceSize:p,outerSize:u,dimSize:i,outputShape:a}}function _re(r){try{return r.map(e=>zm(e))}catch(e){throw new Error(`Failedtodecodeencodedstringbytesintoutf-8,error:${e}`)}}function Cre(r){return r.map(e=>_u(e))}var r$={};Ge(r$,{nonMaxSuppressionV3Impl:()=>eT,nonMaxSuppressionV4Impl:()=>tT,nonMaxSuppressionV5Impl:()=>rT,whereImpl:()=>Xx});var Sre=1e-7,Nre=1e-4,Fu=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}},ii=class{refCount(e){return ls("refCount")}incRef(e){return ls("incRef")}timerAvailable(){return!0}time(e){return ls("time")}read(e){return ls("read")}readSync(e){return ls("readSync")}numDataIds(){return ls("numDataIds")}disposeData(e,t){return ls("disposeData")}write(e,t,n){return ls("write")}move(e,t,n,o,s){return ls("move")}memory(){return ls("memory")}floatPrecision(){return ls("floatPrecision")}epsilon(){return this.floatPrecision()===32?Sre:Nre}dispose(){return ls("dispose")}};function ls(r){throw new Error(`'${r}'notyetimplementedornotfoundintheregistry.Thiskernelmaynotbesupportedbythetfjsbackendyouhavechosen`)}function n$(r){let e=r.length,t=0,n=0;for(;e>0;)n=Math.random()*e|0,e--,t=r[e],r[e]=r[n],r[n]=t}function Are(r,e){if(r.length!==e.length)throw new Error(`ArraysizesmustmatchtobeshuffledtogetherFirstarraylengthwas${r.length}Secondarraylengthwas${e.length}`);let t=r.length,n,o,s=0;for(;t>0;)s=Math.random()*t|0,t--,n=r[t],o=e[t],r[t]=r[s],e[t]=e[s],r[s]=n,e[s]=o}function ef(r,e,t){return Math.max(r,Math.min(e,t))}function Dre(r){return r%2==0?r:r+1}function Ere(r){let e=0;for(let t=0;t<r.length;t++)e+=r[t];return e}function Mre(r,e){let t=Math.random();return e*t+(1-t)*r}function Fre(r,e){let t=0;for(let n=0;n<r.length;n++){let o=Number(r[n])-Number(e[n]);t+=o*o}return t}function R(r,e){if(!r)throw new Error(typeof e=="string"?e:e())}function Er(r,e,t=""){R(no(r,e),()=>t+`Shapes${r}and${e}mustmatch`)}function li(r){R(r!=null,()=>"The input to the tensor constructor must be a non-null value.")}function nl(r,e=[],t=!1){if(e==null&&(e=[]),Array.isArray(r)||oo(r)&&!t)for(let n=0;n<r.length;++n)nl(r[n],e,t);else e.push(r);return e}function Nt(r){if(r.length===0)return 1;let e=r[0];for(let t=1;t<r.length;t++)e*=r[t];return e}function Rre(r){return r.length===0}function no(r,e){if(r===e)return!0;if(r==null||e==null||r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function xt(r){return r%1==0}function Lre(r){if(Math.tanh!=null)return Math.tanh(r);if(r===Infinity)return 1;if(r===-Infinity)return-1;{let e=Math.exp(2*r);return(e-1)/(e+1)}}function $re(r){let e=Math.ceil(Math.sqrt(r));return[e,Math.ceil(r/e)]}function Pre(r){let e=new Uint32Array(r);for(let t=0;t<r;++t)e[t]=t;return n$(e),e}function sc(r,e){return e<=r.length?r:r+" ".repeat(e-r.length)}function Bre(r,e=n=>0,t){return new Promise((n,o)=>{let s=0,i=()=>{if(r()){n();return}s++;let a=e(s);if(t!=null&&s>=t){o();return}setTimeout(i,a)};i()})}function Ore(r,e){let t=1,n=-1;for(let s=0;s<r.length;++s)if(r[s]>=0)t*=r[s];else if(r[s]===-1){if(n!==-1)throw Error(`Shapescanonlyhave1implicitsize.Found-1atdim${n}anddim${s}`);n=s}else if(r[s]<0)throw Error(`Shapescannotbe<0.Found${r[s]}atdim${s}`);if(n===-1){if(e>0&&e!==t)throw Error(`Size(${e})
`;return m[m.length-1]=" "+m[m.length-1]+"]"+(s?"":d),m}function jh(r){let e=[];for(let t=0;t<r.length;t+=2)e.push([r[t],r[t+1]]);return e}var bt=class{constructor(e,t,n){if(this.dtype=t,this.shape=e.slice(),this.size=Nt(e),n!=null){let o=n.length;R(o===this.size,()=>`Lengthofvalues'${o}'doesnotmatchthesizeinferredbytheshape'${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||tC(t,this.size),this.strides=ui(e)}set(e,...t){t.length===0&&(t=[0]),R(t.length===this.rank,()=>`Thenumberofprovidedcoordinates(${t.length})mustmatchtherank(${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let o of e){if(o<0||o>=this.shape[t]){let s=`Requestedoutofrangeelementat${e}.Buffershape=${this.shape}`;throw new Error(s)}t++}let n=e[e.length-1];for(let o=0;o<e.length-1;++o)n+=this.strides[o]*e[o];return this.values[n]}locToIndex(e){if(this.rank===0)return 0;if(this.rank===1)return e[0];let t=e[e.length-1];for(let n=0;n<e.length-1;++n)t+=this.strides[n]*e[n];return t}indexToLoc(e){if(this.rank===0)return[];if(this.rank===1)return[e];let t=new Array(this.shape.length);for(let n=0;n<t.length-1;++n)t[n]=Math.floor(e/this.strides[n]),e-=t[n]*this.strides[n];return t[t.length-1]=e,t}get rank(){return this.shape.length}toTensor(){return wi().makeTensor(this.values,this.shape,this.dtype)}},wi=null,Gf=null,one=null;function w$(r){wi=r}function _$(r){Gf=r}function C$(r){one=r}var rt=class{constructor(e,t,n,o){this.kept=!1,this.isDisposedInternal=!1,this.shape=e.slice(),this.dtype=t||"float32",this.size=Nt(e),this.strides=ui(e),this.dataId=n,this.id=o,this.rankType=this.rank<5?this.rank.toString():"higher"}get rank(){return this.shape.length}async buffer(){let e=await this.data();return Gf.buffer(this.shape,this.dtype,e)}bufferSync(){return Gf.buffer(this.shape,this.dtype,this.dataSync())}async array(){let e=await this.data();return ic(this.shape,e,this.dtype==="complex64")}arraySync(){return ic(this.shape,this.dataSync(),this.dtype==="complex64")}async data(){this.throwIfDisposed();let e=wi().read(this.dataId);if(this.dtype==="string"){let t=await e;try{return t.map(n=>zf(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}dataSync(){this.throwIfDisposed();let e=wi().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>zf(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 wi().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(wi().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Gf.print(this,e)}clone(){return this.throwIfDisposed(),Gf.clone(this)}toString(e=!1){let t=this.dataSync();return I$(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Gf.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),wi().makeVariable(this,e,t,n)}};Object.defineProperty(rt,Symbol.hasInstance,{value:r=>!!r&&r.data!=null&&r.dataSync!=null&&r.throwIfDisposed!=null});function z(){return Bh("Tensor",()=>rt)}z();var Xu=class extends rt{constructor(e,t,n,o){super(e.shape,e.dtype,e.dataId,o);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtypeofthenewvalue(${e.dtype})andpreviousvalue(${this.dtype})mustmatch`);if(!no(e.shape,this.shape))throw new Error(`shapeofthenewvalue(${e.shape})andpreviousvalue(${this.shape})mustmatch`);wi().disposeTensor(this),this.dataId=e.dataId,wi().incRef(this,null)}dispose(){wi().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Xu,Symbol.hasInstance,{value:r=>r instanceof rt&&r.as
ManifestJSONhasweightswithnames:${a.join(", ")}.`)}let l=o.reduce((f,d,h)=>(d&&f.push(h),f),[]),u=[];l.forEach(f=>{e[f].paths.forEach(d=>{let h=t+(t.endsWith("/")?"":"/")+d;u.push(h)})});let p=await r(u),c={},m=0;return l.forEach(f=>{let d=e[f].paths.length,h=0;for(let k=0;k<d;k++)h+=p[m+k].byteLength;let g=new ArrayBuffer(h),b=new Uint8Array(g),y=0;for(let k=0;k<d;k++){let I=new Uint8Array(p[m+k]);b.set(I,y),y+=I.byteLength}s[f].forEach(k=>{let I=g.slice(k.groupOffset,k.groupOffset+k.sizeBytes),S=pT(I,[k.manifestEntry]);for(let N in S)c[N]=S[N]}),m+=d}),c}}var $ne="application/octet-stream",Pne="application/json",mT=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?(R(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=X().platform.fetch,R(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&R(e.length===2,()=>`URLpathsforhttpmusthavealengthof2,(actuallengthis${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}],o={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(o.signature=e.signature),e.userDefinedMetadata!=null&&(o.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(o.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(o)],{type:Pne}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:$ne}),"model.weights.bin");let s=await this.fetch(this.path,t);if(s.ok)return{modelArtifactsInfo:_i(e),responses:[s]};throw new Error(`BrowserHTTPRequest.save()failedduetoHTTPresponsestatus${s.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Requestto${this.path}failedwithstatuscode${e.status}.PleaseverifythisURLpointstothemodelJSONofthemodeltoload.`);let t;try{t=await e.json()}catch(d){let h=`FailedtoparsemodelJSONofresponsefrom${this.path}.`;throw this.path.endsWith(".pb")?h+=" 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.":h+=" Please make sure the server is serving valid JSON for this request.",new Error(h)}let n=t.modelTopology,o=t.weightsManifest,s=t.generatedBy,i=t.convertedBy,a=t.format,l=t.signature,u=t.userDefinedMetadata;if(n==null&&o==null)throw new Error(`TheJSONfromHTTPpath${this.path}containsneithermodeltopologyormanifestforweights.`);let p,c;o!=null&&([p,c]=await this.loadWeights(o));let m={modelTopology:n,weightSpecs:p,weightData:c,generatedBy:s,convertedBy:i,format:a};l!=null&&(m.signature=l),u!=null&&(m.userDefinedMetadata=u);let f=t.modelInitializer;return f&&(m.modelInitializer=f),m}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,o]=Bne(t),s=this.weightPathPrefix||n,i=[];for(let p of e)i.push(...p.weights);let a=[],l=[];for(let p of e)for(let c of p.paths)this.weightUrlConverter!=null?l.push(this.weightUrlConverter(c)):a.push(s+c+o);this.weightUrlConverter&&a.push(...await Promise.all(l));let u=await RC(a,{requestInit
withdtype${s.dtype}.`)}),t.length===1)return jo(t[0]);let n=t,o={axis:e};return M.runKernel(pi,n,o)}var mt=A({concat_:Aoe});function Doe(r){let t={x:v(r,"x","sigmoid")};return M.runKernel(wa,t)}var dn=A({sigmoid_:Doe});function Eoe(r,e,t){let n=v(r,"x","slice","string_or_numeric");if(n.rank===0)throw new Error("Slicing scalar is not possible");let o={x:n},s={begin:e,size:t};return M.runKernel(Ia,o,s)}var Ke=A({slice_:Eoe});function Moe(r){let t={x:v(r,"x","tanh")};return M.runKernel(Aa,t)}var Fa=A({tanh_:Moe});function Foe(r,e,t,n,o,s){let i=v(r,"forgetBias","basicLSTMCell"),a=v(e,"lstmKernel","basicLSTMCell"),l=v(t,"lstmBias","basicLSTMCell"),u=v(n,"data","basicLSTMCell"),p=v(o,"c","basicLSTMCell"),c=v(s,"h","basicLSTMCell"),m=mt([u,c],1),f=tt(m,a),d=ne(f,l),h=d.shape[0],g=d.shape[1]/4,b=[h,g],y=Ke(d,[0,0],b),T=Ke(d,[0,g],b),k=Ke(d,[0,g*2],b),I=Ke(d,[0,g*3],b),S=ne(G(dn(y),Fa(T)),G(p,dn(ne(i,k)))),N=G(Fa(S),dn(I));return[S,N]}var Roe=A({basicLSTMCell_:Foe});function Loe(r,e,t){let n=v(r,"x","batchToSpaceND"),o=e.reduce((a,l)=>a*l);R(n.rank>=1+e.length,()=>`inputrankis${n.rank}butshouldbe>thanblockShape.length${e.length}`),R(t.length===e.length,()=>`crops.lengthis${t.length}butshouldbeequaltoblockShape.length${e.length}`),R(n.shape[0]%o==0,()=>`inputtensorbatchis${n.shape[0]}butisnotdivisiblebytheproductoftheelementsofblockShape${e.join(" * ")}===${o}`);let s={x:n},i={blockShape:e,crops:t};return M.runKernel($u,s,i)}var Vl=A({batchToSpaceND_:Loe});function IP(r){let e;return r.rank===0||r.rank===1?e=K(r,[1,1,1,r.size]):r.rank===2?e=K(r,[1,1,r.shape[0],r.shape[1]]):r.rank===3?e=K(r,[1,r.shape[0],r.shape[1],r.shape[2]]):e=r,e}function $oe(r,e,t,n,o,s){s==null&&(s=.001);let i=v(r,"x","batchNorm"),a=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;o!=null&&(u=v(o,"scale","batchNorm"));let p;n!=null&&(p=v(n,"offset","batchNorm")),R(a.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),R(p==null||a.rank===p.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),R(u==null||a.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let m={x:IP(i),scale:u,offset:p,mean:a,variance:l},f={varianceEpsilon:s},d=M.runKernel(ta,m,f);return K(d,i.shape)}var fs=A({batchNorm_:$oe});function Poe(r,e,t,n,o,s){let i=v(r,"x","batchNorm"),a=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;o!=null&&(u=v(o,"scale","batchNorm"));let p;return n!=null&&(p=v(n,"offset","batchNorm")),R(i.rank===2,()=>`ErrorinbatchNorm2D:xmustberank2butgotrank${i.rank}.`),R(a.rank===2||a.rank===1,()=>`ErrorinbatchNorm2D:meanmustberank2orrank1butgotrank${a.rank}.`),R(l.rank===2||l.rank===1,()=>`ErrorinbatchNorm2D:variancemustberank2orrank1butgotrank${l.rank}.`),u!=null&&R(u.rank===2||u.rank===1,()=>`ErrorinbatchNorm2D:scalemustberank2orrank1butgotrank${u.rank}.`),p!=null&&R(p.rank===2||p.rank===1,()=>`ErrorinbatchNorm2D:offsetmustberank2orrank1butgotrank${p.rank}.`),fs(i,a,l,p,u,s)}var VC=A({batchNorm2d_:Poe});function Boe(r,e,t,n,o,s){let i=v(r,"x","batchNorm"),a=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;o!=null&&(u=v(o,"scale","batchNorm"));let p;return n!=null&&(p=v(n,"offset","batchNorm")),R(i.rank===3,()=>`ErrorinbatchNorm3D:xmustberank3butgotrank${i.rank}.`),R(a.rank===3||a.rank===1,()=>`ErrorinbatchNorm3D:meanmustberank3orrank1butgotrank${a.rank}.`),R(l.rank===3||l.rank===1,()=>`ErrorinbatchNorm3D:variancemustberank3orrank1butgotrank${l.rank}.`),u!=null&&R(u.rank===3||u.rank===1,()=>`ErrorinbatchNorm3D:scalemustberank3orrank1butgotrank${u.rank}.`),p!=null&&R(p.rank===3||p.rank===1,()=>`ErrorinbatchNorm3D:offsetmustberank3orrank1butgotrank${p.rank}.`),fs(i,a,l,p,u,s)}var UC=A({batchNorm3d_:Boe});function Ooe(r,e,t,n,o,s){let i=v(r,"x","batchNorm"),a=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;o!=null&&(u=v(o,"scale","batchNorm"
rank${s.rank}.`),R(xt(e),()=>`ErrorinlocalResponseNormalization:depthRadiusmustbeanintegerbutgotdepthRadius${e}.`);let i=s,a=!1;s.rank===3&&(a=!0,i=K(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:e,bias:t,alpha:n,beta:o},p=M.runKernel(Gu,l,u);return a?K(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var dg=A({localResponseNormalization_:Lse});function $se(r){let t={x:v(r,"x","log")};return M.runKernel($o,t)}var Kr=A({log_:$se});function Pse(r){let t={x:v(r,"x","log1p")};return M.runKernel(vl,t)}var Dc=A({log1p_:Pse});function wT(r,e){R(rf(r),()=>"The f passed in variableGrads(f) must be a function"),R(e==null||Array.isArray(e)&&e.every(u=>u instanceof Xu),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let t=e!=null;if(!t){e=[];for(let u in M.registeredVariables)e.push(M.registeredVariables[u])}let n=t?e.filter(u=>!u.trainable):null,o=e.length;e=e.filter(u=>u.trainable),R(e.length>0,()=>`variableGrads()expectsatleastoneoftheinputvariablestobetrainable,butnoneofthe${o}variablesistrainable.`);let s=!0,{value:i,grads:a}=M.gradients(r,e,null,s);R(a.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),R(i.rank===0,()=>`ThefpassedinvariableGrads(f)mustreturnascalar,butitreturnedarank-${i.rank}tensor`);let l={};return e.forEach((u,p)=>{a[p]!=null&&(l[u.name]=a[p])}),n!=null&&n.forEach(u=>l[u.name]=null),{value:i,grads:l}}function Gn(r){return M.customGrad(r)}function Bse(r){let t={x:v(r,"x","neg")};return M.runKernel(ca,t)}var st=A({neg_:Bse});function Ose(r){let t={x:v(r,"x","softplus")};return M.runKernel(Rl,t)}var ds=A({softplus_:Ose});function zse(r){let e=v(r,"x","logSigmoid");return Gn(n=>({value:st(ds(st(n))),gradFunc:i=>G(i,dn(st(n)))}))(e)}var oS=A({logSigmoid_:zse});function Gse(r,e=null,t=!1){let o={x:v(r,"x","max")},s={reductionIndices:e,keepDims:t};return M.runKernel(aa,o,s)}var nn=A({max_:Gse});function Wse(r,e){let t=v(r,"a","sub"),n=v(e,"b","sub");[t,n]=et(t,n);let o={a:t,b:n};return M.runKernel(Wo,o)}var ge=A({sub_:Wse});function Kse(r,e=null,t=!1){let n=v(r,"x","sum");n.dtype==="bool"&&(n=ue(n,"int32"));let o={x:n},s={axis:e,keepDims:t};return M.runKernel(Ca,o,s)}var Te=A({sum_:Kse});function Vse(r,e=-1){let t=v(r,"logits","logSoftmax");if(e===-1&&(e=t.rank-1),e!==t.rank-1)throw Error(`LogSoftmaxalonganon-lastdimensionisnotyetsupported.Logitswasrank${t.rank}andaxiswas${e}`);return Gn((o,s)=>{let i=!0,a=nn(o,e,!0),l=ge(o,a),u=ge(ue(l,"float32"),Kr(Te(Fr(l),e,i)));return s([u]),{value:u,gradFunc:(c,m)=>{let[f]=m,d=!0,h=Fr(f);return ge(c,G(Te(c,e,d),h))}}})(t)}var Ec=A({logSoftmax_:Vse});function sS(r,e){for(let t=0;t<r.length;++t)if(r[r.length-t-1]!==e-1-t)return!1;return!0}function vP(r,e,t){let n=r.length+e.length,o=[],s=0,i=0;for(let a=0;a<n;a++)t.indexOf(a)===-1?o.push(r[s++]):o.push(e[i++]);return o}function aS(r,e){let t=[],n=r.length;for(let s=0;s<n;s++)e.indexOf(s)===-1&&t.push(r[s]);let o=e.map(s=>r[s]);return[t,o]}function hs(r,e){let t=e.map(n=>1);return vP(r,t,e)}function Use(r,e,t){R(sS(e,t),()=>`${r}supportsonlyinner-mostaxesfornow.Gotaxes${e}andrank-${t}input.`)}function iS(r,e){if(sS(r,e))return null;let t=[];for(let n=0;n<e;++n)r.indexOf(n)===-1&&t.push(n);return r.forEach(n=>t.push(n)),t}function hg(r){return r.map((e,t)=>[t,e]).sort((e,t)=>e[1]-t[1]).map(e=>e[0])}function jse(r,e){let t=[];for(let n=e-r;n<e;++n)t.push(n);return t}function Hse(r,e=null,t=!1){let n=v(r,"x","logSumExp"),o=Pr(e,n.shape),s=nn(n,o,!0),i=ge(n,s),a=Fr(i),l=Te(a,o),u=Kr(l),p=ne(K(s,u.shape),u);if(t){let c=hs(p.shape,o);return K(p,c)}return p}var gg=A({logSumExp_:Hse});function qse(r,e){let t=v(r,"a","logicalAnd","bool"),n=v(e,"b","logicalAnd","bool");qe(t.shape,n.shape);let o={a:t,b:n};return M.runKernel(wl,o)}var Xr=A({logicalAnd_:qse});function Xse(r){let t={x:v(r,"x","logicalNot","bool")};return M.runKernel(uc,t)}var ql
${o.shape}`);if(s.rank!==1)throw new Error(`ValuesshouldbeTensor1Dbutreceivedshape${s.shape}`);if(i.rank!==1)throw new Error(`DenseshapeshouldbeTensor1Dbutreceivedshape${i.shape}`);if(a.rank!==0)throw new Error(`Defaultvalueshouldbeascalarbutreceivedshape${a.shape}`);let l={indices:o,values:s,denseShape:i,defaultValue:a},u=M.runKernel(Af,l);return{outputIndices:u[0],outputValues:u[1],emptyRowIndicator:u[2],reverseIndexMap:u[3]}}var ZP=A({sparseFillEmptyRows_:Fle});function Rle(r,e,t){let n=v(r,"inputIndices","sparseReshape"),o=v(e,"inputShape","sparseReshape"),s=v(t,"newShape","sparseReshape");if(n.rank!==2)throw new Error(`InputindicesshouldbeTensor2Dbutreceivedshape
${n.shape}`);if(o.rank!==1)throw new Error(`InputshapeshouldbeTensor1Dbutreceivedshape${o.shape}`);if(s.rank!==1)throw new Error(`NewshapeshouldbeTensor1Dbutreceivedshape${s.shape}`);let i={inputIndices:n,inputShape:o,newShape:s},a=M.runKernel(Df,i);return{outputIndices:a[0],outputShape:a[1]}}var JP=A({sparseReshape_:Rle});function Lle(r,e,t){let n=v(r,"data","sparseSegmentMean"),o=v(e,"indices","sparseSegmentMean"),s=v(t,"segmentIds","sparseSegmentMean");if(n.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.rank!==1)throw new Error(`IndicesshouldbeTensor1Dbutreceivedshape
${o.shape}`);if(s.rank!==1)throw new Error(`SegmentidsshouldbeTensor1Dbutreceivedshape
${s.shape}`);let i={data:n,indices:o,segmentIds:s};return M.runKernel(Ef,i)}var QP=A({sparseSegmentMean_:Lle});function $le(r,e,t){let n=v(r,"data","sparseSegmentSum"),o=v(e,"indices","sparseSegmentSum"),s=v(t,"segmentIds","sparseSegmentSum");if(n.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.rank!==1)throw new Error(`IndicesshouldbeTensor1Dbutreceivedshape
${o.shape}`);if(s.rank!==1)throw new Error(`SegmentidsshouldbeTensor1Dbutreceivedshape
${s.shape}`);let i={data:n,indices:o,segmentIds:s};return M.runKernel(Mf,i)}var eB=A({sparseSegmentSum_:$le});function Ple(r,e,t,n,o,s,i,a){let l=v(r,"data","stringNGrams","string");if(l.dtype!=="string")throw new Error("Data must be of datatype string");if(l.shape.length!==1)throw new Error(`Datamustbeavector,saw:${l.shape}`);let u=v(e,"dataSplits","stringNGrams");if(u.dtype!=="int32")throw new Error("Data splits must be of datatype int32");let p={separator:t,nGramWidths:n,leftPad:o,rightPad:s,padWidth:i,preserveShortSequences:a},c={data:l,dataSplits:u},m=M.runKernel(Rf,c,p);return{nGrams:m[0],nGramsSplits:m[1]}}var tB=A({stringNGrams_:Ple});function Ble(r,e,t=!0){let n=v(r,"input","stringSplit","string"),o=v(e,"delimiter","stringSplit","string");if(n.rank!==1)throw new Error(`InputshouldbeTensor1Dbutreceivedshape${n.shape}`);if(o.rank!==0)throw new Error(`Delimitershouldbeascalarbutreceivedshape${o.shape}`);let s={skipEmpty:t},i={input:n,delimiter:o},a=M.runKernel(Lf,i,s);return{indices:a[0],values:a[1],shape:a[2]}}var rB=A({stringSplit_:Ble});function Ole(r,e){let t=v(r,"input","stringToHashBucketFast","string"),n={numBuckets:e};if(e<=0)throw new Error("Number of buckets must be at least 1");let o={input:t};return M.runKernel($f,o,n)}var nB=A({stringToHashBucketFast_:Ole});var Si={flipLeftRight:LP,resizeNearestNeighbor:BT,resizeBilinear:PT,rotateWithOffset:$P,cropAndResize:RP,nonMaxSuppression:PP,nonMaxSuppressionAsync:zP,nonMaxSuppressionWithScore:GP,nonMaxSuppressionWithScoreAsync:WP,nonMaxSuppressionPadded:KP,nonMaxSuppressionPaddedAsync:VP,threshold:UP,transform:jP},oB={bandPart:HP,gramSchmidt:qP,qr:YP};var Ag={sparseFillEmptyRows:ZP,sparseReshape:JP,sparseSegmentMean:QP,sparseSegmentSum:eB},OT={stringNGrams:tB,stringSplit:rB,stringToHashBucketFast:nB};var wn=class extends kT{minimize(e,t=!1,n){let{value:o,grads:s}=this.computeGradients(e,n);if(n!=null){let i=n.map(a=>({name:a.name,tensor:s[a.name]}));this.applyGradients(i)}else this.applyGradients(s);return Be(s),t?o:(o.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return wT(e,t)}dispose(){this.iterations_!=null&&Be(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:be(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights()isnotimplementedforthisoptimizerclass${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(wn,Symbol.hasInstance,{value:r=>r.minimize!=null&&r.computeGradients!=null&&r.applyGradients!=null});var jc=class extends wn{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=M.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(n=>n.name):Object.keys(e)).forEach((n,o)=>{let s=M.registeredVariables[n],i=!1;this.accumulatedGrads[o]==null&&(this.accumulatedGrads[o]={originalName:`${n}/accum_grad`,variable:j(()=>Me(s).variable(i))}),this.accumulatedUpdates[o]==null&&(this.accumulatedUpdates[o]={originalName:`${n}/accum_var`,variable:j(()=>Me(s).variable(i))});let a=Array.isArray(e)?e[o].tensor:e[n];if(a==null)return;let l=this.accumulatedGrads[o].variable,u=this.accumulatedUpdates[o].variable;j(()=>{let p=ne(G(l,this.rho),G(je(a),1-this.rho)),c=G(he(Lt(ne(u,this.epsilon)),Lt(ne(l,this.epsilon))),a),m=ne(G(u,this.rho),G(je(c),1-this.rho));l.assign(p),u.assign(m);let f=ne(G(c,-this.learningRate),s);s.assign(f)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Be(this.accumulatedGrads.map(e=>e.variable)),Be(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalNa
2.Thecustom${n}isdefinedinJavaScript,butisnotregisteredproperlywithtf.serialization.registerClass().`);return i}else{let s=r;if(s.className==null||s.config==null)throw new U(`${n}:Improperconfigformat:${JSON.stringify(s)}.
'className'and'config'mustset.`);let i=s.className,a,l;if(i in t?[a,l]=t[i]:i in ks?[a,l]=ks.className:i in e&&([a,l]=e[i]),a==null)throw new U(`Unknown${n}:${i}.Thismaybeduetooneofthefollowingreasons:
2.Thecustom${n}isdefinedinJavaScript,butisnotregisteredproperlywithtf.serialization.registerClass().`);if(l!=null){let u={};for(let f of Object.keys(ks))u[f]=ks[f];for(let f of Object.keys(t))u[f]=t[f];let p=s.config;p.customObjects=u;let c={...ks};for(let f of Object.keys(t))ks[f]=t[f];AS(s.config);let m=l(a,s.config,t,o);return ks={...c},m}else{let u={...ks};for(let c of Object.keys(t))ks[c]=t[c];let p=new a(s.config);return ks={...u},p}}}function Fue(r,e){return r<e?-1:r>e?1:0}function Mg(r,e){return-1*Fue(r,e)}function Is(r){if(r==null)return r;let e=[];for(let t of r)e.indexOf(t)===-1&&e.push(t);return e}function rz(r){if(r==null)throw new U(`Invalidvalueinobj:${JSON.stringify(r)}`);for(let e in r)if(r.hasOwnProperty(e))return!1;return!0}function Ai(r,e,t){if(t!=null&&r.indexOf(t)<0)throw new U(`${t}isnotavalid${e}.Validvaluesare${r}ornull/undefined.`)}function KT(r,e,t=0,n=Infinity){return Yo(t>=0),Yo(n>=t),Array.isArray(r)&&r.length>=t&&r.length<=n&&r.every(o=>typeof o===e)}function kr(r,e){Array.isArray(r)?(x.assert(r.length>0,()=>`${e}isunexpectedlyanemptyarray.`),r.forEach((t,n)=>kr(t,`element${n+1}of${e}`))):x.assert(Number.isInteger(r)&&r>0,()=>`Expected${e}tobeapositiveinteger,butgot${nz(r)}.`)}function nz(r){return r===null?"null":Array.isArray(r)?"["+r.map(e=>nz(e)).join(",")+"]":typeof r=="string"?`"${r}"`:`${r}`}function oz(r,e){let t=x.now(),n;return(...s)=>{let i=x.now();return i-t<e||(t=i,n=r(...s)),n}}function VT(r){return r==="relu"?"relu":r==="linear"?"linear":r==="elu"?"elu":null}function DS(r,e){return j(()=>Lt(Te(G(r,r),e,!0)))}var od=class extends oe.Serializable{getConfig(){return{}}},Fg=class extends od{constructor(e){super();this.defaultMaxValue=2;this.defaultAxis=0;this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return j(()=>{let t=DS(e,this.axis),n=Gr(t,0,this.maxValue);return G(e,he(n,ne(Lr(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};Fg.className="MaxNorm";oe.registerClass(Fg);var Rg=class extends od{constructor(e){super();this.defaultAxis=0;this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return j(()=>he(e,ne(Lr(),DS(e,this.axis))))}getConfig(){return{axis:this.axis}}};Rg.className="UnitNorm";oe.registerClass(Rg);var Lg=class extends od{apply(e){return hn(e)}};Lg.className="NonNeg";oe.registerClass(Lg);var $g=class extends od{constructor(e){super();this.defaultMinValue=0;this.defaultMaxValue=1;this.defaultRate=1;this.defaultAxis=0;this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return j(()=>{let t=DS(e,this.axis),n=ne(G(this.rate,Gr(t,this.minValue,this.maxValue)),G(1-this.rate,t));return G(e,he(n,ne(Lr(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};$g.className="MinMaxNorm";oe.registerClass($g);var sz={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function ar(r){return nd(r)}function az(r,e={}){return Ni(r,oe.SerializationMap.getMap().classNameMap,e,"constraint")}function ir(r){if(r==null)return null;if(typeof r=="string"){let t={className:r in sz?sz[r]:r,config:{}};return az(t)}else return r instanceof od?r:az(r)}function Rue(r){return new Fg(r)}function Lue(r){return new Rg(r)}function $ue(){return new Lg}function Pue(r){return new $g(r)}var Sz={};Ge(Sz,{constant:()=>Uue,glorotNormal:()=>Jue,glorotUniform:()=>Zue,heNormal:()=>Que,heUniform:()=>epe,identity:()=>Xue,leCunNormal:()=>tpe,leCunUniform:()=>rpe,ones:()=>Vue,orthogonal:()=>npe,randomNormal:()=>Hue,randomUniform:()=>jue,truncatedNormal:()=>que,varianceScaling:()=>Yue,zeros:()=>Kue});var lz=["channelsFirst","channelsLast"],uz=["nearest","bilinear"],pz=["valid","same","causal"],cz=["max","avg"],mz=["sum","mul","concat","ave"];var sd=new Map;function tr(r){Ai(lz,"DataFormat",r)}function fz(r){Ai(uz,"Interpolation
becausethevaluedtypeis${t.dtype},butTensorArraydtypeis${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),wo(this.elementShape,t.shape,`TensorArray${this.name}:CouldnotwritetoTensorArrayindex${e}.`),n.read)throw new Error(`TensorArray${this.name}:CouldnotwritetoTensorArrayindex${e},becauseithasalreadybeenread.`);if(n.written)throw new Error(`TensorArray${this.name}:CouldnotwritetoTensorArrayindex${e},becauseithasalreadybeenwritten.`);n.tensor=t,er(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray${this.name}:couldnotwritemultipletensors,becausetheindexsize:${e.length}isnotthesameastensorssize:${t.length}.`);e.forEach((n,o)=>this.write(n,t[o]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}butgatherrequesteddtype${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let o=0;o<this.size();o++)e.push(o)}if(e.length===0)return mn([],[0].concat(this.elementShape));let n=this.readMany(e);return wo(this.elementShape,n[0].shape,"TensorArray shape mismatch: "),xr(n,0)}concat(e){if(!!e&&e!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}butconcatrequesteddtype${e}`);if(this.size()===0)return mn([],[0].concat(this.elementShape));let t=[];for(let o=0;o<this.size();o++)t.push(o);let n=this.readMany(t);return wo(this.elementShape,n[0].shape,`TensorArrayshapemismatch:tensorarrayshape(${this.elementShape})vsfirsttensorshape(${n[0].shape})`),mt(n,0)}scatter(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}buttensorhasdtype${t.dtype}`);if(e.length!==t.shape[0])throw new Error(`Expectedlen(indices)==tensor.shape[0],butsaw:${e.length}vs.${t.shape[0]}`);let n=Math.max(...e);if(!this.dynamicSize&&n>=this.maxSize)throw new Error(`Maxindexmustbe<arraysize(${n}vs.${this.maxSize})`);this.writeMany(e,Vr(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}buttensorhasdtype${t.dtype}`);let n=0,o=e.map(l=>(n+=l,n));if(n!==t.shape[0])throw new Error(`Expectedsumoflengthstobeequalto
tensor.shape[0],butsumoflengthsis
${n},andtensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray'ssizeisnotequaltothesizeoflengths(${this.maxSize}vs.${e.length}),andtheTensorArrayisnotmarkedasdynamicallyresizeable`);let s=n===0?0:t.size/n,i=[];j(()=>{t=K(t,[1,n,s]);for(let l=0;l<e.length;++l){let u=l===0?0:o[l-1],p=[0,u,0],c=[1,e[l],s];i[l]=K(Ke(t,p,c),this.elementShape)}return i});let a=[];for(let l=0;l<e.length;l++)a[l]=l;this.writeMany(a,i)}};var im=class{constructor(e,t,n,o=-1){this.tensors=e;this.elementShape=t;this.elementDtype=n;e!=null&&e.forEach(s=>{if(n!==s.dtype)throw new Error(`Invaliddatatypes;opelements${n},butlistelements${s.dtype}`);wo(t,s.shape,"TensorList shape mismatch: "),er(s)}),this.idTensor=be(0),this.maxNumElements=o,er(this.idTensor)}get id(){return this.idTensor.id}copy(){return new im([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t},butlistelements${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operationexpectedalistwith${n}elementsbutgotalistwith${this.tensors.length}elements.`);wo(e,this.elementShape,"TensorList shape mismatch: ");let o=Dd(this.elementShape,this.tensors,e);return j(()=>{let s=this.tensors.map(i=>K(i,o));return xr(s,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t},butlistelements${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=Dd(this.elementShape,this.tensors,e),o=this.tensors.pop();return wo(o.shape,e,"TensorList shape mismatch: "),K(o,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${e.dtype},butlistelements${this.elementDtype}`);if(wo(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");er(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResizeexpectssizetobenon-negative.Got:${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResizeinputsize${e}isgreatermaxNumElement${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${n},butlistelements${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Tryingtoaccesselement${e}inalistwith${this.tensors.length}elements.`);if(this.tensors[e]==null)throw new Error(`elementatindex${e}isnull.`);wo(this.tensors[e].shape,t,"TensorList shape mismatch: ");let o=Dd(this.elementShape,this.tensors,t);return K(this.tensors[e],o)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t.dtype},butlistelements${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Tryingtosetelement${e}inalistwithmax${this.maxNumElements}elements.`);wo(this.elementShape,t.shape,"TensorList shape mismatch: "),er(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t},butlistelements${this.elementDtype}`);wo(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let o=Dd(this.elementShape,this.tensors,n);return e.length===0?mn([],[0].concat(o)):j(()=>{let s=e.map(i=>K(this.tensors[i],o));return xr(s,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorListdtypeis${this.elementDtype}butconcatrequesteddtype${e}`);wo(this.elementShape,t,"TensorList shape mismatch: ");let n=Dd(this.elementShape,this.tensors,t);return this.size()===0?mn([],[0].concat(n)):j(()=>{let o=this.tensors.map(s=>K(s,n));return mt(o,0)})}};function k3(r,e,t){let n=r.dtype;if(r.shape.length<1)throw new Error(`Tens
${e}`);let o;return this.size===Infinity||this.size==null?o=this.size:t?o=Math.ceil(this.size/e):o=Math.floor(this.size/e),co(async()=>(await n.iterator()).columnMajorBatch(e,t,wfe),o)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,co(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,co(async()=>(await t.iterator()).filter(o=>j(()=>e(o))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return co(async()=>(await t.iterator()).map(n=>j(()=>e(n))),this.size)}mapAsync(e){let t=this;return co(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return co(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,co(async()=>{let o=sy(async()=>({value:await t.iterator(),done:!1}));return cG(o.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size<e||e===void 0||e<0)?n=0:n=null,co(async()=>(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);leto=this,s=_G.alea(t||x.now().toString());returnco(async()=>{leti=s.int32();returnn&&(i+=s.int32()),(awaito.iterator()).shuffle(e,i.toString())},this.size)}take(e){lett=this,n;returnthis.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,co(async()=>(awaitt.iterator()).take(e),n)}asynctoArray(){if(this.size===Infinity)thrownewError("Can not convert infinite data stream to array.");return(awaitthis.iterator()).toArray()}asynctoArrayForTest(){if(this.size===Infinity)thrownewError("Can not convert infinite data stream to array.");return(awaitthis.iterator()).toArrayForTest()}};Fi.MAX_BUFFER_SIZE=1e4;functionco(r,e=null){returnnewclassextendsFi{constructor(){super(...arguments);this.size=e}asynciterator(){returnr()}}}functionCG(r){returnco(async()=>hA(r),r.length)}functionSG(r){if(!hp(r))thrownewError("The argument to zip() must be an object or array.");lete;if(Array.isArray(r))for(lett=0;t<r.length;t++)e=e==null?r[t].size:Math.min(e,r[t].size);elseif(rinstanceofObject)for(lettinr)e=e==null?r[t].size:Math.min(e,r[t].size);returnco(async()=>{lett=awaitLk(r,n=>{if(ninstanceofFi)return{value:n.iterator(),recurse:!1};if(hp(n))return{value:null,recurse:!0};thrownewError("Leaves of the structure passed to zip() must be Datasets, not primitives.")});returnmG(t,lu.SHORTEST)},e)}functionwfe(r){if(r===null)returnnull;lete=r[0];returnlG(e)?{value:_fe(r),recurse:!1}:{value:null,recurse:!0}}function_fe(r){if(r.length===0)thrownewError("Can't make a batch of zero elements.");returnr[0]instanceofrt?xr(r):mn(r)}varay=classextendsFi{constructor(e){super();this.input=e}asynciterator(){return(awaitthis.input.iterator()).decodeUTF8().split(`
`).map(o=>(o.endsWith("\r")&&(o=o.slice(0,-1)),o))}};var Pk='"',iy=Symbol("out"),NG=Symbol("field"),Bk=Symbol("quote"),xA=Symbol("quoteafterquote"),AG=Symbol("quoteinquote"),ly=class extends Fi{constructor(e,t){super();this.input=e;this.hasHeader=!0;this.fullColumnNames=null;this.columnNamesValidated=!1;this.columnConfigs=null;this.configuredColumnsOnly=!1;this.delimiter=",";this.delimWhitespace=!1;this.base=new ay(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(x.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&x.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((o,s)=>(o[s]=o[s]+1||1,o),{}),n=Object.keys(t).filter(o=>t[o]>1);if(x.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let o of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(o)===-1)throw new Error('The key "'+o+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let t=await(await this.base.iterator()).next();if(t.done)throw new Error("No data was found for CSV parsing.");let n=t.value;return this.parseRow(n,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},o={};for(let s=0;s<this.fullColumnNames.length;s++){let i=this.fullColumnNames[s],a=this.columnConfigs?this.columnConfigs[i]:null;if(!(this.configuredColumnsOnly&&!a)){let l=t[s],u=null;if(l==="")if(a&&a.default!==void 0)u=a.default;else{if(a&&(a.required||a.isLabel))throw new Error(`Requiredcolumn${i}isemptyinthisline:${e}`);u=void 0}else{let p=Number(l);if(isNaN(p))a&&a.dtype==="bool"?u=this.getBoolean(l):u=l;else if(!a||!a.dtype)u=p;else switch(a.dtype){case"float32":u=p;break;case"int32":u=Math.floor(p);break;case"bool":u=this.getBoolean(l);break;default:u=p}}a&&a.isLabel?o[i]=u:n[i]=u}}return Object.keys(o).length===0?n:{xs:n,ys:o}}getBoolean(e){return e==="1"||e.toLowerCase()==="true"?1:0}parseRow(e,t=!0){let n=[],o=0,s=e.length,i=iy;for(let a=0;a<s;a++)switch(i){case iy:switch(e.charAt(a)){case Pk:o=a+1,i=Bk;break;case this.delimiter:if(o=a+1,this.delimiter===" "&&this.delimWhitespace)break;n.push(""),i=iy;break;default:i=NG,o=a;break}break;case NG:switch(e.charAt(a)){case this.delimiter:n.push(e.substring(o,a)),i=iy,o=a+1;break;default:}break;case Bk:switch(e.charAt(a)){case Pk:i=xA;break;default:}break;case xA:switch(e.charAt(a)){case this.delimiter:n.push(e.substring(o,a-1)),i=iy,o=a+1;break;case Pk:i=Bk;break;default:i=AG;break}break;case AG:switch(e.charAt(a)){case Pk:i=Bk;break;default:}break;default:}if(i===xA?n.push(e.substring(o,s-1)):n.push(e.substring(o)),t&&n.length!==this.fullColumnNames.length)throw new Error(`Invalidrowincsvfile.Shouldhave${this.fullColumnNames.length}elementsinarow,butgot${n}`);return n}};var uy=class extends _r{constructor(e){super();this.microphoneConfig=e;this.isClosed=!1;this.fftSize=e.fftSize||1024;let t=Math.log2(this.fftSize);if(this.fftSize<0||t<4||t>14||!Number.isInteger(t))throw new Error(`Inval
============================
Hithere\u{1F44B}.LookslikeyouarerunningTensorFlow.jsinNode.js.Tospeedthingsupdramatically,installournodebackend,whichbindstoTensorFlowC++,byrunningnpmi@tensorflow/tfjs-node,ornpmi@tensorflow/tfjs-node-gpuifyouhaveCUDA.Thencallrequire('@tensorflow/tfjs-node');(-gpusuffixforCUDA)atthestartofyourprogram.Visithttps://github.com/tensorflow/tfjs-node for more details.
============================`));let o={id:this.nextDataId()};return this.data.set(o,{values:e,dtype:n,refCount:1}),o}makeTensorInfo(e,t,n){let o;if(t==="string"&&n!=null&&n.length>0&&x.isString(n[0])){let s=n.map(i=>x.encodeString(i));o=this.write(s,e,t)}else o=this.write(n,e,t);return{dataId:o,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,o,s){this.data.set(e,{values:t,dtype:o,refCount:s})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let o=this.readSync(n.real.dataId),s=this.readSync(n.imag.dataId);return C.mergeRealAndImagArrays(o,s)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(o=>x.decodeString(o))}catch(o){throw new Error("Failed to decode encoded string bytes into utf-8")}return ve(e.shape,e.dtype,n)}makeOutput(e,t,n){let o=this.write(e,t,n);return Ma().makeTensorFromDataId(o,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=x.now();return e(),{kernelMs:x.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){ie([e],"where");let t=this.readSync(e.dataId);return Sfe(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}},hy=IA;hy.nextDataId=0;var gW={};Ge(gW,{addImpl:()=>wA,bincountImpl:()=>Ld,bincountReduceImpl:()=>Gk,ceilImpl:()=>_A,concatImpl:()=>Wk,equalImpl:()=>CA,expImpl:()=>NA,expm1Impl:()=>DA,floorImpl:()=>EA,gatherNdImpl:()=>Kk,gatherV2Impl:()=>Vk,greaterEqualImpl:()=>FA,greaterImpl:()=>MA,lessEqualImpl:()=>LA,lessImpl:()=>RA,linSpaceImpl:()=>Uk,logImpl:()=>$A,maxImpl:()=>jk,maximumImpl:()=>PA,minimumImpl:()=>BA,multiplyImpl:()=>gy,negImpl:()=>OA,notEqualImpl:()=>zA,prodImpl:()=>GA,rangeImpl:()=>Hk,rsqrtImpl:()=>WA,simpleAbsImpl:()=>vA,sliceImpl:()=>KA,sparseFillEmptyRowsImpl:()=>qk,sparseReshapeImpl:()=>Xk,sparseSegmentReductionImpl:()=>Pd,squaredDifferenceImpl:()=>VA,stridedSliceImpl:()=>Yk,stringNGramsImpl:()=>Zk,stringSplitImpl:()=>Jk,stringToHashBucketFastImpl:()=>Qk,subImpl:()=>UA,tileImpl:()=>eI,topKImpl:()=>tI,transposeImpl:()=>$d,uniqueImpl:()=>rI});function vA(r){let e=new Float32Array(r.length);for(let t=0;t<r.length;++t)e[t]=Math.abs(r[t]);return e}var Nfe=r=>{let{x:e}=r.inputs,t=r.backend;ie(e,"abs");let n=new Float32Array(x.sizeFromShape(e.shape)),o=t.data.get(e.dataId).values;return n=vA(o),t.makeOutput(n,e.shape,"float32")},WG={kernelName:Gs,backendName:"cpu",kernelFunc:Nfe};function lt(r){return(e,t,n,o,s)=>{let i=C.assertAndGetBroadcastShape(e,t),a=i.length,l=x.computeStrides(i),u=x.sizeFromShape(i),p=x.getTypedArrayFromDType(s,u),c=e.length,m=t.length,f=x.computeStrides(e),d=x.computeStrides(t),h=C.getBroadcastDims(e,i),g=C.getBroadcastDims(t,i);if(h.length+g.length===0)for(let b=0;b<p.length;++b)p[b]=r(n[b%n.length],o[b%o.length]);else for(let b=0;b<p.length;++b){let y=x.indexToLoc(b,a,l),T=y.slice(-c);h.forEach(N=>T[N]=0);let k=x.locToIndex(T,c,f),I=y.slice(-m);g.forEach(N=>I[N]=0);let S=x.locToIndex(I,m,d);p[b]=r(n[k],o[S])}return[p,i]}}function jr(r){let{inputs:e,backend:t}=r,{real:n,imag:o}=e,s=t.data.get(n.dataId).values,i=t.data.get(o.dataId).values,a=t.makeTensorInfo(n.shape,"complex64"),l=t.data.get(a.dataId);return l.complexTensorInfos={real:t.makeTensorInfo(n.shape,"float32",s),imag:t.makeTensorInfo(o.shape,"float32",i)},a}var KG={kernelName:lc,backendName:"cpu",kernelFunc:jr};function Fd(r,e,t="float32"){if(t==="complex64"){let o=Fd(r,e,"float32"),s=Fd(r,e,"float32");return jr({inputs:{real
indices.shape[0]=${a}`);let g=x.getArrayFromDType(t,0),b=x.getArrayFromDType(o,0);return[g,[0,c],b,u,p]}let m=!0,f=0,d=new Array(l).fill(0);for(let g=0;g<a;++g){let b=r[g*c];if(b<0)throw new Error(`indices(${g},0)isinvalid:${b}<0`);if(b>=l)throw new Error(`indices(${g},0)isinvalid:${b}>=${l}`);++d[b],m=m&&b>=f,f=b}let h=!0;for(let g=0;g<l;++g){let b=d[g]===0;u[g]=b,h=h&&!b,d[g]=Math.max(d[g],1),g>0&&(d[g]+=d[g-1])}if(h&&m){let g=r,b=n;for(let y=0;y<a;++y)p[y]=y;return[g,[a,c],b,u,p]}else{let g=d[l-1],b=x.getArrayFromDType(t,g*c),y=x.getArrayFromDType(o,g),T=new Array(l).fill(0);for(let k=0;k<a;++k){let I=r[k*c],S=T[I],N=(I===0?0:d[I-1])+S;T[I]++;for(let F=0;F<c;++F)b[N*c+F]=r[k*c+F];y[N]=n[k],p[k]=N}for(let k=0;k<l;++k)if(T[k]===0){let S=k===0?0:d[k-1];b[S*c+0]=k;for(let N=1;N<c;++N)b[S*c+N]=0;y[S]=i}return[b,[g,c],y,u,p]}}function Xk(r,e,t,n,o){let s=x.sizeFromShape(n),i=e[0],a=o.length,l=[],u=1,p=-1;for(let g=0;g<a;++g){let b=o[g];if(b===-1){if(p!==-1)throw new Error(`onlyoneoutputdimensionmaybe-1,notboth${p}and${g}`);p=g,l.push(1)}else{if(b<0)throw new Error(`size${g}mustbenon-negative,not${b}`);u*=b,l.push(b)}}if(p!==-1){if(u<=0)throw new Error("reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero");let g=Math.trunc(s/u);if(u*g!==s)throw new Error(`InputtoreshapeisaSparseTensorwith${s}
densevalues,buttherequestedshaperequiresamultipleof${u}.inputShape=${n}outputShape=${l}`);l[p]=g}let c=x.sizeFromShape(l);if(c!==s)throw new Error(`Inputtoreshapeisatensorwith${s}densevalues,buttherequestedshapehas${c}.inputShape=${n}outputShape=${l}`);let m=n.length,f=[];if(m>0){f[m-1]=1;for(let g=m-2;g>=0;--g)f[g]=f[g+1]*n[g+1]}let d=[];if(a>0){d[a-1]=1;for(let g=a-2;g>=0;--g)d[g]=d[g+1]*l[g+1]}let h=x.getArrayFromDType(t,i*a);for(let g=0;g<i;++g){let b=0;for(let y=0;y<m;++y)b+=r[g*m+y]*f[y];for(let y=0;y<a;++y)h[g*a+y]=Math.trunc(b/d[y]),b%=d[y]}return[h,[i,a],l]}function Pd(r,e,t,n,o,s=!1,i=0){let a=n.length;if(a!==o.length)throw new Error("segmentIds and indices should have same size.");let l=[e[0],r.length/e[0]],u=l[1],c=a>0?o[a-1]+1:0;if(c<0)throw new Error("segment ids must be >= 0");let m=e.slice();m[0]=c;let f=m.reduce((T,k)=>T*k,1),d=x.getArrayFromDType(t,f);if(a===0)return c>0&&d.fill(i),[d,m];if(c<=0)throw new Error("segment ids must be >= 0");let h=0,g=1,b=0,y=o[h];for(;;){let T=0;if(g<a){if(T=o[g],y===T){++g;continue}if(y>=T)throw new Error("segment ids are not increasing")}if(y<0||y>=c)throw new Error(`Segmentid${y}outofrange[0,${c}),possiblybecausesegmentIdsinputisnotsorted.`);y>b&&d.fill(i,b*u,y*u);for(let k=h;k<g;++k){let I=n[k];if(I<0||I>=l[0])throw new Error(`Bad:indices[${k}]==${n[k]}outofrange[0,${l[0]})`);for(let S=0;S<u;S++)d[y*u+S]+=r[I*u+S]}if(s)for(let k=0;k<u;k++)d[y*u+k]/=g-h;if(h=g,++g,b=y+1,y=T,g>a)break}return b<c&&d.fill(i,b*u,c*u),[d,m]}var VA=lt((r,e)=>{let t=r-e;return t*t}),Ufe=dt(Go,VA),fW={kernelName:Go,backendName:"cpu",kernelFunc:Ufe};function Yk(r,e,t,n){let o=ve(r,e.dtype);for(let s=0;s<o.size;s++){let i=o.indexToLoc(s),a=new Array(i.length);for(let l=0;l<a.length;l++)a[l]=i[l]*t[l]+n[l];o.set(e.get(...a),...i)}return o}var dW=class{constructor(e,t,n,o,s,i){this.separator=x.encodeString(e),this.nGramWidths=t,this.leftPad=x.encodeString(n),this.rightPad=x.encodeString(o),this.padWidth=s,this.preserveShort=i}getPadWidth(e){return Math.min(this.padWidth<0?e-1:this.padWidth,e-1)}getNumNGrams(e,t){let n=this.getPadWidth(t);return Math.max(0,e+2*n-t+1)}createNGrams(e,t,n,o,s,i){for(let a=0;a<s;++a){let l=this.getPadWidth(i),u=Math.max(0,l-a),p=Math.max(0,l-(s-(a+1))),c=i-(u+p),m=t+(u>0?0:a-l),f=0;f+=u*this.leftPad.length;for(let y=0;y<c;++y)f+=e[m+y].length;f+=p*this.rightPad.length,f+=(u+p+c-1)*this.separator.length,n[o+a]=new Uint8Array(f);let h=n[o+a],g=0,b=y=>y.forEach(T=>h[g++]=T);for(let y=0;y<u;++y)b(this.leftPad),b(this.separator);for(let y=0;y<c-1;++y)b(e[m+y]),b(this.separator);if(c>0){b(e[m+c-1]);for(let y=0;y<p;++y)b(this.separator),b(this.rightPad)}else{for(let y=0;y<p-1;++y)b(this.rightPad),b(this.separator);b(this.rightPad)}}}compute(e,t){let n=e.length,o=t.length;if(o>0){let l=t[0];if(l!==0)throw new Error(`Firstsplitvaluemustbe0,got${l}`);for(let u=1;u<o;++u){let p=t[u]>=l;if(p=p&&t[u]<=n,!p)throw new Error(`Invalidsplitvalue${t[u]},mustbein[${l},${n}]`);l=t[u]}if(l!==n)throw new Error(`Lastsplitvaluemustbedatasize.Expected${n},got${l}`)}let s=o-1,i=x.getArrayFromDType("int32",o);if(n===0||o===0){let l=new Array(n);for(let u=0;u<=s;++u)i[u]=0;return[l,i]}i[0]=0;for(let l=1;l<=s;++l){let u=t[l]-t[l-1],p=0;this.nGramWidths.forEach(c=>{p+=this.getNumNGrams(u,c)}),this.preserveShort&&u>0&&p===0&&(p=1),i[l]=i[l-1]+p}let a=new Array(i[s]);for(let l=0;l<s;++l){let u=t[l],p=i[l];if(this.nGramWidths.forEach(c=>{let m=t[l+1]-t[l],f=this.getNumNGrams(m,c);this.createNGrams(e,u,a,p,f,c),p+=f}),this.preserveShort&&p===i[l]){let c=t[l+1]-t[l];if(c===0)continue;let m=c+2*this.padWidth,f=1;this.createNGrams(e,u,a,p,f,m)}}return[a,i]}};function Zk(r,e,t,n,o,s,i,a){return new dW(t,n,o,s,i,a).compute(r,e)}function jfe(r,e,t){if(!r.length)return[];if(e.length===0){let s=new Array(r.length);for(let i=0;i<r.length;++i)s[i]=r.subarray(i,i+1);return s}if(e.length===1){let s=e[0],i=[],a=r.indexOf(s);for(;a!==-1;){let l=r.subarray(0,a);(!t||l.length!==0)&&i.push(l),r=r.subarray(a+1),a=r.indexOf(s)}return(!
${s.shape}`);if(n.shape.length!==2)throw new Error(`Indicesmustbeamatrix,saw:
${n.shape}`);if(o.shape.length!==1)throw new Error(`Valuesmustbeavector,saw:
${o.shape}`);if(i.shape.length!==0)throw new Error(`Defaultvaluemustbeascalar,saw:
${i.shape}`);let a=t.data.get(n.dataId).values,l=t.data.get(o.dataId).values,u=t.data.get(s.dataId).values,p=t.data.get(i.dataId).values[0],[c,m,f,d,h]=qk(a,n.shape,n.dtype,l,o.dtype,u,p);return[t.makeTensorInfo(m,n.dtype,c),t.makeTensorInfo([m[0]],o.dtype,f),t.makeTensorInfo([d.length],"bool",new Uint8Array(d.map(g=>Number(g)))),t.makeTensorInfo([h.length],n.dtype,new Int32Array(h))]}var CV={kernelName:Af,backendName:"cpu",kernelFunc:Jhe};function Qhe(r){let{inputs:e,backend:t}=r,{inputIndices:n,inputShape:o,newShape:s}=e;if(n.shape.length!==2)throw new Error(`Inputindicesshouldbeamatrixbutreceivedshape
${n.shape}`);if(o.shape.length!==1)throw new Error(`Inputshapeshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Targetshapeshouldbeavectorbutreceivedshape${s.shape}`);let i=Array.from(t.data.get(o.dataId).values),a=t.data.get(n.dataId).values,l=Array.from(t.data.get(s.dataId).values),[u,p,c]=Xk(a,n.shape,n.dtype,i,l);return[t.makeTensorInfo(p,n.dtype,u),t.makeTensorInfo([c.length],s.dtype,new Int32Array(c))]}var SV={kernelName:Df,backendName:"cpu",kernelFunc:Qhe};function ege(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let i=t.data.get(n.dataId).values,a=t.data.get(o.dataId).values,l=t.data.get(s.dataId).values,[u,p]=Pd(i,n.shape,n.dtype,a,l,!0);return t.makeTensorInfo(p,n.dtype,u)}var NV={kernelName:Ef,backendName:"cpu",kernelFunc:ege};function tge(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let i=t.data.get(n.dataId).values,a=t.data.get(o.dataId).values,l=t.data.get(s.dataId).values,[u,p]=Pd(i,n.shape,n.dtype,a,l);return t.makeTensorInfo(p,n.dtype,u)}var AV={kernelName:Mf,backendName:"cpu",kernelFunc:tge};function rge(r){let{inputs:e,backend:t,attrs:n}=r,{sparseIndices:o,sparseValues:s,defaultValue:i}=e,{outputShape:a}=n,{sliceRank:l,numUpdates:u,sliceSize:p,strides:c,outputSize:m}=C.calculateShapes(s,o,a),f=!1,d=t.bufferSync(o),h=t.bufferSync(s),g=t.data.get(i.dataId).values[0],b=iI(d,h,a,m,p,u,l,c,g,f);return t.makeTensorInfo(a,b.dtype,b.values)}var DV={kernelName:Ff,backendName:"cpu",kernelFunc:rge};function nge(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{numOrSizeSplits:s,axis:i}=n,a=x.parseAxisParam(i,o.shape)[0],l=C.prepareSplitSize(o,s,a),u=new Array(o.shape.length).fill(0),p=o.shape.slice();return l.map(c=>{let m=[...p];m[a]=c;let f=Es({inputs:{x:o},backend:t,attrs:{begin:u,size:m}});return u[a]+=c,f})}var EV={kernelName:yi,backendName:"cpu",kernelFunc:nge};var oge=ze(_a,r=>Math.sqrt(r)),MV={kernelName:_a,backendName:"cpu",kernelFunc:oge};var FV={kernelName:ju,backendName:"cpu",kernelFunc:({inputs:r,backend:e})=>{let{x:t}=r,n=e;ie(t,"square");let o=n.data.get(t.dataId).values,s=new Float32Array(o.length);for(let a=0;a<o.length;++a){let l=o[a];s[a]=l*l}return{dataId:n.write(s,t.shape,t.dtype),shape:t.shape,dtype:t.dtype}}};var sge=ze(cs,(r,e)=>{let t=e;return isNaN(r)?NaN:r>0?1:t.alpha}),RV={kernelName:cs,backendName:"cpu",kernelFunc:sge};function age(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{begin:s,end:i,strides:a,beginMask:l,endMask:u,ellipsisMask:p,newAxisMask:c,shrinkAxisMask:m}=n;ie(o,"stridedSlice");let{nonStrided:f,$begin:d,$strides:h,size:g,newShape:b,outShape:y}=br.sliceInfo(o.shape,s,i,a,l,u,p,c,m),T=ut({inputs:{x:o},backend:t,attrs:{shape:b}}),k;if(f){let S=Es({inputs:{x:T},backend:t,attrs:{begin:d,size:g}});k=ut({inputs:{x:S},backend:t,attrs:{shape:y}}),t.disposeIntermediateTensorInfo(S)}else if(y.some(S=>S===0))k=t.makeTensorInfo(y,o.dtype,[]);else{let S=t.bufferSync(T),N=Yk(y,S,h,d);k=t.makeTensorInfo(N.shape,N.dtype,N.values)}let I=ut({inputs:{x:k},backend:t,attrs:{shape:y}});return t.disposeIntermediateTensorInfo(T),t.disposeIntermediateTensorInfo(k),I}var LV={kernelName:Ll,backendName:"cpu",kernelFunc:age};function ige(r){let{inputs:e,backend:t,attrs:n}=r,{separator:o,nGramWidths:s,leftPad:i,rightPad:a,padWidth:l,preserveShortSequences:u}=n,{data:p,dataSplits:c}=e,m=t.data.get(p.dataId).values,f=t.data.get(c.dataId).values,[d,h]=Zk(m,f,o,s,i,a,l,u);return[t.makeTensorInfo([d.length],"string",d),t.makeTensorInfo(c.shape,"int32",h)]}var $V={kernelName:Rf,backendName:"cpu",kernelFunc:ige};function lge(r){let{inputs:e,backend:t,attrs:n}=r,{skipEmpty:o}=n,{input:s,delimiter:i}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(s.shape.length!==1)throw new Error(`Inputmustbeavector,gotshape:${s.shape}`);if(i.shape.length!==0)throw new Error(`Delimitermustbeascalar,gotshape:${i.shape}`);let a=t.data.get(s.dataId).values,l=t.data.get(i.dataId).values[0],[u,p,c]=Jk(a,l,o),m=p.length;return[t.makeTensorInfo([m,2],"int32",u),t.makeTensorInfo([m],"string",p),t.makeTensorInfo([2],"int32",new Int32Array(c))]}var PV={kernelName:Lf,backendName:"cpu",kernelFunc:lge};function uge(r){let{inputs:e,backend:t,attrs:n}=r,{numBuckets:o}=n,{input:s}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(o<=0)throw new Error("Number of buckets must be at least 1");let i=t.data.get(s.dataId).values,a=Qk(i,o);return t.makeTensorInfo(s.shape,"int32",a)}var BV={kernelName:$f,backendName:"cpu",kernelFunc:uge};var pge=ze(Na,r=>Math.tan(r)),OV={kernelName:Na,backendName:"cpu",kernelFunc:pge};var cge=ze(Aa,r=>Math.tanh(r)),zV={kernelName:Aa,backendName:"cpu",kernelFunc:cge};function mge(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{reps:s}=n;ie(o,"tile");let i=eI(t.bufferSync(o),s);return t.makeTensorInfo(i.shape,i.dtype,i.values)}var GV={kernelName:Ko,backendName:"cpu",kernelFunc:mge};function fge(r){let{inputs:e,backend:
// Explicitly use integer operations as dot() only works on floats.
intindex=row*${o}+col*${s}+depth+${f};
vec2uv=uvFromFlat(${p},${c},index);
returnsampleTexture(${t},uv);
}
`}function dbe(r){let e=r.shapeInfo.logicalShape,t=e.length,n=r.name,o="get"+n.charAt(0).toUpperCase()+n.slice(1),s=r.shapeInfo.texShape,i=[Math.ceil(s[0]/2),Math.ceil(s[1]/2)],a=i[0],l=i[1],u=Math.ceil(e[t-1]/2),p=u*Math.ceil(e[t-2]/2),c="int b, int row, int col",m=`b*${p}+(row/2)*${u}+(col/2)`;for(let d=2;d<t-1;d++)c=`intb${d},`+c,p*=e[t-d-1],m=`b${d}*${p}+`+m;let f=lr();return`
indices.shape[0]=${a}`);let g=x.getArrayFromDType(t,0),b=x.getArrayFromDType(o,0);return[g,[0,c],b,u,p]}let m=!0,f=0,d=new Array(l).fill(0);for(let g=0;g<a;++g){let b=r[g*c];if(b<0)throw new Error(`indices(${g},0)isinvalid:${b}<0`);if(b>=l)throw new Error(`indices(${g},0)isinvalid:${b}>=${l}`);++d[b],m=m&&b>=f,f=b}let h=!0;for(let g=0;g<l;++g){let b=d[g]===0;u[g]=b,h=h&&!b,d[g]=Math.max(d[g],1),g>0&&(d[g]+=d[g-1])}if(h&&m){let g=r,b=n;for(let y=0;y<a;++y)p[y]=y;return[g,[a,c],b,u,p]}else{let g=d[l-1],b=x.getArrayFromDType(t,g*c),y=x.getArrayFromDType(o,g),T=new Array(l).fill(0);for(let k=0;k<a;++k){let I=r[k*c],S=T[I],N=(I===0?0:d[I-1])+S;T[I]++;for(let F=0;F<c;++F)b[N*c+F]=r[k*c+F];y[N]=n[k],p[k]=N}for(let k=0;k<l;++k)if(T[k]===0){let S=k===0?0:d[k-1];b[S*c+0]=k;for(let N=1;N<c;++N)b[S*c+N]=0;y[S]=i}return[b,[g,c],y,u,p]}}function kU(r,e,t,n,o){let s=x.sizeFromShape(n),i=e[0],a=o.length,l=[],u=1,p=-1;for(let g=0;g<a;++g){let b=o[g];if(b===-1){if(p!==-1)throw new Error(`onlyoneoutputdimensionmaybe-1,notboth${p}and${g}`);p=g,l.push(1)}else{if(b<0)throw new Error(`size${g}mustbenon-negative,not${b}`);u*=b,l.push(b)}}if(p!==-1){if(u<=0)throw new Error("reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero");let g=Math.trunc(s/u);if(u*g!==s)throw new Error(`InputtoreshapeisaSparseTensorwith${s}
densevalues,buttherequestedshaperequiresamultipleof${u}.inputShape=${n}outputShape=${l}`);l[p]=g}let c=x.sizeFromShape(l);if(c!==s)throw new Error(`Inputtoreshapeisatensorwith${s}densevalues,buttherequestedshapehas${c}.inputShape=${n}outputShape=${l}`);let m=n.length,f=[];if(m>0){f[m-1]=1;for(let g=m-2;g>=0;--g)f[g]=f[g+1]*n[g+1]}let d=[];if(a>0){d[a-1]=1;for(let g=a-2;g>=0;--g)d[g]=d[g+1]*l[g+1]}let h=x.getArrayFromDType(t,i*a);for(let g=0;g<i;++g){let b=0;for(let y=0;y<m;++y)b+=r[g*m+y]*f[y];for(let y=0;y<a;++y)h[g*a+y]=Math.trunc(b/d[y]),b%=d[y]}return[h,[i,a],l]}function IU(r,e,t,n,o,s=!1,i=0){let a=n.length;if(a!==o.length)throw new Error("segmentIds and indices should have same size.");let l=[e[0],r.length/e[0]],u=l[1],c=a>0?o[a-1]+1:0;if(c<0)throw new Error("segment ids must be >= 0");let m=e.slice();m[0]=c;let f=m.reduce((T,k)=>T*k,1),d=x.getArrayFromDType(t,f);if(a===0)return c>0&&d.fill(i),[d,m];if(c<=0)throw new Error("segment ids must be >= 0");let h=0,g=1,b=0,y=o[h];for(;;){let T=0;if(g<a){if(T=o[g],y===T){++g;continue}if(y>=T)throw new Error("segment ids are not increasing")}if(y<0||y>=c)throw new Error(`Segmentid${y}outofrange[0,${c}),possiblybecausesegmentIdsinputisnotsorted.`);y>b&&d.fill(i,b*u,y*u);for(let k=h;k<g;++k){let I=n[k];if(I<0||I>=l[0])throw new Error(`Bad:indices[${k}]==${n[k]}outofrange[0,${l[0]})`);for(let S=0;S<u;S++)d[y*u+S]+=r[I*u+S]}if(s)for(let k=0;k<u;k++)d[y*u+k]/=g-h;if(h=g,++g,b=y+1,y=T,g>a)break}return b<c&&d.fill(i,b*u,c*u),[d,m]}var fD=fr((r,e)=>{let t=r-e;return t*t}),XVr=Sr(Go,fD);function vU(r,e,t,n){let o=ve(r,e.dtype);for(let s=0;s<o.size;s++){let i=o.indexToLoc(s),a=new Array(i.length);for(let l=0;l<a.length;l++)a[l]=i[l]*t[l]+n[l];o.set(e.get(...a),...i)}return o}var wU=class{constructor(e,t,n,o,s,i){this.separator=x.encodeString(e),this.nGramWidths=t,this.leftPad=x.encodeString(n),this.rightPad=x.encodeString(o),this.padWidth=s,this.preserveShort=i}getPadWidth(e){return Math.min(this.padWidth<0?e-1:this.padWidth,e-1)}getNumNGrams(e,t){let n=this.getPadWidth(t);return Math.max(0,e+2*n-t+1)}createNGrams(e,t,n,o,s,i){for(let a=0;a<s;++a){let l=this.getPadWidth(i),u=Math.max(0,l-a),p=Math.max(0,l-(s-(a+1))),c=i-(u+p),m=t+(u>0?0:a-l),f=0;f+=u*this.leftPad.length;for(let y=0;y<c;++y)f+=e[m+y].length;f+=p*this.rightPad.length,f+=(u+p+c-1)*this.separator.length,n[o+a]=new Uint8Array(f);let h=n[o+a],g=0,b=y=>y.forEach(T=>h[g++]=T);for(let y=0;y<u;++y)b(this.leftPad),b(this.separator);for(let y=0;y<c-1;++y)b(e[m+y]),b(this.separator);if(c>0){b(e[m+c-1]);for(let y=0;y<p;++y)b(this.separator),b(this.rightPad)}else{for(let y=0;y<p-1;++y)b(this.rightPad),b(this.separator);b(this.rightPad)}}}compute(e,t){let n=e.length,o=t.length;if(o>0){let l=t[0];if(l!==0)throw new Error(`Firstsplitvaluemustbe0,got${l}`);for(let u=1;u<o;++u){let p=t[u]>=l;if(p=p&&t[u]<=n,!p)throw new Error(`Invalidsplitvalue${t[u]},mustbein[${l},${n}]`);l=t[u]}if(l!==n)throw new Error(`Lastsplitvaluemustbedatasize.Expected${n},got${l}`)}let s=o-1,i=x.getArrayFromDType("int32",o);if(n===0||o===0){let l=new Array(n);for(let u=0;u<=s;++u)i[u]=0;return[l,i]}i[0]=0;for(let l=1;l<=s;++l){let u=t[l]-t[l-1],p=0;this.nGramWidths.forEach(c=>{p+=this.getNumNGrams(u,c)}),this.preserveShort&&u>0&&p===0&&(p=1),i[l]=i[l-1]+p}let a=new Array(i[s]);for(let l=0;l<s;++l){let u=t[l],p=i[l];if(this.nGramWidths.forEach(c=>{let m=t[l+1]-t[l],f=this.getNumNGrams(m,c);this.createNGrams(e,u,a,p,f,c),p+=f}),this.preserveShort&&p===i[l]){let c=t[l+1]-t[l];if(c===0)continue;let m=c+2*this.padWidth,f=1;this.createNGrams(e,u,a,p,f,m)}}return[a,i]}};function _U(r,e,t,n,o,s,i,a){return new wU(t,n,o,s,i,a).compute(r,e)}function Ibe(r,e,t){if(!r.length)return[];if(e.length===0){let s=new Array(r.length);for(let i=0;i<r.length;++i)s[i]=r.subarray(i,i+1);return s}if(e.length===1){let s=e[0],i=[],a=r.indexOf(s);for(;a!==-1;){let l=r.subarray(0,a);(!t||l.length!==0)&&i.push(l),r=r.subarray(a+1),a=r.indexOf(s)}return(!t||r.length!==0)&&i.push(r),i}let n=[],o=0;for(let s
`}var yD=class{constructor(e){this.gpgpu=e;this.numUsedTextures=0;this.numFreeTextures=0;this._numBytesAllocated=0;this._numBytesFree=0;this.freeTextures={};this.logEnabled=!1;this.usedTextures={}}acquireTexture(e,t,n){let o=h4(t,n),s=g4(e,o,n);s in this.freeTextures||(this.freeTextures[s]=[]),s in this.usedTextures||(this.usedTextures[s]=[]);let i=d4(e,o,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[s].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=i,this.log();let l=this.freeTextures[s].shift();return this.usedTextures[s].push(l),l}let a;return o===sn.PACKED_2X2_FLOAT32?a=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):o===sn.PACKED_2X2_FLOAT16?a=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):o===sn.UNPACKED_FLOAT32?a=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):o===sn.UNPACKED_FLOAT16?a=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):o===sn.PACKED_4X1_UNSIGNED_BYTE&&(a=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[s].push(a),this.numUsedTextures++,this._numBytesAllocated+=i,this.log(),a}releaseTexture(e,t,n,o){if(this.freeTextures==null)return;let s=h4(n,o),i=g4(t,s,o);i in this.freeTextures||(this.freeTextures[i]=[]);let a=d4(t,s,this.gpgpu.gl,this.gpgpu.textureConfig,o),l=X().get("WEBGL_DELETE_TEXTURE_THRESHOLD");l!==-1&&this._numBytesAllocated>l?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=a):(this.freeTextures[i].push(e),this.numFreeTextures++,this._numBytesFree+=a),this.numUsedTextures--;let u=this.usedTextures[i],p=u.indexOf(e);if(p<0)throw new Error("Cannot release a texture that was never provided by this texture manager");u.splice(p,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures}/${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytesallocated:${this._numBytesAllocated}`),console.log(`Bytesunused:${this._numBytesFree}(${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function Abe(r,e){let t=r;if(e===t.R32F)return 4;if(e===t.R16F)return 2;if(e===t.RGBA32F)return 16;if(e===r.RGBA)return 16;if(e===t.RGBA16F)return 8;throw new Error(`Unknowninternalformat${e}`)}function d4(r,e,t,n,o){let s=Dbe(e,n),i;if(o){let[l,u]=Li(r[0],r[1]);i=l*u}else{let[l,u]=cm(r[0],r[1]);i=l*u}let a=Abe(t,s);return i*a}function Dbe(r,e){switch(r){case sn.PACKED_2X2_FLOAT32:return yI(e);case sn.PACKED_2X2_FLOAT16:return xI(e);case sn.UNPACKED_FLOAT32:return hI(e);case sn.UNPACKED_FLOAT16:return gI(e);case sn.PACKED_4X1_UNSIGNED_BYTE:return bI(e);default:throw new Error(`Unknownphysicaltexturetype${r}`)}}function Ebe(r){return X().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?r?sn.PACKED_2X2_FLOAT32:sn.UNPACKED_FLOAT32:r?sn.PACKED_2X2_FLOAT16:sn.UNPACKED_FLOAT16}function h4(r,e){if(r===yn.UPLOAD)return sn.PACKED_2X2_FLOAT32;if(r===yn.RENDER||r==null)return Ebe(e);if(r===yn.DOWNLOAD||r===yn.PIXELS)return sn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknownlogicaltexturetype${r}`)}function g4(r,e,t){return`${r[0]}_${r[1]}_${e}_${t}`}var mo=class{constructor(e,t){this.variableNames=["A"];this.outputShape=e,this.userCode=`
`}};var Mbe=gn.whereImpl,Fbe=1e-7,Rbe=1e-4,_I={};function Lbe(r){return r in _I||(_I[r]={}),_I[r]}var $be=()=>X().getNumber("CPU_HANDOFF_SIZE_THRESHOLD"),Pbe=600;function Bbe(){return X().global.screen==null?1024:X().global.screen.height*X().global.screen.width*window.devicePixelRatio*Pbe/1024/1024}var kD=class extends ii{constructor(e){super();this.pendingRead=new WeakMap;this.pendingDisposal=new WeakSet;this.dataRefCount=new WeakMap;this.numBytesInGPU=0;this.uploadWaitMs=0;this.downloadWaitMs=0;this.lastGlFlushTime=0;this.warnedAboutMemory=!1;this.pendingDeletes=0;this.disposed=!1;if(!X().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Qo(X().getNumber("WEBGL_VERSION"));this.binaryCache=Lbe(X().getNumber("WEBGL_VERSION")),this.gpgpu=new TI(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new yD(this.gpgpu),this.numMBBeforeWarning=Bbe(),this.texData=new Fu(this,Ma())}nextDataId(){return kD.nextDataId++}numDataIds(){return this.texData.numDataIds()-this.pendingDeletes}write(e,t,n){if((X().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||X().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let o={id:this.nextDataId()};return this.texData.set(o,{shape:t,dtype:n,values:e,usage:yn.UPLOAD,refCount:1}),o}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,o,s){if(X().getBool("DEBUG")&&this.checkNumericalProblems(t),o==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:o,values:t,usage:yn.UPLOAD,refCount:s})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:o,complexTensorInfos:s,slice:i,shape:a,isPacked:l}=t;if(i!=null){let m;l?m=new Qa(a,Fy):m=new mo(a,Fy);let f=this.runWebGLProgram(m,[{dataId:e,shape:a,dtype:o}],o),d=this.readSync(f.dataId);return this.disposeIntermediateTensorInfo(f),d}if(n!=null)return this.convertAndCacheOnCPU(e);if(o==="string")return n;let u=this.activeTimers!=null,p;u&&(p=x.now());let c;if(o==="complex64"){let m=this.readSync(s.real.dataId),f=this.readSync(s.imag.dataId);c=C.mergeRealAndImagArrays(m,f)}else c=this.getValuesFromTexture(e);return u&&(this.downloadWaitMs+=x.now()-p),this.convertAndCacheOnCPU(e,c)}async read(e){if(this.pendingRead.has(e)){let d=this.pendingRead.get(e);return new Promise(h=>d.push(h))}let t=this.texData.get(e),{values:n,shape:o,slice:s,dtype:i,complexTensorInfos:a,isPacked:l}=t;if(s!=null){let d;l?d=new Qa(o,Fy):d=new mo(o,Fy);let h=this.runWebGLProgram(d,[{dataId:e,shape:o,dtype:i}],i),g=this.read(h.dataId);return this.disposeIntermediateTensorInfo(h),g}if(n!=null)return this.convertAndCacheOnCPU(e);if(!X().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&X().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let u=null,p;if(i!=="complex64"&&X().get("WEBGL_BUFFER_SUPPORTED")){p=this.decode(e);let d=this.texData.get(p.dataId);u=this.gpgpu.createBufferFromTexture(d.texture,...yp(o))}this.pendingRead.set(e,[]),i!=="complex64"&&await this.gpgpu.createAndWaitForFence();let c;if(i==="complex64"){let d=await Promise.all([this.read(a.real.dataId),this.read(a.imag.dataId)]),h=d[0],g=d[1];c=C.mergeRealAndImagArrays(h,g)}else if(u==null)c=this.getValuesFromTexture(e);else{let d=x.sizeFromShape(o);c=this.gpgpu.downloadFloat32MatrixFromBuffer(u,d)}p!=null&&this.disposeIntermediateTensorInfo(p);let m=this.convertAndCacheOnCPU(e,c),f=this.pendingRead.get(e);return this.pendingRead.delete(e),f.forEach(d=>d(m)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Ma().removeDataId(e,this),this.pendingDeletes--),m}
return(log(1.0+x)-log(1.0-x))/2.0;`,mye=Ae({opSnippet:cye}),sj={kernelName:cl,backendName:"webgl",kernelFunc:mye};var $i=class{constructor(e,t,n,o=!1,s=!1){this.variableNames=["x"];if(t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let i=e.filterWidth,a=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,p=e.dilationWidth,c=e.effectiveFilterHeight,m=e.effectiveFilterWidth,f=e.padInfo.top,d=e.padInfo.left;this.outputShape=e.outShape;let h=t==="avg",g=`((batch*${e.inHeight}+xR)*${e.inWidth}+xC)*${e.inChannels}+d`,b=`(xR*${e.inWidth}+xC)*${e.inChannels}+d`,y="0.0";if(h||(y="-1.0 / 1e-20"),n){let F=">=";this.userCode=`
`}},gm=class{constructor(e,t,n,o=!1,s=!1){this.variableNames=["x"];if(t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let i=e.filterWidth,a=e.strideDepth,l=e.strideHeight,u=e.strideWidth,p=e.dilationDepth,c=e.dilationHeight,m=e.dilationWidth,f=e.effectiveFilterDepth,d=e.effectiveFilterHeight,h=e.effectiveFilterWidth,g=e.padInfo.front,b=e.padInfo.top,y=e.padInfo.left;this.outputShape=e.outShape;let T=t==="avg",k="0.0";if(T||(k="-1.0 / 1e-20"),n){let O=">=";this.userCode=`
`}};var yye=({inputs:r,backend:e,attrs:t})=>{let{x:n,mean:o,variance:s,offset:i,scale:a}=r;x.assert(o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),x.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),x.assert(a==null||o.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=t;l==null&&(l=.001);let u=[n,o,s],p=null;i!=null&&(p=i.shape,u.push(i));let c=null;a!=null&&(c=a.shape,u.push(a));let m=X().getBool("WEBGL_PACK_NORMALIZATION")?new BD(n.shape,o.shape,s.shape,p,c,l):new PD(n.shape,o.shape,s.shape,p,c,l);return e.runWebGLProgram(m,u,u[0].dtype)},cj={kernelName:ta,backendName:"webgl",kernelFunc:yye};var OD=class{constructor(e){this.variableNames=["source"];this.outputShape=e,this.rank=e.length;let t=Xe(this.rank),n=`uniformintstart[${this.rank}];`,o=xye(this.rank),s,i=e.map((a,l)=>`sourceLoc.${zD[l]}=start[${l}]+coords.${zD[l]};`);s=`
`}};function FI({x:r,filter:e,convInfo:t,backend:n,bias:o=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:a=null}){let l=r.shape,u=n.texData.get(r.dataId),p=t.inChannels,c=l[0]*l[1]*l[2],m=t.outChannels,f=t.dataFormat==="channelsLast",d=!1,h=!1,g,b=[],y=(c===1||m===1)&&p>DD,T=l[2]%2!=0&&!!u.isPacked;if(y||!X().getBool("WEBGL_LAZILY_UNPACK")||!X().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!T){let k=f?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],I=de({inputs:{x:r},backend:n,attrs:{shape:[1,k,t.inChannels]}}),S=de({inputs:{x:e},backend:n,attrs:{shape:[1,t.inChannels,t.outChannels]}}),N=hm({a:I,b:S,transposeA:d,transposeB:h,backend:n,bias:o,activation:a,preluActivationWeights:s,leakyreluAlpha:i});g=de({inputs:{x:N},backend:n,attrs:{shape:t.outShape}}),b.push(I),b.push(S),b.push(N)}else{let k=f?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),I={dataId:r.dataId,shape:[1,k,t.inChannels],dtype:r.dtype},S=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,x.assert(xp(u.shape,I.shape),()=>`packedreshape${u.shape}to${I.shape}isn'tfree`);let N=de({inputs:{x:e},backend:n,attrs:{shape:[1,t.inChannels,t.outChannels]}});b.push(N);let F=hm({a:I,b:N,backend:n,transposeA:d,transposeB:h,bias:o,activation:a,preluActivationWeights:s,leakyreluAlpha:i}),$=n.texData.get(F.dataId);x.assert($.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=S,$.shape=t.outShape,g=vr({inputs:{x:F},backend:n}),g.shape=t.outShape,b.push(F)}for(let k of b)n.disposeIntermediateTensorInfo(k);return g}function RI({x:r,filter:e,convInfo:t,backend:n,bias:o=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:a=null}){let{filterWidth:l,filterHeight:u,inChannels:p,outWidth:c,outHeight:m,dataFormat:f}=t,d=f==="channelsLast",h=l*u*p,g=m*c,b=[h,g],y=!0,T=!1,k=[],I=de({inputs:{x:r},backend:n,attrs:{shape:r.shape.slice(1)}}),S=de({inputs:{x:e},backend:n,attrs:{shape:[1,h,x.sizeFromShape(e.shape)/h]}});k.push(I),k.push(S);let N=new ZD(b,I.shape,t),F=n.runWebGLProgram(N,[I],"float32"),$=de({inputs:{x:F},backend:n,attrs:{shape:[1,b[0],b[1]]}});k.push(F),k.push($);let O=o!=null,V=s!=null,q=a==="leakyrelu",W=a?kp(a,!0):null,Y=new Ly($.shape,S.shape,[1,g,t.outChannels],y,T,O,W,V,q),Z=[$,S];if(o&&Z.push(o),V&&Z.push(s),q){let le=n.makeTensorInfo([],"float32",x.createScalarValue(i,"float32"));Z.push(le),k.push(le)}let J=n.runWebGLProgram(Y,Z,"float32"),se=d?[1,m,c,t.outChannels]:[1,t.outChannels,m,c],ee=de({inputs:{x:J},backend:n,attrs:{shape:se}});k.push(J);for(let le of k)n.disposeIntermediateTensorInfo(le);return ee}function Aye(r){let{inputs:e,backend:t,attrs:n}=r,{x:o,filter:s}=e,{strides:i,pad:a,dataFormat:l,dilations:u,dimRoundingMode:p}=n,c=C.convertConv2DDataFormat(l),m=C.computeConv2DInfo(o.shape,s.shape,i,u,a,p,!1,c),f;if(m.filterHeight===1&&m.filterWidth===1&&m.dilationHeight===1&&m.dilationWidth===1&&m.strideHeight===1&&m.strideWidth===1&&(m.padInfo.type==="SAME"||m.padInfo.type==="VALID"))f=FI({x:o,filter:s,convInfo:m,backend:t});else if(X().getBool("WEBGL_CONV_IM2COL")&&o.shape[0]===1)f=RI({x:o,filter:s,convInfo:m,backend:t});else{let h=new Py(m);f=t.runWebGLProgram(h,[o,s],"float32")}let d=de({inputs:{x:f},backend:t,attrs:{shape:m.outShape}});return t.disposeIntermediateTensorInfo(f),d}var Cj={kernelName:js,backendName:"webgl",kernelFunc:Aye};var JD=class{constructor(e){this.variableNames=["x","dy"];this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,o=e.padInfo.top,s=e.padInfo.left,i=e.dataFormat==="channelsLast";this.userCode=`
`,ake=Ae({opSnippet:ske}),Cq={kernelName:Rl,backendName:"webgl",kernelFunc:ake};var ike=r=>{let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{blockShape:s,paddings:i}=n;x.assert(o.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let a=s.reduce((b,y)=>b*y),l=[[0,0]];l.push(...i);for(let b=1+s.length;b<o.shape.length;++b)l.push([0,0]);let u=[],p=D1({inputs:{x:o},backend:t,attrs:{paddings:l,constantValue:0}}),c=C.getReshaped(p.shape,s,a,!1),m=C.getPermuted(c.length,s.length,!1),f=C.getReshapedPermuted(p.shape,s,a,!1),d=de({inputs:{x:p},backend:t,attrs:{shape:c}}),h=rr({inputs:{x:d},backend:t,attrs:{perm:m}}),g=de({inputs:{x:h},backend:t,attrs:{shape:f}});return u.push(p),u.push(d),u.push(h),u.forEach(b=>t.disposeIntermediateTensorInfo(b)),g},Sq={kernelName:Uu,backendName:"webgl",kernelFunc:ike};function lke(r){let{inputs:e,backend:t}=r,{indices:n,values:o,denseShape:s,defaultValue:i}=e;if(s.shape.length!==1)throw new Error(`Denseshapemustbeavector,saw:
${s.shape}`);if(n.shape.length!==2)throw new Error(`Indicesmustbeamatrix,saw:
${n.shape}`);if(o.shape.length!==1)throw new Error(`Valuesmustbeavector,saw:
${o.shape}`);if(i.shape.length!==0)throw new Error(`Defaultvaluemustbeascalar,saw:
${i.shape}`);let a=t.readSync(n.dataId),l=t.readSync(o.dataId),u=t.readSync(s.dataId),p=t.readSync(i.dataId)[0],[c,m,f,d,h]=n4(a,n.shape,n.dtype,l,o.dtype,u,p);return[t.makeTensorInfo(m,n.dtype,c),t.makeTensorInfo([m[0]],o.dtype,f),t.makeTensorInfo([d.length],"bool",new Uint8Array(d.map(g=>Number(g)))),t.makeTensorInfo([h.length],n.dtype,new Int32Array(h))]}var Nq={kernelName:Af,backendName:"webgl",kernelFunc:lke};function uke(r){let{inputs:e,backend:t}=r,{inputIndices:n,inputShape:o,newShape:s}=e;if(n.shape.length!==2)throw new Error(`Inputindicesshouldbeamatrixbutreceivedshape${n.shape}`);if(o.shape.length!==1)throw new Error(`Inputshapeshouldbeavectorbutreceivedshape${o.shape}`);if(s.shape.length!==1)throw new Error(`Targetshapeshouldbeavectorbutreceivedshape${s.shape}`);let i=Array.from(t.readSync(o.dataId)),a=t.readSync(n.dataId),l=Array.from(t.readSync(s.dataId)),[u,p,c]=o4(a,n.shape,n.dtype,i,l);return[t.makeTensorInfo(p,n.dtype,u),t.makeTensorInfo([c.length],s.dtype,new Int32Array(c))]}var Aq={kernelName:Df,backendName:"webgl",kernelFunc:uke};function pke(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let i=t.readSync(n.dataId),a=t.readSync(o.dataId),l=t.readSync(s.dataId),[u,p]=wI(i,n.shape,n.dtype,a,l,!0);return t.makeTensorInfo(p,n.dtype,u)}var Dq={kernelName:Ef,backendName:"webgl",kernelFunc:pke};function cke(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let i=t.readSync(n.dataId),a=t.readSync(o.dataId),l=t.readSync(s.dataId),[u,p]=wI(i,n.shape,n.dtype,a,l);return t.makeTensorInfo(p,n.dtype,u)}var Eq={kernelName:Mf,backendName:"webgl",kernelFunc:cke};function mke(r){let{inputs:e,backend:t,attrs:n}=r,{sparseIndices:o,sparseValues:s,defaultValue:i}=e,{outputShape:a}=n,{sliceRank:l,numUpdates:u,strides:p,outputSize:c}=C.calculateShapes(s,o,a),m=!1,f=new Wy(u,l,o.shape.length,s.shape.length,p,[c,1],m),d=t.runWebGLProgram(f,[s,o,i],s.dtype),h=de({inputs:{x:d},backend:t,attrs:{shape:a}});return t.disposeIntermediateTensorInfo(d),h}var Mq={kernelName:Ff,backendName:"webgl",kernelFunc:mke};function fke(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{numOrSizeSplits:s,axis:i}=n,a=x.parseAxisParam(i,o.shape)[0],l=C.prepareSplitSize(o,s,a),u=o.shape.length,p=new Array(u).fill(0),c=o.shape.slice();return l.map(m=>{let f=[...c];f[a]=m;let d=hu({inputs:{x:o},backend:t,attrs:{begin:p,size:f}});return p[a]+=m,d})}var Fq={kernelName:yi,backendName:"webgl",kernelFunc:fke};var dke="return sqrt(x);",hke=Ae({opSnippet:dke}),Rq={kernelName:_a,backendName:"webgl",kernelFunc:hke};var gke="return x * x;",bke=Ae({opSnippet:gke}),Lq={kernelName:ju,backendName:"webgl",kernelFunc:bke};var $q="return (a - b) * (a - b);",yke=Tt({opSnippet:$q,packedOpSnippet:$q}),Pq={kernelName:Go,backendName:"webgl",kernelFunc:yke};function xke({inputs:r,attrs:e,backend:t}){let{x:n}=r,o=Zr+`
`}};function Tke(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{begin:s,end:i,strides:a,beginMask:l,endMask:u,ellipsisMask:p,newAxisMask:c,shrinkAxisMask:m}=n,{nonStrided:f,$begin:d,$strides:h,size:g,newShape:b,outShape:y}=br.sliceInfo(o.shape,s,i,a,l,u,p,c,m),T=de({inputs:{x:o},backend:t,attrs:{shape:b}}),k;if(f){let S=hu({inputs:{x:T},backend:t,attrs:{begin:d,size:g}});k=de({inputs:{x:S},backend:t,attrs:{shape:y}}),t.disposeIntermediateTensorInfo(S)}else if(y.some(S=>S===0))k=t.makeTensorInfo(y,o.dtype,[]);else if(t.shouldExecuteOnCPU([T])){let F=t.texData.get(T.dataId).values,$=ve(T.shape,T.dtype,F),O=s4(y,$,h,d);k=t.makeTensorInfo(y,T.dtype,O.values)}else{let N=new W1(d,h,y);k=t.runWebGLProgram(N,[T],T.dtype)}let I=de({inputs:{x:k},backend:t,attrs:{shape:y}});return t.disposeIntermediateTensorInfo(T),t.disposeIntermediateTensorInfo(k),I}var Oq={kernelName:Ll,backendName:"webgl",kernelFunc:Tke};function kke(r){let{inputs:e,backend:t,attrs:n}=r,{separator:o,nGramWidths:s,leftPad:i,rightPad:a,padWidth:l,preserveShortSequences:u}=n,{data:p,dataSplits:c}=e,m=t.readSync(p.dataId),f=t.readSync(c.dataId),[d,h]=a4(m,f,o,s,i,a,l,u);return[t.makeTensorInfo([d.length],"string",d),t.makeTensorInfo(c.shape,"int32",h)]}var zq={kernelName:Rf,backendName:"webgl",kernelFunc:kke};function Ike(r){let{inputs:e,backend:t,attrs:n}=r,{skipEmpty:o}=n,{input:s,delimiter:i}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(s.shape.length!==1)throw new Error(`Inputmustbeavector,gotshape:${s.shape}`);if(i.shape.length!==0)throw new Error(`Delimitermustbeascalar,gotshape:${i.shape}`);let a=t.readSync(s.dataId),l=t.readSync(i.dataId)[0],[u,p,c]=i4(a,l,o),m=p.length;return[t.makeTensorInfo([m,2],"int32",u),t.makeTensorInfo([m],"string",p),t.makeTensorInfo([2],"int32",new Int32Array(c))]}var Gq={kernelName:Lf,backendName:"webgl",kernelFunc:Ike};function vke(r){let{inputs:e,backend:t,attrs:n}=r,{numBuckets:o}=n,{input:s}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(o<=0)throw new Error("Number of buckets must be at least 1");let i=t.readSync(s.dataId),a=l4(i,o);return t.makeTensorInfo(s.shape,"int32",a)}var Wq={kernelName:$f,backendName:"webgl",kernelFunc:vke};var wke="return tan(x);",_ke=Ae({opSnippet:wke}),Kq={kernelName:Na,backendName:"webgl",kernelFunc:_ke};var Cke=`