0x85582125…5972sent to0x99a9b7c1…b069·#16,454,483·view on Etherscan
t n=0;n<e.length;n++)t+=e[n][0]*e[(n+1)%e.length][1],t-=e[n][1]*e[(n+1)%e.length][0];return o.abs(t)/2}const{stringify:Te}=JSON;let Ue,qe,Ge,ze,Je={};function $e(e,t,n=0,l=10,i=3,r=.6,a=0){return o.noiseDetail(i,r),o.noise((e+0+a)/l,(t+0+a)/l,(n+0+a)/l)}function Qe(e=0,t=10,n=3,l=.6,o=0){if(Je[Te(arguments)])return Je[Te(arguments)];let i=[],r={mean:null,average:0,max:-1,min:1};for(let e=a;e--;)for(let t=s;t--;){let n=$e(e,t,...arguments);n>r.max&&(r.max=n),n<r.min&&(r.min=n),i.push(n),r.average+=n}i.sort(((e,t)=>e-t));const h=Math.floor(i.length/2);return r.mean=i.length%2?i[h]:(i[h-1]+i[h])/2,r.average/=i.length,Je[Te(arguments)]=r,r}const _e=e=>G>0?(i.obj.length-(e+1))/i.obj.length*z:0,Ke=(e,t=0,n=!0,l=Ue)=>{const i=Qe(...l);0==ne&&(n=!1);let r=Ze(e,t);const a=o.map($e(...e,...l),o.lerp(i.min,i.mean,ne+.2),o.lerp(i.mean,i.max,ne-.2),0,1,!0);return n?o.min(r,a):r},Ze=(e,t=0,n=!0)=>{if(0==G)return 1;const l=o.dist(e[0],0,a/2,0)+t,i=o.dist(e[1],0,s/2,0)+t,r=[0,50,1,.5],h=2.2+.5*G,c=o.map(o.constrain($e(0,e[1],...r),0,1),0,1,0,40),g=o.map(o.constrain($e(e[0],0,...r),0,1),0,1,0,40),f=E(o.map(l+(n?c:0),a/h,a/1.5,1,0,!0)),d=E(o.map(i+(n?g:0),s/h,s/1.5,1,0,!0));return Math.min(f*d,f,d)};function et(e,t){if(0===t)return e;const n=e.length,l=e.map(((t,l)=>[[.75*t[0]+.25*e[(l+1)%n][0],.75*t[1]+.25*e[(l+1)%n][1]],[.25*t[0]+.75*e[(l+1)%n][0],.25*t[1]+.75*e[(l+1)%n][1]]])).flat();return 1===t?l:et(l,t-1)}function tt(e,t,n,l){var o,i,r,a,s,h,c,g,f,d,b=e[t][0],u=e[t][1],m=e[n][0],p=e[n][1],k=e[l][0],w=e[l][1],E=Math.abs(u-p),x=Math.abs(p-w);return E<9.5367431640625e-7?i=(a=-(k-m)/(w-p))*((o=(m+b)/2)-(h=(m+k)/2))+(g=(p+w)/2):x<9.5367431640625e-7?i=(r=-(m-b)/(p-u))*((o=(k+m)/2)-(s=(b+m)/2))+(c=(u+p)/2):(o=((r=-(m-b)/(p-u))*(s=(b+m)/2)-(a=-(k-m)/(w-p))*(h=(m+k)/2)+(g=(p+w)/2)-(c=(u+p)/2))/(r-a),i=E>x?r*(o-s)+c:a*(o-h)+g),{i:t,j:n,k:l,x:o,y:i,r:(f=m-o)*f+(d=p-i)*d}}function nt(e){let t,n,l,o,i,r;for(n=e.length;n;)for(o=e[--n],l=e[--n],t=n;t;)if(r=e[--t],i=e[--t],l===i&&o===r||l===r&&o===i){e.splice(n,2),e.splice(t,2);break}}const lt=function(e,t,n){const l=1/t,o=1/n;return Math.min(4,((3-l)*l**2*e+o**3)/(l**3*e+(3-o)*o**2))},ot=(e,t,n,l,o)=>Math.min(4,(2+Math.sqrt(2)*(e-n/16)*(n-e/16)*(t-l))/(1.5*o*(2+(Math.sqrt(5)-1)*t+(3-Math.sqrt(5))*l))),it=(e,t)=>{const n=Math.sin(e.theta),l=Math.cos(e.theta),o=Math.sin(t.phi),i=Math.cos(t.phi),r=t.leftY,a=e.rightY,s=ot(n,l,o,i,r),h=ot(o,i,n,l,a);e.rightX=e.x+(e.deltaX*l-e.deltaY*n)*s,e.rightY=e.y+(e.deltaY*l+e.deltaX*n)*s,t.leftX=t.x-(e.deltaX*i+e.deltaY*o)*h,t.leftY=t.y-(e.deltaY*i-e.deltaX*o)*h};function rt(e,t=D.lowlight[0],n=a/2,l=s/2,i=13/r,h=D.highlight[0]){t&&o.background(D.lowlight[0]),o.textFont("Helvetica Neue"),o.textSize(i);const c=o.textWidth(e);o.fill(h),o.text(e,n-c/2,l-i/2)}let at=0,st=0,ht=[()=>{for(let e=0;e<le;e++)i.obj.push({});return!0},()=>{rt(`Dreaming ${o.floor((at+1)/le*100)}%`);const e=i.obj[at],t=at;J&&($&&t>=i.obj.length-Q-1||!$&&t<=i.obj.length-Q-1)&&(e.lineType=1);let n=[],r=[];const h=o.lerp(re,ae,t/i.obj.length)/2,c=o.floor(o.lerp(oe,ie,t/(i.obj.length-1)));let g=0,f=0;const d=a/pe,b=(s-a)/2;for(;r.length<c&&f<d*ke;){const e=d-f,t=l.int(-h-b,a+h+b),i=l.int(-h,s+h);let c=!0;g++;for(const n of r)if(o.dist(t,i,n.x,n.y)<e+n.r){c=!1;break}g>4e3&&(f+=5,g=0),c&&(g=0,r.push({x:t,y:i,r:e}),n.push(o.createVector(t,i)))}let u=[];for(let e=0;e<de;e++){const e=l.int(15,30),t=l.int(a*be,a*ue),n=-t/2,i=l.int(0+n,a-n),r=l.int(0+n,s-n),h=l.num(t/20,t/2),c=l.num(.5,2);for(let n=0;n<e;n++){const a=t+o.map(l.dec(),0,1,-h,h);u.push(Ne(i,r,a,a*c,o.map(n,0,e,0,o.TWO_PI)))}}return e.line=[...n,...u],we&&(e=>{if(e.length<=1)return e;for(let t=0;t<e.length;t++){const n=l.int(t,e.length-1);[e[t],e[n]]=[e[n],e[t]]}})(e.line),e.packingCirlces=r,at++,at>=i.obj.length},()=>(rt("Preparing"),!0),()=>{rt(`Sketching ${o.floor((st+1)/le*100)}%`);const e=Qe(...qe),t=Qe(...Ge),n=st,r=i.obj[n];let a=1==r.lineType?-Z/(1e5*K):l.num(ce,ge);r.hobbyCurves=((e,{tension:t=1,cyclic:n=!1}={})=>{const l=((e,t=1,n=!1)=>{const l=e.map((({x:e,y:n})=>((e,t,n)=>({x:e,y:t,leftY:n,rightY:n,leftX:n,rightX:n,deltaX:0,deltaY:0,delta:0,theta:0,phi:0,psi:0}))(e,n,t))),o=l[0],i=l[l.length-1];for(let e=0;e<l.length;e++)l[e].next=l[e+1]??o,l[e].prev=l[e-1]??i;((e,t)=>{const n=t?e.length:e.length-1;for(let t=0;t<n;t++){const n=e[t],l=e[t+1]??e[0];n.deltaX=l.x-n.x,n.deltaY=l.y-n.y,n.delta=Math.hypot(n.deltaX,n.deltaY)}})(l,n),((e,t)=>{const[n,l]=t?[0,e.length]:[1,e.length-1];for(let t=n;t<l;t++){const n=e[t],l=n.prev,o=l.deltaY/l.delta,i=l.deltaX/l.delta;n.psi=Math.atan2(n.deltaY*i-n.deltaX*o,n.deltaX*i+n.deltaY*o)}})(l,n),function(e,t){const n=[],l=[],o=[],i=e[0],r=e[1],a=e[e.length-1],s=t?e.length+1:e.length;if(t)n[0]=0,o[0]=0,l[0]=1;else{const e=i.next,t=i.rightX,a=Math.abs(e.leftY),s=Math.abs(i.rightY);n[0]=lt(t,s,a),o[0]=-r.psi*n[0],l[0]=0}for(let r=1;r<s;r++){const h=e[r]??i,c=h.next,g=h.prev,f=r===s-1;if(!t&&f){const e=h.leftX,t=Math.abs(h.leftY),l=Math.abs(g.rightY),i=lt(e,t,l);a.theta=-o[s-2]*i/(1-i*n[s-2]);break}{let e=1/(3*Math.abs(g.rightY)-1),a=h.delta*(3-1/Math.abs(g.rightY)),d=1/(3*Math.abs(c.leftY)-1),b=g.delta*(3-1/Math.abs(c.leftY));const u=1-n[r-1]*e;a*=u;const m=Math.abs(h.leftY),p=Math.abs(h.rightY);m<p?a*=(m/p)**2:b*=(p/m)**2;let k=b/(b+a);n[r]=k*d;let w=-c.psi*n[r];if(k=(1-k)/u,w-=h.psi*k,k*=e,o[r]=w-o[r-1]*k,l[r]=-l[r-1]*k,t&&f){let e=0,t=1;for(let i=r-1;i>=0;i--){const r=0===i?s-1:i;e=o[r]-e*n[r],t=l[r]-t*n[r]}e/=1-t,i.theta=e,o[0]=e;for(let t=1;t<s-1;t++)o[t]=o[t]+e*l[t];break}}}for(let t=s-2;t>=0;t-=1)e[t].theta=o[t]-e[t].next.theta*n[t]}(l,n),(e=>{for(let t=0;t<e.length;t++){const n=e[t];n.phi=-n.psi-n.theta}})(l);const r=n?l.length:l.length-1;for(let e=0;e<r;e++)it(l[e],l[e].next);return l})(e,t,n),o=[],i=n?l.length:l.length-1;for(let e=0;e<i;e++){const t=l[e];o.push({sc:{x:t.rightX,y:t.rightY},ec:{x:t.next.leftX,y:t.next.leftY},pt:{x:t.next.x,y:t.next.y}})}return o})(r.line,{tension:a,cyclic:!0}),r.hobbyVerts=((e,t=10,n=ye,l=ze)=>{let i,r=[];const a=Qe(...l),s=a.max-a.min,h=s/2*Ae,c=-s*Me,g=a.mean-h+c,f=a.mean+h+c;for(let a=0;a<e.length;a++){const s=e[a],h=a>=e.length-1?e[0]:e[a+1];let c=[];for(let e=0;e<1;e+=n){let r=o.bezierPoint(h.pt.x,h.ec.x,h.sc.x,s.pt.x,e),a=o.bezierPoint(h.pt.y,h.ec.y,h.sc.y,s.pt.y,e);const d=$e(r,a,...l),b=x(o.map(d,g,f,xe,Ee,!0));(i&&o.dist(r,a,i.x,i.y)>t*b||null==i)&&(i=o.createVector(r,a),c.push(i)),Oe([r,a],250)||(e+=10*n)}i=null,r=[...r,...c.reverse()]}return r})(r.hobbyCurves,o.lerp(1==r.lineType?he/2:he,se,(i.obj.length-n)/i.obj.length)),r.drawOutline=1==r.lineType?l.bool(_):n<i.obj.length-3?l.bool(R):l.bool(V),r.layerColour=l.choice(D.base);const s=r.hobbyVerts.map((e=>[e.x,e.y])),h=[[...s,s[0]]];let c=function(e,t){let n,l,o,i,r,a,s,h,c,g,f,d=e.length,b=[];if(d<3)return[];for(e=e.slice(0),n=d;n--;)b[n]=n;for(b.sort((function(t,n){var l=e[n][0]-e[t][0];return 0!==l?l:t-n})),o=function(e){let t,n,l,o,i,r=0,a=0,s=0,h=0;for(let t=e.length;t--;)e[t][0]<r&&(r=e[t][0]),e[t][0]>s&&(s=e[t][0]),e[t][1]<a&&(a=e[t][1]),e[t][1]>h&&(h=e[t][1]);return t=s-r,n=h-a,l=Math.max(t,n),o=r+.5*t,i=a+.5*n,[[o-20*l,i-l],[o,i+20*l],[o+20*l,i-l]]}(e),e.push(o[0],o[1],o[2]),i=[tt(e,d+0,d+1,d+2)],r=[],a=[],n=b.length;n--;a.length=0){for(f=b[n],l=i.length;l--;)s=e[f][0]-i[l].x,s>0&&s*s>i[l].r?(r.push(i[l]),i.splice(l,1)):(h=e[f][1]-i[l].y,s*s+h*h-i[l].r>9.5367431640625e-7||(a.push(i[l].i,i[l].j,i[l].j,i[l].k,i[l].k,i[l].i),i.splice(l,1)));for(nt(a),l=a.length;l;)g=a[--l],c=a[--l],i.push(tt(e,c,g,f))}for(n=i.length;n--;)r.push(i[n]);for(i.length=0,n=r.length;n--;)r[n].i<d&&r[n].j<d&&r[n].k<d&&i.push([r[n].i,r[n].j,r[n].k]);return i}(s).map((e=>e.map((e=>[s[e][0],s[e][1]])))).filter((e=>!fe||function(e,t){let n=0,l=0,o=0,i=0,r=0,a=0,s=0,h=0,c=null,g=null;const f=e[0],d=e[1],b=t.length;for(;n<b;n++){l=0;const b=t[n].length-1,u=t[n];if(c=u[0],c[0]!==u[b][0]&&c[1]!==u[b][1])throw new Error("First and last coordinates in a ring must be the same");for(r=c[0]-f,a=c[1]-d;l<b;l++)if(g=u[l+1],h=g[1]-d,a<0&&h<0||a>0&&h>0)c=g,a=h,r=c[0]-f;else{if(s=g[0]-e[0],h>0&&a<=0){if(i=r*h-s*a,i>0)o+=1;else if(0===i)return 0}else if(a>0&&h<=0){if(i=r*h-s*a,i<0)o+=1;else if(0===i)return 0}else if(0===h&&a<0){if(i=r*h-s*a,0===i)return 0}else if(0===a&&h<0){if(i=r*h-s*a,0===i)return 0}else if(0===a&&0===h){if(s<=0&&r>=0)return 0;if(r<=0&&s>=0)return 0}c=g,a=h,r=s}}return o%2!=0}(Ve(e),h)));return r.poly=h,r.triangles=c.map((i=>{const a=Ve(i),s=Ze(a,_e(n)),h=$e(...a,...qe),c=$e(...a,...Ge);return{tri:i.map((e=>{const t=5*$e(...e,0,q,3,.5),n=5*$e(...e,0,1.1*q,3,.5);return[e[0]+t-2.5,e[1]+n-2.5]})),color:D.base[o.round(o.map(c,t.min+.1,t.max-.1,0,D.base.length-1,!0))],drawStroke:l.bool(o.map(h,o.lerp(e.min,e.mean,ne-.2),o.lerp(e.mean,e.max,ne+.2),0,v*s,!0)),drawFill:l.bool(o.map(Ke(a),0,1,0,j*s*(1==r.lineType?10:1),!0))}})),st++,st>=i.obj.length},()=>{rt("Illustrating");const e=[0,q,6,.9,1e3],t=Qe(...e),n=Re;return i.obj.map(((r,a)=>{N&&(r.triangles=r.triangles.filter((e=>{let t=!0;for(let n of e.tri)if(!Oe(n,-10.6*O)){t=!1;break}return t}))),r.drawOutline&&(r.poly=[et(r.poly[0],1)],o.color(D.highlight[0]).setAlpha(o.map(a,0,i.obj.length-1,.05,.9,!0))),r.triangles.map((i=>{const r=Ve(i.tri);i.tri=n(i.tri.map((e=>o.createVector(...e))),l.num(.98,1)).map((e=>[e.x,e.y]));const a=$e(...r,...e);return a>t.max-Se&&(i.tri=et(i.tri,o.floor(o.map(a,t.min,t.max,4,5,!0)))),i}))})),!0},()=>{let e=[];for(let t=0;t<o.min(i.obj.length,5);t++)e=[...e,...i.obj[i.obj.length-t-1].triangles];const t=e.filter((e=>e.drawFill&&Oe(Ve(e.tri)))).sort(((e,t)=>He(e.tri)-He(t.tri)));for(let e=0;e<T;e++){const n=t[t.length-1-e];n&&(e<5||l.bool(U)?n.color=l.choice(D.accent):n.decoration=!0)}return!0},()=>(o.background(F),i.obj.map(((e,t)=>{e.drawOutline&&((e,t)=>{if(0==t)return;const n=me?2.5:2,i=w,r=.84-l.num(-.01,.01),a=.82-l.num(-.01,.01),s=me?1:B?.6:.92,h=B?.8:.86;let c=ee*l.num(3,H);const g=l.choice(D.line),f=l.choice(D.stroke),d=o.color(f),b=o.color(g),u=o.color(F),m=c+ee+te,p=o.color(f),k=o.color(D.highlight[0]);p.setAlpha(0),o.stroke(b),o.strokeWeight(m),o.noFill(),o.colorMode(o.RGB),e.poly[0].map(((a,c)=>{const g=e.poly[0][c+1]||e.poly[0][0],f=Ke(a,_e(t),P);let d=.3;if(f<=r){const e=-(f-r)*n,t=i(o.constrain(e,0,s)),a=o.map(e,.4,1,1,h,!0);d=o.map(e,.5,1,.3,.15,!0);const c=o.