0x5fa1…d3cc

All memos sent from and to 0x5fa1…d3cc.

0x5fa19adf…d3cc·#19,358,964·0x9c236268…d37eab
[PPPPPPPP[PPPPPbAddress: call to non-contractAddress: call to non-contractAddress: low-level delegate call failedAddress: low-level delegate call failedhttps://arweave.net/1Ue8z_BEScg_eEvE4HVWja32GzmGrZaVrQOWxa9V0Skhttps://arweave.net/_UVFC0ZnTCciffiHxDVFOYskcJKYHsVbkZ87_QJx-lIhttps://highlight-creator-assets.highlight.xyz/main/base-dir/e7cbcccb-b75f-499a-9b8c-3cac00af224b/onChainDir
SBtaWQgc2lnbmFsCiAgICAgICAgICAgICAgICBsZXQgbWlkID0gMDsKICAgICAgICAgICAgICAgIGZvciAobGV0IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgaW5wdXQubGVuZ3RoOyArK2NoYW5uZWwpIHsKICAgICAgICAgICAgICAgICAgICBtaWQgPSBtaWQgKyBpbnB1dFtjaGFubmVsXVtpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0IG1pZF9zcSA9IG1pZCAqIG1pZDsKICAgICAgICAgICAgICAgIHRoaXMuc3FfbGFzdCA9ICgxIC0gcm1zX2FscGhhKSAqIG1pZF9zcSArIHJtc19hbHBoYSAqIHRoaXMuc3FfbGFzdDsKICAgICAgICAgICAgICAgIGNvbnN0IHJtcyA9IE1hdGguc3FydCh0aGlzLnNxX2xhc3QpOwogICAgICAgICAgICAgICAgY29uc3QgZ2Fpbl9kaWZmID0gTWF0aC5taW4odGFyZ2V0X2dhaW5fbGluIC8gKHJtcyArIDAuMDAwMDEpLCAzLjApOyAvLyBtYXggZ2FpbiBvZiA5IGRiLCBwcmV2ZW50cyBpdCBmcm9tIGJsb3dpbmcgdXAgYWZ0ZXIgdGhlIGF1ZGlvIGlzIHBhdXNlZCBmb3IgYSBsb25nIHRpbWUKICAgICAgICAgICAgICAgIGZvciAobGV0IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgaW5wdXQubGVuZ3RoOyArK2NoYW5uZWwpIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhbm5lbF1baV0gPSBnYWluX2RpZmYgKiBpbnB1dFtjaGFubmVsXVtpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0KCnJlZ2lzdGVyUHJvY2Vzc29yKCdhZ2MnLCBBR0MpOw==").then((()=>{!function(){const t=zt(re);He=re.rcw(t[0],t[1]),We=He[2];const e=new ct(re,We),n=1==e.h_idx();Ze=He[7]&&re.rb(s(We,n));const h=re.rc([0,1]);Ue=He[3];const a=re.rcw([...Array(r.length).keys()],r);let o=N;1==Ue?o=L:2==Ue&&(o=j);const c=re.rc(o),f=re.rcw([0,1,2],_),p=re.rc(g);let m=He[0];Ge=Rt(m,re,Et),Ge.tick_n(0,$t,te,$e,ti,ce,le);let d=He[1];d&&(Te=Rt(d,re,Et),Te.tick_n(0,$t,te,$e,ti,ce,le,-1));11==m&&6==d&&(Ge.rot<0?Te.ang=-3*Math.PI/8:0==Ge.rot?Te.ang=-Math.PI/8:Te.ang=Math.PI/8);(0==m&&3==d||17==m&&16==d)&&1==We&&1==e.idx&&(Ze=!1);De=1==We,Se=new i.Color(e.colors[0]),qe=new i.Color(e.colors[1]),Pe=new $(re,new i.Color(e.colors[2]),re.rn(.2,.5)),ze=6==e.colors.length?new i.Color(e.colors[5]):void 0,Ee=re.rn(.6,.7),Le=re.rn(.05,.1)*e.h_range(),v=e,C=We,Xe=v.colors.slice(1,1+C).map(((t,e)=>new $(re,new i.Color(t),e==v.h_idx()?Le:0))),Xe=re.shuffle(Xe),ai=He[6],oi=re.rb(l[Ue])&&void 0!==Bt(Ge,Te,"s_depth");var v,C;let w=(x=m,I=d,Vt.includes(x)?1:Vt.includes(I)?2:0);var x,I;0==Ue&&0==w?oi=!1:1==Ue&&11==m&&(oi=!0);Ke=1==Ue?.5:.25;let A=0==Ue?.2:.125,y=1==Ue?.25:.5;$e=re.rn(0,A),ti=re.rn(y,1),ei=re.rn(.125,.25),ei=.5,ii=re.rn(3,4),Qe=He[5],0==Ue&&4==e.idx&&(Qe=Math.max(50,Qe));if(0==Ue)Ve=.9;else if(1==Ue)Ve=V(.75,.9,k(Qe,Wt,St,.9,.75));else if(2==Ue){ke=new J(re,He[4]),ni=He[8];let t=k(Qe,qt,Pt,3,2.5);ri=re.rn(t,4),Be=1}ci=re.rb(u[Ue])&&void 0!==ze&&void 0!==Bt(Ge,Te,"c_depth"),(0==Ue&&Qe>=45&&!w||2==Ue&&5!=ke.type)&&(ci=!1);Ne=e.n_thresh(h),Fe=w>0?1==w&&Ge.r<=3?new Q(re,$t,a,{f:Ge.c}):2==w&&Te.r<=3?new Q(re,$t,a,{f:Te.c}):new Q(re,$t,a):new Q(re,$t,a);let M=o[0],b=o[o.length-1];Ye.set_speed(k(c,M,b,.2,.9));const T=void 0===Dt(He[0],He[1],Ge,Te);Ie.init(pi,re,e.idx,Ue,c,f,p,T,Fe.audio_amt),Ie.set_noise_volume(h),Ie.set_volume_smoothing(1-ui),Ie.set_filter_smoothing(1-_i),ye=Math.min(60/c,2),Ye.set_reveal_duration(ye),Kt=new i.OrthographicCamera(ue*Et/-2,ue*Et/2,ue/2,ue/-2,0,10),Yt=new i.Scene,function(){let t;Yt.remove.apply(Yt,Yt.children);let e=16;if(0==Ue)t=new i.CircleGeometry(.1,e);else if(1==Ue){let s=k(Qe,Wt,St,.07,.03);t=new i.RingGeometry(.1-s/2,.1+s/2,e)}else 2==Ue&&(t=new i.PlaneGeometry(1,1));let s=.0146;t.scale(s,s,s);const n=new i.ShaderMaterial({vertexShader:Ht,fragmentShader:Ot});if(Nt=new i.InstancedMesh(t,n,fe),Nt.instanceMatrix.setUsage(i.DynamicDrawUsage),Nt.setColorAt(0,new i.Color),Yt.add(Nt),1==Ue){let t=new i.PlaneGeometry(1,1);t.scale(s,s,s),Lt=new i.InstancedMesh(t,n,pe),Lt.instanceMatrix.setUsage(i.DynamicDrawUsage),Lt.setColorAt(0,new i.Color),Yt.add(Lt)}let h=new i.InstancedMesh(t,n,ge);h.instanceMatrix.setUsage(i.DynamicDrawUsage),h.setColorAt(0,new i.Color),Yt.add(h),Qt=new ft(h,Kt,Ye);const r=new i.PlaneGeometry(2*Kt.right,2*Kt.top),a=new i.ShaderMaterial({uniforms:{u_bg_c:{value:Se},u_c_1:{value:Xe[De?0:1].main()},u_c_2:{value:Xe[0].main()},u_res:{value:new i.Vector2(ie*ee,se*ee)},u_t:{value:0},u_sc:{value:ne/1.8},u_g_thresh:{value:Ne},u_g_amt:{value:Me},u_pxl_ratio:{value:ee},u_bg_g_amt:{value:me?0:.045}},vertexShader:Xt,fragmentShader:Zt});Ut=new i.Mesh(r,a),Ut.position.set(0,0,-10),Yt.add(Ut)}(),jt=new i.WebGLRenderer({antialias:!0}),jt.setPixelRatio(ee),jt.setSize(ie,se),Ye.set_end_init_t(Date.now()),document.body.appendChild(jt.domElement),window.addEventListener("resize",gi),window.addEventListener("click",Ci),window.addEventListener("touchend",(function(t){Ci(),t.preventDefault()})),window.addEventListener("keyup",wi),gi()}(),mi()}))}();
r(t,e,i,s,n,h,r,a,o,c,l,u){let _=k(l(.1*t*this.n_f,.12*e*this.n_f,.5*n),-1,1,a,o);return _*=u,_}}class At{constructor(t){let e=R(t.rg(.5,.2));this.thick=F(50,280,e),this.sdf=!0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.n1=k(h(.5*t,0),-1,1,.002,2),this.n2=k(h(t,1e3),-1,1,s/2,n)}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=k(Math.sin(i*this.n1+n),-1,1,0,h),f=this.thick*k(c(.005*i+n,0),-1,1,0,1);return s>=_-f&&s<=_+f?this.n2:u}}const yt=(t,e)=>Math.hypot(e[0]-t[0],e[1]-t[1]),Mt=(t,e)=>{let i=Math.cos(e),s=Math.sin(e);return[t[0]*i+t[1]*s,t[1]*i+t[0]*s]};class bt{constructor(t,e=0,i={}){this.repeat=i.two_repeat?2:t.rn(1,1.5),this.n_amt=t.rn(.1,2==this.repeat?.35:.5),this.thick=[10,100],this.dir=e,this.dir_m=t.rc([-1,1]),this.sdf=!0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.n_f=.002;let a=0==this.dir?i:e;this.mod=a/this.repeat}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=0==this.dir?h:r,f=0==this.dir?i:s,p=0==this.dir?s:i,g=0==this.dir?t:e,m=k(c(f*this.n_f,n)*this.n_amt,-1,1,0,_),d=k(Math.sin(.1*g+n),-1,1,this.thick[0],this.thick[1]),v=Math.abs(p+this.dir_m*n*100)%this.mod;return v>=m-d&&v<=m+d?.125:v>m+d&&v<=m+4*d?.25:v>m+3*d&&v<=m+8*d?.5:u}}class Tt{constructor(t){let e=t.rn(.4,.6);this.n=t.rb(c),this.n&&(this.n_amt=t.rn(.2,.5),this.n_f=t.ri(10,50)),this.mod=e,this.sdf=!0,this.rot_mul=1,this.ang=0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.n1=k(h(.8*t,0),-1,1,0,1),this.n2=k(h(.7*t,1e3),-1,1,0,.33),this.n3=k(h(.9*t,-1e3),-1,1,0,1),this.n4=k(h(.75*t,-1e5),-1,1,0,.5),this.n5=k(h(t,1e6),-1,1,s,1);let a=h(.25*t,0);this.n6=k(a,-1,1,this.ang,this.ang+Math.PI/4),this.out_n=a}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=Mt([i/r-.5,s/h-.5],this.n6);if(this.n){let t=c(Math.floor(e/this.n_f),.75*n)*this.n_amt;_[0]+=t,_[1]+=t}this.n1,this.n2,_[0]%=this.mod;let f=this.n3,p=this.n4;return _[1]%=this.mod,_[1]+.5>=f-p/2&&_[1]+.5<=f+p/2?this.n5:u}}class Gt{constructor(t,e,i={}){let s=Math.floor(10/e);for(this.c=1,this.r=1;this.c*this.r<4||this.c*this.r>=40;)this.c=i.c??t.ri(1,10),this.r=t.ri(1,s);this.rot=t.rcw([0,Math.PI/4,-Math.PI/4],1==i.c?[1,1,1]:[.9,.05,.05]),i.no_rot&&(this.rot=0),this.n=i.force_n||t.rb(c),this.floor_n=this.n&&1==this.r&&t.rb(c),this.n&&(this.n_amt=t.rn(.05,.1),this.n_f=i.n_f??t.rc([1,.01]),this.floor_n&&(this.n_f=.1)),this.sdf=!1,this.s_depth=1,this.c_depth=0}tick_n(t,e,i,s,n,h,r){}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=r/this.c,f=h/this.r,p=i/r-.5,g=s/h-.5;if(this.n){let t=e*this.n_f,s=l(.001*i,this.floor_n?Math.floor(t/5):t,n);this.c>1?p+=s*this.n_amt:g+=s*this.n_amt}let m=Mt([p,g],this.rot);i=(m[0]+.5)*r,s=(m[1]+.5)*h;let d=V(0,this.c-1,Math.floor(i/_)),v=V(0,this.r-1,Math.floor(s/f)),C=this.c>=this.r?i/_%1:s/f%1;this.s_depth=C,this.c_depth=C;let w=k(l(d,v,n),-1,1,.5,o);return w*=u,w}}class Ft{constructor(t,e={}){this.num=V(4,50,t.rg(12,5)),this.n=e.force_n||t.rb(c),this.n&&(this.n_amt=t.rc([.5,1,2]),this.n_f=t.rc([10,20,30,40])),this.sdf=!1,this.s_depth=1,this.c_depth=this.n&&this.n_f<=20?0:void 0}tick_n(t,e,i,s,n,h,r,a=1){this.n1=h(.1*t,10*a),this.n2=h(.12*t,1e3*a);let o=yt([0,0],[e/2,i/2]);this.l=o/this.num,this.out_n=-this.n1}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=[i-r/2,s-h/2];if(_[1]/=r/h,_[0]+=this.n1*r/4,_[1]+=this.n2*h/4,this.n){let t=c(Math.floor(e/this.n_f),.1*n)*this.n_amt*r/4;_[0]+=t,_[1]+=t}let f=yt(_,[0,0]),p=Math.floor(f/this.l),g=f/this.l%1;this.s_depth=g,this.c_depth=this.n&&this.n_f<=20?g:void 0;let m=k(c(p,n),-1,1,.5,o);return m*=u,m}}class kt{constructor(t,e={}){this.num=t.ri(10,20),this.n=t.rb(e.proba_n??c),this.n&&(this.n_amt=t.rc([.05,.1,.15]),this.n_f=t.rn(.03,.1)),this.sdf=!0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.inside_n=k(h(t,0),-1,1,s,n),this.noises=[],this.sines=[];let a=0;for(let o=0;o<this.num;o++){let s=k(h(.17*t,100*o),-1,1,-e/2,e/2),n=k(h(.13*t,100*-o),-1,1,-i/2,i/2);this.noises.push([s,n]),this.sines.push(k(Math.sin(t+100*o),-1,1,20,50)*(this.n?1.5:1)),a+=s}a/=this.num,this.out_n=V(-1,1,k(a/(e/2),-.2,.2,-1,1))}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=[i-r/2,s-h/2];if(_[1]/=r/h,this.n){let t=l(.001*i,e*this.n_f,n)*r*this.n_amt;_[0]+=t,_[1]+=t}let f=!1;for(let p=0;p<this.num;p++){let t=yt(_,this.noises[p]),e=this.sines[p];f=f||t<e}return f?this.inside_n:u}}const Vt=[8,11,14,16];function Rt(t,e,i){return 0==t?new It(e):1==t?new At(e):2==t?new bt(e,0):3==t?new bt(e,1):6==t?new Tt(e):8==t?new Gt(e,i):9==t?new Ft(e):10==t?new kt(e):11==t?new Gt(e,i,{c:1,force_n:!0,n_f:.01}):12==t?new It(e,{n_f:.1}):14==t?new Gt(e,i,{n_f:.01}):15==t?new Ft(e,{force_n:!0}):16==t?new Gt(e,i,{force_n:!0,n_f:1,no_rot:!0}):17==t?new bt(e,1,{two_repeat:!0}):18==t?new kt(e,{proba_n:0}):void 0}function Dt(t,e,i,s){return 9==t&&9==e?.5*(i.out_n+s.out_n):9==t||15==t?i.out_n:9==e||15==e?s.out_n:10==t||13==t||18==t?i.out_n:10==e||13==e||18==t||6==e?s.out_n:void 0}function Bt(t,e,i){let s;return s=void 0!==t[i]?t[i]:void 0!==e?e[i]??void 0:void 0,s}const Wt=40,St=80,qt=50,Pt=90,zt=t=>{const e=t.rcw([1,2,3,4],[.25,.25,.15,.35]),i=1==e||2==e,s=t.rcw([2,3,4],[.35,.25,.4]),n=2===s?0:1,h=t.rcw([25,50,75],[n,1,1]),r=t.rc([[12,9],[12,14],[11,6],[15,void 0],[9,18],[9,9]]),a=t.rn(Wt,St),o=[[12,9],[12,14],[15,void 0],[9,9],[9,10],[11,6]],c=t.rb(.5),l=[c,0,c,c,0,0],u=t.rcw([...Array(o.length).keys()],[1,1,1.5,1,1.5,1]),_=o[u],f=l[u],p=t.rn(qt,Pt),g=t.rcw([3,5],[.5,.5]),m=t.rcw([1,2,3,4,5,6],[.05,0,0,.05,.8,.1]),d=1===m||4===m||6===m?0:1,v=t.rb(.5)?0:1,C=6===m?[15,void 0]:t.rcw([[10,void 0],[15,void 0]],[1,1]),w=15===C[0]?d:i?0:d,x=i?0:12,I=[[x,9],[x,8],[x,10],[8,10],[9,10],[9,9]],A=[v,v,v,v,v,1],y=t.rcw([...Array(I.length).keys()],[1,1,1,2,2,1]),M=I[y],b=A[y],T=!M.includes(8);return[[[r[0],r[1],s,0,0,h,1,!1,0],[_[0],_[1],s,1,0,a,f,!1,0],[C[0],C[1],e,2,m,p,0,!0,w],[M[0],M[1],e,2,5,p,0,T,b],[0,1,1,2,g,p,0,!0,1],[0,3,1,2,5,p,0,!0,1],[17,16,1,2,m,p,0,!0,d]],[6.5,3,5,7,1,.75,.75]]};var Xt="void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.0);\n}",Zt="uniform vec3 u_bg_c,u_c_1,u_c_2;uniform vec2 u_res;uniform float u_t,u_sc,u_g_thresh,u_g_amt,u_pxl_ratio,u_bg_g_amt;float k(float a){a=fract(a*.1031),a*=a+33.33,a*=a+a;return fract(a);}float d(vec3 a){a=fract(a*.1031),a+=dot(a,a.zyx+31.32);return fract((a.x+a.y)*a.z);}float e(float a){float b=floor(a),c=fract(a);return mix(k(b),k(b+1.),smoothstep(0.,1.,c));}mat2 o(in float a){float b=cos(a),c=sin(a);return mat2(b,-c,c,b);}void main(){vec2 c=gl_FragCoord.xy/u_res.xy;float a=mix(2.*u_pxl_ratio,8.*u_pxl_ratio,e(u_t*88.))*u_sc;vec2 b=c;b-=.5,b*=o(e(1000.+u_t*111.)*6.28),b+=.5;vec2 l=floor(b*(u_res/vec2(a,1)))/(u_res/vec2(a,1));b+=e(c.x*10.);vec2 m=floor(b*(u_res/vec2(1,a)))/(u_res/vec2(1,a));float n=d(vec3(c*1000.,u_t)),f=d(vec3(c*100.,u_t*1000.)),g=d(vec3(l*400.,u_t*1000.)),h=d(vec3(m*300.,u_t*1000.)),i=u_g_thresh;f=smoothstep(min(1.,i+2e-4),1.,f),g=smoothstep(min(1.,i+2e-4),1.,g),h=smoothstep(i,1.,h);vec3 j=mix(u_bg_c+n*u_bg_g_amt,u_c_1,(f+g)*u_g_amt);j=mix(j,u_c_2,h*u_g_amt),gl_FragColor=vec4(j,1);}",Ht="varying vec4 v_color;\n\nvoid main() {\n\tv_color = vec4(instanceColor, 1.);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * instanceMatrix * vec4(position, 1.0);\n}",Ot="varying vec4 v_color;\n\nvoid main() { \n gl_FragColor = v_color;\n}";let Kt,Yt,jt,Nt,Lt,Ut,Qt;const Jt=new URLSearchParams(window.location.search).get("aspect_ratio"),Et=Jt||16/9,$t=800,te=$t/Et,ee=window.devicePixelRatio;let ie=window.innerWidth,se=ie/Et,ne=ie/$t,he=14;const re=new class{constructor(t){this.useA=!1;let e=function(t){let e=parseInt(t.substr(0,8),16),i=parseInt(t.substr(8,8),16),s=parseInt(t.substr(16,8),16),n=parseInt(t.substr(24,8),16);return function(){e|=0,i|=0,s|=0,n|=0;let t=(e+i|0)+n|0;return n=n+1|0,e=i^i>>>9,i=s+(s<<3)|0,s=s<<21|s>>>11,s=s+t|0,(t>>>0)/4294967296}};t?(this.prngA=new e(t.substr(2,32)),this.prngB=new e(t.substr(34,32))):(this.prngA=new e(tokenData.hash.substr(2,32)),this.prngB=new e(tokenData.hash.substr(34,32)));for(let i=0;i<1e6;i+=2)this.prngA(),this.prngB();this.prng=new e(tokenData.hash),this._nextG=null,this._hasNextG=!1}r(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}rn(t,e){return t+(e-t)*this.r()}ri(t,e){return Math.floor(this.rn(t,e+1))}rb(t){return this.r()<t}rc(t){return t[this.ri(0,t.length-1)]}ra(){return this.rn(0,2*Math.PI)}rndFromList(t){const e=this.r();let i=!1,s=1;const n=t.reduce(((t,e,i)=>i%2==1?t+e:t),0)*e;let h=0;for(;!i&&s<t.length;)n-t[s]<h&&(i=t[s-1]),h+=t[s],s+=2;return i}rcw(t,e){t.length,e.length,t.length;const i=[];for(let n=0;n<e.length;n+=1)i[n]=e[n]+(i[n-1]||0);const s=i[i.length-1]*this.r();for(let n=0;n<t.length;n+=1)if(i[n]>=s)return t[n]}rg(t=0,e=1){if(this._hasNextG){this._hasNextG=!1;var i=this._nextG;return this._nextG=null,t+e*i}var s=0,n=0,h=0;do{h=(s=2*this.r()-1)*s+(n=2*this.r()-1)*n}while(h>=1||0===h);var r=Math.sqrt(-2*Math.log(h)/h);return this._nextG=n*r,this._hasNextG=!0,t+e*(s*r)}shuffle(t){let e=t.slice();for(let i=e.length-1;i>0;i--){const t=Math.floor(this.r()*(i+1)),s=e[i];e[i]=e[t],e[t]=s}return e}}(tokenData.hash),ae=new i.Object3D,oe=new i.Color,ce=function(t=Math.random){const e=xt(t),i=new Float64Array(e).map((t=>Ct[t%12*2])),s=new Float64Array(e).map((t=>Ct[t%12*2+1]));return function(t,n){let h=0,r=0,a=0;const o=(t+n)*pt,c=vt(t+o),l=vt(n+o),u=(c+l)*gt,_=t-(c-u),f=n-(l-u);let p,g;_>f?(p=1,g=0):(p=0,g=1);const m=_-p+gt,d=f-g+gt,v=_-1+2*gt,C=f-1+2*gt,w=255&c,x=255&l;let I=.5-_*_-f*f;if(I>=0){const t=w+e[x];I*=I,h=I*I*(i[t]*_+s[t]*f)}let A=.5-m*m-d*d;if(A>=0){const t=w+p+e[x+g];A*=A,r=A*A*(i[t]*m+s[t]*d)}let y=.5-v*v-C*C;if(y>=0){const t=w+1+e[x+1];y*=y,a=y*y*(i[t]*v+s[t]*C)}return 70*(h+r+a)}}(re.prng),le=function(t=Math.random){const e=xt(t),i=new Float64Array(e).map((t=>wt[t%12*3])),s=new Float64Array(e).map((t=>wt[t%12*3+1])),n=new Float64Array(e).map((t=>wt[t%12*3+2]));return function(t,h,r){let a,o,c,l;const u=(t+h+r)*mt,_=vt(t+u),f=vt(h+u),p=vt(r+u),g=(_+f+p)*dt,m=t-(_-g),d=h-(f-g),v=r-(p-g);let C,w,x,I,A,y;m>=d?d>=v?(C=1,w=0,x=0,I=1,A=1,y=0):m>=v?(C=1,w=0,x=0,I=1,A=0,y=1):(C=0,w=0,x=1,I=1,A=0,y=1):d<v?(C=0,w=0,x=1,I=0,A=1,y=1):m<v?(C=0,w=1,x=0,I=0,A=1,y=1):(C=0,w=1,x=0,I=1,A=1,y=0);const M=m-C+dt,b=d-w+dt,T=v-x+dt,G=m-I+2*dt,F=d-A+2*dt,k=v-y+2*dt,V=m-1+3*dt,R=d-1+3*dt,D=v-1+3*dt,B=255&_,W=255&f,S=255&p;let q=.6-m*m-d*d-v*v;if(q<0)a=0;else{const t=B+e[W+e[S]];q*=q,a=q*q*(i[t]*m+s[t]*d+n[t]*v)}let P=.6-M*M-b*b-T*T;if(P<0)o=0;else{const t=B+C+e[W+w+e[S+x]];P*=P,o=P*P*(i[t]*M+s[t]*b+n[t]*T)}let z=.6-G*G-F*F-k*k;if(z<0)c=0;else{const t=B+I+e[W+A+e[S+y]];z*=z,c=z*z*(i[t]*G+s[t]*F+n[t]*k)}let X=.6-V*V-R*R-D*D;if(X<0)l=0;else{const t=B+1+e[W+1+e[S+1]];X*=X,l=X*X*(i[t]*V+s[t]*R+n[t]*D)}return 32*(a+o+c+l)}}(re.prng),ue=20,_e=10,fe=5e4,pe=10,ge=500,me=/HeadlessChrome/.test(window.navigator.userAgent);let de,ve,Ce=!0,we=!0,xe=!0,Ie=new class{constructor(){this.is_started=!1,this.is_playing=!1,this.is_initialized=!1,this.vol_smoothing_factor=.1,this.rms_last=0,this.filter_smoothing_factor=.7,this.filter_last=0}selectChord(t){return 2==t||11==t||17==t?[m.root,m.major_third,m.fourth,m.major_sixth]:1==t||3==t||7==t||15==t?[m.root,m.minor_third,m.fourth,m.second]:4==t||8==t||10==t||18==t?[m.root,m.second,m.fourth,m.minor_seventh]:[m.root,m.second,m.major_third,m.major_sixth]}selectVoicing(t){return[1,1,0,0,3,-1,3,4,4,-1,1,1,0,-1,-1,2,2,2,0][t]}init(t,e,i,s,n,h,r,a,o){if(this.is_initialized)return;this.tempo=n,this.audioCtx=t,0===o&&(o=e.r());const c=100,l=f[s];this.use_panning_lfo=a;const u=60/(4*n),_=60/(2*n),g=60/(1.33*n),m=60/(n/2),v=60/(n/12),x=60/(n/16),I=i,A=this.selectChord(I),y=this.selectVoicing(I),M=Math.min(g,2.5);this.kp_1=new b(t,c,M),this.kp_1.setVolume(-19),0==r&&10==n&&this.kp_1.setVolume(-21),2==s&&this.kp_1.setVolume(-21),this.kp_filter_hp=C(t,"highpass",300,1,0);const F=2500+1e4*n/100;this.kp_filter_lp=C(t,"lowpass",F,1,0),this.tape_echo=new G(t,e,g,0,.05,.2),this.tape_echo.setOutputGain(-9),this.tape_echo_fb_lfo=new T(t,e,m,.3,.7),this.tape_echo_fb_lfo.connect(this.tape_echo.feedback.gain),this.agc=new AudioWorkletNode(t,"agc"),this.agc.parameters.get("rms_time").setValueAtTime(10,t.currentTime),this.agc.parameters.get("target_gain_dB").setValueAtTime(-15,t.currentTime),this.limiter=t.createDynamicsCompressor(),this.limiter.knee.value=10,this.limiter.threshold.value=-9,this.limiter.ratio.value=15,this.limiter.attack.value=.001,this.limiter.release.value=.01,this.output_flanger=new K(t,5e3,d(-8),1/x,8e3),this.bit_softener=new Y(t,e,.25,-30,1/m,-40),this.output_gain=w(t,0),this.kp_mod_gain=w(t,1),this.kp_toggle_gain=w(t,1),this.kp_ramp_in_gain=w(t,0),this.kp_volume_lfo=new O(t,1/v,d(0),d(r)),this.kp_volume_lfo.setShape("sine"),this.kp_volume_lfo.connect(this.kp_mod_gain.gain);this.kp_panner=t.createStereoPanner(),a&&(this.kp_panner_lfo=new T(t,e,1/m,-.75,.75),this.kp_panner_lfo.connect(this.kp_panner.pan));let k=new Array(x/_);for(let f=0;f<k.length;++f){let t=e.ri(1,3)*e.rc(A);k[f]=this.kp_1.pitchToDelay(t*c)}this.kp_pitch_lfo=new H(t,e,1/u,x,k,.5),this.kp_pitch_lfo.connect(this.kp_1.delay.delayTime);const V=1/u;this.filter_frequencies=new Array(64);const R=p[h];for(let f=0;f<this.filter_frequencies.length;++f)this.filter_frequencies[f]=c*e.ri(R[0],R[1])*e.rc(A);switch(this.filter_seq_max=Math.max(...this.filter_frequencies),this.filter_seq_min=Math.min(...this.filter_frequencies),this.filter_lfo=new H(t,e,V,x,this.filter_frequencies,.25),s){case 0:this.sound_source=new X(t,e,c,A,y,l,n,o),this.filter_lfo.connect(this.sound_source.getFreq());break;case 1:this.sound_source=new Z(t,e,c,A,y,l,n,o),this.filter_lfo.connect(this.sound_source.getFreq());break;case 2:this.sound_source=new z(t,e,c,A,y,l,n,o),this.filter_lfo.connect(this.sound_source.getFreq())}this.sound_source.connect(this.kp_1.input),this.sound_source.connect(this.output_flanger.input),this.kp_1.connect(this.kp_filter_hp),this.kp_filter_hp.connect(this.kp_filter_lp).connect(this.kp_mod_gain).connect(this.kp_toggle_gain).connect(this.kp_ramp_in_gain).connect(this.kp_panner).connect(this.output_flanger.input),this.output_flanger.connect(this.agc),this.output_flanger.connect(this.tape_echo.input),this.tape_echo.connect(this.agc),this.agc.connect(this.limiter),this.limiter.connect(this.bit_softener.input),this.bit_softener.connect(this.output_gain),this.output_gain.connect(t.destination),this.analyzer_output_rms=t.createAnalyser(),this.limiter.connect(this.analyzer_output_rms),this.analyzer_filter_fc=t.createAnalyser(),this.filter_lfo.output.connect(this.analyzer_filter_fc),this.is_initialized=!0}start(){this.sound_source.start(),this.tape_echo_fb_lfo.start(),this.filter_lfo.start(),this.kp_volume_lfo.start(),this.kp_pitch_lfo.start(),this.use_panning_lfo&&this.kp_panner_lfo.start(),this.tape_echo.start(),this.output_flanger.start(),this.bit_softener.start()}play(t){this.is_playing=!this.is_playing,"suspended"===this.audioCtx.state&&this.audioCtx.resume(),this.is_playing?(this.is_started||(this.start(),this.is_started=!0),y(this.audioCtx,this.output_gain.gain,d(0),this.audioCtx.currentTime+t),y(this.audioCtx,this.kp_ramp_in_gain.gain,d(0),this.audioCtx.currentTime+4*t)):y(this.audioCtx,this.output_gain.gain,1e-4,this.audioCtx.currentTime+3*t)}set_volume_smoothing(t){this.vol_smoothing_factor=t}set_filter_smoothing(t){this.filter_smoothing_factor=t}set_noise_volume(t){this.sound_source.setNoiseVolume([-52,-44][t])}set_kp_panning_value(t,e){this.use_panning_lfo||y(this.audioCtx,this.kp_panner.pan,t,this.audioCtx.currentTime+.9/e)}set_flanger_frequency(t,e){this.output_flanger.setFrequencyScaled(t,.9/e)}set_amp_mod_depth(t){this.sound_source.setAmplitudeModDepth(t)}toggle_filter_lfo(t){const e=t?1:0;this.filter_lfo.setOutputRange(e)}toggle_kp(t){const e=t?1:0;this.kp_toggle_gain.gain.setValueAtTime(e,this.audioCtx.currentTime)}toggle_echo(t){const e=t?-9:-120;this.tape_echo.setOutputGain(e)}toggle_flanger(t){const e=t?d(-8):0;this.output_flanger.setIntensity(e)}toggle_distortion(t){this.bit_softener.bypass(t)}toggle_amp_mod(t){this.sound_source.toggleAmpMod(t)}getThumbnailModeFreq(t){const e=60/(4*this.tempo),i=Math.floor(t/e)%this.filter_frequencies.length;return this.filter_frequencies[i]}getVolumeRMS(t=!1,e=0){let i=0;if(t)i=.15*(1-this.getThumbnailModeFreq(e)/this.filter_seq_max);else{const t=this.analyzer_output_rms.frequencyBinCount,e=new Float32Array(t);this.analyzer_output_rms.getFloatTimeDomainData(e),i=function(t){let e=0;for(let s=0;s<t.length;++s)e+=t[s]*t[s];let i=e/t.length;return Math.sqrt(i)}(e)}return this.rms_last=this.rms_last+this.vol_smoothing_factor*(i-this.rms_last),R(this.rms_last*U)}getFilterCutoff(t=!1,e=0){let i=0;if(t)i=this.getThumbnailModeFreq(e);else{const t=this.analyzer_filter_fc.frequencyBinCount,e=new Float32Array(t);this.is_playing&&(this.analyzer_filter_fc.getFloatTimeDomainData(e),i=e[t-1])}return i=(i-this.filter_seq_min)/(this.filter_seq_max-this.filter_seq_min),i=Math.max(i,0),this.filter_last=this.filter_last+this.filter_smoothing_factor*(i-this.filter_last),this.filter_last}},Ae={},ye=0;const Me=.5,be=.8;let Te,Ge,Fe,ke,Ve,Re,De,Be,We,Se,qe,Pe,ze,Xe,Ze,He,Oe,Ke,Ye=new class{constructor(t){this.op_t=t?1:0,this.rev_v=t?1:0,this.rev_start=-1,this.away_idle_start_t=-1,this.total_t=0,this.idle=!0,this.in_rev=!1,this.prev_t=0,this.reveal_duration=1}set_end_init_t(t){this.end_init_t=t}set_speed(t){this.speed=t}start_rev(){this.in_rev=!0;let t=Date.now();this.rev_start=t,this.idle&&(this.away_idle_start_t=t,this.prev_t=0)}anim_running(){return!this.idle||this.in_rev}show_text(){return this.idle||this.in_rev}tick(t=!1){if(t)return void(this.total_t=this.speed*(Date.now()-this.end_init_t)/1e3);this.op_t=B(R((Date.now()-this.end_init_t)/1e3-.1)),this.in_rev&&this.tick_rev(!this.idle);let e=0;if(this.anim_running()){let t=(Date.now()-this.away_idle_start_t)/1e3;e=(t-this.prev_t)*this.speed,this.prev_t=t}this.total_t+=e}tick_rev(t){let e=(Date.now()-this.rev_start)/1e3,i=Math.max(0,Math.min(1,e/this.reveal_duration));t&&(i=1-i),this.rev_v=B(i),!this.idle&&this.rev_v<=0&&(this.idle=!0,this.in_rev=!1),this.idle&&this.rev_v>=1&&(this.in_rev=!1,this.idle=!1)}set_reveal_duration(t){this.reveal_duration=t}}(me),je=4.7,Ne=.999,Le=.08,Ue=0,Qe=30,Je=Qe,Ee=.5,$e=.125,ti=.5,ei=.25,ii=3,si=.19,ni=1,hi=1,ri=2.5,ai=1,oi=!1,ci=!1,li=1.3,ui=.92,_i=.1,fi=2.75;const pi=new(window.AudioContext||window.webkitAudioContext);function gi(){let t=window.innerWidth,e=window.innerHeight;ie=~~(e*Et>=t?t:e*Et),se=~~(t/Et>=e?e:t/Et),ne=ie/$t,Ut.material.uniforms.u_sc.value=ne/1.8,Ut.material.uniforms.u_res.value=new i.Vector2(ie*ee,se*ee),Ut.material.uniforms.u_pxl_ratio.value=ee,jt.setPixelRatio(ee),jt.setSize(ie,se)}function mi(){setTimeout((function(){requestAnimationFrame(mi)}),1e3/_e),Ie.is_playing?(Ae.output_volume=F(0,Ie.getVolumeRMS(),Ye.rev_v),Ae.filter_fc=F(.9,Ie.getFilterCutoff(),Ye.rev_v)):(Ae.output_volume=F(0,R(Ie.rms_last*U),Ye.rev_v),Ae.filter_fc=F(.9,Ie.filter_last,Ye.rev_v)),we||(Ae.filter_fc=1==Ue?.1:.2),Ye.tick(me);let t=Ye.total_t;me&&(Ae.filter_fc=Ie.getFilterCutoff(!0,t),Ae.output_volume=Ie.getVolumeRMS(!0,t));let e=Ge.sdf?ei:.25,i=Ge.sdf?ii:1;if(de=k(Ae.filter_fc,0,1,e,i),Te&&(e=Te.sdf?ei:.25,i=Te.sdf?ii:1,ve=k(Ae.filter_fc,0,1,e,i)),!De&&Xe.length>=2){let t=Xe.slice(),e=re.ri(0,t.length-1);Ut.material.uniforms.u_c_1.value=t[e].main(),t.splice(e,1),Ut.material.uniforms.u_c_2.value=re.rc(t).main()}Ge.tick_n(t,$t,te,$e,ti,ce,le),Te&&Te.tick_n(t,$t,te,$e,ti,ce,le,-1);let s=Dt(He[0],He[1],Ge,Te);if(Ie.is_initialized&&Ie.set_kp_panning_value(s,_e),Fe.update(t),Ie.is_initialized&&Ie.set_amp_mod_depth(Math.abs(Fe.amt_mult)),Oe=W(t,7,5),0==Ue){let t=Qe>30?Qe<60?-45:-70:50,e=10;Je=Math.min(85,Math.max(e,Qe+t*(1-Oe)*de))}else Je=Qe;Ie.is_initialized&&Ie.set_flanger_frequency(Oe,_e);let n=k(fi*Ae.output_volume,0,1,1,-1.25);Re=F(1.4*je,je+n,Ye.rev_v),he=F(10,14,Ye.rev_v),Ut.material.uniforms.u_g_thresh.value=F(.9993,Ne,Ye.rev_v),Ut.material.uniforms.u_t.value=(Date.now()-Ye.end_init_t)/1e3,Ut.material.uniforms.u_g_amt.value=F(Me,be,Ye.rev_v),function(t){if(Nt){let e=0,i=0,s=0,n=0,h=0,r=!1,a=0,o=0,c=F(.71,1,Ye.rev_v),l=F(-2,li,Ye.op_t);for(l=F(l,0,Ye.rev_v);i<=$t;){let u=Fe.shaped_offset(i,$t);s=u,a=di(n,h,i,s,t);let _=F(u-1,te+u,Ye.op_t);for(;s<=_&&!(e>=fe);){let u,_,f;if(oi&&(u=Bt(Ge,Te,"s_depth")),ci&&(_=Bt(Ge,Te,"c_depth")),De)re.r()<(r?Ee:.005)?(f=Pe,r=!0):(f=Xe[0],r=!1);else{let t=vi(a,Xe.length);f=Xe[t]}if(f=Ze?f.var(re):f.main(),oe.copy(f),ci&&void 0!==ze){let t=k(_,0,1,0,.25),e=_?Math.min(1,re.rg(_,t)):1;oe.lerp(ze,_?e*(1-Ae.filter_fc):0)}let p=(i-$t/2)*ne+ie/2,g=(s-te/2)*ne+se/2;p=k(p,0,ie,Kt.left+Re,Kt.right-Re),g=k(g,0,se,Kt.bottom+Re,Kt.top-Re),ae.position.set(p,g+l,-1);let m=1,d=k(1-u,0,1,.25,0),v=oi&&void 0!==u?Math.min(1,re.rg(k(1-u,0,1,Ke,1),d)):1;if(2!=Ue){let t;if(ai){t=V(.25,Ve,k(a,si,ii,Ve,.25)),t*=re.rn(.8,1.2)}else t=re.rn(.25,Ve);m=Je*t*c*v}let C=!1;if(0==Ue)ae.scale.set(m,m,1);else if(1==Ue)if(C=re.r()>F(.9995,1,1-Oe)&&o<pe,C){let t=.5,e=Math.max(0,re.rg(t,1)),i=Math.max(0,re.rg(t,1)),s=k(Je,Wt,St,12,8),n=re.rg(s,5);e<.25?i*=n:i<.25&&(e*=n),ae.scale.set(m*e,m*i,1)}else ae.scale.set(m,m,1);else if(2==Ue){let e=ke.parallel()?.95:.8,r=ke.parallel()?1:Oe;e=F(e/1.1,e,Ye.rev_v);let o,l=re.rg(F(Be,3,r),F(.1,e,r));if(0==ni){o=V(hi,ri,k(a,si,ii,ri,hi))}else 1==ni&&(o=re.rn(hi,ri));ae.scale.set(v*c*Je/l,o,1);let u=ke.rotation_at_time(n,h,i,s,t,a,$e,ii,le);ae.rotation.set(0,0,u)}ae.updateMatrix(),C?(Lt.setMatrixAt(o,ae.matrix),Lt.setColorAt(o,oe),o++):(Nt.setMatrixAt(e,ae.matrix),Nt.setColorAt(e,oe)),h++,a=di(n,h,i,s,t),s+=a*he,e++}n++,h=0,a=di(n,h,i,s,t),i+=a*he}Nt.instanceMatrix.needsUpdate=!0,Nt.instanceColor&&(Nt.instanceColor.needsUpdate=!0),Nt.count=e,1==Ue&&(Lt.instanceMatrix.needsUpdate=!0,Lt.instanceColor&&(Lt.instanceColor.needsUpdate=!0),Lt.count=o)}}(t),Ye.show_text()&&!me?(Qt.mesh.parent!==Yt&&Yt.add(Qt.mesh),Qt.render(re,ae,Se,qe,Ue,Ye,ge)):Qt.mesh.parent===Yt&&Yt.remove(Qt.mesh),jt.render(Yt,Kt)}function di(t,e,i,s,n){let h=Ge.incr_for(t,e,i,s,n,te,$t,$e,ii,ce,le,de);if(Te){let r=Te.incr_for(t,e,i,s,n,te,$t,$e,ii,ce,le,ve);h=Math.min(h,r)}return h=Math.max(si,Math.floor(8*h)/8),h}function vi(t,e){if(1==e)return 0;let i=t;i*=8;let s=i%e;return Math.floor(s)}function Ci(){"suspended"!==pi.state&&"interrupted"!==pi.state||pi.resume(),Ye.in_rev||(Ye.start_rev(),Ie.play(ye))}function wi(t){"Space"===t.code&&Ci(),"Digit1"===t.code&&(Ce=!Ce,Ie.toggle_amp_mod(Ce)),"Digit2"===t.code&&(we=!we,Ie.toggle_filter_lfo(we)),"Digit3"===t.code&&(xe=!xe,Ie.toggle_kp(xe),Ie.toggle_flanger(xe),Ie.toggle_echo(xe)),"Digit0"===t.code&&(we=!1,xe=!1,Ce=!1,Ie.toggle_amp_mod(Ce),Ie.toggle_filter_lfo(we),Ie.toggle_kp(xe),Ie.toggle_flanger(xe),Ie.toggle_echo(xe))}pi.suspend(),pi.audioWorklet.addModule("data:application/javascript;base64,Y2xhc3MgQUdDIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgeyBuYW1lOiAncm1zX3RpbWUnLCBkZWZhdWx0VmFsdWU6IDIwLCBtaW5WYWx1ZTogMC4wMSwgbWF4VmFsdWU6IDMwIH0sCiAgICAgICAgICAgIHsgbmFtZTogJ3RhcmdldF9nYWluX2RCJywgZGVmYXVsdFZhbHVlOiAtMTIsIG1pblZhbHVlOiAtMzYsIG1heFZhbHVlOiAwIH0sCiAgICAgICAgXTsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICBzdXBlcigpOwogICAgICAgIHRoaXMuc3FfbGFzdCA9IDA7CiAgICB9CgogICAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdOwoKICAgICAgICBjb25zdCBybXNfdGltZSA9IHBhcmFtZXRlcnMucm1zX3RpbWVbMF07CiAgICAgICAgY29uc3QgdGFyZ2V0X2dhaW5fbGluID0gTWF0aC5wb3coMTAsIHBhcmFtZXRlcnMudGFyZ2V0X2dhaW5fZEJbMF0gLyAyMCk7IC8vIHJlcGxpY2F0aW5nIGRiMm1hZygpIGJlY2F1c2UgY2FuJ3QgaW1wb3J0IGluIHdvcmtsZXQgZmlsZXMKICAgICAgICBjb25zdCB0YXUgPSAocm1zX3RpbWUgKiBzYW1wbGVSYXRlKSAvIE1hdGgubG9nKDAuMDAxKTsKICAgICAgICBjb25zdCBybXNfYWxwaGEgPSBNYXRoLmV4cCgxLjAgLyB0YXUpOwogICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRbMF0ubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgIC8vIGNyZWF0Z
!function(t){"use strict";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const i in t)if("default"!==i){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>t[i]})}return e.default=t,Object.freeze(e)}const i=e(THREE),s=(t,e)=>1==t&&e?.5:.25,n=[2,1,1,1,1,1,1,1,1,1,1,1,1,1,1],h=[1,2,2,2,1,2,1,1,1,2],r=[.5,.25,.1,0,.05],a=[1,.15,.15,.025,0],o=[.5,0,.1,0,0],c=.5,l=[.75,.5,.25],u=[.5,.5,.5],_=[.5,.3,.2],f=[25,25,100],p=[[0,6],[0,4],[2,3]],g=[0,-6,-12,-18,-24];const m={root:1,second:Math.pow(2,2/12),minor_third:Math.pow(2,.25),major_third:Math.pow(2,4/12),fourth:Math.pow(2,5/12),fifth:Math.pow(2,7/12),minor_sixth:Math.pow(2,8/12),major_sixth:Math.pow(2,.75),minor_seventh:Math.pow(2,10/12),major_seventh:Math.pow(2,11/12),octave:2};function d(t){return Math.pow(10,t/20)}function v(t,e,i){return new AudioBuffer({numberOfChannels:t,length:e,sampleRate:i})}function C(t,e,i,s,n){const h=t.createBiquadFilter();return h.type=e,h.frequency.value=i,h.Q.value=s,"lowshelf"!==e&&"highshelf"!==e||(h.gain.value=n),h}function w(t,e=1){const i=t.createGain();return i.gain.value=e,i}function x(t,e,i,s){const n=t.createOscillator();return n.type=e,n.frequency.value=i,n.detune.value=s,n}function I(t,e){const i=t.createStereoPanner();return i.pan.value=e,i}function A(t,e,i,s){const n=t.createBufferSource();return n.buffer=e,n.playbackRate.value=i,n.loop=s,n}function y(t,e,i,s){if(navigator.userAgent.includes("Firefox"))M(t,e,i,s);else{const n=t.currentTime,h=s-n;if(h<=0)throw new Error("linearRampToValueAtTime: Duration is negative");e.cancelScheduledValues(n);const r=e.value;e.setValueCurveAtTime([r,i],n,h)}}function M(t,e,i,s){const n=t.currentTime,h=s-n;if(h<=0)throw new Error("exponentialRampToValueAtTime: Duration is negative");e.cancelScheduledValues(n),e.setTargetAtTime(i,n,h/2.5)}class b{constructor(t,e,i){this.ctx=t,this.pitch_hz=e,this.decay_time=i,this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(),this.setPitch(e),this.feedback=t.createGain(),this.setDecayTime(i),this.fb_filter=C(t,"allpass",e,1,0),this.input.connect(this.delay).connect(this.output),this.delay.connect(this.feedback).connect(this.fb_filter).connect(this.delay)}pitchToDelay(t){return 1/t}setPitch(t,e=.01){this.delay_time=this.pitchToDelay(t),this.delay.delayTime.setValueAtTime(this.delay_time,this.ctx.currentTime+e)}setDecayTime(t){this.decay_time=t;const e=Math.exp(Math.log(.001)*this.delay_time/t);y(this.ctx,this.feedback.gain,e,this.ctx.currentTime+.01)}setVolume(t){y(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}}class T{constructor(t,e,i,s=-1,n=1){this.ctx=t,this.R=e,this.rate_time=1/i,this.timerID,this.sla=5*this.rate_time,this.tla=1e3*this.rate_time,this.min_val=s,this.max_val=n,this.next_value=0,this.next_time=0,this.output=t.createConstantSource(),this.output.offset.value=s,this.running=!1}step(t,e,i){return(i-e)*t.r()+e}run(){for(;this.next_time<this.ctx.currentTime+this.sla;)this.output.offset.setTargetAtTime(this.next_value,this.next_time,.5*this.rate_time),this.next_time+=this.rate_time,this.next_value=this.step(this.R,this.min_val,this.max_val)}start(){this.output.start(),this.running||(clearTimeout(this.timerID),this.running=!0,this.next_time=this.ctx.currentTime,this.next_value=this.step(this.R,this.min_val,this.max_val),this.run(),this.timerID=setInterval((()=>{this.run()}),this.tla))}stop(){this.running=!1,this.output.offset.cancelScheduledValues(this.ctx.currentTime),clearTimeout(this.timerID),this.output.stop()}connect(t){this.output.connect(t)}}class G{constructor(t,e,i,s=.3,n=.2,h=.1,r=-1,a=-2){this.ctx=t,this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(i+.1),this.feedback=w(t,s),this.eq_low=C(t,"lowshelf",500,1,r),this.eq_high=C(t,"highshelf",2e3,1,a),this.saturator=t.createWaveShaper(),this.saturator.curve=this.HTDC(0,1.5),this.saturator.oversample="4x",this.diffuser=C(t,"allpass",500,1,0),this.input.connect(this.eq_low).connect(this.eq_high).connect(this.saturator).connect(this.diffuser).connect(this.delay),this.delay.connect(this.feedback),this.feedback.connect(this.eq_low),this.delay.connect(this.output),this.pan_left=I(t,-1),this.pan_right=I(t,1),this.wl=C(t,"allpass",1e3,1,0),this.wr=C(t,"allpass",2e3,1,0),this.output.connect(this.wl).connect(this.pan_left),this.output.connect(this.wr).connect(this.pan_right);const o=10*n,c=.04*h;this.dlm=new T(t,e,o,i,i+c),this.dlm.connect(this.delay.delayTime)}setOutputGain(t){M(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.001)}HTDC(t=0,e=3,i=512){const s=new Float32Array(i);let n=Math.pow(10,t/20),h=Math.pow(10,e/20);for(let r=0;r<i;r++){const t=2*r/i-1;s[r]=n*Math.tanh(h*t)}return s}connect(t){this.pan_left.connect(t),this.pan_right.connect(t)}start(){this.dlm.start()}}const F=(t,e,i)=>t*(1-i)+e*i,k=(t,e,i,s,n)=>{return F(s,n,(t-(h=e))/(i-h));var h},V=(t,e,i)=>Math.max(Math.min(i,e),t),R=t=>V(0,1,t),D=(t,e)=>t%e/e,B=t=>1-Math.pow(1-t,4),W=(t,e,i=3)=>{const s=D(t,e),n=Math.floor(t/e%2),h=s+n-2*s*n;return 1-Math.pow(Math.abs(h),i)};class S{constructor(t,e,i,s,n=0,h=.01){if(n<0)throw new Error("Invalid chord variation value!");this.ctx=t,this.current_variation=n,this.transition_time=h,this.chn=[m.root,m.major_third,m.fourth,m.major_sixth];const r=new Float32Array(4),a=new Float32Array(4);r[0]=0,a[0]=0,r[1]=1,a[1]=0,r[2]=d(-12),a[2]=0,r[3]=d(-16),a[3]=0;const o=this.ctx.createPeriodicWave(r,a);t.currentTime,this.v1=x(this.ctx,"sine",e,10),this.v1.setPeriodicWave(o),this.v2=x(this.ctx,"sine",e,5),this.v2.setPeriodicWave(o),this.v3=x(this.ctx,"sine",e,1),this.v3.setPeriodicWave(o),this.v4=x(this.ctx,"sine",e,7),this.v4.setPeriodicWave(o),this.filt=C(this.ctx,"highpass",i,1,0),this.out=w(this.ctx,1),this.v1_pan=I(this.ctx,0),this.v2_pan=I(this.ctx,0),this.v3_pan=I(this.ctx,0),this.v4_pan=I(this.ctx,0),this.setWidth(.35),this.v1.connect(this.v1_pan).connect(this.filt),this.v2.connect(this.v2_pan).connect(this.filt),this.v3.connect(this.v3_pan).connect(this.filt),this.v4.connect(this.v4_pan).connect(this.filt),this.filt.connect(this.out),this.setChord(e,n)}setWF(t){this.v1.setPeriodicWave(t),this.v2.setPeriodicWave(t),this.v3.setPeriodicWave(t),this.v4.setPeriodicWave(t)}setWT(t){this.v1.type=t,this.v2.type=t,this.v3.type=t,this.v4.type=t}setOV(t){y(this.ctx,this.out.gain,d(t),this.ctx.currentTime+.01)}setFcQ(t,e=.25){y(this.ctx,this.filt.frequency,t,this.ctx.currentTime+.01),y(this.ctx,this.filt.Q,e,this.ctx.currentTime+.01)}setFilterType(t){this.filt.type=t}setChordNotes(t){4==t.length&&(this.chn=t)}setChord(t,e){if(e<0||t<20)throw new Error("Invalid chord variation value!");this.current_variation=e;const i=Math.floor(e/4)+1;e%=4;const s=[0,1,1,1],n=t*i*this.chn[e],h=t*(i+s[1%(e+1)])*this.chn[(e+1)%4],r=t*(i+s[2%(e+1)])*this.chn[(e+2)%4],a=t*(i+s[3%(e+1)])*this.chn[(e+3)%4],o=this.ctx.currentTime;this.v1.frequency.cancelScheduledValues(o),this.v2.frequency.cancelScheduledValues(o),this.v3.frequency.cancelScheduledValues(o),this.v4.frequency.cancelScheduledValues(o),y(this.ctx,this.v1.frequency,n,o+this.transition_time),y(this.ctx,this.v2.frequency,h,o+this.transition_time),y(this.ctx,this.v3.frequency,r,o+this.transition_time),y(this.ctx,this.v4.frequency,a,o+this.transition_time)}start(){this.v1.start(),this.v2.start(),this.v3.start(),this.v4.start()}setWidth(t){let e=-t,i=t,s=2*t/4;y(this.ctx,this.v1_pan.pan,e,this.ctx.currentTime+.01),y(this.ctx,this.v2_pan.pan,e+s,this.ctx.currentTime+.01),y(this.ctx,this.v3_pan.pan,e+2*s,this.ctx.currentTime+.01),y(this.ctx,this.v4_pan.pan,i,this.ctx.currentTime+.01)}}class q{CreateNoiseSource(t){const e=2*t.sampleRate,i=v(1,e,t.sampleRate),s=i.getChannelData(0);for(let n=0;n<e;n++)s[n]=2*Math.random()-1;return i}constructor(t){this.ctx=t,this.nbf=t.createBufferSource(),this.filter=t.createBiquadFilter(),this.filter.type="lowpass",this.filter.frequency.setValueAtTime(t.sampleRate/2,t.currentTime),this.nbf.buffer=this.CreateNoiseSource(t),this.nbf.loop=!0,this.output=t.createGain(),this.nbf.connect(this.filter).connect(this.output)}setFcQ(t,e=1){y(this.ctx,this.filter.frequency,t,this.ctx.currentTime+.01),y(this.ctx,this.filter.Q,e,this.ctx.currentTime+.01)}setFilterType(t){this.filter.type=t}setPlaybackRate(t){t>1&&(t=1),this.nbf.playbackRate.setValueAtTime(t,this.ctx.currentTime)}setOutputGain(t){y(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}start(){this.nbf.start()}stop(){this.nbf.stop()}}class P{constructor(t,e,i=800,s=-14,n=2400){this.noise=new q(t),this.noise.setOutputGain(-40),this.noise.setFcQ(i,1),this.noise.setFilterType("highpass");const h=C(t,"highshelf",6e3,1,s),r=C(t,"notch",n,.45,0);this.noise.output.connect(h).connect(r).connect(e)}start(){this.noise.start()}setOutputGain(t){this.noise.setOutputGain(t)}}class z{CreatePulseLoop(t,e,i,s=0,n=0,h=1){const r=1/e*t.sampleRate,a=v(1,r,t.sampleRate),o=a.getChannelData(0),c=Math.floor(r*i),l=Math.floor(s*r);for(let u=0;u<c;u++)o[u]=h,u>c-l&&(o[u]=h-(u-(c-l))/l*(h-n));for(let u=c;u<r;++u)o[u]=n,u>r-l&&(o[u]=(u-(r-l))/l*(h-n)+n);return a}constructor(t,e,i,s,n,h,r,a){this.ctx=t;const o=Math.floor(-13*a-3);this.min_scale=(1-d(-3))/(1-d(o)),this.ch=new S(t,i,0,10,0),this.ch.setOV(-18),this.ch.setFcQ(h,6),this.ch.setFilterType("bandpass"),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=1/(60/(4*r));this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0,this.pulse_lfo=A(t,this.CreatePulseLoop(t,c,.9,.0015,d(o),1),1,!0),this.pulse_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=t.createGain(),this.fade_in_gain=w(t,1e-4),this.noise=new P(t,this.am),this.ch.out.connect(this.am),this.am.connect(this.output_gain).connect(this.fade_in_gain)}connect(t){this.fade_in_gain.connect(t)}start(){this.ch.start(),this.noise.start(),this.pulse_lfo.start(),this.am_o.start(),this.fade_in_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+.5)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class X{CreateCircleLFO(t,e,i=0,s=1){const n=1/e*t.sampleRate,h=v(1,n,t.sampleRate),r=h.getChannelData(0),a=s-i;for(let o=0;o<n;o++)r[o]=i+a/2*(1+Math.sin(2*Math.PI*(o/n)));return h}constructor(t,e,i,s,n,h,r,a){this.ctx=t;const o=Math.floor(-12*a-2);this.min_scale=(1-d(-2))/(1-d(o)),this.ch=new S(this.ctx,i,0,10,0),this.ch.setOV(-24),this.ch.setFcQ(h,2),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=1/(60/(4*r));this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0,this.ch_amp_mod_lfo=A(t,this.CreateCircleLFO(t,c,d(o),d(0)),1,!0),this.ch_amp_mod_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=w(this.ctx,1e-4),this.noise=new P(t,this.am),this.ch.out.connect(this.am).connect(this.output_gain)}connect(t){this.output_gain.connect(t)}start(){this.ch.start(),this.ch_amp_mod_lfo.start(),this.noise.start(),this.am_o.start(),this.output_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+1)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class Z{CreateRingsLFO(t,e,i=0,s=1){const n=1/e*t.sampleRate,h=4*n,r=v(1,h,t.sampleRate),a=r.getChannelData(0),o=s-i;for(let c=0;c<h;c++)a[c]=i+o*Math.sin(Math.PI*(c/h))*Math.abs(Math.sin(Math.PI*c/n));return r}constructor(t,e,i,s,n,h,r,a){this.ctx=t,this.default_noise_gain_dB=-12;const o=Math.floor(-16*a-2);this.min_scale=(1-d(-2))/(1-d(o)),this.ch=new S(t,i,0,10,0),this.ch.setOV(-21),this.ch.setFcQ(h,2),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=new Float32Array(7),l=new Float32Array(7);c[0]=0,l[0]=0;for(let f=1;f<7;++f)c[f]=1/(f*f),l[f]=0;const u=t.createPeriodicWave(c,l);this.ch.setWF(u),this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0;const _=1/(60/(4*r));this.wave_lfo=A(t,this.CreateRingsLFO(t,_,d(o),d(0)),1,!0),this.wave_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=t.createGain(),this.output_gain.gain.value=1e-4,this.noise=new P(t,this.am),this.ch.out.connect(this.am).connect(this.output_gain)}connect(t){this.output_gain.connect(t)}start(){this.ch.start(),this.wave_lfo.start(),this.noise.start(),this.am_o.start(),this.output_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+1)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class H{CreateCVLoop(t,e,i,s,n,h){const r=t.sampleRate*s,a=v(1,r,t.sampleRate),o=1/i*t.sampleRate;let c=0,l=0,u=n[l];const _=a.getChannelData(0);for(let f=0;f<r;f++)c>=o&&e.r()>h&&(l++,l>=n.length&&(l=0),u=n[l],c=0),_[f]=u,c++;return a}constructor(t,e,i,s,n,h){this.ctx=t,this.cv_loop=A(t,this.CreateCVLoop(t,e,i,s,n,h),1,!0),this.output=w(t,1),this.cv_loop.connect(this.output)}setOutputRange(t){y(this.ctx,this.output.gain,t,this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}start(){this.cv_loop.start()}stop(){this.cv_loop.stop()}}class O{constructor(t,e,i,s){this.ctx=t,this.lfo=t.createOscillator(),this.gain=t.createGain(),this.offset=t.createConstantSource(),this.output=w(t,0),this.setRate(e),this.setRange(i,s),this.setShape("sine"),this.lfo.connect(this.gain).connect(this.output),this.offset.connect(this.output)}setShape(t){this.lfo.type=t}setRate(t,e=.01){y(this.ctx,this.lfo.frequency,t,this.ctx.currentTime+e)}setRange(t,e){let i=e-t,s=i/2+t;this.gain.gain.setValueAtTime(i/2,this.ctx.currentTime+.01),this.offset.offset.setValueAtTime(s,this.ctx.currentTime+.01)}start(){this.offset.start(),this.lfo.start(),y(this.ctx,this.output.gain,1,this.ctx.currentTime+.01)}stop(){y(this.ctx,this.output.gain,0,this.ctx.currentTime+.01),this.offset.stop(),this.lfo.stop()}connect(t){t.setValueAtTime(0,this.ctx.currentTime+.01),this.output.connect(t)}}class K{constructor(t,e,i,s,n){this.ctx=t,this.fc_hz=e,this.depth=n;const h=1/e;this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(),this.delay.delayTime.value=h,this.delay_gain=w(t,-i),this.input.connect(this.output),this.input.connect(this.delay).connect(this.delay_gain).connect(this.output)}connect(t){this.output.connect(t)}start(){}setIntensity(t){y(this.ctx,this.delay_gain.gain,-t,this.ctx.currentTime+.01)}setFrequencyScaled(t,e){const i=1/(this.fc_hz-this.depth/2),s=1/(this.fc_hz+this.depth/2),n=k(t,0,1,i,s);y(this.ctx,this.delay.delayTime,n,this.ctx.currentTime+e)}}class Y{constructor(t,e,i,s,n,h){this.ctx=t,this.input=t.createGain(),this.output=t.createGain(),this.noise=new q(this.ctx);const r=w(t,d(s+h));this.gain=t.createGain(),this.noise.setPlaybackRate(i),this.noise.connect(r),r.connect(this.gain.gain),this.wobble_lfo=new T(this.ctx,e,n,d(s+h),d(s)),this.wobble_ramp_gain=w(t,0),this.wobble_lfo.output.connect(this.wobble_ramp_gain).connect(r.gain),this.input.connect(this.gain).connect(this.output)}connect(t){this.output.connect(t)}start(){this.wobble_lfo.start(!0,this.ctx.currentTime+3),this.noise.start(),y(this.ctx,this.wobble_ramp_gain.gain,1,this.ctx.currentTime+10)}bypass(t){t?(this.input.disconnect(),this.input.connect(this.gain).connect(this.output)):(this.input.disconnect(),this.input.connect(this.output))}}const j=[37,40,42,45,48,50,55,60,65,70,75],N=j,L=[37,40,42,45,48,50,55,60,65,70],U=2;class Q{constructor(t,e,i,s={}){this.R=t,this.set_type(i);let n=0===i?0:V(55,85,t.rg(70,10));3!==i&&4!==i||(n=85);let h=1==i?[1,5]:[2,6];s.f&&s.f<=h[1]?this.f=s.f:this.f=1==i?t.rcw([1,2,3,4,5],a):2==i?t.rcw([2,3,4,5,6],o):t.ri(4,6);let r=1;if(i>=3){if(this.r_vals=[],3==i){let e=-1;for(let i=0;i<this.f;i++){let i=t.r();for(;Math.abs(i-e)<.1;)i=t.r();this.r_vals.push(i),e=i}}else if(4==i){const e=t.rb(.5),i=t.r()*Math.PI;for(let t=0;t<this.f;t++){let s=.5;s=e?Math.abs(Math.sin(.5*t+i)):Math.abs(Math.sin(i+t*Math.PI/(2*(this.f-1)))),this.r_vals.push(s)}}r=Math.max(...this.r_vals.map((t=>Math.abs(2*(t-.5)))))}this.set_amt(n,r),this.add_r=t.rb(.25),this.add_r&&(this.r_amt=t.rn(.05,.15))}set_r_amt(t){this.r_amt=t}set_type(t){this.type=t}set_amt(t,e=1){this.amt_mult=1,this.amt=t,this.audio_amt=k(t*e,0,85,0,1)}update(t){if(0!==this.type){const i=.01*t,s=2*i-Math.cos(i);this.amt_mult=Math.sin(2*Math.PI*s+Math.PI/2),this.type>=3&&(this.flip=(e=0,Math.sin(Math.PI*s+Math.PI/4)<e?0:1))}var e}shaped_offset(t,e){t=Math.min(t,e-.001);let i,s=e/this.f;if(0==this.type)i=.5;else if(1==this.type)i=D(t,s);else if(2==this.type)i=((t,e)=>Math.floor(t/e)%2==0?0:1)(t,s);else if(this.type>=3){let n=this.flip?e-t:t,h=V(0,this.r_vals.length-1,Math.floor(n/s));i=this.r_vals[h]}else i=.5;this.add_r&&(i+=this.R.rn(-.5,.5)*this.r_amt);const n=1.1*this.amt*this.amt_mult*.5;return k(i,0,1,-n,n)}}class J{constructor(t,e){this.type=e,2==e?this.f=t.rc([.05,.1]):3==e?this.f=.05:4==e?this.angle=0:5==e&&(this.f=t.rn(.002,.01))}parallel(){return 1==this.type||4==this.type}max_size(){return this.parallel()?50:100}rotation_at_time(t,e,i,s,n,h,r,a,o){let c,l=this.type;return 1==l?c=n:2==l?c=n+t*this.f:3==l?c=n+e*this.f:4==l?c=this.angle:5==l?c=o(i*this.f,s*this.f,n):6==l&&(c=k(h,r,a,0,2*Math.PI)),c}}const E=(t,e,i,s=0,n=0)=>{let h={};return e.getHSL(h),h.h+=t.rn(-i,i),h.s+=t.rn(-s,s),h.l+=t.rn(-n,n),h};class ${constructor(t,e,s,n=0,h=0){this.main_color=e;let r=[];for(let a=0;a<25;a++){let a=E(t,e,s,n,h),o=new i.Color;o.setHSL(a.h,a.s,a.l),r.push(o)}this.vars=r}main(){return this.main_color}var(t){return t.rc(this.vars)}}const tt=[[2237476,16777215,14500656,16767186,16747373,16760757],[2107705,4900043,12044499,13479865,15791866,13558253],[1182736,16459325,16763639,16777215,1785744,16763639],[1251613,6414253,16508862,15644129,16776685],[5603839,16643839,16751067,15577599,11854335,14545407],[],[3157945,15329769,16733696,9621247,16745861,9621247],[15159915,16777215,10937087,16768767,16757247,16768767],[6992294,15269885,15460820,16765387,16770272,16770272],[],[15365984,16768200,11524588,14087391,14087391,14087391],[1645334,8761296,16317439,11187905,13487816,16317439],[2237476,2993368,16083329,16759692,16306892,15398911],[],[],[18798,12316404,54251,14742515,16569828,16575217],[0,16768201,16750658,16734726,10562304,16768201],[398871,16764143,7330559,16643837,7336424,16771576],[6713740,14014950,16775672,14873087,16770019,16770019]],et=[1,0,1,0,1,1,3,3,0,1,2,0,1,1,2,2,1,3,1],it=[0,1,3,4,11,12,15,16,17,18],st=[0,1,2,3,4,6,7,8,10,11,12,15,16,17,18],nt=[4,7,8,10,14],ht=[0,1,11,16,17],rt=[4,7,8,9,10,13],at=[.9994,.9991],ot=[.999,.9985];class ct{constructor(t,e){this.idx=e<=2?t.rcw(st,n):t.rcw(it,h),this.colors=tt[this.idx]}h_idx(){return et[this.idx]}h_range(){return nt.includes(this.idx)?2:ht.includes(this.idx)?.5:1}n_thresh(t){return rt.includes(this.idx)?ot[t]:at[t]}}const lt=[[1.055,-7.041],[1.055,-6.036],[1.055,-5.046],[1.055,-4.037],[1.055,-3.049],[1.055,-2.038],[1.055,-1.04],[1.055,-.045],[1.724,-.285],[1.724,-1.284],[1.724,-2.291],[2.351,-2.661],[3.341,-2.661],[4.313,-2.86],[5.095,-3.477],[5.477,-4.382],[5.466,-5.381],[5.047,-6.291],[4.264,-6.868],[3.285,-7.046],[2.275,-7.046],[1.279,-7.046],[1.728,-6.45],[2.729,-6.45],[3.723,-6.384],[4.543,-5.864],[4.838,-4.924],[4.616,-3.952],[3.845,-3.358],[2.861,-3.257],[1.855,-3.257],[1.724,-4.129],[1.724,-5.114],[1.724,-6.132],[11.611,-.605],[10.628,-.605],[9.624,-.605],[8.623,-.605],[8.188,-1.177],[8.188,-2.165],[8.188,-3.169],[8.188,-4.165],[8.188,-5.166],[8.188,-6.177],[8.06,-7.046],[7.524,-6.584],[7.524,-5.586],[7.524,-4.582],[7.524,-3.585],[7.524,-2.584],[7.524,-1.581],[7.524,-.577],[7.932,0],[8.934,0],[9.943,0],[10.945,0],[11.621,-.317],[17.43,0],[18.006,-.303],[17.695,-1.243],[17.383,-2.191],[17.066,-3.152],[16.753,-4.099],[16.441,-5.046],[16.124,-6.006],[15.814,-6.946],[15.05,-6.811],[14.738,-5.867],[14.423,-4.913],[14.111,-3.966],[13.795,-3.009],[13.488,-2.076],[13.171,-1.116],[12.86,-.174],[13.532,-.142],[13.831,-1.079],[14.138,-2.042],[15.041,-2.158],[16.048,-2.158],[16.829,-1.858],[17.134,-.903],[15.454,-6.172],[15.758,-5.233],[16.063,-4.272],[16.367,-3.318],[16.17,-2.734],[15.174,-2.734],[14.414,-2.919],[14.714,-3.86],[15.017,-4.813],[15.324,-5.778],[21.968,-.009],[21.968,-.998],[21.968,-1.998],[21.968,-2.994],[22.456,-3.866],[22.964,-4.72],[23.477,-5.58],[23.989,-6.439],[24.056,-7.046],[23.317,-6.584],[22.815,-5.715],[22.315,-4.85],[21.816,-3.986],[21.29,-4.274],[20.787,-5.143],[20.284,-6.014],[19.791,-6.867],[18.936,-7.02],[19.45,-6.158],[19.959,-5.304],[20.47,-4.446],[20.982,-3.586],[21.304,-2.673],[21.304,-1.666],[21.304,-.661],[21.636,0]],ut={x:1.0546875,y:-7.0458984375,h:7.0458984375,w:23.2958984375,advance:1.0546875},_t=.08;class ft{constructor(t,e){this.mesh=t,this.cam=e;let i=lt,s=ut,n=[s.w/2,-s.h/2];this.text_pos=[],this.text_rot=[];let h=0,r=0;for(let a=0;a<i.length;a+=2){let t=i[a];t[0]-=n[0],t[1]-=n[1],t[0]*=_t,t[1]*=-.08,this.text_pos.push(t);let e=[t[0]-h,t[1]-r],s=Math.atan2(e[1],e[0])+Math.PI/2;this.text_rot.push(s),h=t[0],r=t[1]}this.text_bounds={x:-n[0]*_t,y:n[1]*_t,w:s.w*_t,h:s.h*_t}}gen(t){let e=[],i=[];for(let f=0;f<this.text_pos.length;f++){let s=this.text_pos[f],n=s[0]+.2+.02*t.rn(-1,1),h=s[1]+-5.3+.02*t.rn(-1,1);e.push([n,h]),i.push(this.text_rot[f])}let s=.68/3,n=this.text_bounds.y+-5.3,h=n+this.text_bounds.h,r=this.text_bounds.x-.5,a=r+.5+this.text_bounds.w+.05,o=.68,c=n;for(;c<=h;)e.push([r-s,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;let l=1.73205,u=r-s;for(;c>=(n+h)/2;){let s=.05*t.rn(-1,1);e.push([u+s,c-s/l]),i.push(Math.PI/3),u+=.12,c-=.12/l}for(u=r-s,c=n;c<=(n+h)/2;){let s=.05*t.rn(-1,1);e.push([u+s,c+s/l]),i.push(-Math.PI/3),u+=.12,c+=.12/l}let _=o/1.5;for(c=n-_;c<=h+_;)e.push([r-o,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;for(c=n-_;c<=h+_;)e.push([a+o,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;for(u=r-o+.12;u<=a+o;)e.push([u+.1*t.rn(-1,1),n-_]),i.push(Math.PI/2),u+=.12;for(u=r-o+.12;u<a+o;)e.push([u+.1*t.rn(-1,1),h+_]),i.push(Math.PI/2),u+=.12;this.positions=e,this.rotations=i}render(t,e,i,s,n,h,r){this.gen(t);let a=i.clone();h.in_rev?a.lerp(s,1-h.rev_v):a.lerp(s,h.op_t);let o=0,c=150;for(let l=0;l<this.positions.length&&!(o>=r);l++){if(e.position.set(this.positions[l][0],this.positions[l][1],-2),e.rotation.set(0,0,this.rotations[l]),0==n||1==n){let i=t.rn(1,1.5)*_t;e.scale.set(c*i,c*i,1)}else{let i=t.rn(.05,.2)*_t,s=t.rn(.5,.75)*_t;e.scale.set(c*i,c*s,1)}e.updateMatrix(),this.mesh.setMatrixAt(o,e.matrix),this.mesh.setColorAt(o,a),o++}this.mesh.instanceMatrix.needsUpdate=!0,this.mesh.instanceColor&&(this.mesh.instanceColor.needsUpdate=!0),this.mesh.count=o}}const pt=.5*(Math.sqrt(3)-1),gt=(3-Math.sqrt(3))/6,mt=1/3,dt=1/6,vt=t=>0|Math.floor(t),Ct=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),wt=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function xt(t){const e=512,i=new Uint8Array(e);for(let s=0;s<256;s++)i[s]=s;for(let s=0;s<255;s++){const e=s+~~(t()*(256-s)),n=i[s];i[s]=i[e],i[e]=n}for(let s=256;s<e;s++)i[s]=i[s-256];return i}class It{constructor(t,e={}){this.n_f=e.n_f??t.rn(.1,.5),this.sdf=!1,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){}incr_fo
IGlmIChpbnB1dC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRbMF0ubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBtaWQgc2lnbmFsCiAgICAgICAgICAgICAgICBsZXQgbWlkID0gMDsKICAgICAgICAgICAgICAgIGZvciAobGV0IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgaW5wdXQubGVuZ3RoOyArK2NoYW5uZWwpIHsKICAgICAgICAgICAgICAgICAgICBtaWQgPSBtaWQgKyBpbnB1dFtjaGFubmVsXVtpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0IG1pZF9zcSA9IG1pZCAqIG1pZDsKICAgICAgICAgICAgICAgIHRoaXMuc3FfbGFzdCA9ICgxIC0gcm1zX2FscGhhKSAqIG1pZF9zcSArIHJtc19hbHBoYSAqIHRoaXMuc3FfbGFzdDsKICAgICAgICAgICAgICAgIGNvbnN0IHJtcyA9IE1hdGguc3FydCh0aGlzLnNxX2xhc3QpOwogICAgICAgICAgICAgICAgY29uc3QgZ2Fpbl9kaWZmID0gTWF0aC5taW4odGFyZ2V0X2dhaW5fbGluIC8gKHJtcyArIDAuMDAwMDEpLCAzLjApOyAvLyBtYXggZ2FpbiBvZiA5IGRiLCBwcmV2ZW50cyBpdCBmcm9tIGJsb3dpbmcgdXAgYWZ0ZXIgdGhlIGF1ZGlvIGlzIHBhdXNlZCBmb3IgYSBsb25nIHRpbWUKICAgICAgICAgICAgICAgIGZvciAobGV0IGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgaW5wdXQubGVuZ3RoOyArK2NoYW5uZWwpIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhbm5lbF1baV0gPSBnYWluX2RpZmYgKiBpbnB1dFtjaGFubmVsXVtpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0KCnJlZ2lzdGVyUHJvY2Vzc29yKCdhZ2MnLCBBR0MpOw==").then((()=>{!function(){const t=zt(re);He=re.rcw(t[0],t[1]),We=He[2];const e=new ct(re,We),n=1==e.h_idx();Ze=He[7]&&re.rb(s(We,n));const h=re.rc([0,1]);Ue=He[3];const a=re.rcw([...Array(r.length).keys()],r);let o=N;1==Ue?o=L:2==Ue&&(o=j);const c=re.rc(o),p=re.rcw([0,1,2],_),f=re.rc(g);let m=He[0];Ge=Rt(m,re,Et),Ge.tick_n(0,$t,te,$e,ti,ce,le);let d=He[1];d&&(Te=Rt(d,re,Et),Te.tick_n(0,$t,te,$e,ti,ce,le,-1));11==m&&6==d&&(Ge.rot<0?Te.ang=-3*Math.PI/8:0==Ge.rot?Te.ang=-Math.PI/8:Te.ang=Math.PI/8);(0==m&&3==d||17==m&&16==d)&&1==We&&1==e.idx&&(Ze=!1);De=1==We,Se=new i.Color(e.colors[0]),qe=new i.Color(e.colors[1]),Pe=new $(re,new i.Color(e.colors[2]),re.rn(.2,.5)),ze=6==e.colors.length?new i.Color(e.colors[5]):void 0,Ee=re.rn(.6,.7),Le=re.rn(.05,.1)*e.h_range(),v=e,C=We,Xe=v.colors.slice(1,1+C).map(((t,e)=>new $(re,new i.Color(t),e==v.h_idx()?Le:0))),Xe=re.shuffle(Xe),ai=He[6],oi=re.rb(l[Ue])&&void 0!==Bt(Ge,Te,"s_depth");var v,C;let w=(x=m,I=d,Vt.includes(x)?1:Vt.includes(I)?2:0);var x,I;0==Ue&&0==w?oi=!1:1==Ue&&11==m&&(oi=!0);Ke=1==Ue?.5:.25;let A=0==Ue?.2:.125,y=1==Ue?.25:.5;$e=re.rn(0,A),ti=re.rn(y,1),ei=re.rn(.125,.25),ei=.5,ii=re.rn(3,4),Qe=He[5],0==Ue&&4==e.idx&&(Qe=Math.max(50,Qe));if(0==Ue)Ve=.9;else if(1==Ue)Ve=V(.75,.9,k(Qe,Wt,St,.9,.75));else if(2==Ue){ke=new J(re,He[4]),ni=He[8];let t=k(Qe,qt,Pt,3,2.5);ri=re.rn(t,4),Be=1}ci=re.rb(u[Ue])&&void 0!==ze&&void 0!==Bt(Ge,Te,"c_depth"),(0==Ue&&Qe>=45&&!w||2==Ue&&5!=ke.type)&&(ci=!1);Ne=e.n_thresh(h),Fe=w>0?1==w&&Ge.r<=3?new Q(re,$t,a,{f:Ge.c}):2==w&&Te.r<=3?new Q(re,$t,a,{f:Te.c}):new Q(re,$t,a):new Q(re,$t,a);let M=o[0],b=o[o.length-1];Ye.set_speed(k(c,M,b,.2,.9));const T=void 0===Dt(He[0],He[1],Ge,Te);Ie.init(fi,re,e.idx,Ue,c,p,f,T,Fe.audio_amt),Ie.set_noise_volume(h),Ie.set_volume_smoothing(1-ui),Ie.set_filter_smoothing(1-_i),ye=Math.min(60/c,2),Ye.set_reveal_duration(ye),Kt=new i.OrthographicCamera(ue*Et/-2,ue*Et/2,ue/2,ue/-2,0,10),Yt=new i.Scene,function(){let t;Yt.remove.apply(Yt,Yt.children);let e=16;if(0==Ue)t=new i.CircleGeometry(.1,e);else if(1==Ue){let s=k(Qe,Wt,St,.07,.03);t=new i.RingGeometry(.1-s/2,.1+s/2,e)}else 2==Ue&&(t=new i.PlaneGeometry(1,1));let s=.0146;t.scale(s,s,s);const n=new i.ShaderMaterial({vertexShader:Ht,fragmentShader:Ot});if(Nt=new i.InstancedMesh(t,n,pe),Nt.instanceMatrix.setUsage(i.DynamicDrawUsage),Nt.setColorAt(0,new i.Color),Yt.add(Nt),1==Ue){let t=new i.PlaneGeometry(1,1);t.scale(s,s,s),Lt=new i.InstancedMesh(t,n,fe),Lt.instanceMatrix.setUsage(i.DynamicDrawUsage),Lt.setColorAt(0,new i.Color),Yt.add(Lt)}let h=new i.InstancedMesh(t,n,ge);h.instanceMatrix.setUsage(i.DynamicDrawUsage),h.setColorAt(0,new i.Color),Yt.add(h),Qt=new pt(h,Kt,Ye);const r=new i.PlaneGeometry(2*Kt.right,2*Kt.top),a=new i.ShaderMaterial({uniforms:{u_bg_c:{value:Se},u_c_1:{value:Xe[De?0:1].main()},u_c_2:{value:Xe[0].main()},u_res:{value:new i.Vector2(ie*ee,se*ee)},u_t:{value:0},u_sc:{value:ne/1.8},u_g_thresh:{value:Ne},u_g_amt:{value:Me},u_pxl_ratio:{value:ee},u_bg_g_amt:{value:me?0:.045}},vertexShader:Xt,fragmentShader:Zt});Ut=new i.Mesh(r,a),Ut.position.set(0,0,-10),Yt.add(Ut)}(),jt=new i.WebGLRenderer({antialias:!0}),jt.setPixelRatio(ee),jt.setSize(ie,se),Ye.set_end_init_t(Date.now()),document.body.appendChild(jt.domElement),window.addEventListener("resize",gi),window.addEventListener("click",Ci),window.addEventListener("touchend",(function(t){Ci(),t.preventDefault()})),window.addEventListener("keyup",wi),gi()}(),mi()}))}();
his.sdf=!1,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=k(l(.1*t*this.n_f,.12*e*this.n_f,.5*n),-1,1,a,o);return _*=u,_}}class At{constructor(t){let e=R(t.rg(.5,.2));this.thick=F(50,280,e),this.sdf=!0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.n1=k(h(.5*t,0),-1,1,.002,2),this.n2=k(h(t,1e3),-1,1,s/2,n)}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=k(Math.sin(i*this.n1+n),-1,1,0,h),p=this.thick*k(c(.005*i+n,0),-1,1,0,1);return s>=_-p&&s<=_+p?this.n2:u}}const yt=(t,e)=>Math.hypot(e[0]-t[0],e[1]-t[1]),Mt=(t,e)=>{let i=Math.cos(e),s=Math.sin(e);return[t[0]*i+t[1]*s,t[1]*i+t[0]*s]};class bt{constructor(t,e=0,i={}){this.repeat=i.two_repeat?2:t.rn(1,1.5),this.n_amt=t.rn(.1,2==this.repeat?.35:.5),this.thick=[10,100],this.dir=e,this.dir_m=t.rc([-1,1]),this.sdf=!0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.n_f=.002;let a=0==this.dir?i:e;this.mod=a/this.repeat}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=0==this.dir?h:r,p=0==this.dir?i:s,f=0==this.dir?s:i,g=0==this.dir?t:e,m=k(c(p*this.n_f,n)*this.n_amt,-1,1,0,_),d=k(Math.sin(.1*g+n),-1,1,this.thick[0],this.thick[1]),v=Math.abs(f+this.dir_m*n*100)%this.mod;return v>=m-d&&v<=m+d?.125:v>m+d&&v<=m+4*d?.25:v>m+3*d&&v<=m+8*d?.5:u}}class Tt{constructor(t){let e=t.rn(.4,.6);this.n=t.rb(c),this.n&&(this.n_amt=t.rn(.2,.5),this.n_f=t.ri(10,50)),this.mod=e,this.sdf=!0,this.rot_mul=1,this.ang=0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.n1=k(h(.8*t,0),-1,1,0,1),this.n2=k(h(.7*t,1e3),-1,1,0,.33),this.n3=k(h(.9*t,-1e3),-1,1,0,1),this.n4=k(h(.75*t,-1e5),-1,1,0,.5),this.n5=k(h(t,1e6),-1,1,s,1);let a=h(.25*t,0);this.n6=k(a,-1,1,this.ang,this.ang+Math.PI/4),this.out_n=a}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=Mt([i/r-.5,s/h-.5],this.n6);if(this.n){let t=c(Math.floor(e/this.n_f),.75*n)*this.n_amt;_[0]+=t,_[1]+=t}this.n1,this.n2,_[0]%=this.mod;let p=this.n3,f=this.n4;return _[1]%=this.mod,_[1]+.5>=p-f/2&&_[1]+.5<=p+f/2?this.n5:u}}class Gt{constructor(t,e,i={}){let s=Math.floor(10/e);for(this.c=1,this.r=1;this.c*this.r<4||this.c*this.r>=40;)this.c=i.c??t.ri(1,10),this.r=t.ri(1,s);this.rot=t.rcw([0,Math.PI/4,-Math.PI/4],1==i.c?[1,1,1]:[.9,.05,.05]),i.no_rot&&(this.rot=0),this.n=i.force_n||t.rb(c),this.floor_n=this.n&&1==this.r&&t.rb(c),this.n&&(this.n_amt=t.rn(.05,.1),this.n_f=i.n_f??t.rc([1,.01]),this.floor_n&&(this.n_f=.1)),this.sdf=!1,this.s_depth=1,this.c_depth=0}tick_n(t,e,i,s,n,h,r){}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=r/this.c,p=h/this.r,f=i/r-.5,g=s/h-.5;if(this.n){let t=e*this.n_f,s=l(.001*i,this.floor_n?Math.floor(t/5):t,n);this.c>1?f+=s*this.n_amt:g+=s*this.n_amt}let m=Mt([f,g],this.rot);i=(m[0]+.5)*r,s=(m[1]+.5)*h;let d=V(0,this.c-1,Math.floor(i/_)),v=V(0,this.r-1,Math.floor(s/p)),C=this.c>=this.r?i/_%1:s/p%1;this.s_depth=C,this.c_depth=C;let w=k(l(d,v,n),-1,1,.5,o);return w*=u,w}}class Ft{constructor(t,e={}){this.num=V(4,50,t.rg(12,5)),this.n=e.force_n||t.rb(c),this.n&&(this.n_amt=t.rc([.5,1,2]),this.n_f=t.rc([10,20,30,40])),this.sdf=!1,this.s_depth=1,this.c_depth=this.n&&this.n_f<=20?0:void 0}tick_n(t,e,i,s,n,h,r,a=1){this.n1=h(.1*t,10*a),this.n2=h(.12*t,1e3*a);let o=yt([0,0],[e/2,i/2]);this.l=o/this.num,this.out_n=-this.n1}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=[i-r/2,s-h/2];if(_[1]/=r/h,_[0]+=this.n1*r/4,_[1]+=this.n2*h/4,this.n){let t=c(Math.floor(e/this.n_f),.1*n)*this.n_amt*r/4;_[0]+=t,_[1]+=t}let p=yt(_,[0,0]),f=Math.floor(p/this.l),g=p/this.l%1;this.s_depth=g,this.c_depth=this.n&&this.n_f<=20?g:void 0;let m=k(c(f,n),-1,1,.5,o);return m*=u,m}}class kt{constructor(t,e={}){this.num=t.ri(10,20),this.n=t.rb(e.proba_n??c),this.n&&(this.n_amt=t.rc([.05,.1,.15]),this.n_f=t.rn(.03,.1)),this.sdf=!0,this.s_depth=void 0,this.c_depth=void 0}tick_n(t,e,i,s,n,h,r){this.inside_n=k(h(t,0),-1,1,s,n),this.noises=[],this.sines=[];let a=0;for(let o=0;o<this.num;o++){let s=k(h(.17*t,100*o),-1,1,-e/2,e/2),n=k(h(.13*t,100*-o),-1,1,-i/2,i/2);this.noises.push([s,n]),this.sines.push(k(Math.sin(t+100*o),-1,1,20,50)*(this.n?1.5:1)),a+=s}a/=this.num,this.out_n=V(-1,1,k(a/(e/2),-.2,.2,-1,1))}incr_for(t,e,i,s,n,h,r,a,o,c,l,u){let _=[i-r/2,s-h/2];if(_[1]/=r/h,this.n){let t=l(.001*i,e*this.n_f,n)*r*this.n_amt;_[0]+=t,_[1]+=t}let p=!1;for(let f=0;f<this.num;f++){let t=yt(_,this.noises[f]),e=this.sines[f];p=p||t<e}return p?this.inside_n:u}}const Vt=[8,11,14,16];function Rt(t,e,i){return 0==t?new It(e):1==t?new At(e):2==t?new bt(e,0):3==t?new bt(e,1):6==t?new Tt(e):8==t?new Gt(e,i):9==t?new Ft(e):10==t?new kt(e):11==t?new Gt(e,i,{c:1,force_n:!0,n_f:.01}):12==t?new It(e,{n_f:.1}):14==t?new Gt(e,i,{n_f:.01}):15==t?new Ft(e,{force_n:!0}):16==t?new Gt(e,i,{force_n:!0,n_f:1,no_rot:!0}):17==t?new bt(e,1,{two_repeat:!0}):18==t?new kt(e,{proba_n:0}):void 0}function Dt(t,e,i,s){return 9==t&&9==e?.5*(i.out_n+s.out_n):9==t||15==t?i.out_n:9==e||15==e?s.out_n:10==t||13==t||18==t?i.out_n:10==e||13==e||18==t||6==e?s.out_n:void 0}function Bt(t,e,i){let s;return s=void 0!==t[i]?t[i]:void 0!==e?e[i]??void 0:void 0,s}const Wt=40,St=80,qt=50,Pt=90,zt=t=>{const e=t.rcw([1,2,3,4],[.25,.25,.15,.35]),i=1==e||2==e,s=t.rcw([2,3,4],[.35,.25,.4]),n=2===s?0:1,h=t.rcw([25,50,75],[n,1,1]),r=t.rc([[12,9],[12,14],[11,6],[15,void 0],[9,18],[9,9]]),a=t.rn(Wt,St),o=[[12,9],[12,14],[15,void 0],[9,9],[9,10],[11,6]],c=t.rb(.5),l=[c,0,c,c,0,0],u=t.rcw([...Array(o.length).keys()],[1,1,1.5,1,1.5,1]),_=o[u],p=l[u],f=t.rn(qt,Pt),g=t.rcw([3,5],[.5,.5]),m=t.rcw([1,2,3,4,5,6],[.05,0,0,.05,.8,.1]),d=1===m||4===m||6===m?0:1,v=t.rb(.5)?0:1,C=6===m?[15,void 0]:t.rcw([[10,void 0],[15,void 0]],[1,1]),w=15===C[0]?d:i?0:d,x=i?0:12,I=[[x,9],[x,8],[x,10],[8,10],[9,10],[9,9]],A=[v,v,v,v,v,1],y=t.rcw([...Array(I.length).keys()],[1,1,1,2,2,1]),M=I[y],b=A[y],T=!M.includes(8);return[[[r[0],r[1],s,0,0,h,1,!1,0],[_[0],_[1],s,1,0,a,p,!1,0],[C[0],C[1],e,2,m,f,0,!0,w],[M[0],M[1],e,2,5,f,0,T,b],[0,1,1,2,g,f,0,!0,1],[0,3,1,2,5,f,0,!0,1],[17,16,1,2,m,f,0,!0,d]],[5.5,3,5,7,1,.75,.75]]};var Xt="void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.0);\n}",Zt="uniform vec3 u_bg_c,u_c_1,u_c_2;uniform vec2 u_res;uniform float u_t,u_sc,u_g_thresh,u_g_amt,u_pxl_ratio,u_bg_g_amt;float k(float a){a=fract(a*.1031),a*=a+33.33,a*=a+a;return fract(a);}float d(vec3 a){a=fract(a*.1031),a+=dot(a,a.zyx+31.32);return fract((a.x+a.y)*a.z);}float e(float a){float b=floor(a),c=fract(a);return mix(k(b),k(b+1.),smoothstep(0.,1.,c));}mat2 o(in float a){float b=cos(a),c=sin(a);return mat2(b,-c,c,b);}void main(){vec2 c=gl_FragCoord.xy/u_res.xy;float a=mix(2.*u_pxl_ratio,8.*u_pxl_ratio,e(u_t*88.))*u_sc;vec2 b=c;b-=.5,b*=o(e(1000.+u_t*111.)*6.28),b+=.5;vec2 l=floor(b*(u_res/vec2(a,1)))/(u_res/vec2(a,1));b+=e(c.x*10.);vec2 m=floor(b*(u_res/vec2(1,a)))/(u_res/vec2(1,a));float n=d(vec3(c*1000.,u_t)),f=d(vec3(c*100.,u_t*1000.)),g=d(vec3(l*400.,u_t*1000.)),h=d(vec3(m*300.,u_t*1000.)),i=u_g_thresh;f=smoothstep(min(1.,i+2e-4),1.,f),g=smoothstep(min(1.,i+2e-4),1.,g),h=smoothstep(i,1.,h);vec3 j=mix(u_bg_c+n*u_bg_g_amt,u_c_1,(f+g)*u_g_amt);j=mix(j,u_c_2,h*u_g_amt),gl_FragColor=vec4(j,1);}",Ht="varying vec4 v_color;\n\nvoid main() {\n\tv_color = vec4(instanceColor, 1.);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * instanceMatrix * vec4(position, 1.0);\n}",Ot="varying vec4 v_color;\n\nvoid main() { \n gl_FragColor = v_color;\n}";let Kt,Yt,jt,Nt,Lt,Ut,Qt;const Jt=new URLSearchParams(window.location.search).get("aspect_ratio"),Et=Jt||16/9,$t=800,te=$t/Et,ee=window.devicePixelRatio;let ie=window.innerWidth,se=ie/Et,ne=ie/$t,he=14;const re=new class{constructor(t){this.useA=!1;let e=function(t){let e=parseInt(t.substr(0,8),16),i=parseInt(t.substr(8,8),16),s=parseInt(t.substr(16,8),16),n=parseInt(t.substr(24,8),16);return function(){e|=0,i|=0,s|=0,n|=0;let t=(e+i|0)+n|0;return n=n+1|0,e=i^i>>>9,i=s+(s<<3)|0,s=s<<21|s>>>11,s=s+t|0,(t>>>0)/4294967296}};t?(this.prngA=new e(t.substr(2,32)),this.prngB=new e(t.substr(34,32))):(this.prngA=new e(tokenData.hash.substr(2,32)),this.prngB=new e(tokenData.hash.substr(34,32)));for(let i=0;i<1e6;i+=2)this.prngA(),this.prngB();this.prng=new e(tokenData.hash),this._nextG=null,this._hasNextG=!1}r(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}rn(t,e){return t+(e-t)*this.r()}ri(t,e){return Math.floor(this.rn(t,e+1))}rb(t){return this.r()<t}rc(t){return t[this.ri(0,t.length-1)]}ra(){return this.rn(0,2*Math.PI)}rndFromList(t){const e=this.r();let i=!1,s=1;const n=t.reduce(((t,e,i)=>i%2==1?t+e:t),0)*e;let h=0;for(;!i&&s<t.length;)n-t[s]<h&&(i=t[s-1]),h+=t[s],s+=2;return i}rcw(t,e){t.length,e.length,t.length;const i=[];for(let n=0;n<e.length;n+=1)i[n]=e[n]+(i[n-1]||0);const s=i[i.length-1]*this.r();for(let n=0;n<t.length;n+=1)if(i[n]>=s)return t[n]}rg(t=0,e=1){if(this._hasNextG){this._hasNextG=!1;var i=this._nextG;return this._nextG=null,t+e*i}var s=0,n=0,h=0;do{h=(s=2*this.r()-1)*s+(n=2*this.r()-1)*n}while(h>=1||0===h);var r=Math.sqrt(-2*Math.log(h)/h);return this._nextG=n*r,this._hasNextG=!0,t+e*(s*r)}shuffle(t){let e=t.slice();for(let i=e.length-1;i>0;i--){const t=Math.floor(this.r()*(i+1)),s=e[i];e[i]=e[t],e[t]=s}return e}}(tokenData.hash),ae=new i.Object3D,oe=new i.Color,ce=function(t=Math.random){const e=xt(t),i=new Float64Array(e).map((t=>Ct[t%12*2])),s=new Float64Array(e).map((t=>Ct[t%12*2+1]));return function(t,n){let h=0,r=0,a=0;const o=(t+n)*ft,c=vt(t+o),l=vt(n+o),u=(c+l)*gt,_=t-(c-u),p=n-(l-u);let f,g;_>p?(f=1,g=0):(f=0,g=1);const m=_-f+gt,d=p-g+gt,v=_-1+2*gt,C=p-1+2*gt,w=255&c,x=255&l;let I=.5-_*_-p*p;if(I>=0){const t=w+e[x];I*=I,h=I*I*(i[t]*_+s[t]*p)}let A=.5-m*m-d*d;if(A>=0){const t=w+f+e[x+g];A*=A,r=A*A*(i[t]*m+s[t]*d)}let y=.5-v*v-C*C;if(y>=0){const t=w+1+e[x+1];y*=y,a=y*y*(i[t]*v+s[t]*C)}return 70*(h+r+a)}}(re.prng),le=function(t=Math.random){const e=xt(t),i=new Float64Array(e).map((t=>wt[t%12*3])),s=new Float64Array(e).map((t=>wt[t%12*3+1])),n=new Float64Array(e).map((t=>wt[t%12*3+2]));return function(t,h,r){let a,o,c,l;const u=(t+h+r)*mt,_=vt(t+u),p=vt(h+u),f=vt(r+u),g=(_+p+f)*dt,m=t-(_-g),d=h-(p-g),v=r-(f-g);let C,w,x,I,A,y;m>=d?d>=v?(C=1,w=0,x=0,I=1,A=1,y=0):m>=v?(C=1,w=0,x=0,I=1,A=0,y=1):(C=0,w=0,x=1,I=1,A=0,y=1):d<v?(C=0,w=0,x=1,I=0,A=1,y=1):m<v?(C=0,w=1,x=0,I=0,A=1,y=1):(C=0,w=1,x=0,I=1,A=1,y=0);const M=m-C+dt,b=d-w+dt,T=v-x+dt,G=m-I+2*dt,F=d-A+2*dt,k=v-y+2*dt,V=m-1+3*dt,R=d-1+3*dt,D=v-1+3*dt,B=255&_,W=255&p,S=255&f;let q=.6-m*m-d*d-v*v;if(q<0)a=0;else{const t=B+e[W+e[S]];q*=q,a=q*q*(i[t]*m+s[t]*d+n[t]*v)}let P=.6-M*M-b*b-T*T;if(P<0)o=0;else{const t=B+C+e[W+w+e[S+x]];P*=P,o=P*P*(i[t]*M+s[t]*b+n[t]*T)}let z=.6-G*G-F*F-k*k;if(z<0)c=0;else{const t=B+I+e[W+A+e[S+y]];z*=z,c=z*z*(i[t]*G+s[t]*F+n[t]*k)}let X=.6-V*V-R*R-D*D;if(X<0)l=0;else{const t=B+1+e[W+1+e[S+1]];X*=X,l=X*X*(i[t]*V+s[t]*R+n[t]*D)}return 32*(a+o+c+l)}}(re.prng),ue=20,_e=10,pe=5e4,fe=10,ge=500,me=/HeadlessChrome/.test(window.navigator.userAgent);let de,ve,Ce=!0,we=!0,xe=!0,Ie=new class{constructor(){this.is_started=!1,this.is_playing=!1,this.is_initialized=!1,this.vol_smoothing_factor=.1,this.rms_last=0,this.filter_smoothing_factor=.7,this.filter_last=0}selectChord(t){return 2==t||11==t||17==t?[m.root,m.major_third,m.fourth,m.major_sixth]:1==t||3==t||7==t||15==t?[m.root,m.minor_third,m.fourth,m.second]:4==t||8==t||10==t||18==t?[m.root,m.second,m.fourth,m.minor_seventh]:[m.root,m.second,m.major_third,m.major_sixth]}selectVoicing(t){return[1,1,0,0,3,-1,3,4,4,-1,1,1,0,-1,-1,2,2,2,0][t]}init(t,e,i,s,n,h,r,a,o){if(this.is_initialized)return;this.tempo=n,this.audioCtx=t,0===o&&(o=e.r());const c=100,l=p[s];this.use_panning_lfo=a;const u=60/(8*n),_=60/(4*n),g=60/(2*n),m=60/(1.33*n),v=60/(n/2),x=60/(n/12),I=60/(n/16),A=i,y=this.selectChord(A),M=this.selectVoicing(A),F=Math.min(m,2.5);this.kp_1=new b(t,c,F),this.kp_1.setVolume(-19),0==r&&10==n&&this.kp_1.setVolume(-21),2==s&&this.kp_1.setVolume(-21),this.kp_filter_hp=C(t,"highpass",300,1,0);const k=2500+1e4*n/100;this.kp_filter_lp=C(t,"lowpass",k,1,0),this.tape_echo=new G(t,e,m,0,.05,.2),this.tape_echo.setOutputGain(-9),this.tape_echo_fb_lfo=new T(t,e,v,.3,.7),this.tape_echo_fb_lfo.connect(this.tape_echo.feedback.gain),this.agc=new AudioWorkletNode(t,"agc"),this.agc.parameters.get("rms_time").setValueAtTime(10,t.currentTime),this.agc.parameters.get("target_gain_dB").setValueAtTime(-15,t.currentTime),this.limiter=t.createDynamicsCompressor(),this.limiter.knee.value=10,this.limiter.threshold.value=-9,this.limiter.ratio.value=15,this.limiter.attack.value=.001,this.limiter.release.value=.01,this.output_flanger=new K(t,5e3,d(-8),1/I,8e3),this.bit_softener=new Y(t,e,.25,-30,1/v,-40),this.output_gain=w(t,0),this.kp_mod_gain=w(t,1),this.kp_toggle_gain=w(t,1),this.kp_ramp_in_gain=w(t,0),this.kp_volume_lfo=new O(t,1/x,d(0),d(r)),this.kp_volume_lfo.setShape("sine"),this.kp_volume_lfo.connect(this.kp_mod_gain.gain);this.kp_panner=t.createStereoPanner(),a&&(this.kp_panner_lfo=new T(t,e,1/v,-.75,.75),this.kp_panner_lfo.connect(this.kp_panner.pan));let V=new Array(I/g);for(let p=0;p<V.length;++p){let t=e.ri(1,3)*e.rc(y);V[p]=this.kp_1.pitchToDelay(t*c)}this.kp_pitch_lfo=new H(t,e,1/_,I,V,.5),this.kp_pitch_lfo.connect(this.kp_1.delay.delayTime);const R=n<40?1/u:1/_;this.filter_frequencies=new Array(64);const D=f[h];for(let p=0;p<this.filter_frequencies.length;++p)this.filter_frequencies[p]=c*e.ri(D[0],D[1])*e.rc(y);switch(this.filter_seq_max=Math.max(...this.filter_frequencies),this.filter_seq_min=Math.min(...this.filter_frequencies),this.filter_lfo=new H(t,e,R,I,this.filter_frequencies,.25),s){case 0:this.sound_source=new X(t,e,c,y,M,l,n,o),this.filter_lfo.connect(this.sound_source.getFreq());break;case 1:this.sound_source=new Z(t,e,c,y,M,l,n,o),this.filter_lfo.connect(this.sound_source.getFreq());break;case 2:this.sound_source=new z(t,e,c,y,M,l,n,o),this.filter_lfo.connect(this.sound_source.getFreq())}this.sound_source.connect(this.kp_1.input),this.sound_source.connect(this.output_flanger.input),this.kp_1.connect(this.kp_filter_hp),this.kp_filter_hp.connect(this.kp_filter_lp).connect(this.kp_mod_gain).connect(this.kp_toggle_gain).connect(this.kp_ramp_in_gain).connect(this.kp_panner).connect(this.output_flanger.input),this.output_flanger.connect(this.agc),this.output_flanger.connect(this.tape_echo.input),this.tape_echo.connect(this.agc),this.agc.connect(this.limiter),this.limiter.connect(this.bit_softener.input),this.bit_softener.connect(this.output_gain),this.output_gain.connect(t.destination),this.analyzer_output_rms=t.createAnalyser(),this.limiter.connect(this.analyzer_output_rms),this.analyzer_filter_fc=t.createAnalyser(),this.filter_lfo.output.connect(this.analyzer_filter_fc),this.is_initialized=!0}start(){this.sound_source.start(),this.tape_echo_fb_lfo.start(),this.filter_lfo.start(),this.kp_volume_lfo.start(),this.kp_pitch_lfo.start(),this.use_panning_lfo&&this.kp_panner_lfo.start(),this.tape_echo.start(),this.output_flanger.start(),this.bit_softener.start()}play(t){this.is_playing=!this.is_playing,"suspended"===this.audioCtx.state&&this.audioCtx.resume(),this.is_playing?(this.is_started||(this.start(),this.is_started=!0),y(this.audioCtx,this.output_gain.gain,d(0),this.audioCtx.currentTime+t),y(this.audioCtx,this.kp_ramp_in_gain.gain,d(0),this.audioCtx.currentTime+4*t)):y(this.audioCtx,this.output_gain.gain,1e-4,this.audioCtx.currentTime+3*t)}set_volume_smoothing(t){this.vol_smoothing_factor=t}set_filter_smoothing(t){this.filter_smoothing_factor=t}set_noise_volume(t){this.sound_source.setNoiseVolume([-52,-44][t])}set_kp_panning_value(t,e){this.use_panning_lfo||y(this.audioCtx,this.kp_panner.pan,t,this.audioCtx.currentTime+.9/e)}set_flanger_frequency(t,e){this.output_flanger.setFrequencyScaled(t,.9/e)}set_amp_mod_depth(t){this.sound_source.setAmplitudeModDepth(t)}toggle_filter_lfo(t){const e=t?1:0;this.filter_lfo.setOutputRange(e)}toggle_kp(t){const e=t?1:0;this.kp_toggle_gain.gain.setValueAtTime(e,this.audioCtx.currentTime)}toggle_echo(t){const e=t?-9:-120;this.tape_echo.setOutputGain(e)}toggle_flanger(t){const e=t?d(-8):0;this.output_flanger.setIntensity(e)}toggle_distortion(t){this.bit_softener.bypass(t)}toggle_amp_mod(t){this.sound_source.toggleAmpMod(t)}getThumbnailModeFreq(t){const e=60/(8*this.tempo),i=60/(4*this.tempo),s=this.tempo<40?e:i,n=Math.floor(t/s)%this.filter_frequencies.length;return this.filter_frequencies[n]}getVolumeRMS(t=!1,e=0){let i=0;if(t)i=.15*(1-this.getThumbnailModeFreq(e)/this.filter_seq_max);else{const t=this.analyzer_output_rms.frequencyBinCount,e=new Float32Array(t);this.analyzer_output_rms.getFloatTimeDomainData(e),i=function(t){let e=0;for(let s=0;s<t.length;++s)e+=t[s]*t[s];let i=e/t.length;return Math.sqrt(i)}(e)}return this.rms_last=this.rms_last+this.vol_smoothing_factor*(i-this.rms_last),R(this.rms_last*U)}getFilterCutoff(t=!1,e=0){let i=0;if(t)i=this.getThumbnailModeFreq(e);else{const t=this.analyzer_filter_fc.frequencyBinCount,e=new Float32Array(t);this.is_playing&&(this.analyzer_filter_fc.getFloatTimeDomainData(e),i=e[t-1])}return i=(i-this.filter_seq_min)/(this.filter_seq_max-this.filter_seq_min),i=Math.max(i,0),this.filter_last=this.filter_last+this.filter_smoothing_factor*(i-this.filter_last),this.filter_last}},Ae={},ye=0;const Me=.5,be=.8;let Te,Ge,Fe,ke,Ve,Re,De,Be,We,Se,qe,Pe,ze,Xe,Ze,He,Oe,Ke,Ye=new class{constructor(t){this.op_t=t?1:0,this.rev_v=t?1:0,this.rev_start=-1,this.away_idle_start_t=-1,this.total_t=0,this.idle=!0,this.in_rev=!1,this.prev_t=0,this.reveal_duration=1}set_end_init_t(t){this.end_init_t=t}set_speed(t){this.speed=t}start_rev(){this.in_rev=!0;let t=Date.now();this.rev_start=t,this.idle&&(this.away_idle_start_t=t,this.prev_t=0)}anim_running(){return!this.idle||this.in_rev}show_text(){return this.idle||this.in_rev}tick(t=!1){if(t)return void(this.total_t=this.speed*(Date.now()-this.end_init_t)/1e3);this.op_t=B(R((Date.now()-this.end_init_t)/1e3-.1)),this.in_rev&&this.tick_rev(!this.idle);let e=0;if(this.anim_running()){let t=(Date.now()-this.away_idle_start_t)/1e3;e=(t-this.prev_t)*this.speed,this.prev_t=t}this.total_t+=e}tick_rev(t){let e=(Date.now()-this.rev_start)/1e3,i=Math.max(0,Math.min(1,e/this.reveal_duration));t&&(i=1-i),this.rev_v=B(i),!this.idle&&this.rev_v<=0&&(this.idle=!0,this.in_rev=!1),this.idle&&this.rev_v>=1&&(this.in_rev=!1,this.idle=!1)}set_reveal_duration(t){this.reveal_duration=t}}(me),je=4.7,Ne=.999,Le=.08,Ue=0,Qe=30,Je=Qe,Ee=.5,$e=.125,ti=.5,ei=.25,ii=3,si=.19,ni=1,hi=1,ri=2.5,ai=1,oi=!1,ci=!1,li=1.3,ui=.92,_i=.1,pi=2.75;const fi=new(window.AudioContext||window.webkitAudioContext);function gi(){let t=window.innerWidth,e=window.innerHeight;ie=~~(e*Et>=t?t:e*Et),se=~~(t/Et>=e?e:t/Et),ne=ie/$t,Ut.material.uniforms.u_sc.value=ne/1.8,Ut.material.uniforms.u_res.value=new i.Vector2(ie*ee,se*ee),Ut.material.uniforms.u_pxl_ratio.value=ee,jt.setPixelRatio(ee),jt.setSize(ie,se)}function mi(){setTimeout((function(){requestAnimationFrame(mi)}),1e3/_e),Ie.is_playing?(Ae.output_volume=F(0,Ie.getVolumeRMS(),Ye.rev_v),Ae.filter_fc=F(.9,Ie.getFilterCutoff(),Ye.rev_v)):(Ae.output_volume=F(0,R(Ie.rms_last*U),Ye.rev_v),Ae.filter_fc=F(.9,Ie.filter_last,Ye.rev_v)),we||(Ae.filter_fc=1==Ue?.1:.2),Ye.tick(me);let t=Ye.total_t;me&&(Ae.filter_fc=Ie.getFilterCutoff(!0,t),Ae.output_volume=Ie.getVolumeRMS(!0,t));let e=Ge.sdf?ei:.25,i=Ge.sdf?ii:1;if(de=k(Ae.filter_fc,0,1,e,i),Te&&(e=Te.sdf?ei:.25,i=Te.sdf?ii:1,ve=k(Ae.filter_fc,0,1,e,i)),!De&&Xe.length>=2){let t=Xe.slice(),e=re.ri(0,t.length-1);Ut.material.uniforms.u_c_1.value=t[e].main(),t.splice(e,1),Ut.material.uniforms.u_c_2.value=re.rc(t).main()}Ge.tick_n(t,$t,te,$e,ti,ce,le),Te&&Te.tick_n(t,$t,te,$e,ti,ce,le,-1);let s=Dt(He[0],He[1],Ge,Te);if(Ie.is_initialized&&Ie.set_kp_panning_value(s,_e),Fe.update(t),Ie.is_initialized&&Ie.set_amp_mod_depth(Math.abs(Fe.amt_mult)),Oe=W(t,7,5),0==Ue){let t=Qe>30?Qe<60?-45:-70:50,e=10;Je=Math.min(85,Math.max(e,Qe+t*(1-Oe)*de))}else Je=Qe;Ie.is_initialized&&Ie.set_flanger_frequency(Oe,_e);let n=k(pi*Ae.output_volume,0,1,1,-1.25);Re=F(1.4*je,je+n,Ye.rev_v),he=F(10,14,Ye.rev_v),Ut.material.uniforms.u_g_thresh.value=F(.9993,Ne,Ye.rev_v),Ut.material.uniforms.u_t.value=(Date.now()-Ye.end_init_t)/1e3,Ut.material.uniforms.u_g_amt.value=F(Me,be,Ye.rev_v),function(t){if(Nt){let e=0,i=0,s=0,n=0,h=0,r=!1,a=0,o=0,c=F(.71,1,Ye.rev_v),l=F(-2,li,Ye.op_t);for(l=F(l,0,Ye.rev_v);i<=$t;){let u=Fe.shaped_offset(i,$t);s=u,a=di(n,h,i,s,t);let _=F(u-1,te+u,Ye.op_t);for(;s<=_&&!(e>=pe);){let u,_,p;if(oi&&(u=Bt(Ge,Te,"s_depth")),ci&&(_=Bt(Ge,Te,"c_depth")),De)re.r()<(r?Ee:.005)?(p=Pe,r=!0):(p=Xe[0],r=!1);else{let t=vi(a,Xe.length);p=Xe[t]}if(p=Ze?p.var(re):p.main(),oe.copy(p),ci&&void 0!==ze){let t=k(_,0,1,0,.25),e=_?Math.min(1,re.rg(_,t)):1;oe.lerp(ze,_?e*(1-Ae.filter_fc):0)}let f=(i-$t/2)*ne+ie/2,g=(s-te/2)*ne+se/2;f=k(f,0,ie,Kt.left+Re,Kt.right-Re),g=k(g,0,se,Kt.bottom+Re,Kt.top-Re),ae.position.set(f,g+l,-1);let m=1,d=k(1-u,0,1,.25,0),v=oi&&void 0!==u?Math.min(1,re.rg(k(1-u,0,1,Ke,1),d)):1;if(2!=Ue){let t;if(ai){t=V(.25,Ve,k(a,si,ii,Ve,.25)),t*=re.rn(.8,1.2)}else t=re.rn(.25,Ve);m=Je*t*c*v}let C=!1;if(0==Ue)ae.scale.set(m,m,1);else if(1==Ue)if(C=re.r()>F(.9995,1,1-Oe)&&o<fe,C){let t=.5,e=Math.max(0,re.rg(t,1)),i=Math.max(0,re.rg(t,1)),s=k(Je,Wt,St,12,8),n=re.rg(s,5);e<.25?i*=n:i<.25&&(e*=n),ae.scale.set(m*e,m*i,1)}else ae.scale.set(m,m,1);else if(2==Ue){let e=ke.parallel()?.95:.8,r=ke.parallel()?1:Oe;e=F(e/1.1,e,Ye.rev_v);let o,l=re.rg(F(Be,3,r),F(.1,e,r));if(0==ni){o=V(hi,ri,k(a,si,ii,ri,hi))}else 1==ni&&(o=re.rn(hi,ri));ae.scale.set(v*c*Je/l,o,1);let u=ke.rotation_at_time(n,h,i,s,t,a,$e,ii,le);ae.rotation.set(0,0,u)}ae.updateMatrix(),C?(Lt.setMatrixAt(o,ae.matrix),Lt.setColorAt(o,oe),o++):(Nt.setMatrixAt(e,ae.matrix),Nt.setColorAt(e,oe)),h++,a=di(n,h,i,s,t),s+=a*he,e++}n++,h=0,a=di(n,h,i,s,t),i+=a*he}Nt.instanceMatrix.needsUpdate=!0,Nt.instanceColor&&(Nt.instanceColor.needsUpdate=!0),Nt.count=e,1==Ue&&(Lt.instanceMatrix.needsUpdate=!0,Lt.instanceColor&&(Lt.instanceColor.needsUpdate=!0),Lt.count=o)}}(t),Ye.show_text()&&!me?(Qt.mesh.parent!==Yt&&Yt.add(Qt.mesh),Qt.render(re,ae,Se,qe,Ue,Ye,ge)):Qt.mesh.parent===Yt&&Yt.remove(Qt.mesh),jt.render(Yt,Kt)}function di(t,e,i,s,n){let h=Ge.incr_for(t,e,i,s,n,te,$t,$e,ii,ce,le,de);if(Te){let r=Te.incr_for(t,e,i,s,n,te,$t,$e,ii,ce,le,ve);h=Math.min(h,r)}return h=Math.max(si,Math.floor(8*h)/8),h}function vi(t,e){if(1==e)return 0;let i=t;i*=8;let s=i%e;return Math.floor(s)}function Ci(){"suspended"!==fi.state&&"interrupted"!==fi.state||fi.resume(),Ye.in_rev||(Ye.start_rev(),Ie.play(ye))}function wi(t){"Space"===t.code&&Ci(),"Digit1"===t.code&&(Ce=!Ce,Ie.toggle_amp_mod(Ce)),"Digit2"===t.code&&(we=!we,Ie.toggle_filter_lfo(we)),"Digit3"===t.code&&(xe=!xe,Ie.toggle_kp(xe),Ie.toggle_flanger(xe),Ie.toggle_echo(xe)),"Digit0"===t.code&&(we=!1,xe=!1,Ce=!1,Ie.toggle_amp_mod(Ce),Ie.toggle_filter_lfo(we),Ie.toggle_kp(xe),Ie.toggle_flanger(xe),Ie.toggle_echo(xe))}fi.suspend(),fi.audioWorklet.addModule("data:application/javascript;base64,Y2xhc3MgQUdDIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKICAgIHN0YXRpYyBnZXQgcGFyYW1ldGVyRGVzY3JpcHRvcnMoKSB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgeyBuYW1lOiAncm1zX3RpbWUnLCBkZWZhdWx0VmFsdWU6IDIwLCBtaW5WYWx1ZTogMC4wMSwgbWF4VmFsdWU6IDMwIH0sCiAgICAgICAgICAgIHsgbmFtZTogJ3RhcmdldF9nYWluX2RCJywgZGVmYXVsdFZhbHVlOiAtMTIsIG1pblZhbHVlOiAtMzYsIG1heFZhbHVlOiAwIH0sCiAgICAgICAgXTsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICBzdXBlcigpOwogICAgICAgIHRoaXMuc3FfbGFzdCA9IDA7CiAgICB9CgogICAgcHJvY2VzcyhpbnB1dHMsIG91dHB1dHMsIHBhcmFtZXRlcnMpIHsKICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXTsKICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzWzBdOwoKICAgICAgICBjb25zdCBybXNfdGltZSA9IHBhcmFtZXRlcnMucm1zX3RpbWVbMF07CiAgICAgICAgY29uc3QgdGFyZ2V0X2dhaW5fbGluID0gTWF0aC5wb3coMTAsIHBhcmFtZXRlcnMudGFyZ2V0X2dhaW5fZEJbMF0gLyAyMCk7IC8vIHJlcGxpY2F0aW5nIGRiMm1hZygpIGJlY2F1c2UgY2FuJ3QgaW1wb3J0IGluIHdvcmtsZXQgZmlsZXMKICAgICAgICBjb25zdCB0YXUgPSAocm1zX3RpbWUgKiBzYW1wbGVSYXRlKSAvIE1hdGgubG9nKDAuMDAxKTsKICAgICAgICBjb25zdCBybXNfYWxwaGEgPSBNYXRoLmV4cCgxLjAgLyB0YXUpOwogICAgICAg
!function(t){"use strict";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const i in t)if("default"!==i){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>t[i]})}return e.default=t,Object.freeze(e)}const i=e(THREE),s=(t,e)=>1==t&&e?.5:.25,n=[2,1,1,1,1,1,1,1,1,1,1,1,1,1,1],h=[1,2,2,2,1,2,1,1,1,2],r=[.2,.2,.15,.2,.25],a=[.45,.25,.15,.1,.05],o=[.45,0,.25,0,.1],c=.5,l=[.75,.5,.25],u=[.5,.5,.5],_=[.5,.3,.2],p=[25,25,100],f=[[0,6],[0,4],[2,3]],g=[0,-6,-12,-18,-24];const m={root:1,second:Math.pow(2,2/12),minor_third:Math.pow(2,.25),major_third:Math.pow(2,4/12),fourth:Math.pow(2,5/12),fifth:Math.pow(2,7/12),minor_sixth:Math.pow(2,8/12),major_sixth:Math.pow(2,.75),minor_seventh:Math.pow(2,10/12),major_seventh:Math.pow(2,11/12),octave:2};function d(t){return Math.pow(10,t/20)}function v(t,e,i){return new AudioBuffer({numberOfChannels:t,length:e,sampleRate:i})}function C(t,e,i,s,n){const h=t.createBiquadFilter();return h.type=e,h.frequency.value=i,h.Q.value=s,"lowshelf"!==e&&"highshelf"!==e||(h.gain.value=n),h}function w(t,e=1){const i=t.createGain();return i.gain.value=e,i}function x(t,e,i,s){const n=t.createOscillator();return n.type=e,n.frequency.value=i,n.detune.value=s,n}function I(t,e){const i=t.createStereoPanner();return i.pan.value=e,i}function A(t,e,i,s){const n=t.createBufferSource();return n.buffer=e,n.playbackRate.value=i,n.loop=s,n}function y(t,e,i,s){if(navigator.userAgent.includes("Firefox"))M(t,e,i,s);else{const n=t.currentTime,h=s-n;if(h<=0)throw new Error("linearRampToValueAtTime: Duration is negative");e.cancelScheduledValues(n);const r=e.value;e.setValueCurveAtTime([r,i],n,h)}}function M(t,e,i,s){const n=t.currentTime,h=s-n;if(h<=0)throw new Error("exponentialRampToValueAtTime: Duration is negative");e.cancelScheduledValues(n),e.setTargetAtTime(i,n,h/2.5)}class b{constructor(t,e,i){this.ctx=t,this.pitch_hz=e,this.decay_time=i,this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(),this.setPitch(e),this.feedback=t.createGain(),this.setDecayTime(i),this.fb_filter=C(t,"allpass",e,1,0),this.input.connect(this.delay).connect(this.output),this.delay.connect(this.feedback).connect(this.fb_filter).connect(this.delay)}pitchToDelay(t){return 1/t}setPitch(t,e=.01){this.delay_time=this.pitchToDelay(t),this.delay.delayTime.setValueAtTime(this.delay_time,this.ctx.currentTime+e)}setDecayTime(t){this.decay_time=t;const e=Math.exp(Math.log(.001)*this.delay_time/t);y(this.ctx,this.feedback.gain,e,this.ctx.currentTime+.01)}setVolume(t){y(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}}class T{constructor(t,e,i,s=-1,n=1){this.ctx=t,this.R=e,this.rate_time=1/i,this.timerID,this.sla=5*this.rate_time,this.tla=1e3*this.rate_time,this.min_val=s,this.max_val=n,this.next_value=0,this.next_time=0,this.output=t.createConstantSource(),this.output.offset.value=s,this.running=!1}step(t,e,i){return(i-e)*t.r()+e}run(){for(;this.next_time<this.ctx.currentTime+this.sla;)this.output.offset.setTargetAtTime(this.next_value,this.next_time,.5*this.rate_time),this.next_time+=this.rate_time,this.next_value=this.step(this.R,this.min_val,this.max_val)}start(){this.output.start(),this.running||(clearTimeout(this.timerID),this.running=!0,this.next_time=this.ctx.currentTime,this.next_value=this.step(this.R,this.min_val,this.max_val),this.run(),this.timerID=setInterval((()=>{this.run()}),this.tla))}stop(){this.running=!1,this.output.offset.cancelScheduledValues(this.ctx.currentTime),clearTimeout(this.timerID),this.output.stop()}connect(t){this.output.connect(t)}}class G{constructor(t,e,i,s=.3,n=.2,h=.1,r=-1,a=-2){this.ctx=t,this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(i+.1),this.feedback=w(t,s),this.eq_low=C(t,"lowshelf",500,1,r),this.eq_high=C(t,"highshelf",2e3,1,a),this.saturator=t.createWaveShaper(),this.saturator.curve=this.HTDC(0,1.5),this.saturator.oversample="4x",this.diffuser=C(t,"allpass",500,1,0),this.input.connect(this.eq_low).connect(this.eq_high).connect(this.saturator).connect(this.diffuser).connect(this.delay),this.delay.connect(this.feedback),this.feedback.connect(this.eq_low),this.delay.connect(this.output),this.pan_left=I(t,-1),this.pan_right=I(t,1),this.wl=C(t,"allpass",1e3,1,0),this.wr=C(t,"allpass",2e3,1,0),this.output.connect(this.wl).connect(this.pan_left),this.output.connect(this.wr).connect(this.pan_right);const o=10*n,c=.04*h;this.dlm=new T(t,e,o,i,i+c),this.dlm.connect(this.delay.delayTime)}setOutputGain(t){M(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.001)}HTDC(t=0,e=3,i=512){const s=new Float32Array(i);let n=Math.pow(10,t/20),h=Math.pow(10,e/20);for(let r=0;r<i;r++){const t=2*r/i-1;s[r]=n*Math.tanh(h*t)}return s}connect(t){this.pan_left.connect(t),this.pan_right.connect(t)}start(){this.dlm.start()}}const F=(t,e,i)=>t*(1-i)+e*i,k=(t,e,i,s,n)=>{return F(s,n,(t-(h=e))/(i-h));var h},V=(t,e,i)=>Math.max(Math.min(i,e),t),R=t=>V(0,1,t),D=(t,e)=>t%e/e,B=t=>1-Math.pow(1-t,4),W=(t,e,i=3)=>{const s=D(t,e),n=Math.floor(t/e%2),h=s+n-2*s*n;return 1-Math.pow(Math.abs(h),i)};class S{constructor(t,e,i,s,n=0,h=.01){if(n<0)throw new Error("Invalid chord variation value!");this.ctx=t,this.current_variation=n,this.transition_time=h,this.chn=[m.root,m.major_third,m.fourth,m.major_sixth];const r=new Float32Array(4),a=new Float32Array(4);r[0]=0,a[0]=0,r[1]=1,a[1]=0,r[2]=d(-12),a[2]=0,r[3]=d(-16),a[3]=0;const o=this.ctx.createPeriodicWave(r,a);t.currentTime,this.v1=x(this.ctx,"sine",e,10),this.v1.setPeriodicWave(o),this.v2=x(this.ctx,"sine",e,5),this.v2.setPeriodicWave(o),this.v3=x(this.ctx,"sine",e,1),this.v3.setPeriodicWave(o),this.v4=x(this.ctx,"sine",e,7),this.v4.setPeriodicWave(o),this.filt=C(this.ctx,"highpass",i,1,0),this.out=w(this.ctx,1),this.v1_pan=I(this.ctx,0),this.v2_pan=I(this.ctx,0),this.v3_pan=I(this.ctx,0),this.v4_pan=I(this.ctx,0),this.setWidth(.35),this.v1.connect(this.v1_pan).connect(this.filt),this.v2.connect(this.v2_pan).connect(this.filt),this.v3.connect(this.v3_pan).connect(this.filt),this.v4.connect(this.v4_pan).connect(this.filt),this.filt.connect(this.out),this.setChord(e,n)}setWF(t){this.v1.setPeriodicWave(t),this.v2.setPeriodicWave(t),this.v3.setPeriodicWave(t),this.v4.setPeriodicWave(t)}setWT(t){this.v1.type=t,this.v2.type=t,this.v3.type=t,this.v4.type=t}setOV(t){y(this.ctx,this.out.gain,d(t),this.ctx.currentTime+.01)}setFcQ(t,e=.25){y(this.ctx,this.filt.frequency,t,this.ctx.currentTime+.01),y(this.ctx,this.filt.Q,e,this.ctx.currentTime+.01)}setFilterType(t){this.filt.type=t}setChordNotes(t){4==t.length&&(this.chn=t)}setChord(t,e){if(e<0||t<20)throw new Error("Invalid chord variation value!");this.current_variation=e;const i=Math.floor(e/4)+1;e%=4;const s=[0,1,1,1],n=t*i*this.chn[e],h=t*(i+s[1%(e+1)])*this.chn[(e+1)%4],r=t*(i+s[2%(e+1)])*this.chn[(e+2)%4],a=t*(i+s[3%(e+1)])*this.chn[(e+3)%4],o=this.ctx.currentTime;this.v1.frequency.cancelScheduledValues(o),this.v2.frequency.cancelScheduledValues(o),this.v3.frequency.cancelScheduledValues(o),this.v4.frequency.cancelScheduledValues(o),y(this.ctx,this.v1.frequency,n,o+this.transition_time),y(this.ctx,this.v2.frequency,h,o+this.transition_time),y(this.ctx,this.v3.frequency,r,o+this.transition_time),y(this.ctx,this.v4.frequency,a,o+this.transition_time)}start(){this.v1.start(),this.v2.start(),this.v3.start(),this.v4.start()}setWidth(t){let e=-t,i=t,s=2*t/4;y(this.ctx,this.v1_pan.pan,e,this.ctx.currentTime+.01),y(this.ctx,this.v2_pan.pan,e+s,this.ctx.currentTime+.01),y(this.ctx,this.v3_pan.pan,e+2*s,this.ctx.currentTime+.01),y(this.ctx,this.v4_pan.pan,i,this.ctx.currentTime+.01)}}class q{CreateNoiseSource(t){const e=2*t.sampleRate,i=v(1,e,t.sampleRate),s=i.getChannelData(0);for(let n=0;n<e;n++)s[n]=2*Math.random()-1;return i}constructor(t){this.ctx=t,this.nbf=t.createBufferSource(),this.filter=t.createBiquadFilter(),this.filter.type="lowpass",this.filter.frequency.setValueAtTime(t.sampleRate/2,t.currentTime),this.nbf.buffer=this.CreateNoiseSource(t),this.nbf.loop=!0,this.output=t.createGain(),this.nbf.connect(this.filter).connect(this.output)}setFcQ(t,e=1){y(this.ctx,this.filter.frequency,t,this.ctx.currentTime+.01),y(this.ctx,this.filter.Q,e,this.ctx.currentTime+.01)}setFilterType(t){this.filter.type=t}setPlaybackRate(t){t>1&&(t=1),this.nbf.playbackRate.setValueAtTime(t,this.ctx.currentTime)}setOutputGain(t){y(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}start(){this.nbf.start()}stop(){this.nbf.stop()}}class P{constructor(t,e,i=800,s=-14,n=2400){this.noise=new q(t),this.noise.setOutputGain(-40),this.noise.setFcQ(i,1),this.noise.setFilterType("highpass");const h=C(t,"highshelf",6e3,1,s),r=C(t,"notch",n,.45,0);this.noise.output.connect(h).connect(r).connect(e)}start(){this.noise.start()}setOutputGain(t){this.noise.setOutputGain(t)}}class z{CreatePulseLoop(t,e,i,s=0,n=0,h=1){const r=1/e*t.sampleRate,a=v(1,r,t.sampleRate),o=a.getChannelData(0),c=Math.floor(r*i),l=Math.floor(s*r);for(let u=0;u<c;u++)o[u]=h,u>c-l&&(o[u]=h-(u-(c-l))/l*(h-n));for(let u=c;u<r;++u)o[u]=n,u>r-l&&(o[u]=(u-(r-l))/l*(h-n)+n);return a}constructor(t,e,i,s,n,h,r,a){this.ctx=t;const o=Math.floor(-13*a-3);this.min_scale=(1-d(-3))/(1-d(o)),this.ch=new S(t,i,0,10,0),this.ch.setOV(-18),this.ch.setFcQ(h,6),this.ch.setFilterType("bandpass"),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=1/(60/(8*r));this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0,this.pulse_lfo=A(t,this.CreatePulseLoop(t,c,.9,.0015,d(o),1),1,!0),this.pulse_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=t.createGain(),this.fade_in_gain=w(t,1e-4),this.noise=new P(t,this.am),this.ch.out.connect(this.am),this.am.connect(this.output_gain).connect(this.fade_in_gain)}connect(t){this.fade_in_gain.connect(t)}start(){this.ch.start(),this.noise.start(),this.pulse_lfo.start(),this.am_o.start(),this.fade_in_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+.5)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class X{CreateCircleLFO(t,e,i=0,s=1){const n=1/e*t.sampleRate,h=v(1,n,t.sampleRate),r=h.getChannelData(0),a=s-i;for(let o=0;o<n;o++)r[o]=i+a/2*(1+Math.sin(2*Math.PI*(o/n)));return h}constructor(t,e,i,s,n,h,r,a){this.ctx=t;const o=Math.floor(-12*a-2);this.min_scale=(1-d(-2))/(1-d(o)),this.ch=new S(this.ctx,i,0,10,0),this.ch.setOV(-24),this.ch.setFcQ(h,2),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=r<40?1/(60/(4*r)):1/(60/(8*r));this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0,this.ch_amp_mod_lfo=A(t,this.CreateCircleLFO(t,c,d(o),d(0)),1,!0),this.ch_amp_mod_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=w(this.ctx,1e-4),this.noise=new P(t,this.am),this.ch.out.connect(this.am).connect(this.output_gain)}connect(t){this.output_gain.connect(t)}start(){this.ch.start(),this.ch_amp_mod_lfo.start(),this.noise.start(),this.am_o.start(),this.output_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+1)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class Z{CreateRingsLFO(t,e,i=0,s=1){const n=1/e*t.sampleRate,h=4*n,r=v(1,h,t.sampleRate),a=r.getChannelData(0),o=s-i;for(let c=0;c<h;c++)a[c]=i+o*Math.sin(Math.PI*(c/h))*Math.abs(Math.sin(Math.PI*c/n));return r}constructor(t,e,i,s,n,h,r,a){this.ctx=t,this.default_noise_gain_dB=-12;const o=Math.floor(-16*a-2);this.min_scale=(1-d(-2))/(1-d(o)),this.ch=new S(t,i,0,10,0),this.ch.setOV(-21),this.ch.setFcQ(h,2),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=new Float32Array(7),l=new Float32Array(7);c[0]=0,l[0]=0;for(let p=1;p<7;++p)c[p]=1/(p*p),l[p]=0;const u=t.createPeriodicWave(c,l);this.ch.setWF(u),this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0;const _=r<40?1/(60/(8*r)):1/(60/(4*r));this.wave_lfo=A(t,this.CreateRingsLFO(t,_,d(o),d(0)),1,!0),this.wave_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=t.createGain(),this.output_gain.gain.value=1e-4,this.noise=new P(t,this.am),this.ch.out.connect(this.am).connect(this.output_gain)}connect(t){this.output_gain.connect(t)}start(){this.ch.start(),this.wave_lfo.start(),this.noise.start(),this.am_o.start(),this.output_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+1)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class H{CreateCVLoop(t,e,i,s,n,h){const r=t.sampleRate*s,a=v(1,r,t.sampleRate),o=1/i*t.sampleRate;let c=0,l=0,u=n[l];const _=a.getChannelData(0);for(let p=0;p<r;p++)c>=o&&e.r()>h&&(l++,l>=n.length&&(l=0),u=n[l],c=0),_[p]=u,c++;return a}constructor(t,e,i,s,n,h){this.ctx=t,this.cv_loop=A(t,this.CreateCVLoop(t,e,i,s,n,h),1,!0),this.output=w(t,1),this.cv_loop.connect(this.output)}setOutputRange(t){y(this.ctx,this.output.gain,t,this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}start(){this.cv_loop.start()}stop(){this.cv_loop.stop()}}class O{constructor(t,e,i,s){this.ctx=t,this.lfo=t.createOscillator(),this.gain=t.createGain(),this.offset=t.createConstantSource(),this.output=w(t,0),this.setRate(e),this.setRange(i,s),this.setShape("sine"),this.lfo.connect(this.gain).connect(this.output),this.offset.connect(this.output)}setShape(t){this.lfo.type=t}setRate(t,e=.01){y(this.ctx,this.lfo.frequency,t,this.ctx.currentTime+e)}setRange(t,e){let i=e-t,s=i/2+t;this.gain.gain.setValueAtTime(i/2,this.ctx.currentTime+.01),this.offset.offset.setValueAtTime(s,this.ctx.currentTime+.01)}start(){this.offset.start(),this.lfo.start(),y(this.ctx,this.output.gain,1,this.ctx.currentTime+.01)}stop(){y(this.ctx,this.output.gain,0,this.ctx.currentTime+.01),this.offset.stop(),this.lfo.stop()}connect(t){t.setValueAtTime(0,this.ctx.currentTime+.01),this.output.connect(t)}}class K{constructor(t,e,i,s,n){this.ctx=t,this.fc_hz=e,this.depth=n;const h=1/e;this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(),this.delay.delayTime.value=h,this.delay_gain=w(t,-i),this.input.connect(this.output),this.input.connect(this.delay).connect(this.delay_gain).connect(this.output)}connect(t){this.output.connect(t)}start(){}setIntensity(t){y(this.ctx,this.delay_gain.gain,-t,this.ctx.currentTime+.01)}setFrequencyScaled(t,e){const i=1/(this.fc_hz-this.depth/2),s=1/(this.fc_hz+this.depth/2),n=k(t,0,1,i,s);y(this.ctx,this.delay.delayTime,n,this.ctx.currentTime+e)}}class Y{constructor(t,e,i,s,n,h){this.ctx=t,this.input=t.createGain(),this.output=t.createGain(),this.noise=new q(this.ctx);const r=w(t,d(s+h));this.gain=t.createGain(),this.noise.setPlaybackRate(i),this.noise.connect(r),r.connect(this.gain.gain),this.wobble_lfo=new T(this.ctx,e,n,d(s+h),d(s)),this.wobble_ramp_gain=w(t,0),this.wobble_lfo.output.connect(this.wobble_ramp_gain).connect(r.gain),this.input.connect(this.gain).connect(this.output)}connect(t){this.output.connect(t)}start(){this.wobble_lfo.start(!0,this.ctx.currentTime+3),this.noise.start(),y(this.ctx,this.wobble_ramp_gain.gain,1,this.ctx.currentTime+10)}bypass(t){t?(this.input.disconnect(),this.input.connect(this.gain).connect(this.output)):(this.input.disconnect(),this.input.connect(this.output))}}const j=[20,28,30,32,35,37,40,42,45,48,50,55,60,65,70,75,80,90],N=j,L=[10,20,28,30,32,35,37,40,42,45,48,50,55,60,65,70],U=2;class Q{constructor(t,e,i,s={}){this.R=t,this.set_type(i);let n=0===i?0:V(25,85,t.rg(55,20));3!==i&&4!==i||(n=85);let h=1==i?[1,5]:[2,6];s.f&&s.f<=h[1]?this.f=s.f:this.f=1==i?t.rcw([1,2,3,4,5],a):2==i?t.rcw([2,3,4,5,6],o):t.ri(3,6);let r=1;if(i>=3){if(this.r_vals=[],3==i){let e=-1;for(let i=0;i<this.f;i++){let i=t.r();for(;Math.abs(i-e)<.1;)i=t.r();this.r_vals.push(i),e=i}}else if(4==i){const e=t.rb(.5),i=t.r()*Math.PI;for(let t=0;t<this.f;t++){let s=.5;s=e?Math.abs(Math.sin(.5*t+i)):Math.abs(Math.sin(i+t*Math.PI/(2*(this.f-1)))),this.r_vals.push(s)}}r=Math.max(...this.r_vals.map((t=>Math.abs(2*(t-.5)))))}this.set_amt(n,r),this.add_r=t.rb(.25),this.add_r&&(this.r_amt=t.rn(.05,.15))}set_r_amt(t){this.r_amt=t}set_type(t){this.type=t}set_amt(t,e=1){this.amt_mult=1,this.amt=t,this.audio_amt=k(t*e,0,85,0,1)}update(t){if(0!==this.type){const i=.01*t,s=2*i-Math.cos(i);this.amt_mult=Math.sin(2*Math.PI*s+Math.PI/2),this.type>=3&&(this.flip=(e=0,Math.sin(Math.PI*s+Math.PI/4)<e?0:1))}var e}shaped_offset(t,e){t=Math.min(t,e-.001);let i,s=e/this.f;if(0==this.type)i=.5;else if(1==this.type)i=D(t,s);else if(2==this.type)i=((t,e)=>Math.floor(t/e)%2==0?0:1)(t,s);else if(this.type>=3){let n=this.flip?e-t:t,h=V(0,this.r_vals.length-1,Math.floor(n/s));i=this.r_vals[h]}else i=.5;this.add_r&&(i+=this.R.rn(-.5,.5)*this.r_amt);const n=1.1*this.amt*this.amt_mult*.5;return k(i,0,1,-n,n)}}class J{constructor(t,e){this.type=e,2==e?this.f=t.rc([.05,.1]):3==e?this.f=.05:4==e?this.angle=0:5==e&&(this.f=t.rn(.002,.01))}parallel(){return 1==this.type||4==this.type}max_size(){return this.parallel()?50:100}rotation_at_time(t,e,i,s,n,h,r,a,o){let c,l=this.type;return 1==l?c=n:2==l?c=n+t*this.f:3==l?c=n+e*this.f:4==l?c=this.angle:5==l?c=o(i*this.f,s*this.f,n):6==l&&(c=k(h,r,a,0,2*Math.PI)),c}}const E=(t,e,i,s=0,n=0)=>{let h={};return e.getHSL(h),h.h+=t.rn(-i,i),h.s+=t.rn(-s,s),h.l+=t.rn(-n,n),h};class ${constructor(t,e,s,n=0,h=0){this.main_color=e;let r=[];for(let a=0;a<25;a++){let a=E(t,e,s,n,h),o=new i.Color;o.setHSL(a.h,a.s,a.l),r.push(o)}this.vars=r}main(){return this.main_color}var(t){return t.rc(this.vars)}}const tt=[[2237476,16777215,14500656,16767186,16747373,16760757],[2107705,4900043,12044499,13479865,15791866,13558253],[1182736,16459325,16763639,16777215,1785744,16763639],[1251613,6414253,16508862,15644129,16776685],[5603839,16643839,16751067,15577599,11854335,14545407],[],[3157945,15329769,16733696,9621247,16745861,9621247],[15159915,16777215,10937087,16768767,16757247,16768767],[6992294,15269885,15460820,16765387,16770272,16770272],[],[15365984,16768200,11524588,14087391,14087391,14087391],[1645334,8761296,16317439,11187905,13487816,16317439],[2237476,2993368,16083329,16759692,16306892,15398911],[],[],[18798,12316404,54251,14742515,16569828,16575217],[0,16768201,16750658,16734726,10562304,16768201],[398871,16764143,7330559,16643837,7336424,16771576],[6713740,14014950,16775672,14873087,16770019,16770019]],et=[1,0,1,0,1,1,3,3,0,1,2,0,1,1,2,2,1,3,1],it=[0,1,3,4,11,12,15,16,17,18],st=[0,1,2,3,4,6,7,8,10,11,12,15,16,17,18],nt=[4,7,8,10,14],ht=[0,1,11,16,17],rt=[4,7,8,9,10,13],at=[.9994,.9991],ot=[.999,.9985];class ct{constructor(t,e){this.idx=e<=2?t.rcw(st,n):t.rcw(it,h),this.colors=tt[this.idx]}h_idx(){return et[this.idx]}h_range(){return nt.includes(this.idx)?2:ht.includes(this.idx)?.5:1}n_thresh(t){return rt.includes(this.idx)?ot[t]:at[t]}}const lt=[[1.055,-7.041],[1.055,-6.036],[1.055,-5.046],[1.055,-4.037],[1.055,-3.049],[1.055,-2.038],[1.055,-1.04],[1.055,-.045],[1.724,-.285],[1.724,-1.284],[1.724,-2.291],[2.351,-2.661],[3.341,-2.661],[4.313,-2.86],[5.095,-3.477],[5.477,-4.382],[5.466,-5.381],[5.047,-6.291],[4.264,-6.868],[3.285,-7.046],[2.275,-7.046],[1.279,-7.046],[1.728,-6.45],[2.729,-6.45],[3.723,-6.384],[4.543,-5.864],[4.838,-4.924],[4.616,-3.952],[3.845,-3.358],[2.861,-3.257],[1.855,-3.257],[1.724,-4.129],[1.724,-5.114],[1.724,-6.132],[11.611,-.605],[10.628,-.605],[9.624,-.605],[8.623,-.605],[8.188,-1.177],[8.188,-2.165],[8.188,-3.169],[8.188,-4.165],[8.188,-5.166],[8.188,-6.177],[8.06,-7.046],[7.524,-6.584],[7.524,-5.586],[7.524,-4.582],[7.524,-3.585],[7.524,-2.584],[7.524,-1.581],[7.524,-.577],[7.932,0],[8.934,0],[9.943,0],[10.945,0],[11.621,-.317],[17.43,0],[18.006,-.303],[17.695,-1.243],[17.383,-2.191],[17.066,-3.152],[16.753,-4.099],[16.441,-5.046],[16.124,-6.006],[15.814,-6.946],[15.05,-6.811],[14.738,-5.867],[14.423,-4.913],[14.111,-3.966],[13.795,-3.009],[13.488,-2.076],[13.171,-1.116],[12.86,-.174],[13.532,-.142],[13.831,-1.079],[14.138,-2.042],[15.041,-2.158],[16.048,-2.158],[16.829,-1.858],[17.134,-.903],[15.454,-6.172],[15.758,-5.233],[16.063,-4.272],[16.367,-3.318],[16.17,-2.734],[15.174,-2.734],[14.414,-2.919],[14.714,-3.86],[15.017,-4.813],[15.324,-5.778],[21.968,-.009],[21.968,-.998],[21.968,-1.998],[21.968,-2.994],[22.456,-3.866],[22.964,-4.72],[23.477,-5.58],[23.989,-6.439],[24.056,-7.046],[23.317,-6.584],[22.815,-5.715],[22.315,-4.85],[21.816,-3.986],[21.29,-4.274],[20.787,-5.143],[20.284,-6.014],[19.791,-6.867],[18.936,-7.02],[19.45,-6.158],[19.959,-5.304],[20.47,-4.446],[20.982,-3.586],[21.304,-2.673],[21.304,-1.666],[21.304,-.661],[21.636,0]],ut={x:1.0546875,y:-7.0458984375,h:7.0458984375,w:23.2958984375,advance:1.0546875},_t=.08;class pt{constructor(t,e){this.mesh=t,this.cam=e;let i=lt,s=ut,n=[s.w/2,-s.h/2];this.text_pos=[],this.text_rot=[];let h=0,r=0;for(let a=0;a<i.length;a+=2){let t=i[a];t[0]-=n[0],t[1]-=n[1],t[0]*=_t,t[1]*=-.08,this.text_pos.push(t);let e=[t[0]-h,t[1]-r],s=Math.atan2(e[1],e[0])+Math.PI/2;this.text_rot.push(s),h=t[0],r=t[1]}this.text_bounds={x:-n[0]*_t,y:n[1]*_t,w:s.w*_t,h:s.h*_t}}gen(t){let e=[],i=[];for(let p=0;p<this.text_pos.length;p++){let s=this.text_pos[p],n=s[0]+.2+.02*t.rn(-1,1),h=s[1]+-5.3+.02*t.rn(-1,1);e.push([n,h]),i.push(this.text_rot[p])}let s=.68/3,n=this.text_bounds.y+-5.3,h=n+this.text_bounds.h,r=this.text_bounds.x-.5,a=r+.5+this.text_bounds.w+.05,o=.68,c=n;for(;c<=h;)e.push([r-s,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;let l=1.73205,u=r-s;for(;c>=(n+h)/2;){let s=.05*t.rn(-1,1);e.push([u+s,c-s/l]),i.push(Math.PI/3),u+=.12,c-=.12/l}for(u=r-s,c=n;c<=(n+h)/2;){let s=.05*t.rn(-1,1);e.push([u+s,c+s/l]),i.push(-Math.PI/3),u+=.12,c+=.12/l}let _=o/1.5;for(c=n-_;c<=h+_;)e.push([r-o,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;for(c=n-_;c<=h+_;)e.push([a+o,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;for(u=r-o+.12;u<=a+o;)e.push([u+.1*t.rn(-1,1),n-_]),i.push(Math.PI/2),u+=.12;for(u=r-o+.12;u<a+o;)e.push([u+.1*t.rn(-1,1),h+_]),i.push(Math.PI/2),u+=.12;this.positions=e,this.rotations=i}render(t,e,i,s,n,h,r){this.gen(t);let a=i.clone();h.in_rev?a.lerp(s,1-h.rev_v):a.lerp(s,h.op_t);let o=0,c=150;for(let l=0;l<this.positions.length&&!(o>=r);l++){if(e.position.set(this.positions[l][0],this.positions[l][1],-2),e.rotation.set(0,0,this.rotations[l]),0==n||1==n){let i=t.rn(1,1.5)*_t;e.scale.set(c*i,c*i,1)}else{let i=t.rn(.05,.2)*_t,s=t.rn(.5,.75)*_t;e.scale.set(c*i,c*s,1)}e.updateMatrix(),this.mesh.setMatrixAt(o,e.matrix),this.mesh.setColorAt(o,a),o++}this.mesh.instanceMatrix.needsUpdate=!0,this.mesh.instanceColor&&(this.mesh.instanceColor.needsUpdate=!0),this.mesh.count=o}}const ft=.5*(Math.sqrt(3)-1),gt=(3-Math.sqrt(3))/6,mt=1/3,dt=1/6,vt=t=>0|Math.floor(t),Ct=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),wt=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function xt(t){const e=512,i=new Uint8Array(e);for(let s=0;s<256;s++)i[s]=s;for(let s=0;s<255;s++){const e=s+~~(t()*(256-s)),n=i[s];i[s]=i[e],i[e]=n}for(let s=256;s<e;s++)i[s]=i[s-256];return i}class It{constructor(t,e={}){this.n_f=e.n_f??t.rn(.1,.5),t
**NOTE: This project has audio, click on the live view to start.** *l.o* (pronounced el-dot-oh) is a series of audiovisual vignettes exploring a process at the heart of generative art and ambient music: creating complex forms by repeating and transforming a simple input. Inspired by starling murmurations, the repetition of a line, dot, or ring forms a flock of flickering particles rippling across the canvas. Interconnected audio and visual patterns create a mesmerizing display of echoes and modulations. As the sound expands and contracts, so do the areas of visual density, revealing ephemeral shapes and structures. Sounds become visible. Visuals become audible. Within the sonic component, filters and echoes manipulate a sustained chord until subtle melodies and rhythmic structures appear, resulting in a hypnotic and evolving soundscape unfolding from an elementary source. The signal path relies solely on bespoke code built using Web Audio, including an implementation of an early computer music algorithm called *Karplus-Strong* which utilizes tuned delay lines to simulate the physics of stringed instruments. The audio effect design is also inspired by the magical warmth of vintage analog equipment like tape loop echo units. This analog quality found its way into the visual style: the low frame rate gives the project a hand animated feel reminiscent of stop motion. On our last album, [Still](https://silentseason.bandcamp.com/album/still), we questioned the repetitive experience of pedestrian life, attempting to invoke wonder in the constantly evolving nature of our world, even in moments of perceived stillness. *l.o* expands this line of inquiry, inviting the audience to appreciate the compounding complexity surfacing from a succession of small shifts within a fixed pattern. As the series builds, various directions of color, shape, tone and tempo are unveiled. Alongside works like *Flux* by Owen Moore, or *montreal friend scale* by Amon Tobin, the project explores core questions about the audiovisual medium: can it be more than visuals in the service of sound, or sound in the service of visuals? How can the synthesis of the two media create a richer whole? While the sound of *Flux* reacts to visual data, and *montreal friend scale* is a literal visual representation of a sonic concept, *l.o* features a two-way dialogue between sound and visuals. The two are interconnected through 9 different paths, including a key relationship where filter frequency modulates flock density (more details available in the [AV section](https://l.o.night-sea.com/#av) of the project’s website). This audiovisual conversation offers a unique encounter between generative visual art and abstract electronic music, two vibrant spaces that share a common thread. Key controls are available to explore the different components building the final sound: - Press ‘0’ to turn off all effects and hear the initial sustained chord - Press ‘1’ to toggle back on / off the amplitude modulation (can sound subtle in certain outputs) - Press ‘2’ to toggle back on / off the filtering effects - Press ‘3’ to toggle back on / off the echo based effects - Press ‘Space’ to pause / resume the piece After pressing ‘0’, pressing successively ‘1’, ‘2’ and ‘3’ will bring the piece back to the original audio setup.