0xaf0c…b4de

All memos sent from and to 0xaf0c…b4de.

(i+r)/e,u=n-t;return I.map(s,0,1,t+o*u,t+c*u)}}r.forEach((function(r){const s=r.length();l?(o.push(r.scale(x(t,e,a,h,s))),u.push(r.scale(x(-n,-i,a,h,s)))):(o.push(r.scale(t)),u.push(r.scale(-n))),h+=s})),u=u.map((function(t){return c=t.points,c[3]?t.points=[c[3],c[2],c[1],c[0]]:t.points=[c[2],c[1],c[0]],t})).reverse();const f=o[0].points[0],y=o[s-1].points[o[s-1].points.length-1],p=u[s-1].points[u[s-1].points.length-1],d=u[0].points[0],m=I.makeline(p,f),g=I.makeline(y,d),b=[m].concat(o).concat([g]).concat(u);return new O(b)}outlineshapes(t,n,e){n=n||t;const i=this.outline(t,n).curves,r=[];for(let t=1,n=i.length;t<n/2;t++){const s=I.makeshape(i[t],i[n-t],e);s.startcap.virtual=t>1,s.endcap.virtual=t<n/2-1,r.push(s)}return r}intersects(t,n){return t?t.p1&&t.p2?this.lineIntersects(t):(t instanceof q&&(t=t.reduce()),this.curveintersects(this.reduce(),t,n)):this.selfintersects(n)}lineIntersects(t){const n=j(t.p1.x,t.p2.x),e=j(t.p1.y,t.p2.y),i=T(t.p1.x,t.p2.x),r=T(t.p1.y,t.p2.y);return I.roots(this.points,t).filter((t=>{var s=this.get(t);return I.between(s.x,n,i)&&I.between(s.y,e,r)}))}selfintersects(t){const n=this.reduce(),e=n.length-2,i=[];for(let r,s,o,c=0;c<e;c++)s=n.slice(c,c+1),o=n.slice(c+2),r=this.curveintersects(s,o,t),i.push(...r);return i}curveintersects(t,n,e){const i=[];t.forEach((function(t){n.forEach((function(n){t.overlaps(n)&&i.push({left:t,right:n})}))}));let r=[];return i.forEach((function(t){const n=I.pairiteration(t.left,t.right,e);n.length>0&&(r=r.concat(n))})),r}arcs(t){return t=t||.5,this._iterate(t,[])}_error(t,n,e,i){const r=(i-e)/4,s=this.get(e+r),o=this.get(i-r),c=I.dist(t,n),u=I.dist(t,s),h=I.dist(t,o);return C(u-c)+C(h-c)}_iterate(t,n){let e,i=0,r=1;do{e=0,r=1;let s,o,c,u,h,a=this.get(i),l=!1,x=!1,f=r,y=1,p=0;do{if(x=l,u=c,f=(i+r)/2,p++,s=this.get(f),o=this.get(r),c=I.getccenter(a,s,o),c.interval={start:i,end:r},l=this._error(c,a,i,r)<=t,h=x&&!l,h||(y=r),l){if(r>=1){if(c.interval.end=y=1,u=c,r>1){let t={x:c.x+c.r*$(c.e),y:c.y+c.r*B(c.e)};c.e+=I.angle({x:c.x,y:c.y},t,this.get(1))}break}r+=(r-i)/2}else r=f}while(!h&&e++<100);if(e>=100)break;u=u||c,n.push(u),i=y}while(r<1);return n}}function L(t,n){var e=n%t.points.length;return e<0&&(e=t.points.length+e),t.points[e]}function U(t,n){const e=[];return function(t,n){for(var e=0;e<t.points.length&&!1!==n.call(t,L(t,e-1),L(t,e),L(t,e+1),e);e++);}({points:t.points.reverse()},(function(t,i,r,s){const o=i.subtract(t,!0).normalize(),c=i.subtract(r,!0).normalize();let u=Math.sin(Math.acos(o.dot(c))/2);u=0==u?1:u;var h=n/u,a=o.add(c,!0).normalize().multiply(h,!0),l=o.perpDot(c)<0?i.add(a,!0):i.subtract(a,!0);e.push(l)})),{points:e}}const R=q.getUtils();q.prototype.bboxIntersections=function(t,n){const e=[{p1:{x:t.x.min,y:t.y.min},p2:{x:t.x.max,y:t.y.min}},{p1:{x:t.x.max,y:t.y.min},p2:{x:t.x.max,y:t.y.max}},{p1:{x:t.x.max,y:t.y.max},p2:{x:t.x.min,y:t.y.max}},{p1:{x:t.x.min,y:t.y.max},p2:{x:t.x.min,y:t.y.min}}].map((t=>this.lineIntersects(t))).reduce(((t,n)=>t.concat(n)),[]);return e.sort(),e},q.prototype.vec2=function(){return this.points.map((t=>new(a())(t.x,t.y)))};class V{constructor(t){if(t instanceof Array){const n=t[0],e=t[1];this.x={min:n.x,mid:(e.x-n.x)/2,max:e.x,size:e.x-n.x},this.y={min:n.y,mid:(e.y-n.y)/2,max:e.y,size:e.y-n.y}}else this.x=t.x,this.y=t.y,this.z=t.z}inside(t){return t.x>=this.x.min&&t.x<=this.x.max&&t.y>=this.y.min&&t.y<=this.y.max}}class J extends Array{constructor(){super(...arguments),this.addBezier=this.push}bbox(){let t=this[0].bbox();for(let n=1;n<this.length;n++){const e=this[n].bbox();R.expandbox(t,e)}return t}scale(t){const n=this.bbox(),e=((t,n)=>e=>e.subtract(n,!0).multiply(t).add(n))(t,new(a())(n.x.mid,n.y.mid)),i=this.map((t=>{const n=t.vec2().map(e);return new q(n)}));this.update(i)}draw(t){const n=this,e=x(t);for(let t=0;t<n.length;t++)y(e,n[t].toSVG());return e}update(t){this.splice(0,this.length,...t)}crop(t,n){const e=this,i=[];for(let r=e.length-1;r>=0;r--){const s=e[r],o=s.bboxIntersections(t,n);o.splice(0,0,0),o.push(1),o.forEach(((n,e)=>{if(e<o.length-1){const r=o[e+1],c=(n+r)/2,u=s.get(c);if(t.inside(u)){const t=s.split(n,r);i.push(t)}}}))}this.update(i)}}const G=[[13,93,43,10,50,10,80,93],[26,55,67,55]],W=[[21,92,21,8,52,8,65,12,70,20,70,33,60,49,25,49,60,49,70,55,73,60,73,84,68,90,58,92,21,92]],X=[[74,18,74,85,60,93,12,93,12,10,60,10,74,18]],H=[[75,92,25,92,25,8,75,8],[66,56,25,56]],Q=[[57,50,82,50,82,86,70,93,40,93,27,86,27,18,40,10,70,10,82,18]],K=[[45,90,45,10,42,10]],Y=[[64,93,19,93,19,9]],Z=[[8,88,8,10,73,88,73,64,73,10]],tt=[[13,93,13,10,50,10,61,18,61,55,47,63,20,63]],nt=[[71,18,57,12,30,12,23,24,23,42,27,50,62,55,71,67,68,86,57,92,35,92,23,86]],et=[[45,14,45,93],[11,10,73,10]],it=[[74,10,74,85,60,93,23,93,12,85,12,10]],rt=[[39,23,34,70],[11,39,49,37],[50,52,11,54],[19,70,23,24]],st=[[70,13,17,90]],ot=[[42,93,47,93]],ct=[[[9,79,15,88,28,88,42,88,47,79,47,18,44,9,28,9,14,9,10,17,9,79]],[[25,27,45,12,45,88]],[[49,88,5,88,5,65,13,57,26,53,35,51,39,50,46,40,46,14,40,7,27,4,11,7,5,14,4,19]],[[5,78,11,84,25,86,40,85,46,78,47,57,40,45,20,45,46,8,5,8]],[[27,9,11,61,52,60],[42,21,42,90]],[[9,79,15,85,29,88,44,85,50,79,49,53,45,46,28,44,18,45,11,52,12,11,51,11]],[[15,56,32,47,44,49,52,58,49,79,34,87,21,86,13,77,10,53,15,33,28,20,48,11]],[[23,90,51,9,7,10]],[[12,37,15,42,31,45,46,42,50,36,50,18,45,12,31,10,17,12,12,17,12,37],[10,79,16,85,31,88,45,86,52,79,51,54,47,48,31,45,15,48,10,54,10,79]],[[37,88,41,80,45,69,50,46,51,20,45,14,31,12,17,14,12,19,11,39,17,49,31,52,43,50,48,45]]];function ut(t,n,e,i,r=i/111){n.forEach(((n,s)=>{let o=n.map((t=>t*i/100)).map(((t,n)=>n%2==0?t+e.x:t+e.y)).map((t=>u(t,r)));!function(t,n,e){const i=document.createElementNS(l,"path");f(i,{d:`M ${n.slice(0,2).join(" ")} L ${n.slice(2).join(" ")}`}),f(i,void 0),t.appendChild(i)}(t,o)}))}const ht=(t,n,e=n)=>{const i=u(t.x,n),r=u(t.y,e);return new(a())(i,r)};!function(t){r=!1;let i=function(t){let n=parseInt(t.substring(0,8),16),e=parseInt(t.substring(8,16),16),i=parseInt(t.substring(16,24),16),r=parseInt(t.substring(24,32),16);return()=>{n|=0,e|=0,i|=0,r|=0;let t=(n+e|0)+r|0;return r=r+1|0,n=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,i=i+t|0,(t>>>0)/4294967296}};n=i(t.hash.substring(2,34)),e=i(t.hash.substring(34,66));for(let t=0;t<1e6;t+=2)n(),e()}(tokenData),console.log(`token.id: ${tokenData.tokenId}`),console.log(`token.hash: ${tokenData.hash}`);const at=2*Math.PI,lt=11/14;let xt={dx:550,dy:Math.ceil(700),ar:lt};const ft=xt.dx,yt=xt.dy,pt=.0025*ft,dt=[{n:"blue",c:"#5C7799",prob:.4},{n:"grey",c:"#696974",prob:.4},{n:"tan",c:"#E8E0C4",prob:.2}];var mt;function gt(t,n,e){if(!tokenData.plot){const i=.8*Math.pow(n/e,1),r=Math.min(1,i+.3),s="4s",o={attributeName:"stroke-width",values:`1;60;60;${pt};${pt}`,keyTimes:`0;${i};${i};${r};1`,calcMode:"linear",dur:s};p(t,{attributeName:"opacity",values:"0;0;0.4;1",keyTimes:`0;${i};${i};1`,calcMode:"linear",dur:s}),p(t,o)}}function bt(t,n){const e=new J;for(let i=0;i<t.points.length;i++){const r=t.points[i],s=t.points[(i+1)%t.points.length],o=t.points[(i+2)%t.points.length],c=r.subtract(s,!0).normalize(),u=o.subtract(s,!0).normalize(),h=(c.add(u,!0).normalize(),c.angleTo(u)),a=Math.min(r.distance(s),o.distance(s))/2*Math.abs(Math.sin(h/2)),l=Math.min(n,a),x=Math.abs(l/Math.sin(h/2)),f=s.add(c.multiply(x,!0),!0),y=s.add(u.multiply(x,!0),!0),p=.5523,d=f.subtract(c.multiply(2*l*p,!0),!0),m=y.subtract(u.multiply(2*l*p,!0),!0),g=new q(f,d,m,y);e.addBezier(g)}const i=new J,r=e;for(let t=0;t<r.length;t++){const n=r[t],e=r[(t+1)%r.length];i.addBezier(n);const c=n.point(3),u=e.point(0);if(o=u,(s=c).x.toFixed(5)!=o.x.toFixed(5)||s.y.toFixed(5)!=o.y.toFixed(5)){const t=new q(c,c,u,u);i.addBezier(t)}}var s,o;return i}mt=()=>{console.log("drawing..."),function(){let t="11in",n="14in";if(!tokenData.plot){let e=function(){let t=window.innerWidth,n=window.innerHeight;const e=lt;return{dx:n*e>=t?t:Math.ceil(n*e),dy:t/e>=n?n:Math.ceil(t/e),ar:e}}();console.log("using window dimensions",e),t="100vw",n="100vh"}const e=function(){const t=document.createElementNS(l,"svg");return f(t,{xmlns:"http://www.w3.org/2000/svg",version:"1.1","xmlns:xlink":"http://www.w3.org/1999/xlink"}),t}();f(e,{width:t,height:n,viewBox:`0 0 ${ft+0} ${yt+0}`});const i=(t=>{const n=t.reduce(((t,n)=>t+n.prob),0),e=[];let i=0;for(let n=0;n<t.length;n++)i+=t[n].prob,e.push(i);const r=s(0,n);let o=e.findIndex((c=r,t=>c<=t));var c;return-1==o&&(o=t.length-1),t[o]})(dt);console.log("paper",i.n);const r=x(e);f(r,{id:`0 paper ${i.n}`,fill:i.c,"stroke-width":1,stroke:"none"});const h=x(e);f(h,{id:"1 black",fill:"none","stroke-width":pt,"stroke-linecap":"round",stroke:"black"});const y=x(e);f(y,{id:"2 white",fill:"none","stroke-width":pt,"stroke-linecap":"round",stroke:"white"});const p=x(e);f(p,{id:"3 title",fill:"none","stroke-width":.5,"stroke-linecap":"round","stroke-linejoin":"round",stroke:"darkgrey"});const d=x(e);f(d,{id:"4 titleFR",fill:"none","stroke-width":.5,"stroke-linecap":"round","stroke-linejoin":"round",stroke:"none"});const m=new V({x:{min:0,mid:ft/2,max:ft,size:ft},y:{min:0,mid:yt/2,max:yt,size:yt}}),g=.0682*ft,b=new(a())(g,g),v=new(a())(ft-g,yt-g),z=new V([b,v]);!function(t,n,e,i){const r=document.createElementNS(l,"rect");f(r,{width:n,height:e}),f(r,i),t.appendChild(r)}(r,ft,yt,{"stroke-width":0,fill:i.c});const w=ft*yt,_=s(.1*ft,.9*ft),k=s(.1*yt,.9*yt),E=new(a())(_,k),M=s(.3*ft),S=function(){const t=Math.floor(u(4.4,3)),n=o(3,6),e=o(3,9);let i=t;return t<3?i=n:t>=9&&(i=e),i}();console.log("summits",S);const N=function(t,n,e){const i=[];let r=0;const s=at/e;for(let o=0;o<e;o++){let e=u(r,.2*s);const o=t.x+Math.cos(e)*n,c=t.y+Math.sin(e)*n,h=ht(new(a())(o,c),.1*n);i.push(h),r+=s}return{points:i}}(E,M,S),A=(bt(N,2e-4*function(t){let n=0;const e=t.points[0];return t.points.forEach(((t,i,r)=>{if(i<2)return;const s=e.subtract(t,!0),o=r[i-1],c=e.subtract(o,!0);n+=s.x*c.y-s.y*c.x})),n/2}(N)),s()*s());console.log("chunkiness",Math.round(100*A));const I=2e-5*w;let O=N;const C=o(21,33);console.log(`eggs: ${C} `);for(let t=1;t<=C;t++)try{const n=I+t*t*s(1.1,1.7)*S/3;let e=N;c(A)&&(e=O);const i=U(e,n);O=i;const r=n*n*2,o=bt(i,r);if(c(.9)?(o.crop(z),gt(o.draw(h),t,C)):(o.crop(m),gt(o.draw(y),t,C)),c(.3))try{const n=bt(U(i,5),r);n.scale(.08),n.crop(m),gt(n.draw(y),t,C)}catch(v){console.log("oops",v)}}catch(v){console.log("oops",v)}if(tokenData.plot){const t=tokenData.tokenId.substring(tokenData.tokenId.length-4),n=new(a())(g,yt-.37*g),e="0000"==t?"0":t.replace(/^0+/,"");console.log("editionNumber",e),function(t,n,e,i){let r=[W,H,Q,K,Z,Z,K,Z,Q,nt,,G,st,tt];if("A/P"!=n){r=[W,H,Q,K,Z,Z,K,Z,Q,nt,,rt];for(let t=0;t<n.length;t++){const e=n[t],i=parseInt(e,10),s=ct[i];r.push(s)}}for(let n=0;n<2;n++){const i=0,s=.85*9;r.forEach(((r,o)=>{const c=e.x+s*o,u=e.y-9-i,h=new(a())(c,u);ut(t,r,h,9,9*n*.02)}))}}(p,e,n),function(t,n,e,i){let r=[Y,H,nt,,X,H,W,it,et,nt,,H,ot,G,ot];if("A/P"!=n){r=[Y,H,nt,,X,H,W,it,et,nt,rt];for(let t=0;t<n.length;t++){const e=n[t],i=parseInt(e,10),s=ct[i];r.push(s)}}for(let n=0;n<2;n++){const i=0,s=.85*9;r.forEach(((r,o)=>{const c=e.x+s*o,u=e.y-9-i,h=new(a())(c,u);ut(t,r,h,9,9*n*.02)}))}}(d,e,n)}document.body.appendChild(e)}()},"complete"===document.readyState||"interactive"===document.readyState?mt():document.addEventListener("DOMContentLoaded",(t=>{mt()}))})()})();
(()=>{var n={490:t=>{!function n(e,i,r){var s=function(t){return"[object Array]"===Object.prototype.toString.call(t)};function o(t,n){if(!(this instanceof o))return new o(t,n);s(t)?(n=t[1],t=t[0]):"object"==typeof t&&t&&(n=t.y,t=t.x),this.x=o.clean(t||0),this.y=o.clean(n||0)}o.prototype={change:function(t){if("function"==typeof t)this.observers?this.observers.push(t):this.observers=[t];else if(this.observers&&this.observers.length)for(var n=this.observers.length-1;n>=0;n--)this.observers[n](this,t);return this},ignore:function(t){if(this.observers)if(t)for(var n=this.observers,e=n.length;e--;)n[e]===t&&n.splice(e,1);else this.observers=[];return this},set:function(t,n,e){if("number"!=typeof t&&(e=n,n=t.y,t=t.x),this.x===t&&this.y===n)return this;var i=null;return!1!==e&&this.observers&&this.observers.length&&(i=this.clone()),this.x=o.clean(t),this.y=o.clean(n),!1!==e?this.change(i):void 0},zero:function(){return this.set(0,0)},clone:function(){return new this.constructor(this.x,this.y)},negate:function(t){return t?new this.constructor(-this.x,-this.y):this.set(-this.x,-this.y)},add:function(t,n,e){return"number"!=typeof t&&(e=n,s(t)?(n=t[1],t=t[0]):(n=t.y,t=t.x)),t+=this.x,n+=this.y,e?new this.constructor(t,n):this.set(t,n)},subtract:function(t,n,e){return"number"!=typeof t&&(e=n,s(t)?(n=t[1],t=t[0]):(n=t.y,t=t.x)),t=this.x-t,n=this.y-n,e?new this.constructor(t,n):this.set(t,n)},multiply:function(t,n,e){return"number"!=typeof t?(e=n,s(t)?(n=t[1],t=t[0]):(n=t.y,t=t.x)):"number"!=typeof n&&(e=n,n=t),t*=this.x,n*=this.y,e?new this.constructor(t,n):this.set(t,n)},rotate:function(t,n,e){var i,r,s=this.x,o=this.y,c=Math.cos(t),u=Math.sin(t);return i=c*s-(n=n?-1:1)*u*o,r=n*u*s+c*o,e?new this.constructor(i,r):this.set(i,r)},length:function(){var t=this.x,n=this.y;return Math.sqrt(t*t+n*n)},lengthSquared:function(){var t=this.x,n=this.y;return t*t+n*n},distance:function(t){var n=this.x-t.x,e=this.y-t.y;return Math.sqrt(n*n+e*e)},nearest:function(t){for(var n,e=Number.MAX_VALUE,i=null,r=t.length-1;r>=0;r--)(n=this.distance(t[r]))<=e&&(e=n,i=t[r]);return i},normalize:function(t){var n=this.length(),e=n<Number.MIN_VALUE?0:1/n;return t?new this.constructor(this.x*e,this.y*e):this.set(this.x*e,this.y*e)},equal:function(t,n){return"number"!=typeof t&&(s(t)?(n=t[1],t=t[0]):(n=t.y,t=t.x)),o.clean(t)===this.x&&o.clean(n)===this.y},abs:function(t){var n=Math.abs(this.x),e=Math.abs(this.y);return t?new this.constructor(n,e):this.set(n,e)},min:function(t,n){var e=this.x,i=this.y,r=t.x,s=t.y,o=e<r?e:r,c=i<s?i:s;return n?new this.constructor(o,c):this.set(o,c)},max:function(t,n){var e=this.x,i=this.y,r=t.x,s=t.y,o=e>r?e:r,c=i>s?i:s;return n?new this.constructor(o,c):this.set(o,c)},clamp:function(t,n,e){var i=this.min(n,!0).max(t);return e?i:this.set(i.x,i.y)},lerp:function(t,n,e){return this.add(t.subtract(this,!0).multiply(n),e)},skew:function(t){return t?new this.constructor(-this.y,this.x):this.set(-this.y,this.x)},dot:function(t){return o.clean(this.x*t.x+t.y*this.y)},perpDot:function(t){return o.clean(this.x*t.y-this.y*t.x)},angleTo:function(t){return Math.atan2(this.perpDot(t),this.dot(t))},divide:function(t,n,e){if("number"!=typeof t?(e=n,s(t)?(n=t[1],t=t[0]):(n=t.y,t=t.x)):"number"!=typeof n&&(e=n,n=t),0===t||0===n)throw new Error("division by zero");if(isNaN(t)||isNaN(n))throw new Error("NaN detected");return e?new this.constructor(this.x/t,this.y/n):this.set(this.x/t,this.y/n)},isPointOnLine:function(t,n){return(t.y-this.y)*(t.x-n.x)==(t.y-n.y)*(t.x-this.x)},toArray:function(){return[this.x,this.y]},fromArray:function(t){return this.set(t[0],t[1])},toJSON:function(){return{x:this.x,y:this.y}},toString:function(){return"("+this.x+", "+this.y+")"},constructor:o},o.fromArray=function(t,n){return new(n||o)(t[0],t[1])},o.precision=i||8;var c=Math.pow(10,o.precision);return o.clean=e||function(t){if(isNaN(t))throw new Error("NaN detected");if(!isFinite(t))throw new Error("Infinity detected");return Math.round(t)===t?t:Math.round(t*c)/c},o.inject=n,e||(o.fast=n((function(t){return t})),"object"==typeof t.exports?t.exports=o:window.Vec2=window.Vec2||o),o}()}},e={};function i(t){var r=e[t];if(void 0!==r)return r.exports;var s=e[t]={exports:{}};return n[t](s,s.exports,i),s.exports}i.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return i.d(n,{a:n}),n},i.d=(t,n)=>{for(var e in n)i.o(n,e)&&!i.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},i.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),(()=>{"use strict";let n,e,r=!1;function s(t=0,i=1){return t+(i-t)*(r=!r,r?n():e())}function o(t,n){return Math.floor(s(t,n+1))}function c(t=.5){return s()<t}const u=(t=0,n=1)=>{const e=1-s(),i=s();return t+Math.sqrt(-2*Math.log(e))*Math.cos(2*Math.PI*i)*n};var h=i(490),a=i.n(h);const l="http://www.w3.org/2000/svg";function x(t){const n=document.createElementNS(l,"g");return t.appendChild(n),n}function f(t,n){for(let e in n)n.hasOwnProperty(e)&&t.setAttribute(e,n[e])}function y(t,n,e){const i=document.createElementNS(l,"path");return f(i,{d:n}),f(i,e),t.appendChild(i),i}function p(t,n){const e=document.createElementNS(l,"animate");f(e,n),t.appendChild(e)}const{abs:d,cos:m,sin:g,acos:b,atan2:v,sqrt:z,pow:w}=Math;function _(t){return t<0?-w(-t,1/3):w(t,1/3)}const k=Math.PI,E=2*k,M=k/2,S=Number.MAX_SAFE_INTEGER||9007199254740991,N=Number.MIN_SAFE_INTEGER||-9007199254740991,A={x:0,y:0,z:0},I={Tvalues:[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Cvalues:[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],arcfn:function(t,n){const e=n(t);let i=e.x*e.x+e.y*e.y;return void 0!==e.z&&(i+=e.z*e.z),z(i)},compute:function(t,n,e){if(0===t)return n[0].t=0,n[0];const i=n.length-1;if(1===t)return n[i].t=1,n[i];const r=1-t;let s=n;if(0===i)return n[0].t=t,n[0];if(1===i){const n={x:r*s[0].x+t*s[1].x,y:r*s[0].y+t*s[1].y,t};return e&&(n.z=r*s[0].z+t*s[1].z),n}if(i<4){let n,o,c,u=r*r,h=t*t,a=0;2===i?(s=[s[0],s[1],s[2],A],n=u,o=r*t*2,c=h):3===i&&(n=u*r,o=u*t*3,c=r*h*3,a=t*h);const l={x:n*s[0].x+o*s[1].x+c*s[2].x+a*s[3].x,y:n*s[0].y+o*s[1].y+c*s[2].y+a*s[3].y,t};return e&&(l.z=n*s[0].z+o*s[1].z+c*s[2].z+a*s[3].z),l}const o=JSON.parse(JSON.stringify(n));for(;o.length>1;){for(let n=0;n<o.length-1;n++)o[n]={x:o[n].x+(o[n+1].x-o[n].x)*t,y:o[n].y+(o[n+1].y-o[n].y)*t},void 0!==o[n].z&&(o[n]=o[n].z+(o[n+1].z-o[n].z)*t);o.splice(o.length-1,1)}return o[0].t=t,o[0]},computeWithRatios:function(t,n,e,i){const r=1-t,s=e,o=n;let c,u=s[0],h=s[1],a=s[2],l=s[3];return u*=r,h*=t,2===o.length?(c=u+h,{x:(u*o[0].x+h*o[1].x)/c,y:(u*o[0].y+h*o[1].y)/c,z:!!i&&(u*o[0].z+h*o[1].z)/c,t}):(u*=r,h*=2*r,a*=t*t,3===o.length?(c=u+h+a,{x:(u*o[0].x+h*o[1].x+a*o[2].x)/c,y:(u*o[0].y+h*o[1].y+a*o[2].y)/c,z:!!i&&(u*o[0].z+h*o[1].z+a*o[2].z)/c,t}):(u*=r,h*=1.5*r,a*=3*r,l*=t*t*t,4===o.length?(c=u+h+a+l,{x:(u*o[0].x+h*o[1].x+a*o[2].x+l*o[3].x)/c,y:(u*o[0].y+h*o[1].y+a*o[2].y+l*o[3].y)/c,z:!!i&&(u*o[0].z+h*o[1].z+a*o[2].z+l*o[3].z)/c,t}):void 0))},derive:function(t,n){const e=[];for(let i=t,r=i.length,s=r-1;r>1;r--,s--){const t=[];for(let e,r=0;r<s;r++)e={x:s*(i[r+1].x-i[r].x),y:s*(i[r+1].y-i[r].y)},n&&(e.z=s*(i[r+1].z-i[r].z)),t.push(e);e.push(t),i=t}return e},between:function(t,n,e){return n<=t&&t<=e||I.approximately(t,n)||I.approximately(t,e)},approximately:function(t,n,e){return d(t-n)<=(e||1e-6)},length:function(t){const n=I.Tvalues.length;let e=0;for(let i,r=0;r<n;r++)i=.5*I.Tvalues[r]+.5,e+=I.Cvalues[r]*I.arcfn(i,t);return.5*e},map:function(t,n,e,i,r){return i+(t-n)/(e-n)*(r-i)},lerp:function(t,n,e){const i={x:n.x+t*(e.x-n.x),y:n.y+t*(e.y-n.y)};return void 0!==n.z&&void 0!==e.z&&(i.z=n.z+t*(e.z-n.z)),i},pointToString:function(t){let n=t.x+"/"+t.y;return void 0!==t.z&&(n+="/"+t.z),n},pointsToString:function(t){return"["+t.map(I.pointToString).join(", ")+"]"},copy:function(t){return JSON.parse(JSON.stringify(t))},angle:function(t,n,e){const i=n.x-t.x,r=n.y-t.y,s=e.x-t.x,o=e.y-t.y;return v(i*o-r*s,i*s+r*o)},round:function(t,n){const e=""+t,i=e.indexOf(".");return parseFloat(e.substring(0,i+1+n))},dist:function(t,n){const e=t.x-n.x,i=t.y-n.y;return z(e*e+i*i)},closest:function(t,n){let e,i,r=w(2,63);return t.forEach((function(t,s){i=I.dist(n,t),i<r&&(r=i,e=s)})),{mdist:r,mpos:e}},abcratio:function(t,n){if(2!==n&&3!==n)return!1;if(void 0===t)t=.5;else if(0===t||1===t)return t;const e=w(t,n)+w(1-t,n);return d((e-1)/e)},projectionratio:function(t,n){if(2!==n&&3!==n)return!1;if(void 0===t)t=.5;else if(0===t||1===t)return t;const e=w(1-t,n);return e/(w(t,n)+e)},lli8:function(t,n,e,i,r,s,o,c){const u=(t-e)*(s-c)-(n-i)*(r-o);return 0!=u&&{x:((t*i-n*e)*(r-o)-(t-e)*(r*c-s*o))/u,y:((t*i-n*e)*(s-c)-(n-i)*(r*c-s*o))/u}},lli4:function(t,n,e,i){const r=t.x,s=t.y,o=n.x,c=n.y,u=e.x,h=e.y,a=i.x,l=i.y;return I.lli8(r,s,o,c,u,h,a,l)},lli:function(t,n){return I.lli4(t,t.c,n,n.c)},makeline:function(t,n){return new q(t.x,t.y,(t.x+n.x)/2,(t.y+n.y)/2,n.x,n.y)},findbbox:function(t){let n=S,e=S,i=N,r=N;return t.forEach((function(t){const s=t.bbox();n>s.x.min&&(n=s.x.min),e>s.y.min&&(e=s.y.min),i<s.x.max&&(i=s.x.max),r<s.y.max&&(r=s.y.max)})),{x:{min:n,mid:(n+i)/2,max:i,size:i-n},y:{min:e,mid:(e+r)/2,max:r,size:r-e}}},shapeintersections:function(t,n,e,i,r){if(!I.bboxoverlap(n,i))return[];const s=[],o=[t.startcap,t.forward,t.back,t.endcap],c=[e.startcap,e.forward,e.back,e.endcap];return o.forEach((function(n){n.virtual||c.forEach((function(i){if(i.virtual)return;const o=n.intersects(i,r);o.length>0&&(o.c1=n,o.c2=i,o.s1=t,o.s2=e,s.push(o))}))})),s},makeshape:function(t,n,e){const i=n.points.length,r=t.points.length,s=I.makeline(n.points[i-1],t.points[0]),o=I.makeline(t.points[r-1],n.points[0]),c={startcap:s,forward:t,back:n,endcap:o,bbox:I.findbbox([s,t,n,o]),intersections:function(t){return I.shapeintersections(c,c.bbox,t,t.bbox,e)}};return c},getminmax:function(t,n,e){if(!e)return{min:0,max:0};let i,r,s=S,o=N;-1===e.indexOf(0)&&(e=[0].concat(e)),-1===e.indexOf(1)&&e.push(1);for(let c=0,u=e.length;c<u;c++)i=e[c],r=t.get(i),r[n]<s&&(s=r[n]),r[n]>o&&(o=r[n]);return{min:s,mid:(s+o)/2,max:o,size:o-s}},align:function(t,n){const e=n.p1.x,i=n.p1.y,r=-v(n.p2.y-i,n.p2.x-e);return t.map((function(t){return{x:(t.x-e)*m(r)-(t.y-i)*g(r),y:(t.x-e)*g(r)+(t.y-i)*m(r)}}))},roots:function(t,n){n=n||{p1:{x:0,y:0},p2:{x:1,y:0}};const e=t.length-1,i=I.align(t,n),r=function(t){return 0<=t&&t<=1};if(2===e){const t=i[0].y,n=i[1].y,e=i[2].y,s=t-2*n+e;if(0!==s){const i=-z(n*n-t*e),o=-t+n;return[-(i+o)/s,-(-i+o)/s].filter(r)}return n!==e&&0===s?[(2*n-e)/(2*n-2*e)].filter(r):[]}const s=i[0].y,o=i[1].y,c=i[2].y;let u=3*o-s-3*c+i[3].y,h=3*s-6*o+3*c,a=-3*s+3*o,l=s;if(I.approximately(u,0)){if(I.approximately(h,0))return I.approximately(a,0)?[]:[-l/a].filter(r);const t=z(a*a-4*h*l),n=2*h;return[(t-a)/n,(-a-t)/n].filter(r)}h/=u,a/=u,l/=u;const x=(3*a-h*h)/3,f=x/3,y=(2*h*h*h-9*h*a+27*l)/27,p=y/2,d=p*p+f*f*f;let g,v,w,k,M;if(d<0){const t=-x/3,n=z(t*t*t),e=-y/(2*n),i=b(e<-1?-1:e>1?1:e),s=2*_(n);return w=s*m(i/3)-h/3,k=s*m((i+E)/3)-h/3,M=s*m((i+2*E)/3)-h/3,[w,k,M].filter(r)}if(0===d)return g=p<0?_(-p):-_(p),w=2*g-h/3,k=-g-h/3,[w,k].filter(r);{const t=z(d);return g=_(-p+t),v=_(p+t),[g-v-h/3].filter(r)}},droots:function(t){if(3===t.length){const n=t[0],e=t[1],i=t[2],r=n-2*e+i;if(0!==r){const t=-z(e*e-n*i),s=-n+e;return[-(t+s)/r,-(-t+s)/r]}return e!==i&&0===r?[(2*e-i)/(2*(e-i))]:[]}if(2===t.length){const n=t[0],e=t[1];return n!==e?[n/(n-e)]:[]}return[]},curvature:function(t,n,e,i,r){let s,o,c,u,h=0,a=0;const l=I.compute(t,n),x=I.compute(t,e),f=l.x*l.x+l.y*l.y;if(i?(s=z(w(l.y*x.z-x.y*l.z,2)+w(l.z*x.x-x.z*l.x,2)+w(l.x*x.y-x.x*l.y,2)),o=w(f+l.z*l.z,1.5)):(s=l.x*x.y-l.y*x.x,o=w(f,1.5)),0===s||0===o)return{k:0,r:0};if(h=s/o,a=o/s,!r){const r=I.curvature(t-.001,n,e,i,!0).k,s=I.curvature(t+.001,n,e,i,!0).k;u=(s-h+(h-r))/2,c=(d(s-h)+d(h-r))/2}return{k:h,r:a,dk:u,adk:c}},inflections:function(t){if(t.length<4)return[];const n=I.align(t,{p1:t[0],p2:t.slice(-1)[0]}),e=n[2].x*n[1].y,i=n[3].x*n[1].y,r=n[1].x*n[2].y,s=18*(-3*e+2*i+3*r-n[3].x*n[2].y),o=18*(3*e-i-3*r),c=18*(r-e);if(I.approximately(s,0)){if(!I.approximately(o,0)){let t=-c/o;if(0<=t&&t<=1)return[t]}return[]}const u=2*s;if(I.approximately(u,0))return[];const h=o*o-4*s*c;if(h<0)return[];const a=Math.sqrt(h);return[(a-o)/u,-(o+a)/u].filter((function(t){return 0<=t&&t<=1}))},bboxoverlap:function(t,n){const e=["x","y"],i=e.length;for(let r,s,o,c,u=0;u<i;u++)if(r=e[u],s=t[r].mid,o=n[r].mid,c=(t[r].size+n[r].size)/2,d(s-o)>=c)return!1;return!0},expandbox:function(t,n){n.x.min<t.x.min&&(t.x.min=n.x.min),n.y.min<t.y.min&&(t.y.min=n.y.min),n.z&&n.z.min<t.z.min&&(t.z.min=n.z.min),n.x.max>t.x.max&&(t.x.max=n.x.max),n.y.max>t.y.max&&(t.y.max=n.y.max),n.z&&n.z.max>t.z.max&&(t.z.max=n.z.max),t.x.mid=(t.x.min+t.x.max)/2,t.y.mid=(t.y.min+t.y.max)/2,t.z&&(t.z.mid=(t.z.min+t.z.max)/2),t.x.size=t.x.max-t.x.min,t.y.size=t.y.max-t.y.min,t.z&&(t.z.size=t.z.max-t.z.min)},pairiteration:function(t,n,e){const i=t.bbox(),r=n.bbox(),s=1e5,o=e||.5;if(i.x.size+i.y.size<o&&r.x.size+r.y.size<o)return[(s*(t._t1+t._t2)/2|0)/s+"/"+(s*(n._t1+n._t2)/2|0)/s];let c=t.split(.5),u=n.split(.5),h=[{left:c.left,right:u.left},{left:c.left,right:u.right},{left:c.right,right:u.right},{left:c.right,right:u.left}];h=h.filter((function(t){return I.bboxoverlap(t.left.bbox(),t.right.bbox())}));let a=[];return 0===h.length||(h.forEach((function(t){a=a.concat(I.pairiteration(t.left,t.right,o))})),a=a.filter((function(t,n){return a.indexOf(t)===n}))),a},getccenter:function(t,n,e){const i=n.x-t.x,r=n.y-t.y,s=e.x-n.x,o=e.y-n.y,c=i*m(M)-r*g(M),u=i*g(M)+r*m(M),h=s*m(M)-o*g(M),a=s*g(M)+o*m(M),l=(t.x+n.x)/2,x=(t.y+n.y)/2,f=(n.x+e.x)/2,y=(n.y+e.y)/2,p=l+c,d=x+u,b=f+h,z=y+a,w=I.lli8(l,x,p,d,f,y,b,z),_=I.dist(w,t);let k,S=v(t.y-w.y,t.x-w.x),N=v(n.y-w.y,n.x-w.x),A=v(e.y-w.y,e.x-w.x);return S<A?((S>N||N>A)&&(S+=E),S>A&&(k=A,A=S,S=k)):A<N&&N<S?(k=A,A=S,S=k):A+=E,w.s=S,w.e=A,w.r=_,w},numberSort:function(t,n){return t-n}};class O{constructor(t){this.curves=[],this._3d=!1,t&&(this.curves=t,this._3d=this.curves[0]._3d)}valueOf(){return this.toString()}toString(){return"["+this.curves.map((function(t){return I.pointsToString(t.points)})).join(", ")+"]"}addCurve(t){this.curves.push(t),this._3d=this._3d||t._3d}length(){return this.curves.map((function(t){return t.length()})).reduce((function(t,n){return t+n}))}curve(t){return this.curves[t]}bbox(){const t=this.curves;for(var n=t[0].bbox(),e=1;e<t.length;e++)I.expandbox(n,t[e].bbox());return n}offset(t){const n=[];return this.curves.forEach((function(e){n.push(...e.offset(t))})),new O(n)}}const{abs:C,min:j,max:T,cos:$,sin:B,acos:D,sqrt:P}=Math,F=Math.PI;class q{constructor(t){let n=t&&t.forEach?t:Array.from(arguments).slice(),e=!1;if("object"==typeof n[0]){e=n.length;const t=[];n.forEach((function(n){["x","y","z"].forEach((function(e){void 0!==n[e]&&t.push(n[e])}))})),n=t}let i=!1;const r=n.length;if(e){if(e>4){if(1!==arguments.length)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");i=!0}}else if(6!==r&&8!==r&&9!==r&&12!==r&&1!==arguments.length)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");const s=this._3d=!i&&(9===r||12===r)||t&&t[0]&&void 0!==t[0].z,o=this.points=[];for(let t=0,e=s?3:2;t<r;t+=e){var c={x:n[t],y:n[t+1]};s&&(c.z=n[t+2]),o.push(c)}const u=this.order=o.length-1,h=this.dims=["x","y"];s&&h.push("z"),this.dimlen=h.length;const a=I.align(o,{p1:o[0],p2:o[u]}),l=I.dist(o[0],o[u]);this._linear=a.reduce(((t,n)=>t+C(n.y)),0)<l/50,this._lut=[],this._t1=0,this._t2=1,this.update()}static quadraticFromPoints(t,n,e,i){if(void 0===i&&(i=.5),0===i)return new q(n,n,e);if(1===i)return new q(t,n,n);const r=q.getABC(2,t,n,e,i);return new q(t,r.A,e)}static cubicFromPoints(t,n,e,i,r){void 0===i&&(i=.5);const s=q.getABC(3,t,n,e,i);void 0===r&&(r=I.dist(n,s.C));const o=r*(1-i)/i,c=I.dist(t,e),u=(e.x-t.x)/c,h=(e.y-t.y)/c,a=r*u,l=r*h,x=o*u,f=o*h,y=n.x-a,p=n.y-l,d=n.x+x,m=n.y+f,g=s.A,b=g.x+(y-g.x)/(1-i),v=g.y+(p-g.y)/(1-i),z=g.x+(d-g.x)/i,w=g.y+(m-g.y)/i,_={x:t.x+(b-t.x)/i,y:t.y+(v-t.y)/i},k={x:e.x+(z-e.x)/(1-i),y:e.y+(w-e.y)/(1-i)};return new q(t,_,k,e)}static getUtils(){return I}getUtils(){return q.getUtils()}static get PolyBezier(){return O}valueOf(){return this.toString()}toString(){return I.pointsToString(this.points)}toSVG(){if(this._3d)return!1;const t=this.points,n=["M",t[0].x,t[0].y,2===this.order?"Q":"C"];for(let e=1,i=t.length;e<i;e++)n.push(t[e].x),n.push(t[e].y);return n.join(" ")}setRatios(t){if(t.length!==this.points.length)throw new Error("incorrect number of ratio values");this.ratios=t,this._lut=[]}verify(){const t=this.coordDigest();t!==this._print&&(this._print=t,this.update())}coordDigest(){return this.points.map((function(t,n){return""+n+t.x+t.y+(t.z?t.z:0)})).join("")}update(){this._lut=[],this.dpoints=I.derive(this.points,this._3d),this.computedirection()}computedirection(){const t=this.points,n=I.angle(t[0],t[this.order],t[1]);this.clockwise=n>0}length(){return I.length(this.derivative.bind(this))}static getABC(t=2,n,e,i,r=.5){const s=I.projectionratio(r,t),o=1-s,c={x:s*n.x+o*i.x,y:s*n.y+o*i.y},u=I.abcratio(r,t);return{A:{x:e.x+(e.x-c.x)/u,y:e.y+(e.y-c.y)/u},B:e,C:c,S:n,E:i}}getABC(t,n){n=n||this.get(t);let e=this.points[0],i=this.points[this.order];return q.getABC(this.order,e,n,i,t)}getLUT(t){if(this.verify(),t=t||100,this._lut.length===t)return this._lut;this._lut=[],t++,this._lut=[];for(let n,e,i=0;i<t;i++)e=i/(t-1),n=this.compute(e),n.t=e,this._lut.push(n);return this._lut}on(n,e){e=e||5;const i=this.getLUT(),r=[];for(let t,s=0,o=0;s<i.length;s++)t=i[s],I.dist(t,n)<e&&(r.push(t),o+=s/i.length);return!!r.length&&(t/=r.length)}project(t){const n=this.getLUT(),e=n.length-1,i=I.closest(n,t),r=i.mpos,s=(r-1)/e,o=(r+1)/e,c=.1/e;let u,h,a=i.mdist,l=s,x=l;for(a+=1;l<o+c;l+=c)u=this.compute(l),h=I.dist(t,u),h<a&&(a=h,x=l);return x=x<0?0:x>1?1:x,u=this.compute(x),u.t=x,u.d=a,u}get(t){return this.compute(t)}point(t){return this.points[t]}compute(t){return this.ratios?I.computeWithRatios(t,this.points,this.ratios,this._3d):I.compute(t,this.points,this._3d,this.ratios)}raise(){const t=this.points,n=[t[0]],e=t.length;for(let i,r,s=1;s<e;s++)i=t[s],r=t[s-1],n[s]={x:(e-s)/e*i.x+s/e*r.x,y:(e-s)/e*i.y+s/e*r.y};return n[e]=t[e-1],new q(n)}derivative(t){return I.compute(t,this.dpoints[0],this._3d)}dderivative(t){return I.compute(t,this.dpoints[1],this._3d)}align(){let t=this.points;return new q(I.align(t,{p1:t[0],p2:t[t.length-1]}))}curvature(t){return I.curvature(t,this.dpoints[0],this.dpoints[1],this._3d)}inflections(){return I.inflections(this.points)}normal(t){return this._3d?this.__normal3(t):this.__normal2(t)}__normal2(t){const n=this.derivative(t),e=P(n.x*n.x+n.y*n.y);return{t,x:-n.y/e,y:n.x/e}}__normal3(t){const n=this.derivative(t),e=this.derivative(t+.01),i=P(n.x*n.x+n.y*n.y+n.z*n.z),r=P(e.x*e.x+e.y*e.y+e.z*e.z);n.x/=i,n.y/=i,n.z/=i,e.x/=r,e.y/=r,e.z/=r;const s={x:e.y*n.z-e.z*n.y,y:e.z*n.x-e.x*n.z,z:e.x*n.y-e.y*n.x},o=P(s.x*s.x+s.y*s.y+s.z*s.z);s.x/=o,s.y/=o,s.z/=o;const c=[s.x*s.x,s.x*s.y-s.z,s.x*s.z+s.y,s.x*s.y+s.z,s.y*s.y,s.y*s.z-s.x,s.x*s.z-s.y,s.y*s.z+s.x,s.z*s.z];return{t,x:c[0]*n.x+c[1]*n.y+c[2]*n.z,y:c[3]*n.x+c[4]*n.y+c[5]*n.z,z:c[6]*n.x+c[7]*n.y+c[8]*n.z}}hull(t){let n=this.points,e=[],i=[],r=0;for(i[r++]=n[0],i[r++]=n[1],i[r++]=n[2],3===this.order&&(i[r++]=n[3]);n.length>1;){e=[];for(let s,o=0,c=n.length-1;o<c;o++)s=I.lerp(t,n[o],n[o+1]),i[r++]=s,e.push(s);n=e}return i}split(t,n){if(0===t&&n)return this.split(n).left;if(1===n)return this.split(t).right;const e=this.hull(t),i={left:2===this.order?new q([e[0],e[3],e[5]]):new q([e[0],e[4],e[7],e[9]]),right:2===this.order?new q([e[5],e[4],e[2]]):new q([e[9],e[8],e[6],e[3]]),span:e};return i.left._t1=I.map(0,0,1,this._t1,this._t2),i.left._t2=I.map(t,0,1,this._t1,this._t2),i.right._t1=I.map(t,0,1,this._t1,this._t2),i.right._t2=I.map(1,0,1,this._t1,this._t2),n?(n=I.map(n,t,1,0,1),i.right.split(n).left):i}extrema(){const t={};let n=[];return this.dims.forEach(function(e){let i=function(t){return t[e]},r=this.dpoints[0].map(i);t[e]=I.droots(r),3===this.order&&(r=this.dpoints[1].map(i),t[e]=t[e].concat(I.droots(r))),t[e]=t[e].filter((function(t){return t>=0&&t<=1})),n=n.concat(t[e].sort(I.numberSort))}.bind(this)),t.values=n.sort(I.numberSort).filter((function(t,e){return n.indexOf(t)===e})),t}bbox(){const t=this.extrema(),n={};return this.dims.forEach(function(e){n[e]=I.getminmax(this,e,t[e])}.bind(this)),n}overlaps(t){const n=this.bbox(),e=t.bbox();return I.bboxoverlap(n,e)}offset(t,n){if(void 0!==n){const e=this.get(t),i=this.normal(t),r={c:e,n:i,x:e.x+i.x*n,y:e.y+i.y*n};return this._3d&&(r.z=e.z+i.z*n),r}if(this._linear){const n=this.normal(0),e=this.points.map((function(e){const i={x:e.x+t*n.x,y:e.y+t*n.y};return e.z&&n.z&&(i.z=e.z+t*n.z),i}));return[new q(e)]}return this.reduce().map((function(n){return n._linear?n.offset(t)[0]:n.scale(t)}))}simple(){if(3===this.order){const t=I.angle(this.points[0],this.points[3],this.points[1]),n=I.angle(this.points[0],this.points[3],this.points[2]);if(t>0&&n<0||t<0&&n>0)return!1}const t=this.normal(0),n=this.normal(1);let e=t.x*n.x+t.y*n.y;return this._3d&&(e+=t.z*n.z),C(D(e))<F/3}reduce(){let t,n,e=0,i=0,r=.01,s=[],o=[],c=this.extrema().values;for(-1===c.indexOf(0)&&(c=[0].concat(c)),-1===c.indexOf(1)&&c.push(1),e=c[0],t=1;t<c.length;t++)i=c[t],n=this.split(e,i),n._t1=e,n._t2=i,s.push(n),e=i;return s.forEach((function(t){for(e=0,i=0;i<=1;)for(i=e+r;i<=1.01;i+=r)if(n=t.split(e,i),!n.simple()){if(i-=r,C(e-i)<r)return[];n=t.split(e,i),n._t1=I.map(e,0,1,t._t1,t._t2),n._t2=I.map(i,0,1,t._t1,t._t2),o.push(n),e=i;break}e<1&&(n=t.split(e,1),n._t1=I.map(e,0,1,t._t1,t._t2),n._t2=t._t2,o.push(n))})),o}translate(t,n,e){e="number"==typeof e?e:n;const i=this.order;let r=this.points.map(((t,r)=>(1-r/i)*n+r/i*e));return new q(this.points.map(((n,e)=>({x:n.x+t.x*r[e],y:n.y+t.y*r[e]}))))}scale(t){const n=this.order;let e=!1;if("function"==typeof t&&(e=t),e&&2===n)return this.raise().scale(e);const i=this.clockwise,r=this.points;if(this._linear)return this.translate(this.normal(0),e?e(0):t,e?e(1):t);const s=e?e(0):t,o=e?e(1):t,c=[this.offset(0,10),this.offset(1,10)],u=[],h=I.lli4(c[0],c[0].c,c[1],c[1].c);if(!h)throw new Error("cannot scale this curve. Try reducing it first.");return[0,1].forEach((function(t){const e=u[t*n]=I.copy(r[t*n]);e.x+=(t?o:s)*c[t].n.x,e.y+=(t?o:s)*c[t].n.y})),e?([0,1].forEach((function(s){if(2!==n||!s){var o=r[s+1],c={x:o.x-h.x,y:o.y-h.y},a=e?e((s+1)/n):t;e&&!i&&(a=-a);var l=P(c.x*c.x+c.y*c.y);c.x/=l,c.y/=l,u[s+1]={x:o.x+a*c.x,y:o.y+a*c.y}}})),new q(u)):([0,1].forEach((t=>{if(2===n&&t)return;const e=u[t*n],i=this.derivative(t),s={x:e.x+i.x,y:e.y+i.y};u[t+1]=I.lli4(e,s,h,r[t+1])})),new q(u))}outline(t,n,e,i){if(n=void 0===n?t:n,this._linear){const r=this.normal(0),s=this.points[0],o=this.points[this.points.length-1];let c,u,h;void 0===e&&(e=t,i=n),c={x:s.x+r.x*t,y:s.y+r.y*t},h={x:o.x+r.x*e,y:o.y+r.y*e},u={x:(c.x+h.x)/2,y:(c.y+h.y)/2};const a=[c,u,h];c={x:s.x-r.x*n,y:s.y-r.y*n},h={x:o.x-r.x*i,y:o.y-r.y*i},u={x:(c.x+h.x)/2,y:(c.y+h.y)/2};const l=[h,u,c],x=I.makeline(l[2],a[0]),f=I.makeline(a[2],l[0]),y=[x,new q(a),f,new q(l)];return new O(y)}const r=this.reduce(),s=r.length,o=[];let c,u=[],h=0,a=this.length();const l=void 0!==e&&void 0!==i;function x(t,n,e,i,r){return function(s){const o=i/e,c=
*With each mint of “Beginnings”, collectors can claim a signed physical plot.* Beginnings is a generative art series exploring the promise of unborn ideas and the youthful naivety of beginnings. Each piece builds around an egg-shaped polygon that sometimes contains imperfections. As larger and larger lines echo on the page, the subtle defects take on bigger and bigger proportions and participate in the overall beauty. Beginnings is a generative art series for plotter output. Each iteration contains a specific paper color and two layers of black and white ink (sometimes, in rare cases, only black). The prints are meant to be framed within a white mat to provide a sense of continuity for the white lines. Each mint includes a signed physical plot. Claiming details can be found on the [Beginnings project page](https://www.0xphiiil.art/beginnings#claim).
Zupermat is the infinite documentary on the life of pseudo-random rectangular cuboids. Sometimes a deep dive into a particular side of their construction, other times a broad portrait of their organization as gangs, mob and anarcho-secret societies. The smooth and transient aspects of Zupermat will let the collector cohabitate with the piece while softly populating his peripheral vision. A brief glance, while immersed in reflection, should provide the reassuring motion to dive deeper into thought - or emerge with a newfound sense of direction. A full description of the features is available on the [Zupermat page](https://0xphiiil.art/zupermat). [spacebar] pause and reflect
Zupermat is a generative sculpture made of white shapes coloured by the ambient light. Using this strict visual grammar, the series explores sentiments and perceptions induced by organization of objects in space. The relative importance of these shapes is expressed by their form, size and position. As the vantage point changes - the perception of these qualities is reduced, reversed, rendered imperceptible or amplified. Zupermat aims to express a vast yet reassuring space - a sense of supreme calmness. ## Visited, not Animated Zupermat is not an animated piece. The viewer travels inside and around the sculpture in a randomly generated movement. The resulting effect exposes ever changing details and vantage points. Sometimes the piece is camera shy, other times you dive right in. A full description of the features is available on the [Zupermat page](https://0xphiiil.art/zupermat). [spacebar] pause and reflect
## Constructivism in a Third Dimension Zupermat is a generative sculpture made of white shapes coloured by the ambient light. Using this strict visual grammar, the series explores sentiments and perceptions induced by organization of objects in space. The relative importance of these shapes is expressed by their form, size and position. As the vantage point changes - the perception of these qualities is reduced, reversed, rendered imperceptible or amplified. Zupermat aims to express a vast yet reassuring space - a sense of supreme calmness. ## Visited, not Animated Zupermat is not an animated piece. The viewer travels inside and around the sculpture in a randomly generated movement. The resulting effect exposes ever changing details and vantage points. Sometimes the piece is camera shy, other times you dive right in. A full description of the features is available on the [Zupermat page](https://0xphiiil.art/zupermat). [spacebar] pause and reflect
## Constructivism in a Third Dimension Zupermat is a generative construction composed of white oblong shapes coloured by the ambient light. Using this strict visual grammar, the series explores sentiments and perceptions induced by organization of objects in space. The relative importance of these shapes is expressed by their form, size and position. As the vantage point changes - the perception of these qualities is reduced, reversed, rendered imperceptible or amplified. Zupermat aims to express a vast yet reassuring space - a sense of supreme calmness. ## Visited, not Animated Zupermat is not an animated piece. The viewer travels inside and around the sculpture in a randomly generated movement. The resulting effect exposes ever changing details and vantage points. Sometimes the piece is camera shy, other times you dive right in. A full description of the features is available on the [Zupermat page](https://0xphiiil.art/zupermat). [spacebar] pause and reflect
(()=>{"use strict";const t=new THREE.Vector3;function e(e,n,o,s,r,a){const i=2*Math.PI*r/4,c=Math.max(a-2*r,0),l=Math.PI/4;t.copy(n),t[s]=0,t.normalize();const d=.5*i/(i+c),h=1-t.angleTo(e)/l;return 1===Math.sign(t[o])?h*d:c/(i+c)+d+d*(1-h)}class n extends THREE.BoxBufferGeometry{constructor(t=1,n=1,o=1,s=2,r=.1){if(s=2*s+1,r=Math.min(t/2,n/2,o/2,r),super(1,1,1,s,s,s),1===s)return;const a=this.toNonIndexed();this.index=null,this.attributes.position=a.attributes.position,this.attributes.normal=a.attributes.normal,this.attributes.uv=a.attributes.uv;const i=new THREE.Vector3,c=new THREE.Vector3,l=new THREE.Vector3(t,n,o).divideScalar(2).subScalar(r),d=this.attributes.position.array,h=this.attributes.normal.array,f=this.attributes.uv.array,p=d.length/6,u=new THREE.Vector3,E=.5/s;for(let s=0,a=0;s<d.length;s+=3,a+=2)switch(i.fromArray(d,s),c.copy(i),c.x-=Math.sign(c.x)*E,c.y-=Math.sign(c.y)*E,c.z-=Math.sign(c.z)*E,c.normalize(),d[s+0]=l.x*Math.sign(i.x)+c.x*r,d[s+1]=l.y*Math.sign(i.y)+c.y*r,d[s+2]=l.z*Math.sign(i.z)+c.z*r,h[s+0]=c.x,h[s+1]=c.y,h[s+2]=c.z,Math.floor(s/p)){case 0:u.set(1,0,0),f[a+0]=e(u,c,"z","y",r,o),f[a+1]=1-e(u,c,"y","z",r,n);break;case 1:u.set(-1,0,0),f[a+0]=1-e(u,c,"z","y",r,o),f[a+1]=1-e(u,c,"y","z",r,n);break;case 2:u.set(0,1,0),f[a+0]=1-e(u,c,"x","z",r,t),f[a+1]=e(u,c,"z","x",r,o);break;case 3:u.set(0,-1,0),f[a+0]=1-e(u,c,"x","z",r,t),f[a+1]=1-e(u,c,"z","x",r,o);break;case 4:u.set(0,0,1),f[a+0]=1-e(u,c,"x","y",r,t),f[a+1]=1-e(u,c,"y","x",r,n);break;case 5:u.set(0,0,-1),f[a+0]=e(u,c,"x","y",r,t),f[a+1]=1-e(u,c,"y","x",r,n)}}}const o=new class{constructor(t){this.useA=!1;let e=function(t){let e=parseInt(t.substr(0,8),16),n=parseInt(t.substr(8,8),16),o=parseInt(t.substr(16,8),16),s=parseInt(t.substr(24,8),16);return function(){e|=0,n|=0,o|=0,s|=0;let t=(e+n|0)+s|0;return s=s+1|0,e=n^n>>>9,n=o+(o<<3)|0,o=o<<21|o>>>11,o=o+t|0,(t>>>0)/4294967296}};this.prngA=new e(t.hash.substr(2,32)),this.prngB=new e(t.hash.substr(34,32));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}rd(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}rn(t,e){return t+(e-t)*this.rd()}ri(t,e){return Math.floor(this.rn(t,e+1))}rb(t=.5){return this.rd()<t}rc(t){return t[this.ri(0,t.length-1)]}}(tokenData);let s=!/\bHeadlessChrome/.test(navigator.userAgent);const r=(t=-1)=>{const e=o.rn(t,1),n=2*o.rd()*Math.PI,s=Math.sqrt(1-e**2),r=s*Math.cos(n),a=s*Math.sin(n);return new THREE.Vector3(r,a,e)},a=t=>0==t?r(0):r(),i={s:{ranges:[[.1,.3],[.1,.3],[.1,.3]]},m:{ranges:[[.2,.5],[1,2],[.1,.5]]},l:{ranges:[[1,3.5],[4,6],[.5,2.5]]}},c=[{name:"day",light:.45,shadow:.015,ply:1.75},{name:"dawn",light:.35,shadow:.015,ply:.5},{name:"dusk",light:.23,shadow:.03,ply:-1.75}],l=(t=0)=>new THREE.MeshStandardMaterial({roughness:.4,side:THREE.DoubleSide,metalness:t}),d=(t,e=0)=>{if(0==t)return l(e);{const t=l(e);return[t,t,t,t,null,null]}};let h=0;const f=o.rc([{name:"soapbar mudbar",colors:["#ff0000","#0000ff"],bgColors:["#ffffff"],spot:["#00fffc"]},{name:"primary sink",colors:["#ff006e","#3a86ff","#ffbe0b","#003049"],bgColors:["#737373"],spot:["#00fffc"]},{name:"pasteleria",l:!0,f:!0,colors:["#70d6ff","#ff70a6","#d9ed92","#e9ff70"],bgColors:["#BAD0E6","#d9d9d9"],spot:["#00fffc"]},{name:"sliver",l:!0,f:!0,colors:["#c4c4c4","#878787","#575757","#dbfdff"],bgColors:["#afc6e4","#b2cedc"],spot:["#00aaff"]},{name:"royalty",f:!0,u:!0,colors:["#2d2c01","#FFE047","#edc531","#ffaa00","#ffd500"],c2:["#1c0bfe","#5e00bd","#becbfe","#b343fe"],bgColors:["#e3e3e3","#ded9e8"],spot:["#383800"],s2:["#570981"]},{name:"pure guava",f:!0,colors:["#ff1f96","#f129ff","#ff0000","#d4ff00","#62d24b"],bgColors:["#e3e3e3","#ffcccc"],spot:["#ed0c39"]}]);f.u&&(o.rb()?(f.colors=f.c2,f.spot=f.s2):h=.3);const p=o.rc(["piet","von","vich"]),u=o.rd();let E="unknown";E="vich"==p?"irrelevant":u<.25?"minimal":u<.75?"moderate":"total";const w=o.rc([9,13,17,22,25,33,37]),g=o.rc([0,1]),m=d(g,h),b=o.rb(.7),y=40;let M=o.rc([8,0,y,0,0,y,y]);const R=o.rc(f.bgColors);let H=o.ri(0,1);const T=o.rc(["gang","mob","anarchopanda"]);let x=null,z=2*Math.PI;"gang"==T?(x=[0,1,2].map((t=>a(g))),z=Math.PI/12):"mob"==T&&(x=[0,1,2,3,4].map((t=>a(g))),z=Math.PI/6),f.l&&(c[0]=c[2]);const S=o.rc(c),v=o.rd(),P=o.rd(),A=o.rc([.02,.02,.03,.03,.03,.04,.04,.05,.08]),I=["#ff3030","#393939"];let k=!1;0==g&&o.rb(.04)&&(k=!0,M=y);const C=o.rd(),L=t=>{if(k){const e=o.rb(C);et(t,e?I[0]:I[1])}},B=document.createElement("canvas");document.body.appendChild(B);const V=new THREE.Scene;V.fog=new THREE.FogExp2("#000000",.0125);const F=new THREE.AmbientLight(16777215,S.light);V.add(F);const D=o.rc(f.colors);if(f.f){const t=f.colors.indexOf(D);-1!=t&&f.colors.splice(t,1)}const G=o.rc(f.colors),j=new THREE.HemisphereLight(D,G,.3);V.add(j);let O=S.shadow;const W=o.rc(f.spot),q=new THREE.DirectionalLight(W,.3-O);q.position.set(1,.25,2),V.add(q);const X=q.clone();X.intensity=O,X.castShadow=!0,X.shadow.camera.near=-5,X.shadow.camera.far=6,X.shadow.mapSize.width=512,X.shadow.mapSize.height=512,X.shadow.bias=-.004,V.add(X);const Z=new THREE.PointLight("#ffA733",.5,10,2);Z.position.set(.5,S.ply,-5),Z.lookAt(0,0,0),V.add(Z);const N=new THREE.PointLight("#fff1a8",.2,10,2);V.add(N);const J=new THREE.Group,K=-Math.PI*o.rn(-.04,.03),Q=-Math.PI*o.rn(-.02,.03),U=(t,e=null)=>{const s=(t=>{const e=i[t].ranges.map((t=>o.rn(...t)));return new n(...e,16,A)})(t),r=o.rb(P),a=e||d(r?0:1,h),c=new THREE.Mesh(s,a);return c.castShadow=!0,c.receiveShadow=!0,c.position.z=3,c.rotateZ(K),c.rotateX(Q),c},Y=(t,e)=>{var n=(new THREE.Box3).setFromObject(t,!0);for(let t of e){var o=(new THREE.Box3).setFromObject(t,!0);if(n.intersectsBox(o))return!0}return!1},$=[.15,.4],_=(t,e)=>{const n=(()=>{let t=null;if(x){t=o.rc(x);const e=new THREE.Euler(o.rn(-z,z),o.rn(-z,z),o.rn(-z,z));t.applyEuler(e)}else t=a(g);return t})();for(;Y(t,e.children);){const e=o.rn(...$);t.position.addScaledVector(n,e)}},tt=t=>{const e=o.rb(u);let n=0;"piet"==p&&e?n=.5*Math.PI:"von"==p?(n=.25*Math.PI,e&&(n=-n)):"vich"==p&&(n=o.rn(0,Math.PI)),t.rotateZ(n)},et=(t,e)=>{t.material instanceof Array?(t.material[0].color.set(e),t.material[0].metalness=.5):(t.material.color.set(e),t.material.metalness=.5)},nt=U("l",m);b&&tt(nt),nt.rotateX(.1),L(nt),J.add(nt);for(let t=1;t<w;t++){const t=U(o.rb(v)?"m":"s");_(t,J),tt(t),t.position.z<6.2&&J.add(t),L(t)}V.add(J),J.children.reduce(((t,e)=>t+e.position.z),0),J.children.length;const ot=J.children.reduce(((t,e)=>e.position.z>t.position.z?e:t),J.children[0]),st=ot.position.z;let rt=3;if(1==g&&(rt=st),Z.position.z=o.rn(-3,rt),M!=y){const t=0==H?"#ffffff":"#444444",e=new THREE.MeshStandardMaterial({color:t,roughness:.5,side:THREE.DoubleSide,metalness:0}),n=new THREE.Mesh(new THREE.SphereGeometry(45,16,12),e),o=f.l?.1:.25,s=new THREE.SpotLight("#ffffff",o);s.angle=1.5*Math.PI,s.penumbra=1,s.position.set(30,-15,-10),s.target.position.set(0,0,-45),V.add(s),V.add(s.target);const r=s.clone();s.position.set(-15,30,-10),s.target.position.set(0,0,-45),V.add(r),V.add(r.target),V.fog.density=1e-4,V.add(n)}if(M>0){const t=new THREE.MeshStandardMaterial({color:R,roughness:.6,side:THREE.DoubleSide,metalness:k?.25:0});if(M==y){const e=new THREE.Mesh(new THREE.SphereGeometry(M,16,12),t);e.receiveShadow=!0,V.fog.density=.0125,V.add(e)}else{const e=new THREE.Mesh(new THREE.PlaneGeometry(M,M),t);e.receiveShadow=!0,V.add(e)}}const at={width:window.innerWidth,height:window.innerHeight},it=(t=.99)=>r(t).multiplyScalar(8),ct=()=>{if(o.rb(.66))return it(.98);{const t=o.ri(1,J.children.length-1),e=J.children[t],n=o.rn(e.position.length()+.5,9);return e.position.clone().setLength(n)}},lt=new THREE.PerspectiveCamera(75,at.width/at.height,.01,100),dt=ct(),ht=dt.clone();ht.clampLength(7,9),lt.position.copy(ht),lt.lookAt(nt.position),N.position.copy(lt.position),N.lookAt(nt.position),V.add(lt);const ft=new THREE.WebGLRenderer({antialias:!0,canvas:B});ft.setSize(at.width,at.height),ft.setPixelRatio(Math.min(window.devicePixelRatio,2)),ft.shadowMap.enabled=!0,ft.shadowMap.type=THREE.PCFSoftShadowMap,window.addEventListener("resize",(()=>{at.width=window.innerWidth,at.height=window.innerHeight,lt&&(lt.aspect=at.width/at.height,lt.updateProjectionMatrix()),ft&&(ft.setSize(at.width,at.height),ft.setPixelRatio(Math.min(window.devicePixelRatio,2)))}));let pt=dt;8==dt.length()&&(pt=(()=>{const t=ot.position.clone();return t.z+=o.rn(.1,3),t})());let ut=it();const Et=4*Math.PI,wt=.38*Et;let gt=0;const mt=new THREE.Clock,bt=()=>{try{if(s){const n=mt.getElapsedTime()+wt,o=Math.floor(n/Et);o!=gt&&(gt=o,pt=lt.position.clone(),ut=ct());const s=n%Et;lt.position.lerpVectors(pt,ut,(t=s,e=1-0,(t/=Et/2)<1?e/2*t*t*t*t*t+0:e/2*((t-=2)*t*t*t*t+2)+0)),lt.lookAt(nt.position),N.position.copy(lt.position),N.lookAt(nt.position)}ft.render(V,lt),window.requestAnimationFrame(bt)}catch(t){console.log(t)}var t,e};let yt=0;document.body.onkeyup=function(t){" "==t.key|"Space"==t.code&&(mt.running?(yt=mt.getElapsedTime(),mt.stop()):(mt.start(),mt.elapsedTime=yt))},bt()})();
## Sourced in Winter I come from the north. Half of my life is spent surrounded by winter's snow and silence. Winter is an unstoppable force that dampens everything. Sounds are muffled. Steps are slowed. Winter is supreme. Snow being a prime element of winter - white and reflective. It takes on the blueish tint of the sky. Under a bright moon, it returns a fluorescence. It absorbs and reflects its surroundings. ## Constructivism in a Third Dimension Zupermat is a generative construction composed of white oblong shapes coloured by the ambient light. Using this strict visual grammar, the series explores sentiments and perceptions induced by organization of objects in space. The relative importance of these shapes is expressed by their form, size and position. As the vantage point changes - the perception of these qualities is reduced, reversed, rendered imperceptible or amplified. Zupermat aims to express a vast yet reassuring space - a sense of supreme calmness. ## Visited, not Animated Zupermat is not an animated piece. The viewer travels inside and around the sculpture in a randomly generated movement. The resulting effect exposes ever changing details and vantage points. Sometimes the piece is camera shy, other times you dive right in. A full description of the features is available on the [Zupermat page](https://0xphiiil.art/zupermat). [spacebar] pause and reflect