1globalThis.process??={},globalThis.process.env??={};var e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=Math.min(window.devicePixelRatio||1,1.75),n=e=>{let t=e>>>0;return()=>{t=t+1831565813|0;let e=t;return e=Math.imul(e^e>>>15,e|1),e=e+Math.imul(e^e>>>7,e|61)^e,((e^e>>>14)>>>0)/4294967296}},r=e=>{let t=new Uint8Array(256);for(let e=0;e<256;e++)t[e]=e;for(let n=255;n>0;n--){let r=e()*(n+1)|0,i=t[n];t[n]=t[r],t[r]=i}let n=new Uint8Array(512);for(let e=0;e<512;e++)n[e]=t[e&255];let r=(e,t)=>n[n[e&255]+(t&255)]/255;return(e,t)=>{let n=Math.floor(e),i=Math.floor(t),a=e-n,o=t-i,s=a*a*(3-2*a),c=o*o*(3-2*o),l=r(n,i),u=r(n+1,i),d=r(n,i+1),f=r(n+1,i+1);return l+(u-l)*s+(d-l)*c+(l-u-d+f)*s*c}},i={flow:(e,t,n)=>{let r=0,i=0,a,o=[`#f3c9ef`,`#e9b3e7`,`#d577c9`,`#b85aaf`,`#9f89be`],s=Array.from({length:120},()=>({x:0,y:0,c:o[t()*o.length|0],v:.5+t()*1.1})),c=e=>{e.x=t()*r,e.y=t()*i};return{still:200,reset(t,n){r=t,i=n,a=e.createLinearGradient(0,0,r,i),a.addColorStop(0,`#42184c`),a.addColorStop(.55,`#2c1037`),a.addColorStop(1,`#1c0a26`),e.fillStyle=a,e.fillRect(0,0,r,i),s.forEach(c),e.lineWidth=1.1,e.lineCap=`round`},frame(o){e.globalAlpha=.05,e.fillStyle=a,e.fillRect(0,0,r,i),e.globalAlpha=.7;for(let a of s){let s=n(a.x*.0042,a.y*.0042+o*.11)*Math.PI*4+o*.05,l=a.x+Math.cos(s)*a.v*1.6,u=a.y+Math.sin(s)*a.v*1.6;e.strokeStyle=a.c,e.beginPath(),e.moveTo(a.x,a.y),e.lineTo(l,u),e.stroke(),a.x=l,a.y=u,(a.x<-4||a.x>r+4||a.y<-4||a.y>i+4||t()<.003)&&c(a)}e.globalAlpha=1}}},rings:(e,t,n)=>{let r=0,i=0,a=[`rgba(138, 46, 130, 0.75)`,`rgba(255, 255, 255, 0.55)`,`rgba(122, 78, 136, 0.65)`,`rgba(231, 193, 226, 0.8)`],o=t()*100;return{still:1,reset(e,t){r=e,i=t},frame(t){let s=r*.74,c=i*.36,l=e.createRadialGradient(s,c,8,s,c,Math.max(r,i));l.addColorStop(0,`#f1d7ed`),l.addColorStop(.45,`#d99bcb`),l.addColorStop(1,`#8d5f9b`),e.fillStyle=l,e.fillRect(0,0,r,i);let u=Math.hypot(r,i)*.72/15;for(let r=1;r<=15;r++){let i=r*u;e.beginPath();for(let a=0;a<=Math.PI*2+.13;a+=.13){let l=i+(n(Math.cos(a)*1.15+r*.31+o,Math.sin(a)*1.15+t*.22)-.5)*u*1.1,d=s+Math.cos(a)*l,f=c+Math.sin(a)*l;a===0?e.moveTo(d,f):e.lineTo(d,f)}e.closePath(),e.strokeStyle=a[r%a.length],e.lineWidth=1+r%3*.5,e.stroke()}e.fillStyle=`#8a2e82`,e.beginPath(),e.arc(s,c,3.2,0,Math.PI*2),e.fill()}}},topo:(e,t,n)=>{let r=0,i=0,a=t()*40;return{still:1,reset(e,t){r=e,i=t},frame(t){let o=e.createLinearGradient(0,0,0,i);o.addColorStop(0,`#efe6f3`),o.addColorStop(1,`#ddcbe6`),e.fillStyle=o,e.fillRect(0,0,r,i);for(let o=0;o<16;o++){let s=8+(o+.5)*((i-16)/16),c=o%4==1;e.beginPath();let l=!0;for(let i=-6;i<=r+6;i+=5){let r=n(i*.0058+a,o*.42+t*.09),c=(Math.abs(r-.5)*2)**1.6,u=s+(r-.5)*30-c*7;l?(e.moveTo(i,u),l=!1):e.lineTo(i,u)}e.strokeStyle=c?`rgba(138, 46, 130, 0.6)`:`rgba(117, 101, 168, 0.5)`,e.lineWidth=c?1.4:1,e.stroke()}}}},aurora:(e,t,n)=>{let r=0,i=0,a=[{y:.34,amp:26,hue:`227, 168, 217`,sp:.16,ph:t()*10},{y:.52,amp:34,hue:`184, 90, 175`,sp:.12,ph:t()*10},{y:.7,amp:24,hue:`159, 137, 190`,sp:.2,ph:t()*10}];return{still:1,reset(e,t){r=e,i=t},frame(t){let o=e.createLinearGradient(0,0,0,i);o.addColorStop(0,`#241233`),o.addColorStop(.6,`#39204e`),o.addColorStop(1,`#1a0c26`),e.fillStyle=o,e.fillRect(0,0,r,i),e.lineCap=`round`;for(let o of a)for(let[a,s]of[[30,.07],[16,.13],[6,.3]]){e.beginPath();let c=!0;for(let a=-8;a<=r+8;a+=5){let r=i*o.y+(n(a*.0032+o.ph,t*o.sp+o.ph)-.5)*2*o.amp;c?(e.moveTo(a,r),c=!1):e.lineTo(a,r)}e.strokeStyle=`rgba(${o.hue}, ${s})`,e.lineWidth=a,e.stroke()}let s=e.createRadialGradient(r*.3,-i*.4,10,r*.3,-i*.4,i*1.3);s.addColorStop(0,`rgba(228, 168, 217, 0.2)`),s.addColorStop(1,`rgba(228, 168, 217, 0)`),e.fillStyle=s,e.fillRect(0,0,r,i)}}},molten:(e,t)=>{let n=0,r=0,i=[`255, 217, 251`,`201, 75, 196`,`233, 179, 231`,`184, 90, 175`,`123, 98, 167`],a=Array.from({length:5},(e,n)=>({c:i[n%i.length],r:.22+t()*.2,ax:.18+t()*.22,ay:.14+t()*.2,fx:.14+t()*.12,fy:.11+t()*.1,px:t()*Math.PI*2,py:t()*Math.PI*2,cx:.2+t()*.6,cy:.3+t()*.4}));return{still:1,reset(e,t){n=e,r=t},frame(t){let i=e.createLinearGradient(0,0,0,r);i.addColorStop(0,`#241128`),i.addColorStop(1,`#170a20`),e.fillStyle=i,e.fillRect(0,0,n,r),e.globalCompositeOperation=`lighter`;for(let i of a){let a=n*(i.cx+Math.cos(t*i.fx+i.px)*i.ax),o=r*(i.cy+Math.sin(t*i.fy+i.py)*i.ay),s=Math.max(18,i.r*r*1.6),c=e.createRadialGradient(a,o,0,a,o,s);c.addColorStop(0,`rgba(${i.c}, 0.55)`),c.addColorStop(.45,`rgba(${i.c}, 0.22)`),c.addColorStop(1,`rgba(${i.c}, 0)`),e.fillStyle=c,e.beginPath(),e.arc(a,o,s,0,Math.PI*2),e.fill()}e.globalCompositeOperation=`source-over`}}}},a=a=>{let o=i[a.dataset.variant??``];if(!o)return;let s=a.getContext(`2d`);if(!s){a.remove();return}let c=Number(a.dataset.seed??1),l=n(c*1013+77),u=o(s,l,r(n(c*7919+13))),d=0,f=0,p=!1,m=!1,h=l()*40,g=0,_=()=>{for(let e=0;e<u.still;e++)u.frame(h+e/60)},v=()=>{let e=a.clientWidth,n=a.clientHeight;
1!e||!n||(d=e,a.width=Math.round(e*t),a.height=Math.round(n*t),s.setTransform(t,0,0,t,0,0),u.reset(e,n),p||_())},y=e=>{f=requestAnimationFrame(y);let t=Math.min((e-g)/1e3,.05);g=e,h+=t,u.frame(h)},b=()=>{let t=m&&!document.hidden&&!e.matches&&d>0;t&&!p?(p=!0,g=performance.now(),f=requestAnimationFrame(y)):!t&&p&&(p=!1,cancelAnimationFrame(f),f=0)};v(),typeof ResizeObserver<`u`?new ResizeObserver(v).observe(a):window.addEventListener(`resize`,v),`IntersectionObserver`in window?new IntersectionObserver(e=>{m=e[0]?.isIntersecting??!1,b()},{rootMargin:`60px`}).observe(a):(m=!0,b()),document.addEventListener(`visibilitychange`,b),e.addEventListener(`change`,()=>{e.matches&&_(),b()})};document.querySelectorAll(`.portfolio-page canvas.art-fx[data-variant]`).forEach(e=>{try{a(e)}catch{e.remove()}});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.