spectrogram-js 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var NA=typeof document<"u"?document.currentScript:null,WA=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((g,i)=>{r=g,E=i});var B=Object.assign({},A),Q="";function t(g){return A.locateFile?A.locateFile(g,Q):Q+g}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var g=w.buffer;A.HEAP8=D=new Int8Array(g),A.HEAP16=new Int16Array(g),A.HEAP32=new Int32Array(g),A.HEAPU8=s=new Uint8Array(g),A.HEAPU16=new Uint16Array(g),A.HEAPU32=new Uint32Array(g),A.HEAPF32=new Float32Array(g),A.HEAPF64=new Float64Array(g)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(g){N.unshift(g)}function p(g){R.unshift(g)}function P(g){f.unshift(g)}var k=0,U=null;function q(g){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(g){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var i=U;U=null,i()}}function J(g){A.onAbort&&A.onAbort(g),g="Aborted("+g+")",n(g),h=!0,g+=". Build with -sASSERTIONS for more info.";var i=new WebAssembly.RuntimeError(g);throw E(i),i}var u="data:application/octet-stream;base64,";function L(g){return g.startsWith(u)}var S;S="data:application/octet-stream;base64,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GCAZkzgCBCAHIBcgHpM4AgAgBUEIaiEFIAdBCGohByAEQQhqIQQgAUEIaiEBIABBCGohACAJQQFqIgkgBkcNAAsMAQsgBSgCACELIAlBA3QQByEIAkAgCUECSA0AIAZBAEwNACAFQYgCaiENIAlBfHEhDiAJQQNxIQogCUEBa0EDSSEPQQAhBwNAIAchAUEAIQRBACEDIA9FBEADQCAIIARBA3QiBWogACABQQN0aikCADcCACAIIAVBCHJqIAAgASAGaiIBQQN0aikCADcCACAIIAVBEHJqIAAgASAGaiIBQQN0aikCADcCACAIIAVBGHJqIAAgASAGaiIBQQN0aikCADcCACAEQQRqIQQgASAGaiEBIANBBGoiAyAORw0ACwtBACEFIAoEQANAIAggBEEDdGogACABQQN0aikCADcCACAEQQFqIQQgASAGaiEBIAVBAWoiBSAKRw0ACwsgCCkCACIvp74hFUEAIQwgByEDA0AgACADQQN0aiIFIC83AgAgAiADbCEQIAUqAgQhFEEBIQEgFSETQQAhBANAIAUgEyAIIAFBA3RqIhEqAgAiFiANIAQgEGoiBCALQQAgBCALThtrIgRBA3RqIhIqAgAiF5QgEioCBCIYIBEqAgQiGZSTkiITOAIAIAUgFCAWIBiUIBcgGZSSkiIUOAIEIAFBAWoiASAJRw0ACyADIAZqIQMgDEEBaiIMIAlHDQALIAdBAWoiByAGRw0ACwsgCBAGCwsDAAELwQEBAn8jAEEQayIBJAACfCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEBEAAAAAAAA8D8gAkGewZryA0kNARogAEQAAAAAAAAAABAEDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQC0EDcQ4DAAECAwsgASsDACABKwMIEAQMAwsgASsDACABKwMIQQEQA5oMAgsgASsDACABKwMIEASaDAELIAErAwAgASsDCEEBEAMLIQAgAUEQaiQAIAALuBgDFH8EfAF+IwBBMGsiCCQAAkACQAJAIAC9IhpCIIinIgNB/////wdxIgZB+tS9gARNBEAgA0H//z9xQfvDJEYNASAGQfyyi4AETQRAIBpCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhY5AwAgASAAIBahRDFjYhphtNC9oDkDCEEB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IAIgC0chCiACQQFqIQIgCg0ACwsgBUGgAWogBkEDdGogADkDACAEQQBKIQIgBEEBayEEIAINAAsLRAAAAAAAAAAAIQAgA0EATgRAIAMhAgNAIAIiBEEBayECIAAgBUGgAWogBEEDdGorAwCgIQAgBA0ACwsgCCAAmiAAIAwbOQMAIAUrA6ABIAChIQBBASECIANBAEoEQANAIAAgBUGgAWogAkEDdGorAwCgIQAgAiADRyEEIAJBAWohAiAEDQALCyAIIACaIAAgDBs5AwggBUGwBGokACAHQQdxIQMgCCsDACEAIBpCAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC8UBAQJ/IwBBEGsiASQAAkAgAL1CIIinQf////8HcSICQfvDpP8DTQRAIAJBgIDA8gNJDQEgAEQAAAAAAAAAAEEAEAMhAAwBCyACQYCAwP8HTwRAIAAgAKEhAAwBCwJAAkACQAJAIAAgARALQQNxDgMAAQIDCyABKwMAIAErAwhBARADIQAMAwsgASsDACABKwMIEAQhAAwCCyABKwMAIAErAwhBARADmiEADAELIAErAwAgASsDCBAEmiEACyABQRBqJAAgAAuhBAEDfyABIAJGBEAgACgCAEEDdBAHIgQgAUEBQQEgAEEIaiAAEAggBCECAkAgACgCAEEDdCIDQYAETwRAIAEgAiADEAEMAQsgASADaiEAAkAgASACc0EDcUUEQAJAIAFBA3FFDQAgA0UNAANAIAEgAi0AADoAACACQQFqIQIgAUEBaiIBQQNxRQ0BIAAgAUsNAAsLAkAgAEF8cSIDQcAASQ0AIAEgA0FAaiIFSw0AA0AgASACKAIANgIAIAEgAigCBDYCBCABIAIoAgg2AgggASACKAIMNgIMIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAEgAigCHDYCHCABIAIoAiA2AiAgASACKAIkNgIkIAEgAigCKDYCKCABIAIoAiw2AiwgASACKAIwNgIwIAEgAigCNDYCNCABIAIoAjg2AjggASACKAI8NgI8IAJBQGshAiABQUBrIgEgBU0NAAsLIAEgA08NAQNAIAEgAigCADYCACACQQRqIQIgAUEEaiIBIANJDQALDAELIABBBEkNACAB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",L(S)||(S=t(S));function W(g){if(g==S&&e)return new Uint8Array(e);var i=nA(g);if(i)return i;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(g,i){var a,G=W(g);a=new WebAssembly.Module(G);var Y=new WebAssembly.Instance(a,i);return[Y,a]}function Z(){var g={a:T};function i(G,Y){var y=G.exports;return F=y,w=F.c,c(),F.j,p(F.d),K(),y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(g,i)}catch(G){n("Module.instantiateWasm callback failed with error: "+G),E(G)}var a=O(S,g);return i(a[0])}var x=g=>{for(;g.length>0;)g.shift()(A)},AA=(g,i,a)=>s.copyWithin(g,i,i+a),IA=g=>{J("OOM")},_=g=>{s.length,IA()};function $(g){var i=A["_"+g];return i}var gA=(g,i)=>{D.set(g,i)},iA=g=>{for(var i=0,a=0;a<g.length;++a){var G=g.charCodeAt(a);G<=127?i++:G<=2047?i+=2:G>=55296&&G<=57343?(i+=4,++a):i+=3}return i},CA=(g,i,a,G)=>{if(!(G>0))return 0;for(var Y=a,y=a+G-1,l=0;l<g.length;++l){var m=g.charCodeAt(l);if(m>=55296&&m<=57343){var V=g.charCodeAt(++l);m=65536+((m&1023)<<10)|V&1023}if(m<=127){if(a>=y)break;i[a++]=m}else if(m<=2047){if(a+1>=y)break;i[a++]=192|m>>6,i[a++]=128|m&63}else if(m<=65535){if(a+2>=y)break;i[a++]=224|m>>12,i[a++]=128|m>>6&63,i[a++]=128|m&63}else{if(a+3>=y)break;i[a++]=240|m>>18,i[a++]=128|m>>12&63,i[a++]=128|m>>6&63,i[a++]=128|m&63}}return i[a]=0,a-Y},QA=(g,i,a)=>CA(g,s,i,a),BA=g=>{var i=iA(g)+1,a=DA(i);return QA(g,a,i),a},oA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,eA=(g,i,a)=>{for(var G=i+a,Y=i;g[Y]&&!(Y>=G);)++Y;if(Y-i>16&&g.buffer&&oA)return oA.decode(g.subarray(i,Y));for(var y="";i<Y;){var l=g[i++];if(!(l&128)){y+=String.fromCharCode(l);continue}var m=g[i++]&63;if((l&224)==192){y+=String.fromCharCode((l&31)<<6|m);continue}var V=g[i++]&63;if((l&240)==224?l=(l&15)<<12|m<<6|V:l=(l&7)<<18|m<<12|V<<6|g[i++]&63,l<65536)y+=String.fromCharCode(l);else{var j=l-65536;y+=String.fromCharCode(55296|j>>10,56320|j&1023)}}return y},rA=(g,i)=>g?eA(s,g,i):"",sA=function(g,i,a,G,Y){var y={string:z=>{var kA=0;return z!=null&&z!==0&&(kA=BA(z)),kA},array:z=>{var kA=DA(z.length);return gA(z,kA),kA}};function l(z){return i==="string"?rA(z):i==="boolean"?!!z:z}var m=$(g),V=[],j=0;if(G)for(var tA=0;tA<G.length;tA++){var wA=y[a[tA]];wA?(j===0&&(j=RA()),V[tA]=wA(G[tA])):V[tA]=G[tA]}var MA=m.apply(null,V);function b(z){return j!==0&&aA(j),l(z)}return MA=b(MA),MA},FA=function(g,i,a,G){var Y=!a||a.every(l=>l==="number"||l==="boolean"),y=i!=="string";return y&&Y&&!G?$(g):function(){return sA(g,i,a,arguments)}},T={b:AA,a:_},EA=Z();EA.d,A._kiss_fft_free=EA.e,A._free=EA.f,A._kiss_fft_alloc=EA.g,A._malloc=EA.h,A._kiss_fft=EA.i,EA.__errno_location;var RA=EA.k,aA=EA.l,DA=EA.m;function cA(g){try{for(var i=atob(g),a=new Uint8Array(i.length),G=0;G<i.length;++G)a[G]=i.charCodeAt(G);return a}catch{throw new Error("Converting base64 string to bytes failed.")}}function nA(g){if(L(g))return cA(g.slice(u.length))}A.ccall=sA,A.cwrap=FA;var hA;U=function g(){hA||C(),hA||(U=g)};function C(){if(k>0||(M(),k>0))return;function g(){hA||(hA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),g()},1)):g()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return C(),I})})(),dA=WA({}),JA=dA.cwrap("kiss_fft_alloc","number",["number","number","number","number"]),xA=dA.cwrap("kiss_fft","void",["number","number","number"]),LA=dA.cwrap("kiss_fft_free","void",["number"]);class VA{constructor(I){this.size=I,this.fcfg=JA(this.size,!1),this.icfg=JA(this.size,!0),this.inptr=dA._malloc(this.size*8),this.cin=new Float32Array(dA.HEAPU8.buffer,this.inptr,this.size*2)}fft=function(I){const A=dA._malloc(this.size*8),r=new Float32Array(dA.HEAPU8.buffer,A,this.size*2);this.cin.set(I),xA(this.fcfg,this.inptr,A);let E=new Float32Array(this.size*2);return E.set(r),dA._free(A),E};dispose(){LA(this.fcfg),LA(this.icfg),dA._free(this.inptr)}}function fA(o){if(this.size=o|0,this.size<=1||(this.size&this.size-1)!==0)throw new Error("FFT size must be a power of two and bigger than 1");this._csize=o<<1;for(var I=new Array(this.size*2),A=0;A<I.length;A+=2){const n=Math.PI*A/this.size;I[A]=Math.cos(n),I[A+1]=-Math.sin(n)}this.table=I;for(var r=0,E=1;this.size>E;E<<=1)r++;this._width=r%2===0?r-1:r,this._bitrev=new Array(1<<this._width);for(var B=0;B<this._bitrev.length;B++){this._bitrev[B]=0;for(var Q=0;Q<this._width;Q+=2){var t=this._width-Q-2;this._bitrev[B]|=(B>>>Q&3)<<t}}this._out=null,this._data=null,this._inv=0}fA.prototype.fromComplexArray=function(I,A){for(var r=A||new Array(I.length>>>1),E=0;E<I.length;E+=2)r[E>>>1]=I[E];return r};fA.prototype.createComplexArray=function(){const I=new Array(this._csize);for(var A=0;A<I.length;A++)I[A]=0;return I};fA.prototype.toComplexArray=function(I,A){for(var r=A||this.createComplexArray(),E=0;E<r.length;E+=2)r[E]=I[E>>>1],r[E+1]=0;return r};fA.prototype.completeSpectrum=function(I){for(var A=this._csize,r=A>>>1,E=2;E<r;E+=2)I[A-E]=I[E],I[A-E+1]=-I[E+1]};fA.prototype.transform=function(I,A){if(I===A)throw new Error("Input and output buffers must be different");this._out=I,this._data=A,this._inv=0,this._transform4(),this._out=null,this._data=null};fA.prototype.realTransform=function(I,A){if(I===A)throw new Error("Input and output buffers must be different");this._out=I,this._data=A,this._inv=0,this._realTransform4(),this._out=null,this._data=null};fA.prototype.inverseTransform=function(I,A){if(I===A)throw new Error("Input and output buffers must be different");this._out=I,this._data=A,this._inv=1,this._transform4();for(var r=0;r<I.length;r++)I[r]/=this.size;this._out=null,this._data=null};fA.prototype._transform4=function(){var I=this._out,A=this._csize,r=this._width,E=1<<r,B=A/E<<1,Q,t,n=this._bitrev;if(B===4)for(Q=0,t=0;Q<A;Q+=B,t++){const c=n[t];this._singleTransform2(Q,c,E)}else for(Q=0,t=0;Q<A;Q+=B,t++){const c=n[t];this._singleTransform4(Q,c,E)}var e=this._inv?-1:1,w=this.table;for(E>>=2;E>=2;E>>=2){B=A/E<<1;var F=B>>>2;for(Q=0;Q<A;Q+=B)for(var h=Q+F,D=Q,s=0;D<h;D+=2,s+=E){const c=D,N=c+F,R=N+F,f=R+F,M=I[c],d=I[c+1],H=I[N],v=I[N+1],p=I[R],P=I[R+1],k=I[f],U=I[f+1],q=M,K=d,J=w[s],u=e*w[s+1],L=H*J-v*u,S=H*u+v*J,W=w[2*s],O=e*w[2*s+1],Z=p*W-P*O,x=p*O+P*W,AA=w[3*s],IA=e*w[3*s+1],_=k*AA-U*IA,$=k*IA+U*AA,gA=q+Z,iA=K+x,CA=q-Z,QA=K-x,BA=L+_,oA=S+$,eA=e*(L-_),rA=e*(S-$),sA=gA+BA,FA=iA+oA,T=gA-BA,EA=iA-oA,RA=CA+rA,aA=QA-eA,DA=CA-rA,cA=QA+eA;I[c]=sA,I[c+1]=FA,I[N]=RA,I[N+1]=aA,I[R]=T,I[R+1]=EA,I[f]=DA,I[f+1]=cA}}};fA.prototype._singleTransform2=function(I,A,r){const E=this._out,B=this._data,Q=B[A],t=B[A+1],n=B[A+r],e=B[A+r+1],w=Q+n,F=t+e,h=Q-n,D=t-e;E[I]=w,E[I+1]=F,E[I+2]=h,E[I+3]=D};fA.prototype._singleTransform4=function(I,A,r){const E=this._out,B=this._data,Q=this._inv?-1:1,t=r*2,n=r*3,e=B[A],w=B[A+1],F=B[A+r],h=B[A+r+1],D=B[A+t],s=B[A+t+1],c=B[A+n],N=B[A+n+1],R=e+D,f=w+s,M=e-D,d=w-s,H=F+c,v=h+N,p=Q*(F-c),P=Q*(h-N),k=R+H,U=f+v,q=M+P,K=d-p,J=R-H,u=f-v,L=M-P,S=d+p;E[I]=k,E[I+1]=U,E[I+2]=q,E[I+3]=K,E[I+4]=J,E[I+5]=u,E[I+6]=L,E[I+7]=S};fA.prototype._realTransform4=function(){var I=this._out,A=this._csize,r=this._width,E=1<<r,B=A/E<<1,Q,t,n=this._bitrev;if(B===4)for(Q=0,t=0;Q<A;Q+=B,t++){const tA=n[t];this._singleRealTransform2(Q,tA>>>1,E>>>1)}else for(Q=0,t=0;Q<A;Q+=B,t++){const tA=n[t];this._singleRealTransform4(Q,tA>>>1,E>>>1)}var e=this._inv?-1:1,w=this.table;for(E>>=2;E>=2;E>>=2){B=A/E<<1;var F=B>>>1,h=F>>>1,D=h>>>1;for(Q=0;Q<A;Q+=B)for(var s=0,c=0;s<=D;s+=2,c+=E){var N=Q+s,R=N+h,f=R+h,M=f+h,d=I[N],H=I[N+1],v=I[R],p=I[R+1],P=I[f],k=I[f+1],U=I[M],q=I[M+1],K=d,J=H,u=w[c],L=e*w[c+1],S=v*u-p*L,W=v*L+p*u,O=w[2*c],Z=e*w[2*c+1],x=P*O-k*Z,AA=P*Z+k*O,IA=w[3*c],_=e*w[3*c+1],$=U*IA-q*_,gA=U*_+q*IA,iA=K+x,CA=J+AA,QA=K-x,BA=J-AA,oA=S+$,eA=W+gA,rA=e*(S-$),sA=e*(W-gA),FA=iA+oA,T=CA+eA,EA=QA+sA,RA=BA-rA;if(I[N]=FA,I[N+1]=T,I[R]=EA,I[R+1]=RA,s===0){var aA=iA-oA,DA=CA-eA;I[f]=aA,I[f+1]=DA;continue}if(s!==D){var cA=QA,nA=-BA,hA=iA,C=-CA,g=-e*sA,i=-e*rA,a=-e*eA,G=-e*oA,Y=cA+g,y=nA+i,l=hA+G,m=C-a,V=Q+h-s,j=Q+F-s;I[V]=Y,I[V+1]=y,I[j]=l,I[j+1]=m}}}};fA.prototype._singleRealTransform2=function(I,A,r){const E=this._out,B=this._data,Q=B[A],t=B[A+r],n=Q+t,e=Q-t;E[I]=n,E[I+1]=0,E[I+2]=e,E[I+3]=0};fA.prototype._singleRealTransform4=function(I,A,r){const E=this._out,B=this._data,Q=this._inv?-1:1,t=r*2,n=r*3,e=B[A],w=B[A+r],F=B[A+t],h=B[A+n],D=e+F,s=e-F,c=w+h,N=Q*(w-h),R=D+c,f=s,M=-N,d=D-c,H=s,v=N;E[I]=R,E[I+1]=0,E[I+2]=f,E[I+3]=M,E[I+4]=d,E[I+5]=0,E[I+6]=H,E[I+7]=v};class KA{constructor(I){this.size=I,this.indutnyFft=new fA(I)}fft(I){const A=new Float32Array(2*this.size);return this.indutnyFft.transform(A,I),A}}var jA=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((C,g)=>{r=C,E=g});var B=Object.assign({},A),Q="";function t(C){return A.locateFile?A.locateFile(C,Q):Q+C}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var C=w.buffer;A.HEAP8=D=new Int8Array(C),A.HEAP16=new Int16Array(C),A.HEAP32=new Int32Array(C),A.HEAPU8=s=new Uint8Array(C),A.HEAPU16=new Uint16Array(C),A.HEAPU32=new Uint32Array(C),A.HEAPF32=new Float32Array(C),A.HEAPF64=new Float64Array(C)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(C){N.unshift(C)}function p(C){R.unshift(C)}function P(C){f.unshift(C)}var k=0,U=null;function q(C){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(C){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var g=U;U=null,g()}}function J(C){A.onAbort&&A.onAbort(C),C="Aborted("+C+")",n(C),h=!0,C+=". Build with -sASSERTIONS for more info.";var g=new WebAssembly.RuntimeError(C);throw E(g),g}var u="data:application/octet-stream;base64,";function L(C){return C.startsWith(u)}var S;S="data:application/octet-stream;base64,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ACACSwRAQbgeIAI2AgALIAIgBmohAUHoISEAAkACQAJAA0AgASAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HoISEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxaiIHIAVBA3I2AgQgAUF4IAFrQQdxaiIGIAUgB2oiBWshACADIAZGBEBBwB4gBTYCAEG0HkG0HigCACAAaiIANgIAIAUgAEEBcjYCBAwIC0G8HigCACAGRgRAQbweIAU2AgBBsB5BsB4oAgAgAGoiADYCACAFIABBAXI2AgQgACAFaiAANgIADAgLIAYoAgQiA0EDcUEBRw0GIANBeHEhCSADQf8BTQRAIAYoAgwiASAGKAIIIgJGBEBBqB5BqB4oAgBBfiADQQN2d3E2AgAMBwsgAiABNgIMIAEgAjYCCAwGCyAGKAIYIQggBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAULIAZBFGoiASgCACIDRQRAIAYoAhAiA0UNBCAGQRBqIQELA0AgASEEIAMiAkEUaiIBKAIAIgMNACACQRBqIQEgAigCECIDDQALIARBADYCAAwEC0G0HiAGQShrIgBBeCACa0EHcSIBayIINgIAQcAeIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQcQeQZAiKAIANgIAIAMgBEEnIARrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQfAhKQIANwIQIAFB6CEpAgA3AghB8CEgAUEIajYCAEHsISAGNgIAQeghIAI2AgBB9CFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiECIABBBGohACACIARJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAIAJB/wFNBEAgAkF4cUHQHmohAAJ/QageKAIAIgFBASACQQN2dCICcUUEQEGoHiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyEAIAJB////B00EQCACQSYgAkEIdmciAGt2QQFxIABBAXRrQT5qIQALIAMgADYCHCADQgA3AhAgAEECdEHY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",L(S)||(S=t(S));function W(C){if(C==S&&e)return new Uint8Array(e);var g=cA(C);if(g)return g;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(C,g){var i,a=W(C);i=new WebAssembly.Module(a);var G=new WebAssembly.Instance(i,g);return[G,i]}function Z(){var C={a:FA};function g(a,G){var Y=a.exports;return F=Y,w=F.b,c(),F.e,p(F.c),K(),Y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(C,g)}catch(a){n("Module.instantiateWasm callback failed with error: "+a),E(a)}var i=O(S,C);return g(i[0])}var x=C=>{for(;C.length>0;)C.shift()(A)},AA=C=>{J("OOM")},IA=C=>{s.length,AA()};function _(C){var g=A["_"+C];return g}var $=(C,g)=>{D.set(C,g)},gA=C=>{for(var g=0,i=0;i<C.length;++i){var a=C.charCodeAt(i);a<=127?g++:a<=2047?g+=2:a>=55296&&a<=57343?(g+=4,++i):g+=3}return g},iA=(C,g,i,a)=>{if(!(a>0))return 0;for(var G=i,Y=i+a-1,y=0;y<C.length;++y){var l=C.charCodeAt(y);if(l>=55296&&l<=57343){var m=C.charCodeAt(++y);l=65536+((l&1023)<<10)|m&1023}if(l<=127){if(i>=Y)break;g[i++]=l}else if(l<=2047){if(i+1>=Y)break;g[i++]=192|l>>6,g[i++]=128|l&63}else if(l<=65535){if(i+2>=Y)break;g[i++]=224|l>>12,g[i++]=128|l>>6&63,g[i++]=128|l&63}else{if(i+3>=Y)break;g[i++]=240|l>>18,g[i++]=128|l>>12&63,g[i++]=128|l>>6&63,g[i++]=128|l&63}}return g[i]=0,i-G},CA=(C,g,i)=>iA(C,s,g,i),QA=C=>{var g=gA(C)+1,i=aA(g);return CA(C,i,g),i},BA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,oA=(C,g,i)=>{for(var a=g+i,G=g;C[G]&&!(G>=a);)++G;if(G-g>16&&C.buffer&&BA)return BA.decode(C.subarray(g,G));for(var Y="";g<G;){var y=C[g++];if(!(y&128)){Y+=String.fromCharCode(y);continue}var l=C[g++]&63;if((y&224)==192){Y+=String.fromCharCode((y&31)<<6|l);continue}var m=C[g++]&63;if((y&240)==224?y=(y&15)<<12|l<<6|m:y=(y&7)<<18|l<<12|m<<6|C[g++]&63,y<65536)Y+=String.fromCharCode(y);else{var V=y-65536;Y+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return Y},eA=(C,g)=>C?oA(s,C,g):"",rA=function(C,g,i,a,G){var Y={string:b=>{var z=0;return b!=null&&b!==0&&(z=QA(b)),z},array:b=>{var z=aA(b.length);return $(b,z),z}};function y(b){return g==="string"?eA(b):g==="boolean"?!!b:b}var l=_(C),m=[],V=0;if(a)for(var j=0;j<a.length;j++){var tA=Y[i[j]];tA?(V===0&&(V=EA()),m[j]=tA(a[j])):m[j]=a[j]}var wA=l.apply(null,m);function MA(b){return V!==0&&RA(V),y(b)}return wA=MA(wA),wA},sA=function(C,g,i,a){var G=!i||i.every(y=>y==="number"||y==="boolean"),Y=g!=="string";return Y&&G&&!a?_(C):function(){return rA(C,g,i,arguments)}},FA={a:IA},T=Z();T.c,A._fftCross=T.d,T.__errno_location,A._malloc=T.f,A._free=T.g;var EA=T.h,RA=T.i,aA=T.j;function DA(C){try{for(var g=atob(C),i=new Uint8Array(g.length),a=0;a<g.length;++a)i[a]=g.charCodeAt(a);return i}catch{throw new Error("Converting base64 string to bytes failed.")}}function cA(C){if(L(C))return DA(C.slice(u.length))}A.ccall=rA,A.cwrap=sA;var nA;U=function C(){nA||hA(),nA||(U=C)};function hA(){if(k>0||(M(),k>0))return;function C(){nA||(nA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),C()},1)):C()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return hA(),I})})(),YA=jA({}),XA=YA.cwrap("fftCross","void",["number","number","number","number","number","number"]);function OA(o){this.size=o,this.n=o*8,this.ptr=YA._malloc(this.n*4),this.ri=new Uint8Array(YA.HEAPU8.buffer,this.ptr,this.n),this.ii=new Uint8Array(YA.HEAPU8.buffer,this.ptr+this.n,this.n),this.transform=function(I,A,r){var E=this.ptr,B=this.n;this.ri.set(new Uint8Array(I.buffer)),this.ii.set(new Uint8Array(A.buffer)),XA(this.size,r,E,E+B,E+B*2,E+B*3);var Q=new Float64Array(YA.HEAPU8.buffer,E+B*2,this.size),t=new Float64Array(YA.HEAPU8.buffer,E+B*3,this.size);return{real:Q,imag:t}},this.dispose=function(){YA._free(this.ptr)}}class ZA{constructor(I){this.size=I,this.fftcross=new OA(I),this.real=new Float64Array(this.size),this.imag=new Float64Array(this.size)}fft(I){for(var A=0;A<this.size;A++)this.real[A]=I[2*A],this.imag[A]=I[2*A+1];const r=this.fftcross.transform(this.real,this.imag,!1),E=new Float32Array(2*this.size);for(var A=0;A<this.size;A++)E[2*A]=r.real[A],E[2*A+1]=r.imag[A];return E}}function zA(o){this.n=o,this.levels=-1;for(var I=0;I<32;I++)1<<I==o&&(this.levels=I);if(this.levels==-1)throw"Length is not a power of 2";this.cosTable=new Array(o/2),this.sinTable=new Array(o/2);for(var I=0;I<o/2;I++)this.cosTable[I]=Math.cos(2*Math.PI*I/o),this.sinTable[I]=Math.sin(2*Math.PI*I/o);this.forward=function(A,r){for(var E=this.n,B=0;B<E;B++){var Q=s(B,this.levels);if(Q>B){var t=A[B];A[B]=A[Q],A[Q]=t,t=r[B],r[B]=r[Q],r[Q]=t}}for(var n=2;n<=E;n*=2)for(var e=n/2,w=E/n,B=0;B<E;B+=n)for(var Q=B,F=0;Q<B+e;Q++,F+=w){var h=A[Q+e]*this.cosTable[F]+r[Q+e]*this.sinTable[F],D=-A[Q+e]*this.sinTable[F]+r[Q+e]*this.cosTable[F];A[Q+e]=A[Q]-h,r[Q+e]=r[Q]-D,A[Q]+=h,r[Q]+=D}function s(c,N){for(var R=0,f=0;f<N;f++)R=R<<1|c&1,c>>>=1;return R}},this.inverse=function(A,r){forward(r,A)}}class _A{constructor(I){this.size=I,this.fftNayuki=new zA(I)}fft(I){const A=new Float32Array(this.size),r=new Float32Array(this.size),E=new Float32Array(this.size*2);for(var B=0;B<this.size;++B)A[B]=I[B*2],r[B]=I[B*2+1];this.fftNayuki.forward(A,r);for(var B=0;B<this.size;++B)E[B*2]=A[B],E[B*2+1]=r[B];return E}}var $A=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((C,g)=>{r=C,E=g});var B=Object.assign({},A),Q="";function t(C){return A.locateFile?A.locateFile(C,Q):Q+C}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var C=w.buffer;A.HEAP8=D=new Int8Array(C),A.HEAP16=new Int16Array(C),A.HEAP32=new Int32Array(C),A.HEAPU8=s=new Uint8Array(C),A.HEAPU16=new Uint16Array(C),A.HEAPU32=new Uint32Array(C),A.HEAPF32=new Float32Array(C),A.HEAPF64=new Float64Array(C)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(C){N.unshift(C)}function p(C){R.unshift(C)}function P(C){f.unshift(C)}var k=0,U=null;function q(C){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(C){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var g=U;U=null,g()}}function J(C){A.onAbort&&A.onAbort(C),C="Aborted("+C+")",n(C),h=!0,C+=". Build with -sASSERTIONS for more info.";var g=new WebAssembly.RuntimeError(C);throw E(g),g}var u="data:application/octet-stream;base64,";function L(C){return C.startsWith(u)}var S;S="data:application/octet-stream;base64,AGFzbQEAAAABNgpgAX8Bf2ABfwBgBH9/f38AYAN8fH8BfGACfHwBfGACfH8BfGABfAF8YAAAYAJ8fwF/YAABfwIHAQFhAWEAAAMSEQEAAAMEBQYHCAECAgAAAQkABAUBcAEBAQUGAQGAAoACBggBfwFBoKIECwc5DgFiAgABYwAIAWQAAgFlAAEBZgARAWcADQFoAAoBaQAKAWoADAFrAAsBbAEAAW0AEAFuAA8BbwAOCvdfEdILAQd/AkAgAEUNACAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUEDcUUNASACIAIoAgAiAWsiAkG4HigCAEkNASAAIAFqIQACQAJAQbweKAIAIAJHBEAgAUH/AU0EQCABQQN2IQQgAigCDCIBIAIoAggiA0YEQEGoHkGoHigCAEF+IAR3cTYCAAwFCyADIAE2AgwgASADNgIIDAQLIAIoAhghBiACIAIoAgwiAUcEQCACKAIIIgMgATYCDCABIAM2AggMAwsgAkEUaiIEKAIAIgNFBEAgAigCECIDRQ0CIAJBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUoAgQiAUEDcUEDRw0CQbAeIAA2AgAgBSABQX5xNgIEIAIgAEEBcjYCBCAFIAA2AgAPC0EAIQELIAZFDQACQCACKAIcIgNBAnRB2CBqIgQoAgAgAkYEQCAEIAE2AgAgAQ0BQaweQaweKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgAkYbaiABNgIAIAFFDQELIAEgBjYCGCACKAIQIgMEQCABIAM2AhAgAyABNgIYCyACKAIUIgNFDQAgASADNgIUIAMgATYCGAsgAiAFTw0AIAUoAgQiAUEBcUUNAAJAAkACQAJAIAFBAnFFBEBBwB4oAgAgBUYEQEHAHiACNgIAQbQeQbQeKAIAIABqIgA2AgAgAiAAQQFyNgIEIAJBvB4oAgBHDQZBsB5BADYCAEG8HkEANgIADwtBvB4oAgAgBUYEQEG8HiACNgIAQbAeQbAeKAIAIABqIgA2AgAgAiAAQQFyNgIEIAAgAmogADYCAA8LIAFBeHEgAGohACABQf8BTQRAIAFBA3YhBCAFKAIMIgEgBSgCCCIDRgRAQageQageKAIAQX4gBHdxNgIADAULIAMgATYCDCABIAM2AggMBAsgBSgCGCEGIAUgBSgCDCIBRwRAQbgeKAIAGiAFKAIIIgMgATYCDCABIAM2AggMAwsgBUEUaiIEKAIAIgNFBEAgBSgCECIDRQ0CIAVBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUgAUF+cTYCBCACIABBAXI2AgQgACACaiAANgIADAMLQQAhAQsgBkUNAAJAIAUoAhwiA0ECdEHYIGoiBCgCACAFRgRAIAQgATYCACABDQFBrB5BrB4oAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAwRAIAEgAzYCECADIAE2AhgLIAUoAhQiA0UNACABIAM2AhQgAyABNgIYCyACIABBAXI2AgQgACACaiAANgIAIAJBvB4oAgBHDQBBsB4gADYCAA8LIABB/wFNBEAgAEF4cUHQHmohAQJ/QageKAIAIgNBASAAQQN2dCIAcUUEQEGoHiAAIANyNgIAIAEMAQsgASgCCAshACABIAI2AgggACACNgIMIAIgATYCDCACIAA2AggPC0EfIQMgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohAwsgAiADNgIcIAJCADcCECADQQJ0QdggaiEBAkACQAJAQaweKAIAIgRBASADdCIHcUUEQEGsHiAEIAdyNgIAIAEgAjYCACACIAE2AhgMAQsgAEEZIANBAXZrQQAgA0EfRxt0IQMgASgCACEBA0AgASIEKAIEQXhxIABGDQIgA0EddiEBIANBAXQhAyAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAI2AhAgAiAENgIYCyACIAI2AgwgAiACNgIIDAELIAQoAggiACACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgADYCCAtByB5ByB4oAgBBAWsiAEF/IAAbNgIACwvGJwELfyMAQRBrIgokAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEGoHigCACIGQRAgAEELakF4cSAAQQtJGyIFQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQdAeaiIAIAFB2B5qKAIAIgEoAggiBEYEQEGoHiAGQX4gAndxNgIADAELIAQgADYCDCAAIAQ2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgCBEEBcjYCBAwPCyAFQbAeKAIAIgdNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIBQQN0IgBB0B5qIgIgAEHYHmooAgAiACgCCCIERgRAQageIAZBfiABd3EiBjYCAAwBCyAEIAI2AgwgAiAENgIICyAAIAVBA3I2AgQgACAFaiIIIAFBA3QiASAFayIEQQFyNgIEIAAgAWogBDYCACAHBEAgB0F4cUHQHmohAUG8HigCACECAn8gBkEBIAdBA3Z0IgNxRQRAQageIAMgBnI2AgAgAQwBCyABKAIICyEDIAEgAjYCCCADIAI2AgwgAiABNgIMIAIgAzYCCAsgAEEIaiEAQbweIAg2AgBBsB4gBDYCAAwPC0GsHigCACILRQ0BIAtoQQJ0QdggaigCACICKAIEQXhxIAVrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAVrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgRHBEBBuB4oAgAaIAIoAggiACAENgIMIAQgADYCCAwOCyACQRRqIgEoAgAiAEUEQCACKAIQIgBFDQMgAkEQaiEBCwNAIAEhCCAAIgRBFGoiASgCACIADQAgBEEQaiEBIAQoAhAiAA0ACyAIQQA2AgAMDQtBfyEFIABBv39LDQAgAEELaiIAQXhxIQVBrB4oAgAiCEUNAEEAIAVrIQMCQAJAAkACf0EAIAVBgAJJDQAaQR8gBUH///8HSw0AGiAFQSYgAEEIdmciAGt2QQFxIABBAXRrQT5qCyIHQQJ0QdggaigCACIBRQRAQQAhAAwBC0EAIQAgBUEZIAdBAXZrQQAgB0EfRxt0IQIDQAJAIAEoAgRBeHEgBWsiBiADTw0AIAEhBCAGIgMNAEEAIQMgASEADAMLIAAgASgCFCIGIAYgASACQR12QQRxaigCECIBRhsgACAGGyEAIAJBAXQhAiABDQALCyAAIARyRQRAQQAhBEECIAd0IgBBACAAa3IgCHEiAEUNAyAAaEECdEHYIGooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAVrIgIgA0khASACIAMgARshAyAAIAQgARshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBsB4oAgAgBWtPDQAgBCgCGCEHIAQgBCgCDCICRwRAQbgeKAIAGiAEKAIIIgAgAjYCDCACIAA2AggMDAsgBEEUaiIBKAIAIgBFBEAgBCgCECIARQ0DIARBEGohAQsDQCABIQYgACICQRRqIgEoAgAiAA0AIAJBEGohASACKAIQIgANAAsgBkEANgIADAsLIAVBsB4oAgAiBE0EQEG8HigCACEAAkAgBCAFayIBQRBPBEAgACAFaiICIAFBAXI2AgQgACAEaiABNgIAIAAgBUEDcjYCBAwBCyAAIARBA3I2AgQgACAEaiIBIAEoAgRBAXI2AgRBACECQQAhAQtBsB4gATYCAEG8HiACNgIAIABBCGohAAwNCyAFQbQeKAIAIgJJBEBBtB4gAiAFayIBNgIAQcAeQcAeKAIAIgAgBWoiAjYCACACIAFBAXI2AgQgACAFQQNyNgIEIABBCGohAAwNC0EAIQAgBUEvaiIDAn9BgCIoAgAEQEGIIigCAAwBC0GMIkJ/NwIAQYQiQoCggICAgAQ3AgBBgCIgCkEMakFwcUHYqtWqBXM2AgBBlCJBADYCAEHkIUEANgIAQYAgCyIBaiIGQQAgAWsiCHEiASAFTQ0MQeAhKAIAIgQEQEHYISgCACIHIAFqIgkgB00NDSAEIAlJDQ0LAkBB5CEtAABBBHFFBEACQAJAAkACQEHAHigCACIEBEBB6CEhAANAIAQgACgCACIHTwRAIAcgACgCBGogBEsNAwsgACgCCCIADQALC0EAEAMiAkF/Rg0DIAEhBkGEIigCACIAQQFrIgQgAnEEQCABIAJrIAIgBGpBACAAa3FqIQYLIAUgBk8NA0HgISgCACIABEBB2CEoAgAiBCAGaiIIIARNDQQgACAISQ0ECyAGEAMiACACRw0BDAULIAYgAmsgCHEiBhADIgIgACgCACAAKAIEakYNASACIQALIABBf0YNASAFQTBqIAZNBEAgACECDAQLQYgiKAIAIgIgAyAGa2pBACACa3EiAhADQX9GDQEgAiAGaiEGIAAhAgwDCyACQX9HDQILQeQhQeQhKAIAQQRyNgIACyABEAMhAkEAEAMhACACQX9GDQUgAEF/Rg0FIAAgAk0NBSAAIAJrIgYgBUEoak0NBQtB2CFB2CEoAgAgBmoiADYCAEHcISgCACAASQRAQdwhIAA2AgALAkBBwB4oAgAiAwRAQeghIQADQCACIAAoAgAiASAAKAIEIgRqRg0CIAAoAggiAA0ACwwEC0G4HigCACIAQQAgACACTRtFBEBBuB4gAjYCAAtBACEAQewhIAY2AgBB6CEgAjYCAEHIHkF/NgIAQcweQYAiKAIANgIAQfQhQQA2AgADQCAAQQN0IgFB2B5qIAFB0B5qIgQ2AgAgAUHcHmogBDYCACAAQQFqIgBBIEcNAAtBtB4gBkEoayIAQXggAmtBB3EiAWsiBDYCAEHAHiABIAJqIgE2AgAgASAEQQFyNgIEIAAgAmpBKDYCBEHEHkGQIigCADYCAAwECyACIANNDQIgASADSw0CIAAoAgxBCHENAiAAIAQgBmo2AgRBwB4gA0F4IANrQQdxIgBqIgE2AgBBtB5BtB4oAgAgBmoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRBxB5BkCIoAgA2AgAMAwtBACEEDAoLQQAhAgwIC0G4HigCACACSwRAQbgeIAI2AgALIAIgBmohAUHoISEAAkACQAJAA0AgASAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HoISEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxaiIHIAVBA3I2AgQgAUF4IAFrQQdxaiIGIAUgB2oiBWshACADIAZGBEBBwB4gBTYCAEG0HkG0HigCACAAaiIANgIAIAUgAEEBcjYCBAwIC0G8HigCACAGRgRAQbweIAU2AgBBsB5BsB4oAgAgAGoiADYCACAFIABBAXI2AgQgACAFaiAANgIADAgLIAYoAgQiA0EDcUEBRw0GIANBeHEhCSADQf8BTQRAIAYoAgwiASAGKAIIIgJGBEBBqB5BqB4oAgBBfiADQQN2d3E2AgAMBwsgAiABNgIMIAEgAjYCCAwGCyAGKAIYIQggBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAULIAZBFGoiASgCACIDRQRAIAYoAhAiA0UNBCAGQRBqIQELA0AgASEEIAMiAkEUaiIBKAIAIgMNACACQRBqIQEgAigCECIDDQALIARBADYCAAwEC0G0HiAGQShrIgBBeCACa0EHcSIBayIINgIAQcAeIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQcQeQZAiKAIANgIAIAMgBEEnIARrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQfAhKQIANwIQIAFB6CEpAgA3AghB8CEgAUEIajYCAEHsISAGNgIAQeghIAI2AgBB9CFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiECIABBBGohACACIARJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAIAJB/wFNBEAgAkF4cUHQHmohAAJ/QageKAIAIgFBASACQQN2dCICcUUEQEGoHiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyEAIAJB////B00EQCACQSYgAkEIdmciAGt2QQFxIABBAXRrQT5qIQALIAMgADYCHCADQgA3AhAgAEECdEHYIGohAQJAAkBBrB4oAgAiBEEBIAB0IgZxRQRAQaweIAQgBnI2AgAgASADNgIADAELIAJBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBANAIAQiASgCBEF4cSACRg0CIABBHXYhBCAAQQF0IQAgASAEQQRxaiIGKAIQIgQNAAsgBiADNgIQCyADIAE2AhggAyADNgIMIAMgAzYCCAwBCyABKAIIIgAgAzYCDCABIAM2AgggA0EANgIYIAMgATYCDCADIAA2AggLQbQeKAIAIgAgBU0NAEG0HiAAIAVrIgE2AgBBwB5BwB4oAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAgLQaQeQTA2AgBBACEADAcLQQAhAgsgCEUNAAJAIAYoAhwiAUECdEHYIGoiBCgCACAGRgRAIAQgAjYCACACDQFBrB5BrB4oAgBBfiABd3E2AgAMAgsgCEEQQRQgCCgCECAGRhtqIAI2AgAgAkUNAQsgAiAINgIYIAYoAhAiAQRAIAIgATYCECABIAI2AhgLIAYoAhQiAUUNACACIAE2AhQgASACNgIYCyAAIAlqIQAgBiAJaiIGKAIEIQMLIAYgA0F+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",L(S)||(S=t(S));function W(C){if(C==S&&e)return new Uint8Array(e);var g=cA(C);if(g)return g;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(C,g){var i,a=W(C);i=new WebAssembly.Module(a);var G=new WebAssembly.Instance(i,g);return[G,i]}function Z(){var C={a:FA};function g(a,G){var Y=a.exports;return F=Y,w=F.b,c(),F.l,p(F.c),K(),Y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(C,g)}catch(a){n("Module.instantiateWasm callback failed with error: "+a),E(a)}var i=O(S,C);return g(i[0])}var x=C=>{for(;C.length>0;)C.shift()(A)},AA=C=>{J("OOM")},IA=C=>{s.length,AA()};function _(C){var g=A["_"+C];return g}var $=(C,g)=>{D.set(C,g)},gA=C=>{for(var g=0,i=0;i<C.length;++i){var a=C.charCodeAt(i);a<=127?g++:a<=2047?g+=2:a>=55296&&a<=57343?(g+=4,++i):g+=3}return g},iA=(C,g,i,a)=>{if(!(a>0))return 0;for(var G=i,Y=i+a-1,y=0;y<C.length;++y){var l=C.charCodeAt(y);if(l>=55296&&l<=57343){var m=C.charCodeAt(++y);l=65536+((l&1023)<<10)|m&1023}if(l<=127){if(i>=Y)break;g[i++]=l}else if(l<=2047){if(i+1>=Y)break;g[i++]=192|l>>6,g[i++]=128|l&63}else if(l<=65535){if(i+2>=Y)break;g[i++]=224|l>>12,g[i++]=128|l>>6&63,g[i++]=128|l&63}else{if(i+3>=Y)break;g[i++]=240|l>>18,g[i++]=128|l>>12&63,g[i++]=128|l>>6&63,g[i++]=128|l&63}}return g[i]=0,i-G},CA=(C,g,i)=>iA(C,s,g,i),QA=C=>{var g=gA(C)+1,i=aA(g);return CA(C,i,g),i},BA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,oA=(C,g,i)=>{for(var a=g+i,G=g;C[G]&&!(G>=a);)++G;if(G-g>16&&C.buffer&&BA)return BA.decode(C.subarray(g,G));for(var Y="";g<G;){var y=C[g++];if(!(y&128)){Y+=String.fromCharCode(y);continue}var l=C[g++]&63;if((y&224)==192){Y+=String.fromCharCode((y&31)<<6|l);continue}var m=C[g++]&63;if((y&240)==224?y=(y&15)<<12|l<<6|m:y=(y&7)<<18|l<<12|m<<6|C[g++]&63,y<65536)Y+=String.fromCharCode(y);else{var V=y-65536;Y+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return Y},eA=(C,g)=>C?oA(s,C,g):"",rA=function(C,g,i,a,G){var Y={string:b=>{var z=0;return b!=null&&b!==0&&(z=QA(b)),z},array:b=>{var z=aA(b.length);return $(b,z),z}};function y(b){return g==="string"?eA(b):g==="boolean"?!!b:b}var l=_(C),m=[],V=0;if(a)for(var j=0;j<a.length;j++){var tA=Y[i[j]];tA?(V===0&&(V=EA()),m[j]=tA(a[j])):m[j]=a[j]}var wA=l.apply(null,m);function MA(b){return V!==0&&RA(V),y(b)}return wA=MA(wA),wA},sA=function(C,g,i,a){var G=!i||i.every(y=>y==="number"||y==="boolean"),Y=g!=="string";return Y&&G&&!a?_(C):function(){return rA(C,g,i,arguments)}},FA={a:IA},T=Z();T.c,A._malloc=T.d,A._free=T.e,A._precalc=T.f,A._precalc_f=T.g,A._dispose=T.h,A._dispose_f=T.i,A._transform_radix2_precalc=T.j,A._transform_radix2_precalc_f=T.k,T.__errno_location;var EA=T.m,RA=T.n,aA=T.o;function DA(C){try{for(var g=atob(C),i=new Uint8Array(g.length),a=0;a<g.length;++a)i[a]=g.charCodeAt(a);return i}catch{throw new Error("Converting base64 string to bytes failed.")}}function cA(C){if(L(C))return DA(C.slice(u.length))}A.ccall=rA,A.cwrap=sA;var nA;U=function C(){nA||hA(),nA||(U=C)};function hA(){if(k>0||(M(),k>0))return;function C(){nA||(nA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),C()},1)):C()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return hA(),I})})(),yA=$A({});yA.cwrap("precalc","number",["number"]);yA.cwrap("dispose","void",["number"]);yA.cwrap("transform_radix2_precalc","void",["number","number","number","number"]);var AI=yA.cwrap("precalc_f","number",["number"]),II=yA.cwrap("dispose_f","void",["number"]),gI=yA.cwrap("transform_radix2_precalc_f","void",["number","number","number","number"]);function CI(o){this.n=o,this.rptr=yA._malloc(o*4+o*4),this.iptr=this.rptr+o*4,this.rarr=new Float32Array(yA.HEAPU8.buffer,this.rptr,o),this.iarr=new Float32Array(yA.HEAPU8.buffer,this.iptr,o),this.tables=AI(o),this.forward=function(I,A){this.rarr.set(I),this.iarr.set(A),gI(this.rptr,this.iptr,this.n,this.tables),I.set(this.rarr),A.set(this.iarr)},this.dispose=function(){yA._free(this.rptr),II(this.tables)}}class BI{constructor(I){this.size=I,this.fftNayuki=new CI(I)}fft(I){const A=new Float32Array(this.size),r=new Float32Array(this.size),E=new Float32Array(this.size*2);for(var B=0;B<this.size;++B)A[B]=I[B*2],r[B]=I[B*2+1];this.fftNayuki.forward(A,r);for(var B=0;B<this.size;++B)E[B*2]=A[B],E[B*2+1]=r[B];return E}}if(!vA)var vA={};(function(o){function I(t,n,e,w,F,h){for(var D=F.twiddle,s=0;s<h;s++){var c=t[2*(n+e*s)],N=t[2*(n+e*s)+1],R=t[2*(n+e*(s+h))],f=t[2*(n+e*(s+h))+1],M=D[2*(0+w*s)],d=D[2*(0+w*s)+1],H=R*M-f*d,v=R*d+f*M,p=c+H,P=N+v,k=c-H,U=N-v;t[2*(n+e*s)]=p,t[2*(n+e*s)+1]=P,t[2*(n+e*(s+h))]=k,t[2*(n+e*(s+h))+1]=U}}function A(t,n,e,w,F,h){for(var D=F.twiddle,s=h,c=2*h,N=w,R=2*w,f=D[2*(0+w*h)+1],M=0;M<h;M++){var d=t[2*(n+e*M)],H=t[2*(n+e*M)+1],v=t[2*(n+e*(M+s))],p=t[2*(n+e*(M+s))+1],P=D[2*(0+N*M)],k=D[2*(0+N*M)+1],U=v*P-p*k,q=v*k+p*P,K=t[2*(n+e*(M+c))],J=t[2*(n+e*(M+c))+1],u=D[2*(0+R*M)],L=D[2*(0+R*M)+1],S=K*u-J*L,W=K*L+J*u,O=U+S,Z=q+W,x=d+O,AA=H+Z;t[2*(n+e*M)]=x,t[2*(n+e*M)+1]=AA;var IA=d-O*.5,_=H-Z*.5,$=(U-S)*f,gA=(q-W)*f,iA=IA-gA,CA=_+$;t[2*(n+e*(M+s))]=iA,t[2*(n+e*(M+s))+1]=CA;var QA=IA+gA,BA=_-$;t[2*(n+e*(M+c))]=QA,t[2*(n+e*(M+c))+1]=BA}}function r(t,n,e,w,F,h){for(var D=F.twiddle,s=h,c=2*h,N=3*h,R=w,f=2*w,M=3*w,d=0;d<h;d++){var H=t[2*(n+e*d)],v=t[2*(n+e*d)+1],p=t[2*(n+e*(d+s))],P=t[2*(n+e*(d+s))+1],k=D[2*(0+R*d)],U=D[2*(0+R*d)+1],q=p*k-P*U,K=p*U+P*k,J=t[2*(n+e*(d+c))],u=t[2*(n+e*(d+c))+1],L=D[2*(0+f*d)],S=D[2*(0+f*d)+1],W=J*L-u*S,O=J*S+u*L,Z=t[2*(n+e*(d+N))],x=t[2*(n+e*(d+N))+1],AA=D[2*(0+M*d)],IA=D[2*(0+M*d)+1],_=Z*AA-x*IA,$=Z*IA+x*AA,gA=H+W,iA=v+O,CA=H-W,QA=v-O,BA=q+_,oA=K+$,eA=q-_,rA=K-$,sA=gA+BA,FA=iA+oA;if(F.inverse)var T=CA-rA,EA=QA+eA;else var T=CA+rA,EA=QA-eA;var RA=gA-BA,aA=iA-oA;if(F.inverse)var DA=CA+rA,cA=QA-eA;else var DA=CA-rA,cA=QA+eA;t[2*(n+e*d)]=sA,t[2*(n+e*d)+1]=FA,t[2*(n+e*(d+s))]=T,t[2*(n+e*(d+s))+1]=EA,t[2*(n+e*(d+c))]=RA,t[2*(n+e*(d+c))+1]=aA,t[2*(n+e*(d+N))]=DA,t[2*(n+e*(d+N))+1]=cA}}function E(t,n,e,w,F,h,D){for(var s=F.twiddle,c=F.n,N=new Float64Array(2*D),R=0;R<h;R++){for(var f=0,M=R;f<D;f++,M+=h){var d=t[2*(n+e*M)],H=t[2*(n+e*M)+1];N[2*f]=d,N[2*f+1]=H}for(var f=0,M=R;f<D;f++,M+=h){var v=0,d=N[0],H=N[1];t[2*(n+e*M)]=d,t[2*(n+e*M)+1]=H;for(var p=1;p<D;p++){v=(v+w*M)%c;var P=t[2*(n+e*M)],k=t[2*(n+e*M)+1],U=N[2*p],q=N[2*p+1],K=s[2*v],J=s[2*v+1],u=U*K-q*J,L=U*J+q*K,S=P+u,W=k+L;t[2*(n+e*M)]=S,t[2*(n+e*M)+1]=W}}}}function B(t,n,e,w,F,h,D,s,c){var N=s.shift(),R=s.shift();if(R==1)for(var f=0;f<N*R;f++){var M=w[2*(F+h*D*f)],d=w[2*(F+h*D*f)+1];t[2*(n+e*f)]=M,t[2*(n+e*f)+1]=d}else for(var f=0;f<N;f++)B(t,n+e*f*R,e,w,F+f*h*D,h*N,D,s.slice(),c);switch(N){case 2:I(t,n,e,h,c,R);break;case 3:A(t,n,e,h,c,R);break;case 4:r(t,n,e,h,c,R);break;default:E(t,n,e,h,c,R,N);break}}var Q=function(e,w){if(arguments.length<2)throw new RangeError("You didn't pass enough arguments, passed `"+arguments.length+"'");var e=~~e,w=!!w;if(e<1)throw new RangeError("n is outside range, should be positive integer, was `"+e+"'");for(var F={n:e,inverse:w,factors:[],twiddle:new Float64Array(2*e),scratch:new Float64Array(2*e)},h=F.twiddle,D=2*Math.PI/e,s=0;s<e;s++){if(w)var c=D*s;else var c=-D*s;h[2*s]=Math.cos(c),h[2*s+1]=Math.sin(c)}for(var N=4,R=Math.floor(Math.sqrt(e));e>1;){for(;e%N;){switch(N){case 4:N=2;break;case 2:N=3;break;default:N+=2;break}N>R&&(N=e)}e/=N,F.factors.push(N),F.factors.push(e)}this.state=F};Q.prototype.simple=function(t,n,e){this.process(t,0,1,n,0,1,e)},Q.prototype.process=function(t,n,s,w,F,c,D){var s=~~s,c=~~c,N=D=="real"?D:"complex";if(s<1)throw new RangeError("outputStride is outside range, should be positive integer, was `"+s+"'");if(c<1)throw new RangeError("inputStride is outside range, should be positive integer, was `"+c+"'");if(N=="real"){for(var R=0;R<this.state.n;R++){var f=w[F+c*R],M=0;this.state.scratch[2*R]=f,this.state.scratch[2*R+1]=M}B(t,n,s,this.state.scratch,0,1,1,this.state.factors.slice(),this.state)}else if(w==t){B(this.state.scratch,0,1,w,F,1,c,this.state.factors.slice(),this.state);for(var R=0;R<this.state.n;R++){var f=this.state.scratch[2*R],M=this.state.scratch[2*R+1];t[2*(n+s*R)]=f,t[2*(n+s*R)+1]=M}}else B(t,n,s,w,F,1,c,this.state.factors.slice(),this.state)},o.complex=Q})(vA);const QI=vA;class EI{constructor(I){this.size=I,this.nockertfft=new QI.complex(I,!1)}fft(I){const A=new Float32Array(2*this.size);return this.nockertfft.simple(A,I,"complex"),A}}let X=0,SA=null,lA=null;function iI(o){if(o!==0&&(o&o-1)===0)X=o,oI(),nI(),aI();else throw new Error("init: radix-2 required")}function UA(o,I){uA(o,I,1)}function HA(o,I){let A=1/X;uA(o,I,-1);for(let r=0;r<X;r++)o[r]*=A,I[r]*=A}function rI(o,I){uA(o,I,-1)}function tI(o,I){let A=[],r=[],E=0;for(let B=0;B<X;B++){E=B*X;for(let Q=0;Q<X;Q++)A[Q]=o[Q+E],r[Q]=I[Q+E];UA(A,r);for(let Q=0;Q<X;Q++)o[Q+E]=A[Q],I[Q+E]=r[Q]}for(let B=0;B<X;B++){for(let Q=0;Q<X;Q++)E=B+Q*X,A[Q]=o[E],r[Q]=I[E];UA(A,r);for(let Q=0;Q<X;Q++)E=B+Q*X,o[E]=A[Q],I[E]=r[Q]}}function eI(o,I){let A=[],r=[],E=0;for(let B=0;B<X;B++){E=B*X;for(let Q=0;Q<X;Q++)A[Q]=o[Q+E],r[Q]=I[Q+E];HA(A,r);for(let Q=0;Q<X;Q++)o[Q+E]=A[Q],I[Q+E]=r[Q]}for(let B=0;B<X;B++){for(let Q=0;Q<X;Q++)E=B+Q*X,A[Q]=o[E],r[Q]=I[E];HA(A,r);for(let Q=0;Q<X;Q++)E=B+Q*X,o[E]=A[Q],I[E]=r[Q]}}function uA(o,I,A){let r,E,B,Q,t,n,e,w,F,h=X>>2;for(let D=0;D<X;D++)Q=SA[D],D<Q&&(t=o[D],o[D]=o[Q],o[Q]=t,t=I[D],I[D]=I[Q],I[Q]=t);for(let D=1;D<X;D<<=1){E=0,r=X/(D<<1);for(let s=0;s<D;s++){n=lA[E+h],e=A*lA[E];for(let c=s;c<X;c+=D<<1)B=c+D,w=n*o[B]+e*I[B],F=n*I[B]-e*o[B],o[B]=o[c]-w,o[c]+=w,I[B]=I[c]-F,I[c]+=F;E+=r}}}function oI(){typeof Uint32Array<"u"?SA=new Uint32Array(X):SA=[],typeof Float64Array<"u"?lA=new Float64Array(X*1.25):lA=[]}function nI(){let o=0,I=0,A=0;for(SA[0]=0;++o<X;){for(A=X>>1;A<=I;)I-=A,A>>=1;I+=A,SA[o]=I}}function aI(){let o=X>>1,I=X>>2,A=X>>3,r=o+I,E=Math.sin(Math.PI/X),B=2*E*E,Q=Math.sqrt(B*(2-B)),t=lA[I]=1,n=lA[0]=0;E=2*B;for(let e=1;e<A;e++)t-=B,B+=E*t,n+=Q,Q-=E*n,lA[e]=n,lA[I-e]=t;A!==0&&(lA[A]=Math.sqrt(.5));for(let e=0;e<I;e++)lA[o-e]=lA[e];for(let e=0;e<r;e++)lA[e+o]=-lA[e]}const sI={init:iI,fft1d:UA,ifft1d:HA,fft2d:tI,ifft2d:eI,fft:UA,ifft:HA,bt:rI};class DI{constructor(I){this.size=I,this.FFT_mljs=sI,this.FFT_mljs.init(I)}fft(I){const A=new Float32Array(this.size),r=new Float32Array(this.size),E=new Float32Array(2*this.size);for(var B=0;B<this.size;++B)A[B]=I[B*2],r[B]=I[B*2+1];this.FFT_mljs.fft(A,r);for(var B=0;B<this.size;++B)E[B*2]=A[B],E[B*2+1]=r[B];return E}}async function hI(){return await WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11]))}async function cI(){return await WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}async function wI(){let o="Other",I="Unknown",A="Other",r="Unknown",E=navigator.userAgentData,B=navigator.userAgent;try{if(E){const Q=await E.getHighEntropyValues(["architecture","model","platform","platformVersion","uaFullVersion"]),t=E.brands.find(n=>["Microsoft Edge","Google Chrome","Opera"].includes(n.brand));o=t?t.brand:"Other",I=t?`v${t.version}`:"Unknown",A=Q.platform?Q.platform:"Other",r=Q.platformVersion?`v${Q.platformVersion}`:"Unknown"}if(o==="Other"||A==="Other"){const Q=B.split(" "),t=Q[Q.length-1],n=/Firefox/.test(t),e=/Safari/.test(t)&&!/CriOS/.test(t)&&!/Chrome/.test(t),w=/CriOS/.test(t)||/Chrome/.test(t),F=/Edg/.test(t),h=/OPR/.test(t),D=[{name:"Mozilla Firefox",regex:/Firefox\/(\d+\.\d+)/,flag:n},{name:"Safari",regex:/Version\/(\d+\.\d+)/,flag:e},{name:"Google Chrome",regex:/CriOS|Chrome\/(\d+\.\d+)/,flag:w},{name:"Microsoft Edge",regex:/Edg\/(\d+\.\d+)/,flag:F},{name:"Opera",regex:/OPR\/(\d+\.\d+)/,flag:h}];for(const f of D)if(f.flag){o=f.name;const M=t.match(f.regex);I=M?M[1]:"Unknown";break}const s=B.match(/\(([^)]+)\)/),c=s?s[1].split("; "):[];console.log(s),console.log(c);const N={"10.0":"10","6.3":"8.1","6.2":"8","6.1":"7","6.0":"Vista","5.2":"XP 64-bit","5.1":"XP","5.0":"2000"},R=[{name:"Windows",regex:/Windows NT/,transform:f=>N[f.split(" ")[2]],index:0},{name:"Mac OS X",regex:/Mac OS X/,transform:f=>f.replace("_",".").split(" ")[3],index:0},{name:"Linux",regex:/Linux/,transform:()=>"Unknown",index:0},{name:"Android",regex:/Android/,transform:f=>f.split(" ")[1],index:0},{name:"iOS",regex:/iPhone/,transform:f=>f.split(" ")[1].replace("_","."),index:0}];for(const f of R)if(f.regex.test(c[0])){A=f.name,console.log(`osDetails: ${c}`),r=f.transform?f.transform(c[1]):f.versionMap[c[1].split(" ")[f.index]];break}}}catch(Q){console.error("Could not retrieve user agent data",Q)}return{browserName:o,browserVersion:I,osName:A,osVersion:r,wasm:typeof WebAssembly=="object",relaxedSimd:await hI(),simd:await cI()}}var fI=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((C,g)=>{r=C,E=g});var B=Object.assign({},A),Q="";function t(C){return A.locateFile?A.locateFile(C,Q):Q+C}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var C=w.buffer;A.HEAP8=D=new Int8Array(C),A.HEAP16=new Int16Array(C),A.HEAP32=new Int32Array(C),A.HEAPU8=s=new Uint8Array(C),A.HEAPU16=new Uint16Array(C),A.HEAPU32=new Uint32Array(C),A.HEAPF32=new Float32Array(C),A.HEAPF64=new Float64Array(C)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(C){N.unshift(C)}function p(C){R.unshift(C)}function P(C){f.unshift(C)}var k=0,U=null;function q(C){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(C){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var g=U;U=null,g()}}function J(C){A.onAbort&&A.onAbort(C),C="Aborted("+C+")",n(C),h=!0,C+=". Build with -sASSERTIONS for more info.";var g=new WebAssembly.RuntimeError(C);throw E(g),g}var u="data:application/octet-stream;base64,";function L(C){return C.startsWith(u)}var S;S="data:application/octet-stream;base64,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",L(S)||(S=t(S));function W(C){if(C==S&&e)return new Uint8Array(e);var g=cA(C);if(g)return g;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(C,g){var i,a=W(C);i=new WebAssembly.Module(a);var G=new WebAssembly.Instance(i,g);return[G,i]}function Z(){var C={a:FA};function g(a,G){var Y=a.exports;return F=Y,w=F.b,c(),F.i,p(F.c),K(),Y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(C,g)}catch(a){n("Module.instantiateWasm callback failed with error: "+a),E(a)}var i=O(S,C);return g(i[0])}var x=C=>{for(;C.length>0;)C.shift()(A)},AA=C=>{J("OOM")},IA=C=>{s.length,AA()};function _(C){var g=A["_"+C];return g}var $=(C,g)=>{D.set(C,g)},gA=C=>{for(var g=0,i=0;i<C.length;++i){var a=C.charCodeAt(i);a<=127?g++:a<=2047?g+=2:a>=55296&&a<=57343?(g+=4,++i):g+=3}return g},iA=(C,g,i,a)=>{if(!(a>0))return 0;for(var G=i,Y=i+a-1,y=0;y<C.length;++y){var l=C.charCodeAt(y);if(l>=55296&&l<=57343){var m=C.charCodeAt(++y);l=65536+((l&1023)<<10)|m&1023}if(l<=127){if(i>=Y)break;g[i++]=l}else if(l<=2047){if(i+1>=Y)break;g[i++]=192|l>>6,g[i++]=128|l&63}else if(l<=65535){if(i+2>=Y)break;g[i++]=224|l>>12,g[i++]=128|l>>6&63,g[i++]=128|l&63}else{if(i+3>=Y)break;g[i++]=240|l>>18,g[i++]=128|l>>12&63,g[i++]=128|l>>6&63,g[i++]=128|l&63}}return g[i]=0,i-G},CA=(C,g,i)=>iA(C,s,g,i),QA=C=>{var g=gA(C)+1,i=aA(g);return CA(C,i,g),i},BA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,oA=(C,g,i)=>{for(var a=g+i,G=g;C[G]&&!(G>=a);)++G;if(G-g>16&&C.buffer&&BA)return BA.decode(C.subarray(g,G));for(var Y="";g<G;){var y=C[g++];if(!(y&128)){Y+=String.fromCharCode(y);continue}var l=C[g++]&63;if((y&224)==192){Y+=String.fromCharCode((y&31)<<6|l);continue}var m=C[g++]&63;if((y&240)==224?y=(y&15)<<12|l<<6|m:y=(y&7)<<18|l<<12|m<<6|C[g++]&63,y<65536)Y+=String.fromCharCode(y);else{var V=y-65536;Y+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return Y},eA=(C,g)=>C?oA(s,C,g):"",rA=function(C,g,i,a,G){var Y={string:b=>{var z=0;return b!=null&&b!==0&&(z=QA(b)),z},array:b=>{var z=aA(b.length);return $(b,z),z}};function y(b){return g==="string"?eA(b):g==="boolean"?!!b:b}var l=_(C),m=[],V=0;if(a)for(var j=0;j<a.length;j++){var tA=Y[i[j]];tA?(V===0&&(V=EA()),m[j]=tA(a[j])):m[j]=a[j]}var wA=l.apply(null,m);function MA(b){return V!==0&&RA(V),y(b)}return wA=MA(wA),wA},sA=function(C,g,i,a){var G=!i||i.every(y=>y==="number"||y==="boolean"),Y=g!=="string";return Y&&G&&!a?_(C):function(){return rA(C,g,i,arguments)}},FA={a:IA},T=Z();T.c,A._kiss_fft_free=T.d,A._free=T.e,A._kiss_fft_alloc=T.f,A._malloc=T.g,A._kiss_fft=T.h,T.__errno_location;var EA=T.j,RA=T.k,aA=T.l;function DA(C){try{for(var g=atob(C),i=new Uint8Array(g.length),a=0;a<g.length;++a)i[a]=g.charCodeAt(a);return i}catch{throw new Error("Converting base64 string to bytes failed.")}}function cA(C){if(L(C))return DA(C.slice(u.length))}A.ccall=rA,A.cwrap=sA;var nA;U=function C(){nA||hA(),nA||(U=C)};function hA(){if(k>0||(M(),k>0))return;function C(){nA||(nA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),C()},1)):C()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return hA(),I})})(),GA=fI({}),bA=GA.cwrap("kiss_fft_alloc","number",["number","number","number","number"]),FI=GA.cwrap("kiss_fft","void",["number","number","number"]),qA=GA.cwrap("kiss_fft_free","void",["number"]);class RI{constructor(I){this.size=I,this.fcfg=bA(I,!1),this.icfg=bA(I,!0),this.inptr=GA._malloc(I*8+I*8),this.cin=new Float32Array(GA.HEAPU8.buffer,this.inptr,I*2)}fft=function(I){const A=GA._malloc(this.size*8),r=new Float32Array(GA.HEAPU8.buffer,A,this.size*2);this.cin.set(I),FI(this.fcfg,this.inptr,A);let E=new Float32Array(this.size*2);return E.set(r),GA._free(A),E};dispose(){qA(this.fcfg),qA(this.icfg),GA._free(this.inptr)}}function mA(o){this.size=o,this._csize=o<<1;for(var I=new Array(this.size*2),A=0;A<I.length;A+=2){const n=Math.PI*A/this.size;I[A]=Math.cos(n),I[A+1]=-Math.sin(n)}this.table=I;for(var r=0,E=1;this.size>E;E<<=1)r++;this._width=r%2===0?r-1:r,this._bitrev=new Array(1<<this._width);for(var B=0;B<this._bitrev.length;B++){this._bitrev[B]=0;for(var Q=0;Q<this._width;Q+=2){var t=this._width-Q-2;this._bitrev[B]|=(B>>>Q&3)<<t}}this._data=null}mA.prototype.fft=function(I){this._data=I,this._out=new Float32Array(2*this.size);var A=this._csize,r=1<<this._width,E=A/r<<1,B,Q,t=this._bitrev;if(E===4)for(B=0,Q=0;B<A;B+=E,Q++){const h=t[Q];this._singleTransform2(B,h,r)}else for(B=0,Q=0;B<A;B+=E,Q++){const h=t[Q];this._singleTransform4(B,h,r)}for(r>>=2;r>=2;r>>=2){E=A/r<<1;var n=E>>>2;for(B=0;B<A;B+=E)for(var e=B+n,w=B,F=0;w<e;w+=2,F+=r){const h=w,D=h+n,s=D+n,c=s+n,N=this._out[h],R=this._out[h+1],f=this._out[D],M=this._out[D+1],d=this._out[s],H=this._out[s+1],v=this._out[c],p=this._out[c+1],P=N,k=R,U=this.table[F],q=this.table[F+1],K=f*U-M*q,J=f*q+M*U,u=this.table[2*F],L=this.table[2*F+1],S=d*u-H*L,W=d*L+H*u,O=this.table[3*F],Z=this.table[3*F+1],x=v*O-p*Z,AA=v*Z+p*O,IA=P+S,_=k+W,$=P-S,gA=k-W,iA=K+x,CA=J+AA,QA=K-x,BA=J-AA;this._out[h]=IA+iA,this._out[h+1]=_+CA,this._out[D]=$+BA,this._out[D+1]=gA-QA,this._out[s]=IA-iA,this._out[s+1]=_-CA,this._out[c]=$-BA,this._out[c+1]=gA+QA}}return this._out};mA.prototype._singleTransform2=function(I,A,r){const E=this._data[A],B=this._data[A+1],Q=this._data[A+r],t=this._data[A+r+1];this._out[I]=E+Q,this._out[I+1]=B+t,this._out[I+2]=E-Q,this._out[I+3]=B-t};mA.prototype._singleTransform4=function(I,A,r){const E=r*2,B=r*3,Q=this._data[A],t=this._data[A+1],n=this._data[A+r],e=this._data[A+r+1],w=this._data[A+E],F=this._data[A+E+1],h=this._data[A+B],D=this._data[A+B+1],s=Q+w,c=t+F,N=Q-w,R=t-F,f=n+h,M=e+D,d=n-h,H=e-D;this._out[I]=s+f,this._out[I+1]=c+M,this._out[I+2]=N+H,this._out[I+3]=R-d,this._out[I+4]=s-f,this._out[I+5]=c-M,this._out[I+6]=N-H,this._out[I+7]=R+d};const TA=[4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,16384,32768,65536,131072];class lI{constructor(I=128,A="indutnyJavascript",r=!0){if(!TA.includes(I))throw new Error("Size must be a power of 2 between 4 and 131072");this.size=I,this.outputArr=new Float32Array(2*I),this.subLibrary=A,this.fftLibrary=void 0;const E=this.getCurrentProfile();E&&r?this.setSubLibrary(E.fastestSubLibrary):this.setSubLibrary(A)}availableSubLibraries(){return["kissWasm","indutnyModifiedJavascript","indutnyJavascript","crossWasm","mljsJavascript","nockertJavascript","nayuki3Wasm","nayukiJavascript","kissfftmodifiedWasm"]}availableSubLibrariesQuick(){return["kissWasm","indutnyModifiedJavascript"]}getCurrentProfile(){if(!(typeof localStorage>"u")&&localStorage.getItem("webfftProfile"))return JSON.parse(localStorage.getItem("webfftProfile"))}setSubLibrary(I){switch(I){case"nayukiJavascript":this.fftLibrary=new _A(this.size);break;case"nayuki3Wasm":this.fftLibrary=new BI(this.size);break;case"kissWasm":this.fftLibrary=new VA(this.size);break;case"crossWasm":this.fftLibrary=new ZA(this.size),this.size>16384&&(this.fftLibrary=new KA(this.size));break;case"nockertJavascript":this.fftLibrary=new EI(this.size);break;case"indutnyJavascript":this.fftLibrary=new KA(this.size);break;case"mljsJavascript":this.fftLibrary=new DI(this.size);break;case"kissfftmodifiedWasm":this.fftLibrary=new RI(this.size);break;case"indutnyModifiedJavascript":this.fftLibrary=new mA(this.size);break;default:throw new Error("Invalid sublibrary")}}fft(I){if(I.length!==2*this.size)throw new Error("Input array length must be == 2 * size");return this.outputArr=this.fftLibrary.fft(I),this.outputArr}fftr(I){var{outputArr:A,fftLibrary:r,size:E}=this;if(I.length!==E)throw new Error("Input array length must be == size");const B=new Float32Array(2*E);B.fill(0);for(let Q=0;Q<E;Q++)B[2*Q]=I[Q];return A=r.fft(B),A.slice(E,E*2)}fft2d(I){const A=I[0].length/2,r=I.length;if(A!==this.size)throw new Error("Inner array length must be == 2 * size");if(!TA.includes(r))throw new Error("Outter array length must be a power of 2 between 4 and 131072");let E=[];for(let t=0;t<r;t++)this.outputArr=this.fft(I[t]),E.push(this.outputArr);this.dispose(),this.size=r,this.setSubLibrary(this.subLibrary);let B=[];for(let t=0;t<A;t++){const n=new Float32Array(2*r);n.fill(0);for(let w=0;w<r;w++)n[2*w]=E[w][2*t],n[2*w+1]=E[w][2*t+1];let e=new Float32Array(2*r);e=this.fft(n),B.push(e)}let Q=[];for(let t=0;t<r;t++){let n=new Float32Array(2*A);for(let e=0;e<A;e++)n[2*e]=B[e][2*t],n[2*e+1]=B[e][2*t+1];Q.push(n)}return this.dispose(),this.size=A,this.setSubLibrary(this.subLibrary),Q}profile(I=1,A=!0,r=!1){if(!A&&this.getCurrentProfile())return this.getCurrentProfile();const E=performance.now();let B;r?B=this.availableSubLibrariesQuick():B=this.availableSubLibraries();let Q=[];const t=I/B.length/2;for(let F=0;F<B.length;F++){this.setSubLibrary(B[F]);const h=new Float32Array(2*this.size);for(let c=0;c<this.size;c++)h[2*c]=Math.random()-.5,h[2*c+1]=Math.random()-.5;let D=performance.now();for(;(performance.now()-D)/1e3<t;)this.fft(h);D=performance.now();let s=0;for(;(performance.now()-D)/1e3<t;)this.fft(h),s++;Q.push(1e3*s/(performance.now()-D)),this.dispose()}const n=(performance.now()-E)/1e3;let e=Q.indexOf(Math.max(...Q));const w={fftsPerSecond:Q,subLibraries:B,totalElapsed:n,fastestSubLibrary:B[e]};return console.log("Setting sublibrary to",w.fastestSubLibrary),this.setSubLibrary(w.fastestSubLibrary),typeof localStorage<"u"&&localStorage.setItem("webfftProfile",JSON.stringify(w)),w}async checkBrowserCapabilities(){return await wI()}dispose(){this.fftLibrary&&this.fftLibrary.dispose!==void 0&&this.fftLibrary.dispose()}}class pA{constructor(I){if(this.EPS=1e-20,this.INV_LN10=1/Math.LN10,(I&I-1)!==0)throw new Error("FFT size must be power of two");this.fftSize=I,this.fft=new lI(I);const r=this.fft.profile(.5).fastestSubLibrary;this.fft.setSubLibrary(r),this.complexIn=new Float32Array(I*2),this.spectrum=new Float32Array(I/2+1)}size(){return this.fftSize}compute(I,A,r){const E=this.fftSize,B=this.complexIn;for(let h=0;h<E;h++){const D=h<<1;B[D]=I[h],B[D+1]=0}const Q=this.fft.fft(B),t=this.spectrum,n=t.length,e=1/(r-A),w=this.EPS,F=this.INV_LN10;for(let h=0;h<n;h++){const D=h<<1,s=Q[D],c=Q[D+1],N=s*s+c*c+w,R=(10*Math.log(N)*F-A)*e;t[h]=R<0?0:R>1?1:R}return t}dispose(){}}class NI{constructor(I){this.data=null,this.showRealTimeScale=!1,this.startTime=0,this.config=I}setData(I){const A=this.isTimestamped(I);if(this.showRealTimeScale=A,A){if(I.length===0){this.data=new Float32Array(0);return}this.startTime=I[0][0];const r=new Float32Array(I.length);for(let E=0;E<I.length;E++)r[E]=I[E][1];this.data=r}else this.data=I,this.startTime=0}isTimestamped(I){return Array.isArray(I)&&I.length>0&&Array.isArray(I[0])}updateConfig(I){this.config={...this.config,...I}}getDuration(){return this.data?this.data.length/this.config.sampleRate:0}}const yI="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",MI=(o,I)=>{const A=new Float32Array(o);if(I==="rectangular")return A.fill(1);const r=2*Math.PI,E=o-1;switch(I){case"hann":for(let B=0;B<o;B++)A[B]=.5*(1-Math.cos(r*B/E));break;case"hamming":for(let B=0;B<o;B++)A[B]=.54-.46*Math.cos(r*B/E);break;case"blackman":for(let B=0;B<o;B++){const Q=r*B/E;A[B]=.42-.5*Math.cos(Q)+.08*Math.cos(2*Q)}break}return A};class dI{constructor(I,A,r,E){this.image=null,this.isProcessing=!1,this.id=I,this.startIndex=A,this.endIndex=r,this.startTime=A/E,this.endTime=r/E}}class GI{constructor(I){let A;I.fftExecutor?(A=I.fftExecutor.size(),this.fft=I.fftExecutor):(A=I.fftSize??1024,this.fft=new pA(A)),this.windowBuffer=MI(I.windowSize,I.windowType),this.inputBuf=new Float32Array(A)}process(I,A,r,E,B){const{windowSize:Q,minDb:t,maxDb:n,overlap:e}=E,w=Math.max(1,Q-e),F=this.fft.size(),D=Math.ceil((r-A)/w),s=(F>>1)+1;if(D<=0)return new ImageData(1,1);const c=new ImageData(D,s),N=c.data,R=this.inputBuf,f=this.windowBuffer;let M=0,d=0;for(let H=0;H<Q;H++){const v=A+H;v<I.length&&(M+=I[v],d++)}for(let H=0;H<D;H++){const v=A+H*w,p=d>0?M/d:0,P=Math.min(Q,I.length-v);let k=0;for(;k<P;k++)R[k]=(I[v+k]-p)*f[k];for(;k<F;k++)R[k]=0;const U=this.fft.compute(R,t,n);for(let q=0;q<s;q++){const K=U[q],J=B(K),L=((s-1-q)*D+H)*4;N[L]=J[0],N[L+1]=J[1],N[L+2]=J[2],N[L+3]=255}if(H+1<D){for(let K=0;K<w;K++){const J=v+K;J<I.length&&(M-=I[J],d--)}const q=v+Q;for(let K=0;K<w;K++){const J=q+K;J<I.length&&(M+=I[J],d++)}}}return c}dispose(){this.fft.dispose()}}class YI{constructor(I){this.model=I}draw(I,A,r,E,B,Q){I.save(),I.strokeStyle="#464646",I.fillStyle="#252525",I.font="11px AxisFont",I.textBaseline="top",I.lineWidth=1;const[t,n]=E,[e,w]=B,F=n-t,{left:h,bottom:D,top:s,right:c}=Q,N=h,R=s,f=A-h-c,M=r-D-s;if(F<=0){I.restore();return}I.beginPath();const d=R+M;I.moveTo(h,d),I.lineTo(h+f,d),I.stroke(),I.beginPath(),I.moveTo(h,R),I.lineTo(h,d),I.stroke();const H=Math.max(3,Math.floor(f/100)),v=F/H,p=this.model.startTime;for(let u=0;u<=H;u++){const L=t+u*v,S=N+(L-t)/F*f;if(S<N||S>N+f)continue;I.beginPath(),I.moveTo(S,d),I.lineTo(S,d+5),I.stroke();const W=p+L*1e3;let O="";if(this.model.showRealTimeScale){const Z=new Date(W),x=Z.getHours().toString().padStart(2,"0"),AA=Z.getMinutes().toString().padStart(2,"0"),IA=Z.getSeconds().toString().padStart(2,"0");O=`${x}:${AA}:${IA}`}else W>=0&&(O=`${Math.floor(n-W/1e3)}s`);I.textAlign="center",I.fillText(O,S,d+8)}const P=w-e,k=Math.max(3,Math.floor(M/40));let U=1;if(P>0&&k>0){const u=P/k,L=Math.pow(10,Math.floor(Math.log10(u))),S=u/L;S>5?U=10*L:S>2?U=5*L:S>1?U=2*L:U=1*L}const q=Math.floor(w/U)*U,K=Math.floor(e/U)*U;I.textAlign="right",I.textBaseline="middle";const J=U||1;for(let u=q;u>=K;u-=J){const L=J/1e3;if(u>w+L||u<e-L)continue;const S=(w-u)/P,W=R+S*M;if(W<R-1||W>R+M+1)continue;I.beginPath(),I.moveTo(h,W),I.lineTo(h-5,W),I.stroke();let O=u.toString();u%1!==0&&(O=u.toFixed(1).replace(/\.0$/,"")),I.fillText(O,h-8,W)}I.save(),I.translate(10,M/2.8),I.rotate(-Math.PI/2),I.textAlign="right",I.fillText("Frequency (Hz)",0,0),I.restore()}}function PA(o,I){if(o<=0)return I[0];if(o>=1)return I[I.length-1];const A=1/(I.length-1),r=o/A|0,E=(o-r*A)/A,B=I[r],Q=I[r+1];return[B[0]+(Q[0]-B[0])*E|0,B[1]+(Q[1]-B[1])*E|0,B[2]+(Q[2]-B[2])*E|0]}const kI=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],SI=[[0,0,4],[87,16,110],[187,55,84],[249,142,9],[252,255,164]];function UI(o){return PA(o,kI)}function HI(o){return PA(o,SI)}function mI(o){const I=Math.floor(o*255);return[I,I,I]}function vI(o){const I=Math.max(0,Math.min(1,o)),A=Math.min(4*I-1.5,-4*I+4.5),r=Math.min(4*I-.5,-4*I+3.5),E=Math.min(4*I+.5,-4*I+2.5);return[Math.floor(Math.max(0,Math.min(1,A))*255),Math.floor(Math.max(0,Math.min(1,r))*255),Math.floor(Math.max(0,Math.min(1,E))*255)]}function uI(o){let I=0,A=0,r=0;return o<.33?I=o/.33:o<.66?(I=1,A=(o-.33)/.33):(I=1,A=1,r=(o-.66)/.34),[Math.floor(I*255),Math.floor(A*255),Math.floor(r*255)]}function JI(o){const I=o,A=1-o;return[Math.floor(I*255),Math.floor(A*255),Math.floor(1*255)]}function LI(o){return[255,Math.floor(o*255),Math.floor((1-o)*255)]}function KI(o){return[Math.floor(o*255),Math.floor((.5+.5*o)*255),Math.floor(.4*255)]}function bI(o){return[255,Math.floor(o*255),0]}function qI(o){return[0,Math.floor(o*255),Math.floor((1-.5*o)*255)]}function TI(o){const I=o,A=.1*Math.sin(o*Math.PI*2),r=o<.5?o+A:o,E=o<.75?o+A:o;return[Math.floor(Math.min(1,I)*255),Math.floor(Math.min(1,r)*255),Math.floor(Math.min(1,E)*255)]}const pI={viridis:UI,inferno:HI,grayscale:mI,jet:vI,hot:uI,cool:JI,spring:LI,summer:KI,autumn:bI,winter:qI,bone:TI};class PI{constructor(I="jet"){this.type=I,this.lut=new Uint8Array(256*3),this.generateLut()}generateLut(){const I=pI[this.type];for(let A=0;A<256;A++){const r=I(A/255),E=A*3;this.lut[E]=r[0],this.lut[E+1]=r[1],this.lut[E+2]=r[2]}}getRGB(I){const A=(I<=0?0:I>=1?255:I*255|0)*3;return[this.lut[A],this.lut[A+1],this.lut[A+2]]}setMap(I){this.type=I,this.generateLut()}}class WI{constructor(I){this.chunks=new Map,this.offscreenCanvas=null,this.offscreenCtx=null,this.offscreenHelpers=new Map,this.ctx=null,this.lastW=0,this.lastH=0,this.lastDPR=0,this.model=I,this.processor=new GI(I.config),this.colormap=new PI,this.axisRenderer=new YI(I)}setColormap(I){this.colormap.setMap(I),this.clearCache()}clearCache(){this.chunks.clear(),this.offscreenHelpers.clear()}dispose(){this.clearCache(),this.offscreenCanvas=null,this.offscreenCtx=null,this.ctx=null,this.processor.dispose()}setupHiDPICanvas(I,A,r){const E=window.devicePixelRatio||1;I.style.width=`${A}px`,I.style.height=`${r}px`;const B=Math.round(A*E),Q=Math.round(r*E);(I.width!==B||I.height!==Q)&&(I.width=B,I.height=Q);const t=I.getContext("2d",{alpha:!0});return t.resetTransform(),t.scale(E,E),t.imageSmoothingEnabled=!1,this.offscreenCanvas||(this.offscreenCanvas=document.createElement("canvas")),(this.offscreenCanvas.width!==B||this.offscreenCanvas.height!==Q)&&(this.offscreenCanvas.width=B,this.offscreenCanvas.height=Q,this.offscreenCtx=this.offscreenCanvas.getContext("2d",{alpha:!0}),this.offscreenCtx.resetTransform(),this.offscreenCtx.scale(E,E),this.offscreenCtx.imageSmoothingEnabled=!1,this.offscreenCtx.clearRect(0,0,A,r)),t}calibrateCanvas(I,A,r){return this.setupHiDPICanvas(I,A,r)}render(I){const{canvas:A,timeRange:r,freqRange:E}=I,B=this.calibrateCanvas(A,I.width,I.height);if(!B||!this.offscreenCtx||!this.offscreenCanvas)return;const Q=window.devicePixelRatio||1,t=A.width/Q,n=A.height/Q,[e,w]=r,[F,h]=E,D=50,s=30,c=12,N=32,R=D,f=c,M=t-D-N,d=n-s-c;if(B.clearRect(0,0,t,n),!this.model.data)return;const H=this.model.config.sampleRate,v=this.model.config,p=Math.max(1,v.windowSize-v.overlap),k=10*H,q=Math.ceil(k/p)*p,K=Math.floor(Math.max(0,e*H)),J=Math.floor(Math.min(this.model.data.length,w*H));if(J<=K)return;const u=Math.floor(K/q),L=Math.floor(J/q);for(let S=u;S<=L;S++){const W=S*q,O=Math.min((S+1)*q,this.model.data.length),Z=`chunk_${S}`;let x=this.chunks.get(Z);if(!x){const AA=new dI(Z,W,O,H);this.chunks.set(Z,AA);const IA=this.processor.process(this.model.data,W,O,v,$=>this.colormap.getRGB($)),_=Z;createImageBitmap(IA).then($=>{const gA=this.chunks.get(_);gA&&(gA.image=$)}),x=AA}x.image&&this.offscreenCtx&&(this.offscreenCtx.save(),this.offscreenCtx.beginPath(),this.offscreenCtx.rect(R,f,M,d),this.offscreenCtx.clip(),this.drawChunk(this.offscreenCtx,x,e,w,F,h,R,f,M,d),this.offscreenCtx.restore())}B.drawImage(this.offscreenCanvas,0,0,t,n),this.axisRenderer.draw(B,t,n,r,E,{left:D,bottom:s,top:c,right:N})}drawChunk(I,A,r,E,B,Q,t,n,e,w){if(!A.image)return;const F=E-r,h=this.model.config.sampleRate,D=h/2,s=A.startIndex/h,c=A.endIndex/h,N=t+(s-r)/F*e,R=t+(c-r)/F*e;if(R<=t||N>=t+e)return;const f=Math.max(t,N),M=Math.min(t+e,R)-f,d=A.image.width,H=(f-N)/(R-N)*d,v=M/(R-N)*d,p=Math.min(Q,D),P=Math.max(B,0),k=A.image.height,U=(1-p/D)*k,K=(1-P/D)*k-U;if(K>0){const J=n,u=w;I.drawImage(A.image,H,U,v,K,f,J,M,u)}}}class xI{constructor(I){this.model=new NI(I),this.renderer=new WI(this.model)}async init(){const I=new FontFace("AxisFont",`url(data:font/woff2;base64,${yI})`);await I.load(),document.fonts.add(I)}setData(I){this.model.setData(I),this.renderer.clearCache()}destroy(){this.renderer.dispose()}render(I){const A=this.model.config.sampleRate/2,r=I.freqRange||[0,A];this.renderer.render({...I,freqRange:r})}updateConfig(I){this.model.updateConfig(I),(I.windowSize||I.windowType||I.minDb||I.maxDb||I.fftSize||I.overlap)&&this.renderer.clearCache()}setColormap(I){this.renderer.setColormap(I)}getDuration(){return this.model.getDuration()}}exports.FFTExecutor=pA;exports.Spectrogram=xI;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var NA=typeof document<"u"?document.currentScript:null,WA=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((g,i)=>{r=g,E=i});var B=Object.assign({},A),Q="";function t(g){return A.locateFile?A.locateFile(g,Q):Q+g}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var g=w.buffer;A.HEAP8=D=new Int8Array(g),A.HEAP16=new Int16Array(g),A.HEAP32=new Int32Array(g),A.HEAPU8=s=new Uint8Array(g),A.HEAPU16=new Uint16Array(g),A.HEAPU32=new Uint32Array(g),A.HEAPF32=new Float32Array(g),A.HEAPF64=new Float64Array(g)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(g){N.unshift(g)}function p(g){R.unshift(g)}function P(g){f.unshift(g)}var k=0,U=null;function q(g){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(g){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var i=U;U=null,i()}}function J(g){A.onAbort&&A.onAbort(g),g="Aborted("+g+")",n(g),h=!0,g+=". Build with -sASSERTIONS for more info.";var i=new WebAssembly.RuntimeError(g);throw E(i),i}var u="data:application/octet-stream;base64,";function L(g){return g.startsWith(u)}var S;S="data:application/octet-stream;base64,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GCAZkzgCBCAHIBcgHpM4AgAgBUEIaiEFIAdBCGohByAEQQhqIQQgAUEIaiEBIABBCGohACAJQQFqIgkgBkcNAAsMAQsgBSgCACELIAlBA3QQByEIAkAgCUECSA0AIAZBAEwNACAFQYgCaiENIAlBfHEhDiAJQQNxIQogCUEBa0EDSSEPQQAhBwNAIAchAUEAIQRBACEDIA9FBEADQCAIIARBA3QiBWogACABQQN0aikCADcCACAIIAVBCHJqIAAgASAGaiIBQQN0aikCADcCACAIIAVBEHJqIAAgASAGaiIBQQN0aikCADcCACAIIAVBGHJqIAAgASAGaiIBQQN0aikCADcCACAEQQRqIQQgASAGaiEBIANBBGoiAyAORw0ACwtBACEFIAoEQANAIAggBEEDdGogACABQQN0aikCADcCACAEQQFqIQQgASAGaiEBIAVBAWoiBSAKRw0ACwsgCCkCACIvp74hFUEAIQwgByEDA0AgACADQQN0aiIFIC83AgAgAiADbCEQIAUqAgQhFEEBIQEgFSETQQAhBANAIAUgEyAIIAFBA3RqIhEqAgAiFiANIAQgEGoiBCALQQAgBCALThtrIgRBA3RqIhIqAgAiF5QgEioCBCIYIBEqAgQiGZSTkiITOAIAIAUgFCAWIBiUIBcgGZSSkiIUOAIEIAFBAWoiASAJRw0ACyADIAZqIQMgDEEBaiIMIAlHDQALIAdBAWoiByAGRw0ACwsgCBAGCwsDAAELwQEBAn8jAEEQayIBJAACfCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEBEAAAAAAAA8D8gAkGewZryA0kNARogAEQAAAAAAAAAABAEDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQC0EDcQ4DAAECAwsgASsDACABKwMIEAQMAwsgASsDACABKwMIQQEQA5oMAgsgASsDACABKwMIEASaDAELIAErAwAgASsDCEEBEAMLIQAgAUEQaiQAIAALuBgDFH8EfAF+IwBBMGsiCCQAAkACQAJAIAC9IhpCIIinIgNB/////wdxIgZB+tS9gARNBEAgA0H//z9xQfvDJEYNASAGQfyyi4AETQRAIBpCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhY5AwAgASAAIBahRDFjYhphtNC9oDkDCEEB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IAIgC0chCiACQQFqIQIgCg0ACwsgBUGgAWogBkEDdGogADkDACAEQQBKIQIgBEEBayEEIAINAAsLRAAAAAAAAAAAIQAgA0EATgRAIAMhAgNAIAIiBEEBayECIAAgBUGgAWogBEEDdGorAwCgIQAgBA0ACwsgCCAAmiAAIAwbOQMAIAUrA6ABIAChIQBBASECIANBAEoEQANAIAAgBUGgAWogAkEDdGorAwCgIQAgAiADRyEEIAJBAWohAiAEDQALCyAIIACaIAAgDBs5AwggBUGwBGokACAHQQdxIQMgCCsDACEAIBpCAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC8UBAQJ/IwBBEGsiASQAAkAgAL1CIIinQf////8HcSICQfvDpP8DTQRAIAJBgIDA8gNJDQEgAEQAAAAAAAAAAEEAEAMhAAwBCyACQYCAwP8HTwRAIAAgAKEhAAwBCwJAAkACQAJAIAAgARALQQNxDgMAAQIDCyABKwMAIAErAwhBARADIQAMAwsgASsDACABKwMIEAQhAAwCCyABKwMAIAErAwhBARADmiEADAELIAErAwAgASsDCBAEmiEACyABQRBqJAAgAAuhBAEDfyABIAJGBEAgACgCAEEDdBAHIgQgAUEBQQEgAEEIaiAAEAggBCECAkAgACgCAEEDdCIDQYAETwRAIAEgAiADEAEMAQsgASADaiEAAkAgASACc0EDcUUEQAJAIAFBA3FFDQAgA0UNAANAIAEgAi0AADoAACACQQFqIQIgAUEBaiIBQQNxRQ0BIAAgAUsNAAsLAkAgAEF8cSIDQcAASQ0AIAEgA0FAaiIFSw0AA0AgASACKAIANgIAIAEgAigCBDYCBCABIAIoAgg2AgggASACKAIMNgIMIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAEgAigCHDYCHCABIAIoAiA2AiAgASACKAIkNgIkIAEgAigCKDYCKCABIAIoAiw2AiwgASACKAIwNgIwIAEgAigCNDYCNCABIAIoAjg2AjggASACKAI8NgI8IAJBQGshAiABQUBrIgEgBU0NAAsLIAEgA08NAQNAIAEgAigCADYCACACQQRqIQIgAUEEaiIBIANJDQALDAELIABBBEkNACAB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",L(S)||(S=t(S));function W(g){if(g==S&&e)return new Uint8Array(e);var i=nA(g);if(i)return i;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(g,i){var a,G=W(g);a=new WebAssembly.Module(G);var Y=new WebAssembly.Instance(a,i);return[Y,a]}function Z(){var g={a:T};function i(G,Y){var y=G.exports;return F=y,w=F.c,c(),F.j,p(F.d),K(),y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(g,i)}catch(G){n("Module.instantiateWasm callback failed with error: "+G),E(G)}var a=O(S,g);return i(a[0])}var x=g=>{for(;g.length>0;)g.shift()(A)},AA=(g,i,a)=>s.copyWithin(g,i,i+a),IA=g=>{J("OOM")},_=g=>{s.length,IA()};function $(g){var i=A["_"+g];return i}var gA=(g,i)=>{D.set(g,i)},iA=g=>{for(var i=0,a=0;a<g.length;++a){var G=g.charCodeAt(a);G<=127?i++:G<=2047?i+=2:G>=55296&&G<=57343?(i+=4,++a):i+=3}return i},CA=(g,i,a,G)=>{if(!(G>0))return 0;for(var Y=a,y=a+G-1,l=0;l<g.length;++l){var m=g.charCodeAt(l);if(m>=55296&&m<=57343){var V=g.charCodeAt(++l);m=65536+((m&1023)<<10)|V&1023}if(m<=127){if(a>=y)break;i[a++]=m}else if(m<=2047){if(a+1>=y)break;i[a++]=192|m>>6,i[a++]=128|m&63}else if(m<=65535){if(a+2>=y)break;i[a++]=224|m>>12,i[a++]=128|m>>6&63,i[a++]=128|m&63}else{if(a+3>=y)break;i[a++]=240|m>>18,i[a++]=128|m>>12&63,i[a++]=128|m>>6&63,i[a++]=128|m&63}}return i[a]=0,a-Y},QA=(g,i,a)=>CA(g,s,i,a),BA=g=>{var i=iA(g)+1,a=DA(i);return QA(g,a,i),a},oA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,eA=(g,i,a)=>{for(var G=i+a,Y=i;g[Y]&&!(Y>=G);)++Y;if(Y-i>16&&g.buffer&&oA)return oA.decode(g.subarray(i,Y));for(var y="";i<Y;){var l=g[i++];if(!(l&128)){y+=String.fromCharCode(l);continue}var m=g[i++]&63;if((l&224)==192){y+=String.fromCharCode((l&31)<<6|m);continue}var V=g[i++]&63;if((l&240)==224?l=(l&15)<<12|m<<6|V:l=(l&7)<<18|m<<12|V<<6|g[i++]&63,l<65536)y+=String.fromCharCode(l);else{var j=l-65536;y+=String.fromCharCode(55296|j>>10,56320|j&1023)}}return y},rA=(g,i)=>g?eA(s,g,i):"",sA=function(g,i,a,G,Y){var y={string:z=>{var kA=0;return z!=null&&z!==0&&(kA=BA(z)),kA},array:z=>{var kA=DA(z.length);return gA(z,kA),kA}};function l(z){return i==="string"?rA(z):i==="boolean"?!!z:z}var m=$(g),V=[],j=0;if(G)for(var tA=0;tA<G.length;tA++){var wA=y[a[tA]];wA?(j===0&&(j=RA()),V[tA]=wA(G[tA])):V[tA]=G[tA]}var MA=m.apply(null,V);function b(z){return j!==0&&aA(j),l(z)}return MA=b(MA),MA},FA=function(g,i,a,G){var Y=!a||a.every(l=>l==="number"||l==="boolean"),y=i!=="string";return y&&Y&&!G?$(g):function(){return sA(g,i,a,arguments)}},T={b:AA,a:_},EA=Z();EA.d,A._kiss_fft_free=EA.e,A._free=EA.f,A._kiss_fft_alloc=EA.g,A._malloc=EA.h,A._kiss_fft=EA.i,EA.__errno_location;var RA=EA.k,aA=EA.l,DA=EA.m;function cA(g){try{for(var i=atob(g),a=new Uint8Array(i.length),G=0;G<i.length;++G)a[G]=i.charCodeAt(G);return a}catch{throw new Error("Converting base64 string to bytes failed.")}}function nA(g){if(L(g))return cA(g.slice(u.length))}A.ccall=sA,A.cwrap=FA;var hA;U=function g(){hA||C(),hA||(U=g)};function C(){if(k>0||(M(),k>0))return;function g(){hA||(hA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),g()},1)):g()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return C(),I})})(),dA=WA({}),JA=dA.cwrap("kiss_fft_alloc","number",["number","number","number","number"]),xA=dA.cwrap("kiss_fft","void",["number","number","number"]),LA=dA.cwrap("kiss_fft_free","void",["number"]);class VA{constructor(I){this.size=I,this.fcfg=JA(this.size,!1),this.icfg=JA(this.size,!0),this.inptr=dA._malloc(this.size*8),this.cin=new Float32Array(dA.HEAPU8.buffer,this.inptr,this.size*2)}fft=function(I){const A=dA._malloc(this.size*8),r=new Float32Array(dA.HEAPU8.buffer,A,this.size*2);this.cin.set(I),xA(this.fcfg,this.inptr,A);let E=new Float32Array(this.size*2);return E.set(r),dA._free(A),E};dispose(){LA(this.fcfg),LA(this.icfg),dA._free(this.inptr)}}function fA(o){if(this.size=o|0,this.size<=1||(this.size&this.size-1)!==0)throw new Error("FFT size must be a power of two and bigger than 1");this._csize=o<<1;for(var I=new Array(this.size*2),A=0;A<I.length;A+=2){const n=Math.PI*A/this.size;I[A]=Math.cos(n),I[A+1]=-Math.sin(n)}this.table=I;for(var r=0,E=1;this.size>E;E<<=1)r++;this._width=r%2===0?r-1:r,this._bitrev=new Array(1<<this._width);for(var B=0;B<this._bitrev.length;B++){this._bitrev[B]=0;for(var Q=0;Q<this._width;Q+=2){var t=this._width-Q-2;this._bitrev[B]|=(B>>>Q&3)<<t}}this._out=null,this._data=null,this._inv=0}fA.prototype.fromComplexArray=function(I,A){for(var r=A||new Array(I.length>>>1),E=0;E<I.length;E+=2)r[E>>>1]=I[E];return r};fA.prototype.createComplexArray=function(){const I=new Array(this._csize);for(var A=0;A<I.length;A++)I[A]=0;return I};fA.prototype.toComplexArray=function(I,A){for(var r=A||this.createComplexArray(),E=0;E<r.length;E+=2)r[E]=I[E>>>1],r[E+1]=0;return r};fA.prototype.completeSpectrum=function(I){for(var A=this._csize,r=A>>>1,E=2;E<r;E+=2)I[A-E]=I[E],I[A-E+1]=-I[E+1]};fA.prototype.transform=function(I,A){if(I===A)throw new Error("Input and output buffers must be different");this._out=I,this._data=A,this._inv=0,this._transform4(),this._out=null,this._data=null};fA.prototype.realTransform=function(I,A){if(I===A)throw new Error("Input and output buffers must be different");this._out=I,this._data=A,this._inv=0,this._realTransform4(),this._out=null,this._data=null};fA.prototype.inverseTransform=function(I,A){if(I===A)throw new Error("Input and output buffers must be different");this._out=I,this._data=A,this._inv=1,this._transform4();for(var r=0;r<I.length;r++)I[r]/=this.size;this._out=null,this._data=null};fA.prototype._transform4=function(){var I=this._out,A=this._csize,r=this._width,E=1<<r,B=A/E<<1,Q,t,n=this._bitrev;if(B===4)for(Q=0,t=0;Q<A;Q+=B,t++){const c=n[t];this._singleTransform2(Q,c,E)}else for(Q=0,t=0;Q<A;Q+=B,t++){const c=n[t];this._singleTransform4(Q,c,E)}var e=this._inv?-1:1,w=this.table;for(E>>=2;E>=2;E>>=2){B=A/E<<1;var F=B>>>2;for(Q=0;Q<A;Q+=B)for(var h=Q+F,D=Q,s=0;D<h;D+=2,s+=E){const c=D,N=c+F,R=N+F,f=R+F,M=I[c],d=I[c+1],H=I[N],v=I[N+1],p=I[R],P=I[R+1],k=I[f],U=I[f+1],q=M,K=d,J=w[s],u=e*w[s+1],L=H*J-v*u,S=H*u+v*J,W=w[2*s],O=e*w[2*s+1],Z=p*W-P*O,x=p*O+P*W,AA=w[3*s],IA=e*w[3*s+1],_=k*AA-U*IA,$=k*IA+U*AA,gA=q+Z,iA=K+x,CA=q-Z,QA=K-x,BA=L+_,oA=S+$,eA=e*(L-_),rA=e*(S-$),sA=gA+BA,FA=iA+oA,T=gA-BA,EA=iA-oA,RA=CA+rA,aA=QA-eA,DA=CA-rA,cA=QA+eA;I[c]=sA,I[c+1]=FA,I[N]=RA,I[N+1]=aA,I[R]=T,I[R+1]=EA,I[f]=DA,I[f+1]=cA}}};fA.prototype._singleTransform2=function(I,A,r){const E=this._out,B=this._data,Q=B[A],t=B[A+1],n=B[A+r],e=B[A+r+1],w=Q+n,F=t+e,h=Q-n,D=t-e;E[I]=w,E[I+1]=F,E[I+2]=h,E[I+3]=D};fA.prototype._singleTransform4=function(I,A,r){const E=this._out,B=this._data,Q=this._inv?-1:1,t=r*2,n=r*3,e=B[A],w=B[A+1],F=B[A+r],h=B[A+r+1],D=B[A+t],s=B[A+t+1],c=B[A+n],N=B[A+n+1],R=e+D,f=w+s,M=e-D,d=w-s,H=F+c,v=h+N,p=Q*(F-c),P=Q*(h-N),k=R+H,U=f+v,q=M+P,K=d-p,J=R-H,u=f-v,L=M-P,S=d+p;E[I]=k,E[I+1]=U,E[I+2]=q,E[I+3]=K,E[I+4]=J,E[I+5]=u,E[I+6]=L,E[I+7]=S};fA.prototype._realTransform4=function(){var I=this._out,A=this._csize,r=this._width,E=1<<r,B=A/E<<1,Q,t,n=this._bitrev;if(B===4)for(Q=0,t=0;Q<A;Q+=B,t++){const tA=n[t];this._singleRealTransform2(Q,tA>>>1,E>>>1)}else for(Q=0,t=0;Q<A;Q+=B,t++){const tA=n[t];this._singleRealTransform4(Q,tA>>>1,E>>>1)}var e=this._inv?-1:1,w=this.table;for(E>>=2;E>=2;E>>=2){B=A/E<<1;var F=B>>>1,h=F>>>1,D=h>>>1;for(Q=0;Q<A;Q+=B)for(var s=0,c=0;s<=D;s+=2,c+=E){var N=Q+s,R=N+h,f=R+h,M=f+h,d=I[N],H=I[N+1],v=I[R],p=I[R+1],P=I[f],k=I[f+1],U=I[M],q=I[M+1],K=d,J=H,u=w[c],L=e*w[c+1],S=v*u-p*L,W=v*L+p*u,O=w[2*c],Z=e*w[2*c+1],x=P*O-k*Z,AA=P*Z+k*O,IA=w[3*c],_=e*w[3*c+1],$=U*IA-q*_,gA=U*_+q*IA,iA=K+x,CA=J+AA,QA=K-x,BA=J-AA,oA=S+$,eA=W+gA,rA=e*(S-$),sA=e*(W-gA),FA=iA+oA,T=CA+eA,EA=QA+sA,RA=BA-rA;if(I[N]=FA,I[N+1]=T,I[R]=EA,I[R+1]=RA,s===0){var aA=iA-oA,DA=CA-eA;I[f]=aA,I[f+1]=DA;continue}if(s!==D){var cA=QA,nA=-BA,hA=iA,C=-CA,g=-e*sA,i=-e*rA,a=-e*eA,G=-e*oA,Y=cA+g,y=nA+i,l=hA+G,m=C-a,V=Q+h-s,j=Q+F-s;I[V]=Y,I[V+1]=y,I[j]=l,I[j+1]=m}}}};fA.prototype._singleRealTransform2=function(I,A,r){const E=this._out,B=this._data,Q=B[A],t=B[A+r],n=Q+t,e=Q-t;E[I]=n,E[I+1]=0,E[I+2]=e,E[I+3]=0};fA.prototype._singleRealTransform4=function(I,A,r){const E=this._out,B=this._data,Q=this._inv?-1:1,t=r*2,n=r*3,e=B[A],w=B[A+r],F=B[A+t],h=B[A+n],D=e+F,s=e-F,c=w+h,N=Q*(w-h),R=D+c,f=s,M=-N,d=D-c,H=s,v=N;E[I]=R,E[I+1]=0,E[I+2]=f,E[I+3]=M,E[I+4]=d,E[I+5]=0,E[I+6]=H,E[I+7]=v};class KA{constructor(I){this.size=I,this.indutnyFft=new fA(I)}fft(I){const A=new Float32Array(2*this.size);return this.indutnyFft.transform(A,I),A}}var jA=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((C,g)=>{r=C,E=g});var B=Object.assign({},A),Q="";function t(C){return A.locateFile?A.locateFile(C,Q):Q+C}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var C=w.buffer;A.HEAP8=D=new Int8Array(C),A.HEAP16=new Int16Array(C),A.HEAP32=new Int32Array(C),A.HEAPU8=s=new Uint8Array(C),A.HEAPU16=new Uint16Array(C),A.HEAPU32=new Uint32Array(C),A.HEAPF32=new Float32Array(C),A.HEAPF64=new Float64Array(C)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(C){N.unshift(C)}function p(C){R.unshift(C)}function P(C){f.unshift(C)}var k=0,U=null;function q(C){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(C){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var g=U;U=null,g()}}function J(C){A.onAbort&&A.onAbort(C),C="Aborted("+C+")",n(C),h=!0,C+=". Build with -sASSERTIONS for more info.";var g=new WebAssembly.RuntimeError(C);throw E(g),g}var u="data:application/octet-stream;base64,";function L(C){return C.startsWith(u)}var S;S="data:application/octet-stream;base64,AGFzbQEAAAABOApgAX8Bf2ABfAF8YAF/AGADfHx/AXxgAnx8AXxgAnx/AXxgAABgAnx/AX9gAAF/YAZ/f39/f38AAgcBAWEBYQAAAw8OAAMEBQYBAQcIAgAAAgkEBQFwAQEBBQYBAYACgAIGCAF/AUGgogQLByUJAWICAAFjAAUBZAAOAWUBAAFmAAsBZwAKAWgACQFpAA0BagAMCtheDk8BAn9BoB4oAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABAARQ0BC0GgHiAANgIAIAEPC0GkHkEwNgIAQX8LmQEBA3wgACAAoiIDIAMgA6KiIANEfNXPWjrZ5T2iROucK4rm5Vq+oKIgAyADRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKAhBSADIACiIQQgAkUEQCAEIAMgBaJESVVVVVVVxb+goiAAoA8LIAAgAyABRAAAAAAAAOA/oiAFIASioaIgAaEgBERJVVVVVVXFP6KgoQuSAQEDfEQAAAAAAADwPyAAIACiIgJEAAAAAAAA4D+iIgOhIgREAAAAAAAA8D8gBKEgA6EgAiACIAIgAkSQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiIAIgAqIiAyADoiACIAJE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiIAAgAaKhoKALqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F04bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhMG0GSD2ohAQsgACABQf8Haq1CNIa/ogsDAAELxQEBAn8jAEEQayIBJAACQCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEAgAkGAgMDyA0kNASAARAAAAAAAAAAAQQAQAiEADAELIAJBgIDA/wdPBEAgACAAoSEADAELAkACQAJAAkAgACABEAhBA3EOAwABAgMLIAErAwAgASsDCEEBEAIhAAwDCyABKwMAIAErAwgQAyEADAILIAErAwAgASsDCEEBEAKaIQAMAQsgASsDACABKwMIEAOaIQALIAFBEGokACAAC8EBAQJ/IwBBEGsiASQAAnwgAL1CIIinQf////8HcSICQfvDpP8DTQRARAAAAAAAAPA/IAJBnsGa8gNJDQEaIABEAAAAAAAAAAAQAwwBCyAAIAChIAJBgIDA/wdPDQAaAkACQAJAAkAgACABEAhBA3EOAwABAgMLIAErAwAgASsDCBADDAMLIAErAwAgASsDCEEBEAKaDAILIAErAwAgASsDCBADmgwBCyABKwMAIAErAwhBARACCyEAIAFBEGokACAAC7gYAxR/BHwBfiMAQTBrIggkAAJAAkACQCAAvSIaQiCIpyIDQf////8HcSIGQfrUvYAETQRAIANB//8/cUH7wyRGDQEgBkH8souABE0EQCAaQgBZBEAgASAARAAAQFT7Ifm/oCIARDFjYhphtNC9oCIWOQMAIAEgACAWoUQxY2IaYbTQvaA5AwhBASEDDAULIAEgAEQAAEBU+yH5P6AiAEQxY2IaYbTQPaAiFjkDACABIAAgFqFEMWNiGmG00D2gOQMIQX8hAwwECyAaQgBZBEAgASAARAAAQFT7IQnAoCIARDFjYhphtOC9oCIWOQMAIAEgACAWoUQxY2IaYbTgvaA5AwhBAiEDDAQLIAEgAEQAAEBU+yEJQKAiAEQxY2IaYbTgPaAiFjkDACABIAAgFqFEMWNiGmG04D2gOQMIQX4hAwwDCyAGQbuM8YAETQRAIAZBvPvXgARNBEAgBkH8ssuABEYNAiAaQgBZBEAgASAARAAAMH982RLAoCIARMqUk6eRDum9oCIWOQMAIAEgACAWoUTKlJOnkQ7pvaA5AwhBAyEDDAULIAEgAEQAADB/fNkSQKAiAETKlJOnkQ7pPaAiFjkDACABIAAgFqFEypSTp5EO6T2gOQMIQX0hAwwECyAGQfvD5IAERg0BIBpCAFkEQCABIABEAABAVPshGcCgIgBEMWNiGmG08L2gIhY5AwAgASAAIBahRDFjYhphtPC9oDkDCEEEIQMMBAsgASAARAAAQFT7IRlAoCIARDFjYhphtPA9oCIWOQMAIAEgACAWoUQxY2IaYbTwPaA5AwhBfCEDDAMLIAZB+sPkiQRLDQELIAAgAESDyMltMF/kP6JEAAAAAAAAOEOgRAAAAAAAADjDoCIXRAAAQFT7Ifm/oqAiFiAXRDFjYhphtNA9oiIYoSIZRBgtRFT7Iem/YyECAn8gF5lEAAAAAAAA4EFjBEAgF6oMAQtBgICAgHgLIQMCQCACBEAgA0EBayEDIBdEAAAAAAAA8L+gIhdEMWNiGmG00D2iIRggACAXRAAAQFT7Ifm/oqAhFgwBCyAZRBgtRFT7Iek/ZEUNACADQQFqIQMgF0QAAAAAAADwP6AiF0QxY2IaYbTQPaIhGCAAIBdEAABAVPsh+b+ioCEWCyABIBYgGKEiADkDAAJAIAZBFHYiAiAAvUI0iKdB/w9xa0ERSA0AIAEgFiAXRAAAYBphtNA9oiIAoSIZIBdEc3ADLooZozuiIBYgGaEgAKGhIhihIgA5AwAgAiAAvUI0iKdB/w9xa0EySARAIBkhFgwBCyABIBkgF0QAAAAuihmjO6IiAKEiFiAXRMFJICWag3s5oiAZIBahIAChoSIYoSIAOQMACyABIBYgAKEgGKE5AwgMAQsgBkGAgMD/B08EQCABIAAgAKEiADkDACABIAA5AwhBACEDDAELIBpC/////////weDQoCAgICAgICwwQCEvyEAQQAhA0EBIQIDQCAIQRBqIANBA3RqAn8gAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLtyIWOQMAIAAgFqFEAAAAAAAAcEGiIQBBASEDIAIhBEEAIQIgBA0ACyAIIAA5AyBBAiEDA0AgAyICQQFrIQMgCEEQaiACQQN0aisDAEQAAAAAAAAAAGENAAsgCEEQaiEPQQAhBCMAQbAEayIFJAAgBkEUdkGWCGsiA0EDa0EYbSIGQQAgBkEAShsiEEFobCADaiEGQYQIKAIAIgkgAkEBaiIKQQFrIgdqQQBOBEAgCSAKaiEDIBAgB2shAgNAIAVBwAJqIARBA3RqIAJBAEgEfEQAAAAAAAAAAAUgAkECdEGQCGooAgC3CzkDACACQQFqIQIgBEEBaiIEIANHDQALCyAGQRhrIQtBACEDIAlBACAJQQBKGyEEIApBAEwhDANAAkAgDARARAAAAAAAAAAAIQAMAQsgAyAHaiEOQQAhAkQAAAAAAAAAACEAA0AgDyACQQN0aisDACAFQcACaiAOIAJrQQN0aisDAKIgAKAhACACQQFqIgIgCkcNAAsLIAUgA0EDdGogADkDACADIARGIQIgA0EBaiEDIAJFDQALQS8gBmshEkEwIAZrIQ4gBkEZayETIAkhAwJAA0AgBSADQQN0aisDACEAQQAhAiADIQQgA0EATCINRQRAA0AgBUHgA2ogAkECdGoCfwJ/IABEAAAAAAAAcD6iIhaZRAAAAAAAAOBBYwRAIBaqDAELQYCAgIB4C7ciFkQAAAAAAABwwaIgAKAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLNgIAIAUgBEEBayIEQQN0aisDACAWoCEAIAJBAWoiAiADRw0ACwsCfyAAIAsQBCIAIABEAAAAAAAAwD+inEQAAAAAAAAgwKKgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyEHIAAgB7ehIQACQAJAAkACfyALQQBMIhRFBEAgA0ECdCAFaiICIAIoAtwDIgIgAiAOdSICIA50ayIENgLcAyACIAdqIQcgBCASdQwBCyALDQEgA0ECdCAFaigC3ANBF3ULIgxBAEwNAgwBC0ECIQwgAEQAAAAAAADgP2YNAEEAIQwMAQtBACECQQAhBCANRQRAA0AgBUHgA2ogAkECdGoiFSgCACENQf///wchEQJ/AkAgBA0AQYCAgAghESANDQBBAAwBCyAVIBEgDWs2AgBBAQshBCACQQFqIgIgA0cNAAsLAkAgFA0AQf///wMhAgJAAkAgEw4CAQACC0H///8BIQILIANBAnQgBWoiDSANKALcAyACcTYC3AMLIAdBAWohByAMQQJHDQBEAAAAAAAA8D8gAKEhAEECIQwgBEUNACAARAAAAAAAAPA/IAsQBKEhAAsgAEQAAAAAAAAAAGEEQEEAIQQgAyECAkAgAyAJTA0AA0AgBUHgA2ogAkEBayICQQJ0aigCACAEciEEIAIgCUoNAAsgBEUNACALIQYDQCAGQRhrIQYgBUHgA2ogA0EBayIDQQJ0aigCAEUNAAsMAwtBASECA0AgAiIEQQFqIQIgBUHgA2ogCSAEa0ECdGooAgBFDQALIAMgBGohBANAIAVBwAJqIAMgCmoiB0EDdGogA0EBaiIDIBBqQQJ0QZAIaigCALc5AwBBACECRAAAAAAAAAAAIQAgCkEASgRAA0AgDyACQQN0aisDACAFQcACaiAHIAJrQQN0aisDAKIgAKAhACACQQFqIgIgCkcNAAsLIAUgA0EDdGogADkDACADIARIDQALIAQhAwwBCwsCQCAAQRggBmsQBCIARAAAAAAAAHBBZgRAIAVB4ANqIANBAnRqAn8CfyAARAAAAAAAAHA+oiIWmUQAAAAAAADgQWMEQCAWqgwBC0GAgICAeAsiArdEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACADQQFqIQMMAQsCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAshAiALIQYLIAVB4ANqIANBAnRqIAI2AgALRAAAAAAAAPA/IAYQBCEAAkAgA0EASA0AIAMhAgNAIAUgAiIEQQN0aiAAIAVB4ANqIAJBAnRqKAIAt6I5AwAgAkEBayECIABEAAAAAAAAcD6iIQAgBA0ACyADQQBIDQAgAyEEA0BEAAAAAAAAAAAhAEEAIQIgCSADIARrIgYgBiAJShsiC0EATgRAA0AgAkEDdEHgHWorAwAgBSACIARqQQN0aisDAKIgAKAhACACIAtHIQogAkEBaiECIAoNAAsLIAVBoAFqIAZBA3RqIAA5AwAgBEEASiECIARBAWshBCACDQALC0QAAAAAAAAAACEAIANBAE4EQCADIQIDQCACIgRBAWshAiAAIAVBoAFqIARBA3RqKwMAoCEAIAQNAAsLIAggAJogACAMGzkDACAFKwOgASAAoSEAQQEhAiADQQBKBEADQCAAIAVBoAFqIAJBA3RqKwMAoCEAIAIgA0chBCACQQFqIQIgBA0ACwsgCCAAmiAAIAwbOQMIIAVBsARqJAAgB0EHcSEDIAgrAwAhACAaQgBTBEAgASAAmjkDACABIAgrAwiaOQMIQQAgA2shAwwBCyABIAA5AwAgASAIKwMIOQMICyAIQTBqJAAgAwsEACMAC9ILAQd/AkAgAEUNACAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUEDcUUNASACIAIoAgAiAWsiAkG4HigCAEkNASAAIAFqIQACQAJAQbweKAIAIAJHBEAgAUH/AU0EQCABQQN2IQQgAigCDCIBIAIoAggiA0YEQEGoHkGoHigCAEF+IAR3cTYCAAwFCyADIAE2AgwgASADNgIIDAQLIAIoAhghBiACIAIoAgwiAUcEQCACKAIIIgMgATYCDCABIAM2AggMAwsgAkEUaiIEKAIAIgNFBEAgAigCECIDRQ0CIAJBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUoAgQiAUEDcUEDRw0CQbAeIAA2AgAgBSABQX5xNgIEIAIgAEEBcjYCBCAFIAA2AgAPC0EAIQELIAZFDQACQCACKAIcIgNBAnRB2CBqIgQoAgAgAkYEQCAEIAE2AgAgAQ0BQaweQaweKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgAkYbaiABNgIAIAFFDQELIAEgBjYCGCACKAIQIgMEQCABIAM2AhAgAyABNgIYCyACKAIUIgNFDQAgASADNgIUIAMgATYCGAsgAiAFTw0AIAUoAgQiAUEBcUUNAAJAAkACQAJAIAFBAnFFBEBBwB4oAgAgBUYEQEHAHiACNgIAQbQeQbQeKAIAIABqIgA2AgAgAiAAQQFyNgIEIAJBvB4oAgBHDQZBsB5BADYCAEG8HkEANgIADwtBvB4oAgAgBUYEQEG8HiACNgIAQbAeQbAeKAIAIABqIgA2AgAgAiAAQQFyNgIEIAAgAmogADYCAA8LIAFBeHEgAGohACABQf8BTQRAIAFBA3YhBCAFKAIMIgEgBSgCCCIDRgRAQageQageKAIAQX4gBHdxNgIADAULIAMgATYCDCABIAM2AggMBAsgBSgCGCEGIAUgBSgCDCIBRwRAQbgeKAIAGiAFKAIIIgMgATYCDCABIAM2AggMAwsgBUEUaiIEKAIAIgNFBEAgBSgCECIDRQ0CIAVBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUgAUF+cTYCBCACIABBAXI2AgQgACACaiAANgIADAMLQQAhAQsgBkUNAAJAIAUoAhwiA0ECdEHYIGoiBCgCACAFRgRAIAQgATYCACABDQFBrB5BrB4oAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAwRAIAEgAzYCECADIAE2AhgLIAUoAhQiA0UNACABIAM2AhQgAyABNgIYCyACIABBAXI2AgQgACACaiAANgIAIAJBvB4oAgBHDQBBsB4gADYCAA8LIABB/wFNBEAgAEF4cUHQHmohAQJ/QageKAIAIgNBASAAQQN2dCIAcUUEQEGoHiAAIANyNgIAIAEMAQsgASgCCAshACABIAI2AgggACACNgIMIAIgATYCDCACIAA2AggPC0EfIQMgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohAwsgAiADNgIcIAJCADcCECADQQJ0QdggaiEBAkACQAJAQaweKAIAIgRBASADdCIHcUUEQEGsHiAEIAdyNgIAIAEgAjYCACACIAE2AhgMAQsgAEEZIANBAXZrQQAgA0EfRxt0IQMgASgCACEBA0AgASIEKAIEQXhxIABGDQIgA0EddiEBIANBAXQhAyAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAI2AhAgAiAENgIYCyACIAI2AgwgAiACNgIIDAELIAQoAggiACACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgADYCCAtByB5ByB4oAgBBAWsiAEF/IAAbNgIACwvGJwELfyMAQRBrIgokAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEGoHigCACIGQRAgAEELakF4cSAAQQtJGyIFQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQdAeaiIAIAFB2B5qKAIAIgEoAggiBEYEQEGoHiAGQX4gAndxNgIADAELIAQgADYCDCAAIAQ2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgCBEEBcjYCBAwPCyAFQbAeKAIAIgdNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIBQQN0IgBB0B5qIgIgAEHYHmooAgAiACgCCCIERgRAQageIAZBfiABd3EiBjYCAAwBCyAEIAI2AgwgAiAENgIICyAAIAVBA3I2AgQgACAFaiIIIAFBA3QiASAFayIEQQFyNgIEIAAgAWogBDYCACAHBEAgB0F4cUHQHmohAUG8HigCACECAn8gBkEBIAdBA3Z0IgNxRQRAQageIAMgBnI2AgAgAQwBCyABKAIICyEDIAEgAjYCCCADIAI2AgwgAiABNgIMIAIgAzYCCAsgAEEIaiEAQbweIAg2AgBBsB4gBDYCAAwPC0GsHigCACILRQ0BIAtoQQJ0QdggaigCACICKAIEQXhxIAVrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAVrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgRHBEBBuB4oAgAaIAIoAggiACAENgIMIAQgADYCCAwOCyACQRRqIgEoAgAiAEUEQCACKAIQIgBFDQMgAkEQaiEBCwNAIAEhCCAAIgRBFGoiASgCACIADQAgBEEQaiEBIAQoAhAiAA0ACyAIQQA2AgAMDQtBfyEFIABBv39LDQAgAEELaiIAQXhxIQVBrB4oAgAiCEUNAEEAIAVrIQMCQAJAAkACf0EAIAVBgAJJDQAaQR8gBUH///8HSw0AGiAFQSYgAEEIdmciAGt2QQFxIABBAXRrQT5qCyIHQQJ0QdggaigCACIBRQRAQQAhAAwBC0EAIQAgBUEZIAdBAXZrQQAgB0EfRxt0IQIDQAJAIAEoAgRBeHEgBWsiBiADTw0AIAEhBCAGIgMNAEEAIQMgASEADAMLIAAgASgCFCIGIAYgASACQR12QQRxaigCECIBRhsgACAGGyEAIAJBAXQhAiABDQALCyAAIARyRQRAQQAhBEECIAd0IgBBACAAa3IgCHEiAEUNAyAAaEECdEHYIGooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAVrIgIgA0khASACIAMgARshAyAAIAQgARshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBsB4oAgAgBWtPDQAgBCgCGCEHIAQgBCgCDCICRwRAQbgeKAIAGiAEKAIIIgAgAjYCDCACIAA2AggMDAsgBEEUaiIBKAIAIgBFBEAgBCgCECIARQ0DIARBEGohAQsDQCABIQYgACICQRRqIgEoAgAiAA0AIAJBEGohASACKAIQIgANAAsgBkEANgIADAsLIAVBsB4oAgAiBE0EQEG8HigCACEAAkAgBCAFayIBQRBPBEAgACAFaiICIAFBAXI2AgQgACAEaiABNgIAIAAgBUEDcjYCBAwBCyAAIARBA3I2AgQgACAEaiIBIAEoAgRBAXI2AgRBACECQQAhAQtBsB4gATYCAEG8HiACNgIAIABBCGohAAwNCyAFQbQeKAIAIgJJBEBBtB4gAiAFayIBNgIAQcAeQcAeKAIAIgAgBWoiAjYCACACIAFBAXI2AgQgACAFQQNyNgIEIABBCGohAAwNC0EAIQAgBUEvaiIDAn9BgCIoAgAEQEGIIigCAAwBC0GMIkJ/NwIAQYQiQoCggICAgAQ3AgBBgCIgCkEMakFwcUHYqtWqBXM2AgBBlCJBADYCAEHkIUEANgIAQYAgCyIBaiIGQQAgAWsiCHEiASAFTQ0MQeAhKAIAIgQEQEHYISgCACIHIAFqIgkgB00NDSAEIAlJDQ0LAkBB5CEtAABBBHFFBEACQAJAAkACQEHAHigCACIEBEBB6CEhAANAIAQgACgCACIHTwRAIAcgACgCBGogBEsNAwsgACgCCCIADQALC0EAEAEiAkF/Rg0DIAEhBkGEIigCACIAQQFrIgQgAnEEQCABIAJrIAIgBGpBACAAa3FqIQYLIAUgBk8NA0HgISgCACIABEBB2CEoAgAiBCAGaiIIIARNDQQgACAISQ0ECyAGEAEiACACRw0BDAULIAYgAmsgCHEiBhABIgIgACgCACAAKAIEakYNASACIQALIABBf0YNASAFQTBqIAZNBEAgACECDAQLQYgiKAIAIgIgAyAGa2pBACACa3EiAhABQX9GDQEgAiAGaiEGIAAhAgwDCyACQX9HDQILQeQhQeQhKAIAQQRyNgIACyABEAEhAkEAEAEhACACQX9GDQUgAEF/Rg0FIAAgAk0NBSAAIAJrIgYgBUEoak0NBQtB2CFB2CEoAgAgBmoiADYCAEHcISgCACAASQRAQdwhIAA2AgALAkBBwB4oAgAiAwRAQeghIQADQCACIAAoAgAiASAAKAIEIgRqRg0CIAAoAggiAA0ACwwEC0G4HigCACIAQQAgACACTRtFBEBBuB4gAjYCAAtBACEAQewhIAY2AgBB6CEgAjYCAEHIHkF/NgIAQcweQYAiKAIANgIAQfQhQQA2AgADQCAAQQN0IgFB2B5qIAFB0B5qIgQ2AgAgAUHcHmogBDYCACAAQQFqIgBBIEcNAAtBtB4gBkEoayIAQXggAmtBB3EiAWsiBDYCAEHAHiABIAJqIgE2AgAgASAEQQFyNgIEIAAgAmpBKDYCBEHEHkGQIigCADYCAAwECyACIANNDQIgASADSw0CIAAoAgxBCHENAiAAIAQgBmo2AgRBwB4gA0F4IANrQQdxIgBqIgE2AgBBtB5BtB4oAgAgBmoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRBxB5BkCIoAgA2AgAMAwtBACEEDAoLQQAhAgwIC0G4HigCACACSwRAQbgeIAI2AgALIAIgBmohAUHoISEAAkACQAJAA0AgASAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HoISEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxaiIHIAVBA3I2AgQgAUF4IAFrQQdxaiIGIAUgB2oiBWshACADIAZGBEBBwB4gBTYCAEG0HkG0HigCACAAaiIANgIAIAUgAEEBcjYCBAwIC0G8HigCACAGRgRAQbweIAU2AgBBsB5BsB4oAgAgAGoiADYCACAFIABBAXI2AgQgACAFaiAANgIADAgLIAYoAgQiA0EDcUEBRw0GIANBeHEhCSADQf8BTQRAIAYoAgwiASAGKAIIIgJGBEBBqB5BqB4oAgBBfiADQQN2d3E2AgAMBwsgAiABNgIMIAEgAjYCCAwGCyAGKAIYIQggBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAULIAZBFGoiASgCACIDRQRAIAYoAhAiA0UNBCAGQRBqIQELA0AgASEEIAMiAkEUaiIBKAIAIgMNACACQRBqIQEgAigCECIDDQALIARBADYCAAwEC0G0HiAGQShrIgBBeCACa0EHcSIBayIINgIAQcAeIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQcQeQZAiKAIANgIAIAMgBEEnIARrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQfAhKQIANwIQIAFB6CEpAgA3AghB8CEgAUEIajYCAEHsISAGNgIAQeghIAI2AgBB9CFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiECIABBBGohACACIARJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAIAJB/wFNBEAgAkF4cUHQHmohAAJ/QageKAIAIgFBASACQQN2dCICcUUEQEGoHiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyEAIAJB////B00EQCACQSYgAkEIdmciAGt2QQFxIABBAXRrQT5qIQALIAMgADYCHCADQgA3AhAgAEECdEHY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",L(S)||(S=t(S));function W(C){if(C==S&&e)return new Uint8Array(e);var g=cA(C);if(g)return g;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(C,g){var i,a=W(C);i=new WebAssembly.Module(a);var G=new WebAssembly.Instance(i,g);return[G,i]}function Z(){var C={a:FA};function g(a,G){var Y=a.exports;return F=Y,w=F.b,c(),F.e,p(F.c),K(),Y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(C,g)}catch(a){n("Module.instantiateWasm callback failed with error: "+a),E(a)}var i=O(S,C);return g(i[0])}var x=C=>{for(;C.length>0;)C.shift()(A)},AA=C=>{J("OOM")},IA=C=>{s.length,AA()};function _(C){var g=A["_"+C];return g}var $=(C,g)=>{D.set(C,g)},gA=C=>{for(var g=0,i=0;i<C.length;++i){var a=C.charCodeAt(i);a<=127?g++:a<=2047?g+=2:a>=55296&&a<=57343?(g+=4,++i):g+=3}return g},iA=(C,g,i,a)=>{if(!(a>0))return 0;for(var G=i,Y=i+a-1,y=0;y<C.length;++y){var l=C.charCodeAt(y);if(l>=55296&&l<=57343){var m=C.charCodeAt(++y);l=65536+((l&1023)<<10)|m&1023}if(l<=127){if(i>=Y)break;g[i++]=l}else if(l<=2047){if(i+1>=Y)break;g[i++]=192|l>>6,g[i++]=128|l&63}else if(l<=65535){if(i+2>=Y)break;g[i++]=224|l>>12,g[i++]=128|l>>6&63,g[i++]=128|l&63}else{if(i+3>=Y)break;g[i++]=240|l>>18,g[i++]=128|l>>12&63,g[i++]=128|l>>6&63,g[i++]=128|l&63}}return g[i]=0,i-G},CA=(C,g,i)=>iA(C,s,g,i),QA=C=>{var g=gA(C)+1,i=aA(g);return CA(C,i,g),i},BA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,oA=(C,g,i)=>{for(var a=g+i,G=g;C[G]&&!(G>=a);)++G;if(G-g>16&&C.buffer&&BA)return BA.decode(C.subarray(g,G));for(var Y="";g<G;){var y=C[g++];if(!(y&128)){Y+=String.fromCharCode(y);continue}var l=C[g++]&63;if((y&224)==192){Y+=String.fromCharCode((y&31)<<6|l);continue}var m=C[g++]&63;if((y&240)==224?y=(y&15)<<12|l<<6|m:y=(y&7)<<18|l<<12|m<<6|C[g++]&63,y<65536)Y+=String.fromCharCode(y);else{var V=y-65536;Y+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return Y},eA=(C,g)=>C?oA(s,C,g):"",rA=function(C,g,i,a,G){var Y={string:b=>{var z=0;return b!=null&&b!==0&&(z=QA(b)),z},array:b=>{var z=aA(b.length);return $(b,z),z}};function y(b){return g==="string"?eA(b):g==="boolean"?!!b:b}var l=_(C),m=[],V=0;if(a)for(var j=0;j<a.length;j++){var tA=Y[i[j]];tA?(V===0&&(V=EA()),m[j]=tA(a[j])):m[j]=a[j]}var wA=l.apply(null,m);function MA(b){return V!==0&&RA(V),y(b)}return wA=MA(wA),wA},sA=function(C,g,i,a){var G=!i||i.every(y=>y==="number"||y==="boolean"),Y=g!=="string";return Y&&G&&!a?_(C):function(){return rA(C,g,i,arguments)}},FA={a:IA},T=Z();T.c,A._fftCross=T.d,T.__errno_location,A._malloc=T.f,A._free=T.g;var EA=T.h,RA=T.i,aA=T.j;function DA(C){try{for(var g=atob(C),i=new Uint8Array(g.length),a=0;a<g.length;++a)i[a]=g.charCodeAt(a);return i}catch{throw new Error("Converting base64 string to bytes failed.")}}function cA(C){if(L(C))return DA(C.slice(u.length))}A.ccall=rA,A.cwrap=sA;var nA;U=function C(){nA||hA(),nA||(U=C)};function hA(){if(k>0||(M(),k>0))return;function C(){nA||(nA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),C()},1)):C()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return hA(),I})})(),YA=jA({}),XA=YA.cwrap("fftCross","void",["number","number","number","number","number","number"]);function OA(o){this.size=o,this.n=o*8,this.ptr=YA._malloc(this.n*4),this.ri=new Uint8Array(YA.HEAPU8.buffer,this.ptr,this.n),this.ii=new Uint8Array(YA.HEAPU8.buffer,this.ptr+this.n,this.n),this.transform=function(I,A,r){var E=this.ptr,B=this.n;this.ri.set(new Uint8Array(I.buffer)),this.ii.set(new Uint8Array(A.buffer)),XA(this.size,r,E,E+B,E+B*2,E+B*3);var Q=new Float64Array(YA.HEAPU8.buffer,E+B*2,this.size),t=new Float64Array(YA.HEAPU8.buffer,E+B*3,this.size);return{real:Q,imag:t}},this.dispose=function(){YA._free(this.ptr)}}class ZA{constructor(I){this.size=I,this.fftcross=new OA(I),this.real=new Float64Array(this.size),this.imag=new Float64Array(this.size)}fft(I){for(var A=0;A<this.size;A++)this.real[A]=I[2*A],this.imag[A]=I[2*A+1];const r=this.fftcross.transform(this.real,this.imag,!1),E=new Float32Array(2*this.size);for(var A=0;A<this.size;A++)E[2*A]=r.real[A],E[2*A+1]=r.imag[A];return E}}function zA(o){this.n=o,this.levels=-1;for(var I=0;I<32;I++)1<<I==o&&(this.levels=I);if(this.levels==-1)throw"Length is not a power of 2";this.cosTable=new Array(o/2),this.sinTable=new Array(o/2);for(var I=0;I<o/2;I++)this.cosTable[I]=Math.cos(2*Math.PI*I/o),this.sinTable[I]=Math.sin(2*Math.PI*I/o);this.forward=function(A,r){for(var E=this.n,B=0;B<E;B++){var Q=s(B,this.levels);if(Q>B){var t=A[B];A[B]=A[Q],A[Q]=t,t=r[B],r[B]=r[Q],r[Q]=t}}for(var n=2;n<=E;n*=2)for(var e=n/2,w=E/n,B=0;B<E;B+=n)for(var Q=B,F=0;Q<B+e;Q++,F+=w){var h=A[Q+e]*this.cosTable[F]+r[Q+e]*this.sinTable[F],D=-A[Q+e]*this.sinTable[F]+r[Q+e]*this.cosTable[F];A[Q+e]=A[Q]-h,r[Q+e]=r[Q]-D,A[Q]+=h,r[Q]+=D}function s(c,N){for(var R=0,f=0;f<N;f++)R=R<<1|c&1,c>>>=1;return R}},this.inverse=function(A,r){forward(r,A)}}class _A{constructor(I){this.size=I,this.fftNayuki=new zA(I)}fft(I){const A=new Float32Array(this.size),r=new Float32Array(this.size),E=new Float32Array(this.size*2);for(var B=0;B<this.size;++B)A[B]=I[B*2],r[B]=I[B*2+1];this.fftNayuki.forward(A,r);for(var B=0;B<this.size;++B)E[B*2]=A[B],E[B*2+1]=r[B];return E}}var $A=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((C,g)=>{r=C,E=g});var B=Object.assign({},A),Q="";function t(C){return A.locateFile?A.locateFile(C,Q):Q+C}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var C=w.buffer;A.HEAP8=D=new Int8Array(C),A.HEAP16=new Int16Array(C),A.HEAP32=new Int32Array(C),A.HEAPU8=s=new Uint8Array(C),A.HEAPU16=new Uint16Array(C),A.HEAPU32=new Uint32Array(C),A.HEAPF32=new Float32Array(C),A.HEAPF64=new Float64Array(C)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(C){N.unshift(C)}function p(C){R.unshift(C)}function P(C){f.unshift(C)}var k=0,U=null;function q(C){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(C){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var g=U;U=null,g()}}function J(C){A.onAbort&&A.onAbort(C),C="Aborted("+C+")",n(C),h=!0,C+=". Build with -sASSERTIONS for more info.";var g=new WebAssembly.RuntimeError(C);throw E(g),g}var u="data:application/octet-stream;base64,";function L(C){return C.startsWith(u)}var S;S="data:application/octet-stream;base64,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IgMNACACQRBqIQEgAigCECIDDQALIARBADYCAAwEC0G0HiAGQShrIgBBeCACa0EHcSIBayIINgIAQcAeIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQcQeQZAiKAIANgIAIAMgBEEnIARrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQfAhKQIANwIQIAFB6CEpAgA3AghB8CEgAUEIajYCAEHsISAGNgIAQeghIAI2AgBB9CFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiECIABBBGohACACIARJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAIAJB/wFNBEAgAkF4cUHQHmohAAJ/QageKAIAIgFBASACQQN2dCICcUUEQEGoHiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyEAIAJB////B00EQCACQSYgAkEIdmciAGt2QQFxIABBAXRrQT5qIQALIAMgADYCHCADQgA3AhAgAEECdEHYIGohAQJAAkBBrB4oAgAiBEEBIAB0IgZxRQRAQaweIAQgBnI2AgAgASADNgIADAELIAJBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBANAIAQiASgCBEF4cSACRg0CIABBHXYhBCAAQQF0IQAgASAEQQRxaiIGKAIQIgQNAAsgBiADNgIQCyADIAE2AhggAyADNgIMIAMgAzYCCAwBCyABKAIIIgAgAzYCDCABIAM2AgggA0EANgIYIAMgATYCDCADIAA2AggLQbQeKAIAIgAgBU0NAEG0HiAAIAVrIgE2AgBBwB5BwB4oAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAgLQaQeQTA2AgBBACEADAcLQQAhAgsgCEUNAAJAIAYoAhwiAUECdEHYIGoiBCgCACAGRgRAIAQgAjYCACACDQFBrB5BrB4oAgBBfiABd3E2AgAMAgsgCEEQQRQgCCgCECAGRhtqIAI2AgAgAkUNAQsgAiAINgIYIAYoAhAiAQRAIAIgATYCECABIAI2AhgLIAYoAhQiAUUNACACIAE2AhQgASACNgIYCyAAIAlqIQAgBiAJaiIGKAIEIQMLIAYgA0F+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",L(S)||(S=t(S));function W(C){if(C==S&&e)return new Uint8Array(e);var g=cA(C);if(g)return g;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(C,g){var i,a=W(C);i=new WebAssembly.Module(a);var G=new WebAssembly.Instance(i,g);return[G,i]}function Z(){var C={a:FA};function g(a,G){var Y=a.exports;return F=Y,w=F.b,c(),F.l,p(F.c),K(),Y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(C,g)}catch(a){n("Module.instantiateWasm callback failed with error: "+a),E(a)}var i=O(S,C);return g(i[0])}var x=C=>{for(;C.length>0;)C.shift()(A)},AA=C=>{J("OOM")},IA=C=>{s.length,AA()};function _(C){var g=A["_"+C];return g}var $=(C,g)=>{D.set(C,g)},gA=C=>{for(var g=0,i=0;i<C.length;++i){var a=C.charCodeAt(i);a<=127?g++:a<=2047?g+=2:a>=55296&&a<=57343?(g+=4,++i):g+=3}return g},iA=(C,g,i,a)=>{if(!(a>0))return 0;for(var G=i,Y=i+a-1,y=0;y<C.length;++y){var l=C.charCodeAt(y);if(l>=55296&&l<=57343){var m=C.charCodeAt(++y);l=65536+((l&1023)<<10)|m&1023}if(l<=127){if(i>=Y)break;g[i++]=l}else if(l<=2047){if(i+1>=Y)break;g[i++]=192|l>>6,g[i++]=128|l&63}else if(l<=65535){if(i+2>=Y)break;g[i++]=224|l>>12,g[i++]=128|l>>6&63,g[i++]=128|l&63}else{if(i+3>=Y)break;g[i++]=240|l>>18,g[i++]=128|l>>12&63,g[i++]=128|l>>6&63,g[i++]=128|l&63}}return g[i]=0,i-G},CA=(C,g,i)=>iA(C,s,g,i),QA=C=>{var g=gA(C)+1,i=aA(g);return CA(C,i,g),i},BA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,oA=(C,g,i)=>{for(var a=g+i,G=g;C[G]&&!(G>=a);)++G;if(G-g>16&&C.buffer&&BA)return BA.decode(C.subarray(g,G));for(var Y="";g<G;){var y=C[g++];if(!(y&128)){Y+=String.fromCharCode(y);continue}var l=C[g++]&63;if((y&224)==192){Y+=String.fromCharCode((y&31)<<6|l);continue}var m=C[g++]&63;if((y&240)==224?y=(y&15)<<12|l<<6|m:y=(y&7)<<18|l<<12|m<<6|C[g++]&63,y<65536)Y+=String.fromCharCode(y);else{var V=y-65536;Y+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return Y},eA=(C,g)=>C?oA(s,C,g):"",rA=function(C,g,i,a,G){var Y={string:b=>{var z=0;return b!=null&&b!==0&&(z=QA(b)),z},array:b=>{var z=aA(b.length);return $(b,z),z}};function y(b){return g==="string"?eA(b):g==="boolean"?!!b:b}var l=_(C),m=[],V=0;if(a)for(var j=0;j<a.length;j++){var tA=Y[i[j]];tA?(V===0&&(V=EA()),m[j]=tA(a[j])):m[j]=a[j]}var wA=l.apply(null,m);function MA(b){return V!==0&&RA(V),y(b)}return wA=MA(wA),wA},sA=function(C,g,i,a){var G=!i||i.every(y=>y==="number"||y==="boolean"),Y=g!=="string";return Y&&G&&!a?_(C):function(){return rA(C,g,i,arguments)}},FA={a:IA},T=Z();T.c,A._malloc=T.d,A._free=T.e,A._precalc=T.f,A._precalc_f=T.g,A._dispose=T.h,A._dispose_f=T.i,A._transform_radix2_precalc=T.j,A._transform_radix2_precalc_f=T.k,T.__errno_location;var EA=T.m,RA=T.n,aA=T.o;function DA(C){try{for(var g=atob(C),i=new Uint8Array(g.length),a=0;a<g.length;++a)i[a]=g.charCodeAt(a);return i}catch{throw new Error("Converting base64 string to bytes failed.")}}function cA(C){if(L(C))return DA(C.slice(u.length))}A.ccall=rA,A.cwrap=sA;var nA;U=function C(){nA||hA(),nA||(U=C)};function hA(){if(k>0||(M(),k>0))return;function C(){nA||(nA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),C()},1)):C()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return hA(),I})})(),yA=$A({});yA.cwrap("precalc","number",["number"]);yA.cwrap("dispose","void",["number"]);yA.cwrap("transform_radix2_precalc","void",["number","number","number","number"]);var AI=yA.cwrap("precalc_f","number",["number"]),II=yA.cwrap("dispose_f","void",["number"]),gI=yA.cwrap("transform_radix2_precalc_f","void",["number","number","number","number"]);function CI(o){this.n=o,this.rptr=yA._malloc(o*4+o*4),this.iptr=this.rptr+o*4,this.rarr=new Float32Array(yA.HEAPU8.buffer,this.rptr,o),this.iarr=new Float32Array(yA.HEAPU8.buffer,this.iptr,o),this.tables=AI(o),this.forward=function(I,A){this.rarr.set(I),this.iarr.set(A),gI(this.rptr,this.iptr,this.n,this.tables),I.set(this.rarr),A.set(this.iarr)},this.dispose=function(){yA._free(this.rptr),II(this.tables)}}class BI{constructor(I){this.size=I,this.fftNayuki=new CI(I)}fft(I){const A=new Float32Array(this.size),r=new Float32Array(this.size),E=new Float32Array(this.size*2);for(var B=0;B<this.size;++B)A[B]=I[B*2],r[B]=I[B*2+1];this.fftNayuki.forward(A,r);for(var B=0;B<this.size;++B)E[B*2]=A[B],E[B*2+1]=r[B];return E}}if(!vA)var vA={};(function(o){function I(t,n,e,w,F,h){for(var D=F.twiddle,s=0;s<h;s++){var c=t[2*(n+e*s)],N=t[2*(n+e*s)+1],R=t[2*(n+e*(s+h))],f=t[2*(n+e*(s+h))+1],M=D[2*(0+w*s)],d=D[2*(0+w*s)+1],H=R*M-f*d,v=R*d+f*M,p=c+H,P=N+v,k=c-H,U=N-v;t[2*(n+e*s)]=p,t[2*(n+e*s)+1]=P,t[2*(n+e*(s+h))]=k,t[2*(n+e*(s+h))+1]=U}}function A(t,n,e,w,F,h){for(var D=F.twiddle,s=h,c=2*h,N=w,R=2*w,f=D[2*(0+w*h)+1],M=0;M<h;M++){var d=t[2*(n+e*M)],H=t[2*(n+e*M)+1],v=t[2*(n+e*(M+s))],p=t[2*(n+e*(M+s))+1],P=D[2*(0+N*M)],k=D[2*(0+N*M)+1],U=v*P-p*k,q=v*k+p*P,K=t[2*(n+e*(M+c))],J=t[2*(n+e*(M+c))+1],u=D[2*(0+R*M)],L=D[2*(0+R*M)+1],S=K*u-J*L,W=K*L+J*u,O=U+S,Z=q+W,x=d+O,AA=H+Z;t[2*(n+e*M)]=x,t[2*(n+e*M)+1]=AA;var IA=d-O*.5,_=H-Z*.5,$=(U-S)*f,gA=(q-W)*f,iA=IA-gA,CA=_+$;t[2*(n+e*(M+s))]=iA,t[2*(n+e*(M+s))+1]=CA;var QA=IA+gA,BA=_-$;t[2*(n+e*(M+c))]=QA,t[2*(n+e*(M+c))+1]=BA}}function r(t,n,e,w,F,h){for(var D=F.twiddle,s=h,c=2*h,N=3*h,R=w,f=2*w,M=3*w,d=0;d<h;d++){var H=t[2*(n+e*d)],v=t[2*(n+e*d)+1],p=t[2*(n+e*(d+s))],P=t[2*(n+e*(d+s))+1],k=D[2*(0+R*d)],U=D[2*(0+R*d)+1],q=p*k-P*U,K=p*U+P*k,J=t[2*(n+e*(d+c))],u=t[2*(n+e*(d+c))+1],L=D[2*(0+f*d)],S=D[2*(0+f*d)+1],W=J*L-u*S,O=J*S+u*L,Z=t[2*(n+e*(d+N))],x=t[2*(n+e*(d+N))+1],AA=D[2*(0+M*d)],IA=D[2*(0+M*d)+1],_=Z*AA-x*IA,$=Z*IA+x*AA,gA=H+W,iA=v+O,CA=H-W,QA=v-O,BA=q+_,oA=K+$,eA=q-_,rA=K-$,sA=gA+BA,FA=iA+oA;if(F.inverse)var T=CA-rA,EA=QA+eA;else var T=CA+rA,EA=QA-eA;var RA=gA-BA,aA=iA-oA;if(F.inverse)var DA=CA+rA,cA=QA-eA;else var DA=CA-rA,cA=QA+eA;t[2*(n+e*d)]=sA,t[2*(n+e*d)+1]=FA,t[2*(n+e*(d+s))]=T,t[2*(n+e*(d+s))+1]=EA,t[2*(n+e*(d+c))]=RA,t[2*(n+e*(d+c))+1]=aA,t[2*(n+e*(d+N))]=DA,t[2*(n+e*(d+N))+1]=cA}}function E(t,n,e,w,F,h,D){for(var s=F.twiddle,c=F.n,N=new Float64Array(2*D),R=0;R<h;R++){for(var f=0,M=R;f<D;f++,M+=h){var d=t[2*(n+e*M)],H=t[2*(n+e*M)+1];N[2*f]=d,N[2*f+1]=H}for(var f=0,M=R;f<D;f++,M+=h){var v=0,d=N[0],H=N[1];t[2*(n+e*M)]=d,t[2*(n+e*M)+1]=H;for(var p=1;p<D;p++){v=(v+w*M)%c;var P=t[2*(n+e*M)],k=t[2*(n+e*M)+1],U=N[2*p],q=N[2*p+1],K=s[2*v],J=s[2*v+1],u=U*K-q*J,L=U*J+q*K,S=P+u,W=k+L;t[2*(n+e*M)]=S,t[2*(n+e*M)+1]=W}}}}function B(t,n,e,w,F,h,D,s,c){var N=s.shift(),R=s.shift();if(R==1)for(var f=0;f<N*R;f++){var M=w[2*(F+h*D*f)],d=w[2*(F+h*D*f)+1];t[2*(n+e*f)]=M,t[2*(n+e*f)+1]=d}else for(var f=0;f<N;f++)B(t,n+e*f*R,e,w,F+f*h*D,h*N,D,s.slice(),c);switch(N){case 2:I(t,n,e,h,c,R);break;case 3:A(t,n,e,h,c,R);break;case 4:r(t,n,e,h,c,R);break;default:E(t,n,e,h,c,R,N);break}}var Q=function(e,w){if(arguments.length<2)throw new RangeError("You didn't pass enough arguments, passed `"+arguments.length+"'");var e=~~e,w=!!w;if(e<1)throw new RangeError("n is outside range, should be positive integer, was `"+e+"'");for(var F={n:e,inverse:w,factors:[],twiddle:new Float64Array(2*e),scratch:new Float64Array(2*e)},h=F.twiddle,D=2*Math.PI/e,s=0;s<e;s++){if(w)var c=D*s;else var c=-D*s;h[2*s]=Math.cos(c),h[2*s+1]=Math.sin(c)}for(var N=4,R=Math.floor(Math.sqrt(e));e>1;){for(;e%N;){switch(N){case 4:N=2;break;case 2:N=3;break;default:N+=2;break}N>R&&(N=e)}e/=N,F.factors.push(N),F.factors.push(e)}this.state=F};Q.prototype.simple=function(t,n,e){this.process(t,0,1,n,0,1,e)},Q.prototype.process=function(t,n,s,w,F,c,D){var s=~~s,c=~~c,N=D=="real"?D:"complex";if(s<1)throw new RangeError("outputStride is outside range, should be positive integer, was `"+s+"'");if(c<1)throw new RangeError("inputStride is outside range, should be positive integer, was `"+c+"'");if(N=="real"){for(var R=0;R<this.state.n;R++){var f=w[F+c*R],M=0;this.state.scratch[2*R]=f,this.state.scratch[2*R+1]=M}B(t,n,s,this.state.scratch,0,1,1,this.state.factors.slice(),this.state)}else if(w==t){B(this.state.scratch,0,1,w,F,1,c,this.state.factors.slice(),this.state);for(var R=0;R<this.state.n;R++){var f=this.state.scratch[2*R],M=this.state.scratch[2*R+1];t[2*(n+s*R)]=f,t[2*(n+s*R)+1]=M}}else B(t,n,s,w,F,1,c,this.state.factors.slice(),this.state)},o.complex=Q})(vA);const QI=vA;class EI{constructor(I){this.size=I,this.nockertfft=new QI.complex(I,!1)}fft(I){const A=new Float32Array(2*this.size);return this.nockertfft.simple(A,I,"complex"),A}}let X=0,SA=null,lA=null;function iI(o){if(o!==0&&(o&o-1)===0)X=o,oI(),nI(),aI();else throw new Error("init: radix-2 required")}function UA(o,I){uA(o,I,1)}function HA(o,I){let A=1/X;uA(o,I,-1);for(let r=0;r<X;r++)o[r]*=A,I[r]*=A}function rI(o,I){uA(o,I,-1)}function tI(o,I){let A=[],r=[],E=0;for(let B=0;B<X;B++){E=B*X;for(let Q=0;Q<X;Q++)A[Q]=o[Q+E],r[Q]=I[Q+E];UA(A,r);for(let Q=0;Q<X;Q++)o[Q+E]=A[Q],I[Q+E]=r[Q]}for(let B=0;B<X;B++){for(let Q=0;Q<X;Q++)E=B+Q*X,A[Q]=o[E],r[Q]=I[E];UA(A,r);for(let Q=0;Q<X;Q++)E=B+Q*X,o[E]=A[Q],I[E]=r[Q]}}function eI(o,I){let A=[],r=[],E=0;for(let B=0;B<X;B++){E=B*X;for(let Q=0;Q<X;Q++)A[Q]=o[Q+E],r[Q]=I[Q+E];HA(A,r);for(let Q=0;Q<X;Q++)o[Q+E]=A[Q],I[Q+E]=r[Q]}for(let B=0;B<X;B++){for(let Q=0;Q<X;Q++)E=B+Q*X,A[Q]=o[E],r[Q]=I[E];HA(A,r);for(let Q=0;Q<X;Q++)E=B+Q*X,o[E]=A[Q],I[E]=r[Q]}}function uA(o,I,A){let r,E,B,Q,t,n,e,w,F,h=X>>2;for(let D=0;D<X;D++)Q=SA[D],D<Q&&(t=o[D],o[D]=o[Q],o[Q]=t,t=I[D],I[D]=I[Q],I[Q]=t);for(let D=1;D<X;D<<=1){E=0,r=X/(D<<1);for(let s=0;s<D;s++){n=lA[E+h],e=A*lA[E];for(let c=s;c<X;c+=D<<1)B=c+D,w=n*o[B]+e*I[B],F=n*I[B]-e*o[B],o[B]=o[c]-w,o[c]+=w,I[B]=I[c]-F,I[c]+=F;E+=r}}}function oI(){typeof Uint32Array<"u"?SA=new Uint32Array(X):SA=[],typeof Float64Array<"u"?lA=new Float64Array(X*1.25):lA=[]}function nI(){let o=0,I=0,A=0;for(SA[0]=0;++o<X;){for(A=X>>1;A<=I;)I-=A,A>>=1;I+=A,SA[o]=I}}function aI(){let o=X>>1,I=X>>2,A=X>>3,r=o+I,E=Math.sin(Math.PI/X),B=2*E*E,Q=Math.sqrt(B*(2-B)),t=lA[I]=1,n=lA[0]=0;E=2*B;for(let e=1;e<A;e++)t-=B,B+=E*t,n+=Q,Q-=E*n,lA[e]=n,lA[I-e]=t;A!==0&&(lA[A]=Math.sqrt(.5));for(let e=0;e<I;e++)lA[o-e]=lA[e];for(let e=0;e<r;e++)lA[e+o]=-lA[e]}const sI={init:iI,fft1d:UA,ifft1d:HA,fft2d:tI,ifft2d:eI,fft:UA,ifft:HA,bt:rI};class DI{constructor(I){this.size=I,this.FFT_mljs=sI,this.FFT_mljs.init(I)}fft(I){const A=new Float32Array(this.size),r=new Float32Array(this.size),E=new Float32Array(2*this.size);for(var B=0;B<this.size;++B)A[B]=I[B*2],r[B]=I[B*2+1];this.FFT_mljs.fft(A,r);for(var B=0;B<this.size;++B)E[B*2]=A[B],E[B*2+1]=r[B];return E}}async function hI(){return await WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11]))}async function cI(){return await WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}async function wI(){let o="Other",I="Unknown",A="Other",r="Unknown",E=navigator.userAgentData,B=navigator.userAgent;try{if(E){const Q=await E.getHighEntropyValues(["architecture","model","platform","platformVersion","uaFullVersion"]),t=E.brands.find(n=>["Microsoft Edge","Google Chrome","Opera"].includes(n.brand));o=t?t.brand:"Other",I=t?`v${t.version}`:"Unknown",A=Q.platform?Q.platform:"Other",r=Q.platformVersion?`v${Q.platformVersion}`:"Unknown"}if(o==="Other"||A==="Other"){const Q=B.split(" "),t=Q[Q.length-1],n=/Firefox/.test(t),e=/Safari/.test(t)&&!/CriOS/.test(t)&&!/Chrome/.test(t),w=/CriOS/.test(t)||/Chrome/.test(t),F=/Edg/.test(t),h=/OPR/.test(t),D=[{name:"Mozilla Firefox",regex:/Firefox\/(\d+\.\d+)/,flag:n},{name:"Safari",regex:/Version\/(\d+\.\d+)/,flag:e},{name:"Google Chrome",regex:/CriOS|Chrome\/(\d+\.\d+)/,flag:w},{name:"Microsoft Edge",regex:/Edg\/(\d+\.\d+)/,flag:F},{name:"Opera",regex:/OPR\/(\d+\.\d+)/,flag:h}];for(const f of D)if(f.flag){o=f.name;const M=t.match(f.regex);I=M?M[1]:"Unknown";break}const s=B.match(/\(([^)]+)\)/),c=s?s[1].split("; "):[];console.log(s),console.log(c);const N={"10.0":"10","6.3":"8.1","6.2":"8","6.1":"7","6.0":"Vista","5.2":"XP 64-bit","5.1":"XP","5.0":"2000"},R=[{name:"Windows",regex:/Windows NT/,transform:f=>N[f.split(" ")[2]],index:0},{name:"Mac OS X",regex:/Mac OS X/,transform:f=>f.replace("_",".").split(" ")[3],index:0},{name:"Linux",regex:/Linux/,transform:()=>"Unknown",index:0},{name:"Android",regex:/Android/,transform:f=>f.split(" ")[1],index:0},{name:"iOS",regex:/iPhone/,transform:f=>f.split(" ")[1].replace("_","."),index:0}];for(const f of R)if(f.regex.test(c[0])){A=f.name,console.log(`osDetails: ${c}`),r=f.transform?f.transform(c[1]):f.versionMap[c[1].split(" ")[f.index]];break}}}catch(Q){console.error("Could not retrieve user agent data",Q)}return{browserName:o,browserVersion:I,osName:A,osVersion:r,wasm:typeof WebAssembly=="object",relaxedSimd:await hI(),simd:await cI()}}var fI=(()=>{var o=typeof document>"u"?require("url").pathToFileURL(__filename).href:NA&&NA.tagName.toUpperCase()==="SCRIPT"&&NA.src||new URL("spectrogram-js.cjs.js",document.baseURI).href;return(function(I={}){var A=I,r,E;A.ready=new Promise((C,g)=>{r=C,E=g});var B=Object.assign({},A),Q="";function t(C){return A.locateFile?A.locateFile(C,Q):Q+C}typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),o&&(Q=o),Q.indexOf("blob:")!==0?Q=Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):Q="",A.print||console.log.bind(console);var n=A.printErr||console.error.bind(console);Object.assign(A,B),B=null,A.arguments&&A.arguments,A.thisProgram&&A.thisProgram,A.quit&&A.quit;var e;A.wasmBinary&&(e=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&J("no native wasm support detected");var w,F,h=!1,D,s;function c(){var C=w.buffer;A.HEAP8=D=new Int8Array(C),A.HEAP16=new Int16Array(C),A.HEAP32=new Int32Array(C),A.HEAPU8=s=new Uint8Array(C),A.HEAPU16=new Uint16Array(C),A.HEAPU32=new Uint32Array(C),A.HEAPF32=new Float32Array(C),A.HEAPF64=new Float64Array(C)}var N=[],R=[],f=[];function M(){if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)v(A.preRun.shift());x(N)}function d(){x(R)}function H(){if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)P(A.postRun.shift());x(f)}function v(C){N.unshift(C)}function p(C){R.unshift(C)}function P(C){f.unshift(C)}var k=0,U=null;function q(C){k++,A.monitorRunDependencies&&A.monitorRunDependencies(k)}function K(C){if(k--,A.monitorRunDependencies&&A.monitorRunDependencies(k),k==0&&U){var g=U;U=null,g()}}function J(C){A.onAbort&&A.onAbort(C),C="Aborted("+C+")",n(C),h=!0,C+=". Build with -sASSERTIONS for more info.";var g=new WebAssembly.RuntimeError(C);throw E(g),g}var u="data:application/octet-stream;base64,";function L(C){return C.startsWith(u)}var S;S="data:application/octet-stream;base64,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",L(S)||(S=t(S));function W(C){if(C==S&&e)return new Uint8Array(e);var g=cA(C);if(g)return g;throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}function O(C,g){var i,a=W(C);i=new WebAssembly.Module(a);var G=new WebAssembly.Instance(i,g);return[G,i]}function Z(){var C={a:FA};function g(a,G){var Y=a.exports;return F=Y,w=F.b,c(),F.i,p(F.c),K(),Y}if(q(),A.instantiateWasm)try{return A.instantiateWasm(C,g)}catch(a){n("Module.instantiateWasm callback failed with error: "+a),E(a)}var i=O(S,C);return g(i[0])}var x=C=>{for(;C.length>0;)C.shift()(A)},AA=C=>{J("OOM")},IA=C=>{s.length,AA()};function _(C){var g=A["_"+C];return g}var $=(C,g)=>{D.set(C,g)},gA=C=>{for(var g=0,i=0;i<C.length;++i){var a=C.charCodeAt(i);a<=127?g++:a<=2047?g+=2:a>=55296&&a<=57343?(g+=4,++i):g+=3}return g},iA=(C,g,i,a)=>{if(!(a>0))return 0;for(var G=i,Y=i+a-1,y=0;y<C.length;++y){var l=C.charCodeAt(y);if(l>=55296&&l<=57343){var m=C.charCodeAt(++y);l=65536+((l&1023)<<10)|m&1023}if(l<=127){if(i>=Y)break;g[i++]=l}else if(l<=2047){if(i+1>=Y)break;g[i++]=192|l>>6,g[i++]=128|l&63}else if(l<=65535){if(i+2>=Y)break;g[i++]=224|l>>12,g[i++]=128|l>>6&63,g[i++]=128|l&63}else{if(i+3>=Y)break;g[i++]=240|l>>18,g[i++]=128|l>>12&63,g[i++]=128|l>>6&63,g[i++]=128|l&63}}return g[i]=0,i-G},CA=(C,g,i)=>iA(C,s,g,i),QA=C=>{var g=gA(C)+1,i=aA(g);return CA(C,i,g),i},BA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,oA=(C,g,i)=>{for(var a=g+i,G=g;C[G]&&!(G>=a);)++G;if(G-g>16&&C.buffer&&BA)return BA.decode(C.subarray(g,G));for(var Y="";g<G;){var y=C[g++];if(!(y&128)){Y+=String.fromCharCode(y);continue}var l=C[g++]&63;if((y&224)==192){Y+=String.fromCharCode((y&31)<<6|l);continue}var m=C[g++]&63;if((y&240)==224?y=(y&15)<<12|l<<6|m:y=(y&7)<<18|l<<12|m<<6|C[g++]&63,y<65536)Y+=String.fromCharCode(y);else{var V=y-65536;Y+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return Y},eA=(C,g)=>C?oA(s,C,g):"",rA=function(C,g,i,a,G){var Y={string:b=>{var z=0;return b!=null&&b!==0&&(z=QA(b)),z},array:b=>{var z=aA(b.length);return $(b,z),z}};function y(b){return g==="string"?eA(b):g==="boolean"?!!b:b}var l=_(C),m=[],V=0;if(a)for(var j=0;j<a.length;j++){var tA=Y[i[j]];tA?(V===0&&(V=EA()),m[j]=tA(a[j])):m[j]=a[j]}var wA=l.apply(null,m);function MA(b){return V!==0&&RA(V),y(b)}return wA=MA(wA),wA},sA=function(C,g,i,a){var G=!i||i.every(y=>y==="number"||y==="boolean"),Y=g!=="string";return Y&&G&&!a?_(C):function(){return rA(C,g,i,arguments)}},FA={a:IA},T=Z();T.c,A._kiss_fft_free=T.d,A._free=T.e,A._kiss_fft_alloc=T.f,A._malloc=T.g,A._kiss_fft=T.h,T.__errno_location;var EA=T.j,RA=T.k,aA=T.l;function DA(C){try{for(var g=atob(C),i=new Uint8Array(g.length),a=0;a<g.length;++a)i[a]=g.charCodeAt(a);return i}catch{throw new Error("Converting base64 string to bytes failed.")}}function cA(C){if(L(C))return DA(C.slice(u.length))}A.ccall=rA,A.cwrap=sA;var nA;U=function C(){nA||hA(),nA||(U=C)};function hA(){if(k>0||(M(),k>0))return;function C(){nA||(nA=!0,A.calledRun=!0,!h&&(d(),r(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),H()))}A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),C()},1)):C()}if(A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return hA(),I})})(),GA=fI({}),bA=GA.cwrap("kiss_fft_alloc","number",["number","number","number","number"]),FI=GA.cwrap("kiss_fft","void",["number","number","number"]),qA=GA.cwrap("kiss_fft_free","void",["number"]);class RI{constructor(I){this.size=I,this.fcfg=bA(I,!1),this.icfg=bA(I,!0),this.inptr=GA._malloc(I*8+I*8),this.cin=new Float32Array(GA.HEAPU8.buffer,this.inptr,I*2)}fft=function(I){const A=GA._malloc(this.size*8),r=new Float32Array(GA.HEAPU8.buffer,A,this.size*2);this.cin.set(I),FI(this.fcfg,this.inptr,A);let E=new Float32Array(this.size*2);return E.set(r),GA._free(A),E};dispose(){qA(this.fcfg),qA(this.icfg),GA._free(this.inptr)}}function mA(o){this.size=o,this._csize=o<<1;for(var I=new Array(this.size*2),A=0;A<I.length;A+=2){const n=Math.PI*A/this.size;I[A]=Math.cos(n),I[A+1]=-Math.sin(n)}this.table=I;for(var r=0,E=1;this.size>E;E<<=1)r++;this._width=r%2===0?r-1:r,this._bitrev=new Array(1<<this._width);for(var B=0;B<this._bitrev.length;B++){this._bitrev[B]=0;for(var Q=0;Q<this._width;Q+=2){var t=this._width-Q-2;this._bitrev[B]|=(B>>>Q&3)<<t}}this._data=null}mA.prototype.fft=function(I){this._data=I,this._out=new Float32Array(2*this.size);var A=this._csize,r=1<<this._width,E=A/r<<1,B,Q,t=this._bitrev;if(E===4)for(B=0,Q=0;B<A;B+=E,Q++){const h=t[Q];this._singleTransform2(B,h,r)}else for(B=0,Q=0;B<A;B+=E,Q++){const h=t[Q];this._singleTransform4(B,h,r)}for(r>>=2;r>=2;r>>=2){E=A/r<<1;var n=E>>>2;for(B=0;B<A;B+=E)for(var e=B+n,w=B,F=0;w<e;w+=2,F+=r){const h=w,D=h+n,s=D+n,c=s+n,N=this._out[h],R=this._out[h+1],f=this._out[D],M=this._out[D+1],d=this._out[s],H=this._out[s+1],v=this._out[c],p=this._out[c+1],P=N,k=R,U=this.table[F],q=this.table[F+1],K=f*U-M*q,J=f*q+M*U,u=this.table[2*F],L=this.table[2*F+1],S=d*u-H*L,W=d*L+H*u,O=this.table[3*F],Z=this.table[3*F+1],x=v*O-p*Z,AA=v*Z+p*O,IA=P+S,_=k+W,$=P-S,gA=k-W,iA=K+x,CA=J+AA,QA=K-x,BA=J-AA;this._out[h]=IA+iA,this._out[h+1]=_+CA,this._out[D]=$+BA,this._out[D+1]=gA-QA,this._out[s]=IA-iA,this._out[s+1]=_-CA,this._out[c]=$-BA,this._out[c+1]=gA+QA}}return this._out};mA.prototype._singleTransform2=function(I,A,r){const E=this._data[A],B=this._data[A+1],Q=this._data[A+r],t=this._data[A+r+1];this._out[I]=E+Q,this._out[I+1]=B+t,this._out[I+2]=E-Q,this._out[I+3]=B-t};mA.prototype._singleTransform4=function(I,A,r){const E=r*2,B=r*3,Q=this._data[A],t=this._data[A+1],n=this._data[A+r],e=this._data[A+r+1],w=this._data[A+E],F=this._data[A+E+1],h=this._data[A+B],D=this._data[A+B+1],s=Q+w,c=t+F,N=Q-w,R=t-F,f=n+h,M=e+D,d=n-h,H=e-D;this._out[I]=s+f,this._out[I+1]=c+M,this._out[I+2]=N+H,this._out[I+3]=R-d,this._out[I+4]=s-f,this._out[I+5]=c-M,this._out[I+6]=N-H,this._out[I+7]=R+d};const TA=[4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,16384,32768,65536,131072];class lI{constructor(I=128,A="indutnyJavascript",r=!0){if(!TA.includes(I))throw new Error("Size must be a power of 2 between 4 and 131072");this.size=I,this.outputArr=new Float32Array(2*I),this.subLibrary=A,this.fftLibrary=void 0;const E=this.getCurrentProfile();E&&r?this.setSubLibrary(E.fastestSubLibrary):this.setSubLibrary(A)}availableSubLibraries(){return["kissWasm","indutnyModifiedJavascript","indutnyJavascript","crossWasm","mljsJavascript","nockertJavascript","nayuki3Wasm","nayukiJavascript","kissfftmodifiedWasm"]}availableSubLibrariesQuick(){return["kissWasm","indutnyModifiedJavascript"]}getCurrentProfile(){if(!(typeof localStorage>"u")&&localStorage.getItem("webfftProfile"))return JSON.parse(localStorage.getItem("webfftProfile"))}setSubLibrary(I){switch(I){case"nayukiJavascript":this.fftLibrary=new _A(this.size);break;case"nayuki3Wasm":this.fftLibrary=new BI(this.size);break;case"kissWasm":this.fftLibrary=new VA(this.size);break;case"crossWasm":this.fftLibrary=new ZA(this.size),this.size>16384&&(this.fftLibrary=new KA(this.size));break;case"nockertJavascript":this.fftLibrary=new EI(this.size);break;case"indutnyJavascript":this.fftLibrary=new KA(this.size);break;case"mljsJavascript":this.fftLibrary=new DI(this.size);break;case"kissfftmodifiedWasm":this.fftLibrary=new RI(this.size);break;case"indutnyModifiedJavascript":this.fftLibrary=new mA(this.size);break;default:throw new Error("Invalid sublibrary")}}fft(I){if(I.length!==2*this.size)throw new Error("Input array length must be == 2 * size");return this.outputArr=this.fftLibrary.fft(I),this.outputArr}fftr(I){var{outputArr:A,fftLibrary:r,size:E}=this;if(I.length!==E)throw new Error("Input array length must be == size");const B=new Float32Array(2*E);B.fill(0);for(let Q=0;Q<E;Q++)B[2*Q]=I[Q];return A=r.fft(B),A.slice(E,E*2)}fft2d(I){const A=I[0].length/2,r=I.length;if(A!==this.size)throw new Error("Inner array length must be == 2 * size");if(!TA.includes(r))throw new Error("Outter array length must be a power of 2 between 4 and 131072");let E=[];for(let t=0;t<r;t++)this.outputArr=this.fft(I[t]),E.push(this.outputArr);this.dispose(),this.size=r,this.setSubLibrary(this.subLibrary);let B=[];for(let t=0;t<A;t++){const n=new Float32Array(2*r);n.fill(0);for(let w=0;w<r;w++)n[2*w]=E[w][2*t],n[2*w+1]=E[w][2*t+1];let e=new Float32Array(2*r);e=this.fft(n),B.push(e)}let Q=[];for(let t=0;t<r;t++){let n=new Float32Array(2*A);for(let e=0;e<A;e++)n[2*e]=B[e][2*t],n[2*e+1]=B[e][2*t+1];Q.push(n)}return this.dispose(),this.size=A,this.setSubLibrary(this.subLibrary),Q}profile(I=1,A=!0,r=!1){if(!A&&this.getCurrentProfile())return this.getCurrentProfile();const E=performance.now();let B;r?B=this.availableSubLibrariesQuick():B=this.availableSubLibraries();let Q=[];const t=I/B.length/2;for(let F=0;F<B.length;F++){this.setSubLibrary(B[F]);const h=new Float32Array(2*this.size);for(let c=0;c<this.size;c++)h[2*c]=Math.random()-.5,h[2*c+1]=Math.random()-.5;let D=performance.now();for(;(performance.now()-D)/1e3<t;)this.fft(h);D=performance.now();let s=0;for(;(performance.now()-D)/1e3<t;)this.fft(h),s++;Q.push(1e3*s/(performance.now()-D)),this.dispose()}const n=(performance.now()-E)/1e3;let e=Q.indexOf(Math.max(...Q));const w={fftsPerSecond:Q,subLibraries:B,totalElapsed:n,fastestSubLibrary:B[e]};return console.log("Setting sublibrary to",w.fastestSubLibrary),this.setSubLibrary(w.fastestSubLibrary),typeof localStorage<"u"&&localStorage.setItem("webfftProfile",JSON.stringify(w)),w}async checkBrowserCapabilities(){return await wI()}dispose(){this.fftLibrary&&this.fftLibrary.dispose!==void 0&&this.fftLibrary.dispose()}}class pA{constructor(I){if(this.EPS=1e-20,this.INV_LN10=1/Math.LN10,(I&I-1)!==0)throw new Error("FFT size must be power of two");this.fftSize=I,this.fft=new lI(I);const r=this.fft.profile(.5).fastestSubLibrary;this.fft.setSubLibrary(r),this.complexIn=new Float32Array(I*2),this.spectrum=new Float32Array(I/2+1)}size(){return this.fftSize}compute(I,A,r){const E=this.fftSize,B=this.complexIn;for(let h=0;h<E;h++){const D=h<<1;B[D]=I[h],B[D+1]=0}const Q=this.fft.fft(B),t=this.spectrum,n=t.length,e=1/(r-A),w=this.EPS,F=this.INV_LN10;for(let h=0;h<n;h++){const D=h<<1,s=Q[D],c=Q[D+1],N=s*s+c*c+w,R=(10*Math.log(N)*F-A)*e;t[h]=R<0?0:R>1?1:R}return t}dispose(){}}class NI{constructor(I){this.data=null,this.showRealTimeScale=!1,this.startTime=0,this.config=I}setData(I){const A=this.isTimestamped(I);if(this.showRealTimeScale=A,A){if(I.length===0){this.data=new Float32Array(0);return}this.startTime=I[0][0];const r=new Float32Array(I.length);for(let E=0;E<I.length;E++)r[E]=I[E][1];this.data=r}else this.data=I,this.startTime=0}isTimestamped(I){return Array.isArray(I)&&I.length>0&&Array.isArray(I[0])}updateConfig(I){this.config={...this.config,...I}}getDuration(){return this.data?this.data.length/this.config.sampleRate:0}}const yI="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",MI=(o,I)=>{const A=new Float32Array(o);if(I==="rectangular")return A.fill(1);const r=2*Math.PI,E=o-1;switch(I){case"hann":for(let B=0;B<o;B++)A[B]=.5*(1-Math.cos(r*B/E));break;case"hamming":for(let B=0;B<o;B++)A[B]=.54-.46*Math.cos(r*B/E);break;case"blackman":for(let B=0;B<o;B++){const Q=r*B/E;A[B]=.42-.5*Math.cos(Q)+.08*Math.cos(2*Q)}break}return A};class dI{constructor(I,A,r,E){this.image=null,this.isProcessing=!1,this.id=I,this.startIndex=A,this.endIndex=r,this.startTime=A/E,this.endTime=r/E}}class GI{constructor(I){let A;I.fftExecutor?(A=I.fftExecutor.size(),this.fft=I.fftExecutor):(A=I.fftSize??1024,this.fft=new pA(A)),this.windowBuffer=MI(I.windowSize,I.windowType),this.inputBuf=new Float32Array(A)}process(I,A,r,E,B){const{windowSize:Q,minDb:t,maxDb:n,overlap:e}=E,w=Math.max(1,Q-e),F=this.fft.size(),D=Math.ceil((r-A)/w),s=(F>>1)+1;if(D<=0)return new ImageData(1,1);const c=new ImageData(D,s),N=c.data,R=this.inputBuf,f=this.windowBuffer;let M=0,d=0;for(let H=0;H<Q;H++){const v=A+H;v<I.length&&(M+=I[v],d++)}for(let H=0;H<D;H++){const v=A+H*w,p=d>0?M/d:0,P=Math.min(Q,I.length-v);let k=0;for(;k<P;k++)R[k]=(I[v+k]-p)*f[k];for(;k<F;k++)R[k]=0;const U=this.fft.compute(R,t,n);for(let q=0;q<s;q++){const K=U[q],J=B(K),L=((s-1-q)*D+H)*4;N[L]=J[0],N[L+1]=J[1],N[L+2]=J[2],N[L+3]=255}if(H+1<D){for(let K=0;K<w;K++){const J=v+K;J<I.length&&(M-=I[J],d--)}const q=v+Q;for(let K=0;K<w;K++){const J=q+K;J<I.length&&(M+=I[J],d++)}}}return c}dispose(){this.fft.dispose()}}class YI{constructor(I){this.model=I}draw(I,A,r,E,B,Q){I.save(),I.strokeStyle="#464646",I.fillStyle="#252525",I.font="11px AxisFont",I.textBaseline="top",I.lineWidth=1;const[t,n]=E,[e,w]=B,F=n-t,{left:h,bottom:D,top:s,right:c}=Q,N=h,R=s,f=A-h-c,M=r-D-s;if(F<=0){I.restore();return}I.beginPath();const d=R+M;I.moveTo(h,d),I.lineTo(h+f,d),I.stroke(),I.beginPath(),I.moveTo(h,R),I.lineTo(h,d),I.stroke();const H=Math.max(3,Math.floor(f/100)),v=F/H,p=this.model.startTime;for(let u=0;u<=H;u++){const L=t+u*v,S=N+(L-t)/F*f;if(S<N||S>N+f)continue;I.beginPath(),I.moveTo(S,d),I.lineTo(S,d+5),I.stroke();const W=p+L*1e3;let O="";if(this.model.showRealTimeScale){const Z=new Date(W),x=Z.getHours().toString().padStart(2,"0"),AA=Z.getMinutes().toString().padStart(2,"0"),IA=Z.getSeconds().toString().padStart(2,"0");O=`${x}:${AA}:${IA}`}else W>=0&&(O=`${Math.floor(n-W/1e3)}s`);I.textAlign="center",I.fillText(O,S,d+8)}const P=w-e,k=Math.max(3,Math.floor(M/40));let U=1;if(P>0&&k>0){const u=P/k,L=Math.pow(10,Math.floor(Math.log10(u))),S=u/L;S>5?U=10*L:S>2?U=5*L:S>1?U=2*L:U=1*L}const q=Math.floor(w/U)*U,K=Math.floor(e/U)*U;I.textAlign="right",I.textBaseline="middle";const J=U||1;for(let u=q;u>=K;u-=J){const L=J/1e3;if(u>w+L||u<e-L)continue;const S=(w-u)/P,W=R+S*M;if(W<R-1||W>R+M+1)continue;I.beginPath(),I.moveTo(h,W),I.lineTo(h-5,W),I.stroke();let O=u.toString();u%1!==0&&(O=u.toFixed(1).replace(/\.0$/,"")),I.fillText(O,h-8,W)}I.save(),I.translate(10,R+M/2),I.rotate(-Math.PI/2),I.textAlign="center",I.textBaseline="middle",I.fillText("Frequency (Hz)",0,0),I.restore()}}function PA(o,I){if(o<=0)return I[0];if(o>=1)return I[I.length-1];const A=1/(I.length-1),r=o/A|0,E=(o-r*A)/A,B=I[r],Q=I[r+1];return[B[0]+(Q[0]-B[0])*E|0,B[1]+(Q[1]-B[1])*E|0,B[2]+(Q[2]-B[2])*E|0]}const kI=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],SI=[[0,0,4],[87,16,110],[187,55,84],[249,142,9],[252,255,164]];function UI(o){return PA(o,kI)}function HI(o){return PA(o,SI)}function mI(o){const I=Math.floor(o*255);return[I,I,I]}function vI(o){const I=Math.max(0,Math.min(1,o)),A=Math.min(4*I-1.5,-4*I+4.5),r=Math.min(4*I-.5,-4*I+3.5),E=Math.min(4*I+.5,-4*I+2.5);return[Math.floor(Math.max(0,Math.min(1,A))*255),Math.floor(Math.max(0,Math.min(1,r))*255),Math.floor(Math.max(0,Math.min(1,E))*255)]}function uI(o){let I=0,A=0,r=0;return o<.33?I=o/.33:o<.66?(I=1,A=(o-.33)/.33):(I=1,A=1,r=(o-.66)/.34),[Math.floor(I*255),Math.floor(A*255),Math.floor(r*255)]}function JI(o){const I=o,A=1-o;return[Math.floor(I*255),Math.floor(A*255),Math.floor(1*255)]}function LI(o){return[255,Math.floor(o*255),Math.floor((1-o)*255)]}function KI(o){return[Math.floor(o*255),Math.floor((.5+.5*o)*255),Math.floor(.4*255)]}function bI(o){return[255,Math.floor(o*255),0]}function qI(o){return[0,Math.floor(o*255),Math.floor((1-.5*o)*255)]}function TI(o){const I=o,A=.1*Math.sin(o*Math.PI*2),r=o<.5?o+A:o,E=o<.75?o+A:o;return[Math.floor(Math.min(1,I)*255),Math.floor(Math.min(1,r)*255),Math.floor(Math.min(1,E)*255)]}const pI={viridis:UI,inferno:HI,grayscale:mI,jet:vI,hot:uI,cool:JI,spring:LI,summer:KI,autumn:bI,winter:qI,bone:TI};class PI{constructor(I="jet"){this.type=I,this.lut=new Uint8Array(256*3),this.generateLut()}generateLut(){const I=pI[this.type];for(let A=0;A<256;A++){const r=I(A/255),E=A*3;this.lut[E]=r[0],this.lut[E+1]=r[1],this.lut[E+2]=r[2]}}getRGB(I){const A=(I<=0?0:I>=1?255:I*255|0)*3;return[this.lut[A],this.lut[A+1],this.lut[A+2]]}setMap(I){this.type=I,this.generateLut()}}class WI{constructor(I){this.chunks=new Map,this.offscreenCanvas=null,this.offscreenCtx=null,this.offscreenHelpers=new Map,this.ctx=null,this.lastW=0,this.lastH=0,this.lastDPR=0,this.model=I,this.processor=new GI(I.config),this.colormap=new PI,this.axisRenderer=new YI(I)}setColormap(I){this.colormap.setMap(I),this.clearCache()}clearCache(){this.chunks.clear(),this.offscreenHelpers.clear()}dispose(){this.clearCache(),this.offscreenCanvas=null,this.offscreenCtx=null,this.ctx=null,this.processor.dispose()}setupHiDPICanvas(I,A,r){const E=window.devicePixelRatio||1;I.style.width=`${A}px`,I.style.height=`${r}px`;const B=Math.round(A*E),Q=Math.round(r*E);(I.width!==B||I.height!==Q)&&(I.width=B,I.height=Q);const t=I.getContext("2d",{alpha:!0});return t.resetTransform(),t.scale(E,E),t.imageSmoothingEnabled=!1,this.offscreenCanvas||(this.offscreenCanvas=document.createElement("canvas")),(this.offscreenCanvas.width!==B||this.offscreenCanvas.height!==Q)&&(this.offscreenCanvas.width=B,this.offscreenCanvas.height=Q,this.offscreenCtx=this.offscreenCanvas.getContext("2d",{alpha:!0}),this.offscreenCtx.resetTransform(),this.offscreenCtx.scale(E,E),this.offscreenCtx.imageSmoothingEnabled=!1,this.offscreenCtx.clearRect(0,0,A,r)),t}calibrateCanvas(I,A,r){return this.setupHiDPICanvas(I,A,r)}render(I){const{canvas:A,timeRange:r,freqRange:E}=I,B=this.calibrateCanvas(A,I.width,I.height);if(!B||!this.offscreenCtx||!this.offscreenCanvas)return;const Q=window.devicePixelRatio||1,t=A.width/Q,n=A.height/Q,[e,w]=r,[F,h]=E,D=50,s=30,c=12,N=32,R=D,f=c,M=t-D-N,d=n-s-c;if(B.clearRect(0,0,t,n),!this.model.data)return;const H=this.model.config.sampleRate,v=this.model.config,p=Math.max(1,v.windowSize-v.overlap),k=10*H,q=Math.ceil(k/p)*p,K=Math.floor(Math.max(0,e*H)),J=Math.floor(Math.min(this.model.data.length,w*H));if(J<=K)return;const u=Math.floor(K/q),L=Math.floor(J/q);for(let S=u;S<=L;S++){const W=S*q,O=Math.min((S+1)*q,this.model.data.length),Z=`chunk_${S}`;let x=this.chunks.get(Z);if(!x){const AA=new dI(Z,W,O,H);this.chunks.set(Z,AA);const IA=this.processor.process(this.model.data,W,O,v,$=>this.colormap.getRGB($)),_=Z;createImageBitmap(IA).then($=>{const gA=this.chunks.get(_);gA&&(gA.image=$)}),x=AA}x.image&&this.offscreenCtx&&(this.offscreenCtx.save(),this.offscreenCtx.beginPath(),this.offscreenCtx.rect(R,f,M,d),this.offscreenCtx.clip(),this.drawChunk(this.offscreenCtx,x,e,w,F,h,R,f,M,d),this.offscreenCtx.restore())}B.drawImage(this.offscreenCanvas,0,0,t,n),this.axisRenderer.draw(B,t,n,r,E,{left:D,bottom:s,top:c,right:N})}drawChunk(I,A,r,E,B,Q,t,n,e,w){if(!A.image)return;const F=E-r,h=this.model.config.sampleRate,D=h/2,s=A.startIndex/h,c=A.endIndex/h,N=t+(s-r)/F*e,R=t+(c-r)/F*e;if(R<=t||N>=t+e)return;const f=Math.max(t,N),M=Math.min(t+e,R)-f,d=A.image.width,H=(f-N)/(R-N)*d,v=M/(R-N)*d,p=Math.min(Q,D),P=Math.max(B,0),k=A.image.height,U=(1-p/D)*k,K=(1-P/D)*k-U;if(K>0){const J=n,u=w;I.drawImage(A.image,H,U,v,K,f,J,M,u)}}}class xI{constructor(I){this.model=new NI(I),this.renderer=new WI(this.model)}async init(){const I=new FontFace("AxisFont",`url(data:font/woff2;base64,${yI})`);await I.load(),document.fonts.add(I)}setData(I){this.model.setData(I),this.renderer.clearCache()}destroy(){this.renderer.dispose()}render(I){const A=this.model.config.sampleRate/2,r=I.freqRange||[0,A];this.renderer.render({...I,freqRange:r})}updateConfig(I){this.model.updateConfig(I),(I.windowSize||I.windowType||I.minDb||I.maxDb||I.fftSize||I.overlap)&&this.renderer.clearCache()}setColormap(I){this.renderer.setColormap(I)}getDuration(){return this.model.getDuration()}}exports.FFTExecutor=pA;exports.Spectrogram=xI;
|
|
2
2
|
//# sourceMappingURL=spectrogram-js.cjs.js.map
|