brepjs-cad 0.76.0 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,60 @@
1
+ var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);function t(e,t){return e[t]}function n(e,t=0){return[e[t],e[t+1],e[t+2]]}var r=class extends Error{location;constructor(e,t){super(`Bug in ${e}: ${t}`),this.name=`BrepBugError`,this.location=e}};function i(e,t){throw new r(e,t)}var a={exact:!0,brepExport:!0,exactMeasurement:!0,tessellationModel:`extract-time`},o={exact:!0,brepExport:!0,exactMeasurement:!0,tessellationModel:`none`},s=Symbol.for(`brepjs.kernel.unsupportedOperation`),c=class extends Error{constructor(e){super(e),this.name=`UnsupportedKernelOperationError`,Object.defineProperty(this,s,{value:!0})}};function l(e){return e instanceof Error&&Reflect.get(e,s)===!0}function u(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function d(e,t){return{x:e.y*t.z-e.z*t.y,y:e.z*t.x-e.x*t.z,z:e.x*t.y-e.y*t.x}}function f(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function p(e){return Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z)}function m(e,t){let n=e.x-t.x,r=e.y-t.y,i=e.z-t.z;return n*n+r*r+i*i}function h(e,t){let n=e[t];if(n===void 0)throw Error(`Index ${t} out of bounds`);return n}function g(e,t){let n=e[t];if(n===void 0)throw Error(`Index ${t} out of bounds`);return n}function _(e,t,n,r){let i=d(u(h(e,n),h(e,t)),u(h(e,r),h(e,t))),a=p(i),o=a>1e-14?{x:i.x/a,y:i.y/a,z:i.z/a}:i;return{a:t,b:n,c:r,normal:o,offset:f(o,h(e,t)),alive:!0,outsidePoints:[]}}function v(e,t){return f(e.normal,t)-e.offset}function y(e,t){let n=t*t,r=[];for(let t of e){let e=!1;for(let i of r)if(m(t,i)<n){e=!0;break}e||r.push(t)}return r}function b(e){let t=e.length;if(t<4)return null;let n=0,r=1,i=m(h(e,0),h(e,1));for(let a=0;a<t;a++)for(let o=a+1;o<t;o++){let t=m(h(e,a),h(e,o));t>i&&(i=t,n=a,r=o)}if(i<1e-20)return null;let a=u(h(e,r),h(e,n)),o=-1,s=-1;for(let i=0;i<t;i++){if(i===n||i===r)continue;let t=d(a,u(h(e,i),h(e,n))),c=f(t,t);c>s&&(s=c,o=i)}if(o===-1||s<1e-20)return null;let c=d(u(h(e,r),h(e,n)),u(h(e,o),h(e,n))),l=p(c);if(l<1e-14)return null;let g={x:c.x/l,y:c.y/l,z:c.z/l},_=f(g,h(e,n)),v=-1,y=-1;for(let i=0;i<t;i++){if(i===n||i===r||i===o)continue;let t=Math.abs(f(g,h(e,i))-_);t>y&&(y=t,v=i)}return v===-1||y<1e-14?null:f(g,h(e,v))-_>0?[n,o,r,v]:[n,r,o,v]}function x(e,t){let n=y(e,t);if(n.length<4)throw Error(n.length===0?`No points provided for convex hull`:`Fewer than 4 non-coincident points; cannot form a 3D convex hull`);let r=b(n);if(r===null)throw Error(`All points are coplanar; cannot form a 3D convex hull`);let[i,a,o,s]=r,c={x:(h(n,i).x+h(n,a).x+h(n,o).x+h(n,s).x)/4,y:(h(n,i).y+h(n,a).y+h(n,o).y+h(n,s).y)/4,z:(h(n,i).z+h(n,a).z+h(n,o).z+h(n,s).z)/4};function l(e,t,r){let i=_(n,e,t,r),a={x:(h(n,e).x+h(n,t).x+h(n,r).x)/3,y:(h(n,e).y+h(n,t).y+h(n,r).y)/3,z:(h(n,e).z+h(n,t).z+h(n,r).z)/3},o=u(c,a);return f(i.normal,o)>0?_(n,e,r,t):i}let d=[l(i,a,o),l(i,o,s),l(i,s,a),l(a,s,o)],p=new Set([i,a,o,s]),m=1e-10;for(let e=0;e<n.length;e++)if(!p.has(e)){for(let t of d)if(v(t,h(n,e))>m){t.outsidePoints.push(e);break}}for(let e=0;e<n.length*4;e++){let e=null;for(let t of d)if(t.alive&&t.outsidePoints.length>0){e=t;break}if(e===null)break;let t=g(e.outsidePoints,0),r=v(e,h(n,t));for(let i=1;i<e.outsidePoints.length;i++){let a=g(e.outsidePoints,i),o=v(e,h(n,a));o>r&&(r=o,t=a)}let i=[];for(let e of d)e.alive&&v(e,h(n,t))>m&&i.push(e);let a=new Map;for(let e of i){let t=[[e.a,e.b],[e.b,e.c],[e.c,e.a]];for(let[e,n]of t){let t=e<n?`${e}-${n}`:`${n}-${e}`,r=a.get(t);r?r.count++:a.set(t,{a:e,b:n,count:1})}}let o=[];for(let e of a.values())e.count===1&&o.push({a:e.a,b:e.b});let s=[];for(let e of i){for(let n of e.outsidePoints)n!==t&&s.push(n);e.alive=!1,e.outsidePoints=[]}let c=[];for(let e of o){let r=_(n,e.a,e.b,t);c.push(r),d.push(r)}for(let e of s)for(let t of c)if(v(t,h(n,e))>m){t.outsidePoints.push(e);break}}let x=[];for(let e of d)e.alive&&x.push([e.a,e.b,e.c]);return{faces:x,points:n}}function S(e,t){switch(e.__bk2d){case`line`:return[e.ox+e.dx*t,e.oy+e.dy*t];case`circle`:{let n=e.sense?t:-t;return[e.cx+e.radius*Math.cos(n),e.cy+e.radius*Math.sin(n)]}case`ellipse`:{let n=e.sense?t:-t,r=Math.cos(e.xDirAngle),i=Math.sin(e.xDirAngle),a=e.majorRadius*Math.cos(n),o=e.minorRadius*Math.sin(n);return[e.cx+a*r-o*i,e.cy+a*i+o*r]}case`bezier`:return Te(e.poles,t);case`bspline`:return Ee(e,t);case`trimmed`:{let n=e.tStart+t*(e.tEnd-e.tStart);return S(e.basis,n)}}}function C(e,t){switch(e.__bk2d){case`line`:return[e.dx,e.dy];case`circle`:{let n=e.sense?t:-t,r=e.sense?1:-1;return[-e.radius*Math.sin(n)*r,e.radius*Math.cos(n)*r]}case`ellipse`:{let n=e.sense?t:-t,r=e.sense?1:-1,i=Math.cos(e.xDirAngle),a=Math.sin(e.xDirAngle),o=-e.majorRadius*Math.sin(n)*r,s=e.minorRadius*Math.cos(n)*r;return[o*i-s*a,o*a+s*i]}case`bezier`:{let n=1e-8,r=Te(e.poles,Math.max(0,t-n)),i=Te(e.poles,Math.min(1,t+n)),a=Math.min(1,t+n)-Math.max(0,t-n);return[(i[0]-r[0])/a,(i[1]-r[1])/a]}case`bspline`:{let n=1e-8,r=e.knots[0],i=e.knots[e.knots.length-1],a=Ee(e,Math.max(r,t-n)),o=Ee(e,Math.min(i,t+n)),s=Math.min(i,t+n)-Math.max(r,t-n);return[(o[0]-a[0])/s,(o[1]-a[1])/s]}case`trimmed`:{let n=e.tStart+t*(e.tEnd-e.tStart),r=C(e.basis,n),i=e.tEnd-e.tStart;return[r[0]*i,r[1]*i]}}}function w(e){switch(e.__bk2d){case`line`:return{first:0,last:e.len};case`circle`:case`ellipse`:return{first:0,last:2*Math.PI};case`bezier`:return{first:0,last:1};case`bspline`:return{first:e.knots[0],last:e.knots[e.knots.length-1]};case`trimmed`:return{first:0,last:1}}}function ee(e){switch(e.__bk2d){case`line`:return`LINE`;case`circle`:return`CIRCLE`;case`ellipse`:return`ELLIPSE`;case`bezier`:return`BEZIER_CURVE`;case`bspline`:return`BSPLINE_CURVE`;case`trimmed`:return`TRIMMED_`+ee(e.basis)}}function te(e,t,n,r){let i=n-e,a=r-t,o=Math.sqrt(i*i+a*a);return{__bk2d:`line`,ox:e,oy:t,dx:o>0?i/o:1,dy:o>0?a/o:0,len:o}}function ne(e,t,n,r=!0){return{__bk2d:`circle`,cx:e,cy:t,radius:n,sense:r}}function re(e,t,n,r,i,a){let o=2*(e*(r-a)+n*(a-t)+i*(t-r));if(Math.abs(o)<1e-12)return te(e,t,i,a);let s=((e*e+t*t)*(r-a)+(n*n+r*r)*(a-t)+(i*i+a*a)*(t-r))/o,c=((e*e+t*t)*(i-n)+(n*n+r*r)*(e-i)+(i*i+a*a)*(n-e))/o,l=Math.sqrt((e-s)**2+(t-c)**2),u=Math.atan2(t-c,e-s),d=Math.atan2(r-c,n-s),f=Math.atan2(a-c,i-s),p=d-u;p<0&&(p+=2*Math.PI);let m=f-u;m<0&&(m+=2*Math.PI);let h=p<m,g=ne(s,c,l,h);if(!h){let e=-u,t=-f;return t<e-1e-9&&(t+=2*Math.PI),{__bk2d:`trimmed`,basis:g,tStart:e,tEnd:t}}let _=f;return _<u-1e-9&&(_+=2*Math.PI),{__bk2d:`trimmed`,basis:g,tStart:u,tEnd:_}}function ie(e,t,n,r,i,a){let o=Math.sqrt(n*n+r*r),s=o>0?n/o:0,c=o>0?r/o:0,l=e-i,u=t-a,d=2*(u*s-l*c);if(Math.abs(d)<1e-12)return te(e,t,i,a);let f=-(l*l+u*u)/d,p=e-f*c,m=t+f*s,h=Math.abs(f),g=Math.atan2(t-m,e-p),_=Math.atan2(a-m,i-p),v=-(t-m)/h,y=(e-p)/h,b=s*v+c*y,x;if(b>0){let e=_-g;e<=0&&(e+=2*Math.PI),x=g+e/2}else{let e=_-g;e>=0&&(e-=2*Math.PI),x=g+e/2}return re(e,t,p+h*Math.cos(x),m+h*Math.sin(x),i,a)}function ae(e,t,n,r,i=1,a=0,o=!0){return{__bk2d:`ellipse`,cx:e,cy:t,majorRadius:n,minorRadius:r,xDirAngle:Math.atan2(a,i),sense:o}}function oe(e){return{__bk2d:`bezier`,poles:[...e]}}function se(e,t,n){switch(e.__bk2d){case`line`:return{...e,ox:e.ox+t,oy:e.oy+n};case`circle`:return{...e,cx:e.cx+t,cy:e.cy+n};case`ellipse`:return{...e,cx:e.cx+t,cy:e.cy+n};case`bezier`:return{...e,poles:e.poles.map(([e,r])=>[e+t,r+n])};case`bspline`:return{...e,poles:e.poles.map(([e,r])=>[e+t,r+n])};case`trimmed`:return{...e,basis:se(e.basis,t,n)}}}function ce(e,t,n,r){let i=Math.cos(t),a=Math.sin(t),o=(e,t)=>{let o=e-n,s=t-r;return[n+o*i-s*a,r+o*a+s*i]};switch(e.__bk2d){case`line`:{let[t,n]=o(e.ox,e.oy),r=e.dx*i-e.dy*a,s=e.dx*a+e.dy*i;return{...e,ox:t,oy:n,dx:r,dy:s}}case`circle`:{let[t,n]=o(e.cx,e.cy);return{...e,cx:t,cy:n}}case`ellipse`:{let[n,r]=o(e.cx,e.cy);return{...e,cx:n,cy:r,xDirAngle:e.xDirAngle+t}}case`bezier`:return{...e,poles:e.poles.map(([e,t])=>o(e,t))};case`bspline`:return{...e,poles:e.poles.map(([e,t])=>o(e,t))};case`trimmed`:return{...e,basis:ce(e.basis,t,n,r)}}}function le(e,t,n,r){let i=(e,i)=>[n+(e-n)*t,r+(i-r)*t];switch(e.__bk2d){case`line`:{let[t,n]=i(e.ox,e.oy),[r,a]=i(e.ox+e.dx*e.len,e.oy+e.dy*e.len),o=r-t,s=a-n,c=Math.sqrt(o*o+s*s);return{...e,ox:t,oy:n,dx:c>0?o/c:e.dx,dy:c>0?s/c:e.dy,len:c}}case`circle`:{let[n,r]=i(e.cx,e.cy);return{...e,cx:n,cy:r,radius:e.radius*Math.abs(t)}}case`ellipse`:{let[n,r]=i(e.cx,e.cy);return{...e,cx:n,cy:r,majorRadius:e.majorRadius*Math.abs(t),minorRadius:e.minorRadius*Math.abs(t)}}case`bezier`:return{...e,poles:e.poles.map(([e,t])=>i(e,t))};case`bspline`:return{...e,poles:e.poles.map(([e,t])=>i(e,t))};case`trimmed`:return{...e,basis:le(e.basis,t,n,r)}}}function ue(e,t,n){return le(e,-1,t,n)}function de(e,t,n,r,i){let a=Math.sqrt(r*r+i*i),o=r/a,s=i/a,c=(e,r)=>{let i=e-t,a=r-n,c=i*o+a*s;return[t+2*c*o-i,n+2*c*s-a]};switch(e.__bk2d){case`line`:{let[t,n]=c(e.ox,e.oy),r=2*(e.dx*o+e.dy*s)*o-e.dx,i=2*(e.dx*o+e.dy*s)*s-e.dy;return{...e,ox:t,oy:n,dx:r,dy:i}}case`circle`:{let[t,n]=c(e.cx,e.cy);return{...e,cx:t,cy:n,sense:!e.sense}}case`ellipse`:{let[t,n]=c(e.cx,e.cy),r=o*o-s*s,i=2*o*s,a=Math.atan2(i*Math.cos(e.xDirAngle)-r*Math.sin(e.xDirAngle),r*Math.cos(e.xDirAngle)+i*Math.sin(e.xDirAngle));return{...e,cx:t,cy:n,xDirAngle:a,sense:!e.sense}}case`bezier`:return{...e,poles:e.poles.map(([e,t])=>c(e,t))};case`bspline`:return{...e,poles:e.poles.map(([e,t])=>c(e,t))};case`trimmed`:return{...e,basis:de(e.basis,t,n,r,i)}}}function fe(e,t,n){let r=pe(e),i=pe(t);return r.__bk2d===`line`&&i.__bk2d===`line`?ge(e,r,t,i,n):r.__bk2d===`line`&&i.__bk2d===`circle`?{points:_e(e,r,t,i,n),segments:[]}:r.__bk2d===`circle`&&i.__bk2d===`line`?{points:_e(t,i,e,r,n),segments:[]}:r.__bk2d===`circle`&&i.__bk2d===`circle`?{points:ye(e,r,t,i,n),segments:[]}:be(e,t,n,e===t)}function pe(e){let t=e;for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function me(e,t,n){let r=w(e);return t>=r.first-n&&t<=r.last+n}function he(e,t,n){let r=w(e);if(!isFinite(r.first)||!isFinite(r.last))return null;let i=(r.last-r.first)/80,a=r.first,o=1/0;for(let s=0;s<=80;s++){let c=r.first+s*i,[l,u]=S(e,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}let[s,c]=S(e,r.first),[l,u]=S(e,r.last),[d,f]=S(e,(r.first+r.last)/2),p=Math.max(Math.sqrt((l-s)**2+(u-c)**2),Math.sqrt((d-s)**2+(f-c)**2),1e-6)*.1;return o<p*p?a:null}function ge(e,t,n,r,i){let a=t.dx*r.dy-t.dy*r.dx;if(Math.abs(a)>=1e-14){let o=r.ox-t.ox,s=r.oy-t.oy,c=(o*r.dy-s*r.dx)/a,l=(o*t.dy-s*t.dx)/a;return!me(e,c,i)||!me(n,l,i)?{points:[],segments:[]}:{points:[[t.ox+c*t.dx,t.oy+c*t.dy]],segments:[]}}let o=r.ox-t.ox,s=r.oy-t.oy,c=o*t.dy-s*t.dx;if(Math.abs(c)>i)return{points:[],segments:[]};let l=w(e),u=w(n),d=S(n,u.first),f=S(n,u.last),p=(d[0]-t.ox)*t.dx+(d[1]-t.oy)*t.dy,m=(f[0]-t.ox)*t.dx+(f[1]-t.oy)*t.dy,h=Math.max(l.first,Math.min(p,m)),g=Math.min(l.last,Math.max(p,m));return g-h<i?{points:[],segments:[]}:{points:[],segments:[te(t.ox+h*t.dx,t.oy+h*t.dy,t.ox+g*t.dx,t.oy+g*t.dy)]}}function _e(e,t,n,r,i){let a=t.ox-r.cx,o=t.oy-r.cy,s=t.dx*t.dx+t.dy*t.dy,c=2*(a*t.dx+o*t.dy),l=a*a+o*o-r.radius*r.radius,u=c*c-4*s*l;if(u<-i)return[];let d=[],f=Math.sqrt(Math.max(0,u)),p=(-c-f)/(2*s),m=(-c+f)/(2*s);for(let r of u<i*i?[p]:[p,m]){if(!me(e,r,i))continue;let a=t.ox+r*t.dx,o=t.oy+r*t.dy,s=he(n,a,o);if(s===null)continue;let[c,l]=S(n,s);(c-a)**2+(l-o)**2>i*i*1e6||d.push([a,o])}return d}function ve(e,t,n){let r=w(e),i=w(t),a=Math.abs(r.last-r.first-2*Math.PI)<1e-10,o=Math.abs(i.last-i.first-2*Math.PI)<1e-10;if(a&&o)return[];if(a)return[S(t,i.first),S(t,i.last)];if(o)return[S(e,r.first),S(e,r.last)];let s=[],c=[[t,S(e,r.first)],[t,S(e,r.last)],[e,S(t,i.first)],[e,S(t,i.last)]];for(let[e,t]of c){let r=he(e,t[0],t[1]);if(r!==null){let[i,a]=S(e,r);(i-t[0])**2+(a-t[1])**2<n*n*100&&s.push(t)}}let l=[];for(let e of s)l.some(([t,r])=>(t-e[0])**2+(r-e[1])**2<n*n*100)||l.push(e);return l}function ye(e,t,n,r,i){let a=r.cx-t.cx,o=r.cy-t.cy,s=Math.sqrt(a*a+o*o);if(s>t.radius+r.radius+i||s<Math.abs(t.radius-r.radius)-i)return[];if(s<1e-14)return Math.abs(t.radius-r.radius)>i?[]:ve(e,n,i);let c=(t.radius*t.radius-r.radius*r.radius+s*s)/(2*s),l=t.radius*t.radius-c*c,u=Math.sqrt(Math.max(0,l)),d=t.cx+c*a/s,f=t.cy+c*o/s,p=u<i?[[d,f]]:[[d+u*o/s,f-u*a/s],[d-u*o/s,f+u*a/s]],m=[];for(let[t,r]of p){let a=he(e,t,r),o=he(n,t,r);if(a===null||o===null)continue;let[s,c]=S(e,a),[l,u]=S(n,o),d=(i*10)**2;(s-t)**2+(c-r)**2>d||(l-t)**2+(u-r)**2>d||m.push([t,r])}return m}function be(e,t,n,r=!1){let i=w(e),a=w(t);if(!isFinite(i.first)||!isFinite(i.last)||!isFinite(a.first)||!isFinite(a.last))return{points:[],segments:[]};let o=[],s=[];for(let n=0;n<=100;n++){let r=i.first+(i.last-i.first)*n/100,[c,l]=S(e,r);o.push({t:r,x:c,y:l});let u=a.first+(a.last-a.first)*n/100,[d,f]=S(t,u);s.push({t:u,x:d,y:f})}let c=Math.max(n*100,.5),l=new Float64Array(600);for(let e=0;e<100;e++){let t=s[e],n=s[e+1],r=e*6;l[r]=Math.min(t.x,n.x),l[r+1]=Math.max(t.x,n.x),l[r+2]=Math.min(t.y,n.y),l[r+3]=Math.max(t.y,n.y),l[r+4]=(t.t+n.t)/2}let u=[],d=(i.last-i.first)/5;for(let e=0;e<100;e++){let t=o[e],n=o[e+1],i=Math.min(t.x,n.x)-c,a=Math.max(t.x,n.x)+c,s=Math.min(t.y,n.y)-c,f=Math.max(t.y,n.y)+c,p=(t.t+n.t)/2;for(let e=0;e<100;e++){let t=e*6;if(a<l[t]||l[t+1]<i||f<l[t+2]||l[t+3]<s)continue;let n=l[t+4];r&&Math.abs(p-n)<d||u.push({t1:p,t2:n})}}let f=n*n,p=[];for(let{t1:o,t2:s}of u){let c=o,l=s;for(let n=0;n<20;n++){let[n,r]=S(e,c),[o,s]=S(t,l),u=n-o,d=r-s;if(u*u+d*d<f)break;let p=C(e,c),m=C(t,l),h=p[0]*-m[1]- -m[0]*p[1];if(Math.abs(h)<1e-14)break;let g=(-u*-m[1]- -d*-m[0])/h,_=(p[0]*-d-p[1]*-u)/h;c+=g,l+=_,c=Math.max(i.first,Math.min(i.last,c)),l=Math.max(a.first,Math.min(a.last,l))}let[u,d]=S(e,c),[m,h]=S(t,l);if(!(r&&Math.abs(c-l)<(i.last-i.first)*.05)&&(u-m)**2+(d-h)**2<n*n*1e6){let e=(u+m)/2,t=(d+h)/2,r=!1;for(let[i,a]of p)if((i-e)**2+(a-t)**2<n*n*1e4){r=!0;break}r||p.push([e,t])}}return{points:p,segments:[]}}function xe(e){return JSON.stringify(e)}function Se(e){return JSON.parse(e)}function Ce(){return{__bk2d_bbox:!0,xMin:1/0,yMin:1/0,xMax:-1/0,yMax:-1/0}}function we(e,t,n){let r=t.__bk2d===`trimmed`?t.basis:t;if(r.__bk2d===`line`){let n=w(t);if(!isFinite(n.first)||!isFinite(n.last))return;let[r,i]=S(t,n.first),[a,o]=S(t,n.last);e.xMin=Math.min(e.xMin,r,a),e.yMin=Math.min(e.yMin,i,o),e.xMax=Math.max(e.xMax,r,a),e.yMax=Math.max(e.yMax,i,o);return}if(r.__bk2d===`circle`){let n=w(t);if(!isFinite(n.first)||!isFinite(n.last))return;let{cx:i,cy:a,radius:o,sense:s}=r,[c,l]=S(t,n.first),[u,d]=S(t,n.last),f=Math.min(c,u),p=Math.max(c,u),m=Math.min(l,d),h=Math.max(l,d),g=t.__bk2d===`trimmed`?t.tStart:n.first,_=t.__bk2d===`trimmed`?t.tEnd:n.last;for(let e=0;e<4;e++){let t=e*Math.PI/2,n=s?t:-t;for(let e=0;e<=1;e++){let r=n+e*2*Math.PI;if(r>=g-1e-10&&r<=_+1e-10){let e=i+o*Math.cos(t),n=a+o*Math.sin(t);f=Math.min(f,e),p=Math.max(p,e),m=Math.min(m,n),h=Math.max(h,n);break}}}e.xMin=Math.min(e.xMin,f),e.yMin=Math.min(e.yMin,m),e.xMax=Math.max(e.xMax,p),e.yMax=Math.max(e.yMax,h);return}let i=w(t);if(!isFinite(i.first)||!isFinite(i.last))return;let a=(i.last-i.first)/20;for(let n=0;n<=20;n++){let[r,o]=S(t,i.first+n*a);r<e.xMin&&(e.xMin=r),o<e.yMin&&(e.yMin=o),r>e.xMax&&(e.xMax=r),o>e.yMax&&(e.yMax=o)}}function Te(e,t){let n=e.length,r=e.map(([e,t])=>[e,t]);for(let e=1;e<n;e++)for(let i=0;i<n-e;i++){let e=r[i],n=r[i+1];e[0]=(1-t)*e[0]+t*n[0],e[1]=(1-t)*e[1]+t*n[1]}return r[0]}function Ee(e,t){let n=[];for(let t=0;t<e.knots.length;t++){let r=e.multiplicities[t]??1;for(let i=0;i<r;i++)n.push(e.knots[t])}let r=e.degree,i=e.poles.length,a=n.length,o=Math.max(n[r],Math.min(n[a-r-1],t)),s=r;for(let e=r;e<a-r-1;e++)if(o>=n[e]&&o<n[e+1]){s=e;break}o>=n[a-r-1]&&(s=a-r-2);let c=[];for(let t=0;t<=r;t++){let n=Math.min(s-r+t,i-1),a=e.poles[Math.max(0,n)];c.push([a[0],a[1]])}for(let e=1;e<=r;e++)for(let t=r;t>=e;t--){let i=s-r+t,a=n[i]??0,l=(n[i+r-e+1]??1)-a,u=l>1e-15?(o-a)/l:0,d=c[t],f=c[t-1];d[0]=(1-u)*f[0]+u*d[0],d[1]=(1-u)*f[1]+u*d[1]}return c[r]}var De=.001,Oe=.1,ke={nx:0,ny:0,nz:0,ax:0,ay:0,az:0,bx:0,by:0,bz:0,cx:0,cy:0,cz:0};function Ae(e,t,n){let r=(t[n*3]??0)*3,i=(t[n*3+1]??0)*3,a=(t[n*3+2]??0)*3,o=e[r]??0,s=e[r+1]??0,c=e[r+2]??0,l=e[i]??0,u=e[i+1]??0,d=e[i+2]??0,f=e[a]??0,p=e[a+1]??0,m=e[a+2]??0,h=l-o,g=u-s,_=d-c,v=f-o,y=p-s,b=m-c,x=g*b-_*y,S=_*v-h*b,C=h*y-g*v,w=Math.hypot(x,S,C)||1;return x/=w,S/=w,C/=w,ke.nx=x,ke.ny=S,ke.nz=C,ke.ax=o,ke.ay=s,ke.az=c,ke.bx=l,ke.by=u,ke.bz=d,ke.cx=f,ke.cy=p,ke.cz=m,ke}function je(e,t){let n=Math.floor(t.length/3),r=new ArrayBuffer(84+n*50),i=new DataView(r);i.setUint32(80,n,!0);let a=84;for(let r=0;r<n;r++){let n=Ae(e,t,r);i.setFloat32(a,n.nx,!0),i.setFloat32(a+4,n.ny,!0),i.setFloat32(a+8,n.nz,!0),i.setFloat32(a+12,n.ax,!0),i.setFloat32(a+16,n.ay,!0),i.setFloat32(a+20,n.az,!0),i.setFloat32(a+24,n.bx,!0),i.setFloat32(a+28,n.by,!0),i.setFloat32(a+32,n.bz,!0),i.setFloat32(a+36,n.cx,!0),i.setFloat32(a+40,n.cy,!0),i.setFloat32(a+44,n.cz,!0),i.setUint16(a+48,0,!0),a+=50}return r}function Me(e,t){let n=Math.floor(t.length/3),r=[`solid brepjs`];for(let i=0;i<n;i++){let n=Ae(e,t,i);r.push(`facet normal ${n.nx} ${n.ny} ${n.nz}`),r.push(`outer loop`),r.push(`vertex ${n.ax} ${n.ay} ${n.az}`),r.push(`vertex ${n.bx} ${n.by} ${n.bz}`),r.push(`vertex ${n.cx} ${n.cy} ${n.cz}`),r.push(`endloop`),r.push(`endfacet`)}return r.push(`endsolid brepjs`),r.join(`
2
+ `)+`
3
+ `}var Ne=()=>{};function T(e,t){return{__occtWasm:!0,type:e,id:t,delete:Ne,HashCode(e){return t%e},IsNull(){return!1}}}function Pe(e){return typeof e==`object`&&!!e&&e.__occtWasm}function E(e){if(Pe(e))return e.id;if(typeof e==`number`)return e;throw Error(`occt-wasm: expected an OcctWasmHandle or number, got `+typeof e)}function Fe(e){switch(e.toLowerCase()){case`vertex`:return`vertex`;case`edge`:return`edge`;case`wire`:return`wire`;case`face`:return`face`;case`shell`:return`shell`;case`solid`:return`solid`;case`compsolid`:return`compsolid`;case`compound`:return`compound`;default:return`compound`}}function D(e,t){return T(Fe(e.getShapeType(t)),t)}function Ie(e,t){let n=new e.VectorUint32;for(let e of t)n.push_back(e);return n}function Le(e,t){let n=new e.VectorInt;for(let e of t)n.push_back(e);return n}function Re(e,t){let n=new e.VectorDouble;for(let e of t)n.push_back(e);return n}function ze(e){let t=[],n=e.size();for(let r=0;r<n;r++)t.push(e.get(r));return t}function Be(e,t){let n=Array(16).fill(0);for(let r=0;r<4;r++)for(let i=0;i<4;i++)for(let a=0;a<4;a++)n[r*4+i]=n[r*4+i]+e[r*4+a]*t[a*4+i];return n}function Ve(e,t){if(typeof t==`number`)return t;if(Array.isArray(t))return t[0];if(e.length===0)throw Error(`occt-wasm: no edges provided`);let n=t(e[0]);return typeof n==`number`?n:n[0]}function He(e,t,n){let[r,i,a]=n,o=Math.sqrt(r*r+i*i+a*a);if(o<1e-10)return t;let s=r/o,c=i/o,l=a/o;if(Math.abs(l-1)<1e-10)return t;if(Math.abs(l+1)<1e-10)return e.rotate(t,0,0,0,1,0,0,Math.PI);let u=-c,d=s,f=Math.sqrt(u*u+d*d);if(f<1e-10)return t;let p=Math.acos(Math.max(-1,Math.min(1,l)));return e.rotate(t,0,0,0,u/f,d/f,0,p)}function Ue(e,t){return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,r);return typeof i==`function`?function(...n){try{return i.apply(e,n)}catch(e){let n=WebAssembly.Exception;if(n&&e instanceof n)try{let[,n]=t.getExceptionMessage(e);throw Error(n,{cause:e})}catch(e){if(e instanceof Error&&!(e instanceof n))throw e}throw e}}:i}})}function We(e,t){let n=function(){return T(`compound`,t.makeNullShape())};return Object.assign(Object.create(e),{TopoDS_Solid:n,TopoDS_Face:n,TopoDS_Shape:n,TopoDS_Wire:n,TopoDS_Edge:n,TopoDS_Vertex:n,TopoDS_Shell:n,TopoDS_Compound:n,gp_Pnt_3:function(e,n,r){return T(`vertex`,t.makeVertex(e,n,r))},BRepBuilderAPI_MakeEdge_3:function(e,n){let r=e,i=n,a=t.vertexPosition(r.id),o=t.vertexPosition(i.id),s=t.makeLineEdge(a.get(0),a.get(1),a.get(2),o.get(0),o.get(1),o.get(2));return a.delete(),o.delete(),{Edge:()=>T(`edge`,s),delete(){}}}})}function Ge(e,t){let n=E(t),r=e.getSubShapes(n,`solid`);try{if(r.size()>1){let t=e.fuseAll(r);return{id:t,dispose:()=>{e.release(t)}}}return{id:n,dispose:()=>{}}}finally{for(let t=0,i=r.size();t<i;t++){let i=r.get(t);i!==n&&e.release(i)}r.delete()}}function Ke(e,t,n,r){return D(e,e.fuse(E(t),E(n)))}function qe(e,t,n,r){let i=Ge(e,n);try{return D(e,e.cut(E(t),i.id))}finally{i.dispose()}}function Je(e,t,n,r){let i=Ge(e,n);try{return D(e,e.intersect(E(t),i.id))}finally{i.dispose()}}function Ye(e,t,n,r){return D(e,e.section(E(t),E(n)))}function Xe(e,t,n,r){let i=Ie(t,n.map(E));try{return D(e,e.fuseAll(i))}finally{i.delete()}}function Ze(e,t,n,r,i){let a=Ie(t,r.map(E));try{return D(e,e.cutAll(E(n),a))}finally{a.delete()}}function Qe(e,t,n,r){let i=Ie(t,r.map(E));try{return D(e,e.split(E(n),i))}finally{i.delete()}}function $e(e,t,n,r){let i=[];return e.isNull(E(t))&&i.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),e.isNull(E(n))&&i.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is null`}),i.length===0&&!e.isValid(E(t))&&i.push({operand:`base`,issue:`not-valid`,message:`Base shape is not valid`}),i.length===0&&!e.isValid(E(n))&&i.push({operand:`tool`,issue:`not-valid`,message:`Tool shape is not valid`}),{valid:i.length===0,issues:i}}function et(e,t,n,r,i,a){throw Error(`occt-wasm: meshBoolean is not supported (use brepkit for mesh booleans)`)}function tt(e,t,n){return n!==t&&e.release(t),n}function nt(e,t,n,r){return T(`solid`,e.makeBox(t,n,r))}function rt(e,t,n,r,i){let a=e.makeCylinder(t,n);return i&&(a=tt(e,a,He(e,a,i))),r&&(r[0]!==0||r[1]!==0||r[2]!==0)&&(a=tt(e,a,e.translate(a,r[0],r[1],r[2]))),T(`solid`,a)}function it(e,t,n){let r=e.makeSphere(t);return n&&(n[0]!==0||n[1]!==0||n[2]!==0)&&(r=tt(e,r,e.translate(r,n[0],n[1],n[2]))),T(`solid`,r)}function at(e,t,n,r,i,a){let o=e.makeCone(t,n,r);return a&&(o=tt(e,o,He(e,o,a))),i&&(i[0]!==0||i[1]!==0||i[2]!==0)&&(o=tt(e,o,e.translate(o,i[0],i[1],i[2]))),T(`solid`,o)}function ot(e,t,n,r,i){let a=e.makeTorus(t,n);return i&&(a=tt(e,a,He(e,a,i))),r&&(r[0]!==0||r[1]!==0||r[2]!==0)&&(a=tt(e,a,e.translate(a,r[0],r[1],r[2]))),T(`solid`,a)}function st(e,t,n,r){return T(`solid`,e.makeEllipsoid(t,n,r))}function ct(e,t,n){return T(`solid`,e.makeBoxFromCorners(t[0],t[1],t[2],n[0],n[1],n[2]))}function lt(e,t,n){return T(`face`,e.makeRectangle(t,n))}function ut(e,t,n){let r=e.getSubShapes(E(t),n),i=[];try{let e=r.size();for(let t=0;t<e;t++)i.push(T(n,r.get(t)))}finally{r.delete()}return i}function dt(e,t){return Pe(t)?t.type:Fe(e.getShapeType(E(t)))}function ft(e,t,n){return e.isSame(E(t),E(n))}function pt(e,t,n){return e.isEqual(E(t),E(n))}function mt(e,t,n){return n?T(n,e.downcast(E(t),n)):t}function ht(e,t){return D(e,e.copy(E(t)))}function gt(e,t,n){return e.hashCode(E(t),n)}function _t(e,t){return e.isNull(E(t))}function vt(e,t){return e.shapeOrientation(E(t)).toLowerCase()}function yt(e,n){let r=e.edgeToFaceMap(E(n),1e6),i;try{i=ze(r)}finally{r.delete()}let a={};for(let e=0;e+1<i.length;e+=2){let n=t(i,e),r=t(i,e+1);a[n]||(a[n]=[]),a[n].push(r)}return JSON.stringify(a)}function bt(e,t,n){let r=e.sharedEdges(E(t),E(n)),i=[];try{let e=r.size();for(let t=0;t<e;t++)i.push(T(`edge`,r.get(t)))}finally{r.delete()}return i}function xt(e,t,n){let r=e.adjacentFaces(E(t),E(n)),i=[];try{let e=r.size();for(let t=0;t<e;t++)i.push(T(`face`,r.get(t)))}finally{r.delete()}return i}function St(e,t,n,r){let i=Ie(t,n.map(E));try{return D(e,e.sew(i,r??1e-6))}finally{i.delete()}}var Ct=1e-6;function wt(e,t){return e.isValid(E(t))}function Tt(e,t){let n=e.healSolid(E(t),Ct);return n===0?null:D(e,n)}function Et(e,t){return D(e,e.healFace(E(t),Ct))}function Dt(e,t,n){return D(e,e.healWire(E(t),Ct))}function Ot(e,t,n){return 0}function kt(e,t,n){return e.removeDegenerateEdges(E(t)),0}function At(e,t){return e.fixFaceOrientations(E(t)),0}function jt(e,t){return D(e,e.fixShape(E(t)))}function Mt(e,t,n,r){let i=e.tessellate(E(n),r.tolerance,r.angularTolerance);try{let e=i.positionCount,n=i.normalCount,a=i.indexCount,o=i.getPositionsPtr()>>2,s=i.getNormalsPtr()>>2,c=i.getIndicesPtr()>>2,l=new Float32Array(e);for(let n=0;n<e;n++)l[n]=t.HEAPF32[o+n]??0;let u=new Float32Array(n);if(!r.skipNormals)for(let e=0;e<n;e++)u[e]=t.HEAPF32[s+e]??0;let d=i.uvCount,f=new Float32Array(r.includeUVs?d:0);if(r.includeUVs&&d>0){let e=i.getUvsPtr()>>2;for(let n=0;n<d;n++)f[n]=t.HEAPF32[e+n]??0}let p=new Uint32Array(a);for(let e=0;e<a;e++)p[e]=t.HEAPU32[c+e]??0;let m=[],h=i.faceGroupCount;if(h>0){let e=i.getFaceGroupsPtr()>>2;for(let n=0;n<h;n+=3)m.push({start:t.HEAP32[e+n]??0,count:t.HEAP32[e+n+1]??0,faceHash:t.HEAP32[e+n+2]??0})}return{vertices:l,normals:r.skipNormals?new Float32Array:u,triangles:p,uvs:f,faceGroups:m}}finally{i.delete()}}function Nt(e,t,n,r){for(let i=0;i+1<n;i++){let n=t+i*3,a=e[n]??0,o=e[n+1]??0,s=e[n+2]??0,c=e[n+3]??0,l=e[n+4]??0,u=e[n+5]??0;a===c&&o===l&&s===u||r.push(a,o,s,c,l,u)}}function Pt(e,t,n,r,i){let a=e.wireframe(E(n),r);try{let e=t.HEAPF32,n=a.getPointsPtr()>>2,r=[],i=[],o=a.edgeGroupCount,s=o>0?a.getEdgeGroupsPtr()>>2:0;for(let a=0;a<o;a+=3){let o=n+(t.HEAP32[s+a]??0),c=Math.floor((t.HEAP32[s+a+1]??0)/3),l=r.length/3;Nt(e,o,c,r),i.push({start:l,count:r.length/3-l,edgeHash:t.HEAP32[s+a+2]??0})}return{lines:new Float32Array(r),edgeGroups:i}}finally{a.delete()}}function Ft(e,t){return e.hasTriangulation(E(t))}function It(e,t,n,r){e.meshShape(E(t),n,r).delete()}var Lt={line:`LINE`,circle:`CIRCLE`,ellipse:`ELLIPSE`,hyperbola:`HYPERBOLA`,parabola:`PARABOLA`,bezier:`BEZIER_CURVE`,bspline:`BSPLINE_CURVE`,offset:`OFFSET_CURVE`,other:`OTHER_CURVE`};function Rt(e,t){let n=e.curveType(E(t));return Lt[n]??n.toUpperCase()}function zt(e,t){let n=e.curveParameters(E(t));try{return[n.get(0),n.get(1)]}finally{n.delete()}}function Bt(e,t,n){let r=e.curvePointAtParam(E(t),n);try{return[r.get(0),r.get(1),r.get(2)]}finally{r.delete()}}function Vt(e,t,n){let r=e.curveTangent(E(t),n);try{let i=e.curvePointAtParam(E(t),n);try{return{point:[i.get(0),i.get(1),i.get(2)],tangent:[r.get(0),r.get(1),r.get(2)]}}finally{i.delete()}}finally{r.delete()}}function Ht(e,t){return e.curveIsClosed(E(t))}function Ut(e,t){return e.curveIsPeriodic(E(t))}function Wt(e,t){return 2*Math.PI}function Gt(e,t,n,r){let i=[];for(let e of n)i.push(e[0],e[1],e[2]);let a=Re(t,i);try{return T(`edge`,e.interpolatePoints(a,r?.periodic??!1))}finally{a.delete()}}function Kt(e,t,n,r){let i=[];for(let e of n)i.push(e[0],e[1],e[2]);let a=Re(t,i);try{return T(`edge`,e.approximatePoints(a,r?.tolerance??.001))}finally{a.delete()}}function qt(e,t,n){return T(`edge`,e.curveDegreeElevate(E(t),n))}function Jt(e,t,n,r){return T(`edge`,e.curveKnotInsert(E(t),n,r))}function Yt(e,t,n,r){return T(`edge`,e.curveKnotRemove(E(t),n,r))}function Xt(e,t,n){let r=e.curveSplit(E(t),n);try{return[T(`edge`,r.get(0)),T(`edge`,r.get(1))]}finally{r.delete()}}function Zt(e,t){let n=Qt(e,t);if(!n||n.poles.length<2)return null;let r=n.poles[n.poles.length-2];return r?[r[0],r[1],r[2]]:null}function Qt(e,t){try{let n=e.getNurbsCurveData(E(t));try{let e=n.poles.size()/3,t=[];for(let r=0;r<e;r++)t.push([n.poles.get(r*3),n.poles.get(r*3+1),n.poles.get(r*3+2)]);let r=[];for(let e=0;e<n.knots.size();e++)r.push(n.knots.get(e));let i=[];for(let e=0;e<n.multiplicities.size();e++)i.push(n.multiplicities.get(e));let a=[];if(n.rational)for(let e=0;e<n.weights.size();e++)a.push(n.weights.get(e));else for(let t=0;t<e;t++)a.push(1);return{degree:n.degree,poles:t,weights:a,knots:r,multiplicities:i,isPeriodic:n.periodic,isRational:n.rational}}finally{n.delete()}}catch{return null}}function $t(e,t){let n=e.vertexPosition(E(t));try{return[n.get(0),n.get(1),n.get(2)]}finally{n.delete()}}function en(e,t){return e.surfaceType(E(t)).toLowerCase()}function tn(e,t){let n=e.uvBounds(E(t));try{return{uMin:n.get(0),uMax:n.get(1),vMin:n.get(2),vMax:n.get(3)}}finally{n.delete()}}function nn(e,t){return T(`wire`,e.outerWire(E(t)))}function rn(e,t,n,r){let i=e.surfaceNormal(E(t),n,r);try{return[i.get(0),i.get(1),i.get(2)]}finally{i.delete()}}function an(e,t,n,r){let i=e.pointOnSurface(E(t),n,r);try{return[i.get(0),i.get(1),i.get(2)]}finally{i.delete()}}var on=(e,t)=>[e[0]-t[0],e[1]-t[1],e[2]-t[2]],sn=(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2],cn=e=>Math.hypot(e[0],e[1],e[2]),ln=(e,t)=>[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]];function un(e,t){if(en(e,t)!==`cylinder`)return null;let n=tn(e,t),r=.5*(n.vMin+n.vMax),i=n.uMin+.25*(n.uMax-n.uMin),a=n.uMin+.5*(n.uMax-n.uMin),o=rn(e,t,i,r),s=rn(e,t,a,r),c=an(e,t,i,r),l=an(e,t,a,r),u=ln(o,s),d=cn(u),f=cn(on(o,s));if(d<1e-9||f<1e-9)return null;let p=[u[0]/d,u[1]/d,u[2]/d],m=cn(on(c,l))/f,h=[c[0]-m*o[0],c[1]-m*o[1],c[2]-m*o[2]],g=cn(on(h,[l[0]-m*s[0],l[1]-m*s[1],l[2]-m*s[2]]))<1e-6?h:[c[0]+m*o[0],c[1]+m*o[1],c[2]+m*o[2]];return{origin:g,direction:p,radius:m,isDirect:(vt(e,t)===`reversed`?-1:1)*sn(o,on(c,g))>0}}function dn(e,t,n){let r=on(t,e),i=on(n,e),a=ln(r,i),o=sn(a,a);if(o<1e-18)return null;let s=sn(r,r),c=sn(i,i),l=ln([s*i[0]-c*r[0],s*i[1]-c*r[1],s*i[2]-c*r[2]],a),u=1/(2*o);return[e[0]+l[0]*u,e[1]+l[1]*u,e[2]+l[2]*u]}function fn(e,t,n,r,i){return dn(an(e,t,n+.1*(r-n),i),an(e,t,n+.45*(r-n),i),an(e,t,n+.8*(r-n),i))}function pn(e,t){let n=tn(e,t),r=[.2,.5,.8].map(r=>fn(e,t,n.uMin,n.uMax,n.vMin+r*(n.vMax-n.vMin))).filter(e=>e!==null);if(r.length<2)return null;let i=null,a=1e-9;for(let e=0;e<r.length;e++)for(let t=e+1;t<r.length;t++){let n=r[e],o=r[t];if(!n||!o)continue;let s=on(o,n),c=cn(s);c>a&&(a=c,i={origin:n,direction:[s[0]/c,s[1]/c,s[2]/c]})}return i}function mn(e,t){let n=en(e,t);if(n===`cylinder`){let n=un(e,t);return n?{origin:n.origin,direction:n.direction}:null}return n===`cone`||n===`torus`||n===`revolution`?pn(e,t):null}function hn(e,t){let n=un(e,t);return n?{radius:n.radius,isDirect:n.isDirect}:null}function gn(e,t,n){let r=e.uvFromPoint(E(t),n[0],n[1],n[2]);try{return r.size()<2?null:[r.get(0),r.get(1)]}finally{r.delete()}}function _n(e,t,n){let r=e.projectPointOnFace(E(t),n[0],n[1],n[2]);try{return[r.get(0),r.get(1),r.get(2)]}finally{r.delete()}}function vn(e,t,n,r,i){return e.classifyPointOnFace(E(t),n,r).toLowerCase()}function yn(e,t,n,r,i,a){let[o,s,c]=r,[l,u,d]=i,f=!!a,[p,m,h]=a??[1,0,0],g=e.projectEdges(E(n),o,s,c,l,u,d,p,m,h,f),_=n=>n===0?T(`compound`,e.makeCompound(new t.VectorUint32)):T(`compound`,n);return{visible:{outline:_(g.visibleOutline),smooth:_(g.visibleSmooth),sharp:_(g.visibleSharp)},hidden:{outline:_(g.hiddenOutline),smooth:_(g.hiddenSmooth),sharp:_(g.hiddenSharp)}}}function bn(e,t){return e.getVolume(E(t))}function xn(e,t){return e.getSurfaceArea(E(t))}function Sn(e,t){return e.getLength(E(t))}function Cn(e,t){let n=e.getCenterOfMass(E(t));try{return[n.get(0),n.get(1),n.get(2)]}finally{n.delete()}}function wn(e,t){let n=e.getLinearCenterOfMass(E(t));try{return[n.get(0),n.get(1),n.get(2)]}finally{n.delete()}}function Tn(e,t){let n=e.getBoundingBox(E(t),!0);return{min:[n.xmin,n.ymin,n.zmin],max:[n.xmax,n.ymax,n.zmax]}}function En(e,t){try{let n=e.getSurfaceCenterOfMass(E(t));try{return[n.get(0),n.get(1),n.get(2)]}finally{n.delete()}}catch{return[0,0,0]}}function Dn(e,t,n){return{volume:bn(e,t),area:xn(e,t),length:n?Sn(e,t):0,centerOfMass:Cn(e,t),boundingBox:Tn(e,t)}}function On(e,t){let n=E(t);return{distanceTo(t){return{value:e.distanceBetween(n,E(t)),point1:[0,0,0],point2:[0,0,0]}},dispose:Ne}}var kn=256;function An(e,t,n){let r=[],i=e.getSubShapes(n,`vertex`);try{let t=i.size();for(let n=0;n<t;n++){let t=e.vertexPosition(i.get(n));r.push([t.get(0),t.get(1),t.get(2)]),t.delete()}}finally{i.delete()}let a=e.getBoundingBox(n,!0),o=Math.sqrt((a.xmax-a.xmin)**2+(a.ymax-a.ymin)**2+(a.zmax-a.zmin)**2),s=Math.max(o*.01,1e-4),c;try{c=e.tessellate(n,s,.5)}catch{return r}try{let e=c.positionCount;if(e>0){let n=c.getPositionsPtr()>>2,i=t.HEAPF32,a=Math.floor(e/3),o=(a>kn?Math.ceil(a/kn):1)*3;for(let t=0;t<e;t+=o)r.push([i[n+t]??0,i[n+t+1]??0,i[n+t+2]??0])}}finally{c.delete()}return r}function jn(e,t,n,r){let i=E(n),a=E(r),o=e.distanceBetween(i,a),s=An(e,t,i),c=An(e,t,a);if(s.length===0||c.length===0)return{value:o,point1:[0,0,0],point2:[0,0,0]};let l=1/0,u=s[0]??[0,0,0],d=c[0]??[0,0,0];for(let e of s)for(let t of c){let n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],a=n*n+r*r+i*i;a<l&&(l=a,u=e,d=t)}return{value:o,point1:u,point2:d}}function Mn(e,t,n,r){let i=e.pointOnSurface(t,n,r),a=[i.get(0),i.get(1),i.get(2)];return i.delete(),a}function Nn(e,t,n,r){let i=e.uvBounds(t),a=i.get(0),o=i.get(1),s=i.get(2),c=i.get(3);i.delete();let l=Math.max(Math.max(o-a,1e-12)*.001,1e-6),u=Math.max(Math.max(c-s,1e-12)*.001,1e-6),d=Math.min(Math.max(n,a+l),o-l),f=Math.min(Math.max(r,s+u),c-u),p=Mn(e,t,d,f),m=Mn(e,t,d+l,f),h=Mn(e,t,d-l,f),g=Mn(e,t,d,f+u),_=Mn(e,t,d,f-u),v=Mn(e,t,d+l,f+u),y=Mn(e,t,d+l,f-u),b=Mn(e,t,d-l,f+u),x=Mn(e,t,d-l,f-u),S=l*l,C=u*u,w=4*l*u;return{Pu:[(m[0]-h[0])/(2*l),(m[1]-h[1])/(2*l),(m[2]-h[2])/(2*l)],Pv:[(g[0]-_[0])/(2*u),(g[1]-_[1])/(2*u),(g[2]-_[2])/(2*u)],Puu:[(m[0]-2*p[0]+h[0])/S,(m[1]-2*p[1]+h[1])/S,(m[2]-2*p[2]+h[2])/S],Pvv:[(g[0]-2*p[0]+_[0])/C,(g[1]-2*p[1]+_[1])/C,(g[2]-2*p[2]+_[2])/C],Puv:[(v[0]-y[0]-b[0]+x[0])/w,(v[1]-y[1]-b[1]+x[1])/w,(v[2]-y[2]-b[2]+x[2])/w]}}function Pn(e,t,n,r){return Math.abs(e)+Math.abs(t)>=Math.abs(n)+Math.abs(r)?Math.abs(e)+Math.abs(t)<1e-12?[1,0]:[-t,e]:Math.abs(n)+Math.abs(r)<1e-12?[0,1]:[-r,n]}function Fn(e,t,n){let r=e[0]*t[0]+e[1]*n[0],i=e[0]*t[1]+e[1]*n[1],a=e[0]*t[2]+e[1]*n[2],o=Math.sqrt(r*r+i*i+a*a);return o<1e-12?[1,0,0]:[r/o,i/o,a/o]}function In(e,t){let n=Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);if(n<1e-12)return{maxDirection:[1,0,0],minDirection:[0,1,0]};let r=e[0]/n,i=e[1]/n,a=e[2]/n,o=r*t[0]+i*t[1]+a*t[2],s=t[0]-o*r,c=t[1]-o*i,l=t[2]-o*a,u=Math.sqrt(s*s+c*c+l*l);if(u<1e-12){let e=Math.abs(r)<.9?[1,0,0]:[0,1,0],t=i*e[2]-a*e[1],n=a*e[0]-r*e[2],o=r*e[1]-i*e[0],s=Math.sqrt(t*t+n*n+o*o)||1;return{maxDirection:[r,i,a],minDirection:[t/s,n/s,o/s]}}return{maxDirection:[r,i,a],minDirection:[s/u,c/u,l/u]}}function Ln(e,t,n,r,i,a){let{Pu:o,Pv:s,Puu:c,Pvv:l,Puv:u}=Nn(e,t,n,r),d=o[1]*s[2]-o[2]*s[1],f=o[2]*s[0]-o[0]*s[2],p=o[0]*s[1]-o[1]*s[0],m=Math.sqrt(d*d+f*f+p*p),h=o[0]*o[0]+o[1]*o[1]+o[2]*o[2],g=o[0]*s[0]+o[1]*s[1]+o[2]*s[2],_=s[0]*s[0]+s[1]*s[1]+s[2]*s[2];if(m<1e-12||h*_-g*g<1e-24)return In(o,s);let v=(c[0]*d+c[1]*f+c[2]*p)/m,y=(u[0]*d+u[1]*f+u[2]*p)/m,b=(l[0]*d+l[1]*f+l[2]*p)/m,x=h*_-g*g,S=(v*_-y*g)/x,C=(y*_-b*g)/x,w=(y*h-v*g)/x,ee=(b*h-y*g)/x;if(Math.abs(i-a)<1e-9*(Math.abs(i)+Math.abs(a)+1))return In(o,s);let te=Pn(S-i,C,w,ee-i),ne=Pn(S-a,C,w,ee-a);return{maxDirection:Fn(te,o,s),minDirection:Fn(ne,o,s)}}function Rn(e,t,n,r){let i=E(t),a=e.surfaceCurvature(i,n,r),o=a.get(0),s=a.get(1),c=a.get(2),l=a.get(3);a.delete();let{maxDirection:u,minDirection:d}=Ln(e,i,n,r,c,l);return{gaussian:s,mean:o,max:c,min:l,maxDirection:u,minDirection:d}}function zn(e,t,n,r,i){let a=Ve(r,i),o=Ie(t,r.map(E));try{return D(e,e.fillet(E(n),o,a))}finally{o.delete()}}function Bn(e,t,n,r,i){let a=Ve(r,i),o=Ie(t,r.map(E));try{return D(e,e.chamfer(E(n),o,a))}finally{o.delete()}}function Vn(e,t,n,r,i,a){let o=Ie(t,r.map(E));try{return D(e,e.chamferDistAngle(E(n),o,i,a))}finally{o.delete()}}function Hn(e,t,n,r,i,a){let o=Ie(t,r.map(E));try{return D(e,e.shell(E(n),o,i,a??.001))}finally{o.delete()}}function Un(e,t,n){return D(e,e.thicken(E(t),n,.001))}function Wn(e,t,n,r){return D(e,e.offset(E(t),n,r??1e-6))}function Gn(e,t,n){let r=JSON.parse(n);if(r.edgeId!==void 0&&r.startRadius!==void 0&&r.endRadius!==void 0)return D(e,e.filletVariable(E(t),r.edgeId,r.startRadius,r.endRadius));throw Error(`occt-wasm: filletVariable (complex spec) not implemented`)}function Kn(e,t,n,r,i,a){let o=E(t);for(let t of n){let n=(typeof a==`function`?a(t):a)*Math.PI/180;o=e.draft(o,E(t),n,r[0],r[1],r[2])}return D(e,o)}function qn(e,t,n,r){let i=Ie(t,r.map(E));try{return D(e,e.defeature(E(n),i,.001))}finally{i.delete()}}function Jn(e,t,n,r){let i=0;return r===`intersection`||r===1?i=1:r===`tangent`||r===2?i=2:typeof r==`number`&&(i=r),D(e,e.offsetWire2D(E(t),n,i))}function Yn(e,t){return D(e,e.simplify(E(t)))}function Xn(e,t){return D(e,e.reverseShape(E(t)))}function Zn(e,t,n,r){let i=n[0]*r,a=n[1]*r,o=n[2]*r;return D(e,e.extrude(E(t),i,a,o))}function Qn(e,t,n,r){let i=n.origin,a=n.direction;return D(e,e.revolve(E(t),i.x,i.y,i.z,a.x,a.y,a.z,r))}function $n(e,t,n,r,i,a){let o=i?E(i):0,s=a?E(a):0,c=Ie(t,n.map(E));try{return o||s?D(e,e.loftWithVertices(c,!0,r??!1,o,s)):D(e,e.loft(c,!0,r??!1))}finally{c.delete()}}function er(e,t,n,r){let i=r?.transitionMode??0;return D(e,e.sweep(E(t),E(n),i))}function tr(e,t,n){return D(e,e.simplePipe(E(t),E(n)))}function nr(e,t,n,r){let i=r?.frenet??!1,a=r?.transitionMode===`round`,o=r?.shellMode??!1,s=D(e,e.sweepPipeShell(E(t),E(n),i,a));if(o){let t=e.getSubShapes(E(s),`wire`);try{return{shape:s,firstShape:t.size()>0?D(e,t.get(0)):s,lastShape:t.size()>1?D(e,t.get(t.size()-1)):s}}finally{t.delete()}}return s}function rr(e,t,n,r){let i=r?.solid??!0,a=r?.ruled??!1,o=r?.startVertex?E(r.startVertex):0,s=r?.endVertex?E(r.endVertex):0,c=Ie(t,n.map(E));try{return o||s?D(e,e.loftWithVertices(c,i,a,o,s)):D(e,e.loft(c,i,a))}finally{c.delete()}}function ir(e,t,n,r){let i={__occtWasmLaw:!0,profile:t,length:n,endFactor:r,Trim(e,t,n){return{...i,trimFirst:e,trimLast:t}},delete(){}};return i}function ar(e,t,n,r,i){return D(e,e.revolveVec(E(t),n[0],n[1],n[2],r[0],r[1],r[2],i))}function or(e,t,n,r,i,a,o){let s=i??10;return D(e,e.draftPrism(E(t),0,0,s,a))}function sr(e){let t=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];for(let n of e)if(n.type===`translate`)t=Be([1,0,0,n.x,0,1,0,n.y,0,0,1,n.z,0,0,0,1],t);else{let e=n.axis??[0,0,1],r=n.center??[0,0,0],i=n.angle*Math.PI/180,a=Math.cos(i),o=Math.sin(i),s=1-a,c=Math.sqrt(e[0]**2+e[1]**2+e[2]**2),[l,u,d]=[e[0]/c,e[1]/c,e[2]/c],f=s*l*l+a,p=s*l*u-o*d,m=s*l*d+o*u,h=s*u*l+o*d,g=s*u*u+a,_=s*u*d-o*l,v=s*d*l-o*u,y=s*d*u+o*l,b=s*d*d+a;t=Be([f,p,m,r[0]-(f*r[0]+p*r[1]+m*r[2]),h,g,_,r[1]-(h*r[0]+g*r[1]+_*r[2]),v,y,b,r[2]-(v*r[0]+y*r[1]+b*r[2]),0,0,0,1],t)}return{handle:{__type:`transform_matrix`,matrix:t,delete:Ne},dispose:Ne}}function cr(e){let t=e,n;return Array.isArray(t)?n=t:typeof t==`object`&&t&&(Array.isArray(t.matrix)?n=t.matrix:Array.isArray(t.elements)&&(n=t.elements)),n&&n.length===16&&(n=n.slice(0,12)),n&&n.length>=12?n:void 0}function lr(e,t,n,r){let i=cr(r);if(i){let r=Re(t,i);try{return D(e,e.transform(E(n),r))}finally{r.delete()}}return T(e.getShapeType(E(n)),e.copy(E(n)))}function ur(e,t,n,r){if(typeof e.located==`function`){let i=cr(r);if(i){let r=Re(t,i);try{return D(e,e.located(E(n),r))}finally{r.delete()}}}return lr(e,t,n,r)}function dr(e,t,n,r,i){return D(e,e.translate(E(t),n,r,i))}function fr(e,t,n,r,i){let a=r??[0,0,1],o=i??[0,0,0];return D(e,e.rotate(E(t),o[0],o[1],o[2],a[0],a[1],a[2],n))}function pr(e,t,n,r){return D(e,e.mirror(E(t),n[0],n[1],n[2],r[0],r[1],r[2]))}function mr(e,t,n,r){return D(e,e.scale(E(t),n[0],n[1],n[2],r))}function hr(e,t,n,r,i,a){let o=Re(t,[r[0],r[1],r[2],i[0],r[3],r[4],r[5],i[1],r[6],r[7],r[8],i[2]]);try{return D(e,e.generalTransform(E(n),o))}finally{o.delete()}}function gr(e,t,n,r,i){let a=e.curvePointAtParam(E(r),i),[o,s,c]=(()=>{try{return[a.get(0),a.get(1),a.get(2)]}finally{a.delete()}})(),l=e.curveTangent(E(r),i),[u,d,f]=(()=>{try{return[l.get(0),l.get(1),l.get(2)]}finally{l.delete()}})(),p,m,h;Math.abs(u)<.9?(p=0,m=f,h=-d):(p=-f,m=0,h=u);let g=Math.sqrt(p*p+m*m+h*h);p/=g,m/=g,h/=g;let _=d*h-f*m,v=f*p-u*h,y=u*m-d*p,b=new t.VectorDouble;b.push_back(p),b.push_back(_),b.push_back(u),b.push_back(o),b.push_back(m),b.push_back(v),b.push_back(d),b.push_back(s),b.push_back(h),b.push_back(y),b.push_back(f),b.push_back(c);try{return D(e,e.transform(E(n),b))}finally{b.delete()}}function _r(e,t,n,r,i){let a=e.linearPattern(E(t),n[0],n[1],n[2],r,i),o=e.getSubShapes(a,`solid`),s=[];try{let e=o.size();for(let t=0;t<e;t++)s.push(T(`solid`,o.get(t)))}finally{o.delete()}if(s.length===0){let t=e.iterShapes(a);try{let n=t.size();for(let r=0;r<n;r++)s.push(D(e,t.get(r)))}finally{t.delete()}}return e.release(a),s}function vr(e,t,n,r,i,a){let o=e.circularPattern(E(t),n[0],n[1],n[2],r[0],r[1],r[2],i,a),s=e.getSubShapes(o,`solid`),c=[];try{let e=s.size();for(let t=0;t<e;t++)c.push(T(`solid`,s.get(t)))}finally{s.delete()}if(c.length===0){let t=e.iterShapes(o);try{let n=t.size();for(let r=0;r<n;r++)c.push(D(e,t.get(r)))}finally{t.delete()}}return e.release(o),c}function yr(e,t){return t.map(t=>{switch(t.type){case`translate`:return dr(e,t.shape,t.x,t.y,t.z);case`rotate`:return fr(e,t.shape,t.angle,t.axis,t.center);case`scale`:return mr(e,t.shape,t.center,t.factor);case`mirror`:return pr(e,t.shape,t.origin,t.normal);default:throw Error(`occt-wasm: transformBatch unknown type`)}})}function br(e,t){if(t===0)return{min:[0,0,0],max:[0,0,0]};let n=1/0,r=1/0,i=1/0,a=-1/0,o=-1/0,s=-1/0;for(let c=0;c<t;c++){let t=c*3,l=e[t]??0,u=e[t+1]??0,d=e[t+2]??0;l<n&&(n=l),u<r&&(r=u),d<i&&(i=d),l>a&&(a=l),u>o&&(o=u),d>s&&(s=d)}return{min:[n,r,i],max:[a,o,s]}}function xr(e,t,n,r,i,a,o,s){return{asset:{version:`2.0`,generator:`brepjs occt-wasm`},scene:0,scenes:[{nodes:[0]}],nodes:[{mesh:0}],meshes:[{primitives:[{attributes:{POSITION:0,NORMAL:1},indices:2,mode:4}]}],buffers:[{byteLength:o}],bufferViews:[{buffer:0,byteOffset:0,byteLength:r,target:34962},{buffer:0,byteOffset:r,byteLength:i,target:34962},{buffer:0,byteOffset:r+i,byteLength:a,target:34963}],accessors:[{bufferView:0,componentType:5126,count:e,type:`VEC3`,min:s.min,max:s.max},{bufferView:1,componentType:5126,count:t,type:`VEC3`},{bufferView:2,componentType:5125,count:n,type:`SCALAR`}]}}function Sr(e,t,n){if(n.length===1)return e.exportStep(E(n[0]));let r=t(n);return e.exportStep(E(r))}function Cr(e,t,n,r=De,i=Oe){let{vertices:a,triangles:o}=e(t,{tolerance:r,angularTolerance:i,skipNormals:!0});return n?je(a,o):Me(a,o)}function wr(e,t){let n=typeof t==`string`?t:new TextDecoder().decode(t);return[D(e,e.importStep(n))]}function Tr(e,t,n){let r=typeof n==`string`?new TextEncoder().encode(n):new Uint8Array(n),i=t;if(i.FS)i.FS.writeFile(`/tmp/import.stl`,r);else{let t=Array.from(r,e=>String.fromCharCode(e)).join(``);return D(e,e.importStl(t))}return D(e,e.importStl(``))}function Er(e,t,n){if(n.length===1)return e.exportIges(E(n[0]));let r=t(n);return e.exportIges(E(r))}function Dr(e,t){let n=typeof t==`string`?t:new TextDecoder().decode(t);return[D(e,e.importIges(n))]}function Or(e,t,n,r){if(n.length===0)return``;let i=Pr(e,t,n);try{return Fr(e,i)}finally{i.delete()}}function kr(e,t,n){let r=e(t,{tolerance:n,angularTolerance:.5,skipNormals:!1}),i=r.vertices,a=r.normals,o=r.triangles,s=i.length/3,c=a.length/3,l=o.length,u=i.byteLength,d=a.byteLength,f=o.byteLength,p=u+d+f,m=p+(4-p%4)%4,h=xr(s,c,l,u,d,f,m,br(i,s)),g=new TextEncoder().encode(JSON.stringify(h)),_=g.byteLength+(4-g.byteLength%4)%4,v=20+_+8+m,y=new ArrayBuffer(v),b=new DataView(y);b.setUint32(0,1179937895,!0),b.setUint32(4,2,!0),b.setUint32(8,v,!0),b.setUint32(12,_,!0),b.setUint32(16,1313821514,!0);let x=new Uint8Array(y,20,_);x.set(g);for(let e=g.byteLength;e<_;e++)x[e]=32;let S=20+_;b.setUint32(S,m,!0),b.setUint32(S+4,5130562,!0);let C=S+8;return new Uint8Array(y,C,u).set(new Uint8Array(i.buffer,i.byteOffset,u)),new Uint8Array(y,C+u,d).set(new Uint8Array(a.buffer,a.byteOffset,d)),new Uint8Array(y,C+u+d,f).set(new Uint8Array(o.buffer,o.byteOffset,f)),y}function Ar(e,t,n){let r=e(t,{tolerance:n,angularTolerance:.5,skipNormals:!1}),i=r.vertices,a=r.normals,o=r.triangles,s=[`# brepjs OBJ export`],c=i.length/3;for(let e=0;e<c;e++){let t=e*3;s.push(`v ${i[t]??0} ${i[t+1]??0} ${i[t+2]??0}`)}let l=a.length/3;for(let e=0;e<l;e++){let t=e*3;s.push(`vn ${a[t]??0} ${a[t+1]??0} ${a[t+2]??0}`)}let u=e=>{let t=(o[e]??0)+1,n=(o[e+1]??0)+1,r=(o[e+2]??0)+1;s.push(`f ${t}//${t} ${n}//${n} ${r}//${r}`)};if(r.faceGroups.length>0)for(let e of r.faceGroups){s.push(`g face_${e.faceHash}`);let t=e.count/3;for(let n=0;n<t;n++)u(e.start+n*3)}else{let e=o.length/3;for(let t=0;t<e;t++)u(t*3)}return new TextEncoder().encode(s.join(`
4
+ `)+`
5
+ `).buffer}function jr(e,t,n){let r=e(t,{tolerance:n,angularTolerance:.5,skipNormals:!1}),i=r.vertices,a=r.normals,o=r.triangles,s=i.length/3,c=o.length/3,l=a.length===i.length,u=[`ply`,`format ascii 1.0`,`comment brepjs PLY export`,`element vertex ${s}`,`property float x`,`property float y`,`property float z`];l&&u.push(`property float nx`,`property float ny`,`property float nz`),u.push(`element face ${c}`,`property list uchar int vertex_index`,`end_header`);for(let e=0;e<s;e++){let t=e*3,n=i[t]??0,r=i[t+1]??0,o=i[t+2]??0;if(l){let e=a[t]??0,i=a[t+1]??0,s=a[t+2]??0;u.push(`${n} ${r} ${o} ${e} ${i} ${s}`)}else u.push(`${n} ${r} ${o}`)}for(let e=0;e<c;e++){let t=o[e*3]??0,n=o[e*3+1]??0,r=o[e*3+2]??0;u.push(`3 ${t} ${n} ${r}`)}return new TextEncoder().encode(u.join(`
6
+ `)+`
7
+ `).buffer}function Mr(e,t){return e.toBREP(E(t))}function Nr(e,t){return D(e,e.fromBREP(t))}function Pr(e,t,n){let r=e.xcafNewDocument();for(let t of n){let n=e.xcafAddShape(r,E(t.shape));if(t.name&&e.xcafSetName(r,n,t.name),t.color){let[i,a,o]=t.color;e.xcafSetColor(r,n,i/255,a/255,o/255)}}return T(`compound`,r)}function Fr(e,t,n){let r=E(t),i=e.xcafGetRootLabels(r),a=(()=>{try{return i.size()>0}finally{i.delete()}})();try{return a?e.xcafExportSTEP(r):``}finally{e.xcafClose(r)}}function Ir(e,t,n,r){if(n.length===0)return``;let i=Pr(e,t,n.map(e=>({shape:e.shape,name:e.name??``,color:e.color})));try{return Fr(e,i)}finally{i.delete()}}function Lr(e,t,n,r){return T(`vertex`,e.makeVertex(t,n,r))}function Rr(e,t){throw Pe(t)?Error(`occt-wasm: makeEdge from curve handle is not implemented`):Error(`occt-wasm: makeEdge is not implemented`)}function zr(e,t,n){let r=Ie(t,n.map(E));try{return T(`wire`,e.makeWire(r))}finally{r.delete()}}function Br(e,t,n){let r=[],i=new Set(n.map(e=>E(e)));for(let t of n){let n=e.getSubShapes(E(t),`edge`);try{let e=n.size();for(let t=0;t<e;t++)r.push(n.get(t))}finally{n.delete()}}let a=Ie(t,r);try{return T(`wire`,e.makeWire(a))}finally{a.delete();for(let t of r)i.has(t)||e.release(t)}}function Vr(e,t,n){return T(`face`,e.makeFace(E(t)))}function Hr(e,t,n){return T(`edge`,e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Ur(e,t,n,r){return T(`edge`,e.makeCircleEdge(t[0],t[1],t[2],n[0],n[1],n[2],r))}function Wr(e,t,n,r,i,a){return T(`edge`,e.makeCircleArc(t[0],t[1],t[2],n[0],n[1],n[2],r,i,a))}function Gr(e,t,n,r){return T(`edge`,e.makeArcEdge(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function Kr(e,t,n,r,i){return T(`edge`,e.makeEllipseEdge(t[0],t[1],t[2],n[0],n[1],n[2],r,i))}function qr(e,t,n,r,i,a,o){return T(`edge`,e.makeEllipseArc(t[0],t[1],t[2],n[0],n[1],n[2],r,i,a,o))}function Jr(e,t,n){let r=[];for(let e of n)r.push(e[0],e[1],e[2]);let i=Re(t,r);try{return T(`edge`,e.makeBezierEdge(i))}finally{i.delete()}}function Yr(e,t,n,r){let[i,a,o]=t,[s,c,l]=n,[u,d,f]=r;return T(`edge`,e.makeTangentArc(i,a,o,s,c,l,u,d,f))}function Xr(e,t,n,r,i,a){let o=i?i[0]:0,s=i?i[1]:0,c=i?i[2]:0,l=a?a[0]:0,u=a?a[1]:0,d=a?a[2]:1,f=e.makeHelixWire(o,s,c,l,u,d,t,n,r);return e.buildCurves3d(f),T(`wire`,f)}function Zr(e,t,n){let r=Ie(t,n.map(E));try{return T(`compound`,e.makeCompound(r))}finally{r.delete()}}function Qr(e,t){return T(`solid`,e.solidFromShell(E(t)))}function $r(e,t,n,r,i){let a=[];for(let[t,i,o]of r){let r=n[t],s=n[i],c=n[o];!r||!s||!c||a.push(e.buildTriFace(r.x,r.y,r.z,s.x,s.y,s.z,c.x,c.y,c.z))}let o=Ie(t,a);try{let t=e.sewAndSolidify(o,i),n=e.fixFaceOrientations(t);return n!==t&&e.release(t),D(e,n)}finally{o.delete();for(let t of a)e.release(t)}}function ei(e,t){return T(`face`,e.makeNonPlanarFace(E(t)))}function ti(e,t,n,r){let i=Ie(t,r.map(E));try{return T(`face`,e.addHolesInFace(E(n),i))}finally{i.delete()}}function ni(e,t,n){let r=e.getSubShapes(E(n),`wire`),i=(()=>{try{return r.size()-1}finally{r.delete()}})(),a=[];for(let e=0;e<i;e++)a.push(e);let o=Le(t,a);try{return T(`face`,e.removeHolesFromFace(E(n),o))}finally{o.delete()}}function ri(e,t,n){let r=E(t);return T(`face`,e.makeFaceOnSurface(r,E(n)))}function ii(e,t,n,r,i){let a=new t.VectorDouble;for(let[e,t,r]of n)a.push_back(e),a.push_back(t),a.push_back(r);try{return T(`face`,e.bsplineSurface(a,r,i))}finally{a.delete()}}function ai(e,t,n,r,i){let a=[];for(let t=0;t<r-1;t++)for(let r=0;r<i-1;r++){let o=t*i+r,s=(t+1)*i+r,c=t*i+(r+1),l=(t+1)*i+(r+1),u=n[o],d=n[s],f=n[c],p=n[l];u&&d&&f&&a.push(e.buildTriFace(u[0],u[1],u[2],d[0],d[1],d[2],f[0],f[1],f[2])),d&&p&&f&&a.push(e.buildTriFace(d[0],d[1],d[2],p[0],p[1],p[2],f[0],f[1],f[2]))}let o=Ie(t,a);try{return D(e,e.sewAndSolidify(o,.001))}finally{o.delete();for(let t of a)e.release(t)}}function oi(e,t,n,r){let i=e.buildTriFace(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]);return i===0?null:T(`face`,i)}function si(e,t,n,r){let i=Ie(t,n.map(E));try{let t=e.sewAndSolidify(i,r),n=e.fixFaceOrientations(t);return n!==t&&e.release(t),T(`solid`,n)}finally{i.delete()}}function ci(e,t,n){return{x:e,y:t,z:n,__type:`point3d`,delete:Ne}}function li(e,t,n){return{x:e,y:t,z:n,__type:`direction3d`,delete:Ne}}function ui(e,t,n){return{x:e,y:t,z:n,__type:`vector3d`,delete:Ne}}function di(e,t,n,r,i,a){return{origin:{x:e,y:t,z:n},direction:{x:r,y:i,z:a},__type:`axis1`,delete:Ne}}function fi(e,t,n,r,i,a,o,s,c){return{origin:{x:e,y:t,z:n},zDir:{x:r,y:i,z:a},xDir:o===void 0?void 0:{x:o,y:s,z:c},__type:`axis2`,delete:Ne}}function pi(e,t,n,r,i,a,o,s,c){return{origin:{x:e,y:t,z:n},zDir:{x:r,y:i,z:a},xDir:o===void 0?void 0:{x:o,y:s,z:c},__type:`axis3`,delete:Ne}}function mi(e){return e}function hi(e){return e}function gi(e,t){return{x:e,y:t}}function _i(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`occt-wasm: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function vi(e,t){return{x:e,y:t}}function yi(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete(){}}}function bi(e){return e}function xi(e,t,n,r){return hi(te(e,t,n,r))}function Si(e,t,n,r){return hi(ne(e,t,n,r))}function Ci(e,t,n,r,i,a){let o=2*(e*(r-a)+n*(a-t)+i*(t-r));if(Math.abs(o)<1e-12)return hi(te(e,t,i,a));let s=((e*e+t*t)*(r-a)+(n*n+r*r)*(a-t)+(i*i+a*a)*(t-r))/o,c=((e*e+t*t)*(i-n)+(n*n+r*r)*(e-i)+(i*i+a*a)*(n-e))/o,l=Math.sqrt((e-s)**2+(t-c)**2),u=Math.atan2(t-c,e-s),d=Math.atan2(r-c,n-s),f=Math.atan2(a-c,i-s),p=d-u;p<0&&(p+=2*Math.PI);let m=f-u;m<0&&(m+=2*Math.PI);let h=p<m,g=ne(s,c,l,h);if(!h){let e=-u,t=-f;return t<e-1e-9&&(t+=2*Math.PI),hi({__bk2d:`trimmed`,basis:g,tStart:e,tEnd:t})}let _=f;return _<u-1e-9&&(_+=2*Math.PI),hi({__bk2d:`trimmed`,basis:g,tStart:u,tEnd:_})}function wi(e,t,n,r,i,a){let o=Math.sqrt(n*n+r*r),s=o>0?n/o:0,c=o>0?r/o:0,l=e-i,u=t-a,d=2*(u*s-l*c);if(Math.abs(d)<1e-12)return hi(te(e,t,i,a));let f=-(l*l+u*u)/d,p=e-f*c,m=t+f*s,h=Math.abs(f),g=Math.atan2(t-m,e-p),_=Math.atan2(a-m,i-p),v=-(t-m)/h,y=(e-p)/h,b=v*s+y*c>0,x=ne(p,m,h,b);if(!b){let e=-g,t=-_;return t<e-1e-9&&(t+=2*Math.PI),hi({__bk2d:`trimmed`,basis:x,tStart:e,tEnd:t})}let S=_;return S<g-1e-9&&(S+=2*Math.PI),hi({__bk2d:`trimmed`,basis:x,tStart:g,tEnd:S})}function Ti(e,t,n,r,i,a,o){return hi(ae(e,t,n,r,i??1,a??0,o??!0))}function Ei(e,t,n,r,i,a,o,s,c){return hi({...ae(e,t,n,r,o??1,s??0,c??!0),__bk2d:`ellipse`,startAngle:i,endAngle:a})}function Di(e){return hi(oe(e))}function Oi(e,t){let n=e,r=n.length,i=Math.max(1,Math.min(t?.degMax??3,r-1)),a=[0],o=[i+1],s=r-i-1;for(let e=1;e<=s;e++)a.push(e/(s+1)),o.push(1);return a.push(1),o.push(i+1),hi({__bk2d:`bspline`,poles:n,knots:a,multiplicities:o,degree:i,isPeriodic:!1})}function ki(e,t){return S(mi(e),t)}function Ai(e,t){return{point:S(mi(e),t),tangent:C(mi(e),t)}}function ji(e){return w(mi(e))}function Mi(e){let t=mi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return ee(t)}function Ni(e,t,n){return hi({__bk2d:`trimmed`,basis:mi(e),tStart:t,tEnd:n})}function Pi(e){return hi(JSON.parse(JSON.stringify(mi(e))))}function Fi(e,t){let n=mi(e),r=w(n),i=[];for(let e=0;e<=20;e++){let a=r.first+(r.last-r.first)*e/20,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l)||1;i.push([o-l/u*t,s+c/u*t])}return hi(oe(i.length<=25?i:i.filter((e,t)=>t%2==0||t===i.length-1)))}function Ii(e,t,n){return hi(se(mi(e),t,n))}function Li(e,t,n,r){return hi(ce(mi(e),t,n,r))}function Ri(e,t,n,r){return hi(le(mi(e),t,n,r))}function zi(e,t,n){return hi(ue(mi(e),t,n))}function Bi(e,t,n,r,i){return hi(de(mi(e),t,n,r,i))}function Vi(e,t,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return e;let s=-i/o,c=r/o,l=a-1,u=1+l*s*s,d=l*s*c,f=l*c*s,p=1+l*c*c,m=t-u*t-d*n,h=n-f*t-p*n,g=mi(e),_=w(g),v=[];for(let e=0;e<=20;e++){let[t,n]=S(g,_.first+(_.last-_.first)*e/20);v.push([u*t+d*n+m,f*t+p*n+h])}return hi(oe(v))}function Hi(e,t,n,r,i,a){return Vi(e,t,n,r,i,a)}function Ui(){return{type:`identity2d`,delete(){}}}function Wi(e,t,n,r,i){return{type:`affinity2d`,axOriginX:e,axOriginY:t,axDirX:n,axDirY:r,ratio:i,delete(){}}}function Gi(e,t){return{type:`translate2d`,dx:e,dy:t,delete(){}}}function Ki(e,t,n,r,i,a,o){return{type:`mirror2d`,cx:e,cy:t,mode:n,originX:r,originY:i,dirX:a,dirY:o,delete(){}}}function qi(e,t,n){return{type:`rotate2d`,angle:e,cx:t,cy:n,delete(){}}}function Ji(e,t,n){return{type:`scale2d`,sx:e,sy:e,cx:t,cy:n,delete(){}}}function Yi(e,t,n){let r=e;r.dx=(Number(r.dx)||0)+t,r.dy=(Number(r.dy)||0)+n}function Xi(e,t){let n=e,r=t;n.dx=(Number(n.dx)||0)+(Number(r.dx)||0),n.dy=(Number(n.dy)||0)+(Number(r.dy)||0),r.type===`scale2d`&&(n.type=`scale2d`,n.sx=r.sx,n.sy=r.sy)}function Zi(e,t){let n=t;return n.type===`translate2d`?Ii(e,Number(n.dx)||0,Number(n.dy)||0):n.type===`rotate2d`?Li(e,Number(n.angle)||0,Number(n.cx)||0,Number(n.cy)||0):n.type===`scale2d`?Ri(e,Number(n.sx)||1,Number(n.cx)||0,Number(n.cy)||0):n.type===`mirror2d`?zi(e,Number(n.ox)||0,Number(n.oy)||0):n.type===`affinity2d`?Vi(e,Number(n.axOriginX)||0,Number(n.axOriginY)||0,Number(n.axDirX)||0,Number(n.axDirY)||0,Number(n.ratio)||1):Number(n.dx)||Number(n.dy)?Ii(e,Number(n.dx)||0,Number(n.dy)||0):e}function Qi(e,t,n){let r=fe(mi(e),mi(t),n);return{points:r.points,segments:r.segments.map(e=>hi(e))}}function $i(e,t,n){let r=mi(e),i=w(r),a=(e,r,i)=>{if(e.__bk2d===`line`){let a=(t-e.ox)*e.dx+(n-e.oy)*e.dy,o=Math.max(r,Math.min(i,a)),[s,c]=S(e,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}let a=r,o=1/0;for(let s=0;s<=200;s++){let c=r+(i-r)*s/200,[l,u]=S(e,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}return{param:a,distance:Math.sqrt(o)}};if(r.__bk2d===`trimmed`){let e=r.tStart,t=r.tEnd,n=a(r.basis,e,t);if(!n)return null;let i=t-e,o=i>1e-15?(n.param-e)/i:0;return{param:Math.max(0,Math.min(1,o)),distance:n.distance}}return a(r,i.first,i.last)}function ea(e,t,n,r,i,a){let o=1/0;for(let s=0;s<=20;s++){let c=n+(r-n)*(s/20),[l,u]=S(mi(e),c);for(let e=0;e<=20;e++){let n=i+(a-i)*(e/20),[r,s]=S(mi(t),n),c=Math.sqrt((r-l)**2+(s-u)**2);c<o&&(o=c)}}return o}function ta(e,t){let n=mi(e),r=w(n),i=Math.min(Math.max(t+1,10),100),a=[];for(let e=0;e<i;e++){let t=r.first+(r.last-r.first)*e/(i-1);a.push(S(n,t))}let o=Math.min(3,i-1),s=a.length,c=[],l=[],u=s-o-1;c.push(0),l.push(o+1);for(let e=1;e<=u;e++)c.push(e/(u+1)),l.push(1);return c.push(1),l.push(o+1),hi({__bk2d:`bspline`,poles:a,knots:c,multiplicities:l,degree:o,isPeriodic:!1})}function na(e){let t=mi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;if(t.__bk2d!==`bspline`)return[e];let n=t.poles,r=t.degree,i=[];for(let e=0;e<t.knots.length;e++){let n=t.knots[e]??0,r=t.multiplicities[e]??0;for(let e=0;e<r;e++)i.push(n)}let a=n.length-1+r+1;if(r<1||i.length!==a+1)return[hi(oe(n))];let o=e=>[e[0],e[1]],s=[],c=r,l=r+1,u=[];for(let e=0;e<=r;e++)u[e]=o(n[e]);let d=[];for(;l<a;){let e=l;for(;l<a&&i[l+1]===i[l];)l++;let t=l-e+1;if(t<r){let e=i[l]-i[c],n=[];for(let a=r;a>t;a--)n[a-t-1]=e/(i[c+a]-i[c]);let s=r-t;for(let e=1;e<=s;e++){let i=s-e,c=t+e;for(let e=r;e>=c;e--){let t=n[e-c],r=u[e],i=u[e-1];u[e]=[t*r[0]+(1-t)*i[0],t*r[1]+(1-t)*i[1]]}l<a&&(d[i]=o(u[r]))}}if(s.push(u),l<a){for(let e=r-t;e<=r;e++)d[e]=o(n[l-r+e]);u=d,d=[],c=l,l++}}return s.map(e=>hi(oe(e)))}function ra(){return Ce()}function ia(e,t,n){we(e,mi(t),n)}function aa(e){return{xMin:e.xMin,yMin:e.yMin,xMax:e.xMax,yMax:e.yMax}}function oa(e,t){e.xMin=Math.min(e.xMin,t.xMin),e.yMin=Math.min(e.yMin,t.yMin),e.xMax=Math.max(e.xMax,t.xMax),e.yMax=Math.max(e.yMax,t.yMax)}function sa(e,t){return e.xMax<t.xMin||e.xMin>t.xMax||e.yMax<t.yMin||e.yMin>t.yMax}function ca(e,t,n){return t<e.xMin||t>e.xMax||n<e.yMin||n>e.yMax}function la(e){let t=mi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function ua(e){let t=mi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function da(e){let t=mi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles:null}function fa(e){let t=mi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles.length-1:null}function pa(e){return xe(mi(e))}function ma(e){return hi(Se(e))}function ha(e,t){let n=w(mi(e)),r=[n.first,...t.sort((e,t)=>e-t),n.last],i=[];for(let t=0;t<r.length-1;t++){let a=r[t]??n.first,o=r[t+1]??n.last;i.push(Ni(e,a,o))}return i}function ga(e,t,n,r,i,a){let o=mi(n),[s,c,l]=r,[u,d,f]=i,[p,m,h]=a,g=d*h-f*m,_=f*p-u*h,v=u*m-d*p,y=(e,t)=>[s+e*p+t*g,c+e*m+t*_,l+e*h+t*v],b=o.__bk2d;if(b===`line`){let t=w(o),[n,r]=S(o,t.first),[i,a]=S(o,t.last),s=y(n,r),c=y(i,a);return T(`edge`,e.makeLineEdge(s[0],s[1],s[2],c[0],c[1],c[2]))}if(b===`trimmed`){let t=o;if(t.basis&&t.basis.__bk2d===`line`){let[t,n]=S(o,0),[r,i]=S(o,1),a=y(t,n),s=y(r,i);return T(`edge`,e.makeLineEdge(a[0],a[1],a[2],s[0],s[1],s[2]))}if(t.basis&&t.basis.__bk2d===`circle`){let t=w(o),[n,r]=S(o,t.first),[i,a]=S(o,(t.first+t.last)/2),[s,c]=S(o,t.last),l=y(n,r),u=y(i,a),d=y(s,c);return T(`edge`,e.makeArcEdge(l[0],l[1],l[2],u[0],u[1],u[2],d[0],d[1],d[2]))}}if(b===`circle`){let t=o;if(t.cx!==void 0&&t.radius!==void 0){let[n,r,i]=y(t.cx,t.cy);return T(`edge`,e.makeCircleEdge(n,r,i,u,d,f,t.radius))}let n=w(o),[r,i]=S(o,n.first),[a,s]=S(o,(n.first+n.last)/2),[c,l]=S(o,n.last),p=y(r,i),m=y(a,s),h=y(c,l);return T(`edge`,e.makeArcEdge(p[0],p[1],p[2],m[0],m[1],m[2],h[0],h[1],h[2]))}let x=w(o),C=(x.last-x.first)/24,ee=[];for(let e=0;e<=24;e++){let[t,n]=S(o,x.first+e*C),[r,i,a]=y(t,n);ee.push(r,i,a)}let te=new t.VectorDouble;for(let e of ee)te.push_back(e);try{return T(`edge`,e.interpolatePoints(te,!1))}finally{te.delete()}}function _a(e,t,n,r){let i=mi(n),a=w(i),o=E(r),s=new t.VectorDouble;for(let t=0;t<=30;t++){let[n,r]=S(i,a.first+(a.last-a.first)*t/30),c=e.pointOnSurface(o,n,r);try{s.push_back(c.get(0)),s.push_back(c.get(1)),s.push_back(c.get(2))}finally{c.delete()}}try{return T(`edge`,e.interpolatePoints(s,!1))}finally{s.delete()}}function va(e){return e}function ya(){return hi(te(0,0,1,0))}function ba(e,t){e.buildCurves3d(E(t))}function xa(e,t,n,r){return T(`wire`,e.fixWireOnFace(E(t),E(n),r))}function Sa(e){try{let t=ze(e.modified),n=ze(e.generated),r=ze(e.deleted),i=e=>{let t=new Map,n=0;for(;n+1<e.length;){let r=e[n]??0,i=e[n+1]??0;n+=2;let a=[];for(let t=0;t<i&&n<e.length;t++,n++)a.push(e[n]??0);t.set(r,a)}return t};return{id:e.resultId,evolution:{modified:i(t),generated:i(n),deleted:new Set(r)}}}finally{e.delete()}}function Ca(e,t,n,r,i,a,o,s){let c=Le(t,o);try{let{id:t,evolution:o}=Sa(e.translateWithHistory(E(n),r,i,a,c,s));return{shape:D(e,t),evolution:o}}finally{c.delete()}}function wa(e,t,n,r,i,a,o,s){let c=o??[0,0,1],l=s??[0,0,0],u=Le(t,i);try{let{id:t,evolution:i}=Sa(e.rotateWithHistory(E(n),l[0],l[1],l[2],c[0],c[1],c[2],r,u,a));return{shape:D(e,t),evolution:i}}finally{u.delete()}}function Ta(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=Sa(e.mirrorWithHistory(E(n),r[0],r[1],r[2],i[0],i[1],i[2],s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function Ea(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=Sa(e.scaleWithHistory(E(n),r[0],r[1],r[2],i,s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function Da(e,t,n,r,i,a){let o=e(t,n,r,i),s=new Map;for(let e of a)s.set(e,[e]);return{shape:o,evolution:{modified:s,generated:new Map,deleted:new Set}}}function Oa(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=Sa(e.fuseWithHistory(E(n),E(r),s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete()}}function ka(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=Sa(e.cutWithHistory(E(n),c.id,s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete(),c?.dispose()}}function Aa(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=Sa(e.intersectWithHistory(E(n),c.id,s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete(),c?.dispose()}}function ja(e,t,n,r,i,a,o){let s=Ve(r,i),c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Sa(e.filletWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Ma(e,t,n,r,i,a,o){let s=Ve(r,i),c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Sa(e.chamferWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Na(e,t,n,r,i,a,o,s){let c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Sa(e.shellWithHistory(E(n),c,i,s??.001,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Pa(e,t,n,r,i,a){let o=Le(t,i);try{let{id:t,evolution:i}=Sa(e.thickenWithHistory(E(n),r,.001,o,a));return{shape:D(e,t),evolution:i}}finally{o.delete()}}function Fa(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=Sa(e.offsetWithHistory(E(n),r,o??1e-6,s,a));return{shape:D(e,t),evolution:i}}finally{s.delete()}}function Ia(e,t,n,r,i){let[a,o,s]=r,c=E(t);for(let t of n){let n=(typeof i==`number`?i:i(t))*Math.PI/180;c=e.draft(c,E(t),n,a,o,s)}return{shape:D(e,c),evolution:{modified:new Map,generated:new Map,deleted:new Set}}}function La(e,t,n,r,i,a,o){let s=e(r,i),c=t(s,`face`),l=new Map,u=Math.min(a.length,c.length);for(let e=0;e<u;e++){let t=c[e],r=a[e];t!==void 0&&r!==void 0&&l.set(r,[n(t,o)])}return{shape:s,evolution:{modified:l,generated:new Map,deleted:new Set}}}function Ra(e,t,n,r){if(n.length<4)throw Error(`hullFromPoints: need at least 4 points`);let{points:i,faces:a}=x(n,r);if(a.length<4)throw Error(`hullFromPoints: degenerate hull (fewer than 4 faces)`);return $r(e,t,[...i],[...a],r)}function za(e,t,n,r){let i=Math.max(r,1),a=[];for(let r of n){let n=e.tessellate(E(r),i,i*.5);try{let e=n.positionCount,r=n.getPositionsPtr()>>2;for(let n=0;n<e;n+=3)a.push({x:t.HEAPF32[r+n]??0,y:t.HEAPF32[r+n+1]??0,z:t.HEAPF32[r+n+2]??0})}finally{n.delete()}}return a}function Ba(e,t,n,r){if(n.length===0)throw Error(`hull: no shapes provided`);let i=za(e,t,n,r);if(i.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);return Ra(e,t,i,r)}function Va(e){throw new c(`occt-wasm: ${e} is not yet implemented`)}var Ha=class e{oc;kernelId=`occt-wasm`;capabilities=a;Module;k;owner;constructor(e,t,n){this.Module=e,this.k=Ue(t,e),this.oc=We(e,this.k),this.owner=n}static fromKernel(t){let n=t.getRawModule(),r=t.getRawKernel();return new e(n,r,t)}get retainedKernelOwner(){return this.owner}dispose(e){Pe(e)?this.k.release(e.id):typeof e.delete==`function`&&e.delete()}executeBatch(e){Va(`executeBatch`)}openCheckpoints=[];checkpoint(){let e=this.k.checkpoint();return this.openCheckpoints.push(e),e}checkpointCount(){return this.openCheckpoints.length}restoreCheckpoint(e){let t=this.openCheckpoints.lastIndexOf(e);if(t===-1)throw new r(`occtWasmAdapter.restoreCheckpoint`,`checkpoint ${e} is not open — releaseSince would erase unrelated live handles`);this.k.releaseSince(e),this.openCheckpoints.length=t}discardCheckpoint(e){this.closeCheckpoint(e)}closeCheckpoint(e){let t=this.openCheckpoints.lastIndexOf(e);t!==-1&&(this.openCheckpoints.length=t)}makeBox(e,t,n){return nt(this.k,e,t,n)}makeCylinder(e,t,n,r){return rt(this.k,e,t,n,r)}makeSphere(e,t){return it(this.k,e,t)}makeCone(e,t,n,r,i){return at(this.k,e,t,n,r,i)}makeTorus(e,t,n,r){return ot(this.k,e,t,n,r)}makeEllipsoid(e,t,n){return st(this.k,e,t,n)}makeBoxFromCorners(e,t){return ct(this.k,e,t)}makeRectangle(e,t){return lt(this.k,e,t)}fuse(e,t,n){return Ke(this.k,e,t,n)}cut(e,t,n){return qe(this.k,e,t,n)}intersect(e,t,n){return Je(this.k,e,t,n)}section(e,t,n){return Ye(this.k,e,t,n)}fuseAll(e,t){return Xe(this.k,this.Module,e,t)}cutAll(e,t,n){return Ze(this.k,this.Module,e,t,n)}split(e,t){return Qe(this.k,this.Module,e,t)}checkBoolean(e,t,n){return $e(this.k,e,t,n)}meshBoolean(e,t,n,r,i,a){return et(e,t,n,r,i,a)}makeVertex(e,t,n){return Lr(this.k,e,t,n)}makeEdge(e,t,n){return Rr(this.k,e)}makeWire(e){return zr(this.k,this.Module,e)}makeFace(e,t){return Vr(this.k,e,t)}makeLineEdge(e,t){return Hr(this.k,e,t)}makeCircleEdge(e,t,n){return Ur(this.k,e,t,n)}makeCircleArc(e,t,n,r,i){return Wr(this.k,e,t,n,r,i)}makeArcEdge(e,t,n){return Gr(this.k,e,t,n)}makeEllipseEdge(e,t,n,r,i){return Kr(this.k,e,t,n,r)}makeEllipseArc(e,t,n,r,i,a,o){return qr(this.k,e,t,n,r,i,a)}makeBezierEdge(e){return Jr(this.k,this.Module,e)}makeTangentArc(e,t,n){return Yr(this.k,e,t,n)}makeHelixWire(e,t,n,r,i,a){return Xr(this.k,e,t,n,r,i)}makeWireFromMixed(e){return Br(this.k,this.Module,e)}makeCompound(e){return Zr(this.k,this.Module,e)}solidFromShell(e){return Qr(this.k,e)}hull(e,t){return Ba(this.k,this.Module,e,t)}hullFromPoints(e,t){return Ra(this.k,this.Module,e,t)}buildSolidFromFaces(e,t,n){return $r(this.k,this.Module,e,t,n)}makeNonPlanarFace(e){return ei(this.k,e)}addHolesInFace(e,t){return ti(this.k,this.Module,e,t)}removeHolesFromFace(e){return ni(this.k,this.Module,e)}makeFaceOnSurface(e,t){return ri(this.k,e,t)}bsplineSurface(e,t,n){return ii(this.k,this.Module,e,t,n)}triangulatedSurface(e,t,n){return ai(this.k,this.Module,e,t,n)}buildTriFace(e,t,n){return oi(this.k,e,t,n)}sewAndSolidify(e,t){return si(this.k,this.Module,e,t)}createPoint3d(e,t,n){return ci(e,t,n)}createDirection3d(e,t,n){return li(e,t,n)}createVector3d(e,t,n){return ui(e,t,n)}createAxis1(e,t,n,r,i,a){return di(e,t,n,r,i,a)}createAxis2(e,t,n,r,i,a,o,s,c){return fi(e,t,n,r,i,a,o,s,c)}createAxis3(e,t,n,r,i,a,o,s,c){return pi(e,t,n,r,i,a,o,s,c)}extrude(e,t,n){return Zn(this.k,e,t,n)}revolve(e,t,n){return Qn(this.k,e,t,n)}loft(e,t,n,r){return $n(this.k,this.Module,e,t,n,r)}sweep(e,t,n){return er(this.k,e,t,n)}simplePipe(e,t){return tr(this.k,e,t)}helicalSweep(e,t,n,r,i,a){throw Error(`helicalSweep on occt-wasm requires profile positioning+orientation logic not yet implemented; brepkit has a native implementation`)}sweepWithOptions(e,t,n,r,i){Va(`sweepWithOptions`)}sweepPipeShell(e,t,n){return nr(this.k,e,t,n)}loftAdvanced(e,t){return rr(this.k,this.Module,e,t)}buildExtrusionLaw(e,t,n){return ir(this.k,e,t,n)}revolveVec(e,t,n,r){return ar(this.k,e,t,n,r)}draftPrism(e,t,n,r,i,a){return or(this.k,e,t,n,r,i,a)}fillet(e,t,n){return zn(this.k,this.Module,e,t,n)}chamfer(e,t,n){return Bn(this.k,this.Module,e,t,n)}chamferDistAngle(e,t,n,r){return Vn(this.k,this.Module,e,t,n,r)}shell(e,t,n,r){return Hn(this.k,this.Module,e,t,n,r)}thicken(e,t){return Un(this.k,e,t)}offset(e,t,n){return Wn(this.k,e,t,n)}filletVariable(e,t){return Gn(this.k,e,t)}draft(e,t,n,r,i){return Kn(this.k,e,t,n,r,i)}defeature(e,t){return qn(this.k,this.Module,e,t)}offsetWire2D(e,t,n){return Jn(this.k,e,t,n)}simplify(e){return Yn(this.k,e)}reverseShape(e){return Xn(this.k,e)}composeTransform(e){return sr(e)}transform(e,t){return lr(this.k,this.Module,e,t)}locate(e,t){return ur(this.k,this.Module,e,t)}translate(e,t,n,r){return dr(this.k,e,t,n,r)}rotate(e,t,n,r){return fr(this.k,e,t,n,r)}mirror(e,t,n){return pr(this.k,e,t,n)}scale(e,t,n){return mr(this.k,e,t,n)}generalTransform(e,t,n,r){return hr(this.k,this.Module,e,t,n,r)}generalTransformNonOrthogonal(e,t,n){return hr(this.k,this.Module,e,t,n,!1)}positionOnCurve(e,t,n){return gr(this.k,this.Module,e,t,n)}linearPattern(e,t,n,r){return _r(this.k,e,t,n,r)}circularPattern(e,t,n,r,i){return vr(this.k,e,t,n,r,i)}transformBatch(e){return yr(this.k,e)}translateWithHistory(e,t,n,r,i,a){return Ca(this.k,this.Module,e,t,n,r,i,a)}rotateWithHistory(e,t,n,r,i,a){return wa(this.k,this.Module,e,t,n,r,i,a)}mirrorWithHistory(e,t,n,r,i){return Ta(this.k,this.Module,e,t,n,r,i)}scaleWithHistory(e,t,n,r,i){return Ea(this.k,this.Module,e,t,n,r,i)}generalTransformWithHistory(e,t,n,r,i,a){return Da((e,t,n,r)=>this.generalTransform(e,t,n,r),e,t,n,r,i)}fuseWithHistory(e,t,n,r,i){return Oa(this.k,this.Module,e,t,n,r,i)}cutWithHistory(e,t,n,r,i){return ka(this.k,this.Module,e,t,n,r,i)}intersectWithHistory(e,t,n,r,i){return Aa(this.k,this.Module,e,t,n,r,i)}filletWithHistory(e,t,n,r,i){return ja(this.k,this.Module,e,t,n,r,i)}chamferWithHistory(e,t,n,r,i){return Ma(this.k,this.Module,e,t,n,r,i)}shellWithHistory(e,t,n,r,i,a){return Na(this.k,this.Module,e,t,n,r,i,a)}thickenWithHistory(e,t,n,r){return Pa(this.k,this.Module,e,t,n,r)}offsetWithHistory(e,t,n,r,i){return Fa(this.k,this.Module,e,t,n,r,i)}draftWithHistory(e,t,n,r,i,a,o){return Ia(this.k,e,t,n,i)}applyComposedTransformWithHistory(e,t,n,r){return La((e,t)=>this.transform(e,t),(e,t)=>this.iterShapes(e,t),(e,t)=>this.hashCode(e,t),e,t,n,r)}mesh(e,t){return Mt(this.k,this.Module,e,t)}meshEdges(e,t,n){return Pt(this.k,this.Module,e,t,n)}hasTriangulation(e){return Ft(this.k,e)}meshShape(e,t,n){It(this.k,e,t,n)}exportSTEP(e){return Sr(this.k,this.makeCompound.bind(this),e)}exportSTL(e,t,n,r){return Cr(this.mesh.bind(this),e,t,n,r)}importSTEP(e){return wr(this.k,e)}importSTL(e){return Tr(this.k,this.Module,e)}exportIGES(e){return Er(this.k,this.makeCompound.bind(this),e)}importIGES(e){return Dr(this.k,e)}exportSTEPAssembly(e,t){return Or(this.k,this.Module,e,t)}export3MF(e,t){throw Error(`export3MF is only available with the brepkit kernel`)}exportGLB(e,t){return kr(this.mesh.bind(this),e,t)}exportOBJ(e,t){return Ar(this.mesh.bind(this),e,t)}exportPLY(e,t){return jr(this.mesh.bind(this),e,t)}import3MF(e){throw Error(`import3MF is only available with the brepkit kernel`)}importOBJ(e){throw Error(`importOBJ is only available with the brepkit kernel`)}importGLB(e){throw Error(`importGLB is only available with the brepkit kernel`)}toBREP(e){return Mr(this.k,e)}fromBREP(e){return Nr(this.k,e)}createXCAFDocument(e){return Pr(this.k,this.Module,e)}writeXCAFToSTEP(e,t){return Fr(this.k,e,t)}exportSTEPConfigured(e,t){return Ir(this.k,this.Module,e,t)}volume(e){return bn(this.k,e)}area(e){return xn(this.k,e)}length(e){return Sn(this.k,e)}centerOfMass(e){return Cn(this.k,e)}linearCenterOfMass(e){return wn(this.k,e)}boundingBox(e){return Tn(this.k,e)}distance(e,t){return jn(this.k,this.Module,e,t)}surfaceCurvature(e,t,n){return Rn(this.k,e,t,n)}surfaceCenterOfMass(e){return En(this.k,e)}measureBulk(e,t){return Dn(this.k,e,t)}createDistanceQuery(e){return On(this.k,e)}iterShapes(e,t){return ut(this.k,e,t)}iterShapeList(e,t){throw Error(`iterShapeList is not applicable to occt-wasm: the arena model has no TopTools_ListOfShape handles`)}shapeType(e){return dt(this.k,e)}isSame(e,t){return ft(this.k,e,t)}isEqual(e,t){return pt(this.k,e,t)}downcast(e,t){return mt(this.k,e,t)}copyShape(e){return ht(this.k,e)}hashCode(e,t){return gt(this.k,e,t)}isNull(e){return _t(this.k,e)}shapeOrientation(e){return vt(this.k,e)}edgeToFaceMap(e){return yt(this.k,e)}sharedEdges(e,t){return bt(this.k,e,t)}adjacentFaces(e,t){return xt(this.k,e,t)}sew(e,t){return St(this.k,this.Module,e,t)}curveType(e){return Rt(this.k,e)}curveParameters(e){return zt(this.k,e)}curvePointAtParam(e,t){return Bt(this.k,e,t)}curveTangent(e,t){return Vt(this.k,e,t)}curveIsClosed(e){return Ht(this.k,e)}curveIsPeriodic(e){return Ut(this.k,e)}curvePeriod(e){return Wt(this.k,e)}interpolatePoints(e,t){return Gt(this.k,this.Module,e,t)}approximatePoints(e,t){return Kt(this.k,this.Module,e,t)}curveDegreeElevate(e,t){return qt(this.k,e,t)}curveKnotInsert(e,t,n){return Jt(this.k,e,t,n)}curveKnotRemove(e,t,n){return Yt(this.k,e,t,n)}curveSplit(e,t){return Xt(this.k,e,t)}getBezierPenultimatePole(e){return Zt(this.k,e)}createCurveAdaptor(e){Va(`createCurveAdaptor`)}vertexPosition(e){return $t(this.k,e)}surfaceType(e){return en(this.k,e)}uvBounds(e){return tn(this.k,e)}outerWire(e){return nn(this.k,e)}surfaceNormal(e,t,n){return rn(this.k,e,t,n)}pointOnSurface(e,t,n){return an(this.k,e,t,n)}uvFromPoint(e,t){return gn(this.k,e,t)}projectPointOnFace(e,t){return _n(this.k,e,t)}classifyPointOnFace(e,t,n,r){return vn(this.k,e,t,n,r)}classifyPointRobust(e,t,n){Va(`classifyPointRobust`)}classifyPointWinding(e,t,n){Va(`classifyPointWinding`)}approximateSurfaceLspia(e,t,n,r,i,a,o,s,c){Va(`approximateSurfaceLspia`)}untrimFace(e,t,n){Va(`untrimFace`)}getSurfaceCylinderData(e){return hn(this.k,e)}getSurfaceAxis(e){return mn(this.k,e)}reverseSurfaceU(e){Va(`reverseSurfaceU`)}detectSmallFeatures(e,t,n){Va(`detectSmallFeatures`)}recognizeFeatures(e,t){Va(`recognizeFeatures`)}projectEdges(e,t,n,r){return yn(this.k,this.Module,e,t,n,r)}isValid(e){return wt(this.k,e)}healSolid(e){return Tt(this.k,e)}healFace(e){return Et(this.k,e)}healWire(e,t){return Dt(this.k,e,t)}mergeCoincidentVertices(e,t){return Ot(this.k,e,t)}removeDegenerateEdges(e,t){return kt(this.k,e,t)}fixFaceOrientations(e){return At(this.k,e)}fixShape(e){return jt(this.k,e)}fixSelfIntersection(e){Va(`fixSelfIntersection`)}createPoint2d(e,t){return gi(e,t)}createDirection2d(e,t){return _i(e,t)}createVector2d(e,t){return vi(e,t)}createAxis2d(e,t,n,r){return yi(e,t,n,r)}wrapCurve2dHandle(e){return bi(e)}createCurve2dAdaptor(e){Va(`createCurve2dAdaptor`)}makeLine2d(e,t,n,r){return xi(e,t,n,r)}makeCircle2d(e,t,n,r){return Si(e,t,n,r)}makeArc2dThreePoints(e,t,n,r,i,a){return Ci(e,t,n,r,i,a)}makeArc2dTangent(e,t,n,r,i,a){return wi(e,t,n,r,i,a)}makeEllipse2d(e,t,n,r,i,a,o){return Ti(e,t,n,r,i,a,o)}makeEllipseArc2d(e,t,n,r,i,a,o,s,c){return Ei(e,t,n,r,i,a,o,s,c)}makeBezier2d(e){return Di(e)}makeBSpline2d(e,t){return Oi(e)}evaluateCurve2d(e,t){return ki(e,t)}evaluateCurve2dD1(e,t){return Ai(e,t)}getCurve2dBounds(e){return ji(e)}getCurve2dType(e){return Mi(e)}trimCurve2d(e,t,n){return Ni(e,t,n)}reverseCurve2d(e){}copyCurve2d(e){return Pi(e)}offsetCurve2d(e,t){return Fi(e,t)}translateCurve2d(e,t,n){return Ii(e,t,n)}rotateCurve2d(e,t,n,r){return Li(e,t,n,r)}scaleCurve2d(e,t,n,r){return Ri(e,t,n,r)}mirrorCurve2dAtPoint(e,t,n){return zi(e,t,n)}mirrorCurve2dAcrossAxis(e,t,n,r,i){return Bi(e,t,n,r,i)}affinityTransform2d(e,t,n,r,i,a){return Hi(e,t,n,r,i,a)}createIdentityGTrsf2d(){return Ui()}createAffinityGTrsf2d(e,t,n,r,i){return Wi(e,t,n,r,i)}createTranslationGTrsf2d(e,t){return Gi(e,t)}createMirrorGTrsf2d(e,t,n,r,i,a,o){return Ki(e,t,n,r,i,a,o)}createRotationGTrsf2d(e,t,n){return qi(e,t,n)}createScaleGTrsf2d(e,t,n){return Ji(e,t,n)}setGTrsf2dTranslationPart(e,t,n){Yi(e,t,n)}multiplyGTrsf2d(e,t){Xi(e,t)}transformCurve2dGeneral(e,t){return Zi(e,t)}intersectCurves2d(e,t,n){return Qi(e,t,n)}projectPointOnCurve2d(e,t,n){return $i(e,t,n)}distanceBetweenCurves2d(e,t,n,r,i,a){return ea(e,t,n,r,i,a)}approximateCurve2dAsBSpline(e,t,n,r){return ta(e,r)}decomposeBSpline2dToBeziers(e){return na(e)}createBoundingBox2d(){return ra()}addCurveToBBox2d(e,t,n){ia(e,t,n)}getBBox2dBounds(e){return aa(e)}mergeBBox2d(e,t){oa(e,t)}isBBox2dOut(e,t){return sa(e,t)}isBBox2dOutPoint(e,t,n){return ca(e,t,n)}getCurve2dCircleData(e){return la(e)}getCurve2dEllipseData(e){return ua(e)}getCurve2dBezierPoles(e){return da(e)}getCurve2dBezierDegree(e){return fa(e)}getCurve2dBSplineData(e){Va(`getCurve2dBSplineData`)}serializeCurve2d(e){return pa(e)}deserializeCurve2d(e){return ma(e)}splitCurve2d(e,t){return ha(e,t)}liftCurve2dToPlane(e,t,n,r){return ga(this.k,this.Module,e,t,n,r)}buildEdgeOnSurface(e,t){return _a(this.k,this.Module,e,t)}extractSurfaceFromFace(e){return va(e)}extractCurve2dFromEdge(e,t){return ya()}buildCurves3d(e){ba(this.k,e)}fixWireOnFace(e,t,n){return xa(this.k,e,t,n)}fillSurface(e,t){Va(`fillSurface`)}getNurbsCurveData(e){return Qt(this.k,e)}};function O(e){return{ok:!0,value:e}}function k(e){return{ok:!1,error:e}}var Ua=O(void 0);function Wa(e){return e.ok}function A(e){return!e.ok}function Ga(e,t){return e.ok?O(t(e.value)):e}function Ka(e,t){return e.ok?e:k(t(e.error))}function qa(e,t){return e.ok?t(e.value):e}var Ja=qa;function Ya(e,t){return e.ok?e:t}function Xa(e,t){return e.ok?e:t(e.error)}function Za(e,t){return e.ok?t.ok?O([e.value,t.value]):t:e}var Qa=lo;function $a(e,t){return e.ok&&t(e.value),e}function eo(e,t){return e.ok||t(e.error),e}function to(e){return e.ok?e.value:e}function no(e,t,n){return e.ok?O(t(e.value)):k(n(e.error))}function ro(e,t){return e==null?k(t()):O(e)}function io(e){if(typeof e==`object`&&e&&`kind`in e&&`code`in e&&`message`in e){let t=e;return`[${t.kind}] ${t.code}: ${t.message}`}return String(e)}function j(e){if(e.ok)return e.value;throw Error(`Called unwrap() on an Err: ${io(e.error)}`)}function ao(e,t){return e.ok?e.value:t}function oo(e,t){return e.ok?e.value:t(e.error)}function so(e){if(!e.ok)return e.error;throw Error(`Called unwrapErr() on an Ok: ${String(e.value)}`)}function co(e,t){return e.ok?t.ok(e.value):t.err(e.error)}function lo(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return O(t)}function uo(e,t){try{return O(e())}catch(e){return k(t(e))}}async function fo(e,t){try{return O(await e())}catch(e){return k(t(e))}}function po(e){function t(e){return typeof e==`object`&&!!e&&`ok`in e&&typeof e.ok==`boolean`}let n=t(e)?e:O(e);function r(e){return{then(t){return e.ok?r(t(e.value)):r(e)},get result(){return e}}}return r(n)}var mo=[{pattern:/invalid edge configuration|edges?.*(not|fail|invalid)/i,translation:`The edges may not form a continuous loop. Check that edges connect end-to-end without gaps.`},{pattern:/BRepAlgoAPI.*failed|boolean.*operation.*failed/i,translation:`Boolean operation failed. Common causes: overlapping faces, zero-thickness geometry, or degenerate shapes. Try healing input shapes first.`},{pattern:/fillet.*radius.*too.*large|fillet.*failed/i,translation:`Fillet operation failed. The radius may be too large for the selected edges. Try reducing the radius or check that edges have enough room.`},{pattern:/chamfer.*failed|chamfer.*distance.*too.*large/i,translation:`Chamfer operation failed. The distance may be too large for the selected edges. Try reducing the distance or check edge geometry.`},{pattern:/shell.*failed|offset.*failed/i,translation:`Shell/offset operation failed. The thickness may be too large, or the shape may have complex geometry. Try reducing thickness.`},{pattern:/sweep.*failed|pipe.*failed/i,translation:`Sweep operation failed. Check that the profile and spine are compatible, and that the spine has no sharp twists or self-intersections.`},{pattern:/loft.*failed/i,translation:`Loft operation failed. Profiles may be incompatible or have different orientations. Ensure profiles are ordered consistently.`},{pattern:/extrude.*failed|prism.*failed/i,translation:`Extrusion failed. The profile may be invalid or self-intersecting. Check that the profile forms a valid closed wire.`},{pattern:/revolve.*failed|revolution.*failed/i,translation:`Revolution operation failed. The profile may intersect the axis of revolution, or the angle may be invalid.`},{pattern:/self.*intersect|self-intersect/i,translation:`Shape has self-intersections. The operation resulted in overlapping geometry. Simplify the input or adjust parameters.`},{pattern:/degener|degenerat/i,translation:`Degenerate geometry detected. The shape has edges or faces with zero length/area. Check input geometry for collapsed elements.`},{pattern:/BRepCheck.*fail|shape.*invalid|shape.*not.*valid/i,translation:`Shape validation failed. The resulting shape has invalid topology. Try healing the shape or checking input geometry.`}],ho={FUSE_FAILED:`Try autoHeal() on both operands before the boolean operation. Check for overlapping faces or zero-thickness geometry.`,CUT_FAILED:`Try autoHeal() on both operands before the boolean operation. Check for overlapping faces or zero-thickness geometry.`,FUSE_NOT_3D:`The boolean result was not a 3D solid. Ensure both input shapes are valid 3D solids, not shells or open surfaces.`,CUT_NOT_3D:`The boolean result was not a 3D solid. Ensure both input shapes are valid 3D solids, not shells or open surfaces.`,INTERSECT_NOT_3D:`The boolean result was not a 3D solid. Ensure both input shapes are valid 3D solids, not shells or open surfaces.`,SWEEP_FAILED:`Ensure the spine curve has no sharp corners or self-intersections. Try simplifying the profile or using a smoother path.`,LOFT_FAILED:`Check that all profiles have the same number of edges and consistent orientation. Try reordering profiles.`,FILLET_NOT_3D:`The fillet radius may be too large for the selected edges. Try a smaller radius or check that adjacent faces have enough room.`,CHAMFER_NOT_3D:`The chamfer distance may be too large. Try a smaller distance or check edge geometry.`,SHELL_NOT_3D:`The shell thickness may be too large for the shape. Try reducing thickness or removing problematic faces.`,OFFSET_NOT_3D:`The offset distance may be too large for the shape geometry. Try a smaller distance.`,DRAFT_FAILED:`The draft angle may be too large or the selected faces incompatible. Try a smaller angle or different faces.`};function go(e){return ho[e]}function _o(e){for(let{pattern:t,translation:n}of mo)if(t.test(e))return`${n} (kernel: ${e})`;return e}var M={BSPLINE_FAILED:`BSPLINE_FAILED`,FACE_BUILD_FAILED:`FACE_BUILD_FAILED`,SWEEP_FAILED:`SWEEP_FAILED`,LOFT_FAILED:`LOFT_FAILED`,FUSE_FAILED:`FUSE_FAILED`,CUT_FAILED:`CUT_FAILED`,HEAL_NO_EFFECT:`HEAL_NO_EFFECT`,BOOLEAN_HAS_ERRORS:`BOOLEAN_HAS_ERRORS`,VARIABLE_FILLET_FAILED:`VARIABLE_FILLET_FAILED`,POSITION_ON_CURVE_FAILED:`POSITION_ON_CURVE_FAILED`,FIX_SHAPE_FAILED:`FIX_SHAPE_FAILED`,SOLID_FROM_SHELL_FAILED:`SOLID_FROM_SHELL_FAILED`,FIX_SELF_INTERSECTION_FAILED:`FIX_SELF_INTERSECTION_FAILED`,ELLIPSE_RADII:`ELLIPSE_RADII`,FUSE_ALL_EMPTY:`FUSE_ALL_EMPTY`,FILLET_NO_EDGES:`FILLET_NO_EDGES`,CHAMFER_NO_EDGES:`CHAMFER_NO_EDGES`,CHAMFER_ANGLE_NO_EDGES:`CHAMFER_ANGLE_NO_EDGES`,CHAMFER_ANGLE_BAD_DISTANCE:`CHAMFER_ANGLE_BAD_DISTANCE`,CHAMFER_ANGLE_BAD_ANGLE:`CHAMFER_ANGLE_BAD_ANGLE`,BEZIER_MIN_POINTS:`BEZIER_MIN_POINTS`,POLYGON_MIN_POINTS:`POLYGON_MIN_POINTS`,ZERO_LENGTH_EXTRUSION:`ZERO_LENGTH_EXTRUSION`,ZERO_TWIST_ANGLE:`ZERO_TWIST_ANGLE`,LOFT_EMPTY:`LOFT_EMPTY`,UNSUPPORTED_PROFILE:`UNSUPPORTED_PROFILE`,UNKNOWN_PLANE:`UNKNOWN_PLANE`,NULL_SHAPE_INPUT:`NULL_SHAPE_INPUT`,INVALID_FILLET_RADIUS:`INVALID_FILLET_RADIUS`,INVALID_CHAMFER_DISTANCE:`INVALID_CHAMFER_DISTANCE`,INVALID_THICKNESS:`INVALID_THICKNESS`,ZERO_OFFSET:`ZERO_OFFSET`,NO_EDGES:`NO_EDGES`,NO_FACES:`NO_FACES`,DRAFT_NO_FACES:`DRAFT_NO_FACES`,DRAFT_INVALID_ANGLE:`DRAFT_INVALID_ANGLE`,DRAFT_NOT_3D:`DRAFT_NOT_3D`,DRAFT_FAILED:`DRAFT_FAILED`,FUSE_NOT_3D:`FUSE_NOT_3D`,CUT_NOT_3D:`CUT_NOT_3D`,INTERSECT_NOT_3D:`INTERSECT_NOT_3D`,FUSE_ALL_NOT_3D:`FUSE_ALL_NOT_3D`,CUT_ALL_NOT_3D:`CUT_ALL_NOT_3D`,LOFT_NOT_3D:`LOFT_NOT_3D`,SWEEP_NOT_3D:`SWEEP_NOT_3D`,REVOLUTION_NOT_3D:`REVOLUTION_NOT_3D`,FILLET_NOT_3D:`FILLET_NOT_3D`,CHAMFER_NOT_3D:`CHAMFER_NOT_3D`,CHAMFER_ANGLE_NOT_3D:`CHAMFER_ANGLE_NOT_3D`,CHAMFER_ANGLE_FAILED:`CHAMFER_ANGLE_FAILED`,CSG_NOT_3D:`CSG_NOT_3D`,SHELL_NOT_3D:`SHELL_NOT_3D`,OFFSET_NOT_3D:`OFFSET_NOT_3D`,NULL_SHAPE:`NULL_SHAPE`,NO_WRAPPER:`NO_WRAPPER`,WELD_NOT_SHELL:`WELD_NOT_SHELL`,SOLID_BUILD_FAILED:`SOLID_BUILD_FAILED`,OFFSET_NOT_WIRE:`OFFSET_NOT_WIRE`,UNKNOWN_SURFACE_TYPE:`UNKNOWN_SURFACE_TYPE`,UNKNOWN_CURVE_TYPE:`UNKNOWN_CURVE_TYPE`,SWEEP_START_NOT_WIRE:`SWEEP_START_NOT_WIRE`,SWEEP_END_NOT_WIRE:`SWEEP_END_NOT_WIRE`,STEP_EXPORT_FAILED:`STEP_EXPORT_FAILED`,STEP_EXPORT_CONFIGURED_FAILED:`STEP_EXPORT_CONFIGURED_FAILED`,STEP_FILE_READ_ERROR:`STEP_FILE_READ_ERROR`,STEP_EXPORT_CRASHED:`STEP_EXPORT_CRASHED`,STEP_EXPORT_UNSERIALIZABLE:`STEP_EXPORT_UNSERIALIZABLE`,STL_EXPORT_FAILED:`STL_EXPORT_FAILED`,STL_FILE_READ_ERROR:`STL_FILE_READ_ERROR`,STL_EXPORT_CRASHED:`STL_EXPORT_CRASHED`,STL_EXPORT_UNSERIALIZABLE:`STL_EXPORT_UNSERIALIZABLE`,STEP_IMPORT_FAILED:`STEP_IMPORT_FAILED`,STL_IMPORT_FAILED:`STL_IMPORT_FAILED`,IGES_EXPORT_FAILED:`IGES_EXPORT_FAILED`,IGES_IMPORT_FAILED:`IGES_IMPORT_FAILED`,DXF_IMPORT_FAILED:`DXF_IMPORT_FAILED`,OBJ_IMPORT_FAILED:`OBJ_IMPORT_FAILED`,THREEMF_IMPORT_FAILED:`THREEMF_IMPORT_FAILED`,PARAMETER_NOT_FOUND:`PARAMETER_NOT_FOUND`,INTERSECTION_FAILED:`INTERSECTION_FAILED`,SELF_INTERSECTION_FAILED:`SELF_INTERSECTION_FAILED`,STRAIGHT_SKELETON_FAILED:`STRAIGHT_SKELETON_FAILED`,CENTER_OF_MASS_FAILED:`CENTER_OF_MASS_FAILED`,COMPOUND_NO_FACES:`COMPOUND_NO_FACES`,COMPOUND_FACE_NOT_FOUND:`COMPOUND_FACE_NOT_FOUND`,FINDER_NOT_UNIQUE:`FINDER_NOT_UNIQUE`,HULL_EMPTY_INPUT:`HULL_EMPTY_INPUT`,HULL_FAILED:`HULL_FAILED`,HULL_DEGENERATE:`HULL_DEGENERATE`,HULL_NOT_3D:`HULL_NOT_3D`,MINKOWSKI_FAILED:`MINKOWSKI_FAILED`,MINKOWSKI_NULL_TOOL:`MINKOWSKI_NULL_TOOL`,MINKOWSKI_NOT_3D:`MINKOWSKI_NOT_3D`,POLYHEDRON_INSUFFICIENT_POINTS:`POLYHEDRON_INSUFFICIENT_POINTS`,POLYHEDRON_INSUFFICIENT_FACES:`POLYHEDRON_INSUFFICIENT_FACES`,POLYHEDRON_INVALID_INDEX:`POLYHEDRON_INVALID_INDEX`,POLYHEDRON_FAILED:`POLYHEDRON_FAILED`,VALIDATION_FAILED:`VALIDATION_FAILED`,ROOF_FAILED:`ROOF_FAILED`,MULTI_SWEEP_INSUFFICIENT_SECTIONS:`MULTI_SWEEP_INSUFFICIENT_SECTIONS`,MULTI_SWEEP_FAILED:`MULTI_SWEEP_FAILED`,GUIDED_SWEEP_FAILED:`GUIDED_SWEEP_FAILED`,SURFACE_GRID_TOO_SMALL:`SURFACE_GRID_TOO_SMALL`,SURFACE_GRID_JAGGED:`SURFACE_GRID_JAGGED`,SURFACE_FAILED:`SURFACE_FAILED`,ASSEMBLY_MATE_INVALID:`ASSEMBLY_MATE_INVALID`,ASSEMBLY_SOLVE_FAILED:`ASSEMBLY_SOLVE_FAILED`,ASSEMBLY_NOT_CONVERGED:`ASSEMBLY_NOT_CONVERGED`,BLUEPRINT_EMPTY_CURVES:`BLUEPRINT_EMPTY_CURVES`,COMPOUND_BLUEPRINT_EMPTY:`COMPOUND_BLUEPRINT_EMPTY`,GLB_IMPORT_FAILED:`GLB_IMPORT_FAILED`,FONT_FETCH_FAILED:`FONT_FETCH_FAILED`,FONT_PARSE_FAILED:`FONT_PARSE_FAILED`,NO_FONT_LOADED:`NO_FONT_LOADED`,CURVE2D_CONSTRUCTION_FAILED:`CURVE2D_CONSTRUCTION_FAILED`,CURVE2D_INVALID_RADIUS:`CURVE2D_INVALID_RADIUS`,CURVE2D_TRANSFORM_FAILED:`CURVE2D_TRANSFORM_FAILED`,CURVE2D_QUERY_FAILED:`CURVE2D_QUERY_FAILED`,CURVE2D_INTERSECTION_FAILED:`CURVE2D_INTERSECTION_FAILED`,CURVE2D_BRIDGE_FAILED:`CURVE2D_BRIDGE_FAILED`,CLONE_FAILED:`CLONE_FAILED`,SIMPLIFY_FAILED:`SIMPLIFY_FAILED`,TO_BREP_FAILED:`TO_BREP_FAILED`,UNSUPPORTED_CAPABILITY:`UNSUPPORTED_CAPABILITY`};function vo(e,t,n,r,i,a){let o={kind:e,code:t,message:n,cause:r};if(a){let e={...o,suggestion:a};return i?{...e,metadata:i}:e}return i?{...o,metadata:i}:o}function N(e,t,n,r,i){return vo(`KERNEL_OPERATION`,e,t,n,r,i)}function P(e,t,n,r,i){return vo(`VALIDATION`,e,t,n,r,i)}function yo(e,t,n,r,i){return vo(`TYPE_CAST`,e,t,n,r,i)}function bo(e,t,n,r,i){return vo(`SKETCHER_STATE`,e,t,n,r,i)}function xo(e,t,n,r,i){return vo(`MODULE_INIT`,e,t,n,r,i)}function F(e,t,n,r,i){return vo(`COMPUTATION`,e,t,n,r,i)}function So(e,t,n,r,i){return vo(`IO`,e,t,n,r,i)}function Co(e,t,n,r,i){return vo(`QUERY`,e,t,n,r,i)}function wo(e,t,n,r,i){return vo(`UNSUPPORTED`,e,t,n,r,i)}function To(e,n,r){return(n<0||n>=e.length)&&i(r??`safeIndex`,`Index ${n} is out of bounds (array length ${e.length})`),t(e,n)}var Eo={draft:{tolerance:.01,angularTolerance:.5},standard:{tolerance:.001,angularTolerance:.1},fine:{tolerance:1e-4,angularTolerance:.05}},Do=`standard`;function Oo(){return Do}function ko(e=Do){return Eo[e]}function Ao(e){Do=e}function jo(e){return`makeLine2d`in e}var Mo=[`boolean`,`loft`,`extrude`,`shell`,`fillet`,`mesh`,`edgeMesh`,`transform`],No=Object.create(null),Po=Object.create(null);function Fo(){for(let e of Mo)No[e]=0,Po[e]=0}Fo();function Io(e){let t=performance.now();return()=>{No[e]=(No[e]??0)+(performance.now()-t),Po[e]=(Po[e]??0)+1}}function Lo(){let e={};for(let t of Mo)e[t]={totalMs:No[t]??0,count:Po[t]??0};return e}function Ro(){Fo()}var zo;function Bo(){zo=void 0}function Vo(e){return zo??=typeof e.BooleanBatch==`function`,zo}function Ho(e){return e===`commonFace`?1:e===`sameFace`?2:0}function Uo(e,t,n={}){if(!Vo(e))return null;let r=Io(`boolean`),i=new e.BooleanBatch;try{for(let e of t)i.addShape(e);return i.fuseAll(Ho(n.optimisation),!!n.simplify,n.fuzzyValue??0)}finally{i.delete(),r()}}function Wo(e,t,n,r={}){if(!Vo(e))return null;if(n.length===0)return t;let i=Io(`boolean`),a=new e.BooleanBatch;try{for(let e of n)a.addShape(e);return a.cutAll(t,Ho(r.optimisation),!!r.simplify,r.fuzzyValue??0)}finally{a.delete(),i()}}var Go=2147483647,Ko;function qo(){Ko=void 0}function Jo(e){return Ko??=typeof e.MeasurementExtractor?.extract==`function`,Ko}function Yo(e,t,n=!1){if(Jo(e)){let r=e.MeasurementExtractor.extract(t,n);try{let t=r.getDataPtr()/8,n=r.getDataSize(),i=e.HEAPF64.slice(t,t+n);return{volume:i[0]??0,area:i[1]??0,length:i[2]??0,centerOfMass:[i[3]??0,i[4]??0,i[5]??0],boundingBox:{min:[i[6]??0,i[7]??0,i[8]??0],max:[i[9]??0,i[10]??0,i[11]??0]}}}finally{r.delete()}}return{volume:Xo(e,t),area:Zo(e,t),length:n?Qo(e,t):0,centerOfMass:$o(e,t),boundingBox:ts(e,t)}}function Xo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(t,n,!0,!1,!1);let r=n.Mass();return n.delete(),r}function Zo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.SurfaceProperties_2(t,n,1e-7,!0);let r=n.Mass();return n.delete(),r}function Qo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.LinearProperties(t,n,!0,!1);let r=n.Mass();return n.delete(),r}function $o(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(t,n,!0,!1,!1);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function es(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.LinearProperties(t,n,!0,!1);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function ts(e,t){let n=new e.Bnd_Box;e.BRepBndLib.Add(t,n,!0);let r={min:[n.GetXMin(),n.GetYMin(),n.GetZMin()],max:[n.GetXMax(),n.GetYMax(),n.GetZMax()]};return n.delete(),r}function ns(e,t,n){let r=new e.BRepExtrema_DistShapeShape_1;r.LoadS1(t),r.LoadS2(n);let i=new e.Message_ProgressRange_1;if(r.Perform(i),!r.IsDone())throw i.delete(),r.delete(),Error(`BRepExtrema_DistShapeShape failed`);let a=r.Value(),o=r.PointOnShape1(1),s=r.PointOnShape2(1),c={value:a,point1:[o.X(),o.Y(),o.Z()],point2:[s.X(),s.Y(),s.Z()]};return o.delete(),s.delete(),i.delete(),r.delete(),c}function rs(e,t,n,r,i=1e-6){if(!e.BRepClass_FaceClassifier)throw Error(`BRepClass_FaceClassifier not available in this WASM build`);let a=new e.gp_Pnt2d_3(n,r),o=new e.BRepClass_FaceClassifier_3(t,a,i),s=o.State();a.delete(),o.delete();let c=e.TopAbs_State;return s===c.TopAbs_IN?`in`:s===c.TopAbs_ON?`on`:`out`}function is(e){return{volume:t=>Xo(e,t),area:t=>Zo(e,t),length:t=>Qo(e,t),centerOfMass:t=>$o(e,t),linearCenterOfMass:t=>es(e,t),boundingBox:t=>ts(e,t),distance:(t,n)=>ns(e,t,n),classifyPointOnFace:(t,n,r,i)=>rs(e,t,n,r,i),measureBulk:(t,n)=>Yo(e,t,n)}}var as={vertex:7,edge:6,wire:5,face:4,shell:3,solid:2,compsolid:1,compound:0};function os(e,t,n){let r=e.TopologyExtractor.extract(t,as[n]),i=r.getShapesCount(),a=[];for(let e=0;e<i;e++)a.push(r.getShape(e));return r.delete(),a}var ss=new WeakMap;function cs(e,t,n){let r=ss.get(e);if(!r){let t=e.TopAbs_ShapeEnum;r={vertex:t.TopAbs_VERTEX,edge:t.TopAbs_EDGE,wire:t.TopAbs_WIRE,face:t.TopAbs_FACE,shell:t.TopAbs_SHELL,solid:t.TopAbs_SOLID,compsolid:t.TopAbs_COMPSOLID,compound:t.TopAbs_COMPOUND},ss.set(e,r)}let i=new e.TopExp_Explorer_2(t,r[n],e.TopAbs_ShapeEnum.TopAbs_SHAPE),a=[],o=new Map;for(;i.More();){let t=i.Current(),n=e.shapeHashCode(t,Go),r=o.get(n);r?r.some(e=>e.IsSame(t))||(r.push(t),a.push(t)):(o.set(n,[t]),a.push(t)),i.Next()}return i.delete(),a}function ls(e,t,n){return e.TopologyExtractor?os(e,t,n):cs(e,t,n)}var us=new WeakMap;function ds(e){let t=us.get(e);if(!t){let n=e.TopAbs_ShapeEnum;t=new Map([[n.TopAbs_VERTEX,`vertex`],[n.TopAbs_EDGE,`edge`],[n.TopAbs_WIRE,`wire`],[n.TopAbs_FACE,`face`],[n.TopAbs_SHELL,`shell`],[n.TopAbs_SOLID,`solid`],[n.TopAbs_COMPSOLID,`compsolid`],[n.TopAbs_COMPOUND,`compound`]]),us.set(e,t)}return t}function fs(e,t){if(t.IsNull())throw Error(`Cannot determine shape type: shape is null`);let n=ds(e).get(t.ShapeType());if(!n)throw Error(`Unknown shape type enum value`);return n}function ps(e,t){let n=new e.BRepCheck_Analyzer(t,!0,!1,!1),r=n.IsValid_2();return n.delete(),r}function ms(e,t,n=1e-6){let r=new e.BRepBuilderAPI_Sewing(n,!0,!0,!0,!1);for(let e of t)r.Add(e);let i=new e.Message_ProgressRange_1;r.Perform(i);let a=r.SewedShape();return i.delete(),r.delete(),a}function hs(e,t,n){if(e.TopTools_ListIteratorOfListOfShape){let r=new e.TopTools_ListIteratorOfListOfShape(t);for(;r.More();)n(r.Value()),r.Next();r.delete()}else{let r=new e.TopTools_ListOfShape_3(t);for(;r.Size()>0;)n(r.First_1()),r.RemoveFirst();r.delete()}}function gs(e,t){return e.IsSame(t)}function _s(e,t){return e.IsEqual(t)}function vs(e){return{iterShapes:(t,n)=>ls(e,t,n),iterShapeList:(t,n)=>{hs(e,t,n)},shapeType:t=>fs(e,t),isSame:(e,t)=>gs(e,t),isEqual:(e,t)=>_s(e,t),isValid:t=>ps(e,t),sew:(t,n)=>ms(e,t,n)}}var ys=.001;function bs(e,t,n){n===`commonFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueShift),n===`sameFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueFull)}function xs(e,t){e.SetRunParallel(!0),e.SetUseOBB?.(!0),t!==void 0&&t>0&&e.SetFuzzyValue?.(t)}function Ss(e,t){if(t.length<3)return 0;let n=t[0];if(!n)return 0;let r=new e.Bnd_Box;if(e.BRepBndLib.Add(n,r,!0),r.IsVoid())return r.delete(),0;let i=r.CornerMin(),a=r.CornerMax(),o=a.X()-i.X(),s=a.Y()-i.Y(),c=a.Z()-i.Z();return i.delete(),a.delete(),r.delete(),Math.sqrt(o*o+s*s+c*c)>1?1e-5:0}function Cs(e,t){let n=new e.TopoDS_Builder,r=new e.TopoDS_Compound;n.MakeCompound(r);for(let e of t)n.Add(r,e);return n.delete(),r}function ws(e,t,n,r={}){let i=Io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Fuse_3(t,n,s);bs(e,c,i),xs(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,ys);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Ts(e,t,n,r={}){let i=Io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Cut_3(t,n,s);bs(e,c,i),xs(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,ys);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Es(e,t,n,r={}){let i=Io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Common_3(t,n,s);bs(e,c,i),xs(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,ys);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Ds(e,t,n,r=!0){let i=new e.Message_ProgressRange_1,a=new e.BRepAlgoAPI_Section_3(t,n,!1);if(a.Approximation(r),xs(a),a.Build(i),!a.IsDone())throw a.delete(),i.delete(),Error(`BRepAlgoAPI_Section build failed`);let o=a.Shape();return a.delete(),i.delete(),o}function Os(e,t,n={}){let r=Uo(e,t,n);if(r!==null)return r;let i=Io(`boolean`);try{let{optimisation:r,simplify:i=!1}=n,a=n.fuzzyValue??Ss(e,t),o=new e.TopTools_ListOfShape_1;for(let e of t)o.Append_1(e);let s=new e.BRepAlgoAPI_BuilderAlgo_1;s.SetArguments(o),bs(e,s,r),xs(s,a);let c=new e.Message_ProgressRange_1;s.Build(c);let l=s.Shape();if(i){let t=new e.ShapeUpgrade_UnifySameDomain_2(l,!0,!0,!1);t.Build(),l=t.Shape(),t.delete()}return o.delete(),s.delete(),c.delete(),l}finally{i()}}function ks(e,n,r,i,a){a.signal?.throwIfAborted();let o=i-r;if(o===1)return t(n,r);if(o===2)return ws(e,n[r],n[r+1],{...a,simplify:!1});let s=r+Math.ceil(o/2);return ws(e,ks(e,n,r,s,a),ks(e,n,s,i,a),{...a,simplify:!1})}function As(e,t,n={}){let r=ks(e,t,0,t.length,n);if(n.simplify){let t=new e.ShapeUpgrade_UnifySameDomain_2(r,!0,!0,!1);t.Build();let n=t.Shape();return t.delete(),n}return r}function js(e,n,r={}){if(n.length===0)throw Error(`fuseAll requires at least one shape`);if(n.length===1)return t(n,0);let{strategy:i=`native`}=r;return i===`pairwise`?As(e,n,r):Os(e,n,r)}function Ms(e,t,n){if(!e.BRepAlgoAPI_Splitter)throw Error(`BRepAlgoAPI_Splitter not available in this WASM build`);let r=new e.TopTools_ListOfShape_1;r.Append_1(t);let i=new e.TopTools_ListOfShape_1;for(let e of n)i.Append_1(e);let a=new e.BRepAlgoAPI_Splitter;a.SetArguments(r),a.SetTools(i),xs(a);let o=new e.Message_ProgressRange_1;a.Build(o);let s=a.Shape();return a.delete(),o.delete(),r.delete(),i.delete(),s}function Ns(e,t,n,r={}){if(n.length===0)return t;let i=Wo(e,t,n,r);if(i!==null)return i;let a=Cs(e,n),o=Ts(e,t,a,r);return a.delete(),o}function Ps(e,t,n,r,i){let a=[];return t.IsNull()&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),n.IsNull()&&a.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is null`}),a.length>0?{valid:!1,issues:a}:(i(t)||a.push({operand:`base`,issue:`not-valid`,message:`Base shape fails BRepCheck validation. Try autoHeal() first.`}),i(n)||a.push({operand:`tool`,issue:`not-valid`,message:`Tool shape fails BRepCheck validation. Try autoHeal() first.`}),{valid:a.length===0,issues:a})}function Fs(e){return{fuse:(t,n,r)=>ws(e,t,n,r),cut:(t,n,r)=>Ts(e,t,n,r),intersect:(t,n,r)=>Es(e,t,n,r),section:(t,n,r)=>Ds(e,t,n,r),fuseAll:(t,n)=>js(e,t,n),cutAll:(t,n,r)=>Ns(e,t,n,r),split:(t,n)=>Ms(e,t,n),checkBoolean:(t,n,r)=>Ps(e,t,n,r,t=>ps(e,t))}}var Is={fuse:0,cut:1,intersect:2};function Ls(e,t,n,r={}){let{glueMode:i=0,fuzzyValue:a=0}=r;if(typeof e.BooleanPipeline==`function`){let r=new e.BooleanPipeline;try{for(let e of n)r.addStep(Is[e.op],e.tool);let e=r.execute(t,i,a);return e.IsNull()?null:e}finally{r.delete()}}}function Rs(e){return{booleanPipeline:(t,n,r)=>Ls(e,t,n,r)??null}}function zs(e,t,n,r){let i=new e.gp_Pnt_3(t,n,r),a=new e.BRepBuilderAPI_MakeVertex(i),o=a.Vertex();return a.delete(),i.delete(),o}function Bs(e,t,n,r){let i=n!==void 0&&r!==void 0?new e.BRepBuilderAPI_MakeEdge_24(t,n,r):new e.BRepBuilderAPI_MakeEdge_24(t),a=i.Edge();return i.delete(),a}function Vs(e,t){let n=new e.BRepBuilderAPI_MakeWire_1;for(let e of t)n.Add_1(e);let r=new e.Message_ProgressRange_1;n.Build(r);let i=n.Wire();return n.delete(),r.delete(),i}function Hs(e,t,n=!0){if(n){let n=new e.BRepBuilderAPI_MakeFace_15(t,!1),r=n.Face();return n.delete(),r}let r=new e.BRepOffsetAPI_MakeFilling(3,15,2,!1,1e-5,1e-4,.01,.1,8,9),i=ls(e,t,`edge`);for(let t of i)r.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,!0);let a=new e.Message_ProgressRange_1;r.Build(a);let o=r.Shape();return r.delete(),a.delete(),o}function Us(e,t,n,r){let i=new e.BRepPrimAPI_MakeBox_2(t,n,r),a=i.Solid();return i.delete(),a}function Ws(e,t,n,r=[0,0,0],i=[0,0,1]){let a=new e.gp_Pnt_3(...r),o=new e.gp_Dir_5(...i),s=new e.gp_Ax2_4(a,o),c=new e.BRepPrimAPI_MakeCylinder_3(s,t,n),l=c.Shape();return c.delete(),s.delete(),a.delete(),o.delete(),l}function Gs(e,t,n=[0,0,0]){if(n[0]===0&&n[1]===0&&n[2]===0){let n=new e.BRepPrimAPI_MakeSphere_1(t),r=n.Shape();return n.delete(),r}let r=new e.gp_Pnt_3(...n),i=new e.BRepPrimAPI_MakeSphere_2(r,t),a=i.Shape();return i.delete(),r.delete(),a}function Ks(e,t,n,r,i=[0,0,0],a=[0,0,1]){let o=new e.gp_Pnt_3(...i),s=new e.gp_Dir_5(...a),c=new e.gp_Ax2_4(o,s),l=new e.BRepPrimAPI_MakeCone_3(c,t,n,r),u=l.Shape();return l.delete(),c.delete(),o.delete(),s.delete(),u}function qs(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.BRepBuilderAPI_MakeEdge_3(i,a),c=new e.BRepBuilderAPI_MakeEdge_3(a,o),l=new e.BRepBuilderAPI_MakeEdge_3(o,i),u=new e.BRepBuilderAPI_MakeWire_1;u.Add_1(s.Edge()),u.Add_1(c.Edge()),u.Add_1(l.Edge());let d=null;if(u.IsDone()){let t=new e.BRepBuilderAPI_MakeFace_15(u.Wire(),!1);t.IsDone()&&(d=t.Face()),t.delete()}return u.delete(),s.delete(),c.delete(),l.delete(),i.delete(),a.delete(),o.delete(),d}function Js(e,t){let n=new e.BRepBuilderAPI_MakeWire_1;for(let r of t){let t=r.ShapeType();t===e.TopAbs_ShapeEnum.TopAbs_EDGE?n.Add_1(r):t===e.TopAbs_ShapeEnum.TopAbs_WIRE&&n.Add_2(r)}let r=new e.Message_ProgressRange_1;n.Build(r);let i=n.Wire();return n.delete(),r.delete(),i}function Ys(e,t,n,r=[0,0,0],i=[0,0,1]){let a=new e.gp_Pnt_3(...r),o=new e.gp_Dir_5(...i),s=new e.gp_Ax2_4(a,o),c=new e.BRepPrimAPI_MakeTorus_5(s,t,n),l=c.Shape();return c.delete(),s.delete(),a.delete(),o.delete(),l}function Xs(e){return{makeVertex:(t,n,r)=>zs(e,t,n,r),makeEdge:(t,n,r)=>Bs(e,t,n,r),makeWire:t=>Vs(e,t),makeWireFromMixed:t=>Js(e,t),makeFace:(t,n)=>Hs(e,t,n),makeBox:(t,n,r)=>Us(e,t,n,r),makeCylinder:(t,n,r,i)=>Ws(e,t,n,r,i),makeSphere:(t,n)=>Gs(e,t,n),makeCone:(t,n,r,i,a)=>Ks(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Ys(e,t,n,r,i),buildTriFace:(t,n,r)=>qs(e,t,n,r)}}function Zs(e,t){let n=e[t];if(n===void 0)throw Error(`Index ${t} out of bounds`);return n}function Qs(e,t,n){let r=[],i=Math.max(n,1);for(let n of t){new e.BRepMesh_IncrementalMeshWrapper(n,i,!1,i*.5,!1).delete();let t=new e.TopExp_Explorer_2(n,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;t.More();){let n=e.TopoDS_Cast.Face(t.Current()),i=new e.TopLoc_Location_1,a=e.BRep_Tool_Triangulation(n,i,0);if(!a.IsNull()){let e=i.Transformation(),t=a.get().NbNodes();for(let n=1;n<=t;n++){let t=a.get().Node(n),i=t.Transformed(e);r.push({x:i.X(),y:i.Y(),z:i.Z()}),i.delete(),t.delete()}e.delete()}i.delete(),t.Next()}t.delete()}return r}function $s(e,t,n){let{faces:r,points:i}=t,a=[];for(let[t,n,o]of r){let r=Zs(i,t),s=Zs(i,n),c=Zs(i,o),l=qs(e,[r.x,r.y,r.z],[s.x,s.y,s.z],[c.x,c.y,c.z]);l!==null&&a.push(l)}if(a.length<4)throw Error(`hull: only ${a.length} faces built, need at least 4 for a solid`);let o=Math.max(n,1e-4),s=new e.BRepBuilderAPI_Sewing(o,!0,!0,!0,!1);for(let e of a)s.Add(e);let c=new e.Message_ProgressRange_1;s.Perform(c),c.delete();let l=s.SewedShape();s.delete();let u=new e.TopExp_Explorer_2(l,e.TopAbs_ShapeEnum.TopAbs_SHELL,e.TopAbs_ShapeEnum.TopAbs_SHAPE);if(u.More()){let t=e.TopoDS_Cast.Shell(u.Current());u.delete();let n=new e.BRepBuilderAPI_MakeSolid_1;n.Add(t);let r=new e.Message_ProgressRange_1;if(n.Build(r),r.delete(),n.IsDone()){let r=n.Solid();n.delete(),t.delete();let i=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(r,i,!1,!1,!1);let a=i.Mass();return i.delete(),a<0&&r.Complement(),r}return t.delete(),n.delete(),l}return u.delete(),l}function ec(e,t,n){if(t.length===0)throw Error(`hull: no shapes provided`);let r=Qs(e,t,n);if(r.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);let i=x(r,n);if(i.faces.length<4)throw Error(`hull: degenerate hull (fewer than 4 faces)`);return $s(e,i,n)}function tc(e,t,n,r){return $s(e,{points:t,faces:n},r)}function nc(e,t,n){if(t.length<4)throw Error(`hullFromPoints: fewer than 4 points`);let r=x(t,n);if(r.faces.length<4)throw Error(`hullFromPoints: degenerate hull (fewer than 4 faces)`);return $s(e,r,n)}function rc(e){return{hull:(t,n)=>ec(e,t,n),hullFromPoints:(t,n)=>nc(e,t,n),buildSolidFromFaces:(t,n,r)=>tc(e,t,n,r)}}function ic(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepBuilderAPI_MakeEdge_3(r,i),o=a.Edge();return a.delete(),r.delete(),i.delete(),o}function ac(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Dir_5(n[0],n[1],n[2]),o=new e.gp_Ax2_4(i,a),s=new e.gp_Circ_2(o,r),c=new e.BRepBuilderAPI_MakeEdge_8(s),l=c.Edge();return c.delete(),s.delete(),o.delete(),a.delete(),i.delete(),l}function oc(e,t,n,r,i,a){let o=new e.gp_Pnt_3(t[0],t[1],t[2]),s=new e.gp_Dir_5(n[0],n[1],n[2]),c=new e.gp_Ax2_4(o,s),l=new e.gp_Circ_2(c,r),u=new e.BRepBuilderAPI_MakeEdge_9(l,i,a),d=u.Edge();return u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),d}function sc(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_4(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function cc(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Vec_4(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_5(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function lc(e,t,n,r,i,a){let o=new e.gp_Pnt_3(t[0],t[1],t[2]),s=new e.gp_Dir_5(n[0],n[1],n[2]),c;if(a){let t=new e.gp_Dir_5(a[0],a[1],a[2]);c=new e.gp_Ax2_2(o,s,t),t.delete()}else c=new e.gp_Ax2_4(o,s);let l=new e.gp_Elips_2(c,r,i),u=new e.BRepBuilderAPI_MakeEdge_12(l),d=u.Edge();return u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),d}function uc(e,t,n,r,i,a,o,s){let c=new e.gp_Pnt_3(t[0],t[1],t[2]),l=new e.gp_Dir_5(n[0],n[1],n[2]),u;if(s){let t=new e.gp_Dir_5(s[0],s[1],s[2]);u=new e.gp_Ax2_2(c,l,t),t.delete()}else u=new e.gp_Ax2_4(c,l);let d=new e.gp_Elips_2(u,r,i),f=new e.BRepBuilderAPI_MakeEdge_13(d,a,o),p=f.Edge();return f.delete(),d.delete(),u.delete(),l.delete(),c.delete(),p}function dc(e,n){let r=new e.TColgp_Array1OfPnt_2(1,n.length);for(let i=0;i<n.length;i++){let a=t(n,i),o=new e.gp_Pnt_3(a[0],a[1],a[2]);r.SetValue_1(i+1,o),o.delete()}let i=new e.Geom_BezierCurve_1(r),a=new e.Handle_Geom_Curve_2(i),o=new e.BRepBuilderAPI_MakeEdge_24(a),s=o.Edge();return o.delete(),a.delete(),r.delete(),s}function fc(e,t,n,r,i=[0,0,0],a=[0,0,1],o=!1){let s=e.HelixWireBuilder;if(typeof s?.build==`function`){let e=s.build(r,t,n,i[0],i[1],i[2],a[0],a[1],a[2],o);if(!e.IsNull())return e}let c=n/t,l=o?-2*Math.PI:2*Math.PI,u=new e.gp_Pnt_3(i[0],i[1],i[2]),d=new e.gp_Dir_5(a[0],a[1],a[2]),f=new e.gp_Ax3_5(u,d),p=new e.Geom_CylindricalSurface_1(f,r);f.delete();let m=new e.gp_Pnt2d_3(0,0),h=new e.gp_Dir2d_5(l,t),g=new e.Geom2d_Line_3(m,h),_=g.Value(0),v=g.Value(c*Math.sqrt((2*Math.PI)**2+t**2)),y=new e.GCE2d_MakeSegment_1(_,v),b=new e.Handle_Geom2d_Curve_2(y.Value().get()),x=new e.Handle_Geom_Surface_2(p),S=new e.BRepBuilderAPI_MakeEdge_30(b,x),C=S.Edge();e.BRepLib.BuildCurves3d_2(C);let w=new e.BRepBuilderAPI_MakeWire_2(C),ee=w.Wire();return w.delete(),S.delete(),b.delete(),x.delete(),_.delete(),v.delete(),g.delete(),m.delete(),h.delete(),d.delete(),u.delete(),ee}function pc(e,t,n,r){let i=Math.sqrt(t*n/r),a=t/i,o=n/i,s=new e.gp_Pnt_3(0,0,0),c=new e.gp_Dir_5(0,1,0),l=new e.gp_Ax1_2(s,c),u=new e.gp_Dir_5(0,0,1),d=new e.gp_Ax1_2(s,u),f=new e.gp_Dir_5(1,0,0),p=new e.gp_Ax1_2(s,f),m=new e.gp_GTrsf_1;m.SetAffinity_1(l,a);let h=new e.gp_GTrsf_1;h.SetAffinity_1(d,i);let g=new e.gp_GTrsf_1;return g.SetAffinity_1(p,o),m.Multiply(h),m.Multiply(g),h.delete(),g.delete(),l.delete(),d.delete(),p.delete(),c.delete(),u.delete(),f.delete(),s.delete(),{transform:m,applyToPoint(t){let n=t.XYZ();m.Transforms_1(n);let r=new e.gp_Pnt_2(n);return n.delete(),r}}}function mc(e,t,n,r){let i=new e.gp_Sphere_1;i.SetRadius(1);let a=new e.Geom_SphericalSurface_2(i),o=e.GeomConvert.SurfaceToBSplineSurface(a.UReversed()).get();i.delete(),a.delete();try{let i=pc(e,t,n,r),a=o.NbUPoles(),s=o.NbVPoles();for(let t=1;t<=a;t++)for(let n=1;n<=s;n++){let r=e.bsplineSurfacePole(o,t,n),a=i.applyToPoint(r);o.SetPole_1(t,n,a),r.delete(),a.delete()}i.transform.delete();let c=new e.BRepBuilderAPI_MakeShell_2(o.UReversed(),!1),l=c.Shell();c.delete();let u=new e.ShapeFix_Solid_1,d=u.SolidFromShell(l);return u.delete(),d}finally{o.delete()}}function hc(e,t){let n=new e.TopoDS_Builder,r=new e.TopoDS_Compound;n.MakeCompound(r);for(let e of t)n.Add(r,e);return n.delete(),r}function gc(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepPrimAPI_MakeBox_4(r,i),o=a.Solid();return a.delete(),r.delete(),i.delete(),o}function _c(e,t){let n=new e.ShapeFix_Solid_1,r=n.SolidFromShell(e.TopoDS_Cast.Shell(t));return n.delete(),r}function vc(e,t){return e.BRepToolsWrapper.Write(t)}function yc(e,t){return e.BRepToolsWrapper.Read(t)}function bc(e,t,n={}){let r=n.unit??`MM`;e.Interface_Static.SetCVal(`xstep.cascade.unit`,r),e.Interface_Static.SetCVal(`write.step.unit`,r),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,5),new e.STEPCAFControl_Writer_1().delete();let i=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),a=new e.TDocStd_Document(i);i.delete();let o=a.Main(),s=e.XCAFDoc_DocumentTool.ShapeTool(o).get(),c=e.XCAFDoc_DocumentTool.ColorTool(o).get();e.XCAFDoc_ShapeTool.SetAutoNaming(!1);for(let n of t){let t=s.AddShape(n.shape,!1,!0),r=new e.TCollection_ExtendedString_2(n.name,!0);if(e.TDataStd_Name.Set_1(t,r),r.delete(),n.color){let[r,i,a,o]=n.color,s=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,o/255);c.SetColor_6(t,s,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),s.delete()}}let l=new e.XSControl_WorkSession,u=new e.Handle_XSControl_WorkSession_2(l),d=new e.STEPCAFControl_Writer_2(u,!1),f=new e.Handle_TDocStd_Document_2(a),p=new e.Message_ProgressRange_1;d.Transfer_1(f,e.STEPControl_StepModelType.STEPControl_AsIs,null,p),p.delete();let m=`assembly_export_${Date.now()}.step`,h=d.Write_1(m),g=``;if(h===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+m);g=new TextDecoder().decode(t),e.FS.unlink(`/`+m)}return d.delete(),u.delete(),f.delete(),a.delete(),g}function xc(e,t){try{t.delete()}catch{}}function Sc(e,t,n){let r=ic(e,[0,0,0],[t,0,0]),i=ic(e,[t,0,0],[t,n,0]),a=ic(e,[t,n,0],[0,n,0]),o=ic(e,[0,n,0],[0,0,0]),s=new e.BRepBuilderAPI_MakeWire_1;s.Add_1(r),s.Add_1(i),s.Add_1(a),s.Add_1(o);let c=s.Wire();s.delete(),r.delete(),i.delete(),a.delete(),o.delete();let l=new e.BRepBuilderAPI_MakeFace_15(c,!1),u=l.Face();return l.delete(),u}function Cc(e,t,n,r){return new e.gp_Pnt_3(t,n,r)}function wc(e,t,n,r){return new e.gp_Dir_5(t,n,r)}function Tc(e,t,n,r){return new e.gp_Vec_4(t,n,r)}function Ec(e,t,n,r,i,a,o){let s=new e.gp_Pnt_3(t,n,r),c=new e.gp_Dir_5(i,a,o),l=new e.gp_Ax1_2(s,c);return s.delete(),c.delete(),l}function Dc(e,t,n,r,i,a,o,s,c,l){let u=new e.gp_Pnt_3(t,n,r),d=new e.gp_Dir_5(i,a,o),f;if(s!==void 0&&c!==void 0&&l!==void 0){let t=new e.gp_Dir_5(s,c,l);f=new e.gp_Ax2_2(u,d,t),t.delete()}else f=new e.gp_Ax2_4(u,d);return u.delete(),d.delete(),f}function Oc(e,t,n,r,i,a,o,s,c,l){let u=new e.gp_Pnt_3(t,n,r),d=new e.gp_Dir_5(i,a,o),f;if(s!==void 0&&c!==void 0&&l!==void 0){let t=new e.gp_Dir_5(s,c,l);f=new e.gp_Ax3_3(u,d,t),t.delete()}else f=new e.gp_Ax3_5(u,d);return u.delete(),d.delete(),f}function kc(e){return{makeLineEdge:(t,n)=>ic(e,t,n),makeCircleEdge:(t,n,r)=>ac(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>oc(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>sc(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>lc(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>uc(e,t,n,r,i,a,o,s),makeBezierEdge:t=>dc(e,t),makeTangentArc:(t,n,r)=>cc(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>fc(e,t,n,r,i,a,o),makeCompound:t=>hc(e,t),makeBoxFromCorners:(t,n)=>gc(e,t,n),makeRectangle:(t,n)=>Sc(e,t,n),solidFromShell:t=>_c(e,t),makeEllipsoid:(t,n,r)=>mc(e,t,n,r),toBREP:t=>vc(e,t),fromBREP:t=>yc(e,t),exportSTEPAssembly:(t,n)=>bc(e,t,n??{}),dispose:t=>{xc(e,t)},createPoint3d:(t,n,r)=>Cc(e,t,n,r),createDirection3d:(t,n,r)=>wc(e,t,n,r),createVector3d:(t,n,r)=>Tc(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>Ec(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>Dc(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>Oc(e,t,n,r,i,a,o,s,c,l)}}function Ac(e,t,n,r){let i=Io(`extrude`);try{let i=new e.gp_Vec_4(n[0]*r,n[1]*r,n[2]*r),a=new e.BRepPrimAPI_MakePrism_1(t,i,!1,!0),o=a.Shape();return a.delete(),i.delete(),o}finally{i()}}function jc(e,t,n,r){let i=new e.BRepPrimAPI_MakeRevol_1(t,n,r,!1),a=i.Shape();return i.delete(),a}function Mc(e,t,n=!1,r,i){let a=Io(`loft`);try{let a=new e.BRepOffsetAPI_ThruSections(!0,n,1e-6);r&&a.AddVertex(r);for(let e of t)a.AddWire(e);i&&a.AddVertex(i);let o=new e.Message_ProgressRange_1;a.Build(o);let s=a.Shape();return a.delete(),o.delete(),s}finally{a()}}function Nc(e,t,n,r={}){let{transitionMode:i}=r,a=new e.BRepOffsetAPI_MakePipeShell(n);typeof a.SetIsBuildHistory==`function`&&a.SetIsBuildHistory(!1),i!==void 0&&a.SetTransitionMode(i),a.Add_1(t,!1,!1);let o=new e.Message_ProgressRange_1;if(a.Build(o),o.delete(),!a.IsDone())throw a.delete(),Error(`Sweep build failed (IsDone=false)`);a.MakeSolid();let s=a.Shape();return a.delete(),s}function Pc(e,t,n){let r=new e.BRepOffsetAPI_MakePipe_1(n,t),i=new e.Message_ProgressRange_1;r.Build(i),i.delete();let a=r.Shape();if(a.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_SHELL){let t=new e.BRepBuilderAPI_MakeSolid_1,n=e.TopoDS_Cast.Shell(a);t.Add(n);let i=new e.Message_ProgressRange_1;t.Build(i),i.delete();let o=a;if(t.IsDone()){let n=t.Solid(),r=new e.BRepCheck_Analyzer(n,!0,!1,!1);r.IsValid_2()?o=n:n.delete(),r.delete()}return n.delete(),t.delete(),r.delete(),o}return r.delete(),a}var Fc,Ic;function Lc(){Fc=void 0}function Rc(){Ic=void 0}function zc(e){return Fc??=typeof e.LoftBatch==`function`,Fc}function Bc(e){return Ic??=typeof e.ExtrudeBatch==`function`,Ic}function Vc(e,t){if(t.length===0)return[];if(zc(e)){let n=Io(`loft`),r=new e.LoftBatch;try{for(let e of t){let t=r.beginLoft(e.solid??!0,e.ruled??!1,e.tolerance??1e-6);e.startVertex&&r.setStartVertex(t,e.startVertex);for(let n of e.wires)r.addWire(t,n);e.endVertex&&r.setEndVertex(t,e.endVertex)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>Mc(e,t.wires,t.ruled??!1,t.startVertex,t.endVertex))}function Hc(e,t){if(t.length===0)return[];if(Bc(e)){let n=Io(`extrude`),r=new e.ExtrudeBatch;try{for(let e of t)r.addExtrude(e.face,e.direction[0]*e.length,e.direction[1]*e.length,e.direction[2]*e.length);let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>Ac(e,t.face,t.direction,t.length))}function Uc(e){return{extrude:(t,n,r)=>Ac(e,t,n,r),revolve:(t,n,r)=>jc(e,t,n,r),loft:(t,n,r,i)=>Mc(e,t,n,r,i),sweep:(t,n,r)=>Nc(e,t,n,r??{}),simplePipe:(t,n)=>Pc(e,t,n),loftBatch:t=>Vc(e,t),extrudeBatch:t=>Hc(e,t)}}function Wc(e,t,n,r){let i=Io(`fillet`);try{let i=new e.BRepFilletAPI_MakeFillet(t,e.ChFi3d_FilletShape.ChFi3d_Rational);for(let t of n){let n=typeof r==`function`?r(t):r,a=e.TopoDS_Cast.Edge(t);if(typeof n==`number`)n>0&&i.Add_2(n,a);else{let[e,t]=n;e>0&&t>0&&i.Add_3(e,t,a)}}let a=i.Shape();return i.delete(),a}finally{i()}}function Gc(e,t,n,r){let i=new e.BRepFilletAPI_MakeChamfer(t),a=null;function o(){if(a)return a;a=new Map;let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let t=e.TopoDS_Cast.Face(n.Current()),r=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;r.More();){let n=e.shapeHashCode(r.Current(),2147483647);a.has(n)||a.set(n,t),r.Next()}r.delete(),n.Next()}return n.delete(),a}function s(t){return o().get(e.shapeHashCode(t,2147483647))??null}for(let t of n){let n=typeof r==`function`?r(t):r,a=e.TopoDS_Cast.Edge(t);if(typeof n==`number`)n>0&&i.Add_2(n,a);else{let[e,r]=n;if(e>0&&r>0){let n=s(t);n&&i.Add_3(e,r,a,n)}}}let c=i.Shape();return i.delete(),c}function Kc(e,t,n,r,i=.001){let a=Io(`shell`);try{let a=new e.TopTools_ListOfShape_1;for(let e of n)a.Append_1(e);let o=new e.Message_ProgressRange_1,s=new e.BRepOffsetAPI_MakeThickSolid;s.MakeThickSolidByJoin(t,a,-r,i,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,o);let c=s.Shape();return s.delete(),a.delete(),o.delete(),c}finally{a()}}function qc(e,t,n){let r=new e.BRepOffsetAPI_MakeThickSolid;r.MakeThickSolidBySimple(t,n);let i=new e.Message_ProgressRange_1;r.Build(i);let a=r.Shape();return r.delete(),i.delete(),a}function Jc(e,t,n,r,i){let a=new e.BRepFilletAPI_MakeChamfer(t),o=i*Math.PI/180,s=new Map,c=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;c.More();){let t=e.TopoDS_Cast.Face(c.Current()),n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let r=e.shapeHashCode(n.Current(),2147483647);s.has(r)||s.set(r,t),n.Next()}n.delete(),c.Next()}c.delete();for(let t of n){let n=s.get(e.shapeHashCode(t,2147483647))??null;n&&r>0&&a.AddDA(r,o,e.TopoDS_Cast.Edge(t),n)}let l=a.Shape();return a.delete(),l}function Yc(e,t,n,r){let i;i=typeof r==`string`?{arc:e.GeomAbs_JoinType.GeomAbs_Arc,intersection:e.GeomAbs_JoinType.GeomAbs_Intersection,tangent:e.GeomAbs_JoinType.GeomAbs_Tangent}[r]??e.GeomAbs_JoinType.GeomAbs_Arc:r??e.GeomAbs_JoinType.GeomAbs_Arc;let a=new e.BRepOffsetAPI_MakeOffset_3(t,i,!1);a.Perform(n,0);let o=a.Shape();return a.delete(),o}function Xc(e,t,n,r=1e-6){let i=new e.Message_ProgressRange_1,a=new e.BRepOffsetAPI_MakeOffsetShape;a.PerformByJoin(t,n,r,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,i);let o=a.Shape();return a.delete(),i.delete(),o}var Zc,Qc;function $c(){Zc=void 0}function el(){Qc=void 0}function tl(e){return Zc??=typeof e.ShellBatch==`function`,Zc}function nl(e){return Qc??=typeof e.FilletBatch==`function`,Qc}function rl(e,t){if(t.length===0)return[];if(tl(e)){let n=Io(`shell`),r=new e.ShellBatch;try{for(let e of t){let t=r.beginShell(e.shape,e.thickness,e.tolerance??.001);for(let n of e.faces)r.addFaceToRemove(t,n)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>Kc(e,t.shape,t.faces,t.thickness,t.tolerance??.001))}function il(e,t){if(t.length===0)return[];if(nl(e)){let n=Io(`fillet`),r=new e.FilletBatch;try{for(let e of t){let t=r.beginFillet(e.shape);for(let n of e.edges)n.r2===void 0?r.addEdge(t,n.edge,n.radius):r.addEdgeVariable(t,n.edge,n.radius,n.r2)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>{let n=t.edges.map(e=>e.edge);return Wc(e,t.shape,n,e=>{let n=t.edges.find(t=>t.edge===e);return n?n.r2===void 0?n.radius:[n.radius,n.r2]:0})})}function al(e){return{fillet:(t,n,r)=>Wc(e,t,n,r),chamfer:(t,n,r)=>Gc(e,t,n,r),chamferDistAngle:(t,n,r,i)=>Jc(e,t,n,r,i),shell:(t,n,r,i)=>Kc(e,t,n,r,i),thicken:(t,n)=>qc(e,t,n),offset:(t,n,r)=>Xc(e,t,n,r),offsetWire2D:(t,n,r)=>Yc(e,t,n,r),shellBatch:t=>rl(e,t),filletBatch:t=>il(e,t)}}var ol;function sl(){ol=void 0}function cl(e){return ol??=typeof e.TransformBatch==`function`,ol}function ll(e,t){if(t.length===0)return[];let n=Io(`transform`);try{if(cl(e)){let n=new e.TransformBatch;try{for(let e of t)switch(e.type){case`translate`:n.addTranslate(e.shape,e.x,e.y,e.z);break;case`rotate`:n.addRotate(e.shape,e.angle*Math.PI/180,...e.axis,...e.center);break;case`scale`:n.addScale(e.shape,...e.center,e.factor);break;case`mirror`:n.addMirror(e.shape,...e.origin,...e.normal);break}let e=n.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{n.delete()}}return t.map(t=>{switch(t.type){case`translate`:return fl(e,t.shape,t.x,t.y,t.z);case`rotate`:return pl(e,t.shape,t.angle,[...t.axis],[...t.center]);case`scale`:return hl(e,t.shape,[...t.center],t.factor);case`mirror`:return ml(e,t.shape,[...t.origin],[...t.normal])}})}finally{n()}}function ul(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),i=r.ModifiedShape(t);return r.delete(),i}function dl(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!1,!1);try{return r.ModifiedShape(t)}finally{r.delete()}}function fl(e,t,n,r,i){let a=new e.gp_Trsf_1,o=new e.gp_Vec_4(n,r,i);a.SetTranslation_1(o);let s=ul(e,t,a);return a.delete(),o.delete(),s}function pl(e,t,n,r=[0,0,1],i=[0,0,0]){let a=new e.gp_Trsf_1,o=new e.gp_Pnt_3(...i),s=new e.gp_Dir_5(...r),c=new e.gp_Ax1_2(o,s);a.SetRotation_1(c,n*Math.PI/180);let l=ul(e,t,a);return a.delete(),c.delete(),o.delete(),s.delete(),l}function ml(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n),o=new e.gp_Dir_5(...r),s=new e.gp_Ax2_4(a,o);i.SetMirror_3(s);let c=ul(e,t,i);return i.delete(),s.delete(),a.delete(),o.delete(),c}function hl(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n);i.SetScale(a,r);let o=ul(e,t,i);return i.delete(),a.delete(),o}function gl(e,t,n,r,i){if(i){let i=new e.gp_Trsf_1;i.SetValues(n[0],n[1],n[2],r[0],n[3],n[4],n[5],r[1],n[6],n[7],n[8],r[2]);let a=new e.BRepBuilderAPI_Transform_2(t,i,!0,!1),o=a.ModifiedShape(t);return a.delete(),i.delete(),o}let a=new e.gp_GTrsf_1;for(let e=0;e<3;e++)for(let t=0;t<3;t++)a.SetValue(e+1,t+1,n[e*3+t]);let o=new e.gp_XYZ_2(r[0],r[1],r[2]);a.SetTranslationPart(o),o.delete();let s=new e.BRepBuilderAPI_GTransform_2(t,a,!0),c=s.ModifiedShape(t);return s.delete(),a.delete(),c}function _l(e,t){let n=new e.ShapeUpgrade_UnifySameDomain_2(t,!0,!0,!1);n.Build();let r=n.Shape();return n.delete(),r}function vl(e){return{transform:(t,n)=>ul(e,t,n),locate:(t,n)=>dl(e,t,n),translate:(t,n,r,i)=>fl(e,t,n,r,i),rotate:(t,n,r,i)=>pl(e,t,n,r,i),mirror:(t,n,r)=>ml(e,t,n,r),scale:(t,n,r)=>hl(e,t,n,r),transformBatch:t=>ll(e,t),generalTransform:(t,n,r,i)=>gl(e,t,n,r,i),simplify:t=>_l(e,t)}}function yl(e,t,n){if(n===0)return new Float32Array;let r=t/4;return e.slice(r,r+n)}function bl(e,t,n){let r=Io(`mesh`);try{let r=e.MeshExtractor.extract(t,n.tolerance,n.angularTolerance,!!n.skipNormals,!!n.includeUVs),i=r.getVerticesSize(),a=r.getNormalsSize(),o=r.getTrianglesSize(),s=r.getFaceGroupsSize(),c=r.getUvsSize(),l=yl(e.HEAPF32,r.getVerticesPtr(),i),u=n.skipNormals||a===0?new Float32Array:yl(e.HEAPF32,r.getNormalsPtr(),a),d=r.getTrianglesPtr()/4,f=e.HEAPU32.slice(d,d+o),p=c>0?yl(e.HEAPF32,r.getUvsPtr(),c):new Float32Array,m=[];if(s>0){let t=r.getFaceGroupsPtr()/4,n=e.HEAP32.slice(t,t+s);for(let e=0;e<n.length;e+=3)m.push({start:n[e],count:n[e+1],faceHash:n[e+2]})}return r.delete(),{vertices:l,normals:u,triangles:f,uvs:p,faceGroups:m}}finally{r()}}function xl(e,t,n,r){let i=Io(`edgeMesh`);try{let i=e.EdgeMeshExtractor.extract(t,n,r),a=i.getLinesSize(),o=i.getEdgeGroupsSize(),s=yl(e.HEAPF32,i.getLinesPtr(),a),c=[];if(o>0){let t=i.getEdgeGroupsPtr()/4,n=e.HEAP32.slice(t,t+o);for(let e=0;e<n.length;e+=3)c.push({start:n[e],count:n[e+1],edgeHash:n[e+2]})}return i.delete(),{lines:s,edgeGroups:c}}finally{i()}}function Sl(e){return{mesh:(t,n)=>bl(e,t,n),meshEdges:(t,n,r)=>xl(e,t,n,r)}}var Cl=0;function wl(e,t){return`${e}_${++Cl}.${t}`}function Tl(e,t){let n=e.StepStreamIO;if(typeof n?.exportSTEP==`function`&&t.length===1)return n.exportSTEP(t[0],5);let r=new e.STEPControl_Writer_1;e.Interface_Static.SetIVal(`write.step.schema`,5),r.Model(!0).delete();let i=new e.Message_ProgressRange_1;for(let n of t)r.Transfer_1(n,e.STEPControl_StepModelType.STEPControl_AsIs,!0,i);let a=wl(`_export`,`step`),o=r.Write(a);if(r.delete(),i.delete(),o===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+a);return e.FS.unlink(`/`+a),new TextDecoder().decode(t)}throw Error(`STEP export failed: writer did not complete successfully`)}function El(e,t,n=!1){let r=wl(`_export`,`stl`);if(e.StlAPI.Write(t,r,!n)){let t=e.FS.readFile(`/`+r);return e.FS.unlink(`/`+r),n?t.buffer:new TextDecoder().decode(t)}throw Error(`STL export failed: StlAPI.Write returned false`)}function Dl(e,t){let n=new e.IGESControl_Writer_1;for(let e of t)n.AddShape(e);n.ComputeModel();let r=wl(`_export`,`iges`),i=n.Write_2(r);if(n.delete(),i){let t=e.FS.readFile(`/`+r);return e.FS.unlink(`/`+r),new TextDecoder().decode(t)}throw Error(`IGES export failed: writer did not complete successfully`)}function Ol(e,t){let n=typeof t==`string`?t:new TextDecoder().decode(new Uint8Array(t)),r=e.StepStreamIO;if(typeof r?.importSTEP==`function`){let e=r.importSTEP(n);if(e.IsNull())throw Error(`Failed to import STEP file: stream reader could not parse the input data`);return[e]}let i=wl(`_import`,`step`),a=new TextEncoder().encode(n);e.FS.writeFile(`/`+i,a);let o=new e.STEPControl_Reader_1;if(o.ReadFile(i)){e.FS.unlink(`/`+i);let t=new e.Message_ProgressRange_1;o.TransferRoots(t),t.delete();let n=o.OneShape();return o.delete(),[n]}throw e.FS.unlink(`/`+i),o.delete(),Error(`Failed to import STEP file: reader could not parse the input data`)}function kl(e,t){let n=wl(`_import`,`stl`),r=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);e.FS.writeFile(`/`+n,r);let i=new e.StlAPI_Reader,a=new e.TopoDS_Shape;if(i.Read_1(a,`/`+n)){e.FS.unlink(`/`+n);let t=new e.ShapeUpgrade_UnifySameDomain_2(a,!0,!0,!1);t.Build();let r=t.Shape(),o=new e.BRepBuilderAPI_MakeSolid_1;o.Add(e.TopoDS_Cast.Shell(r));let s=o.Solid();return a.delete(),t.delete(),o.delete(),i.delete(),s}throw e.FS.unlink(`/`+n),a.delete(),i.delete(),Error(`Failed to import STL file: reader could not parse the input data`)}function Al(e,t){let n=wl(`_import`,`iges`),r=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);e.FS.writeFile(`/`+n,r);let i=new e.IGESControl_Reader_1;if(i.ReadFile(n)===e.IFSelect_ReturnStatus.IFSelect_RetDone){e.FS.unlink(`/`+n);let t=new e.Message_ProgressRange_1;i.TransferRoots(t),t.delete();let r=i.OneShape();return i.delete(),[r]}throw e.FS.unlink(`/`+n),i.delete(),Error(`Failed to import IGES file: reader could not parse the input data`)}function jl(e){return{exportSTEP:t=>Tl(e,t),exportSTL:(t,n)=>El(e,t,n),importSTEP:t=>Ol(e,t),importSTL:t=>kl(e,t),exportIGES:t=>Dl(e,t),importIGES:t=>Al(e,t)}}function Ml(e,t){let n=e.BRep_Tool.Pnt(t),r=[n.X(),n.Y(),n.Z()];return n.delete(),r}function Nl(e){let t=e.GeomAbs_SurfaceType;return new Map([[t.GeomAbs_Plane,`plane`],[t.GeomAbs_Cylinder,`cylinder`],[t.GeomAbs_Cone,`cone`],[t.GeomAbs_Sphere,`sphere`],[t.GeomAbs_Torus,`torus`],[t.GeomAbs_BezierSurface,`bezier`],[t.GeomAbs_BSplineSurface,`bspline`],[t.GeomAbs_SurfaceOfRevolution,`revolution`],[t.GeomAbs_SurfaceOfExtrusion,`extrusion`],[t.GeomAbs_OffsetSurface,`offset`],[t.GeomAbs_OtherSurface,`other`]])}var Pl=new WeakMap;function Fl(e,t){let n=Pl.get(e);n||(n=Nl(e),Pl.set(e,n));let r=new e.BRepAdaptor_Surface_2(t,!1),i=r.GetType();return r.delete(),n.get(i)??`other`}function Il(e,t){let n=e.BRepTools.UVBounds_1(t);return{uMin:n.UMin,uMax:n.UMax,vMin:n.VMin,vMax:n.VMax}}function Ll(e,t){return e.BRepTools.OuterWire(t)}function Rl(e,t,n,r){let i=new e.BRepGProp_Face_2(t,!1),a=new e.gp_Pnt_1,o=new e.gp_Vec_1;i.Normal(n,r,a,o);let s=[o.X(),o.Y(),o.Z()];return i.delete(),a.delete(),o.delete(),s}function zl(e,t,n,r){let i=new e.BRepAdaptor_Surface_2(t,!1),a=new e.gp_Pnt_1;i.D0(n,r,a);let o=[a.X(),a.Y(),a.Z()];return i.delete(),a.delete(),o}function Bl(e,t,n){let r=e.BRep_Tool.Surface_2(t),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.GeomAPI_ProjectPointOnSurf_2(i,r,e.Extrema_ExtAlgo.Extrema_ExtAlgo_Grad),o=null;if(a.NbPoints()>0){let e=a.LowerDistanceParameters();o=[e.U,e.V]}return a.delete(),i.delete(),o}function Vl(e,t,n){let r=e.BRep_Tool.Surface_2(t),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.GeomAPI_ProjectPointOnSurf_2(i,r,e.Extrema_ExtAlgo.Extrema_ExtAlgo_Grad),o;if(a.NbPoints()>0){let e=a.NearestPoint();o=[e.X(),e.Y(),e.Z()],e.delete()}else o=n;return a.delete(),i.delete(),o}function Hl(e,t,n){let r=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),i=new e.gp_Pnt_1,a=new e.gp_Vec_1;r.D1(n,i,a);let o={point:[i.X(),i.Y(),i.Z()],tangent:[a.X(),a.Y(),a.Z()]};return r.delete(),i.delete(),a.delete(),o}function Ul(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=[n.FirstParameter(),n.LastParameter()];return n.delete(),r}function Wl(e,t,n){let r=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),i=r.Value(n),a=[i.X(),i.Y(),i.Z()];return i.delete(),r.delete(),a}function Gl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.IsClosed();return n.delete(),r}function Kl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.IsPeriodic();return n.delete(),r}function ql(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.Period();return n.delete(),r}function Jl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.GetType();return n.delete(),{0:`LINE`,1:`CIRCLE`,2:`ELLIPSE`,3:`HYPERBOLA`,4:`PARABOLA`,5:`BEZIER_CURVE`,6:`BSPLINE_CURVE`,7:`OFFSET_CURVE`,8:`OTHER_CURVE`}[typeof r==`number`?r:Number(r?.value??r)]??`OTHER_CURVE`}function Yl(e,t){let n=t.Orientation_1(),r=e.TopAbs_Orientation;return n===r.TopAbs_FORWARD?`forward`:n===r.TopAbs_REVERSED?`reversed`:n===r.TopAbs_INTERNAL?`internal`:`external`}function Xl(e,t,n){switch(n??Zl(e,t)){case`vertex`:return e.TopoDS_Cast.Vertex(t);case`edge`:return e.TopoDS_Cast.Edge(t);case`wire`:return e.TopoDS_Cast.Wire(t);case`face`:return e.TopoDS_Cast.Face(t);case`shell`:return e.TopoDS_Cast.Shell(t);case`solid`:return e.TopoDS_Cast.Solid(t);case`compsolid`:return e.TopoDS_Cast.CompSolid(t);default:return e.TopoDS_Cast.Compound(t)}}function Zl(e,t){let n=t.ShapeType(),r=e.TopAbs_ShapeEnum;return n===r.TopAbs_VERTEX?`vertex`:n===r.TopAbs_EDGE?`edge`:n===r.TopAbs_WIRE?`wire`:n===r.TopAbs_FACE?`face`:n===r.TopAbs_SHELL?`shell`:n===r.TopAbs_SOLID?`solid`:n===r.TopAbs_COMPSOLID?`compsolid`:`compound`}function Ql(e,t,n){return e.shapeHashCode(t,n)}function $l(e,t){return t.IsNull()}function eu(e,t){return t.Reversed()}function tu(e,t){let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE),r=new e.TopLoc_Location_1,i=!1;for(;n.More();){let t=e.TopoDS_Cast.Face(n.Current());if(!e.BRep_Tool_Triangulation(t,r,0).IsNull()){i=!0;break}n.Next()}return n.delete(),r.delete(),i}function nu(e,t,n,r){new e.BRepMesh_IncrementalMeshWrapper(t,n,!1,r,!1).delete()}function ru(e,t){let n=new e.BRepAdaptor_Curve_2(t);try{let e=n.Bezier().get(),t=e.NbPoles();if(t<2)return null;let r=e.Pole(t-1),i=[r.X(),r.Y(),r.Z()];return r.delete(),i}catch{return null}finally{n.delete()}}function iu(e,t){return t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t)}function au(e,t){let n=t.get();if(typeof n.Cylinder!=`function`)return null;let r=n.Cylinder(),i={radius:r.Radius(),isDirect:r.Direct()};return r.delete(),i}function ou(e,t){let n=null;try{if(t===7)return e.AxeOfRevolution();if(t===1)n=e.Cylinder();else if(t===2)n=e.Cone();else if(t===4)n=e.Torus();else return null;let r=n.Axis();return n.delete(),r}catch{return n?.delete?.(),null}}function su(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let e=n.GetType(),t=ou(n,typeof e==`number`?e:Number(e?.value??e));if(!t)return null;let r=null,i=null;try{return r=t.Location(),i=t.Direction(),{origin:[r.X(),r.Y(),r.Z()],direction:[i.X(),i.Y(),i.Z()]}}finally{r?.delete?.(),i?.delete?.(),t.delete()}}finally{n.delete()}}function cu(e,t){return t.get().UReversed()}function lu(e){return{vertexPosition:t=>Ml(e,t),surfaceType:t=>Fl(e,t),uvBounds:t=>Il(e,t),outerWire:t=>Ll(e,t),surfaceNormal:(t,n,r)=>Rl(e,t,n,r),pointOnSurface:(t,n,r)=>zl(e,t,n,r),uvFromPoint:(t,n)=>Bl(e,t,n),projectPointOnFace:(t,n)=>Vl(e,t,n),curveTangent:(t,n)=>Hl(e,t,n),curveParameters:t=>Ul(e,t),shapeOrientation:t=>Yl(e,t),downcast:(t,n)=>Xl(e,t,n),copyShape:t=>Xl(e,t),hashCode:(t,n)=>Ql(e,t,n),isNull:t=>$l(e,t),hasTriangulation:t=>tu(e,t),meshShape:(t,n,r)=>{nu(e,t,n,r)},getBezierPenultimatePole:t=>ru(e,t),createCurveAdaptor:t=>iu(e,t),reverseShape:t=>eu(e,t),curvePointAtParam:(t,n)=>Wl(e,t,n),curveIsClosed:t=>Gl(e,t),curveIsPeriodic:t=>Kl(e,t),curvePeriod:t=>ql(e,t),curveType:t=>Jl(e,t),getSurfaceCylinderData:t=>au(e,t),getSurfaceAxis:t=>su(e,t),reverseSurfaceU:t=>cu(e,t)}}function uu(e,t){let n=new e.BRepAdaptor_Curve_2(t);try{let t=n.GetType(),r=typeof t==`number`?t:Number(t?.value??t),i=e.GeomAbs_CurveType,a=typeof i.GeomAbs_BSplineCurve==`number`?i.GeomAbs_BSplineCurve:Number(i.GeomAbs_BSplineCurve?.value??i.GeomAbs_BSplineCurve),o=typeof i.GeomAbs_BezierCurve==`number`?i.GeomAbs_BezierCurve:Number(i.GeomAbs_BezierCurve?.value??i.GeomAbs_BezierCurve);if(r!==a&&r!==o)return null;let s=n.BSpline(),c=s.get(),l=c.Degree(),u=c.NbPoles(),d=c.NbKnots(),f=c.IsPeriodic(),p=c.IsRational(),m=[];for(let e=1;e<=u;e++){let t=c.Pole(e);m.push([t.X(),t.Y(),t.Z()]),t.delete()}let h=[];for(let e=1;e<=u;e++)h.push(c.Weight(e));let g=[],_=[];for(let e=1;e<=d;e++)g.push(c.Knot(e)),_.push(c.Multiplicity(e));let v={degree:l,poles:m,weights:h,knots:g,multiplicities:_,isPeriodic:f,isRational:p};return s.delete(),v}catch{return null}finally{n.delete()}}function du(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let t=n.GetType(),r=typeof t==`number`?t:Number(t?.value??t),i=e.GeomAbs_SurfaceType;if(r!==(typeof i.GeomAbs_BSplineSurface==`number`?i.GeomAbs_BSplineSurface:Number(i.GeomAbs_BSplineSurface?.value??i.GeomAbs_BSplineSurface)))return null;let a=n.BSpline(),o=a.get(),s=o.UDegree(),c=o.VDegree(),l=o.NbUPoles(),u=o.NbVPoles(),d=o.IsUPeriodic(),f=o.IsVPeriodic(),p=o.IsURational()||o.IsVRational(),m=[],h=[];for(let e=1;e<=l;e++){let t=[],n=[];for(let r=1;r<=u;r++){let i=o.Pole(e,r);t.push([i.X(),i.Y(),i.Z()]),i.delete(),n.push(o.Weight(e,r))}m.push(t),h.push(n)}let g=o.NbUKnots(),_=[],v=[];for(let e=1;e<=g;e++)_.push(o.UKnot(e)),v.push(o.UMultiplicity(e));let y=o.NbVKnots(),b=[],x=[];for(let e=1;e<=y;e++)b.push(o.VKnot(e)),x.push(o.VMultiplicity(e));let S={degreeU:s,degreeV:c,nbPolesU:l,nbPolesV:u,poles:m,weights:h,knotsU:_,knotsV:b,multiplicitiesU:v,multiplicitiesV:x,isPeriodicU:d,isPeriodicV:f,isRational:p};return a.delete(),S}catch{return null}finally{n.delete()}}function fu(e){return{getNurbsCurveData:t=>uu(e,t),getNurbsSurfaceData:t=>du(e,t)}}function pu(e,t,n={}){let{tolerance:r=1e-8}=n,i=new e.TColgp_Array1OfPnt_2(1,t.length),a=new e.gp_Pnt_1,o=1;for(let e of t)a.SetCoord_2(e[0],e[1],e[2]),i.SetValue_1(o++,a);a.delete();let s=new e.GeomAPI_PointsToBSpline_2(i,3,8,e.GeomAbs_Shape.GeomAbs_C2,r);if(i.delete(),!s.IsDone())throw s.delete(),Error(`Interpolation failed — GeomAPI_PointsToBSpline did not converge`);let c=s.Curve(),l=new e.Handle_Geom_Curve_2(c.get()),u=new e.BRepBuilderAPI_MakeEdge_24(l),d=u.Edge();return u.delete(),s.delete(),d}function mu(e,t,n={}){let{tolerance:r=.001,degMin:i=1,degMax:a=6,smoothing:o=null}=n,s=new e.TColgp_Array1OfPnt_2(1,t.length),c=new e.gp_Pnt_1,l=1;for(let e of t)c.SetCoord_2(e[0],e[1],e[2]),s.SetValue_1(l++,c);c.delete();let u;if(u=o?new e.GeomAPI_PointsToBSpline_5(s,o[0],o[1],o[2],a,e.GeomAbs_Shape.GeomAbs_C2,r):new e.GeomAPI_PointsToBSpline_2(s,i,a,e.GeomAbs_Shape.GeomAbs_C2,r),s.delete(),!u.IsDone())throw u.delete(),Error(`Approximation failed — GeomAPI_PointsToBSpline did not converge`);let d=u.Curve(),f=new e.Handle_Geom_Curve_2(d.get()),p=new e.BRepBuilderAPI_MakeEdge_24(f),m=p.Edge();return p.delete(),u.delete(),m}function hu(e){return{interpolatePoints:(t,n)=>pu(e,t,n??{}),approximatePoints:(t,n)=>mu(e,t,n??{})}}function gu(e,t){let n=new e.ShapeFix_Solid_2(t),r=new e.Message_ProgressRange_1;n.Perform(r),r.delete();let i=n.Solid();return n.delete(),i.IsNull()?null:i}function _u(e,t){let n=new e.ShapeFix_Face_2(t);n.Perform();let r=n.Face();return n.delete(),r}function vu(e,t,n){let r;n?r=new e.ShapeFix_Wire_2(t,n,1e-6):(r=new e.ShapeFix_Wire_1,r.Load_1(t)),r.Perform();let i=r.Wire();return r.delete(),i}function yu(e){return{healSolid:t=>gu(e,t),healFace:t=>_u(e,t),healWire:(t,n)=>vu(e,t,n)}}var bu={modified:new Map,generated:new Map,deleted:new Set};function xu(e,t,n){let r=new Map;if(n===0)return r;let i=e.slice(t/4,t/4+n),a=0;for(;a+1<i.length;){let e=i[a++],t=i[a++];if(t<0||a+t>i.length)break;let n=[];for(let e=0;e<t;e++)n.push(i[a++]);r.set(e,n)}return r}function Su(e,t){try{let n=xu(e.HEAP32,t.getModifiedPtr(),t.getModifiedSize()),r=xu(e.HEAP32,t.getGeneratedPtr(),t.getGeneratedSize()),i=new Set,a=t.getDeletedSize();if(a>0){let n=t.getDeletedPtr()/4,r=e.HEAP32.slice(n,n+a);for(let e=0;e<r.length;e++)i.add(r[e])}return{modified:n,generated:r,deleted:i}}finally{t.delete()}}function Cu(e,t,n){let r=[];if(t.Size()===0)return r;if(e.TopTools_ListIteratorOfListOfShape){let i=new e.TopTools_ListIteratorOfListOfShape(t);for(;i.More();)r.push(e.shapeHashCode(i.Value(),n)),i.Next();i.delete()}else{let i=new e.TopTools_ListOfShape_3(t);for(;i.Size()>0;)r.push(e.shapeHashCode(i.First_1(),n)),i.RemoveFirst();i.delete()}return r}function wu(e,t,n,r,i){if(r.length===0)return bu;let a=Array.isArray(n)?n:[n];if(e.EvolutionExtractor){let n,r,o;if(a.length===1)n=a[0];else{r=new e.TopoDS_Builder,o=new e.TopoDS_Compound,r.MakeCompound(o);for(let e of a)r.Add(o,e);n=o}let s;try{s=e.EvolutionExtractor.extract(t,n,i)}catch{}finally{r?.delete(),o?.delete()}if(s!==void 0)return Su(e,s)}let o=new Map,s=new Map,c=new Set,l=new Set(r),u=new Map;for(let t of a){let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let t=n.Current(),r=e.shapeHashCode(t,i);l.has(r)&&u.set(r,t),n.Next()}n.delete()}for(let[n,r]of u){if(t.IsDeleted?.(r)){c.add(n);continue}let a=t.Modified(r);a.Size()>0&&o.set(n,Cu(e,a,i));let l=t.Generated(r);l.Size()>0&&s.set(n,Cu(e,l,i))}return{modified:o,generated:s,deleted:c}}function Tu(e,t,n,r,i){let a=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),o=a.Shape(),s=r.length===0?bu:wu(e,a,t,r,i);return a.delete(),{shape:o,evolution:s}}function Eu(e,t,n,r,i,a,o){return a&&t.SimplifyResult(!0,!0,.001),{shape:t.Shape(),evolution:wu(e,t,n,r,i),diagnostics:o??{hasErrors:!1,hasWarnings:!1,messages:[]}}}function Du(e,t,n,r,i){return{shape:t.Shape(),evolution:wu(e,t,n,r,i)}}function Ou(e,t,n,r,i,a,o){let s=new e.gp_Trsf_1,c=new e.gp_Vec_4(n,r,i);s.SetTranslation_1(c),c.delete();let l=Tu(e,t,s,a,o);return s.delete(),l}function ku(e,t,n,r,i,a=[0,0,1],o=[0,0,0]){let s=new e.gp_Trsf_1,c=new e.gp_Pnt_3(o[0],o[1],o[2]),l=new e.gp_Dir_5(a[0],a[1],a[2]),u=new e.gp_Ax1_2(c,l);s.SetRotation_1(u,n),c.delete(),l.delete(),u.delete();let d=Tu(e,t,s,r,i);return s.delete(),d}function Au(e,t,n,r,i,a){let o=new e.gp_Trsf_1,s=new e.gp_Pnt_3(n[0],n[1],n[2]),c=new e.gp_Dir_5(r[0],r[1],r[2]),l=new e.gp_Ax2_4(s,c);o.SetMirror_3(l),s.delete(),c.delete(),l.delete();let u=Tu(e,t,o,i,a);return o.delete(),u}function ju(e,t,n,r,i,a){let o=new e.gp_Trsf_1,s=new e.gp_Pnt_3(n[0],n[1],n[2]);o.SetScale(s,r),s.delete();let c=Tu(e,t,o,i,a);return o.delete(),c}function Mu(e,t,n,r,i,a,o){let s=new e.gp_Trsf_1;s.SetValues(n[0],n[1],n[2],r[0],n[3],n[4],n[5],r[1],n[6],n[7],n[8],r[2]);let c=Tu(e,t,s,a,o);return s.delete(),c}function Nu(e){return{hasErrors:e.HasErrors(),hasWarnings:e.HasWarnings(),messages:[]}}function Pu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Fuse_3(t,n,o);bs(e,s,a.optimisation),xs(s,a.fuzzyValue),s.Build(o);let c=Nu(s),l=Eu(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function Fu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Cut_3(t,n,o);bs(e,s,a.optimisation),xs(s,a.fuzzyValue),s.Build(o);let c=Nu(s),l=Eu(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function Iu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Common_3(t,n,o);bs(e,s,a.optimisation),xs(s,a.fuzzyValue),s.Build(o);let c=Nu(s),l=Eu(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function Lu(e,t,n,r,i,a){let o=new e.BRepFilletAPI_MakeFillet(t,e.ChFi3d_FilletShape.ChFi3d_Rational);for(let t of n){let n=typeof r==`function`?r(t):r;Array.isArray(n)?o.Add_3(n[0],n[1],e.TopoDS_Cast.Edge(t)):o.Add_2(n,e.TopoDS_Cast.Edge(t))}let s=new e.Message_ProgressRange_1;o.Build(s),s.delete();let c=Du(e,o,t,i,a);return o.delete(),c}function Ru(e,t,n,r,i,a){let o=new e.BRepFilletAPI_MakeChamfer(t),s=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE),c=new Map;for(;s.More();){let t=e.TopoDS_Cast.Face(s.Current()),n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();)c.set(e.shapeHashCode(n.Current(),a),t),n.Next();n.delete(),s.Next()}s.delete();for(let t of n){let n=typeof r==`function`?r(t):r,i=c.get(e.shapeHashCode(t,a));if(Array.isArray(n)&&i)o.Add_3(n[0],n[1],e.TopoDS_Cast.Edge(t),i);else{let r=Array.isArray(n)?n[0]:n;o.Add_2(r,e.TopoDS_Cast.Edge(t))}}let l=new e.Message_ProgressRange_1;o.Build(l),l.delete();let u=Du(e,o,t,i,a);return o.delete(),u}function zu(e,t,n,r,i,a,o=.001){let s=new e.BRepOffsetAPI_MakeThickSolid,c=new e.TopTools_ListOfShape_1;for(let e of n)c.Append_1(e);let l=new e.Message_ProgressRange_1;s.MakeThickSolidByJoin(t,c,-r,o,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,l),l.delete(),c.delete();let u=Du(e,s,t,i,a);return s.delete(),u}function Bu(e,t,n,r,i){let a=new e.BRepOffsetAPI_MakeThickSolid;a.MakeThickSolidBySimple(t,n);let o=new e.Message_ProgressRange_1;a.Build(o),o.delete();let s=Du(e,a,t,r,i);return a.delete(),s}function Vu(e,t,n,r,i,a=1e-6){let o=new e.BRepOffsetAPI_MakeOffsetShape,s=new e.Message_ProgressRange_1;o.PerformByJoin(t,n,a,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,s),s.delete();let c=Du(e,o,t,r,i);return o.delete(),c}function Hu(e,t,n,r,i,a,o,s){if(!e.BRepOffsetAPI_DraftAngle)throw Error(`BRepOffsetAPI_DraftAngle not available in this WASM build. Rebuild brepjs-opencascade with the updated build config.`);let[c,l,u]=r,[d,f,p]=i,m=new e.gp_Dir_5(c,l,u),h=new e.gp_Pnt_3(d,f,p),g=new e.gp_Pln_3(h,m),_=new e.BRepOffsetAPI_DraftAngle_2(t);try{for(let t of n){let n=(typeof a==`function`?a(t):a)*Math.PI/180;_.Add(e.TopoDS_Cast.Face(t),m,n,g,!0)}let r=new e.Message_ProgressRange_1;return _.Build(r),r.delete(),Du(e,_,t,o,s)}finally{_.delete(),g.delete(),h.delete(),m.delete()}}function Uu(e){return{translateWithHistory:(t,n,r,i,a,o)=>Ou(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>ku(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>Au(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>ju(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>Mu(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>Pu(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>Fu(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>Iu(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>Lu(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>Ru(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>zu(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>Bu(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>Vu(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>Hu(e,t,n,r,i,a,o,s)}}function Wu(e,t,n,r){let i=new e.gp_GTrsf_1;for(let e=0;e<3;e++)for(let t=0;t<3;t++)i.SetValue(e+1,t+1,n[e*3+t]);let a=new e.gp_XYZ_2(r[0],r[1],r[2]);i.SetTranslationPart(a),a.delete();let o=new e.BRepBuilderAPI_GTransform_2(t,i,!0),s=o.Shape();return o.delete(),i.delete(),s}function Gu(e,t){let n=new e.gp_Trsf_1;for(let r of t){let t=new e.gp_Trsf_1;if(r.type===`translate`){let n=new e.gp_Vec_4(r.x,r.y,r.z);t.SetTranslation_1(n),n.delete()}else{let n=r.axis??[0,0,1],i=r.center??[0,0,0],a=new e.gp_Pnt_3(i[0],i[1],i[2]),o=new e.gp_Dir_5(n[0],n[1],n[2]),s=new e.gp_Ax1_2(a,o);t.SetRotation_1(s,r.angle*Math.PI/180),s.delete(),o.delete(),a.delete()}n.PreMultiply(t),t.delete()}return{handle:n,dispose:()=>n.delete()}}function Ku(e,t,n,r,i){return Tu(e,t,n,r,i)}function qu(e,t){if(!t)return;let n=e.BRepBuilderAPI_TransitionMode;switch(t){case`transformed`:return n.BRepBuilderAPI_Transformed;case`round`:return n.BRepBuilderAPI_RoundCorner;case`right`:return n.BRepBuilderAPI_RightCorner}}function Ju(e,t,n,r={}){let i=new e.BRepOffsetAPI_MakePipeShell(n);typeof i.SetIsBuildHistory==`function`&&i.SetIsBuildHistory(!1),r.tolerance!==void 0&&i.SetTolerance(r.tolerance,r.boundTolerance??r.tolerance,r.angularTolerance??1e-7),r.maxDegree!==void 0&&i.SetMaxDegree(r.maxDegree),r.maxSegments!==void 0&&i.SetMaxSegments(r.maxSegments);let a=qu(e,r.transitionMode);a!==void 0&&i.SetTransitionMode(a),r.support?i.SetMode_4(r.support):r.frenet&&i.SetMode_1(!0),r.auxiliary&&i.SetMode_5(r.auxiliary,!1,e.BRepFill_TypeOfContact.BRepFill_NoContact);let o=!!r.contact,s=!!r.correction;r.law?i.SetLaw_1(t,r.law,o,s):i.Add_1(t,o,s);let c=new e.Message_ProgressRange_1;if(i.Build(c),c.delete(),!i.IsDone())throw i.delete(),Error(`Sweep pipe shell build failed (IsDone=false)`);if(r.shellMode){let e=i.Shape(),t=i.FirstShape(),n=i.LastShape();return i.delete(),{shape:e,firstShape:t,lastShape:n}}i.MakeSolid();let l=i.Shape();return i.delete(),l}function Yu(e,t,n={}){let r=n.solid??!0,i=n.ruled??!1,a=new e.BRepOffsetAPI_ThruSections(r,i,n.tolerance??1e-6);n.startVertex&&a.AddVertex(n.startVertex);for(let e of t)a.AddWire(e);n.endVertex&&a.AddVertex(n.endVertex);let o=new e.Message_ProgressRange_1;a.Build(o),o.delete();let s=a.Shape();return a.delete(),s}function Xu(e,t,n,r){if(t===`linear`){let t=new e.Law_Linear;return t.Set(0,1,n,r),t}let i=new e.Law_S;return i.Set_1(0,1,n,r),i}function Zu(e,t,n,r,i){let a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Dir_5(r[0],r[1],r[2]),s=new e.gp_Ax1_2(a,o),c=new e.BRepPrimAPI_MakeRevol_1(t,s,i,!1),l=c.Shape();return c.delete(),s.delete(),o.delete(),a.delete(),l}function Qu(e,t,n,r,i){let a=[],o=new e.gp_Trsf_1;for(let s=0;s<i;s++){let i=n[0]*r*s,c=n[1]*r*s,l=n[2]*r*s,u=new e.gp_Vec_4(i,c,l);o.SetTranslation_1(u),u.delete();let d=new e.BRepBuilderAPI_Transform_2(t,o,!0,!1);a.push(d.Shape()),d.delete()}return o.delete(),a}function $u(e,t,n,r,i,a){let o=[],s=new e.gp_Pnt_3(n[0],n[1],n[2]),c=new e.gp_Dir_5(r[0],r[1],r[2]),l=new e.gp_Ax1_2(s,c),u=new e.gp_Trsf_1;for(let n=0;n<a;n++){let r=i*n*Math.PI/180;u.SetRotation_1(l,r);let a=new e.BRepBuilderAPI_Transform_2(t,u,!0,!1);o.push(a.Shape()),a.delete()}return u.delete(),l.delete(),c.delete(),s.delete(),o}function ed(e,t,n,r){let i=n.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(n,!1):new e.BRepAdaptor_Curve_2(n),a=new e.gp_Pnt_1,o=new e.gp_Vec_1;try{i.D1(r,a,o);let n=new e.gp_Dir_2(o),s=new(e.gp_Ax3_5??e.gp_Ax3_4)(a,n),c=new e.gp_Trsf_1;c.SetTransformation_2(s),c.Invert();let l=new e.BRepBuilderAPI_Transform_2(t,c,!0,!1),u=l.Shape();return l.delete(),c.delete(),s.delete(),n.delete(),u}finally{o.delete(),a.delete(),i.delete()}}function td(e,t){let n=new e.BRepOffsetAPI_MakeFilling(3,15,2,!1,1e-5,1e-4,.01,.1,8,9),r=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;r.More();){let t=e.TopoDS_Cast.Edge(r.Current());n.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,!0),r.Next()}r.delete();let i=new e.Message_ProgressRange_1;n.Build(i),i.delete();let a=n.Shape();return n.delete(),a}function nd(e,t,n){let r=new e.BRepBuilderAPI_MakeFace_2(t);for(let e of n)r.Add(e);let i=r.Face();r.delete();let a=new e.ShapeFix_Face_2(i);a.FixOrientation_1(),a.Perform();let o=a.Face();return a.delete(),o}function rd(e,t){let n=e.BRepTools.OuterWire(t),r=e.BRep_Tool.Surface_2(t);try{let t=new e.BRepBuilderAPI_MakeFace_21(r,n,!0),i=t.Face();t.delete();let a=new e.ShapeFix_Face_2(i);a.FixOrientation_1(),a.Perform();let o=a.Face();return a.delete(),o}finally{r.delete(),n.delete()}}function id(e,t,n){let r=t,i=!1;try{t.ShapeType!==void 0&&(r=e.BRep_Tool.Surface_2(t),i=!0)}catch{}let a=new e.BRepBuilderAPI_MakeFace_21(r,n,!0),o=a.Face();return a.delete(),i&&r.delete(),o}function ad(e,n,r,i){let a=new e.TColgp_Array2OfPnt_2(1,r,1,i);for(let o=0;o<r;o++)for(let r=0;r<i;r++){let s=t(n,o*i+r),c=new e.gp_Pnt_3(s[0],s[1],s[2]);a.SetValue_1(o+1,r+1,c),c.delete()}let o=new e.GeomAPI_PointsToBSplineSurface_2(a,3,8,e.GeomAbs_Shape.GeomAbs_C2,.001),s=o.Surface();a.delete();let c=new e.BRepBuilderAPI_MakeFace_8(s,1e-6),l=c.Face();return c.delete(),o.delete(),l}function od(e,n,r,i){let a=new e.BRepBuilderAPI_Sewing(1e-6,!0,!0,!0,!1);for(let o=0;o<r-1;o++)for(let r=0;r<i-1;r++){let s=o*i+r,c=(o+1)*i+r,l=o*i+(r+1),u=(o+1)*i+(r+1),d=t(n,s),f=t(n,c),p=t(n,l),m=t(n,u),h=sd(e,d,f,p);a.Add(h);let g=sd(e,f,m,p);a.Add(g)}let o=new e.Message_ProgressRange_1;a.Perform(o),o.delete();let s=a.SewedShape();return a.delete(),s}function sd(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.BRepBuilderAPI_MakeEdge_3(i,a),c=new e.BRepBuilderAPI_MakeEdge_3(a,o),l=new e.BRepBuilderAPI_MakeEdge_3(o,i),u=new e.BRepBuilderAPI_MakeWire_4(s.Edge(),c.Edge(),l.Edge()),d=u.Wire(),f=new e.BRepBuilderAPI_MakeFace_15(d,!0),p=f.Face();return f.delete(),u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),a.delete(),i.delete(),p}function cd(e,t,n){let r=new e.BRepBuilderAPI_Sewing(n,!0,!0,!0,!1);for(let e of t)r.Add(e);let i=new e.Message_ProgressRange_1;r.Perform(i),i.delete();let a=r.SewedShape();r.delete();let o=new e.ShapeFix_Solid_1;try{let t=e.TopoDS_Cast.Shell(a);return o.SolidFromShell(t)}catch{return a}finally{o.delete()}}function ld(e,t){let n=new e.ShapeFix_Shape_1(t),r=new e.Message_ProgressRange_1;n.Perform(r);let i=n.Shape();return r.delete(),n.delete(),i}function ud(e,t){let n=new e.ShapeFix_Wire_1;n.Load_1(t),n.FixSelfIntersection();let r=n.Wire();return n.delete(),r}function dd(){return{gaussian:0,mean:0,max:0,min:0,maxDirection:[1,0,0],minDirection:[0,1,0]}}function fd(e,t,n,r,i,a){let o=e*n-t*t;if(Math.abs(o)<1e-15)return null;let s=(e*a-2*t*i+n*r)/(2*o),c=(r*a-i*i)/o,l=Math.sqrt(Math.max(0,s*s-c)),u=s+l,d=s-l,f=(n*i-t*a)/o,p=(e*i-t*r)/o,m=(n*r-t*i)/o,h,g;return Math.abs(f)>1e-15?(h=f,g=u-m):Math.abs(p)>1e-15?(h=u-(e*a-t*i)/o,g=p):(h=1,g=0),{mean:s,gaussian:c,k1:u,k2:d,du1:h,dv1:g}}function pd(e,t,n,r){let i=new e.BRepAdaptor_Surface_2(t,!1),a=new e.gp_Pnt_1,o=new e.gp_Vec_1,s=new e.gp_Vec_1,c=new e.gp_Vec_1,l=new e.gp_Vec_1,u=new e.gp_Vec_1;i.D2(n,r,a,o,s,c,l,u);let d=o.Dot(o),f=o.Dot(s),p=s.Dot(s),m=o.Crossed(s),h=m.Magnitude(),g=dd();if(h>=1e-15){m.Divide(h);let e=fd(d,f,p,c.Dot(m),u.Dot(m),l.Dot(m));e&&(g={gaussian:e.gaussian,mean:e.mean,max:e.k1,min:e.k2,maxDirection:md(o,s,e.du1,e.dv1),minDirection:md(o,s,-e.dv1,e.du1)})}return a.delete(),o.delete(),s.delete(),c.delete(),l.delete(),u.delete(),m.delete(),i.delete(),g}function md(e,t,n,r){let i=n*e.X()+r*t.X(),a=n*e.Y()+r*t.Y(),o=n*e.Z()+r*t.Z(),s=Math.sqrt(i*i+a*a+o*o);return s<1e-15?[1,0,0]:[i/s,a/s,o/s]}function hd(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.SurfaceProperties_2(t,n,1e-7,!0);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function gd(e,t){let n=new e.BRepExtrema_DistShapeShape_1;return n.LoadS1(t),{distanceTo(t){n.LoadS2(t);let r=new e.Message_ProgressRange_1;if(n.Perform(r),r.delete(),!n.IsDone())throw Error(`BRepExtrema_DistShapeShape failed`);let i=n.Value(),a=n.PointOnShape1(1),o=n.PointOnShape2(1),s={value:i,point1:[a.X(),a.Y(),a.Z()],point2:[o.X(),o.Y(),o.Z()]};return a.delete(),o.delete(),s},dispose(){n.delete()}}}function _d(e,t,n,r,i){let a=new e.HLRBRep_Algo_1;a.Add_2(t,0);let o=new e.gp_Pnt_3(n[0],n[1],n[2]),s=new e.gp_Dir_5(r[0],r[1],r[2]),c;if(i){let t=new e.gp_Dir_5(i[0],i[1],i[2]);c=new e.gp_Ax2_2(o,s,t),t.delete()}else c=new e.gp_Ax2_4(o,s);let l=new e.HLRAlgo_Projector_2(c);a.Projector_1(l),a.Update(),a.Hide_1();let u=new e.Handle_HLRBRep_Algo_2(a),d=new e.HLRBRep_HLRToShape(u),f={visible:{outline:d.OutLineVCompound_1(),smooth:d.Rg1LineVCompound_1(),sharp:d.VCompound_1()},hidden:{outline:d.OutLineHCompound_1(),smooth:d.Rg1LineHCompound_1(),sharp:d.HCompound_1()}};for(let t of[f.visible,f.hidden])for(let n of[t.outline,t.smooth,t.sharp])n.IsNull()||e.BRepLib.BuildCurves3d_2(n);return d.delete(),u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),f}function vd(e,t,n,r,i,a,o){let s=a*Math.PI/180,c=+!!o,l=new e.BRepFeat_MakeDPrism(t,n,r,s,c,!0);if(i!==null){let t=new e.Message_ProgressRange_1;l.Perform_1(i,t),t.delete()}else l.PerformThruAll();let u=l.Shape();return l.delete(),u}function yd(e,t){let n=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),r=new e.TDocStd_Document(n);n.delete(),e.XCAFDoc_ShapeTool.SetAutoNaming(!1);let i=r.Main(),a=e.XCAFDoc_DocumentTool.ShapeTool(i).get(),o=e.XCAFDoc_DocumentTool.ColorTool(i).get();for(let n of t){let t=a.NewShape();a.SetShape(t,n.shape);let r=new e.TCollection_ExtendedString_2(n.name,!0);if(e.TDataStd_Name.Set_1(t,r),r.delete(),n.color){let[r,i,a,s]=n.color,c=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,s/255);o.SetColor_3(t,c,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),c.delete()}}return a.UpdateAssemblies(),r}function bd(e,t,n={}){if(n.unit||n.modelUnit){new e.STEPCAFControl_Writer_1().delete();let t=(n.modelUnit??n.unit??`MM`).toUpperCase(),r=(n.unit??n.modelUnit??`MM`).toUpperCase();e.Interface_Static.SetCVal(`xstep.cascade.unit`,t),e.Interface_Static.SetCVal(`write.step.unit`,r)}let r=new e.XSControl_WorkSession,i=new e.Handle_XSControl_WorkSession_2(r),a=new e.STEPCAFControl_Writer_2(i,!1);a.SetColorMode(!0),a.SetLayerMode(!0),a.SetNameMode(!0),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,!0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,5);let o=new e.Handle_TDocStd_Document_2(t),s=new e.Message_ProgressRange_1;a.Transfer_1(o,e.STEPControl_StepModelType.STEPControl_AsIs,null,s),s.delete();let c=wl(`_xcaf_export`,`step`),l=a.Write(c),u=``;if(l===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+c);u=new TextDecoder().decode(t),e.FS.unlink(`/`+c)}return a.delete(),i.delete(),u}function xd(e,t){new e.STEPCAFControl_Writer_1().delete();let n=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),r=new e.TDocStd_Document(n);n.delete();let i=r.Main(),a=e.XCAFDoc_DocumentTool.ShapeTool(i).get(),o=e.XCAFDoc_DocumentTool.ColorTool(i).get();e.XCAFDoc_ShapeTool.SetAutoNaming(!1);for(let n of t){let t=a.AddShape(n.shape,!1,!0);if(n.name){let r=new e.TCollection_ExtendedString_2(n.name,!0);e.TDataStd_Name.Set_1(t,r),r.delete()}if(n.color){let[r,i,a,s]=n.color,c=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,s/255);o.SetColor_3(t,c,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),c.delete()}}let s=new e.XSControl_WorkSession,c=new e.Handle_XSControl_WorkSession_2(s),l=new e.STEPCAFControl_Writer_2(c,!1),u=new e.Handle_TDocStd_Document_2(r),d=new e.Message_ProgressRange_1;l.Transfer_1(u,e.STEPControl_StepModelType.STEPControl_AsIs,null,d),d.delete();let f=wl(`_step_cfg_export`,`step`),p=l.Write(f),m=``;if(p===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+f);m=new TextDecoder().decode(t),e.FS.unlink(`/`+f)}return l.delete(),c.delete(),u.delete(),r.delete(),m}function Sd(e,t){let n=new e.STEPControl_Writer_1;n.Model(!0).delete();let r=new e.Message_ProgressRange_1;for(let i of t)n.Transfer(i.shape,e.STEPControl_StepModelType.STEPControl_AsIs,!0,r);let i=wl(`_step_cfg_export`,`step`),a=n.Write(i);if(n.delete(),r.delete(),a===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+i);return e.FS.unlink(`/`+i),new TextDecoder().decode(t)}throw Error(`STEP configured export failed: writer did not complete successfully`)}function Cd(e,t,n={}){let r=n.unit??`MM`,i=n.modelUnit??r,a=n.schema??5;return e.Interface_Static.SetCVal(`xstep.cascade.unit`,i),e.Interface_Static.SetCVal(`write.step.unit`,r),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,!0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,a),t.some(e=>e.name||e.color)?xd(e,t):Sd(e,t)}function wd(e){return{composeTransform:t=>Gu(e,t),applyComposedTransformWithHistory:(t,n,r,i)=>Ku(e,t,n,r,i),sweepPipeShell:(t,n,r)=>Ju(e,t,n,r??{}),loftAdvanced:(t,n)=>Yu(e,t,n??{}),buildExtrusionLaw:(t,n,r)=>Xu(e,t,n,r),revolveVec:(t,n,r,i)=>Zu(e,t,n,r,i),positionOnCurve:(t,n,r)=>ed(e,t,n,r),linearPattern:(t,n,r,i)=>Qu(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>$u(e,t,n,r,i,a),makeNonPlanarFace:t=>td(e,t),addHolesInFace:(t,n)=>nd(e,t,n),removeHolesFromFace:t=>rd(e,t),makeFaceOnSurface:(t,n)=>id(e,t,n),bsplineSurface:(t,n,r)=>ad(e,t,n,r),triangulatedSurface:(t,n,r)=>od(e,t,n,r),sewAndSolidify:(t,n)=>cd(e,t,n),fixShape:t=>ld(e,t),fixSelfIntersection:t=>ud(e,t),surfaceCurvature:(t,n,r)=>pd(e,t,n,r),surfaceCenterOfMass:t=>hd(e,t),createDistanceQuery:t=>gd(e,t),projectEdges:(t,n,r,i)=>_d(e,t,n,r,i),draftPrism:(t,n,r,i,a,o)=>vd(e,t,n,r,i,a,o),generalTransformNonOrthogonal:(t,n,r)=>Wu(e,t,n,r),createXCAFDocument:t=>yd(e,t),writeXCAFToSTEP:(t,n)=>bd(e,t,n??{}),exportSTEPConfigured:(t,n)=>Cd(e,t,n??{})}}var Td=()=>{};function Ed(e){return e}function Dd(e){let t=Ed(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function Od(e){return e}function kd(e,t){return{x:e,y:t}}function Ad(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`occt: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function jd(e,t){return{x:e,y:t}}function Md(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:Td}}function Nd(e){return e}function Pd(e){return e}function Fd(e,t,n,r){return te(e,t,n,r)}function Id(e,t,n,r){return ne(e,t,n,r)}function Ld(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function Rd(e,t,n,r,i,a,o,s,c){return{__bk2d:`trimmed`,basis:ae(e,t,n,r,o,s,c),tStart:i,tEnd:a}}function zd(e){return oe(e)}function Bd(e,t){let n=e.length,r=Math.min(3,n-1),i=[],a=[];i.push(0),a.push(r+1);let o=n-r-1;for(let e=1;e<=o;e++)i.push(e/(o+1)),a.push(1);return i.push(1),a.push(r+1),{__bk2d:`bspline`,poles:[...e],knots:i,multiplicities:a,degree:r,isPeriodic:!1}}function Vd(e,t){return S(Ed(e),t)}function Hd(e,t){return{point:S(Ed(e),t),tangent:C(Ed(e),t)}}function Ud(e){return w(Ed(e))}function Wd(e){return ee(Dd(e))}function Gd(e,t,n){return{__bk2d:`trimmed`,basis:Ed(e),tStart:t,tEnd:n}}function Kd(e){return JSON.parse(JSON.stringify(e))}function qd(e,t){let n=Ed(e),r=w(n),i=[];for(let e=0;e<=30;e++){let a=r.first+(r.last-r.first)*e/30,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l);u>1e-12?i.push([o-l/u*t,s+c/u*t]):i.push([o,s])}return Bd(i)}function Jd(e,t,n){return se(Ed(e),t,n)}function Yd(e,t,n,r){return ce(Ed(e),t,n,r)}function Xd(e,t,n,r){return le(Ed(e),t,n,r)}function Zd(e,t,n){return ue(Ed(e),t,n)}function Qd(e,t,n,r,i){return de(Ed(e),t,n,r,i)}function $d(e,t,n,r,i,a){return uf(e,nf(t,n,r,i,a))}function ef(e,t,n){return{m:e,tx:t,ty:n,delete:Td}}function tf(){return ef([1,0,0,0,1,0,0,0,1],0,0)}function nf(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return tf();let s=-i/o,c=r/o,l=a-1,u=[1+l*s*s,l*s*c,0,l*c*s,1+l*c*c,0,0,0,1];return ef(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function rf(e,t){return ef([1,0,0,0,1,0,0,0,1],e,t)}function af(e,n,r,i,a,o,s){if(r===`axis`&&o!==void 0&&s!==void 0){let r=Math.sqrt(o*o+s*s),c=o/r,l=s/r,u=[2*c*c-1,2*c*l,0,2*c*l,2*l*l-1,0,0,0,1],d=i??e,f=a??n;return ef(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return ef([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function of(e,t,n){let r=Math.cos(e),i=Math.sin(e);return ef([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function sf(e,t,n){return ef([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function cf(e,t,n){e.tx=t,e.ty=n}function lf(e,n){let r=e.m,i=n.m,a=e=>t(r,e),o=e=>t(i,e);e.m=[a(0)*o(0)+a(1)*o(3)+a(2)*o(6),a(0)*o(1)+a(1)*o(4)+a(2)*o(7),a(0)*o(2)+a(1)*o(5)+a(2)*o(8),a(3)*o(0)+a(4)*o(3)+a(5)*o(6),a(3)*o(1)+a(4)*o(4)+a(5)*o(7),a(3)*o(2)+a(4)*o(5)+a(5)*o(8),a(6)*o(0)+a(7)*o(3)+a(8)*o(6),a(6)*o(1)+a(7)*o(4)+a(8)*o(7),a(6)*o(2)+a(7)*o(5)+a(8)*o(8)];let s=e.tx,c=e.ty,l=Number(n.tx)||0,u=Number(n.ty)||0;e.tx=a(0)*l+a(1)*u+s,e.ty=a(3)*l+a(4)*u+c}function uf(e,n){let r=Ed(e),i=n.m??[1,0,0,0,1,0,0,0,1],a=Number(n.tx)||0,o=Number(n.ty)||0,s=t(i,0),c=t(i,1),l=t(i,3),u=t(i,4);if(Math.abs(s-1)<1e-12&&Math.abs(u-1)<1e-12&&Math.abs(c)<1e-12&&Math.abs(l)<1e-12)return se(r,a,o);let d=w(r),f=[];for(let e=0;e<=20;e++){let[t,n]=S(r,d.first+(d.last-d.first)*e/20);f.push([s*t+c*n+a,l*t+u*n+o])}return oe(f)}function df(e,t,n){let r=fe(Ed(e),Ed(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function ff(e,t,n){let r=Ed(e),i=w(r);if(r.__bk2d===`line`){let e=t-r.ox,a=n-r.oy,o=Math.max(i.first,Math.min(i.last,e*r.dx+a*r.dy)),[s,c]=S(r,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}if(r.__bk2d===`circle`){let e=Math.atan2(n-r.cy,t-r.cx),i=r.sense?e:-e;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;let[a,o]=S(r,i);return{param:i,distance:Math.sqrt((a-t)**2+(o-n)**2)}}if(!isFinite(i.first)||!isFinite(i.last))return null;let a=i.first,o=1/0,s=(i.last-i.first)/200;for(let e=0;e<=200;e++){let c=i.first+e*s,[l,u]=S(r,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}for(let e=0;e<10;e++){let[e,o]=S(r,a),[s,c]=C(r,a),l=(e-t)*s+(o-n)*c,u=s*s+c*c;if(u<1e-20)break;let d=l/u,f=Math.max(i.first,Math.min(i.last,a-d));if(Math.abs(f-a)<1e-14)break;a=f}let[c,l]=S(r,a);return{param:a,distance:Math.sqrt((c-t)**2+(l-n)**2)}}function pf(e,t,n,r,i,a){let o=Ed(e),s=Ed(t),c=n,l=i,u=1/0;for(let e=0;e<=50;e++){let t=n+(r-n)*e/50,[d,f]=S(o,t);for(let e=0;e<=50;e++){let n=i+(a-i)*e/50,[r,o]=S(s,n),p=(r-d)**2+(o-f)**2;p<u&&(u=p,c=t,l=n)}}let d=c,f=l;for(let c=0;c<20;c++){let[c,l]=S(s,f),u=ff(e,c,l);if(u){let e=Math.max(n,Math.min(r,u.param)),t=Math.abs(e-d)<1e-12;if(d=e,t)break}let[p,m]=S(o,d),h=ff(t,p,m);if(h){let e=Math.max(i,Math.min(a,h.param)),t=Math.abs(e-f)<1e-12;if(f=e,t)break}}let[p,m]=S(o,d),[h,g]=S(s,f);return Math.sqrt((h-p)**2+(g-m)**2)}function mf(e,n,r,i){let a=Ed(e),o=w(a),s=Math.max(3,{C0:1,C1:2,C2:3,C3:4}[r]??4),c=Math.max(100,i*10),l=[],u=1/0;for(let e=0;e<3&&u>n;e++){l=[];for(let e=0;e<=c;e++){let t=o.first+(o.last-o.first)*e/c;l.push(S(a,t))}u=0;for(let e=0;e<c;e++){let[n,r]=S(a,o.first+(o.last-o.first)*(e+.5)/c),i=t(l,e),s=t(l,e+1),d=(i[0]+s[0])/2,f=(i[1]+s[1])/2,p=Math.sqrt((n-d)**2+(r-f)**2);p>u&&(u=p)}u>n&&(c=Math.min(c*2,500))}return Bd(l,{degMax:s})}function hf(e){let n=Dd(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return hf(mf(e,1e-6,`C2`,10));let r=w(Ed(e)),i=r.first,a=r.last,o=[];for(let e of n.knots)e>i+1e-12&&e<a-1e-12&&o.push(e);let s=[i,...o,a],c=[];for(let e=0;e<s.length-1;e++){let r=t(s,e),i=t(s,e+1),a=i-r;if(a<1e-15)continue;let o=S(n,r),l=S(n,i),u=C(n,r),d=C(n,i),f=a/3,p={__bk2d:`bezier`,poles:[o,[o[0]+u[0]*f,o[1]+u[1]*f],[l[0]-d[0]*f,l[1]-d[1]*f],l]};c.push(p)}return c.length>0?c:[e]}function gf(){return Ce()}function _f(e,t,n){we(Od(e),Ed(t),n)}function vf(e){let t=Od(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function yf(e,t){let n=Od(e),r=Od(t);n.xMin=Math.min(n.xMin,r.xMin),n.yMin=Math.min(n.yMin,r.yMin),n.xMax=Math.max(n.xMax,r.xMax),n.yMax=Math.max(n.yMax,r.yMax)}function bf(e,t){let n=Od(e),r=Od(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function xf(e,t,n){let r=Od(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function Sf(e){let t=Dd(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function Cf(e){let t=Dd(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function wf(e){let t=Dd(e);return t.__bk2d===`bezier`?[...t.poles]:null}function Tf(e){let t=Dd(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function Ef(e){let t=Dd(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function Df(e){return xe(Ed(e))}function Of(e){return Se(e)}function kf(e,t){let n=Ed(e),r=w(n),i=[r.first,...[...t].sort((e,t)=>e-t),r.last],a=[];for(let e=0;e<i.length-1;e++)a.push({__bk2d:`trimmed`,basis:n,tStart:i[e],tEnd:i[e+1]});return a}function Af(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepBuilderAPI_MakeEdge_3(r,i),o=a.Edge();return a.delete(),r.delete(),i.delete(),o}function jf(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_4(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function Mf(e,n){let r=new e.TColgp_Array1OfPnt_2(1,n.length),i=new e.gp_Pnt_1;for(let e=0;e<n.length;e++){let a=t(n,e);i.SetCoord_2(a[0],a[1],a[2]),r.SetValue_1(e+1,i)}i.delete();let a=new e.GeomAPI_PointsToBSpline_2(r,3,8,e.GeomAbs_Shape.GeomAbs_C2,1e-6);if(r.delete(),!a.IsDone())throw a.delete(),Error(`Interpolation failed — GeomAPI_PointsToBSpline did not converge`);let o=a.Curve(),s=new e.Handle_Geom_Curve_2(o.get()),c=new e.BRepBuilderAPI_MakeEdge_24(s),l=c.Edge();return c.delete(),a.delete(),l}function Nf(e,n,r,i,a){let o=Ed(n),s=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],c=(e,t)=>[r[0]+e*a[0]+t*s[0],r[1]+e*a[1]+t*s[1],r[2]+e*a[2]+t*s[2]];if(o.__bk2d===`line`)return Af(e,c(o.ox,o.oy),c(o.ox+o.dx*o.len,o.oy+o.dy*o.len));if(o.__bk2d===`circle`||o.__bk2d===`trimmed`){let t=o;for(;t.__bk2d===`trimmed`;)t=t.basis;if(t.__bk2d===`circle`){let n=t,r=c(n.cx,n.cy),a=n.sense?i:[-i[0],-i[1],-i[2]];if(o.__bk2d===`circle`){let t=new e.gp_Pnt_3(r[0],r[1],r[2]),i=new e.gp_Dir_5(a[0],a[1],a[2]),o=new e.gp_Ax2_4(t,i),s=new e.gp_Circ_2(o,n.radius),c=new e.BRepBuilderAPI_MakeEdge_8(s),l=c.Edge();return c.delete(),s.delete(),o.delete(),i.delete(),t.delete(),l}let s=w(o),[l,u]=S(o,s.first),[d,f]=S(o,(s.first+s.last)/2),[p,m]=S(o,s.last);return jf(e,c(l,u),c(d,f),c(p,m))}}if(o.__bk2d===`bezier`||o.__bk2d===`bspline`){let n=o.poles.map(([e,t])=>c(e,t));return n.length===2?Af(e,t(n,0),t(n,1)):Mf(e,n)}let l=w(o),u=[];for(let e=0;e<=60;e++){let[t,n]=S(o,l.first+(l.last-l.first)*e/60);u.push(c(t,n))}return Mf(e,u)}function Pf(e,t,n){let r=Ed(t),i=w(r),a=[];for(let e=0;e<=60;e++){let[t,o]=S(r,i.first+(i.last-i.first)*e/60),s=n.get().Value(t,o);a.push([s.X(),s.Y(),s.Z()]),s.delete()}return Mf(e,a)}function Ff(e,t){return e.BRep_Tool.Surface_2(t)}function If(e,t,n){let r=new e.BRepAdaptor_Curve2d_2(t,n),i=Number(r.FirstParameter()),a=Number(r.LastParameter()),o=[];for(let e=0;e<=30;e++){let t=i+(a-i)*e/30,n=r.Value(t);o.push([n.X(),n.Y()]),n.delete()}return r.delete(),Bd(o)}function Lf(e,t){e.BRepLib.BuildCurves3d_2(t)}function Rf(e,t,n,r){let i=new e.ShapeFix_Wire_2(t,n,r);i.FixEdgeCurves();let a=i.Wire();return i.delete(),a}function zf(e,t,n={}){let{order:r=3,nbPtsOnCur:i=15,nbIter:a=2,tol3d:o=1e-5,tol2d:s=1e-4,maxDeg:c=8,maxSeg:l=9}=n,u=new e.BRepOffsetAPI_MakeFilling(r,i,a,!1,o,s,.01,.1,c,l);for(let n=0;n<t.length;n++){let r=ls(e,t[n],`edge`);for(let t of r)u.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,n===0)}let d=new e.Message_ProgressRange_1;u.Build(d);let f=u.Shape();return u.delete(),d.delete(),f}function Bf(e){return{wrapCurve2dHandle:e=>Nd(e),createCurve2dAdaptor:e=>Pd(e),createPoint2d:(e,t)=>kd(e,t),createDirection2d:(e,t)=>Ad(e,t),createVector2d:(e,t)=>jd(e,t),createAxis2d:(e,t,n,r)=>Md(e,t,n,r),makeLine2d:(e,t,n,r)=>Fd(e,t,n,r),makeCircle2d:(e,t,n,r)=>Id(e,t,n,r),makeArc2dThreePoints:(e,t,n,r,i,a)=>re(e,t,n,r,i,a),makeArc2dTangent:(e,t,n,r,i,a)=>ie(e,t,n,r,i,a),makeEllipse2d:(e,t,n,r,i,a,o)=>Ld(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>Rd(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>zd(e),makeBSpline2d:(e,t)=>Bd(e,t),evaluateCurve2d:(e,t)=>Vd(e,t),evaluateCurve2dD1:(e,t)=>Hd(e,t),getCurve2dBounds:e=>Ud(e),getCurve2dType:e=>Wd(e),trimCurve2d:(e,t,n)=>Gd(e,t,n),reverseCurve2d:e=>{},copyCurve2d:e=>Kd(e),offsetCurve2d:(e,t)=>qd(e,t),translateCurve2d:(e,t,n)=>Jd(e,t,n),rotateCurve2d:(e,t,n,r)=>Yd(e,t,n,r),scaleCurve2d:(e,t,n,r)=>Xd(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>Zd(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>Qd(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>$d(e,t,n,r,i,a),createIdentityGTrsf2d:()=>tf(),createAffinityGTrsf2d:(e,t,n,r,i)=>nf(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>rf(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>af(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>of(e,t,n),createScaleGTrsf2d:(e,t,n)=>sf(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{cf(e,t,n)},multiplyGTrsf2d:(e,t)=>{lf(e,t)},transformCurve2dGeneral:(e,t)=>uf(e,t),intersectCurves2d:(e,t,n)=>df(e,t,n),projectPointOnCurve2d:(e,t,n)=>ff(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>pf(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>mf(e,t,n,r),decomposeBSpline2dToBeziers:e=>hf(e),createBoundingBox2d:()=>gf(),addCurveToBBox2d:(e,t,n)=>{_f(e,t,n)},getBBox2dBounds:e=>vf(e),mergeBBox2d:(e,t)=>{yf(e,t)},isBBox2dOut:(e,t)=>bf(e,t),isBBox2dOutPoint:(e,t,n)=>xf(e,t,n),getCurve2dCircleData:e=>Sf(e),getCurve2dEllipseData:e=>Cf(e),getCurve2dBezierPoles:e=>wf(e),getCurve2dBezierDegree:e=>Tf(e),getCurve2dBSplineData:e=>Ef(e),serializeCurve2d:e=>Df(e),deserializeCurve2d:e=>Of(e),splitCurve2d:(e,t)=>kf(e,t),liftCurve2dToPlane:(t,n,r,i)=>Nf(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>Pf(e,t,n),extractSurfaceFromFace:t=>Ff(e,t),extractCurve2dFromEdge:(t,n)=>If(e,t,n),buildCurves3d:t=>{Lf(e,t)},fixWireOnFace:(t,n,r)=>Rf(e,t,n,r),fillSurface:(t,n)=>zf(e,t,n)}}function Vf(){let e=e=>()=>{throw new c(`${e} is only available with the brepkit kernel`)};return{export3MF:e(`export3MF`),exportGLB:e(`exportGLB`),exportOBJ:e(`exportOBJ`),exportPLY:e(`exportPLY`),import3MF:e(`import3MF`),importOBJ:e(`importOBJ`),importGLB:e(`importGLB`),filletVariable:e(`filletVariable`),helicalSweep:e(`helicalSweep`),sweepWithOptions:e(`sweepWithOptions`),defeature:e(`defeature`),detectSmallFeatures:e(`detectSmallFeatures`),recognizeFeatures:e(`recognizeFeatures`),meshBoolean:(()=>{throw new c(`meshBoolean is only available with the brepkit kernel`)}),edgeToFaceMap:e(`edgeToFaceMap`),sharedEdges:e(`sharedEdges`),adjacentFaces:e(`adjacentFaces`),curveDegreeElevate:e(`curveDegreeElevate`),curveKnotInsert:e(`curveKnotInsert`),curveKnotRemove:e(`curveKnotRemove`),curveSplit:e(`curveSplit`),approximateSurfaceLspia:e(`approximateSurfaceLspia`),untrimFace:e(`untrimFace`),mergeCoincidentVertices:e(`mergeCoincidentVertices`),removeDegenerateEdges:e(`removeDegenerateEdges`),fixFaceOrientations:e(`fixFaceOrientations`),classifyPointRobust:e(`classifyPointRobust`),classifyPointWinding:e(`classifyPointWinding`),executeBatch:e(`executeBatch`),checkpoint:e(`checkpoint`),checkpointCount:e(`checkpointCount`),restoreCheckpoint:e(`restoreCheckpoint`),discardCheckpoint:e(`discardCheckpoint`)}}function Hf(e){return{draft:(t,n,r,i,a)=>Hu(e,t,n,r,i,a,[],1).shape}}var Uf=class{oc;kernelId=`occt`;capabilities=a;constructor(e){this.oc=e,Object.assign(this,Fs(e),Rs(e),rc(e),Xs(e),kc(e),Uc(e),al(e),vl(e),Sl(e),jl(e),is(e),vs(e),lu(e),fu(e),hu(e),yu(e),Uu(e),wd(e),Bf(e),Hf(e),Vf())}},Wf=()=>{};function Gf(e){return typeof e==`object`&&!!e&&e.__brepkit}function Kf(e,t){return{__brepkit:!0,type:e,id:t,delete:Wf,HashCode(e){return t%e},IsNull(){return!1}}}function I(e){return Kf(`solid`,e)}function qf(e){return Kf(`face`,e)}function Jf(e){return Kf(`edge`,e)}function Yf(e){return Kf(`wire`,e)}function Xf(e){return Kf(`shell`,e)}function Zf(e){let t=Kf(`compound`,e);return pp.has(e)?{...t,delete:()=>pp.delete(e)}:t}function Qf(e){return Kf(`vertex`,e)}function L(e,t){if(!Gf(e))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof e);if(t&&e.type!==t)throw Error(`brepkit: expected ${t} handle, got ${e.type}`);return e.id}function R(e){return Array.from(e)}function $f(e,t){if(!Gf(e))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof e);if(e.type!==`solid`)throw Error(`brepkit: ${t} requires a solid, got ${e.type}. Consider using makeCompound() to combine shapes first.`);return e.id}function ep(e,t,n){if(!Gf(t))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof t);if(t.type===`solid`)return[t.id];if(t.type===`compound`){let r=R(e.getCompoundSolids(t.id));if(r.length>0)return r;throw Error(`brepkit: ${n} received a compound with no solids.`)}throw Error(`brepkit: ${n} requires a solid or compound of solids, got ${t.type}.`)}function tp(e,t,n,r,i,a){let o=e-r,s=t-i,c=n-a;return Math.sqrt(o*o+s*s+c*c)}function np(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function rp(e,t,n){return[1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1]}function ip(e,t){if(!Array.isArray(e)||e.length<3)return t;let[n,r,i]=e;return typeof n==`number`&&typeof r==`number`&&typeof i==`number`&&Number.isFinite(n)&&Number.isFinite(r)&&Number.isFinite(i)?[n,r,i]:t}function ap(e,t=[0,0,1],n=[0,0,0]){let r=ip(t,[0,0,1]),i=r[0]===0&&r[1]===0&&r[2]===0?[0,0,1]:r,a=ip(n,[0,0,0]),o=e*Math.PI/180,s=Math.cos(o),c=Math.sin(o),l=1-s,u=Math.sqrt(i[0]**2+i[1]**2+i[2]**2),[d,f,p]=[i[0]/u,i[1]/u,i[2]/u],m=l*d*d+s,h=l*d*f-c*p,g=l*d*p+c*f,_=l*f*d+c*p,v=l*f*f+s,y=l*f*p-c*d,b=l*p*d-c*f,x=l*p*f+c*d,S=l*p*p+s,[C,w,ee]=a;return[m,h,g,C-(m*C+h*w+g*ee),_,v,y,w-(_*C+v*w+y*ee),b,x,S,ee-(b*C+x*w+S*ee),0,0,0,1]}function op(e,t){let[n,r,i]=ip(e,[0,0,0]);return[t,0,0,n*(1-t),0,t,0,r*(1-t),0,0,t,i*(1-t),0,0,0,1]}function sp(e,n){let r=n=>t(e,n);return[r(0),r(1),r(2),n[0],r(3),r(4),r(5),n[1],r(6),r(7),r(8),n[2],0,0,0,1]}function cp(e,t){let[n,r,i]=e,a=Math.sqrt(t[0]**2+t[1]**2+t[2]**2),o=t[0]/a,s=t[1]/a,c=t[2]/a,l=2*(n*o+r*s+i*c);return[1-2*o*o,-2*o*s,-2*o*c,l*o,-2*s*o,1-2*s*s,-2*s*c,l*s,-2*c*o,-2*c*s,1-2*c*c,l*c,0,0,0,1]}function lp(e,t){let n=Array(16).fill(0);for(let r=0;r<4;r++)for(let i=0;i<4;i++)for(let a=0;a<4;a++)n[r*4+i]=n[r*4+i]+e[r*4+a]*t[a*4+i];return n}var up=.01,dp=9e5;function fp(){return dp++}var pp=new Map,mp=new Set;function hp(e,t){mp.has(e)||(mp.add(e),console.warn(`brepkit: ${t}`))}function gp(e){return e.optimisation!==void 0||e.simplify!==void 0||e.strategy!==void 0||e.fuzzyValue!==void 0}function _p(e){return e}function vp(e){let t=e;for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function yp(e){return e}function bp(e,t){if(typeof t!=`function`)return t;let n;for(let r of e){let e;try{e=t(r)}catch{throw Error(`brepkit does not support variable draft with multiple distinct angles. Use the OCCT kernel for per-face angle variation, or use a uniform angle.`)}if(n===void 0)n=e;else if(e!==n)throw Error(`brepkit does not support variable draft with multiple distinct angles. Use the OCCT kernel for per-face angle variation, or use a uniform angle.`)}if(n===void 0)throw Error(`draft: no faces provided`);return n}function xp(e,t,n){let r=pp.get(t);return r?r.flatMap(t=>t.type===n?[t]:kp(e,t,n)):n===`solid`?R(e.getCompoundSolids(t)).map(I):n===`face`||n===`edge`||n===`vertex`||n===`wire`?R(e.getCompoundSolids(t)).map(I).flatMap(t=>kp(e,t,n)):[]}function Sp(e,t,n,r){switch(r){case`solid`:return[t];case`shell`:return R(e.getSolidShells(n)).map(Xf);case`face`:return R(e.getSolidFaces(n)).map(qf);case`edge`:return R(e.getSolidEdges(n)).map(Jf);case`vertex`:return R(e.getSolidVertices(n)).map(Qf);case`wire`:return R(e.getSolidFaces(n)).flatMap(t=>R(e.getFaceWires(t)).map(Yf));default:return[]}}function Cp(e,t,n){let r=R(e.getShellFaces(t)).map(qf),i=new Set,a=[];for(let t of r)for(let r of kp(e,t,n)){let e=L(r);i.has(e)||(i.add(e),a.push(r))}return a}function wp(e,t,n,r){return r===`shell`?[t]:r===`face`?R(e.getShellFaces(n)).map(qf):r===`edge`||r===`vertex`?Cp(e,n,r):[]}function Tp(e,t,n,r){return r===`face`?[t]:r===`edge`?R(e.getFaceEdges(n)).map(Jf):r===`vertex`?R(e.getFaceVertices(n)).map(Qf):r===`wire`?R(e.getFaceWires(n)).map(Yf):[]}function Ep(e,n){let r=R(e.getWireEdges(n)),i=new Set,a=[];for(let n of r){let r=e.getEdgeVertices(n),o=[[t(r,0),t(r,1),t(r,2)],[t(r,3),t(r,4),t(r,5)]];for(let[t,n,r]of o){let o=`${t},${n},${r}`;i.has(o)||(i.add(o),a.push(Qf(e.makeVertex(t,n,r))))}}return a}function Dp(e,t,n,r){return r===`wire`?[t]:r===`edge`?R(e.getWireEdges(n)).map(Jf):r===`vertex`?Ep(e,n):[]}function Op(e,n,r,i){if(i===`edge`)return[n];if(i===`vertex`){let n=e.getEdgeVertices(r),i=e.makeVertex(t(n,0),t(n,1),t(n,2)),a=e.makeVertex(t(n,3),t(n,4),t(n,5));return[Qf(i),Qf(a)]}return[]}function kp(e,t,n){let r=L(t);switch(t.type){case`compound`:return xp(e,r,n);case`solid`:return Sp(e,t,r,n);case`shell`:return wp(e,t,r,n);case`face`:return Tp(e,t,r,n);case`wire`:return Dp(e,t,r,n);case`edge`:return Op(e,t,r,n);default:return[]}}function Ap(e,t,n){if(Array.isArray(t))for(let e of t)n(e)}function jp(e,t){if(Gf(t))return t.type;throw Error(`brepkit: cannot determine shape type of non-brepkit handle`)}function Mp(e,t,n){return Gf(t)&&Gf(n)&&t.id===n.id&&t.type===n.type}function Np(e,t,n){return Mp(e,t,n)}function Pp(e,t,n){return t}function Fp(e,t,n){return Gf(t)?t.id%n:0}function Ip(e,t){return!t||!Gf(t)}function Lp(e,t){let n=L(t);return e.getShapeOrientation(n)}function Rp(e,t){let n=$f(t,`edgeToFaceMap`);return e.edgeToFaceMap(n)}function zp(e,t,n){let r=L(t,`face`),i=L(n,`face`);return Array.from(e.sharedEdges(r,i)).map(e=>Jf(e))}function Bp(e,t,n){let r=$f(t,`adjacentFaces`),i=L(n,`face`);return Array.from(e.adjacentFaces(r,i)).map(e=>qf(e))}function Vp(e,t){let n=t;return n.type===`face`?[n.id]:n.type===`solid`?R(e.getSolidFaces(n.id)):n.type===`shell`?R(e.getShellFaces(n.id)):[]}function Hp(e,t,n){let r=t.flatMap(t=>Vp(e,t)),i=n??1e-7;try{return Xf(e.weldShellsAndFaces(r,i))}catch(e){console.warn(`brepkit: weldShellsAndFaces failed, falling back to sewFaces:`,e)}return Xf(e.sewFaces(r,i))}function Up(e){return{iterShapes:(t,n)=>kp(e,t,n),iterShapeList:(t,n)=>{Ap(e,t,n)},shapeType:t=>jp(e,t),isSame:(t,n)=>Mp(e,t,n),isEqual:(t,n)=>Np(e,t,n),downcast:(t,n)=>Pp(e,t,n),copyShape:t=>Pp(e,t),hashCode:(t,n)=>Fp(e,t,n),isNull:t=>Ip(e,t),shapeOrientation:t=>Lp(e,t),edgeToFaceMap:t=>Rp(e,t),sharedEdges:(t,n)=>zp(e,t,n),adjacentFaces:(t,n)=>Bp(e,t,n),sew:(t,n)=>Hp(e,t,n)}}function Wp(e,t){return n(e.getVertexPosition(L(t,`vertex`)))}function Gp(e,t){return e.getSurfaceType(L(t,`face`))}function Kp(e,n){let r=e.getSurfaceDomain(L(n,`face`));return{uMin:t(r,0),uMax:t(r,1),vMin:t(r,2),vMax:t(r,3)}}function qp(e,t){return Yf(e.getFaceOuterWire(L(t,`face`)))}function Jp(e,t,r,i){return n(e.evaluateSurfaceNormal(L(t,`face`),r,i))}function Yp(e,t,r,i){return n(e.evaluateSurface(L(t,`face`),r,i))}function Xp(e,n,r){try{let i=e.projectPointOnSurface(L(n,`face`),r[0],r[1],r[2]);return[t(i,0),t(i,1)]}catch(e){return console.warn(`brepkit: uvFromPoint failed:`,e),null}}function Zp(e,t,r){return n(e.projectPointOnSurface(L(t,`face`),r[0],r[1],r[2]),2)}function Qp(e,r,i){let a=r,o,s=i;if(a.type===`wire`){let n=R(e.getWireEdges(a.id));o=t(n,n.length-1);let r=0;for(let a of n){let n=e.getEdgeCurveParameters(a),c=t(n,1)-t(n,0);if(i<=r+c||a===o){o=a,s=Math.min(t(n,0)+(i-r),t(n,1));break}r+=c}}else o=L(r,`edge`);let c=e.evaluateEdgeCurveD1(o,s);return{point:n(c,0),tangent:n(c,3)}}function $p(e,n){let r=n;if(r.type===`wire`){let n=R(e.getWireEdges(r.id));if(n.length===0)return[0,0];let i=0;for(let r of n){let n=e.getEdgeCurveParameters(r);i+=t(n,1)-t(n,0)}return[0,i]}let i=e.getEdgeCurveParameters(L(n,`edge`));return[t(i,0),t(i,1)]}function em(e,r,i){let a=r;if(a.type===`wire`){let r=R(e.getWireEdges(a.id)),o=0;for(let a of r){let s=e.getEdgeCurveParameters(a),c=t(s,1)-t(s,0);if(i<=o+c||a===r[r.length-1]){let r=t(s,0)+(i-o);return n(e.evaluateEdgeCurve(a,Math.min(r,t(s,1))))}o+=c}return n(e.evaluateEdgeCurve(t(r,0),i))}return n(e.evaluateEdgeCurve(L(r,`edge`),i))}function tm(e,r){let i=r;if(i.type===`wire`){let r=R(e.getWireEdges(i.id));if(r.length===0)return!1;if(r.length===1)return nm(e.getEdgeVertices(t(r,0)));let a=[];for(let t of r){let r=e.getEdgeVertices(t);a.push(n(r,0)),a.push(n(r,3))}let o=[];for(let e of a){let t=o.findIndex(t=>tp(t[0],t[1],t[2],e[0],e[1],e[2])<1e-7);t>=0?o.splice(t,1):o.push(e)}return o.length===0}return nm(e.getEdgeVertices(L(r,`edge`)))}function nm(e){return tp(t(e,0),t(e,1),t(e,2),t(e,3),t(e,4),t(e,5))<1e-7}function rm(e,t){let n=t;try{if(n.type===`edge`||n.type===`wire`&&R(e.getWireEdges(n.id)).length===1)return tm(e,t)}catch{}return!1}function im(e,t){try{if(rm(e,t)){let n=$p(e,t);return n[1]-n[0]}}catch{}return 0}function am(e,t){if(t.type===`wire`){let n=kp(e,t,`edge`)[0];return n?e.getEdgeCurveType(L(n,`edge`)):`LINE`}return e.getEdgeCurveType(L(t,`edge`))}function om(e,t,n){let r=L(t,`edge`);return Jf(e.curveDegreeElevate(r,n))}function sm(e,t,n,r){let i=L(t,`edge`);return Jf(e.curveKnotInsert(i,n,r))}function cm(e,t,n,r){let i=L(t,`edge`);return Jf(e.curveKnotRemove(i,n,r))}function lm(e,n,r){let i=L(n,`edge`),a=e.curveSplit(i,r);return[Jf(t(a,0)),Jf(t(a,1))]}function um(e,t,n,r,i,a,o,s,c,l){return qf(e.approximateSurfaceLspia(t,n,r,i,a,o,s,c,l))}function dm(e,t,n,r){let i=L(t,`face`);return qf(e.untrimFace(i,n,r))}function fm(e,t){return t}function pm(e,t){let r=Um(e,t);return!r||r.controlPoints.length<6?null:n(r.controlPoints,r.controlPoints.length-6)}function mm(e,t){if(Gf(t)&&t.type===`face`){let n=t.id,r=JSON.parse(e.getAnalyticSurfaceParams(n));if(r.type===`cylinder`)return{radius:r.radius,isDirect:!0}}return null}function hm(e,t){let n=JSON.parse(e.getAnalyticSurfaceParams(L(t,`face`))),r=n.type===`cylinder`?n.origin:n.type===`cone`?n.apex:null;if(!r||!n.axis)return null;let[i,a,o]=r,[s,c,l]=n.axis,u=Math.hypot(s,c,l);return u<1e-12?null:{origin:[i,a,o],direction:[s/u,c/u,l/u]}}function gm(e,t){return t}function _m(e,n,r,i,a){a!==void 0&&hp(`classify-tolerance`,`classifyPointOnFace() tolerance parameter is not supported; brepkit uses domain-based classification.`);let o=L(n,`face`),s=e.getSurfaceDomain(o);return r<t(s,0)||r>t(s,1)||i<t(s,2)||i>t(s,3)?`out`:`in`}function vm(e,t,n,r){let i=$f(t,`classifyPointRobust`);return e.classifyPointRobust(i,n[0],n[1],n[2],r)}function ym(e,t,n,r){let i=$f(t,`classifyPointWinding`);return e.classifyPointWinding(i,n[0],n[1],n[2],r)}function bm(e,t,n,r){let i=$f(t,`detectSmallFeatures`);return Array.from(e.detectSmallFeatures(i,n,r)).map(e=>qf(e))}function xm(e,t,n){let r=$f(t,`recognizeFeatures`);return e.recognizeFeatures(r,n)}function Sm(e,t,r,i,a){let o=L(t),[s,c,l]=r,[u,d,f]=i,[p,m,h]=a??[1,0,0],g=.1;try{let t=e.boundingBox(o),[r,i,a]=n(t,0),[s,c,l]=n(t,3),u=tp(r,i,a,s,c,l);u>0&&(g=Math.max(u*.001,1e-6))}catch{}let _=e.projectEdges(o,s,c,l,u,d,f,p,m,h,!0,g),v;try{v=JSON.parse(_)}catch{v={visible:[],hidden:[]}}let y=t=>{let n=[];for(let r of t)for(let t=0;t+3<r.length;t+=2){let i=r[t],a=r[t+1],o=r[t+2],s=r[t+3];i===void 0||a===void 0||o===void 0||s===void 0||i===o&&a===s||n.push(Jf(e.makeLineEdge(i,a,0,o,s,0)))}let r=fp();return pp.set(r,n),Zf(r)},b=()=>{let e=fp();return pp.set(e,[]),Zf(e)};return{visible:{outline:y(v.visible),smooth:b(),sharp:b()},hidden:{outline:y(v.hidden),smooth:b(),sharp:b()}}}function Cm(e,t){let n=L(t,`edge`),r=e.getNurbsCurveData(n);if(!r)return null;let i=JSON.parse(r);return{degree:i.degree,poles:i.controlPoints,weights:i.weights,knots:i.distinctKnots,multiplicities:i.multiplicities,isPeriodic:i.periodic,isRational:i.rational}}function wm(e,t){return JSON.parse(e.getNurbsSurfaceDataParity(L(t,`face`)))}function Tm(e){return{vertexPosition:t=>Wp(e,t),surfaceType:t=>Gp(e,t),uvBounds:t=>Kp(e,t),outerWire:t=>qp(e,t),surfaceNormal:(t,n,r)=>Jp(e,t,n,r),pointOnSurface:(t,n,r)=>Yp(e,t,n,r),uvFromPoint:(t,n)=>Xp(e,t,n),projectPointOnFace:(t,n)=>Zp(e,t,n),curveTangent:(t,n)=>Qp(e,t,n),curveParameters:t=>$p(e,t),curvePointAtParam:(t,n)=>em(e,t,n),curveIsClosed:t=>tm(e,t),curveIsPeriodic:t=>rm(e,t),curvePeriod:t=>im(e,t),curveType:t=>am(e,t),curveDegreeElevate:(t,n)=>om(e,t,n),curveKnotInsert:(t,n,r)=>sm(e,t,n,r),curveKnotRemove:(t,n,r)=>cm(e,t,n,r),curveSplit:(t,n)=>lm(e,t,n),approximateSurfaceLspia:(t,n,r,i,a,o,s,c,l)=>um(e,t,n,r,i,a,o,s,c,l),untrimFace:(t,n,r)=>dm(e,t,n,r),createCurveAdaptor:t=>fm(e,t),getBezierPenultimatePole:t=>pm(e,t),getSurfaceCylinderData:t=>mm(e,t),getSurfaceAxis:t=>hm(e,t),reverseSurfaceU:t=>gm(e,t),classifyPointOnFace:(t,n,r,i)=>_m(e,t,n,r,i),classifyPointRobust:(t,n,r)=>vm(e,t,n,r),classifyPointWinding:(t,n,r)=>ym(e,t,n,r),detectSmallFeatures:(t,n,r)=>bm(e,t,n,r),recognizeFeatures:(t,n)=>xm(e,t,n),projectEdges:(t,n,r,i)=>Sm(e,t,n,r,i),getNurbsCurveData:t=>Cm(e,t),getNurbsSurfaceData:t=>wm(e,t)}}function Em(e,t,n){if(Array.isArray(n)&&n.length===16)return zm(e,t,n);throw Error(`brepkit: transform expects a 16-element matrix array`)}function Dm(e,t,n,r,i){return zm(e,t,rp(n,r,i))}function Om(e,t,n,r,i){return zm(e,t,ap(n,r,i))}function km(e,t,n,r){let i=t;return i.type===`solid`?I(e.mirror(i.id,n[0],n[1],n[2],r[0],r[1],r[2])):zm(e,t,cp(n,r))}function Am(e,t,n,r){return zm(e,t,op(n,r))}function jm(e,t,n,r,i){return zm(e,t,sp(n,r))}function Mm(e,t,n,r){return zm(e,t,sp(n,r))}function Nm(e,t,n,r){let{point:i,tangent:a}=Qp(e,n,r),[o,s,c]=a,l=Math.sqrt(o*o+s*s+c*c);if(l<1e-12)return Dm(e,t,i[0],i[1],i[2]);let u=o/l,d=s/l,f=c/l,p=t;if(Math.abs(f+1)<1e-10)p=Om(e,p,180,[1,0,0]);else if(Math.abs(f-1)>1e-10){let t=[-d,u,0],n=180/Math.PI*Math.acos(Math.max(-1,Math.min(1,f)));p=Om(e,p,n,t)}return Dm(e,p,i[0],i[1],i[2])}function Pm(e,t,n,r,i){let a=[t];for(let o=1;o<i;o++){let i=r*o;a.push(Dm(e,t,n[0]*i,n[1]*i,n[2]*i))}return a}function Fm(e,t,n,r,i,a){let o=[t];for(let s=1;s<a;s++)o.push(Om(e,t,i*s,r,n));return o}function Im(e,t,n,r,i,a,o,s){return Zf(e.gridPattern($f(t,`gridPattern`),n[0],n[1],n[2],r[0],r[1],r[2],i,a,o,s))}function Lm(e,t){return t.map(t=>{switch(t.type){case`translate`:return Dm(e,t.shape,t.x,t.y,t.z);case`rotate`:return Om(e,t.shape,t.angle,t.axis,t.center);case`scale`:return Am(e,t.shape,t.center,t.factor);case`mirror`:return km(e,t.shape,t.origin,t.normal)}})}function Rm(e){return{transform:(t,n)=>Em(e,t,n),locate:(t,n)=>Em(e,t,n),translate:(t,n,r,i)=>Dm(e,t,n,r,i),rotate:(t,n,r,i)=>Om(e,t,n,r,i),mirror:(t,n,r)=>km(e,t,n,r),scale:(t,n,r)=>Am(e,t,n,r),generalTransform:(t,n,r,i)=>jm(e,t,n,r,i),generalTransformNonOrthogonal:(t,n,r)=>Mm(e,t,n,r),positionOnCurve:(t,n,r)=>Nm(e,t,n,r),linearPattern:(t,n,r,i)=>Pm(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>Fm(e,t,n,r,i,a),gridPattern:(t,n,r,i,a,o,s)=>Im(e,t,n,r,i,a,o,s),transformBatch:t=>Lm(e,t)}}function zm(e,t,n){let r=t;if(!Gf(t))throw Error(`brepkit: applyMatrix requires a BrepkitHandle`);switch(r.type){case`solid`:{let t=e.copySolid(r.id);return e.transformSolid(t,n),I(t)}case`face`:{if(typeof e.copyFace!=`function`)throw Error(`brepkit: applyMatrix for faces requires copyFace/transformFace WASM exports`);let t=e.copyFace(r.id);return e.transformFace(t,n),qf(t)}case`wire`:{if(typeof e.copyWire!=`function`||typeof e.transformWire!=`function`)throw Error(`brepkit: applyMatrix for wires requires copyWire/transformWire WASM exports`);let t=e.copyWire(r.id);return e.transformWire(t,n),Yf(t)}case`edge`:{if(typeof e.copyEdge!=`function`||typeof e.transformEdge!=`function`)throw Error(`brepkit: applyMatrix for edges requires copyEdge/transformEdge WASM exports`);let t=e.copyEdge(r.id);return e.transformEdge(t,n),Jf(t)}default:throw Error(`brepkit: applyMatrix does not support '${r.type}' shapes`)}}function Bm(e,t){return!!(e&&(e[0]!==0||e[1]!==0||e[2]!==0)||t&&(t[0]!==0||t[1]!==0||t[2]!==1))}function Vm(e,t,n,r){let i=t;if(r&&(r[0]!==0||r[1]!==0||r[2]!==1)){let[t,n,a]=r,o=Math.sqrt(t*t+n*n+a*a),s=t/o,c=n/o,l=a/o;if(Math.abs(l+1)<1e-10)i=Om(e,i,180,[1,0,0]);else if(Math.abs(l-1)>1e-10){let t=[-c,s,0],n=180/Math.PI*Math.acos(Math.max(-1,Math.min(1,l)));i=Om(e,i,n,t)}}return n&&(n[0]!==0||n[1]!==0||n[2]!==0)&&(i=Dm(e,i,n[0],n[1],n[2])),i}function Hm(e,t){let r,i=t;if(i.type===`solid`||i.type===`compound`){let n=kp(e,t,`face`);if(n.length===0)throw Error(`brepkit: extractPlaneFromFace: no faces found`);let i=n[0];if(!i)throw Error(`brepkit: extractPlaneFromFace: no faces found`);let a=L(i,`face`),o=0;for(let t of n){let n=L(t,`face`);try{let t=e.faceArea(n,up);t>o&&(o=t,a=n)}catch{}}r=a}else r=L(t,`face`);let a=n(e.getFaceNormal(r)),o=e.tessellateFace(r,1).positions;return o.length>=3?{point:n(o),normal:a}:{point:[0,0,0],normal:a}}function Um(e,n){let r=n;if(r.type!==`edge`)return null;let i=e.getEdgeNurbsData(r.id);if(i){let e=JSON.parse(i);return{degree:e.degree,knots:e.knots,controlPoints:e.controlPoints,weights:e.weights}}let a=e.getEdgeVertices(r.id);return{degree:1,knots:[0,0,1,1],controlPoints:[t(a,0),t(a,1),t(a,2),t(a,3),t(a,4),t(a,5)],weights:[1,1]}}function Wm(e,t){if(!Gf(t))return!1;if(t.type!==`solid`)return!0;try{return e.validateSolidRelaxed(t.id)===0}catch(e){return console.warn(`brepkit: isValid check failed:`,e),!1}}function Gm(e,t){if(!Gf(t))return!1;if(t.type!==`solid`)return!0;try{return e.validateSolid(t.id)===0}catch(e){return console.warn(`brepkit: isValidStrict check failed:`,e),!1}}function Km(e,t){let n=t;if(n.type!==`solid`)throw Error(`brepkit: healSolid requires a solid, got ${n.type}. Consider using makeCompound() to combine shapes first.`);try{let n=e.repairSolid(L(t));return n>0&&console.warn(`brepkit: repairSolid left ${n} error(s) on solid.`),t}catch(n){try{return e.healSolid(L(t)),t}catch(e){return console.warn(`brepkit: healSolid failed (repairSolid error:`,n,`, healSolid error:`,e,`)`),null}}}function qm(e,t){return t}function Jm(e,t,n){return t}function Ym(e,t,n){let r=$f(t,`mergeCoincidentVertices`);return e.mergeCoincidentVertices(r,n)}function Xm(e,t,n){let r=$f(t,`removeDegenerateEdges`);return e.removeDegenerateEdges(r,n)}function Zm(e,t){let n=$f(t,`fixFaceOrientations`);return e.fixFaceOrientations(n)}function Qm(e,t){let n=t;return n.type===`solid`&&e.healSolid(n.id),t}function $m(e,t){return t}function eh(e,t){if(!Gf(t)||t.type!==`solid`)return null;try{return typeof e.validateSolidDetails==`function`?e.validateSolidDetails(t.id):null}catch{return null}}function th(e){return{isValid:t=>Wm(e,t),isValidStrict:t=>Gm(e,t),healSolid:t=>Km(e,t),healFace:t=>qm(e,t),healWire:(t,n)=>Jm(e,t,n),fixShape:t=>Qm(e,t),fixSelfIntersection:t=>$m(e,t),mergeCoincidentVertices:(t,n)=>Ym(e,t,n),removeDegenerateEdges:(t,n)=>Xm(e,t,n),fixFaceOrientations:t=>Zm(e,t),validationDetails:t=>eh(e,t)}}function nh(e){if(!(e instanceof Error))return!1;let t=e.message;return t.startsWith(`empty result:`)||t.includes(`produced empty result`)||t.includes(`produces empty result`)}function rh(e,t){return t.type===`compound`?R(e.getCompoundSolids(t.id)).length===0:!1}function ih(e){return Zf(e.makeCompound([]))}function ah(e,t,n,r){if(r&&gp(r)&&hp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),rh(e,t))return n;if(rh(e,n))return t;let i=$f(t,`fuse`),a=n;if(a.type===`compound`){let t=R(e.getCompoundSolids(a.id)),n=i;for(let r of t)n=e.fuse(n,r);return I(n)}return I(e.fuse(i,$f(n,`fuse`)))}function oh(e,t,n,r){if(r&&gp(r)&&hp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),rh(e,t))return ih(e);if(rh(e,n))return t;let i=$f(t,`cut`),a=n;if(a.type===`compound`){let t=R(e.getCompoundSolids(a.id)),n=i;for(let r of t)try{n=e.cut(n,r)}catch(t){if(nh(t))return ih(e);throw t}return I(n)}try{return I(e.cut(i,$f(n,`cut`)))}catch(t){if(nh(t))return ih(e);throw t}}function sh(e,t,n,r){if(r&&gp(r)&&hp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),rh(e,t)||rh(e,n))return ih(e);try{return I(e.intersect($f(t,`intersect`),$f(n,`intersect`)))}catch(t){if(nh(t))return ih(e);throw t}}function ch(e,n,r,i){let{point:a,normal:o}=Hm(e,r),s=Gf(n)&&n.type===`solid`?n.id:L(n,`solid`),c=R(e.section(s,a[0],a[1],a[2],o[0],o[1],o[2]));if(c.length===0)return Zf(e.makeCompound([]));let l=[];for(let n=0;n<c.length;n++){let r=R(e.getFaceWires(t(c,n)));for(let e=0;e<r.length;e++)l.push(Yf(t(r,e)))}let[u]=l;if(l.length===1&&u!==void 0)return u;let d=fp();return pp.set(d,l),Zf(d)}function lh(e,n,r){if(n.length===0)throw Error(`brepkit: fuseAll requires at least one shape`);if(n.length===1)return t(n,0);if(e.compoundFuse){let t=[];for(let r of n){let n=r;n.type===`compound`?t.push(...R(e.getCompoundSolids(n.id))):t.push($f(r,`fuseAll`))}if(t.length===0)throw Error(`brepkit: fuseAll resolved to zero solid IDs`);return I(e.compoundFuse(new Uint32Array(t)))}let i=[...n];for(;i.length>1;){let t=[];for(let n=0;n<i.length;n+=2)n+1<i.length?t.push(ah(e,i[n],i[n+1],r)):t.push(i[n]);i=t}return t(i,0)}function uh(e,t,n,r){if(n.length===0)return t;if(n.length===1)return oh(e,t,n[0],r);let i=$f(t,`cutAll`),a=[];for(let t of n){let n=t;n.type===`compound`?a.push(...R(e.getCompoundSolids(n.id))):a.push($f(t,`cutAll`))}return a.length===0?t:I(e.compoundCut(i,new Uint32Array(a)))}function dh(e,t,n){if(n.length===0)throw Error(`brepkit: split requires at least one tool`);let{point:r,normal:i}=Hm(e,n[0]),a=R(e.split(L(t,`solid`),r[0],r[1],r[2],i[0],i[1],i[2]));return Zf(e.makeCompound(a))}function fh(e,t,n,r,i,a,o){let s=e.meshBoolean(t,n,r,i,a,o);return{vertices:new Float32Array(s.positions),normals:new Float32Array(s.normals),triangles:new Uint32Array(s.indices),uvs:new Float32Array,faceGroups:[{start:0,count:s.indices.length,faceHash:0}]}}function ph(e,t,n,r,i){let a=[];return(!Gf(t)||t.IsNull())&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),(!Gf(n)||n.IsNull())&&a.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is null`}),a.length>0?{valid:!1,issues:a}:(i(t)||a.push({operand:`base`,issue:`not-valid`,message:`Base shape fails BRepCheck validation. Try autoHeal() first.`}),i(n)||a.push({operand:`tool`,issue:`not-valid`,message:`Tool shape fails BRepCheck validation. Try autoHeal() first.`}),{valid:a.length===0,issues:a})}function mh(e,n,r){let i=[];for(let r of n){let n=r;if(n.type===`solid`){let r=R(e.getSolidVertices(n.id));for(let n of r){let r=e.getVertexPosition(n);i.push(t(r,0),t(r,1),t(r,2))}}else if(n.type===`vertex`){let r=e.getVertexPosition(n.id);i.push(t(r,0),t(r,1),t(r,2))}}if(i.length<12)throw Error(`brepkit: hull requires enough points`);return I(e.convexHull(i))}function hh(e,t,n){if(t.length<4)throw Error(`brepkit: hull needs at least 4 points`);let r=[];for(let e of t)r.push(e.x,e.y,e.z);return I(e.convexHull(r))}function gh(e,n,r,i){let a=new Float64Array(n.length*3);for(let e=0;e<n.length;e++){let r=t(n,e);a[e*3]=r.x,a[e*3+1]=r.y,a[e*3+2]=r.z}let o=new Uint32Array(r.length*3);for(let e=0;e<r.length;e++){let n=t(r,e);o[e*3]=n[0],o[e*3+1]=n[1],o[e*3+2]=n[2]}return I(e.importIndexedMesh(a,o))}function _h(e){return{fuse:(t,n,r)=>ah(e,t,n,r),cut:(t,n,r)=>oh(e,t,n,r),intersect:(t,n,r)=>sh(e,t,n,r),section:(t,n,r)=>ch(e,t,n,r),fuseAll:(t,n)=>lh(e,t,n),cutAll:(t,n,r)=>uh(e,t,n,r),split:(t,n)=>dh(e,t,n),meshBoolean:(t,n,r,i,a,o)=>fh(e,t,n,r,i,a,o),checkBoolean:(t,n,r)=>ph(e,t,n,r,t=>Wm(e,t)),hull:(t,n)=>mh(e,t,n),hullFromPoints:(t,n)=>hh(e,t,n),buildSolidFromFaces:(t,n,r)=>gh(e,t,n,r)}}function vh(e,t,n,r){return Qf(e.makeVertex(t,n,r))}function yh(e,t,n,r){if(t&&typeof t==`object`&&`origin`in t&&`direction`in t){let{origin:i,direction:a}=t,o=n??0,s=r??1;return kh(e,[i[0]+a[0]*o,i[1]+a[1]*o,i[2]+a[2]*o],[i[0]+a[0]*s,i[1]+a[1]*s,i[2]+a[2]*s])}if(Gf(t)&&t.type===`edge`)return t;throw Error(`brepkit: makeEdge requires a curve with origin/direction, or an edge handle`)}function bh(e,t){let n=[];for(let r of t){let t=r;if(t.type===`wire`)for(let r of R(e.getWireEdges(t.id)))n.push(r);else n.push(L(r,`edge`))}return Yf(e.makeWire(n,!0))}function xh(e,t,n){let r=t,i=r.type===`edge`?e.makeWire([r.id],!0):L(t,`wire`);return qf(n?e.makePlanarFaceFromWire(i):e.makeFaceFromWire(i))}function Sh(e,t,n,r){return I(e.makeBox(t,n,r))}function Ch(e,t,n){return qf(e.makeRectangle(t,n))}function wh(e,t,n,r,i){let a=I(e.makeCylinder(t,n));return Bm(r,i)?Vm(e,a,r,i):a}function Th(e,t,n){let r=I(e.makeSphere(t,32));return n&&(n[0]!==0||n[1]!==0||n[2]!==0)?Dm(e,r,n[0],n[1],n[2]):r}function Eh(e,t,n,r,i,a){let o=I(e.makeCone(t,n,r));return Bm(i,a)?Vm(e,o,i,a):o}function Dh(e,t,n,r,i){let a=I(e.makeTorus(t,n,32));return Bm(r,i)?Vm(e,a,r,i):a}function Oh(e,t,n,r){let i=Math.max(t,n,r);return jm(e,Th(e,i),[t/i,0,0,0,n/i,0,0,0,r/i],[0,0,0],!1)}function kh(e,t,n){return Jf(e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Ah(e,t,n,r){let i=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);return Jf(e.makeCircleEdge(t[0],t[1],t[2],n[0]/i,n[1]/i,n[2]/i,r))}function jh(e,t,n,r,i,a){let o=a-i,s=1e-9;if(o>s&&o<2*Math.PI-s){let o=Math.hypot(n[0],n[1],n[2]),s=[n[0]/o,n[1]/o,n[2]/o],c=Math.abs(s[0])<.9?[1,0,0]:[0,1,0],l=[s[1]*c[2]-s[2]*c[1],s[2]*c[0]-s[0]*c[2],s[0]*c[1]-s[1]*c[0]],u=Math.hypot(l[0],l[1],l[2]),d=[l[0]/u,l[1]/u,l[2]/u],f=[s[1]*d[2]-s[2]*d[1],s[2]*d[0]-s[0]*d[2],s[0]*d[1]-s[1]*d[0]],p=e=>{let n=Math.cos(e),i=Math.sin(e);return[t[0]+r*(n*d[0]+i*f[0]),t[1]+r*(n*d[1]+i*f[1]),t[2]+r*(n*d[2]+i*f[2])]},m=p(i),h=p(a);return Jf(e.makeCircleArc3d(m[0],m[1],m[2],h[0],h[1],h[2],t[0],t[1],t[2],s[0],s[1],s[2]))}return ag(e,t,n,r,i,a)}function Mh(e,t,n,r,i,a){let o=2*(e*(r-a)+n*(a-t)+i*(t-r));return Math.abs(o)<1e-12?null:[((e**2+t**2)*(r-a)+(n**2+r**2)*(a-t)+(i**2+a**2)*(t-r))/o,((e**2+t**2)*(i-n)+(n**2+r**2)*(e-i)+(i**2+a**2)*(n-e))/o]}function Nh(e,t,n,r){let i=[n[0]-t[0],n[1]-t[1],n[2]-t[2]],a=[r[0]-t[0],r[1]-t[1],r[2]-t[2]],o=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],s=Math.sqrt(o[0]**2+o[1]**2+o[2]**2);if(s<1e-12)return kh(e,t,r);let c=[o[0]/s,o[1]/s,o[2]/s],l=Math.sqrt(i[0]**2+i[1]**2+i[2]**2),u=[i[0]/l,i[1]/l,i[2]/l],d=[c[1]*u[2]-c[2]*u[1],c[2]*u[0]-c[0]*u[2],c[0]*u[1]-c[1]*u[0]],f=e=>{let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return[n*u[0]+r*u[1]+i*u[2],n*d[0]+r*d[1]+i*d[2]]},[p,m]=f(t),[h,g]=f(n),[_,v]=f(r),y=Mh(p,m,h,g,_,v);if(!y)return kh(e,t,r);let[b,x]=y,S=[t[0]+b*u[0]+x*d[0],t[1]+b*u[1]+x*d[1],t[2]+b*u[2]+x*d[2]];return Jf(e.makeCircleArc3d(t[0],t[1],t[2],r[0],r[1],r[2],S[0],S[1],S[2],c[0],c[1],c[2]))}function Ph(e,t,n,r,i,a){let o=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);if(a!==void 0){let s=Math.sqrt(a[0]**2+a[1]**2+a[2]**2);return Jf(e.makeEllipseEdgeWithRef(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i,a[0]/s,a[1]/s,a[2]/s))}return Jf(e.makeEllipseEdge(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i))}function Fh(e,t,n,r,i,a,o,s){return og(e,t,n,r,i,a,o,s)}function Ih(e,n){if(n.length<2)throw Error(`brepkit: bezier requires at least 2 points`);let r=n.length-1,i=n.length,a=[...Array(r+1).fill(0),...Array(r+1).fill(1)],o=Array(i).fill(1),s=n.flatMap(([e,t,n])=>[e,t,n]),c=t(n,0),l=t(n,i-1);return Jf(e.makeNurbsEdge(c[0],c[1],c[2],l[0],l[1],l[2],r,a,s,o))}function Lh(e,t,n,r){return Jf(e.makeTangentArc3d(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function Rh(e,t,n,r,i,a,o){let s=n/t,c=Math.max(4,Math.ceil(s*16)),l=i?.[0]??0,u=i?.[1]??0,d=i?.[2]??0,f=o?-1:1,p=[];for(let e=0;e<=c;e++){let t=e/c,i=f*2*Math.PI*s*t;p.push([l+r*Math.cos(i),u+r*Math.sin(i),d+n*t])}return bh(e,[Zh(e,p)])}function zh(e,t){let n=[];for(let r of t){let t=r;if(t.type===`edge`)n.push(t.id);else if(t.type===`wire`)for(let r of R(e.getWireEdges(t.id)))n.push(r)}if(n.length===0)throw Error(`brepkit: makeWireFromMixed requires at least one edge`);return Yf(e.makeWire(n,!1))}function Bh(e,t){let n=t.filter(Gf);if(n.length===0)throw Error(`brepkit: makeCompound requires at least one shape`);if(n.every(e=>e.type===`solid`))return Zf(e.makeCompound(n.map(e=>e.id)));let r=fp();return pp.set(r,n),Zf(r)}function Vh(e,t,n){let r=Sh(e,Math.abs(n[0]-t[0]),Math.abs(n[1]-t[1]),Math.abs(n[2]-t[2])),i=Math.min(t[0],n[0]),a=Math.min(t[1],n[1]),o=Math.min(t[2],n[2]);return i!==0||a!==0||o!==0?Dm(e,r,i,a,o):r}function Hh(e,t){let n=t;if(n.type===`solid`)return t;if(n.type===`shell`){try{return e.getSolidFaces(n.id),I(n.id)}catch{}return I(e.solidFromShell(n.id))}return I(e.solidFromShell(L(t,`shell`)))}function Uh(e,t){return xh(e,t,!1)}function Wh(e,t,n){let r=n.map(e=>L(e,`wire`));return qf(e.addHolesToFace(L(t,`face`),r))}function Gh(e,t){return qf(e.removeHolesFromFace(L(t,`face`)))}function Kh(e,t,n){return xh(e,n,!1)}function qh(e,t,n,r){let i=[];for(let[e,n,r]of t)i.push(e,n,r);let a=Math.min(3,n-1),o=Math.min(3,r-1);try{return qf(e.interpolateSurface(i,n,r,a,o))}catch{return Jh(e,t,n,r)}}function Jh(e,n,r,i){let a=[];for(let o=0;o<r-1;o++)for(let r=0;r<i-1;r++){let s=o*i+r,c=(o+1)*i+r,l=o*i+(r+1),u=(o+1)*i+(r+1),d=Yh(e,t(n,s),t(n,c),t(n,l));d&&a.push(d);let f=Yh(e,t(n,c),t(n,u),t(n,l));f&&a.push(f)}if(a.length===0)throw Error(`brepkit: no valid faces in surface grid`);return Hp(e,a,1e-6)}function Yh(e,t,n,r){let i=n[0]-t[0],a=n[1]-t[1],o=n[2]-t[2],s=r[0]-t[0],c=r[1]-t[1],l=r[2]-t[2],u=a*l-o*c,d=o*s-i*l,f=i*c-a*s;if(Math.sqrt(u*u+d*d+f*f)<1e-12)return null;try{return xh(e,bh(e,[kh(e,t,n),kh(e,n,r),kh(e,r,t)]))}catch(e){return console.warn(`brepkit: makeNonPlanarFace failed:`,e),null}}function Xh(e,t,n){let r=t.map(e=>L(e,`face`));return I(e.sewFaces(r,n))}function Zh(e,n,r){if(r?.tolerance!==void 0&&hp(`interpolate-tolerance`,`interpolatePoints() tolerance parameter is not supported; brepkit uses chord-length parameterisation.`),n.length<2)throw Error(`brepkit: need at least 2 points`);if(n.length===2)return kh(e,t(n,0),t(n,1));let i=Math.min(3,n.length-1),a=n.flatMap(([e,t,n])=>[e,t,n]);return Jf(e.interpolatePoints(a,i))}function Qh(e,t,n){let r=n?.degMax??3,i=n?.tolerance??1e-6,a=[];for(let e of t)a.push(e[0],e[1],e[2]);let o=Math.max(r+1,Math.min(t.length,Math.ceil(t.length*.7)));return Jf(e.approximateCurveLspia(a,r,o,i,100))}function $h(e,t,n,r){return{x:t,y:n,z:r}}function eg(e,t,n,r){let i=Math.sqrt(t*t+n*n+r*r);return{x:t/i,y:n/i,z:r/i}}function tg(e,t,n,r){return{x:t,y:n,z:r}}function ng(e,t,n,r,i,a,o){return{origin:[t,n,r],direction:[i,a,o]}}function rg(e,t,n,r,i,a,o,s,c,l){return{origin:[t,n,r],z:[i,a,o],x:s===void 0?void 0:[s,c,l]}}function ig(e,t,n,r,i,a,o,s,c,l){return{origin:[t,n,r],z:[i,a,o],x:s===void 0?void 0:[s,c,l]}}function ag(e,n,r,i,a,o){let s=Math.sqrt(r[0]**2+r[1]**2+r[2]**2),c=[r[0]/s,r[1]/s,r[2]/s],l=Math.abs(c[0])<.9?[1,0,0]:[0,1,0],u=[c[1]*l[2]-c[2]*l[1],c[2]*l[0]-c[0]*l[2],c[0]*l[1]-c[1]*l[0]],d=Math.sqrt(u[0]**2+u[1]**2+u[2]**2),f=[u[0]/d,u[1]/d,u[2]/d],p=[c[1]*f[2]-c[2]*f[1],c[2]*f[0]-c[0]*f[2],c[0]*f[1]-c[1]*f[0]],m=Math.ceil(Math.abs(o-a)/(Math.PI/2)),h=(o-a)/m,g=[],_=[];for(let e=0;e<=m;e++){let t=a+e*h,r=Math.cos(t),o=Math.sin(t),s=n[0]+i*(r*f[0]+o*p[0]),c=n[1]+i*(r*f[1]+o*p[1]),l=n[2]+i*(r*f[2]+o*p[2]);if(e>0){let t=a+(e-.5)*h,r=Math.cos(t),o=Math.sin(t),s=i/Math.cos(h/2),c=n[0]+s*(r*f[0]+o*p[0]),l=n[1]+s*(r*f[1]+o*p[1]),u=n[2]+s*(r*f[2]+o*p[2]);g.push(c,l,u),_.push(Math.cos(h/2))}g.push(s,c,l),_.push(1)}let v=[,,,].fill(0);for(let e=1;e<m;e++)v.push(e,e);v.push(...[,,,].fill(m));let y=t(v,v.length-1);for(let e=0;e<v.length;e++)v[e]=t(v,e)/y;let b=t(g,0),x=t(g,1),S=t(g,2),C=t(g,g.length-3),w=t(g,g.length-2),ee=t(g,g.length-1);return Jf(e.makeNurbsEdge(b,x,S,C,w,ee,2,v,g,_))}function og(e,n,r,i,a,o,s,c){let l=Math.sqrt(r[0]**2+r[1]**2+r[2]**2),u=[r[0]/l,r[1]/l,r[2]/l],d;if(c){let e=Math.sqrt(c[0]**2+c[1]**2+c[2]**2);d=[c[0]/e,c[1]/e,c[2]/e]}else{let e=Math.abs(u[0])<.9?[1,0,0]:[0,1,0],t=[u[1]*e[2]-u[2]*e[1],u[2]*e[0]-u[0]*e[2],u[0]*e[1]-u[1]*e[0]],n=Math.sqrt(t[0]**2+t[1]**2+t[2]**2);d=[t[0]/n,t[1]/n,t[2]/n]}let f=[u[1]*d[2]-u[2]*d[1],u[2]*d[0]-u[0]*d[2],u[0]*d[1]-u[1]*d[0]],p=Math.ceil(Math.abs(s-o)/(Math.PI/2)),m=(s-o)/p,h=[],g=[];for(let e=0;e<=p;e++){let t=o+e*m,r=Math.cos(t),s=Math.sin(t),c=n[0]+i*r*d[0]+a*s*f[0],l=n[1]+i*r*d[1]+a*s*f[1],u=n[2]+i*r*d[2]+a*s*f[2];if(e>0){let t=o+(e-.5)*m,r=Math.cos(t),s=Math.sin(t),c=1/Math.cos(m/2),l=n[0]+i*c*r*d[0]+a*c*s*f[0],u=n[1]+i*c*r*d[1]+a*c*s*f[1],p=n[2]+i*c*r*d[2]+a*c*s*f[2];h.push(l,u,p),g.push(Math.cos(m/2))}h.push(c,l,u),g.push(1)}let _=[,,,].fill(0);for(let e=1;e<p;e++)_.push(e,e);_.push(...[,,,].fill(p));let v=t(_,_.length-1);for(let e=0;e<_.length;e++)_[e]=t(_,e)/v;let y=t(h,0),b=t(h,1),x=t(h,2),S=t(h,h.length-3),C=t(h,h.length-2),w=t(h,h.length-1);return Jf(e.makeNurbsEdge(y,b,x,S,C,w,2,_,h,g))}function sg(e){return{makeVertex:(t,n,r)=>vh(e,t,n,r),makeEdge:(t,n,r)=>yh(e,t,n,r),makeWire:t=>bh(e,t),makeWireFromMixed:t=>zh(e,t),makeFace:(t,n)=>xh(e,t,n),makeBox:(t,n,r)=>Sh(e,t,n,r),makeRectangle:(t,n)=>Ch(e,t,n),makeCylinder:(t,n,r,i)=>wh(e,t,n,r,i),makeSphere:(t,n)=>Th(e,t,n),makeCone:(t,n,r,i,a)=>Eh(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Dh(e,t,n,r,i),makeEllipsoid:(t,n,r)=>Oh(e,t,n,r),makeLineEdge:(t,n)=>kh(e,t,n),makeCircleEdge:(t,n,r)=>Ah(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>jh(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>Nh(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>Ph(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>Fh(e,t,n,r,i,a,o,s),makeBezierEdge:t=>Ih(e,t),makeTangentArc:(t,n,r)=>Lh(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>Rh(e,t,n,r,i,a,o),makeCompound:t=>Bh(e,t),makeBoxFromCorners:(t,n)=>Vh(e,t,n),solidFromShell:t=>Hh(e,t),makeNonPlanarFace:t=>Uh(e,t),addHolesInFace:(t,n)=>Wh(e,t,n),removeHolesFromFace:t=>Gh(e,t),makeFaceOnSurface:(t,n)=>Kh(e,t,n),bsplineSurface:(t,n,r)=>qh(e,t,n,r),triangulatedSurface:(t,n,r)=>Jh(e,t,n,r),buildTriFace:(t,n,r)=>Yh(e,t,n,r),sewAndSolidify:(t,n)=>Xh(e,t,n),interpolatePoints:(t,n)=>Zh(e,t,n),approximatePoints:(t,n)=>Qh(e,t,n),createPoint3d:(t,n,r)=>$h(e,t,n,r),createDirection3d:(t,n,r)=>eg(e,t,n,r),createVector3d:(t,n,r)=>tg(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>ng(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>rg(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>ig(e,t,n,r,i,a,o,s,c,l)}}function cg(e,t,n,r){let i=$f(t,`fillet`),a=n.map(e=>L(e,`edge`));if(typeof r==`number`)return I(e.fillet(i,a,r));let o=[];for(let[e,t]of n.entries()){let n=a[e]??0,i;i=typeof r==`function`?r(t):r;let[s,c]=Array.isArray(i)?i:[i,i];o.push({edge:n,startRadius:s,endRadius:c})}return I(e.filletVariable(i,JSON.stringify(o)))}function lg(e,t,n,r){let i=$f(t,`chamfer`),a=n.map(e=>L(e,`edge`));if(typeof r==`number`)return I(e.chamfer(i,a,r));if(Array.isArray(r)){let[t,n]=r;return typeof e.chamferAsymmetric==`function`?I(e.chamferAsymmetric(i,a,t,n)):(hp(`chamfer-asymmetric`,`chamferAsymmetric not available; using averaged distance.`),I(e.chamfer(i,a,(t+n)/2)))}let o=new Map;for(let[e,t]of n.entries()){let n=r(t),i=a[e];if(i===void 0)continue;let[s,c]=Array.isArray(n)?n:[n,n],l=`${s},${c}`,u=o.get(l);u?u.ids.push(i):o.set(l,{ids:[i],d1:s,d2:c})}let s=i;for(let t of o.values())t.d1===t.d2?s=e.chamfer(s,t.ids,t.d1):typeof e.chamferAsymmetric==`function`?s=e.chamferAsymmetric(s,t.ids,t.d1,t.d2):(hp(`chamfer-callback`,`chamferAsymmetric not available; asymmetric edges use averaged distance.`),s=e.chamfer(s,t.ids,(t.d1+t.d2)/2));return I(s)}function ug(e,t,n,r,i){let a=r*Math.tan(i*Math.PI/180),o=$f(t,`chamferDistAngle`),s=n.map(e=>L(e,`edge`));return typeof e.chamferAsymmetric==`function`?I(e.chamferAsymmetric(o,s,r,a)):(hp(`chamfer-dist-angle`,`chamferAsymmetric not available; using averaged distance.`),I(e.chamfer(o,s,(r+a)/2)))}function dg(e,n){let r=R(e.getFaceVertices(n));if(r.length<1)return null;let i=0,a=0,o=0;for(let n of r){let r=e.getVertexPosition(n);i+=t(r,0),a+=t(r,1),o+=t(r,2)}let s=r.length;return{x:i/s,y:a/s,z:o/s}}function fg(e,t,n){try{let r=e.getFaceNormal(t),i=-1,a=-2;for(let t of n)try{let n=e.getFaceNormal(t),o=(r[0]??0)*(n[0]??0)+(r[1]??0)*(n[1]??0)+(r[2]??0)*(n[2]??0);o>a&&(a=o,i=t)}catch{}if(i>=0&&a>.99)return i}catch{}return null}function pg(e,t,n){try{let r=dg(e,t);if(r===null)return null;let i=-1,a=1/0;for(let t of n)try{let n=dg(e,t);if(n===null)continue;let o=Math.sqrt((r.x-n.x)**2+(r.y-n.y)**2+(r.z-n.z)**2);o<a&&(a=o,i=t)}catch{}if(i>=0&&a<.001)return i}catch{}return null}function mg(e,t,n,r){if(r.has(t))return t;let i=fg(e,t,n);if(i!==null)return i;let a=pg(e,t,n);return a===null?t:a}function hg(e,t,n,r,i){i!==void 0&&hp(`shell-tolerance`,`shell() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let a=$f(t,`shell`),o=R(e.getSolidFaces(a)),s=new Set(o),c=n.map(t=>mg(e,L(t,`face`),o,s));return I(e.shell(a,r,c))}function gg(e,t,n){let r=t;if(r.type===`face`)return I(e.thicken(r.id,n));throw Error(`brepkit: thicken() requires a face`)}function _g(e,t,n,r){r!==void 0&&hp(`offset-tolerance`,`offset() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let i=t;if(i.type===`face`)return I(e.thicken(i.id,n));let a=$f(t,`offset`);return I(e.offsetSolidV2(a,n))}function vg(e,t,n){let r=$f(t,`filletVariable`);return I(e.filletVariable(r,n))}function yg(e,t,n,r,i,a){let o=$f(t,`draft`),s=n.map(e=>L(e,`face`));return I(e.draft(o,s,r[0],r[1],r[2],i[0],i[1],i[2],a))}function bg(e,t,n){let r=$f(t,`defeature`),i=n.map(e=>L(e,`face`));return I(e.defeature(r,i))}function xg(e){switch(e){case`arc`:case`tangent`:return`arc`;case`intersection`:return`intersection`;default:return`intersection`}}function Sg(e,n,r,i){if(typeof e.offsetWire2DWithJoin==`function`)return Yf(e.offsetWire2DWithJoin(L(n,`wire`),r,xg(i)));let a=kp(e,n,`edge`);if(a.length===0)return n;let o=[];for(let n of a){let r=e.getEdgeVertices(L(n,`edge`));o.push(t(r,0),t(r,1))}if(o.length<6)return n;let s=e.offsetPolygon2d(o,r,1e-10),c=[];for(let e=0;e<s.length;e+=2)c.push(t(s,e),t(s,e+1),0);return Yf(e.makePolygonWire(c))}function Cg(e,t){if(t.type===`solid`)try{e.healSolid(L(t))}catch(e){console.warn(`brepkit: healing failed in simplify:`,e)}return t}function wg(e,t){let n=t,r=e.reverseShape(n.id);return Kf(n.type,r)}function Tg(e){return{fillet:(t,n,r)=>cg(e,t,n,r),chamfer:(t,n,r)=>lg(e,t,n,r),chamferDistAngle:(t,n,r,i)=>ug(e,t,n,r,i),shell:(t,n,r,i)=>hg(e,t,n,r,i),thicken:(t,n)=>gg(e,t,n),offset:(t,n,r)=>_g(e,t,n,r),filletVariable:(t,n)=>vg(e,t,n),draft:(t,n,r,i,a)=>yg(e,t,n,r,i,bp(n,a)),defeature:(t,n)=>bg(e,t,n),offsetWire2D:(t,n,r)=>Sg(e,t,n,r),simplify:t=>Cg(e,t),reverseShape:t=>wg(e,t)}}function Eg(e,t){let n=JSON.parse(e),r=n.evolution;if(!r||typeof r.modified!=`object`||typeof r.generated!=`object`)throw Error(`brepkit: invalid evolution JSON structure`);let i=I(n.solid),a=e=>{let n=new Map;for(let[r,i]of Object.entries(e)){let e=Number(r)%t,a=i.map(e=>e%t),o=n.get(e);o?o.push(...a):n.set(e,a)}return n},o=a(r.modified),s=a(r.generated),c=new Set;for(let e of r.deleted)c.add(e%t);return{shape:i,evolution:{modified:o,generated:s,deleted:c}}}function Dg(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function Og(e,n){try{let r=e.tessellateFace(n,1).positions;if(r.length<3)return[0,0,0];let i=0,a=0,o=0,s=r.length/3;for(let e=0;e<r.length;e+=3)i+=t(r,e),a+=t(r,e+1),o+=t(r,e+2);return[i/s,a/s,o/s]}catch{return[0,0,0]}}function kg(e,t,n){try{return{hash:n,normal:e.getFaceNormal(t),centroid:Og(e,t)}}catch{return{hash:n,normal:[0,0,0],centroid:Og(e,t)}}}var Ag=.707,jg=100,Mg=.05;function Ng(e,n){let r=-1/0,i=[];for(let a=0;a<n.length;a++){let o=t(n,a),s=(e.normal[0]??0)*(o.normal[0]??0)+(e.normal[1]??0)*(o.normal[1]??0)+(e.normal[2]??0)*(o.normal[2]??0);if(s<Ag)continue;let c=Dg(e.centroid,o.centroid);if(c>jg)continue;let l=s-c/jg;l>r&&(r=l),i.push({idx:a,score:l})}return{matches:i,bestScore:r}}function Pg(e,t){let n=1/0,r;for(let i of t){let t=Dg(e.centroid,i.centroid);t<n&&(n=t,r=i)}return r}function Fg(e,n,r,i,a,o,s,c){let l=n;if(l.type!==`solid`)return;let u=R(e.getSolidFaces(l.id)),d=Math.min(u.length,r.length),f=[];for(let n=0;n<d;n++){let i=t(u,n);f.push(kg(e,i,r[n]??i%a))}let p=i.map(t=>kg(e,t,t%a)),m=new Set;for(let e of p){let{matches:n,bestScore:r}=Ng(e,f);if(n.length>0){for(let i of n)if(i.score>=r-Mg){let n=t(f,i.idx),r=o.get(n.hash)??[];r.push(e.hash),o.set(n.hash,r),m.add(i.idx)}}else{let t=Pg(e,f);if(t){let n=s.get(t.hash)??[];n.push(e.hash),s.set(t.hash,n)}}}for(let e=0;e<f.length;e++)m.has(e)||c.add(t(f,e).hash)}function Ig(e,t,n,r,i,a,o,s){let c=new Set(s),l=new Map(a);Fg(e,t,n,r,i,a,o,s),s.clear();for(let e of c)s.add(e);for(let e of n){let t=!l.has(e)&&a.has(e)&&(a.get(e)?.length??0)>0,n=o.has(e)&&(o.get(e)?.length??0)>0;!t&&!n&&s.add(e)}}function Lg(e,n,r,i,a,o){let s=n.filter(e=>!r.has(e));s.length>0&&e.length>0&&a.set(t(e,0),s);for(let t of e)i.has(t)||o.add(t)}function Rg(e,n,r,i,a,o,s,c,l){let u=new Set(i);if(r.some(e=>u.has(e))){let t=new Set(r);for(let e of r)u.has(e)&&o.set(e,[e]);let d=i.filter(e=>!t.has(e)),f=n.filter(e=>!u.has(e%a));l&&d.length>0&&f.length>0?Ig(e,l,d,f,a,o,s,c):Lg(i,r,u,t,s,c)}else if(l)Fg(e,l,i,n,a,o,s,c);else{for(let e=0;e<i.length&&e<r.length;e++)o.set(t(i,e),[t(r,e)]);r.length>i.length&&i.length>0&&s.set(t(i,0),r.slice(i.length))}}function zg(e,n,r,i,a,o){let s=n,c=new Map,l=new Map,u=new Set;if(s.type===`solid`){let n=R(e.getSolidFaces(s.id)),d=n.map(e=>e%i);if(a)for(let e=0;e<r.length&&e<d.length;e++)c.set(t(r,e),[t(d,e)]);else Rg(e,n,d,r,i,c,l,u,o)}return{shape:n,evolution:{modified:c,generated:l,deleted:u}}}function Bg(e,t,n,r,i){for(let[a,o]of e){let s=[];for(let e of o){r.add(e);let i=t.get(e);i?s.push(...i):n.has(e)||s.push(e)}s.length>0?e.set(a,s):(e.delete(a),i?.add(a))}}function Vg(e,t){let n=new Set;Bg(t.combinedModified,e.evolution.modified,e.evolution.deleted,n,t.combinedDeleted),Bg(t.combinedGenerated,e.evolution.modified,e.evolution.deleted,n);for(let[r,i]of e.evolution.modified)t.combinedModified.has(r)||n.has(r)||t.combinedModified.set(r,[...i]);for(let[r,i]of e.evolution.generated){if(n.has(r))continue;let e=t.combinedGenerated.get(r)??[];t.combinedGenerated.set(r,[...e,...i])}for(let n of e.evolution.deleted)t.inputFaceHashSet.has(n)&&t.combinedDeleted.add(n)}function Hg(e,t,n,r,i,a){let o=R(e.getCompoundSolids(n)),s=t,c={combinedModified:new Map,combinedGenerated:new Map,combinedDeleted:new Set,inputFaceHashSet:new Set(r)};for(let e of o){let t=s;if(t.type!==`solid`)break;let n=Eg(a(t.id,e),i);s=n.shape,Vg(n,c)}return{shape:s,accum:c}}function Ug(e,t,n,r,i,a,o,s,c){let l={hasErrors:!1,hasWarnings:!1,messages:[]},u=t,d=n;if(r.length>0&&u.type===`solid`){if(d.type===`solid`)try{return{...Eg(o(u.id,d.id),i),diagnostics:l}}catch(e){if(!nh(e))throw e}if(d.type===`compound`){let{shape:n,accum:a}=Hg(e,t,d.id,r,i,o);return{shape:n,evolution:{modified:a.combinedModified,generated:a.combinedGenerated,deleted:a.combinedDeleted},diagnostics:l}}}return{...zg(e,s(t,n,a),r,i,!1,t),diagnostics:l}}function Wg(e,t,n,r,i,a,o){return zg(e,Dm(e,t,n,r,i),a,o,!0)}function Gg(e,t,n,r,i,a,o){return zg(e,Om(e,t,n*180/Math.PI,a,o),r,i,!0)}function Kg(e,t,n,r,i,a){return zg(e,km(e,t,n,r),i,a,!0)}function qg(e,t,n,r,i,a){return zg(e,Am(e,t,n,r),i,a,!0)}function Jg(e,t,n,r,i,a,o){return zg(e,jm(e,t,n,r,i),a,o,!0)}function Yg(e,t,n,r,i,a){return Ug(e,t,n,r,i,a,(t,n)=>e.fuseWithEvolution(t,n),(t,n,r)=>ah(e,t,n,r),`fuseWithHistory`)}function Xg(e,t,n,r,i,a){return Ug(e,t,n,r,i,a,(t,n)=>e.cutWithEvolution(t,n),(t,n,r)=>oh(e,t,n,r),`cutWithHistory`)}function Zg(e,t,n,r,i,a){return Ug(e,t,n,r,i,a,(t,n)=>e.intersectWithEvolution(t,n),(t,n,r)=>sh(e,t,n,r),`intersectWithHistory`)}function Qg(e,t,n,r,i,a){return zg(e,cg(e,t,n,r),i,a,!1,t)}function $g(e,t,n,r,i,a){return zg(e,lg(e,t,n,r),i,a,!1,t)}function e_(e,t,n,r,i,a,o){return zg(e,hg(e,t,n,r,o),i,a,!1,t)}function t_(e,t,n,r,i){return zg(e,gg(e,t,n),r,i,!1,t)}function n_(e,t,n,r,i,a){return zg(e,_g(e,t,n,a),r,i,!1,t)}function r_(e,t,n,r,i,a,o,s){return zg(e,yg(e,t,n,r,i,a),o,s,!1,t)}function i_(e,t,n,r,i){return zg(e,zm(e,t,n),r,i,!0)}function a_(e,t){let n=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];for(let e of t)n=lp(e.type===`translate`?rp(e.x,e.y,e.z):ap(e.angle,e.axis,e.center),n);return{handle:n,dispose:()=>{}}}function o_(e){return{translateWithHistory:(t,n,r,i,a,o)=>Wg(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>Gg(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>Kg(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>qg(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>Jg(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>Yg(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>Xg(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>Zg(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>Qg(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>$g(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>e_(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>t_(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>n_(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>r_(e,t,n,r,i,bp(n,a),o,s),applyComposedTransformWithHistory:(t,n,r,i)=>i_(e,t,n,r,i),composeTransform:t=>a_(e,t)}}function s_(e,t,n){let r=L(t),i=t,a=n.tolerance||.01,o=n.angularTolerance>0?n.angularTolerance:void 0,s;if(i.type===`solid`)s=u_(e,r,a,!!n.includeUVs,o);else if(i.type===`face`)s=h_(e,r,a,0,o);else throw Error(`brepkit: cannot mesh shape of type '${i.type}'`);return n.skipNormals&&(s.normals=new Float32Array),n.includeUVs||(s.uvs=new Float32Array),s}function c_(e,n,r,i){let a=n;if(a.type!==`solid`)return{lines:new Float32Array,edgeGroups:[]};let o=i>0?i:void 0,s=e.meshEdgesAll(a.id,r,o),c=s.positions,l=s.offsets,u=s.edgeCount,d=[];for(let e=0;e<u;e++){let n=t(l,e),r=((e+1<u?t(l,e+1):c.length)-n)/3;d.push({start:n/3,count:r,edgeHash:e})}return{lines:new Float32Array(c),edgeGroups:d}}function l_(e,t){return!1}function u_(e,t,n,r,i){try{return d_(e,t,n,r,i)}catch(r){return console.warn(`brepkit: tessellateSolidGrouped failed (solidId=${t}), falling back to per-face:`,r),m_(e,t,n,i)}}function d_(e,t,n,r,i){return typeof e.tessellateSolidGroupedBinary==`function`?f_(e,t,n,r,i,e.tessellateSolidGroupedBinary(t,n,i)):p_(e,t,n,r,i)}function f_(e,n,r,i,a,o){let s=o.positions,c=o.normals,l=o.indices,u=o.faceOffsets,d=R(e.getSolidFaces(n)),f=u.length-1;if(f!==d.length)throw Error(`faceOffsets/faceIds length mismatch: ${f} groups vs ${d.length} faces`);let p=[];for(let e=0;e<u.length-1;e++){let n=t(u,e),r=t(u,e+1)-n;r!==0&&p.push({start:n,count:r,faceHash:d[e]??0})}let m=new Float32Array;if(i){let t=s.length/3*2;try{let i=e.tessellateSolidUV(n,r,a),o=JSON.parse(i);m=o.uvs.length===t?new Float32Array(o.uvs):new Float32Array(t)}catch{m=new Float32Array(t)}}return{vertices:s,normals:c,triangles:l,uvs:m,faceGroups:p}}function p_(e,n,r,i,a){let o=e.tessellateSolidGrouped(n,r,a),s=JSON.parse(o),c=R(e.getSolidFaces(n)),l=s.faceOffsets.length-1;if(l!==c.length)throw Error(`faceOffsets/faceIds length mismatch: ${l} groups vs ${c.length} faces`);let u=[];for(let e=0;e<s.faceOffsets.length-1;e++){let n=t(s.faceOffsets,e),r=t(s.faceOffsets,e+1)-n;r!==0&&u.push({start:n,count:r,faceHash:c[e]??0})}let d=new Float32Array;if(i){let t=s.positions.length/3*2;try{let i=e.tessellateSolidUV(n,r,a),o=JSON.parse(i);d=o.uvs.length===t?new Float32Array(o.uvs):new Float32Array(t)}catch{d=new Float32Array(t)}}return{vertices:new Float32Array(s.positions),normals:new Float32Array(s.normals),triangles:new Uint32Array(s.indices),uvs:d,faceGroups:u}}function m_(e,t,n,r){let i=R(e.getSolidFaces(t)),a=[],o=[],s=[],c=[],l=[],u=0;for(let t of i)try{let i=e.tessellateFace(t,n,r),d=i.positions,f=i.normals,p=i.indices,m=d.length/3;if(m===0)continue;let h=s.length;for(let e of d)a.push(e);for(let e of f)o.push(e);for(let e of p)s.push(e+u);for(let e=0;e<m;e++)c.push(0,0);l.push({start:h,count:p.length,faceHash:t}),u+=m}catch(e){console.warn(`brepkit: face tessellation failed (faceId=${t}):`,e)}return{vertices:new Float32Array(a),normals:new Float32Array(o),triangles:new Uint32Array(s),uvs:new Float32Array(c),faceGroups:l}}function h_(e,t,n,r,i){let a=e.tessellateFace(t,n,i),o=a.positions,s=a.normals,c=a.indices,l=o.length/3,u=[];for(let e=0;e<l;e++)u.push(0,0);return{vertices:new Float32Array(o),normals:new Float32Array(s),triangles:new Uint32Array(c),uvs:new Float32Array(u),faceGroups:[{start:0,count:c.length,faceHash:r}]}}function g_(e){return{mesh:(t,n)=>s_(e,t,n),meshEdges:(t,n,r)=>c_(e,t,n,r),hasTriangulation:t=>l_(e,t),meshShape:(e,t,n)=>{}}}function __(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=ep(e,r,`exportSTEP`);for(let r of t){let t=e.exportStep(r);n.push(new TextDecoder().decode(t))}}return n.join(`
8
+ `)}function v_(e,n,r,i=De,a=Oe){let{vertices:o,triangles:s}=s_(e,I(t(ep(e,n,`exportSTL`),0)),{tolerance:i,angularTolerance:a,skipNormals:!0});return r?je(o,s):Me(o,s)}function y_(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return R(e.importStep(n)).map(I)}function b_(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return I(e.importStl(n))}function x_(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=ep(e,r,`exportIGES`);for(let r of t){let t=e.exportIges(r);n.push(new TextDecoder().decode(t))}}return n.join(`
9
+ `)}function S_(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return R(e.importIges(n)).map(I)}function C_(e,t,n){return t.length===0?``:__(e,t.map(e=>e.shape))}function w_(e,t,n){let r=$f(t,`export3MF`);return np(e.export3mf(r,n))}function T_(e,t,n){let r=$f(t,`exportGLB`);return np(e.exportGlb(r,n))}function E_(e,t,n){let r=$f(t,`exportOBJ`);return np(e.exportObj(r,n))}function D_(e,t,n){let r=$f(t,`exportPLY`);return np(e.exportPly(r,n))}function O_(e,t){return R(e.import3mf(new Uint8Array(t))).map(e=>I(e))}function k_(e,t){return I(e.importObj(new Uint8Array(t)))}function A_(e,t){return I(e.importGlb(new Uint8Array(t)))}function j_(e,t){let n=t;return n.type===`solid`?e.toBREP(n.id):(hp(`brep-non-solid`,`toBREP for non-solid shapes uses STEP format.`),__(e,[t]))}function M_(e,t){if(typeof e.fromBREP==`function`&&t.trimStart().startsWith(`{`))return I(e.fromBREP(t));let n=y_(e,t)[0];if(!n)throw Error(`brepkit: fromBREP produced no shapes`);return n}function N_(e,t){return{__brepkit_xcaf:!0,shapes:t,delete:Wf}}function P_(e,t,n){return t&&t.__brepkit_xcaf&&Array.isArray(t.shapes)?__(e,t.shapes.map(e=>e.shape)):``}function F_(e,t,n){return __(e,t.map(e=>e.shape))}function I_(e){return{exportSTEP:t=>__(e,t),exportSTL:(t,n,r,i)=>v_(e,t,n,r,i),importSTEP:t=>y_(e,t),importSTL:t=>b_(e,t),exportIGES:t=>x_(e,t),importIGES:t=>S_(e,t),exportSTEPAssembly:(t,n)=>C_(e,t,n),export3MF:(t,n)=>w_(e,t,n),exportGLB:(t,n)=>T_(e,t,n),exportOBJ:(t,n)=>E_(e,t,n),exportPLY:(t,n)=>D_(e,t,n),import3MF:t=>O_(e,t),importOBJ:t=>k_(e,t),importGLB:t=>A_(e,t),toBREP:t=>j_(e,t),fromBREP:t=>M_(e,t),createXCAFDocument:t=>N_(e,t),writeXCAFToSTEP:(t,n)=>P_(e,t,n),exportSTEPConfigured:(t,n)=>F_(e,t,n)}}function L_(e,t){return{x:e,y:t}}function R_(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`brepkit: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function z_(e,t){return{x:e,y:t}}function B_(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:Wf}}function V_(e){return e}function H_(e){return e}function U_(e,t,n,r){return te(e,t,n,r)}function W_(e,t,n,r){return ne(e,t,n,r)}function G_(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function K_(e,t,n,r,i,a,o,s,c){let l=ae(e,t,n,r,o,s,c),u=c!==!1,d=u?i:-i,f=u?a:-a;return f<d-1e-9&&(f+=2*Math.PI),{__bk2d:`trimmed`,basis:l,tStart:d,tEnd:f}}function q_(e){return oe(e)}function J_(e,t){let n=e.length,r=Math.min(3,n-1),i=[],a=[];i.push(0),a.push(r+1);let o=n-r-1;for(let e=1;e<=o;e++)i.push(e/(o+1)),a.push(1);return i.push(1),a.push(r+1),{__bk2d:`bspline`,poles:[...e],knots:i,multiplicities:a,degree:r,isPeriodic:!1}}function Y_(e,t){return S(_p(e),t)}function X_(e,t){return{point:S(_p(e),t),tangent:C(_p(e),t)}}function Z_(e){return w(_p(e))}function Q_(e){return ee(vp(e))}function $_(e,t,n){return{__bk2d:`trimmed`,basis:_p(e),tStart:t,tEnd:n}}function ev(e){let t=e;switch(t.__bk2d){case`line`:{let e=t;e.ox+=e.dx*e.len,e.oy+=e.dy*e.len,e.dx=-e.dx,e.dy=-e.dy;break}case`circle`:case`ellipse`:{let e=t;e.sense=!e.sense;break}case`trimmed`:{let e=t;[e.tStart,e.tEnd]=[e.tEnd,e.tStart];break}case`bezier`:{let e=t;e.poles=[...e.poles].reverse();break}case`bspline`:{let e=t;e.poles=[...e.poles].reverse();let n=e.knots[0],r=e.knots[e.knots.length-1];n!==void 0&&r!==void 0&&(e.knots=e.knots.map(e=>n+r-e).reverse()),Array.isArray(e.weights)&&(e.weights=[...e.weights].reverse());break}default:break}}function tv(e){return JSON.parse(JSON.stringify(e))}function nv(e,t){let n=_p(e),r=w(n),i=[];for(let e=0;e<=30;e++){let a=r.first+(r.last-r.first)*e/30,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l);u>1e-12?i.push([o-l/u*t,s+c/u*t]):i.push([o,s])}return J_(i)}function rv(e,t,n){return se(_p(e),t,n)}function iv(e,t,n,r){return ce(_p(e),t,n,r)}function av(e,t,n,r){return le(_p(e),t,n,r)}function ov(e,t,n){return ue(_p(e),t,n)}function sv(e,t,n,r,i){return de(_p(e),t,n,r,i)}function cv(e,t,n,r,i,a){return vv(e,dv(t,n,r,i,a))}function lv(e,t,n){return{m:e,tx:t,ty:n,delete:Wf}}function uv(){return lv([1,0,0,0,1,0,0,0,1],0,0)}function dv(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return uv();let s=-i/o,c=r/o,l=a-1,u=[1+l*s*s,l*s*c,0,l*c*s,1+l*c*c,0,0,0,1];return lv(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function fv(e,t){return lv([1,0,0,0,1,0,0,0,1],e,t)}function pv(e,n,r,i,a,o,s){if(r===`axis`&&o!==void 0&&s!==void 0){let r=Math.sqrt(o*o+s*s),c=o/r,l=s/r,u=[2*c*c-1,2*c*l,0,2*c*l,2*l*l-1,0,0,0,1],d=i??e,f=a??n;return lv(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return lv([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function mv(e,t,n){let r=Math.cos(e),i=Math.sin(e);return lv([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function hv(e,t,n){return lv([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function gv(e,t,n){e.tx=t,e.ty=n}function _v(e,n){let r=e.m,i=n.m,a=e=>t(r,e),o=e=>t(i,e);e.m=[a(0)*o(0)+a(1)*o(3)+a(2)*o(6),a(0)*o(1)+a(1)*o(4)+a(2)*o(7),a(0)*o(2)+a(1)*o(5)+a(2)*o(8),a(3)*o(0)+a(4)*o(3)+a(5)*o(6),a(3)*o(1)+a(4)*o(4)+a(5)*o(7),a(3)*o(2)+a(4)*o(5)+a(5)*o(8),a(6)*o(0)+a(7)*o(3)+a(8)*o(6),a(6)*o(1)+a(7)*o(4)+a(8)*o(7),a(6)*o(2)+a(7)*o(5)+a(8)*o(8)];let s=e.tx,c=e.ty,l=Number(n.tx)||0,u=Number(n.ty)||0;e.tx=a(0)*l+a(1)*u+s,e.ty=a(3)*l+a(4)*u+c}function vv(e,n){let r=_p(e),i=n.m??[1,0,0,0,1,0,0,0,1],a=Number(n.tx)||0,o=Number(n.ty)||0,s=t(i,0),c=t(i,1),l=t(i,3),u=t(i,4);if(Math.abs(s-1)<1e-12&&Math.abs(u-1)<1e-12&&Math.abs(c)<1e-12&&Math.abs(l)<1e-12)return se(r,a,o);let d=w(r),f=[];for(let e=0;e<=20;e++){let[t,n]=S(r,d.first+(d.last-d.first)*e/20);f.push([s*t+c*n+a,l*t+u*n+o])}return oe(f)}function yv(e,t,n){let r=fe(_p(e),_p(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function bv(e,t,n){let r=_p(e),i=w(r);if(r.__bk2d===`line`){let e=t-r.ox,a=n-r.oy,o=Math.max(i.first,Math.min(i.last,e*r.dx+a*r.dy)),[s,c]=S(r,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}if(r.__bk2d===`circle`){let e=Math.atan2(n-r.cy,t-r.cx),i=r.sense?e:-e;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;let[a,o]=S(r,i);return{param:i,distance:Math.sqrt((a-t)**2+(o-n)**2)}}if(!isFinite(i.first)||!isFinite(i.last))return null;let a=i.first,o=1/0,s=(i.last-i.first)/200;for(let e=0;e<=200;e++){let c=i.first+e*s,[l,u]=S(r,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}for(let e=0;e<10;e++){let[e,o]=S(r,a),[s,c]=C(r,a),l=(e-t)*s+(o-n)*c,u=s*s+c*c;if(u<1e-20)break;let d=l/u,f=Math.max(i.first,Math.min(i.last,a-d));if(Math.abs(f-a)<1e-14)break;a=f}let[c,l]=S(r,a);return{param:a,distance:Math.sqrt((c-t)**2+(l-n)**2)}}function xv(e,t,n,r,i,a){let o=_p(e),s=_p(t),c=n,l=i,u=1/0;for(let e=0;e<=50;e++){let t=n+(r-n)*e/50,[d,f]=S(o,t);for(let e=0;e<=50;e++){let n=i+(a-i)*e/50,[r,o]=S(s,n),p=(r-d)**2+(o-f)**2;p<u&&(u=p,c=t,l=n)}}let d=c,f=l;for(let c=0;c<20;c++){let[c,l]=S(s,f),u=bv(e,c,l);if(u){let e=Math.max(n,Math.min(r,u.param)),t=Math.abs(e-d)<1e-12;if(d=e,t)break}let[p,m]=S(o,d),h=bv(t,p,m);if(h){let e=Math.max(i,Math.min(a,h.param)),t=Math.abs(e-f)<1e-12;if(f=e,t)break}}let[p,m]=S(o,d),[h,g]=S(s,f);return Math.sqrt((h-p)**2+(g-m)**2)}function Sv(e,n,r,i){let a=_p(e),o=w(a),s=Math.max(3,{C0:1,C1:2,C2:3,C3:4}[r]??4),c=Math.max(100,i*10),l=[],u=1/0;for(let e=0;e<3&&u>n;e++){l=[];for(let e=0;e<=c;e++){let t=o.first+(o.last-o.first)*e/c;l.push(S(a,t))}u=0;for(let e=0;e<c;e++){let[n,r]=S(a,o.first+(o.last-o.first)*(e+.5)/c),i=t(l,e),s=t(l,e+1),d=(i[0]+s[0])/2,f=(i[1]+s[1])/2,p=Math.sqrt((n-d)**2+(r-f)**2);p>u&&(u=p)}u>n&&(c=Math.min(c*2,500))}return J_(l,{degMax:s})}function Cv(e){let n=vp(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return Cv(Sv(e,1e-6,`C2`,10));let r=w(_p(e)),i=r.first,a=r.last,o=[];for(let e of n.knots)e>i+1e-12&&e<a-1e-12&&o.push(e);let s=[i,...o,a],c=[];for(let e=0;e<s.length-1;e++){let r=t(s,e),i=t(s,e+1),a=i-r;if(a<1e-15)continue;let o=S(n,r),l=S(n,i),u=C(n,r),d=C(n,i),f=a/3,p={__bk2d:`bezier`,poles:[o,[o[0]+u[0]*f,o[1]+u[1]*f],[l[0]-d[0]*f,l[1]-d[1]*f],l]};c.push(p)}return c.length>0?c:[e]}function wv(){return Ce()}function Tv(e,t,n){we(yp(e),_p(t),n)}function Ev(e){let t=yp(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function Dv(e,t){let n=yp(e),r=yp(t);n.xMin=Math.min(n.xMin,r.xMin),n.yMin=Math.min(n.yMin,r.yMin),n.xMax=Math.max(n.xMax,r.xMax),n.yMax=Math.max(n.yMax,r.yMax)}function Ov(e,t){let n=yp(e),r=yp(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function kv(e,t,n){let r=yp(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function Av(e){let t=vp(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function jv(e){let t=vp(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function Mv(e){let t=vp(e);return t.__bk2d===`bezier`?[...t.poles]:null}function Nv(e){let t=vp(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function Pv(e){let t=vp(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function Fv(e){return xe(_p(e))}function Iv(e){return Se(e)}function Lv(e,t){let n=_p(e),r=w(n),i=[r.first,...[...t].sort((e,t)=>e-t),r.last],a=[];for(let e=0;e<i.length-1;e++)a.push({__bk2d:`trimmed`,basis:n,tStart:i[e],tEnd:i[e+1]});return a}function Rv(e,n,r,i,a){let o=_p(n),s=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],c=(e,t)=>[r[0]+e*a[0]+t*s[0],r[1]+e*a[1]+t*s[1],r[2]+e*a[2]+t*s[2]];if(o.__bk2d===`line`)return kh(e,c(o.ox,o.oy),c(o.ox+o.dx*o.len,o.oy+o.dy*o.len));if(o.__bk2d===`circle`||o.__bk2d===`trimmed`){let n=o;for(;n.__bk2d===`trimmed`;)n=n.basis;if(n.__bk2d===`circle`){let r=n,a=c(r.cx,r.cy),s=r.sense?i:[-i[0],-i[1],-i[2]],l=w(o),u;u=o.__bk2d===`trimmed`?Math.abs(o.tEnd-o.tStart):2*Math.PI;let d=u>Math.PI?4:u>Math.PI/2?2:1,f=(l.last-l.first)/d,p=[];for(let t=0;t<d;t++){let[n,r]=S(o,l.first+t*f),[i,u]=S(o,l.first+(t+1)*f);p.push(e.makeCircleArc3d(...c(n,r),...c(i,u),...a,...s))}return p.length===1?Jf(t(p,0)):Yf(e.makeWire(p,!1))}if(n.__bk2d===`ellipse`){let r=n,l=c(r.cx,r.cy),u=Math.cos(r.xDirAngle),d=Math.sin(r.xDirAngle),f=[u*a[0]+d*s[0],u*a[1]+d*s[1],u*a[2]+d*s[2]],p=w(o),m=p.last-p.first,h=m*1e-4,[g,_]=S(o,p.first),[v,y]=S(o,p.first+h),b=(g-r.cx)*(y-r.cy)-(_-r.cy)*(v-r.cx)>=0?i:[-i[0],-i[1],-i[2]],x=o.__bk2d===`trimmed`?Math.abs(o.tEnd-o.tStart):2*Math.PI,C=x>Math.PI?4:x>Math.PI/2?2:1,ee=m/C,te=[];for(let t=0;t<C;t++){let[n,i]=S(o,p.first+t*ee),[a,s]=S(o,p.first+(t+1)*ee);te.push(e.makeEllipseArc3d(...c(n,i),...c(a,s),...l,...b,...f,r.majorRadius,r.minorRadius))}return te.length===1?Jf(t(te,0)):Yf(e.makeWire(te,!1))}}if(o.__bk2d===`bezier`||o.__bk2d===`bspline`){let n=o.poles.map(([e,t])=>c(e,t));if(n.length===2)return kh(e,t(n,0),t(n,1));let r=Math.min(3,n.length-1),i=n.flatMap(([e,t,n])=>[e,t,n]);return Jf(e.interpolatePoints(i,r))}let l=w(o),u=[];for(let e=0;e<=100;e++){let[t,n]=S(o,l.first+(l.last-l.first)*e/100);u.push(c(t,n))}return Zh(e,u)}function zv(e,t,r){if(!Gf(r))throw Error(`brepkit: buildEdgeOnSurface requires a face handle as surface`);let i=L(r,`face`),a=_p(t),o=w(a),s=e.getSurfaceType(i)===`plane`?50:100,c=[];for(let t=0;t<=s;t++){let[r,l]=S(a,o.first+(o.last-o.first)*t/s);c.push(n(e.evaluateSurface(i,r,l)))}return Zh(e,c)}function Bv(e){return e}function Vv(e,n,r,i){let a=0;for(;e.length<r;){let o=[];for(let r=0;r<e.length-1;r++){let a=t(e,r),s=t(e,r+1),c=(a.t+s.t)/2,l=n(c),u=(a.uv[0]+s.uv[0])/2,d=(a.uv[1]+s.uv[1])/2;Math.sqrt((l[0]-u)**2+(l[1]-d)**2)>i&&o.push({index:r+1,t:c,uv:l})}if(o.length===0)break;let s=r-e.length;for(let n=o.length-1;n>=0&&s>0;n--){let r=t(o,n);e.splice(r.index,0,{t:r.t,uv:r.uv}),s--}if(a++,a>3)break}}function Hv(e,n,r){let i=L(n,`edge`),a=L(r,`face`),o=e.getEdgeCurveParameters(i),s=o[0]??0,c=o[1]??1,l=[];for(let e=0;e<=20;e++)l.push(s+(c-s)*e/20);let u=n=>{let r=e.evaluateEdgeCurve(i,n),o=e.projectPointOnSurface(a,t(r,0),t(r,1),t(r,2));return[t(o,0),t(o,1)]},d=l.map(e=>({t:e,uv:u(e)}));Vv(d,u,80,.05);let f=d.map(e=>e.uv);if(f.length>=2)return J_(f);let p=e.getEdgeVertices(i);if(p.length>=6){let n=e.projectPointOnSurface(a,t(p,0),t(p,1),t(p,2)),r=e.projectPointOnSurface(a,t(p,3),t(p,4),t(p,5));return te(t(n,0),t(n,1),t(r,0),t(r,1))}throw Error(`brepkit: extractCurve2dFromEdge: degenerate edge (${p.length} coords)`)}function Uv(e,t,n){return e}function Wv(e,n,r){if(n.length>=1){let r=kp(e,n[0],`edge`);if(r.length===4){let n=[],i=[];for(let a of r){let r=L(a,`edge`),o=e.getEdgeCurveParameters(r),s=t(o,0),c=t(o,1),l=[];for(let n=0;n<=10;n++){let i=s+(c-s)*n/10,a=e.evaluateEdgeCurve(r,i);l.push(t(a,0),t(a,1),t(a,2))}n.push(...l),i.push(11)}try{return qf(e.fillCoonsPatch(n,i))}catch(e){console.warn(`brepkit: Coons patch failed, falling back:`,e)}}}let i=n[0];if(!i)throw Error(`fillSurface: no wires provided`);return Uh(e,i)}function Gv(e){return{createPoint2d:(e,t)=>L_(e,t),createDirection2d:(e,t)=>R_(e,t),createVector2d:(e,t)=>z_(e,t),createAxis2d:(e,t,n,r)=>B_(e,t,n,r),wrapCurve2dHandle:e=>V_(e),createCurve2dAdaptor:e=>H_(e),makeLine2d:(e,t,n,r)=>U_(e,t,n,r),makeCircle2d:(e,t,n,r)=>W_(e,t,n,r),makeArc2dThreePoints:(e,t,n,r,i,a)=>re(e,t,n,r,i,a),makeArc2dTangent:(e,t,n,r,i,a)=>ie(e,t,n,r,i,a),makeEllipse2d:(e,t,n,r,i,a,o)=>G_(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>K_(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>q_(e),makeBSpline2d:(e,t)=>J_(e,t),evaluateCurve2d:(e,t)=>Y_(e,t),evaluateCurve2dD1:(e,t)=>X_(e,t),getCurve2dBounds:e=>Z_(e),getCurve2dType:e=>Q_(e),trimCurve2d:(e,t,n)=>$_(e,t,n),reverseCurve2d:e=>{ev(e)},copyCurve2d:e=>tv(e),offsetCurve2d:(e,t)=>nv(e,t),translateCurve2d:(e,t,n)=>rv(e,t,n),rotateCurve2d:(e,t,n,r)=>iv(e,t,n,r),scaleCurve2d:(e,t,n,r)=>av(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>ov(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>sv(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>cv(e,t,n,r,i,a),createIdentityGTrsf2d:()=>uv(),createAffinityGTrsf2d:(e,t,n,r,i)=>dv(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>fv(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>pv(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>mv(e,t,n),createScaleGTrsf2d:(e,t,n)=>hv(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{gv(e,t,n)},multiplyGTrsf2d:(e,t)=>{_v(e,t)},transformCurve2dGeneral:(e,t)=>vv(e,t),intersectCurves2d:(e,t,n)=>yv(e,t,n),projectPointOnCurve2d:(e,t,n)=>bv(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>xv(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>Sv(e,t,n,r),decomposeBSpline2dToBeziers:e=>Cv(e),createBoundingBox2d:()=>wv(),addCurveToBBox2d:(e,t,n)=>{Tv(e,t,n)},getBBox2dBounds:e=>Ev(e),mergeBBox2d:(e,t)=>{Dv(e,t)},isBBox2dOut:(e,t)=>Ov(e,t),isBBox2dOutPoint:(e,t,n)=>kv(e,t,n),getCurve2dCircleData:e=>Av(e),getCurve2dEllipseData:e=>jv(e),getCurve2dBezierPoles:e=>Mv(e),getCurve2dBezierDegree:e=>Nv(e),getCurve2dBSplineData:e=>Pv(e),serializeCurve2d:e=>Fv(e),deserializeCurve2d:e=>Iv(e),splitCurve2d:(e,t)=>Lv(e,t),liftCurve2dToPlane:(t,n,r,i)=>Rv(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>zv(e,t,n),extractSurfaceFromFace:e=>Bv(e),extractCurve2dFromEdge:(t,n)=>Hv(e,t,n),buildCurves3d:e=>{},fixWireOnFace:(e,t,n)=>Uv(e,t,n),fillSurface:(t,n)=>Wv(e,t,n)}}function Kv(e,t){let n=t;if(n.type===`solid`)return e.volume(L(t),up);if(n.type===`compound`){let n=kp(e,t,`solid`),r=0;for(let t of n)r+=e.volume(L(t),up);return r}return 0}function qv(e,t){let n=t;if(n.type===`face`)return e.faceArea(L(t),up);if(n.type===`solid`)return e.surfaceArea(L(t),up);if(n.type===`compound`){let n=kp(e,t,`face`),r=0;for(let t of n)r+=e.faceArea(L(t),up);return r}return 0}function Jv(e,t){let n=t;if(n.type===`edge`)return e.edgeLength(L(t));if(n.type===`face`)return e.facePerimeter(L(t));if(n.type===`wire`)return e.wireLength(n.id);throw Error(`brepkit: length() requires an edge, wire, or face`)}function Yv(e,n){let r=e.getEdgeVertices(n);return[(t(r,0)+t(r,3))/2,(t(r,1)+t(r,4))/2,(t(r,2)+t(r,5))/2]}function Xv(e,t){let r=t;if(r.type===`solid`)return n(e.centerOfMass(L(t),up));if(r.type===`face`){let n=Kp(e,t);return Yp(e,t,(n.uMin+n.uMax)/2,(n.vMin+n.vMax)/2)}if(r.type===`edge`)return Yv(e,r.id);if(r.type===`vertex`)return Wp(e,t);let i=kp(e,t,`vertex`);if(i.length>0){let t=0,n=0,r=0;for(let a of i){let i=Wp(e,a);t+=i[0],n+=i[1],r+=i[2]}return[t/i.length,n/i.length,r/i.length]}return[0,0,0]}function Zv(e,t){let n=t;return n.type===`edge`?Yv(e,n.id):Xv(e,t)}function Qv(e,t){let r=t;if(r.type===`solid`){let r=e.boundingBox(L(t));return{min:n(r,0),max:n(r,3)}}if(r.type===`vertex`){let n=Wp(e,t);return{min:[...n],max:[...n]}}let i=kp(e,t,`vertex`);if(i.length===0)return{min:[0,0,0],max:[0,0,0]};let a=Wp(e,i[0]),o=a[0],s=a[1],c=a[2],l=a[0],u=a[1],d=a[2];for(let t=1;t<i.length;t++){let n=Wp(e,i[t]);n[0]<o&&(o=n[0]),n[0]>l&&(l=n[0]),n[1]<s&&(s=n[1]),n[1]>u&&(u=n[1]),n[2]<c&&(c=n[2]),n[2]>d&&(d=n[2])}return{min:[o,s,c],max:[l,u,d]}}function $v(e,r,i){let a=r,o=i;if(a.type===`solid`&&o.type===`solid`){let r=e.solidToSolidDistance(a.id,o.id);return{value:t(r,0),point1:n(r,1),point2:n(r,4)}}if(a.type===`vertex`&&(o.type===`solid`||o.type===`face`||o.type===`edge`)){let r=n(e.getVertexPosition(a.id)),i=o.type===`solid`?e.pointToSolidDistance(r[0],r[1],r[2],o.id):o.type===`face`?e.pointToFaceDistance(r[0],r[1],r[2],o.id):e.pointToEdgeDistance(r[0],r[1],r[2],o.id);return{value:t(i,0),point1:r,point2:n(i,1)}}let s=r=>{if(r.type===`vertex`)return n(e.getVertexPosition(r.id));if(r.type===`solid`){let n=e.boundingBox(r.id);return[(t(n,0)+t(n,3))/2,(t(n,1)+t(n,4))/2,(t(n,2)+t(n,5))/2]}return[0,0,0]},c=s(a),l=s(o),u=l[0]-c[0],d=l[1]-c[1],f=l[2]-c[2];return{value:Math.sqrt(u*u+d*d+f*f),point1:c,point2:l}}function ey(e,r,i,a){let o=L(r,`face`),s=e.measureCurvatureAtSurface(o,i,a);if(s.length<8)throw Error(`brepkit: measureCurvatureAtSurface returned ${s.length} values, expected 8`);let c=t(s,0),l=t(s,1);return{gaussian:c*l,mean:(c+l)/2,max:Math.max(c,l),min:Math.min(c,l),maxDirection:n(s,2),minDirection:n(s,5)}}function ty(e,n){let r=e.tessellateFace(L(n,`face`),.1),i=r.positions,a=r.indices,o=0,s=0,c=0,l=0;for(let e=0;e<a.length;e+=3){let n=t(a,e)*3,r=t(a,e+1)*3,u=t(a,e+2)*3,d=t(i,n),f=t(i,n+1),p=t(i,n+2),m=t(i,r),h=t(i,r+1),g=t(i,r+2),_=t(i,u),v=t(i,u+1),y=t(i,u+2),b=(d+m+_)/3,x=(f+h+v)/3,S=(p+g+y)/3,C=m-d,w=h-f,ee=g-p,te=_-d,ne=v-f,re=y-p,ie=.5*Math.sqrt((w*re-ee*ne)**2+(ee*te-C*re)**2+(C*ne-w*te)**2);o+=b*ie,s+=x*ie,c+=S*ie,l+=ie}return l<1e-30?[0,0,0]:[o/l,s/l,c/l]}function ny(e,t){let n=n=>$v(e,t,n);return{distanceTo(e){return n(e)},dispose(){}}}function ry(e,t,n=!1){let r=t,i=r.type===`edge`||r.type===`wire`||r.type===`face`;return{volume:Kv(e,t),area:qv(e,t),length:n&&i?Jv(e,t):0,centerOfMass:Xv(e,t),boundingBox:Qv(e,t)}}function iy(e){return{volume:t=>Kv(e,t),area:t=>qv(e,t),length:t=>Jv(e,t),centerOfMass:t=>Xv(e,t),linearCenterOfMass:t=>Zv(e,t),boundingBox:t=>Qv(e,t),distance:(t,n)=>$v(e,t,n),surfaceCurvature:(t,n,r)=>ey(e,t,n,r),surfaceCenterOfMass:t=>ty(e,t),createDistanceQuery:t=>ny(e,t),measureBulk:(t,n)=>ry(e,t,n)}}function ay(e){return e.sketchNew()}function oy(e,t,n,r,i){return e.sketchAddPoint(t,n,r,i)}function sy(e,t,n){e.sketchAddConstraint(t,n)}function cy(e,t,n,r){return e.sketchSolve(t,n,r)}function ly(e,t,n,r,i){return e.sketchAddArc(t,n,r,i)}function uy(e,t){let n=e.sketchDof(t);return typeof n==`string`?n:String(n)}function dy(e){return{sketchNew:()=>ay(e),sketchAddPoint:(t,n,r,i)=>oy(e,t,n,r,i),sketchAddArc:(t,n,r,i)=>ly(e,t,n,r,i),sketchAddConstraint:(t,n)=>{sy(e,t,n)},sketchSolve:(t,n,r)=>cy(e,t,n,r),sketchDof:t=>uy(e,t)}}function fy(e,t,n,r){return I(e.extrude(L(t,`face`),n[0],n[1],n[2],r))}function py(e,t,n,r){if(n&&typeof n==`object`&&`origin`in n&&`direction`in n){let{origin:i,direction:a}=n,o=180/Math.PI*r;return o>360&&(o=360),I(e.revolve(L(t,`face`),i[0],i[1],i[2],a[0],a[1],a[2],o))}throw Error(`brepkit: revolve requires axis with origin and direction`)}function my(e,t,n,r,i){let a=180/Math.PI*i;return a>360&&(a=360),I(e.revolve(L(t,`face`),n[0],n[1],n[2],r[0],r[1],r[2],a))}function hy(e,t,n,r,i){(n!==void 0||r!==void 0||i!==void 0)&&hp(`loft-options`,`Loft options (ruled, startShape, endShape) not supported; ignored.`);let a=t.map(t=>{let n=t;return n.type===`wire`?e.makeFaceFromWire(n.id):L(t,`face`)});return I(e.loft(a))}function gy(e){switch(e){case 0:return`rmf`;case 1:return`rightCorner`;case 2:return`roundCorner`;default:return}}function _y(e,t,n,r){let i=r?.transitionMode===void 0?void 0:gy(r.transitionMode),a=t,o=a.type===`wire`?e.makeFaceFromWire(a.id):L(t,`face`);if(n.type===`wire`){let t=kp(e,n,`edge`).map(e=>L(e,`edge`));if(i&&t.length===1){let n=t[0];if(n!==void 0)return I(e.sweepWithOptions(o,n,i,[],0,`transformed`))}return i&&t.length>1&&hp(`sweep-transition-multi-edge`,`Sweep transition mode not supported for multi-edge wires; ignored.`),I(e.sweepAlongEdges(o,t))}if(i){let t=L(n,`edge`);return I(e.sweepWithOptions(o,t,i,[],0,`transformed`))}let s=Um(e,n);if(!s)throw Error(`brepkit: sweep spine must be an edge or wire`);return I(e.sweep(o,s.degree,s.knots,s.controlPoints,s.weights))}function vy(e,t,n){let r=t,i=r.type===`wire`?e.makeFaceFromWire(r.id):L(t,`face`);if(n.type===`wire`){let t=kp(e,n,`edge`).map(e=>L(e,`edge`));return I(e.sweepAlongEdges(i,t))}let a=Um(e,n);if(!a)throw Error(`brepkit: pipe spine must be an edge or wire`);return I(e.pipe(i,a.degree,a.knots,a.controlPoints,a.weights))}function yy(e,t,n,r,i,a,o){let s=L(t,`face`);return I(e.helicalSweep(s,n[0],n[1],n[2],r[0],r[1],r[2],i,a,o))}function by(e,t,n,r,i,a){let o=L(t,`face`),s=L(n,`edge`);return I(e.sweepWithOptions(o,s,r,i,a,`transformed`))}function xy(e){switch(e){case`right`:return`rightCorner`;case`round`:return`roundCorner`;case`transformed`:return`rmf`;default:return}}function Sy(e,t,n){return n?{shape:e,firstShape:t,lastShape:t}:e}function Cy(e,t,n,r){try{return I(e.sweepWithOptions(t,n,r,[],0,`transformed`))}catch(e){console.warn(`brepkit: sweepWithOptions failed, falling back to sweepSmooth/simplePipe:`,e);return}}function wy(e,t){try{if(t.type!==`wire`)return{edgeId:L(t,`edge`)};let n=kp(e,t,`edge`);if(n.length===1){let e=n[0];return e?{edgeId:L(e,`edge`)}:void 0}hp(`sweepPipeShell-transition-multi-edge`,`sweepPipeShell transition mode not supported for multi-edge wires; ignored.`);return}catch(e){console.warn(`brepkit: resolveContactModeEdge failed for unexpected spine type, falling through:`,e);return}}function Ty(e,t,n,r){let i=wy(e,n);if(i)return Cy(e,t,i.edgeId,r)}function Ey(e,t,n){let r=Um(e,n);if(!(!r||r.degree<=1))try{return I(e.sweepSmooth(t,r.degree,r.knots,r.controlPoints,r.weights))}catch(e){console.warn(`brepkit: sweepSmooth failed, falling back to simplePipe:`,e);return}}function Dy(e,t,n,r){let i=t,a=i.type===`wire`?e.makeFaceFromWire(i.id):L(t,`face`),o=!!(r&&r.shellMode),s=r?.transitionMode,c=s?xy(s):void 0;if(c){let r=Ty(e,a,n,c);if(r)return Sy(r,t,o)}return Sy(Ey(e,a,n)||vy(e,t,n),t,o)}function Oy(e,t,n){let r=t.map(t=>{let n=t;return n.type===`wire`?e.makeFaceFromWire(n.id):L(t,`face`)});try{let t={};if(n?.ruled!==void 0&&(t.ruled=n.ruled),n?.solid!==void 0&&(t.solid=n.solid),n?.tolerance!==void 0&&(t.tolerance=n.tolerance),n?.startVertex){let r=e.getVertexPosition(L(n.startVertex,`vertex`));t.startPoint=[r[0],r[1],r[2]]}if(n?.endVertex){let r=e.getVertexPosition(L(n.endVertex,`vertex`));t.endPoint=[r[0],r[1],r[2]]}return I(e.loftWithOptions(r,JSON.stringify(t)))}catch(e){console.warn(`brepkit: loftWithOptions failed, falling back to smooth/basic loft:`,e)}if(!n?.ruled)try{return I(e.loftSmooth(r))}catch(e){console.warn(`brepkit: loftSmooth failed, falling back to basic loft:`,e)}return hy(e,t)}function ky(e,t,n,r){let i={type:`extrusionLaw`,profile:t,length:n,endFactor:r,Trim(e,t,n){return i},delete:Wf};return i}function Ay(e,t,n,r,i,a,o){if(i!==null){let r=fy(e,n,Jp(e,n,0,0),i);return o?ah(e,t,r):r}return t}function jy(e){return{extrude:(t,n,r)=>fy(e,t,n,r),revolve:(t,n,r)=>py(e,t,n,r),revolveVec:(t,n,r,i)=>my(e,t,n,r,i),loft:(t,n,r,i)=>hy(e,t,n,r,i),sweep:(t,n,r)=>_y(e,t,n,r),simplePipe:(t,n)=>vy(e,t,n),helicalSweep:(t,n,r,i,a,o)=>yy(e,t,n,r,i,a,o),sweepWithOptions:(t,n,r,i,a)=>by(e,t,n,r,i,a),sweepPipeShell:(t,n,r)=>Dy(e,t,n,r),loftAdvanced:(t,n)=>Oy(e,t,n),buildExtrusionLaw:(t,n,r)=>ky(e,t,n,r),draftPrism:(t,n,r,i,a,o)=>Ay(e,t,n,r,i,a,o)}}function My(e){return{dispose:()=>{},executeBatch:t=>e.executeBatch(t),checkpoint:()=>e.checkpoint(),checkpointCount:()=>e.checkpointCount(),restoreCheckpoint:t=>{e.restore(t)},discardCheckpoint:t=>{e.discardCheckpoint(t)}}}var Ny=class{oc;kernelId=`brepkit`;capabilities=a;bk;constructor(e){this.bk=e,this.oc=e;let t=this.bk;Object.assign(this,_h(t),sg(t),jy(t),Tg(t),Rm(t),g_(t),I_(t),iy(t),Up(t),Tm(t),th(t),o_(t),dy(t),Gv(t),My(t))}};function Py(e){throw Error(`manifold: ${e} is not implemented`)}var Fy=new Set(`makeBox.makeBoxWithCorners.makeCylinder.makeSphere.makeCone.makeTorus.makeEllipsoid.makeFuse.makeCut.makeCommon.translateShape.rotateShape.scaleShape.mirrorShape.transformShape.generalTransform.generalTransformNonOrthogonal.gridPattern.extrude.revolve.revolveVec.loft.loftAdvanced.sweep.simplePipe.sweepWithOptions.sweepPipeShell.helicalSweep.draftPrism.fillet.chamfer.chamferDistAngle.shell.thicken.offset.filletVariable.draft.defeature.simplify.reverseShape.hull.hullFromPoints.sewAndSolidify.profileEdge.profileWire.profileFace`.split(`.`));function Iy(e){return Fy.has(e)}function z(e,t,n){return{op:e,params:t,inputs:n,replayable:Iy(e)&&n.every(e=>e.replayable)}}function B(e,t){return{manifold:e,node:t}}function V(e){return e.manifold}function H(e){return e.node}function Ly(e){if(e&&typeof e==`object`&&`manifold`in e&&`node`in e)return e}var Ry=[`occt`,`occt-wasm`];function zy(){for(let e of Ry)try{return U(e)}catch{}}function By(e){let t=zy();if(!t)throw new c(`manifold: ${e} requires a registered occt kernel; none is available`);return t}var Vy=new WeakMap,Hy=[0,0,0],Uy=[0,0,1];function Wy(e){return Math.hypot(e[0],e[1],e[2])}function Gy(e){let t=Wy(e);return t===0?[...Uy]:[e[0]/t,e[1]/t,e[2]/t]}function Ky(e){let[t,n,r]=Gy(e);return[0,180/Math.PI*Math.atan2(Math.hypot(t,n),r),180/Math.PI*Math.atan2(n,t)]}function qy(e){let t=e.Manifold;function n(e,t,n){let r=e;return n[0]===0&&n[1]===0&&n[2]>0||(r=r.rotate(Ky(n))),(t[0]!==0||t[1]!==0||t[2]!==0)&&(r=r.translate(t)),r}return{makeBox:(e,n,r)=>B(t.cube([e,n,r],!1),z(`makeBox`,{width:e,height:n,depth:r},[])),makeBoxFromCorners:(e,n)=>{let r=[Math.abs(n[0]-e[0]),Math.abs(n[1]-e[1]),Math.abs(n[2]-e[2])],i=[Math.min(e[0],n[0]),Math.min(e[1],n[1]),Math.min(e[2],n[2])];return B(t.cube(r,!1).translate(i),z(`makeBoxWithCorners`,{p1:e,p2:n},[]))},makeCylinder:(e,r,i=Hy,a=Uy)=>B(n(t.cylinder(r,e,e,0,!1),i,a),z(`makeCylinder`,{radius:e,height:r,center:i,direction:a},[])),makeSphere:(e,n=Hy)=>{let r=t.sphere(e,0);return(n[0]!==0||n[1]!==0||n[2]!==0)&&(r=r.translate(n)),B(r,z(`makeSphere`,{radius:e,center:n},[]))},makeCone:(e,r,i,a=Hy,o=Uy)=>B(n(t.cylinder(i,e,r,0,!1),a,o),z(`makeCone`,{radius1:e,radius2:r,height:i,center:a,direction:o},[])),makeTorus:(r,i,a=Hy,o=Uy)=>{let s=Math.max(3,e.getCircularSegments(i)),c=[];for(let e=0;e<s;e++){let t=e/s*Math.PI*2;c.push([r+i*Math.cos(t),i*Math.sin(t)])}return B(n(t.revolve([c],0),a,o),z(`makeTorus`,{majorRadius:r,minorRadius:i,center:a,direction:o},[]))},makeEllipsoid:(e,n,r)=>B(t.sphere(1,0).scale([e,n,r]),z(`makeEllipsoid`,{aLength:e,bLength:n,cLength:r},[])),makeRectangle:()=>Py(`makeRectangle`)}}function Jy(e){return e}function Yy(e,t,n){switch(n){case`cut`:case`subtract`:case`difference`:return e.subtract(t);case`intersect`:case`common`:case`intersection`:return e.intersect(t);default:return e.add(t)}}function Xy(e){let t=H(Jy(e)).params,n=t.normal,r=t.origin;if(!n||!r)throw Error(`manifold: section/split plane must carry normal+origin params`);return{normal:n,offset:n[0]*r[0]+n[1]*r[1]+n[2]*r[2]}}function Zy(e){let t=new Uint32Array(e.triVerts),n=e.vertProperties.length/3,r=new Float32Array(n*3);for(let t=0;t<n;t++)r[t*3]=e.vertProperties[t*3]??0,r[t*3+1]=e.vertProperties[t*3+1]??0,r[t*3+2]=e.vertProperties[t*3+2]??0;return{vertices:r,normals:new Float32Array,triangles:t,uvs:new Float32Array,faceGroups:[{start:0,count:t.length,faceHash:0}]}}function Qy(e){let t=e.Manifold;function n(e,t,n){let r=Jy(e),i=Jy(t);return B(V(r).add(V(i)),z(`makeFuse`,{},[H(r),H(i)]))}function r(e,t,n){let r=Jy(e),i=Jy(t);return B(V(r).subtract(V(i)),z(`makeCut`,{},[H(r),H(i)]))}function i(e,t,n){let r=Jy(e),i=Jy(t);return B(V(r).intersect(V(i)),z(`makeCommon`,{},[H(r),H(i)]))}function a(e,n){if(e.length===0)throw Error(`manifold: fuseAll requires at least one shape`);let r=e.map(Jy),[i]=r;if(i===void 0)throw Error(`manifold: fuseAll requires at least one shape`);return r.length===1?i:B(t.union(r.map(V)),z(`makeFuse`,{},r.map(H)))}function o(e,n,r){let i=Jy(e);if(n.length===0)return i;let a=n.map(Jy);return B(t.difference([V(i),...a.map(V)]),z(`makeCut`,{},[H(i),...a.map(H)]))}function s(e,t,n){let r=Jy(e),{normal:i,offset:a}=Xy(t),[o]=V(r).splitByPlane(i,a);return B(o,z(`section`,{normal:i,offset:a},[H(r),H(Jy(t))]))}function c(e,n){let r=Jy(e),[i]=n;if(i===void 0)throw Error(`manifold: split requires at least one tool`);let a=Jy(i),{normal:o,offset:s}=Xy(i),[c,l]=V(r).splitByPlane(o,s);return B(t.union([c,l]),z(`split`,{normal:o,offset:s},[H(r),H(a)]))}function l(e,t,n){let r=[],i=Jy(e),a=Jy(t);return(V(i)===void 0||V(i).isEmpty())&&r.push({operand:`base`,issue:`null-shape`,message:`Base shape is empty`}),(V(a)===void 0||V(a).isEmpty())&&r.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is empty`}),{valid:r.length===0,issues:r}}function u(n,r,i,a,o,s){let c=new e.Mesh({numProp:3,vertProperties:new Float32Array(n),triVerts:new Uint32Array(r)}),l=new e.Mesh({numProp:3,vertProperties:new Float32Array(i),triVerts:new Uint32Array(a)});return Zy(Yy(t.ofMesh(c),t.ofMesh(l),o).getMesh())}return{fuse:n,cut:r,intersect:i,section:s,fuseAll:a,cutAll:o,split:c,checkBoolean:l,meshBoolean:u}}function $y(e){return e}function eb(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function tb(e){let t=Math.hypot(e[0],e[1],e[2]);return t<1e-12?[0,0,1]:[e[0]/t,e[1]/t,e[2]/t]}function nb(e,t,n){let r=eb();return r[12]=e,r[13]=t,r[14]=n,r}function rb(e,t,n){let r=e,[i,a,o]=tb(t),s=Math.cos(r),c=Math.sin(r),l=1-s,u=l*i*i+s,d=l*i*a+c*o,f=l*i*o-c*a,p=l*i*a-c*o,m=l*a*a+s,h=l*a*o+c*i,g=l*i*o+c*a,_=l*a*o-c*i,v=l*o*o+s,y=eb();return y[0]=u,y[1]=d,y[2]=f,y[4]=p,y[5]=m,y[6]=h,y[8]=g,y[9]=_,y[10]=v,y[12]=n[0]-(u*n[0]+p*n[1]+g*n[2]),y[13]=n[1]-(d*n[0]+m*n[1]+_*n[2]),y[14]=n[2]-(f*n[0]+h*n[1]+v*n[2]),y}function ib(e,t){let n=eb();return n[0]=t,n[5]=t,n[10]=t,n[12]=e[0]*(1-t),n[13]=e[1]*(1-t),n[14]=e[2]*(1-t),n}function ab(e,t){let[n,r,i]=tb(t),a=1-2*n*n,o=1-2*r*r,s=1-2*i*i,c=-2*n*r,l=-2*n*i,u=-2*r*i,d=eb();d[0]=a,d[1]=c,d[2]=l,d[4]=c,d[5]=o,d[6]=u,d[8]=l,d[9]=u,d[10]=s;let f=e[0]*n+e[1]*r+e[2]*i;return d[12]=2*f*n,d[13]=2*f*r,d[14]=2*f*i,d}function ob(e,t){let n=eb();return n[0]=e[0],n[1]=e[3],n[2]=e[6],n[4]=e[1],n[5]=e[4],n[6]=e[7],n[8]=e[2],n[9]=e[5],n[10]=e[8],n[12]=t[0],n[13]=t[1],n[14]=t[2],n}function sb(e,t,n,r,i){return B(e.transform(t),z(n,r,[i]))}function cb(e,t,n,r){let i=$y(e);return sb(V(i),nb(t,n,r),`translateShape`,{x:t,y:n,z:r},H(i))}function lb(e,t,n=[0,0,1],r=[0,0,0]){let i=$y(e);return sb(V(i),rb(t,n,r),`rotateShape`,{angle:t,axis:n,center:r},H(i))}function ub(e,t,n){let r=$y(e);return sb(V(r),ab(t,n),`mirrorShape`,{origin:t,normal:n},H(r))}function db(e,t,n){let r=$y(e);return sb(V(r),ib(t,n),`scaleShape`,{center:t,factor:n},H(r))}function fb(e,t){if(!Array.isArray(t)||t.length!==16)throw Error(`manifold: transform expects a 16-element column-major matrix`);let n=$y(e);return sb(V(n),t,`transformShape`,{matrix:[...t]},H(n))}function pb(e,t,n,r){let i=$y(e);return sb(V(i),ob(t,n),`generalTransform`,{linear:t,translation:n,isOrthogonal:r},H(i))}function mb(e,t,n){let r=$y(e);return sb(V(r),ob(t,n),`generalTransformNonOrthogonal`,{linear:t,translation:n},H(r))}function hb(e){let t=eb();for(let n of e)t=xb(n.type===`translate`?nb(n.x,n.y,n.z):rb(n.angle*Math.PI/180,n.axis??[0,0,1],n.center??[0,0,0]),t);return{handle:t,dispose:()=>{}}}function gb(e,t,n,r){let i=[e];for(let a=1;a<r;a++){let r=n*a;i.push(cb(e,t[0]*r,t[1]*r,t[2]*r))}return i}function _b(e,t,n,r,i){let a=[e];for(let o=1;o<i;o++)a.push(lb(e,r*o*Math.PI/180,n,t));return a}function vb(e,t,n,r,i,a,o,s){let c=$y(t),l=[],u=[];for(let e=0;e<o;e++)for(let t=0;t<s;t++){let o=n[0]*i*e+r[0]*a*t,s=n[1]*i*e+r[1]*a*t,d=n[2]*i*e+r[2]*a*t;l.push(V(c).transform(nb(o,s,d))),u.push(H(c))}return B(l.length===1?l[0]:e.Manifold.union(l),z(`gridPattern`,{directionX:n,directionY:r,spacingX:i,spacingY:a,countX:o,countY:s},u))}function yb(e){return e.map(e=>{switch(e.type){case`translate`:return cb(e.shape,e.x,e.y,e.z);case`rotate`:return lb(e.shape,e.angle*Math.PI/180,e.axis,e.center);case`scale`:return db(e.shape,e.center,e.factor);case`mirror`:return ub(e.shape,e.origin,e.normal)}})}function bb(e){return{composeTransform:hb,transform:fb,locate:fb,translate:cb,rotate:lb,mirror:ub,scale:db,generalTransform:pb,generalTransformNonOrthogonal:mb,positionOnCurve:()=>Py(`positionOnCurve`),linearPattern:gb,circularPattern:_b,gridPattern:(t,n,r,i,a,o,s)=>vb(e,t,n,r,i,a,o,s),transformBatch:yb}}function xb(e,t){let n=eb();for(let r=0;r<4;r++)for(let i=0;i<4;i++){let a=0;for(let n=0;n<4;n++){let o=e[n*4+i]??0,s=t[r*4+n]??0;a+=o*s}n[r*4+i]=a}return n}var Sb=2*Math.PI,Cb=e=>Math.hypot(e[0],e[1],e[2]),wb=(e,t)=>[e[0]-t[0],e[1]-t[1],e[2]-t[2]];function Tb(e){return Cb(wb(e.p2,e.p1))}function Eb(e,t){let n=e.map(e=>[e[0],e[1],e[2]]);for(let e=1;e<n.length;e++)for(let r=0;r<n.length-e;r++){let e=n[r]??[0,0,0],i=n[r+1]??[0,0,0];n[r]=[e[0]*(1-t)+i[0]*t,e[1]*(1-t)+i[1]*t,e[2]*(1-t)+i[2]*t]}return n[0]??[0,0,0]}function Db(e){return e.k===`line`?`LINE`:e.k===`bezier`?`BEZIER`:e.k===`helix`?`BSPLINE`:Math.abs(e.rx-e.ry)<1e-9*Math.max(1,e.rx)?`CIRCLE`:`ELLIPSE`}function Ob(e){return e.k===`line`?{first:0,last:Tb(e)}:e.k===`conic`?{first:e.a0,last:e.a1}:e.k===`helix`?{first:0,last:Sb*e.turns}:{first:0,last:1}}function kb(e,t){if(e.k===`line`){let n=t/(Tb(e)||1);return[e.p1[0]+(e.p2[0]-e.p1[0])*n,e.p1[1]+(e.p2[1]-e.p1[1])*n,e.p1[2]+(e.p2[2]-e.p1[2])*n]}if(e.k===`bezier`)return Eb(e.points,t);if(e.k===`helix`){let n=Math.cos(t),r=Math.sin(t),i=e.pitch*t/Sb;return[e.center[0]+e.radius*(n*e.x[0]+r*e.y[0])+i*e.axis[0],e.center[1]+e.radius*(n*e.x[1]+r*e.y[1])+i*e.axis[1],e.center[2]+e.radius*(n*e.x[2]+r*e.y[2])+i*e.axis[2]]}let n=Math.cos(t),r=Math.sin(t);return[e.center[0]+e.rx*n*e.x[0]+e.ry*r*e.y[0],e.center[1]+e.rx*n*e.x[1]+e.ry*r*e.y[1],e.center[2]+e.rx*n*e.x[2]+e.ry*r*e.y[2]]}function Ab(e,t){let n;if(e.k===`line`)n=wb(e.p2,e.p1);else if(e.k===`bezier`){let r=Eb(e.points,Math.max(0,t-1e-4));n=wb(Eb(e.points,Math.min(1,t+1e-4)),r)}else if(e.k===`helix`){let r=Math.cos(t),i=Math.sin(t),a=e.pitch/Sb;n=[e.radius*(-i*e.x[0]+r*e.y[0])+a*e.axis[0],e.radius*(-i*e.x[1]+r*e.y[1])+a*e.axis[1],e.radius*(-i*e.x[2]+r*e.y[2])+a*e.axis[2]]}else{let r=Math.cos(t),i=Math.sin(t);n=[-e.rx*i*e.x[0]+e.ry*r*e.y[0],-e.rx*i*e.x[1]+e.ry*r*e.y[1],-e.rx*i*e.x[2]+e.ry*r*e.y[2]]}let r=Cb(n)||1;return[n[0]/r,n[1]/r,n[2]/r]}function jb(e){if(e.k===`line`)return Tb(e);if(e.k===`helix`){let t=Sb*e.radius;return e.turns*Math.sqrt(t*t+e.pitch*e.pitch)}if(e.k===`conic`){let t=Math.abs(e.a1-e.a0);if(Math.abs(e.rx-e.ry)<1e-9*Math.max(1,e.rx))return e.rx*t;if(Math.abs(t-Sb)<1e-9){let t=e.rx,n=e.ry,r=(t-n)*(t-n)/((t+n)*(t+n));return Math.PI*(t+n)*(1+3*r/(10+Math.sqrt(4-3*r)))}return Fb(t=>kb(e,t),e.a0,e.a1,256)}return Fb(t=>kb(e,t),0,1,128)}function Mb(e){return e.k===`conic`?Math.abs(Math.abs(e.a1-e.a0)-Sb)<1e-9:!1}function Nb(e){return Mb(e)}function Pb(e){return e.k===`conic`?Sb:0}function Fb(e,t,n,r){let i=0,a=e(t);for(let o=1;o<=r;o++){let s=e(t+(n-t)*o/r);i+=Cb(wb(s,a)),a=s}return i}function Ib(e){return e}function Lb(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Rb(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function zb(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function Bb(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function Vb(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Hb(e){return Math.hypot(e[0],e[1],e[2])}function Ub(e){let t=Hb(e);return t<1e-12?[0,0,1]:[e[0]/t,e[1]/t,e[2]/t]}function Wb(e){return Ub(Rb(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function Gb(e){let t=Ub(e),n=Wb(t);return{xAxis:n,yAxis:Ub(Rb(t,n))}}function Kb(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n]??[0,0],i=e[(n+1)%e.length]??[0,0];t+=r[0]*i[1]-i[0]*r[1]}return t/2}function qb(e){return Kb(e)<0?[...e].reverse():e}function Jb(e){return Kb(e)>0?[...e].reverse():e}function Yb(e){return e.node?.params}function Xb(e){let t=Ib(e),n=Yb(t),r=n?.outline??n?.polygon??n?.points;if(r&&r.length>=3){let e=n?.origin??[0,0,0],t=qb(r.map(e=>[e[0],e[1]])),i=(n?.holes)?.filter(e=>e.length>=3).map(e=>Jb(e.map(e=>[e[0],e[1]])));if(n?.xAxis&&n.yAxis)return{outline:t,holes:i,origin:e,xAxis:n.xAxis,yAxis:n.yAxis};let{xAxis:a,yAxis:o}=Gb(n?.normal??[0,0,1]);return{outline:t,holes:i,origin:e,xAxis:a,yAxis:o}}return Zb(t)}function Zb(e){let t=V(e)?.getMesh?.();if(!t)throw Error(`manifold: profile carries no recorded outline and no mesh to derive one`);let n=t.numProp,r=Math.floor(t.vertProperties.length/n),i=[],a=0;for(let e=0;e<r;e++)i.push([t.vertProperties[e*n]??0,t.vertProperties[e*n+1]??0]),a+=t.vertProperties[e*n+2]??0;a/=Math.max(1,r);let o=Qb(i);return{outline:qb(o.length>=3?o:[[-.5,-.5],[.5,-.5],[0,.5]]),origin:[0,0,a],xAxis:[1,0,0],yAxis:[0,1,0]}}function Qb(e){let t=[...e].sort((e,t)=>e[0]===t[0]?e[1]-t[1]:e[0]-t[0]);if(t.length<3)return[...t];let n=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),r=[];for(let e of t){for(;r.length>=2&&n(r[r.length-2]??e,r[r.length-1]??e,e)<=0;)r.pop();r.push(e)}let i=[];for(let e=t.length-1;e>=0;e--){let r=t[e]??[0,0];for(;i.length>=2&&n(i[i.length-2]??r,i[i.length-1]??r,r)<=0;)i.pop();i.push(r)}return r.pop(),i.pop(),[...r,...i]}function $b(e){let t=[];for(let n=1;n+1<e;n++)t.push(0,n,n+1);return t}function ex(e,t){let n=e.length;if(n<2||t<=n)return e.map(e=>[e[0],e[1]]);let r=[],i=0;for(let t=0;t<n;t++){let a=e[t]??[0,0],o=e[(t+1)%n]??[0,0],s=Math.hypot(o[0]-a[0],o[1]-a[1]);r.push(s),i+=s}if(i===0)return e.map(e=>[e[0],e[1]]);let a=t-n,o=r.map(e=>a*e/i),s=o.map(e=>Math.floor(e)),c=s.reduce((e,t)=>e+t,0),l=o.map((e,t)=>({i:t,f:e-Math.floor(e)})).sort((e,t)=>t.f-e.f);for(let e=0;c<a;e++,c++){let t=l[e%l.length]?.i??0;s[t]=(s[t]??0)+1}let u=[];for(let t=0;t<n;t++){let r=e[t]??[0,0],i=e[(t+1)%n]??[0,0];u.push([r[0],r[1]]);let a=s[t]??0;for(let e=1;e<=a;e++){let t=e/(a+1);u.push([r[0]+(i[0]-r[0])*t,r[1]+(i[1]-r[1])*t])}}return u}function tx(e,t,n=1){return e.outline.map(e=>{let r=e[0]*n,i=e[1]*n;return[t.origin[0]+t.xAxis[0]*r+t.yAxis[0]*i,t.origin[1]+t.xAxis[1]*r+t.yAxis[1]*i,t.origin[2]+t.xAxis[2]*r+t.yAxis[2]*i]})}function nx(e,t){if(t.length<2)throw Error(`manifold: skinning requires at least two rings`);let n=t[0]?.length??0;if(n<3)throw Error(`manifold: skinning requires rings of at least three points`);let r=[];for(let e of t){if(e.length!==n)throw Error(`manifold: skinning requires all rings to share a vertex count`);for(let t of e)r.push(t[0],t[1],t[2])}let i=ix(t.length,n),a=new e.Mesh({numProp:3,vertProperties:Float32Array.from(r),triVerts:Uint32Array.from(i)});return rx(e,new e.Manifold(a))}function rx(e,t){if(typeof t.volume!=`function`||t.volume()>=0)return t;let n=t.getMesh(),r=n.triVerts;for(let e=0;e+2<r.length;e+=3){let t=r[e+1]??0;r[e+1]=r[e+2]??0,r[e+2]=t}let i=new e.Mesh({numProp:n.numProp,vertProperties:n.vertProperties,triVerts:r}),a=new e.Manifold(i);return typeof t.delete==`function`&&t.delete(),a}function ix(e,t){let n=[];for(let r=0;r+1<e;r++){let e=r*t,i=(r+1)*t;for(let r=0;r<t;r++){let a=(r+1)%t;n.push(e+r,e+a,i+a),n.push(e+r,i+a,i+r)}}let r=$b(t);for(let e=0;e<r.length;e+=3)n.push(r[e]??0,r[e+2]??0,r[e+1]??0);let i=(e-1)*t,a=$b(t);for(let e=0;e<a.length;e+=3)n.push(i+(a[e]??0),i+(a[e+1]??0),i+(a[e+2]??0));return n}function ax(e,t){let n=[];if(e.length===0)return n;let r=t=>{let n=e[Math.max(0,t-1)]??e[t]??[0,0,0];return Ub(zb(e[Math.min(e.length-1,t+1)]??e[t]??[0,0,0],n))},i=r(0),a=Ub(zb(t,Vb(i,Lb(t,i))));Hb(a)<1e-9&&(a=Wb(i)),n.push({origin:e[0]??[0,0,0],xAxis:a,yAxis:Ub(Rb(i,a)),tangent:i});for(let t=1;t<e.length;t++){let o=e[t-1]??[0,0,0],s=e[t]??[0,0,0],c=zb(s,o),l=Lb(c,c),u=a;if(l>1e-18){let e=zb(a,Vb(c,2/l*Lb(c,a))),n=zb(i,Vb(c,2/l*Lb(c,i))),o=zb(r(t),n),s=Lb(o,o);u=s>1e-18?zb(e,Vb(o,2/s*Lb(o,e))):e}let d=r(t),f=Ub(zb(u,Vb(d,Lb(u,d)))),p=Ub(Rb(d,f));n.push({origin:s,xAxis:f,yAxis:p,tangent:d}),i=d,a=f}return n}var ox=24,sx=24,cx=null;function lx(e){let t=cx?cx(Math.max(Math.abs(e),1e-6)):ox;return Math.max(ox,t)}var ux=[0,0,0],dx=1e-6,fx={delete:()=>{},isEmpty:()=>!1};function px(e,t){return e[t]??ux}function mx(e,t=1){return Math.max(2,Math.ceil(Math.abs(e)/(2*Math.PI)*lx(t)))}function hx(e){return Ub(Rb(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function gx(e,t,n,r,i,a){let o=Ub(t),s=a?Ub(a):hx(o),c=Ub(Rb(o,s)),l=i-r,u=mx(l,n),d=[];for(let t=0;t<=u;t++){let i=r+l*t/u;d.push(Bb(e,Bb(Vb(s,n*Math.cos(i)),Vb(c,n*Math.sin(i)))))}return d}function _x(e,t,n){let r=zb(t,e),i=zb(n,e),a=Rb(r,i);if(Hb(a)<1e-12)return[e,t,n];let o=Ub(a),s=Lb(r,r),c=Lb(i,i),l=Lb(r,i),u=2*(s*c-l*l);if(Math.abs(u)<1e-18)return[e,t,n];let d=c*(s-l)/u,f=s*(c-l)/u,p=Bb(e,Bb(Vb(r,d),Vb(i,f))),m=Hb(zb(e,p)),h=Ub(zb(e,p)),g=Ub(Rb(o,h)),_=(e=>Math.atan2(Lb(zb(e,p),g),Lb(zb(e,p),h)))(n);return _<0&&(_+=2*Math.PI),gx(p,o,m,0,_,h)}function vx(e){let t=[];for(let n=0;n<=sx;n++){let r=n/sx,i=e.map(e=>[...e]);for(let e=1;e<i.length;e++)for(let t=0;t<i.length-e;t++){let e=px(i,t),n=px(i,t+1);i[t]=[e[0]*(1-r)+n[0]*r,e[1]*(1-r)+n[1]*r,e[2]*(1-r)+n[2]*r]}t.push(px(i,0))}return t}function yx(e){let t=0,n=0,r=0;for(let i=0;i<e.length;i++){let a=px(e,i),o=px(e,(i+1)%e.length);t+=(a[1]-o[1])*(a[2]+o[2]),n+=(a[2]-o[2])*(a[0]+o[0]),r+=(a[0]-o[0])*(a[1]+o[1])}let i=[t,n,r];return Hb(i)<1e-12?[0,0,1]:Ub(i)}function bx(e,t){return Hb(zb(e,t))<dx}function xx(e){let t=e[0];if(!t)return[];let n=[...t];for(let t=1;t<e.length;t++){let r=e[t]??[];if(r.length===0)continue;let i=px(n,n.length-1),a=bx(px(r,0),i),o=bx(px(r,r.length-1),i);!a&&o&&(r=[...r].reverse());let s=bx(px(r,0),i);for(let e=+!!s;e<r.length;e++)n.push(px(r,e))}return n.length>1&&bx(px(n,0),px(n,n.length-1))&&n.pop(),n}function Sx(e){let t=yx(e),n=px(e,0),r=e.length>1?Ub(zb(px(e,1),n)):hx(t);r=Ub(zb(r,Vb(t,Lb(r,t)))),Hb(r)<1e-9&&(r=hx(t));let i=Ub(Rb(t,r));return{outline:qb(e.map(e=>{let t=zb(e,n);return[Lb(t,r),Lb(t,i)]})),origin:n,xAxis:r,yAxis:i}}var Cx=12;function wx(e,t){let[n,r]=e.curveParameters(t),i=Cx;try{e.curveType(t)===`line`&&(i=1)}catch{}let a=[];for(let o=0;o<=i;o++)a.push(e.curvePointAtParam(t,n+(r-n)*o/i));return a}function Tx(e,t){return xx(e.iterShapes(t,`edge`).map(t=>wx(e,t)))}function Ex(e){let t=e.getCircularSegments;typeof t==`function`&&(cx=e=>t(e));function n(e,t){return B(fx,z(`profileEdge`,t?{pts:e,curve:t}:{pts:e},[]))}function r(e,t){let n=Ub(e),r=t?Ub(t):hx(n);return{x:r,y:Ub(Rb(n,r))}}function i(e,t,n){let r=zb(t,e),i=zb(n,e),a=Rb(r,i);if(Hb(a)<1e-12)return;let o=Ub(a),s=Lb(r,r),c=Lb(i,i),l=Lb(r,i),u=2*(s*c-l*l);if(Math.abs(u)<1e-18)return;let d=c*(s-l)/u,f=s*(c-l)/u,p=Bb(e,Bb(Vb(r,d),Vb(i,f))),m=Hb(zb(e,p)),h=Ub(zb(e,p)),g=Ub(Rb(o,h)),_=Math.atan2(Lb(zb(n,p),g),Lb(zb(n,p),h));return _<0&&(_+=2*Math.PI),{k:`conic`,center:p,x:h,y:g,rx:m,ry:m,a0:0,a1:_}}function a(e){let t=Ly(e);if(t){let e=t.node.params;return e?.ring??e?.pts??[]}let n=zy();return n?wx(n,e):[]}function o(e){let t=[];for(let n of e){let e=Ly(n);e&&t.push(H(e))}return t}function s(e){let t=xx(e.map(e=>a(e)));return B(fx,z(`profileWire`,{ring:t,...t.length>=3?Sx(t):void 0},o(e)))}function c(e,t){let{outline:n,origin:r,xAxis:i,yAxis:a}=Sx(e);return B(fx,z(`profileFace`,{outline:n,origin:r,xAxis:i,yAxis:a},t?[t]:[]))}function l(e){let t=Ly(e);if(t){let e=t.node.params?.ring??[];if(e.length>=3)return c(e,H(t))}let n=zy();return c(n?Tx(n,e):[],t?H(t):void 0)}function u(e,t){let n=Ly(e),r=n?.node?.params??{},i=r.origin??ux,a=r.xAxis??[1,0,0],s=r.yAxis??[0,1,0],c=e=>{let t=zb(e,i);return[Lb(t,a),Lb(t,s)]},l=[];for(let e of t){let t=Ly(e),n;if(t)n=t.node.params?.ring??[];else{let t=zy();n=t?Tx(t,e):[]}n.length>=3&&l.push(n.map(c))}let u=[...r.holes??[],...l],d=n?[H(n),...o(t)]:o(t);return B(fx,z(`profileFace`,{outline:r.outline??[],holes:u,origin:i,xAxis:a,yAxis:s},d))}function d(e,t,n,r,i){let a=Ub(t),o=i?Ub(i):hx(a),s=Ub(Rb(a,o)),c=[],l=lx(Math.max(n,r));for(let t=0;t<=l;t++){let i=2*Math.PI*t/l;c.push(Bb(e,Bb(Vb(o,n*Math.cos(i)),Vb(s,r*Math.sin(i)))))}return c}return{makeVertex:(e,t,r)=>n([[e,t,r]]),makeLineEdge:(e,t)=>n([e,t],{k:`line`,p1:e,p2:t}),makeCircleEdge:(e,t,i)=>{let{x:a,y:o}=r(t);return n(gx(e,t,i,0,2*Math.PI),{k:`conic`,center:e,x:a,y:o,rx:i,ry:i,a0:0,a1:2*Math.PI})},makeCircleArc:(e,t,i,a,o)=>{let{x:s,y:c}=r(t);return n(gx(e,t,i,a,o),{k:`conic`,center:e,x:s,y:c,rx:i,ry:i,a0:a,a1:o})},makeArcEdge:(e,t,r)=>n(_x(e,t,r),i(e,t,r)),makeEllipseEdge:(e,t,i,a,o)=>{let{x:s,y:c}=r(t,o);return n(d(e,t,i,a,o),{k:`conic`,center:e,x:s,y:c,rx:i,ry:a,a0:0,a1:2*Math.PI})},makeBezierEdge:e=>n(vx(e),{k:`bezier`,points:e.map(e=>[...e])}),makeTangentArc:(e,t,r)=>n([e,r],{k:`line`,p1:e,p2:r}),makeHelixWire:(e,t,r,i=[0,0,0],a=[0,0,1],o=!1)=>{let s=Ub(a),c=hx(s),l=Ub(Rb(s,c)),u=o?Vb(l,-1):l,d=e===0?0:t/e,f={k:`helix`,center:i,axis:s,x:c,y:u,radius:r,pitch:e,turns:d},p=Math.max(8,Math.ceil(d*ox)),m=[];for(let e=0;e<=p;e++)m.push(kb(f,2*Math.PI*d*e/p));return n(m,f)},makeWire:e=>s(e),makeWireFromMixed:e=>s(e),makeFace:l,addHolesInFace:u,makePolygonFace:e=>c(e)}}function Dx(e){let t=e.Manifold,n=Ex(e);function r(e,n){let r=e.map(e=>[e.x,e.y,e.z]);return B(t.hull(r),z(`hullFromPoints`,{points:r,tolerance:n},[]))}function i(e,n){let r=e.map(e=>V(e));return B(t.hull(r),z(`hull`,{tolerance:n},e.map(e=>H(e))))}function a(e){let n=e.map(e=>V(e)),r=n[0];if(!r)throw Error(`manifold: makeCompound requires at least one input shape`);return B(n.length===1?r:t.union(n),z(`makeCompound`,{},e.map(e=>H(e))))}function o(e,t){let n=e[0];return n||Py(`sewAndSolidify (no input faces on manifold kernel)`),B(V(n),z(`sewAndSolidify`,{tolerance:t},e.map(e=>H(e))))}return{makeVertex:(e,t,r)=>n.makeVertex(e,t,r),makeEdge:()=>Py(`makeEdge`),makeWire:e=>n.makeWire(e),makeFace:(e,t)=>n.makeFace(e,t),makeLineEdge:(e,t)=>n.makeLineEdge(e,t),makeCircleEdge:(e,t,r)=>n.makeCircleEdge(e,t,r),makeCircleArc:(e,t,r,i,a)=>n.makeCircleArc(e,t,r,i,a),makeArcEdge:(e,t,r)=>n.makeArcEdge(e,t,r),makeEllipseEdge:(e,t,r,i,a)=>n.makeEllipseEdge(e,t,r,i,a),makeEllipseArc:()=>Py(`makeEllipseArc`),makeBezierEdge:e=>n.makeBezierEdge(e),makeTangentArc:(e,t,r)=>n.makeTangentArc(e,t,r),makeHelixWire:(e,t,r,i,a,o)=>n.makeHelixWire(e,t,r,i,a,o),makeWireFromMixed:e=>n.makeWireFromMixed(e),makeCompound:a,solidFromShell:()=>Py(`solidFromShell`),hull:i,hullFromPoints:r,buildSolidFromFaces:()=>Py(`buildSolidFromFaces`),makeNonPlanarFace:()=>Py(`makeNonPlanarFace`),addHolesInFace:(e,t)=>n.addHolesInFace(e,t),removeHolesFromFace:()=>Py(`removeHolesFromFace`),makeFaceOnSurface:()=>Py(`makeFaceOnSurface`),bsplineSurface:(e,t,n)=>By(`bsplineSurface`).bsplineSurface(e,t,n),triangulatedSurface:(e,t,n)=>By(`triangulatedSurface`).triangulatedSurface(e,t,n),buildTriFace:()=>Py(`buildTriFace`),sewAndSolidify:o,createPoint3d:()=>Py(`createPoint3d`),createDirection3d:()=>Py(`createDirection3d`),createVector3d:()=>Py(`createVector3d`),createAxis1:()=>Py(`createAxis1`),createAxis2:()=>Py(`createAxis2`),createAxis3:()=>Py(`createAxis3`)}}var Ox=Math.PI/180;function kx(e){return e}function Ax(e){let t=180/Math.PI*e;return t>360?360:t}function jx(e){let t=e;if(t&&typeof t.X==`function`&&typeof t.Y==`function`&&typeof t.Z==`function`)return[t.X(),t.Y(),t.Z()]}function Mx(e){if(e&&typeof e==`object`){let t=e;if(`origin`in t&&`direction`in t)return{origin:t.origin,direction:t.direction};let n=e;if(typeof n.Location==`function`&&typeof n.Direction==`function`){let e=jx(n.Location()),t=jx(n.Direction());if(e&&t)return{origin:e,direction:t}}}}function Nx(e){return e.outline.map(e=>[e[0],e[1]])}function Px(e){return{outline:e.outline,origin:e.origin,xAxis:e.xAxis,yAxis:e.yAxis}}function Fx(e){return{origin:e.origin,xAxis:e.xAxis,yAxis:e.yAxis,tangent:Ub(Rb(e.xAxis,e.yAxis))}}function Ix(e){let t=0;for(let n of e.outline)t=Math.max(t,Math.hypot(n[0],n[1]));return t||1}function Lx(e){let t=V(e)?.getMesh?.();if(!t)return[];let n=t.numProp,r=Math.floor(t.vertProperties.length/n),i=[];for(let e=0;e<r;e++)i.push([t.vertProperties[e*n]??0,t.vertProperties[e*n+1]??0,t.vertProperties[e*n+2]??0]);return i}function Rx(e,t){let n=kx(e),r=n.node?.params,i=r?.path??r?.points;if(i&&i.length>=2)return i.map(e=>[e[0],e[1],e[2]]);let a=Lx(n);if(a.length>=2)return a;let o=[],s=Math.max(2,t);for(let e=0;e<s;e++)o.push([0,0,e/(s-1)]);return o}function zx(e){return e?.node??z(`spine`,{},[])}function Bx(e,t,n){let r=t.xAxis,i=t.yAxis,a=t.origin,o=[r[0],r[1],r[2],0,i[0],i[1],i[2],0,n[0],n[1],n[2],0,a[0],a[1],a[2],1];return e.transform(o)}function Vx(e,t,n){let r=Ub(n);return e.outline.map(n=>{let i=zb(Bb(e.origin,Bb(Vb(e.xAxis,n[0]),Vb(e.yAxis,n[1]))),t),a=i[0]*r[0]+i[1]*r[1]+i[2]*r[2];return[Hb(zb(i,Vb(r,a))),a]})}function Hx(e,t,n){let r=e,i=Ub(n);if(!(Math.abs(i[0])<1e-9&&Math.abs(i[2])<1e-9&&i[1]>0)){let e=Math.acos(Math.max(-1,Math.min(1,i[1])))*(180/Math.PI),t=Rb([0,1,0],i);Hb(t)<1e-9&&(t=[1,0,0]),t=Ub(t),r=r.rotate([t[0]*e,t[1]*e,t[2]*e])}return(t[0]!==0||t[1]!==0||t[2]!==0)&&(r=r.translate([t[0],t[1],t[2]])),r}function Ux(e,t,n,r,i){let a=Ub(t),{xAxis:o,yAxis:s}=Gb(a),c=i*2*Math.PI,l=Math.max(8,Math.ceil(Math.abs(i)*24)),u=r*i,d=[];for(let t=0;t<=l;t++){let r=t/l,i=c*r,f=Bb(Vb(o,n*Math.cos(i)),Vb(s,n*Math.sin(i)));d.push(Bb(e,Bb(f,Vb(a,u*r))))}return d}function Wx(e){if(e.length!==0)return t=>{let n=t*(e.length-1),r=Math.floor(n),i=Math.min(e.length-1,r+1),a=n-r;return(e[r]??1)*(1-a)+(e[i]??1)*a}}function Gx(e,t,n,r){let i=Xb(t),a=Ub([n[0],n[1],n[2]]),o=Hb([n[0]*r,n[1]*r,n[2]*r]),s=[Nx(i),...(i.holes??[]).map(e=>e.map(e=>[e[0],e[1]]))];return B(Bx(rx(e,e.Manifold.extrude(s,o)),i,a),z(`extrude`,{outline:i.outline,holes:i.holes,origin:i.origin,xAxis:i.xAxis,yAxis:i.yAxis,direction:[n[0],n[1],n[2]],length:r},[H(kx(t))]))}function Kx(e,t,n,r,i,a,o){let s=Xb(t),c=Ax(i),l=Vx(s,n,r);return B(Hx(e.Manifold.revolve([l],0,c),n,r),z(a,o,[H(kx(t))]))}function qx(e,t){let n=e.length;if(n===0||t.length!==n)return e;let r=0,i=1/0;for(let a=0;a<n;a++){let o=0;for(let r=0;r<n&&o<i;r++){let i=e[(r+a)%n]??[0,0,0],s=t[r]??[0,0,0],c=i[0]-s[0],l=i[1]-s[1],u=i[2]-s[2];o+=c*c+l*l+u*u}o<i&&(i=o,r=a)}if(r===0)return e;let a=[];for(let t=0;t<n;t++)a.push(e[(t+r)%n]??[0,0,0]);return a}function Jx(e,t,n,r){if(t.length<2)throw Error(`manifold: loft requires at least two profiles`);let i=t.map(Xb),a=i.reduce((e,t)=>Math.max(e,t.outline.length),0),o=i.map(e=>tx({...e,outline:ex(e.outline,a)},Fx(e)));for(let e=1;e<o.length;e++)o[e]=qx(o[e]??[],o[e-1]??[]);return B(nx(e,o),z(n,{sections:i.map(Px),...r},t.map(e=>H(kx(e)))))}function Yx(e,t,n,r,i,a,o){let s=Xb(t),c=ax(n,s.xAxis),l=c.length;return B(nx(e,c.map((e,t)=>{let n=o?o(l>1?t/(l-1):0):1;return tx(s,e,n)})),z(i,{section:Px(s),path:n.map(e=>[e[0],e[1],e[2]]),...a},[H(kx(t)),r]))}function Xx(e,t,n,r,i,a){if(r===null)return t;let o=Xb(n),s=Ub(Rb(o.xAxis,o.yAxis)),c=Math.tan(i*Ox),l={origin:Bb(o.origin,Vb(s,r)),xAxis:o.xAxis,yAxis:o.yAxis,tangent:s},u=1+c*r/Ix(o),d=nx(e,[tx(o,Fx(o),1),tx(o,l,u)]),f=z(`draftPrism`,{outline:o.outline,origin:o.origin,xAxis:o.xAxis,yAxis:o.yAxis,height:r,angleDeg:i,fuse:a},[H(kx(n))]);if(a){let e=kx(t);return B(V(e).add(d),z(`makeFuse`,{},[H(e),f]))}return B(d,f)}function Zx(e){return{revolve:(t,n,r)=>{let i=Mx(n);if(!i)throw Error(`manifold: revolve could not read the axis; pass {origin,direction}, a gp_Ax1, or use revolveVec`);let{origin:a,direction:o}=i;return Kx(e,t,a,o,r,`revolve`,{...Px(Xb(t)),axisOrigin:[a[0],a[1],a[2]],axisDirection:[o[0],o[1],o[2]],angleDeg:Ax(r)})},revolveVec:(t,n,r,i)=>Kx(e,t,n,r,i,`revolveVec`,{...Px(Xb(t)),center:[n[0],n[1],n[2]],direction:[r[0],r[1],r[2]],angleDeg:Ax(i)})}}function Qx(e){return{sweep:(t,n,r)=>{let i={};return r?.transitionMode!==void 0&&(i.transitionMode=r.transitionMode),Yx(e,t,Rx(n,16),zx(n),`sweep`,i)},simplePipe:(t,n)=>Yx(e,t,Rx(n,16),zx(n),`simplePipe`,{}),sweepWithOptions:(t,n,r,i,a)=>Yx(e,t,Rx(n,Math.max(2,a||16)),zx(n),`sweepWithOptions`,{contactMode:r,scaleValues:[...i],segments:a},Wx(i)),sweepPipeShell:(t,n,r)=>{let i={};r?.transitionMode!==void 0&&(i.transitionMode=r.transitionMode);let a=Yx(e,t,Rx(n,16),zx(n),`sweepPipeShell`,i);return r?.shellMode?{shape:a,firstShape:t,lastShape:t}:a},helicalSweep:(t,n,r,i,a,o)=>Yx(e,t,Ux(n,r,i,a,o),zx(t),`helicalSweep`,{axisOrigin:[n[0],n[1],n[2]],axisDirection:[r[0],r[1],r[2]],radius:i,pitch:a,turns:o})}}function $x(e){return{extrude:(t,n,r)=>Gx(e,t,n,r),...Zx(e),loft:(t,n)=>Jx(e,t,`loft`,{ruled:n??!1}),loftAdvanced:(t,n)=>Jx(e,t,`loftAdvanced`,{solid:n?.solid??!0,ruled:n?.ruled??!1,tolerance:n?.tolerance}),...Qx(e),draftPrism:(t,n,r,i,a,o)=>Xx(e,t,n,i,a,o),buildExtrusionLaw:(e,t,n)=>({type:`extrusionLaw`,profile:e,length:t,endFactor:n}),loftBatch:()=>Py(`loftBatch`),extrudeBatch:t=>t.map(t=>Gx(e,t.face,t.direction,t.length))}}var eS=16;function tS(e){return typeof e?.translate==`function`?e.translate([0,0,0]):e}function nS(e,t,n){if(!(n>0))return tS(t);let r=aS(e,n);return r===void 0||typeof t?.minkowskiDifference!=`function`||typeof t?.minkowskiSum!=`function`?tS(t):t.minkowskiDifference(r).minkowskiSum(r)}function rS(e,t,n){if(n===0)return tS(t);let r=aS(e,Math.abs(n));return r===void 0?tS(t):n>0?typeof t?.minkowskiSum==`function`?t.minkowskiSum(r):tS(t):typeof t?.minkowskiDifference==`function`?t.minkowskiDifference(r):tS(t)}function iS(e,t,n,r){if(n===0)return tS(t);if(r)return rS(e,t,Math.abs(n));let i=rS(e,t,-Math.abs(n));return typeof t?.subtract==`function`?t.subtract(i):tS(t)}function aS(e,t){let n=e?.Manifold;if(typeof n?.sphere==`function`)return n.sphere(t,eS)}function oS(e){return e}function sS(e){let t=e;if(t!=null){if(typeof t.index==`number`)return t.index;if(typeof t.id==`number`)return t.id}}function cS(e){let{min:t,max:n}=e;if(!(t===void 0||n===void 0||t.length<3||n.length<3))return[((t[0]??0)+(n[0]??0))/2,((t[1]??0)+(n[1]??0))/2,((t[2]??0)+(n[2]??0))/2]}function lS(e){let t=e;if(t?.box!==void 0)return cS(t.box);let n=(e?.manifold)?.boundingBox?.();return n===void 0?void 0:cS(n)}function uS(e){let t=e.length;if(t===0)return{kind:`all`,count:t};let n=[];for(let t of e){let e=lS(t);if(e===void 0){n.length=0;break}n.push(e)}if(n.length===t)return{kind:`witness`,count:t,points:n};let r=[];for(let t of e){let e=sS(t);if(e===void 0){r.length=0;break}r.push(e)}return r.length===t?{kind:`index`,count:t,indices:r}:{kind:`all`,count:t}}function dS(e){return typeof e==`function`&&Py(`fillet (per-edge radius callback)`),e}function fS(e){return typeof e==`number`?e:e[0]}function pS(e){let t=e.match(/[-+]?\d*\.?\d+/);return t?Number(t[0]):0}function mS(e,t,n,r,i){let a=oS(n),o=dS(i),s=uS(r);return B(nS(e,V(a),fS(o)),z(t,{radius:o,selection:s},[H(a)]))}function hS(e,t,n,r,i){let a=oS(t),o=uS(n);return B(nS(e,V(a),r),z(`chamferDistAngle`,{distance:r,angleDeg:i,selection:o},[H(a)]))}function gS(e,t,n){let r=t.node;if(r?.op!==`extrude`)return;let i=r.params??{},a=i.outline,o=i.origin,s=i.direction,c=i.length;if(!a||a.length<3||!o||!s||typeof c!=`number`)return;let l=Math.abs(n);try{let n=new e.CrossSection([a.map(e=>[e[0],e[1]])]).offset(-l);if(typeof n.isEmpty==`function`&&n.isEmpty())return;let r=e.Manifold.extrude(n,c),i=Math.hypot(s[0],s[1],s[2])||1,u=Math.abs(s[0])<1e-9&&Math.abs(s[1])<1e-9&&s[2]>0,d=r;if(!u){let e=Math.atan2(Math.hypot(s[0],s[1]),s[2])*(180/Math.PI),t=Math.atan2(s[1],s[0])*(180/Math.PI);d=d.rotate([0,e,t])}return d=d.translate([o[0]+s[0]/i*l,o[1]+s[1]/i*l,o[2]+s[2]/i*l]),rx(e,V(t).subtract(d))}catch{return}}function _S(e,t,n,r,i){let a=oS(t),o=uS(n);return B(gS(e,a,r)??iS(e,V(a),r,!1),z(`shell`,i===void 0?{thickness:r,selection:o}:{thickness:r,selection:o,tolerance:i},[H(a)]))}function vS(e,t,n){let r=oS(t);return B(iS(e,V(r),n,!0),z(`thicken`,{thickness:n},[H(r)]))}function yS(e,t,n,r){let i=oS(t);return B(rS(e,V(i),n),z(`offset`,r===void 0?{distance:n}:{distance:n,tolerance:r},[H(i)]))}function bS(e,t,n){let r=oS(t);return B(nS(e,V(r),pS(n)),z(`filletVariable`,{spec:n},[H(r)]))}function xS(e,t,n,r,i){typeof i==`function`&&Py(`draft (per-face angle callback)`);let a=oS(e),o=uS(t);return B(tS(V(a)),z(`draft`,{pullDirection:n,neutralPlane:r,angleDeg:i,selection:o},[H(a)]))}function SS(e,t){let n=oS(e),r=uS(t);return B(tS(V(n)),z(`defeature`,{selection:r},[H(n)]))}function CS(e){let t=oS(e),n=V(t);return B(typeof n?.simplify==`function`?n.simplify():tS(n),z(`simplify`,{},[H(t)]))}function wS(e){let t=oS(e),n=V(t);return B(typeof n?.mirror==`function`?n.mirror([1,0,0]):tS(n),z(`reverseShape`,{},[H(t)]))}function TS(e,t){let n=oS(t.shape),r=uS(t.edges.map(e=>e.edge)),i=t.edges.map(e=>e.r2===void 0?e.radius:[e.radius,e.r2]),a=t.edges[0]?.radius??0;return B(nS(e,V(n),a),z(`fillet`,{radii:i,selection:r},[H(n)]))}function ES(e){return{fillet:(t,n,r)=>mS(e,`fillet`,t,n,r),chamfer:(t,n,r)=>mS(e,`chamfer`,t,n,r),chamferDistAngle:(t,n,r,i)=>hS(e,t,n,r,i),shell:(t,n,r,i)=>_S(e,t,n,r,i),thicken:(t,n)=>vS(e,t,n),offset:(t,n,r)=>yS(e,t,n,r),filletVariable:(t,n)=>bS(e,t,n),draft:(e,t,n,r,i)=>xS(e,t,n,r,i),defeature:(e,t)=>SS(e,t),offsetWire2D:()=>Py(`offsetWire2D`),simplify:e=>CS(e),reverseShape:e=>wS(e),shellBatch:t=>t.map(t=>_S(e,t.shape,t.faces,t.thickness,t.tolerance)),filletBatch:t=>t.map(t=>TS(e,t))}}function DS(e){return V(e).getMesh()}function OS(e){let t=e.numProp,n=e.vertProperties.length/t;if(t===3)return new Float32Array(e.vertProperties);let r=new Float32Array(n*3);for(let i=0;i<n;i++)r[i*3]=e.vertProperties[i*t]??0,r[i*3+1]=e.vertProperties[i*t+1]??0,r[i*3+2]=e.vertProperties[i*t+2]??0;return r}function kS(e,t){let n=new Float32Array(e.length);for(let r=0;r<t.length;r+=3){let i=(t[r]??0)*3,a=(t[r+1]??0)*3,o=(t[r+2]??0)*3,s=e[i]??0,c=e[i+1]??0,l=e[i+2]??0,u=(e[a]??0)-s,d=(e[a+1]??0)-c,f=(e[a+2]??0)-l,p=(e[o]??0)-s,m=(e[o+1]??0)-c,h=(e[o+2]??0)-l,g=d*h-f*m,_=f*p-u*h,v=u*m-d*p;for(let e of[i,a,o])n[e]=(n[e]??0)+g,n[e+1]=(n[e+1]??0)+_,n[e+2]=(n[e+2]??0)+v}for(let e=0;e<n.length;e+=3){let t=n[e]??0,r=n[e+1]??0,i=n[e+2]??0,a=Math.sqrt(t*t+r*r+i*i);a>1e-12&&(n[e]=t/a,n[e+1]=r/a,n[e+2]=i/a)}return n}function AS(e){let t=e.triVerts.length/3,{runIndex:n,runOriginalID:r}=e;if(!n||!r||n.length<2)return[{start:0,count:e.triVerts.length,faceHash:0}];let i=[];for(let e=0;e+1<n.length;e++){let a=n[e]??0,o=(n[e+1]??t*3)-a;o!==0&&i.push({start:a,count:o,faceHash:r[e]??0})}return i}function jS(e,t){let n=DS(e),r=OS(n),i=new Uint32Array(n.triVerts);return{vertices:r,normals:t.skipNormals?new Float32Array:kS(r,i),triangles:i,uvs:t.includeUVs?new Float32Array(r.length/3*2):new Float32Array,faceGroups:AS(n)}}function MS(e,t,n){let r=DS(e),i=OS(r),a=r.triVerts,o=[],s=[],c=new Set,l=i.length/3,u=e=>{o.push(i[e*3]??0,i[e*3+1]??0,i[e*3+2]??0)};for(let e=0;e<a.length;e+=3){let t=a[e]??0,n=a[e+1]??0,r=a[e+2]??0;for(let[e,i]of[[t,n],[n,r],[r,t]]){let t=Math.min(e,i),n=Math.max(e,i),r=t*l+n;if(c.has(r))continue;c.add(r);let a=o.length/3;u(t),u(n),s.push({start:a,count:2,edgeHash:r})}}return{lines:new Float32Array(o),edgeGroups:s}}function NS(e){return!0}function PS(e){return{mesh:(e,t)=>jS(e,t),meshEdges:(e,t,n)=>MS(e,t,n),hasTriangulation:e=>NS(e),meshShape:(e,t,n)=>{}}}function FS(e,t=[0,0,0]){return Array.isArray(e)&&e.length>=3?[Number(e[0]),Number(e[1]),Number(e[2])]:[...t]}function IS(e,t=0){return typeof e==`number`?e:t}function LS(e,t=``){return typeof e==`string`?e:t}function RS(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function zS(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function BS(e,t,n,r){return RS(t,RS(zS(n,e[0]),zS(r,e[1])))}function VS(e,t){let n=t.outline??[];if(n.length<3)throw Error(`manifold replay: profile outline needs at least three points`);let r=FS(t.origin),i=FS(t.xAxis,[1,0,0]),a=FS(t.yAxis,[0,1,0]),o=n.map(e=>BS(e,r,i,a)),s=[];for(let t=0;t<o.length;t++){let n=o[t]??r,i=o[(t+1)%o.length]??r;s.push(e.makeLineEdge([n[0],n[1],n[2]],[i[0],i[1],i[2]]))}let c=e.makeWire(s),l=e.makeFace(c,!0);for(let t of s)e.dispose(t);return l}function HS(e,t){return VS(e,t)}function US(e,t){let n=e.boundingBox(t);return[(n.min[0]+n.max[0])/2,(n.min[1]+n.max[1])/2,(n.min[2]+n.max[2])/2]}function WS(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function GS(e,t,n,r){let i=e.iterShapes(t,r);if(!n||n.kind===`all`)return i;if(n.kind===`witness`){let t=n.points??[],r=i.map(t=>US(e,t)),a=[],o=new Set;for(let e of t){let t=-1,n=1/0;for(let a=0;a<i.length;a++){if(o.has(a))continue;let i=WS(e,r[a]??[0,0,0]);i<n&&(n=i,t=a)}let s=i[t];t>=0&&s!==void 0&&(o.add(t),a.push(s))}return a}if(n.kind===`index`){let e=n.indices??[],t=[];for(let n of e){let e=i[n];e!==void 0&&t.push(e)}return t}let a=n.regions??[],o=e=>a.some(t=>e[0]>=t.min[0]&&e[0]<=t.max[0]&&e[1]>=t.min[1]&&e[1]<=t.max[1]&&e[2]>=t.min[2]&&e[2]<=t.max[2]);return i.filter(t=>o(US(e,t)))}function KS(e){let t=e.selection;return t===void 0?void 0:t}function qS(e){let t=e[0];if(t===void 0)throw Error(`manifold replay: op requires an input shape`);return t}function JS(e,t,n){return e.createAxis1(t[0],t[1],t[2],n[0],n[1],n[2])}function YS(e,t){return(n,r)=>{let i=VS(n,r),a=FS(r[e]),o=FS(r[t],[0,0,1]),s=IS(r.angleDeg,360);return n.revolve(i,JS(n,a,o),Math.PI/180*s)}}var XS={makeBox:(e,t)=>e.makeBox(IS(t.width),IS(t.height),IS(t.depth)),makeBoxWithCorners:(e,t)=>e.makeBoxFromCorners(FS(t.p1),FS(t.p2)),makeCylinder:(e,t)=>e.makeCylinder(IS(t.radius),IS(t.height),FS(t.center),FS(t.direction,[0,0,1])),makeSphere:(e,t)=>e.makeSphere(IS(t.radius),FS(t.center)),makeCone:(e,t)=>e.makeCone(IS(t.radius1),IS(t.radius2),IS(t.height),FS(t.center),FS(t.direction,[0,0,1])),makeTorus:(e,t)=>e.makeTorus(IS(t.majorRadius),IS(t.minorRadius),FS(t.center),FS(t.direction,[0,0,1])),makeEllipsoid:(e,t)=>e.makeEllipsoid(IS(t.aLength),IS(t.bLength),IS(t.cLength)),makeFuse:(e,t,n)=>{if(n.length<2)return qS(n);let r=qS(n);for(let t of n.slice(1))r=e.fuse(r,t);return r},makeCut:(e,t,n)=>{let r=qS(n);return e.cutAll(r,n.slice(1))},makeCommon:(e,t,n)=>{let r=qS(n);for(let t of n.slice(1))r=e.intersect(r,t);return r},translateShape:(e,t,n)=>e.translate(qS(n),IS(t.x),IS(t.y),IS(t.z)),rotateShape:(e,t,n)=>e.rotate(qS(n),IS(t.angle),FS(t.axis,[0,0,1]),FS(t.center)),scaleShape:(e,t,n)=>e.scale(qS(n),FS(t.center),IS(t.factor,1)),mirrorShape:(e,t,n)=>e.mirror(qS(n),FS(t.origin),FS(t.normal,[1,0,0])),transformShape:(e,t,n)=>e.transform(qS(n),t.matrix),generalTransform:(e,t,n)=>e.generalTransform(qS(n),t.linear,FS(t.translation),!!t.isOrthogonal),generalTransformNonOrthogonal:(e,t,n)=>e.generalTransformNonOrthogonal(qS(n),t.linear,FS(t.translation)),gridPattern:(e,t,n)=>{if(typeof e.gridPattern!=`function`)throw Error(`manifold replay: target kernel lacks gridPattern`);return e.gridPattern(qS(n),FS(t.directionX),FS(t.directionY),IS(t.spacingX),IS(t.spacingY),IS(t.countX,1),IS(t.countY,1))},profileEdge:(e,t)=>{let n=t.pts??[],r=n[0]??[0,0,0],i=n.length>1?n[n.length-1]??r:[r[0]+.001,r[1],r[2]];return e.makeLineEdge([r[0],r[1],r[2]],[i[0],i[1],i[2]])},profileWire:(e,t)=>{let n=t.ring??[],r=[];for(let t=0;t<n.length;t++){let i=n[t]??[0,0,0],a=n[(t+1)%n.length]??i;r.push(e.makeLineEdge([i[0],i[1],i[2]],[a[0],a[1],a[2]]))}let i=e.makeWire(r);for(let t of r)e.dispose(t);return i},profileFace:(e,t)=>VS(e,t),extrude:(e,t)=>{let n=VS(e,t);return e.extrude(n,FS(t.direction,[0,0,1]),IS(t.length,1))},revolve:YS(`axisOrigin`,`axisDirection`),revolveVec:YS(`center`,`direction`),loft:(e,t)=>{let n=(t.sections??[]).map(t=>ZS(e,t));return e.loft(n,!!t.ruled)},loftAdvanced:(e,t)=>{let n=(t.sections??[]).map(t=>ZS(e,t)),r={solid:t.solid!==!1,ruled:!!t.ruled};return typeof t.tolerance==`number`&&(r.tolerance=t.tolerance),e.loftAdvanced(n,r)},sweep:(e,t)=>e.sweep(QS(e,t),$S(e,t)),simplePipe:(e,t)=>e.simplePipe(QS(e,t),$S(e,t)),sweepWithOptions:(e,t)=>e.sweepWithOptions(QS(e,t),$S(e,t),LS(t.contactMode),t.scaleValues??[],IS(t.segments,0)),sweepPipeShell:(e,t)=>{let n=e.sweepPipeShell(QS(e,t),$S(e,t));return eC(n)?n.shape:n},helicalSweep:(e,t)=>e.helicalSweep(QS(e,t),FS(t.axisOrigin),FS(t.axisDirection,[0,0,1]),IS(t.radius),IS(t.pitch),IS(t.turns,1)),draftPrism:(e,t)=>{let n=VS(e,t);return e.draftPrism(n,n,n,IS(t.height),IS(t.angleDeg),!!t.fuse)},fillet:(e,t,n)=>{let r=qS(n),i=GS(e,r,KS(t),`edge`),a=t.radii,o=t.radius;if(a&&a.length>1){let t=new Map;for(let e=0;e<i.length;e++){let n=i[e],r=a[e]??a[a.length-1];n!==void 0&&r!==void 0&&t.set(n,r)}return e.fillet(r,i,e=>t.get(e)??0)}let s=a?.[0]??o;return e.fillet(r,i,s??0)},chamfer:(e,t,n)=>{let r=qS(n),i=GS(e,r,KS(t),`edge`);return e.chamfer(r,i,t.radius)},chamferDistAngle:(e,t,n)=>{let r=qS(n),i=GS(e,r,KS(t),`edge`);return e.chamferDistAngle(r,i,IS(t.distance),IS(t.angleDeg))},shell:(e,t,n)=>{let r=qS(n),i=GS(e,r,KS(t),`face`);return typeof t.tolerance==`number`?e.shell(r,i,IS(t.thickness),t.tolerance):e.shell(r,i,IS(t.thickness))},thicken:(e,t,n)=>e.thicken(qS(n),IS(t.thickness)),offset:(e,t,n)=>typeof t.tolerance==`number`?e.offset(qS(n),IS(t.distance),t.tolerance):e.offset(qS(n),IS(t.distance)),filletVariable:(e,t,n)=>e.filletVariable(qS(n),LS(t.spec)),draft:(e,t,n)=>{let r=qS(n),i=GS(e,r,KS(t),`face`);return e.draft(r,i,FS(t.pullDirection,[0,0,1]),FS(t.neutralPlane),IS(t.angleDeg))},defeature:(e,t,n)=>{let r=qS(n),i=GS(e,r,KS(t),`face`);return e.defeature(r,i)},simplify:(e,t,n)=>e.simplify(qS(n)),reverseShape:(e,t,n)=>e.reverseShape(qS(n)),hull:(e,t,n)=>e.hull([...n],IS(t.tolerance)),hullFromPoints:(e,t)=>{let n=t.points??[];return e.hullFromPoints(n.map(e=>({x:e[0],y:e[1],z:e[2]})),IS(t.tolerance))},sewAndSolidify:(e,t,n)=>e.sewAndSolidify([...n],IS(t.tolerance))};function ZS(e,t){let n=HS(e,t);return e.iterShapes(n,`wire`)[0]??n}function QS(e,t){let n=t.section;return n?HS(e,n):VS(e,t)}function $S(e,t){let n=t.path??[];if(n.length<2)throw Error(`manifold replay: sweep spine needs at least two path points`);let r=[];for(let t=0;t+1<n.length;t++){let i=n[t]??[0,0,0],a=n[t+1]??[0,0,0];r.push(e.makeLineEdge([i[0],i[1],i[2]],[a[0],a[1],a[2]]))}let i=e.makeWire(r);for(let t of r)e.dispose(t);return i}function eC(e){return typeof e==`object`&&!!e&&`shape`in e&&`firstShape`in e&&`lastShape`in e}function tC(e,t,n,r){let i=n.get(e);if(i!==void 0)return i;if(!e.replayable)throw Error(`manifold replay: op '${e.op}' is not replayable (raw-mesh origin or unsupported)`);let a=XS[e.op];if(!a)throw Error(`manifold replay: no replay handler for op '${e.op}'`);let o=e.inputs.map(e=>tC(e,t,n,r)),s=a(t,e.params,o);return n.set(e,s),r.add(s),s}function nC(e,t,n=new Map){let r=new Set,i=tC(e,t,n,r);for(let e of r)e!==i&&t.dispose(e);return i}function rC(e){return V(e)}function iC(e){let t=e?.node?.params;if(!t)return;let n=t.pts??t.ring;if(n&&n.length)return n;let r=t.outline;if(r&&r.length){let e=t.origin??[0,0,0],n=t.xAxis??[1,0,0],i=t.yAxis??[0,1,0];return r.map(t=>[e[0]+n[0]*t[0]+i[0]*t[1],e[1]+n[1]*t[0]+i[1]*t[1],e[2]+n[2]*t[0]+i[2]*t[1]])}}function aC(e){let t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let r of e)for(let e=0;e<3;e++){let i=r[e]??0;i<(t[e]??1/0)&&(t[e]=i),i>(n[e]??-1/0)&&(n[e]=i)}return{min:t,max:n}}function oC(e){let t=e;if(t&&t.__manifoldSub&&t.box)return t.box;let n=iC(e);return n?aC(n):rC(e).boundingBox()}function sC(e){return rC(e)?.getMesh?.()}function cC(e,t){let n=t*e.numProp;return[e.vertProperties[n]??0,e.vertProperties[n+1]??0,e.vertProperties[n+2]??0]}function lC(e,t){let n=t*3;return[e.triVerts[n]??0,e.triVerts[n+1]??0,e.triVerts[n+2]??0]}function uC(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function dC(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function fC(e){let t=oC(e);return[(t.min[0]+t.max[0])/2,(t.min[1]+t.max[1])/2,(t.min[2]+t.max[2])/2]}function pC(e){let t=Math.floor(e.vertProperties.length/e.numProp);if(t===0)return[0,0,0];let n=[0,0,0];for(let r=0;r<t;r++){let t=cC(e,r);n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}return[n[0]/t,n[1]/t,n[2]/t]}function mC(e){let t=sC(e);if(!t)return fC(e);let n=Math.floor(t.triVerts.length/3),r=0,i=[0,0,0];for(let e=0;e<n;e++){let[n,a,o]=lC(t,e),s=cC(t,n),c=cC(t,a),l=cC(t,o),u=dC(s,uC(c,l))/6;r+=u,i[0]+=(s[0]+c[0]+l[0])/4*u,i[1]+=(s[1]+c[1]+l[1])/4*u,i[2]+=(s[2]+c[2]+l[2])/4*u}return Math.abs(r)<1e-12?pC(t):[i[0]/r,i[1]/r,i[2]/r]}function hC(e){let t=sC(e);if(!t)return fC(e);let n=Math.floor(t.triVerts.length/3),r=0,i=[0,0,0];for(let e=0;e<n;e++){let[n,a,o]=lC(t,e),s=cC(t,n),c=cC(t,a),l=cC(t,o),u=uC([c[0]-s[0],c[1]-s[1],c[2]-s[2]],[l[0]-s[0],l[1]-s[1],l[2]-s[2]]),d=Math.hypot(u[0],u[1],u[2])/2;r+=d,i[0]+=(s[0]+c[0]+l[0])/3*d,i[1]+=(s[1]+c[1]+l[1])/3*d,i[2]+=(s[2]+c[2]+l[2])/3*d}return r<1e-12?pC(t):[i[0]/r,i[1]/r,i[2]/r]}function gC(e){return rC(e).volume()}function _C(e){let t=e;return t&&t.__nativeFace&&typeof t.area==`number`?t.area:rC(e).surfaceArea()}function vC(e){let t=e;if(t&&t.__manifoldSub&&t.box)return{min:[...t.box.min],max:[...t.box.max]};let n=oC(e);return{min:[...n.min],max:[...n.max]}}function yC(e){return mC(e)}function bC(e,t){let n=(e,t,n,r)=>{if(t<n)return[t,n];if(r<e)return[e,r];let i=(Math.max(e,n)+Math.min(t,r))/2;return[i,i]},[r,i]=n(e.min[0],e.max[0],t.min[0],t.max[0]),[a,o]=n(e.min[1],e.max[1],t.min[1],t.max[1]),[s,c]=n(e.min[2],e.max[2],t.min[2],t.max[2]),l=i-r,u=o-a,d=c-s;return{value:Math.sqrt(l*l+u*u+d*d),point1:[r,a,s],point2:[i,o,c]}}function xC(e,t){return bC(oC(e),oC(t))}function SC(e,t=!1){return{volume:gC(e),area:_C(e),length:0,centerOfMass:yC(e),boundingBox:vC(e)}}function CC(e,t,n){let r=zy();if(!r)throw new c(`manifold: surfaceCurvature requires a registered occt kernel; none is available`);let i=Ly(e);if(!i)return r.surfaceCurvature(e,t,n);if(!i.node.replayable)throw Error(`manifold: surfaceCurvature unsupported; shape originates from a non-replayable op (raw mesh import or mesh boolean)`);let a=Vy.get(i.node)??(()=>{let e=nC(i.node,r);return Vy.set(i.node,e),e})();return r.surfaceCurvature(a,t,n)}function wC(e){return{volume:e=>gC(e),area:e=>_C(e),length:e=>{let t=e;if(t&&t.__nativeEdge&&typeof t.length==`number`)return t.length;let n=Ly(e)?.node;return n?.op===`profileEdge`&&n.params?.curve?jb(n.params.curve):Py(`length`)},centerOfMass:e=>yC(e),linearCenterOfMass:e=>yC(e),boundingBox:e=>vC(e),distance:(e,t)=>xC(e,t),surfaceCurvature:(e,t,n)=>CC(e,t,n),surfaceCenterOfMass:e=>hC(e),measureBulk:(e,t)=>SC(e,t),createDistanceQuery:e=>({distanceTo:t=>xC(e,t),dispose:()=>{}})}}function TC(e,t){let{runIndex:n,runOriginalID:r}=e;if(!n||!r)return 0;let i=t*3;for(let e=0;e<r.length;e++){let t=n[e]??0,a=n[e+1]??2**53-1;if(i>=t&&i<a)return r[e]??0}return 0}function EC(e){let t=e,n=t.triVerts,r=t.vertProperties,i=t.numProp||3,a=t.faceID,o=n.length/3,s=e=>{let t=e*i;return[r[t]??0,r[t+1]??0,r[t+2]??0]},c=new Map;for(let e=0;e<o;e++){let t=a?a[e]??e:e,n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let[e,r]of c){let i=0,a=0,o=0,c=0,u=0,d=0,f=0,p=1/0,m=1/0,h=1/0,g=-1/0,_=-1/0,v=-1/0,y=new Float32Array(r.length*9),b=0;for(let e of r){let t=s(n[e*3]??0),r=s(n[e*3+1]??0),l=s(n[e*3+2]??0),x=r[0]-t[0],S=r[1]-t[1],C=r[2]-t[2],w=l[0]-t[0],ee=l[1]-t[1],te=l[2]-t[2],ne=S*te-C*ee,re=C*w-x*te,ie=x*ee-S*w;i+=ne,a+=re,o+=ie;let ae=.5*Math.hypot(ne,re,ie);f+=ae;let oe=(t[0]+r[0]+l[0])/3,se=(t[1]+r[1]+l[1])/3,ce=(t[2]+r[2]+l[2])/3;c+=ae*oe,u+=ae*se,d+=ae*ce;for(let e of[t,r,l])e[0]<p&&(p=e[0]),e[1]<m&&(m=e[1]),e[2]<h&&(h=e[2]),e[0]>g&&(g=e[0]),e[1]>_&&(_=e[1]),e[2]>v&&(v=e[2]),y[b++]=e[0],y[b++]=e[1],y[b++]=e[2]}let x=Math.hypot(i,a,o)||1,S=[i/x,a/x,o/x],C=f>0?[c/f,u/f,d/f]:[0,0,0];l.push({__nativeFace:!0,faceId:e,originId:TC(t,r[0]??0),normal:S,center:C,area:f,min:[p,m,h],max:[g,_,v],tris:y})}return l}function DC(e){return!!e&&typeof e==`object`&&e.__nativeFace===!0}var OC=Math.cos(45*Math.PI/180),kC=(e,t)=>e<t?e*1e9+t:t*1e9+e,AC=(e,t)=>e<t?`${e},${t}`:`${t},${e}`;function jC(e){let t=e,n=t.triVerts,r=t.vertProperties,i=t.numProp||3,a=t.faceID,o=n.length/3;if(!a)return[];let s=e=>{let t=e*i;return[r[t]??0,r[t+1]??0,r[t+2]??0]},c=e=>{let t=s(n[e*3]??0),r=s(n[e*3+1]??0),i=s(n[e*3+2]??0),a=r[0]-t[0],o=r[1]-t[1],c=r[2]-t[2],l=i[0]-t[0],u=i[1]-t[1],d=i[2]-t[2],f=o*d-c*u,p=c*l-a*d,m=a*u-o*l,h=Math.hypot(f,p,m)||1;return[f/h,p/h,m/h]},l=new Map;for(let e=0;e<o;e++){let t=n[e*3]??0,r=n[e*3+1]??0,i=n[e*3+2]??0,o=a[e]??e,s=c(e);for(let[e,n]of[[t,r],[r,i],[i,t]]){let t=kC(e,n),r=l.get(t);r||(r={v:[e,n],faces:[],nrm:[]},l.set(t,r)),r.faces.push(o),r.nrm.push(s)}}let u=new Map;for(let{v:e,faces:t,nrm:n}of l.values()){if(t.length!==2)continue;let[r,i]=t;if(r===i)continue;let[a,o]=n;if(a[0]*o[0]+a[1]*o[1]+a[2]*o[2]>OC)continue;let s=AC(r,i),c=u.get(s);c||(c={faces:r<i?[r,i]:[i,r],segs:[]},u.set(s,c)),c.segs.push(e)}let d=[];for(let{faces:e,segs:t}of u.values())for(let n of MC(t))d.push(NC(e,n,s));return d}function MC(e){let t=new Map,n=new Set,r=(e,n)=>{let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)};e.forEach(([e,t],n)=>{r(e,n),r(t,n)});let i=(t,n)=>{let r=e[t]??[n,n];return r[0]===n?r[1]:r[0]},a=[];for(let r=0;r<e.length;r++){if(n.has(r))continue;n.add(r);let o=e[r]??[0,0],s=[o[0],o[1]];for(let r=0;r<e.length;r++){let e=s[s.length-1]??0,r=(t.get(e)??[]).find(e=>!n.has(e));if(r===void 0)break;n.add(r),s.push(i(r,e))}for(let r=0;r<e.length;r++){let e=s[0]??0,r=(t.get(e)??[]).find(e=>!n.has(e));if(r===void 0)break;n.add(r),s.unshift(i(r,e))}a.push(s)}return a}function NC(e,t,n){let r=t.length,i=new Float32Array(r*3),a=new Float32Array(r),o=1/0,s=1/0,c=1/0,l=-1/0,u=-1/0,d=-1/0,f=0,p=null;for(let e=0;e<r;e++){let r=n(t[e]??0);i[e*3]=r[0],i[e*3+1]=r[1],i[e*3+2]=r[2],p&&(f+=Math.hypot(r[0]-p[0],r[1]-p[1],r[2]-p[2])),a[e]=f,p=r,r[0]<o&&(o=r[0]),r[1]<s&&(s=r[1]),r[2]<c&&(c=r[2]),r[0]>l&&(l=r[0]),r[1]>u&&(u=r[1]),r[2]>d&&(d=r[2])}return{__nativeEdge:!0,faces:e,pts:i,arc:a,length:f,min:[o,s,c],max:[l,u,d],curveType:PC(i)?`LINE`:`CIRCLE`}}function PC(e){let t=e.length/3;if(t<=2)return!0;let n=e[0]??0,r=e[1]??0,i=e[2]??0,a=e[(t-1)*3]??0,o=e[(t-1)*3+1]??0,s=e[(t-1)*3+2]??0,c=a-n,l=o-r,u=s-i,d=Math.hypot(c,l,u)||1;c/=d,l/=d,u/=d;for(let a=1;a<t-1;a++){let t=(e[a*3]??0)-n,o=(e[a*3+1]??0)-r,s=(e[a*3+2]??0)-i,f=t*c+o*l+s*u,p=t-f*c,m=o-f*l,h=s-f*u;if(Math.hypot(p,m,h)>1e-6*Math.max(1,d))return!1}return!0}function FC(e){let t=e,n=t.triVerts,r=t.vertProperties,i=t.numProp||3,a=t.faceID;if(!a)return[];let o=n.length/3,s=new Map;for(let e=0;e<o;e++){let t=a[e]??e;for(let r=0;r<3;r++){let i=n[e*3+r]??0,a=s.get(i);a||(a=new Set,s.set(i,a)),a.add(t)}}let c=[];for(let[e,t]of s){if(t.size<3)continue;let n=e*i;c.push({__nativeVertex:!0,point:[r[n]??0,r[n+1]??0,r[n+2]??0]})}return c}function IC(e){return!!e&&typeof e==`object`&&e.__nativeVertex===!0}function LC(e){return!!e&&typeof e==`object`&&e.__nativeEdge===!0}function RC(e,t){let{pts:n,arc:r}=e,i=r.length;if(i===0)return[0,0,0];if(t<=0)return[n[0]??0,n[1]??0,n[2]??0];if(t>=e.length)return[n[(i-1)*3]??0,n[(i-1)*3+1]??0,n[(i-1)*3+2]??0];let a=1;for(;a<i&&(r[a]??0)<t;)a++;let o=r[a-1]??0,s=r[a]??o,c=s>o?(t-o)/(s-o):0,l=(a-1)*3,u=a*3;return[(n[l]??0)+((n[u]??0)-(n[l]??0))*c,(n[l+1]??0)+((n[u+1]??0)-(n[l+1]??0))*c,(n[l+2]??0)+((n[u+2]??0)-(n[l+2]??0))*c]}function zC(e,t){let{pts:n,arc:r}=e,i=r.length;if(i<2)return[1,0,0];let a=1;for(;a<i-1&&(r[a]??0)<t;)a++;let o=(a-1)*3,s=a*3,c=(n[s]??0)-(n[o]??0),l=(n[s+1]??0)-(n[o+1]??0),u=(n[s+2]??0)-(n[o+2]??0),d=Math.hypot(c,l,u)||1;return[c/d,l/d,u/d]}function BC(e,t){let n=Ly(e);if(!n)throw Error(`manifold: ${t} requires a manifold shape handle`);if(!n.node.replayable)throw Error(`manifold: ${t} unsupported; shape originates from a non-replayable op (raw mesh import or mesh boolean)`);let r=By(t),i=Vy.get(n.node);if(i!==void 0)return{occt:r,brep:i};let a=nC(n.node,r);return Vy.set(n.node,a),{occt:r,brep:a}}function VC(e){if(Ly(e))return`solid`;let{occt:t,brep:n}=BC(e,`shapeType`);return t.shapeType(n)}function HC(e,t){let n=Ly(e),r=Ly(t);return!n||!r?!1:n.manifold===r.manifold}function UC(e,t){if(!Ly(e))return 0;let{occt:n,brep:r}=BC(e,`hashCode`);return n.hashCode(r,t)}function WC(e){let t=Ly(e);return t?!V(t):!0}function GC(e,t){let n=Ly(e);if(!n)return[];if(t===`solid`)return[e];if(t===`vertex`){let e=V(n);return e&&typeof e.getMesh==`function`?FC(e.getMesh()).map((e,t)=>({...e,__manifoldSub:!0,index:t,box:{min:e.point,max:e.point},parent:n.node,subType:`vertex`})):[]}if(t!==`edge`&&t!==`face`)return[];if(t===`face`){let e=V(n);if(e&&typeof e.getMesh==`function`)return EC(e.getMesh()).map((e,t)=>({...e,__manifoldSub:!0,index:t,box:{min:e.min,max:e.max},parent:n.node,subType:`face`}))}if(t===`edge`){let e=V(n);if(e&&typeof e.getMesh==`function`)return jC(e.getMesh()).map((e,t)=>({...e,__manifoldSub:!0,index:t,box:{min:e.min,max:e.max},parent:n.node,subType:`edge`}))}if(!n.node.replayable)return[];let r=zy();if(!r)return[];let i=Vy.get(n.node)??(()=>{let e=nC(n.node,r);return Vy.set(n.node,e),e})();return r.iterShapes(i,t).map((e,i)=>({__manifoldSub:!0,index:i,box:r.boundingBox(e),occt:e,parent:n.node,subType:t}))}function KC(e){let{occt:t,brep:n}=BC(e,`edgeToFaceMap`);return t.edgeToFaceMap(n)}function qC(e,t){let{occt:n,brep:r}=BC(e,`adjacentFaces`);return n.adjacentFaces(r,t)}function JC(e){return{iterShapes:GC,iterShapeList:(e,t)=>{By(`iterShapeList`).iterShapeList(e,t)},shapeType:VC,isSame:HC,isEqual:HC,downcast:e=>e,copyShape:e=>e,hashCode:UC,isNull:WC,shapeOrientation:e=>`forward`,edgeToFaceMap:KC,sharedEdges:(e,t)=>By(`sharedEdges`).sharedEdges(e,t),adjacentFaces:qC,sew:()=>{throw Error(`manifold: sew is unsupported on the mesh kernel; use a B-rep kernel`)}}}function YC(e){return V(e).getMesh()}function XC(e){return e.numProp&&e.numProp>=3?e.numProp:3}function ZC(e){return Math.floor(e.vertProperties.length/XC(e))}function QC(e,t){let n=t*XC(e);return[e.vertProperties[n]??0,e.vertProperties[n+1]??0,e.vertProperties[n+2]??0]}function $C(e,t){let n=t*3;return[e.triVerts[n]??0,e.triVerts[n+1]??0,e.triVerts[n+2]??0]}function ew(e,t,n){let r=t[0]-e[0],i=t[1]-e[1],a=t[2]-e[2],o=n[0]-e[0],s=n[1]-e[1],c=n[2]-e[2],l=i*c-a*s,u=a*o-r*c,d=r*s-i*o,f=Math.hypot(l,u,d)||1;return[l/f,u/f,d/f]}function tw(e,t){let n=YC(e),r=Math.floor(n.triVerts.length/3);if(t){let e=new ArrayBuffer(84+r*50),t=new DataView(e);t.setUint32(80,r,!0);let i=84;for(let e=0;e<r;e++){let[r,a,o]=$C(n,e),s=QC(n,r),c=QC(n,a),l=QC(n,o),u=ew(s,c,l);t.setFloat32(i,u[0],!0),t.setFloat32(i+4,u[1],!0),t.setFloat32(i+8,u[2],!0),i+=12;for(let e of[s,c,l])t.setFloat32(i,e[0],!0),t.setFloat32(i+4,e[1],!0),t.setFloat32(i+8,e[2],!0),i+=12;t.setUint16(i,0,!0),i+=2}return e}let i=[`solid manifold`];for(let e=0;e<r;e++){let[t,r,a]=$C(n,e),o=QC(n,t),s=QC(n,r),c=QC(n,a),l=ew(o,s,c);i.push(` facet normal ${l[0]} ${l[1]} ${l[2]}`),i.push(` outer loop`);for(let e of[o,s,c])i.push(` vertex ${e[0]} ${e[1]} ${e[2]}`);i.push(` endloop`),i.push(` endfacet`)}return i.push(`endsolid manifold`),i.join(`
10
+ `)}function nw(e){let t=YC(e),n=ZC(t),r=Math.floor(t.triVerts.length/3),i=[`# exported by brepjs manifold kernel`];for(let e=0;e<n;e++){let n=QC(t,e);i.push(`v ${n[0]} ${n[1]} ${n[2]}`)}for(let e=0;e<r;e++){let[n,r,a]=$C(t,e);i.push(`f ${n+1} ${r+1} ${a+1}`)}return new TextEncoder().encode(i.join(`
11
+ `)).buffer}function rw(e){let t=YC(e),n=ZC(t),r=Math.floor(t.triVerts.length/3),i=`ply\nformat binary_little_endian 1.0\nelement vertex ${n}\nproperty float x\nproperty float y\nproperty float z\nelement face ${r}\nproperty list uchar uint vertex_indices\nend_header\n`,a=new TextEncoder().encode(i),o=new ArrayBuffer(n*12+r*13),s=new DataView(o),c=0;for(let e=0;e<n;e++){let n=QC(t,e);s.setFloat32(c,n[0],!0),s.setFloat32(c+4,n[1],!0),s.setFloat32(c+8,n[2],!0),c+=12}for(let e=0;e<r;e++){let[n,r,i]=$C(t,e);s.setUint8(c,3),c+=1,s.setUint32(c,n,!0),s.setUint32(c+4,r,!0),s.setUint32(c+8,i,!0),c+=12}let l=new Uint8Array(a.length+o.byteLength);return l.set(a,0),l.set(new Uint8Array(o),a.length),l.buffer}function iw(e,t,n=`importMesh`){let r=new e.Mesh({numProp:3,vertProperties:t.vertProperties,triVerts:t.triVerts});return B(new e.Manifold(r),z(n,{},[]))}function aw(e,t){let n=new TextDecoder().decode(new Uint8Array(t)),r=[],i=[];for(let e of n.split(`
12
+ `)){let t=e.trim();if(t.startsWith(`v `)){let e=t.slice(2).trim().split(/\s+/);r.push(Number(e[0]),Number(e[1]),Number(e[2]))}else if(t.startsWith(`f `)){let e=t.slice(2).trim().split(/\s+/).map(e=>{let t=e.split(`/`)[0]??``,n=Number(t);return n>0?n-1:r.length/3+n});for(let t=1;t+1<e.length;t++)i.push(e[0]??0,e[t]??0,e[t+1]??0)}}return iw(e,{vertProperties:Float32Array.from(r),triVerts:Uint32Array.from(i)})}function ow(e,t){let n=new Uint8Array(t),r=new TextDecoder().decode(n.subarray(0,Math.min(n.length,80))).trimStart().toLowerCase().startsWith(`solid`)&&lw(n),i=[];if(r){let e=new TextDecoder().decode(n).match(/vertex\s+(\S+)\s+(\S+)\s+(\S+)/g)??[];for(let t of e){let e=t.trim().split(/\s+/);i.push(Number(e[1]),Number(e[2]),Number(e[3]))}}else{let e=new DataView(t),n=e.getUint32(80,!0),r=84;for(let t=0;t<n;t++){r+=12;for(let t=0;t<3;t++)i.push(e.getFloat32(r,!0),e.getFloat32(r+4,!0),e.getFloat32(r+8,!0)),r+=12;r+=2}}let a=cw(i);return iw(e,{vertProperties:Float32Array.from(a.vertices),triVerts:Uint32Array.from(a.indices)})}var sw=1e6;function cw(e){let t=[],n=[],r=new Map;for(let i=0;i+2<e.length;i+=3){let a=e[i]??0,o=e[i+1]??0,s=e[i+2]??0,c=`${Math.round(a*sw)},${Math.round(o*sw)},${Math.round(s*sw)}`,l=r.get(c);l===void 0&&(l=t.length/3,r.set(c,l),t.push(a,o,s)),n.push(l)}return{vertices:t,indices:n}}function lw(e){return e.length<84?!0:84+new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(80,!0)*50!==e.length}var uw=1e-6;function dw(e,t){let n=H(t);if(n.replayable)return nC(n,e)}function fw(e,t){let n=YC(t),r=Math.floor(n.triVerts.length/3),i=[];for(let t=0;t<r;t++){let[r,a,o]=$C(n,t),s=e.buildTriFace(QC(n,r),QC(n,a),QC(n,o));s&&i.push(s)}if(i.length===0)throw Error(`manifold: cannot export — shape has no triangles to facet`);return e.sewAndSolidify(i,uw)}function pw(e){let t=By(`B-rep export`),n=dw(t,e);return n===void 0?(console.warn(`manifold: exact B-rep unavailable (non-replayable op-graph); exporting faceted approximation`),{occt:t,brep:fw(t,e)}):{occt:t,brep:n}}function mw(e,t,n,r){let i=t.mesh(n,{tolerance:.01,angularTolerance:.5});return iw(e,{vertProperties:Float32Array.from(i.vertices),triVerts:Uint32Array.from(i.triangles)},r)}var hw=1179937895,gw=2,_w=1313821514,vw=5130562,yw=5126,bw=5125,xw=5123,Sw=5121,Cw=34962,ww=34963,Tw=4;function Ew(e){return e+3&-4}function Dw(e){let t=YC(e),n=t.numProp&&t.numProp>=3?t.numProp:3,r=Math.floor(t.vertProperties.length/n),i=t.triVerts.length,a=new Float32Array(r*3),o=1/0,s=1/0,c=1/0,l=-1/0,u=-1/0,d=-1/0;for(let e=0;e<r;e++){let r=t.vertProperties[e*n]??0,i=t.vertProperties[e*n+1]??0,f=t.vertProperties[e*n+2]??0;a[e*3]=r,a[e*3+1]=i,a[e*3+2]=f,r<o&&(o=r),i<s&&(s=i),f<c&&(c=f),r>l&&(l=r),i>u&&(u=i),f>d&&(d=f)}r===0&&(o=s=c=l=u=d=0);let f=Uint32Array.from(t.triVerts),p=a.byteLength,m=Ew(p),h=m+f.byteLength,g={asset:{version:`2.0`,generator:`brepjs manifold kernel`},scene:0,scenes:[{nodes:[0]}],nodes:[{mesh:0}],meshes:[{primitives:[{attributes:{POSITION:0},indices:1,mode:Tw}]}],accessors:[{bufferView:0,componentType:yw,count:r,type:`VEC3`,min:[o,s,c],max:[l,u,d]},{bufferView:1,componentType:bw,count:i,type:`SCALAR`}],bufferViews:[{buffer:0,byteOffset:0,byteLength:p,target:Cw},{buffer:0,byteOffset:m,byteLength:f.byteLength,target:ww}],buffers:[{byteLength:h}]},_=new TextEncoder().encode(JSON.stringify(g)),v=Ew(_.length),y=Ew(h),b=20+v+8+y,x=new ArrayBuffer(b),S=new DataView(x),C=new Uint8Array(x);S.setUint32(0,hw,!0),S.setUint32(4,gw,!0),S.setUint32(8,b,!0);let w=12;S.setUint32(w,v,!0),S.setUint32(w+4,_w,!0),w+=8,C.set(_,w);for(let e=_.length;e<v;e++)C[w+e]=32;return w+=v,S.setUint32(w,y,!0),S.setUint32(w+4,vw,!0),w+=8,C.set(new Uint8Array(a.buffer,a.byteOffset,p),w),C.set(new Uint8Array(f.buffer,f.byteOffset,f.byteLength),w+m),x}function Ow(e,t){let n=new DataView(t);if(n.getUint32(0,!0)!==hw)throw Error(`manifold: importGLB — not a binary glTF (bad magic)`);let r=n.getUint32(8,!0),i,a,o=12;for(;o<r;){let e=n.getUint32(o,!0),r=n.getUint32(o+4,!0),s=new Uint8Array(t,o+8,e);r===_w?i=JSON.parse(new TextDecoder().decode(s)):r===vw&&(a=s),o+=8+e}if(!i||typeof i!=`object`||!a)throw Error(`manifold: importGLB — missing JSON or BIN chunk`);let s=i,c=s.meshes?.[0]?.primitives[0],l=s.accessors??[],u=s.bufferViews??[];if(!c||c.attributes.POSITION===void 0)throw Error(`manifold: importGLB — no POSITION attribute`);let d=l[c.attributes.POSITION];if(!d)throw Error(`manifold: importGLB — invalid POSITION accessor`);let f=u[d.bufferView];if(!f)throw Error(`manifold: importGLB — invalid POSITION bufferView`);let p=new Float32Array(a.buffer.slice(a.byteOffset+(f.byteOffset??0),a.byteOffset+(f.byteOffset??0)+d.count*3*4)),m;if(c.indices!==void 0){let e=l[c.indices];if(!e)throw Error(`manifold: importGLB — invalid indices accessor`);let t=u[e.bufferView];if(!t)throw Error(`manifold: importGLB — invalid indices bufferView`);let n=e.componentType===bw?4:e.componentType===xw?2:+(e.componentType===Sw);if(n===0)throw Error(`manifold: importGLB — unsupported index component type ${e.componentType}`);let r=a.byteOffset+(t.byteOffset??0),i=new DataView(a.buffer,r,e.count*n);m=new Uint32Array(e.count);for(let t=0;t<e.count;t++){let e=t*n;m[t]=n===4?i.getUint32(e,!0):n===2?i.getUint16(e,!0):i.getUint8(e)}}else m=Uint32Array.from({length:d.count},(e,t)=>t);return iw(e,{vertProperties:p,triVerts:m},`importGLB`)}function kw(e){return{exportSTL:(e,t)=>tw(e,t),exportOBJ:e=>nw(e),exportPLY:e=>rw(e),importSTL:t=>ow(e,typeof t==`string`?new TextEncoder().encode(t).buffer:t),importOBJ:t=>aw(e,t),exportSTEP:e=>By(`exportSTEP`).exportSTEP(e.map(e=>pw(e).brep)),exportIGES:e=>By(`exportIGES`).exportIGES(e.map(e=>pw(e).brep)),toBREP:e=>{let{occt:t,brep:n}=pw(e);return t.toBREP(n)},exportSTEPAssembly:(e,t)=>{let n=By(`exportSTEPAssembly`),r=e.map(e=>{let t={shape:pw(e.shape).brep,name:e.name};return e.color===void 0?t:{...t,color:e.color}});return n.exportSTEPAssembly(r,t)},createXCAFDocument:e=>{let t=By(`createXCAFDocument`),n=e.map(e=>{let t={shape:pw(e.shape).brep,name:e.name};return e.color===void 0?t:{...t,color:e.color}});return t.createXCAFDocument(n)},writeXCAFToSTEP:(e,t)=>By(`writeXCAFToSTEP`).writeXCAFToSTEP(e,t),exportSTEPConfigured:(e,t)=>{let n=By(`exportSTEPConfigured`),r=e.map(e=>{let t={shape:pw(e.shape).brep},n=e.name===void 0?t:{...t,name:e.name};return e.color===void 0?n:{...n,color:e.color}});return n.exportSTEPConfigured(r,t)},importSTEP:t=>{let n=By(`importSTEP`);return n.importSTEP(t).map(t=>mw(e,n,t,`importSTEP`))},importIGES:t=>{let n=By(`importIGES`);return n.importIGES(t).map(t=>mw(e,n,t,`importIGES`))},fromBREP:t=>{let n=By(`fromBREP`);return mw(e,n,n.fromBREP(t),`fromBREP`)},exportGLB:e=>Dw(e),importGLB:t=>Ow(e,t),export3MF:()=>{throw Error(`manifold: 3MF IO is unsupported on the mesh kernel; export GLB/STL/OBJ or use a B-rep kernel`)},import3MF:()=>{throw Error(`manifold: 3MF IO is unsupported on the mesh kernel; export GLB/STL/OBJ or use a B-rep kernel`)}}}function Aw(e){return V(e).getMesh()}function jw(e,t){let n=t*(e.numProp&&e.numProp>=3?e.numProp:3);return[e.vertProperties[n]??0,e.vertProperties[n+1]??0,e.vertProperties[n+2]??0]}function Mw(e,t){let n=e;if(n&&n.__manifoldSub&&n.occt){let e=zy();if(!e)throw new c(`manifold: sub-shape geometry query requires a registered occt kernel`);return t(n.occt,e)}let r=Ly(e);if(!r)throw Error(`manifold: exact geometry query requires a manifold shape handle`);let i=zy();if(!i)throw new c(`manifold: exact geometry query unsupported on manifold kernel; no B-rep kernel registered`);if(!r.node.replayable)throw Error(`manifold: exact geometry query unsupported; shape originates from a non-replayable op (raw mesh import or mesh boolean)`);let a=Vy.get(r.node);return a===void 0&&(a=nC(r.node,i),Vy.set(r.node,a)),t(a,i)}function Nw(e){let t=Ly(e);if(!t)return;let n=t.node;return n.op===`profileEdge`?n.params?.curve:void 0}function Pw(e){return{curveType:e=>{let t=Nw(e);return t?Db(t):LC(e)?e.curveType:Mw(e,(e,t)=>t.curveType(e))},curveParameters:e=>{let t=Nw(e);if(t){let e=Ob(t);return[e.first,e.last]}return LC(e)?[0,e.length]:Mw(e,(e,t)=>t.curveParameters(e))},curvePointAtParam:(e,t)=>{let n=Nw(e);return n?kb(n,t):LC(e)?RC(e,t):Mw(e,(e,n)=>n.curvePointAtParam(e,t))},curveTangent:(e,t)=>{let n=Nw(e);return n?{point:kb(n,t),tangent:Ab(n,t)}:LC(e)?{point:RC(e,t),tangent:zC(e,t)}:Mw(e,(e,n)=>n.curveTangent(e,t))},curveIsClosed:e=>{let t=Nw(e);return t?Mb(t):Mw(e,(e,t)=>t.curveIsClosed(e))},curveIsPeriodic:e=>{let t=Nw(e);return t?Nb(t):Mw(e,(e,t)=>t.curveIsPeriodic(e))},curvePeriod:e=>{let t=Nw(e);return t?Pb(t):Mw(e,(e,t)=>t.curvePeriod(e))},interpolatePoints:(e,t)=>By(`interpolatePoints`).interpolatePoints(e,t),approximatePoints:(e,t)=>By(`approximatePoints`).approximatePoints(e,t),curveDegreeElevate:(e,t)=>Mw(e,(e,n)=>n.curveDegreeElevate(e,t)),curveKnotInsert:(e,t,n)=>Mw(e,(e,r)=>r.curveKnotInsert(e,t,n)),curveKnotRemove:(e,t,n)=>Mw(e,(e,r)=>r.curveKnotRemove(e,t,n)),curveSplit:(e,t)=>Mw(e,(e,n)=>n.curveSplit(e,t)),createCurveAdaptor:e=>Mw(e,(e,t)=>t.createCurveAdaptor(e)),getBezierPenultimatePole:e=>Mw(e,(e,t)=>t.getBezierPenultimatePole(e)),getNurbsCurveData:e=>Mw(e,(e,t)=>t.getNurbsCurveData?.(e)??null),vertexPosition:e=>IC(e)?e.point:Ly(e)?jw(Aw(e),0):Mw(e,(e,t)=>t.vertexPosition(e)),surfaceType:e=>{if(DC(e))return`plane`;let t=Ly(e);return t&&t.node.op===`profileFace`?`plane`:Mw(e,(e,t)=>t.surfaceType(e))},uvBounds:e=>DC(e)?{uMin:0,uMax:1,vMin:0,vMax:1}:Mw(e,(e,t)=>t.uvBounds(e)),outerWire:e=>Mw(e,(e,t)=>t.outerWire(e)),surfaceNormal:(e,t,n)=>DC(e)?e.normal:Mw(e,(e,r)=>r.surfaceNormal(e,t,n)),pointOnSurface:(e,t,n)=>Mw(e,(e,r)=>r.pointOnSurface(e,t,n)),uvFromPoint:(e,t)=>Mw(e,(e,n)=>n.uvFromPoint(e,t)),projectPointOnFace:(e,t)=>Mw(e,(e,n)=>n.projectPointOnFace(e,t)),classifyPointOnFace:(e,t,n,r)=>Mw(e,(e,i)=>i.classifyPointOnFace(e,t,n,r)),classifyPointRobust:(e,t,n)=>Mw(e,(e,r)=>r.classifyPointRobust(e,t,n)),classifyPointWinding:(e,t,n)=>Mw(e,(e,r)=>r.classifyPointWinding(e,t,n)),approximateSurfaceLspia:(e,t,n,r,i,a,o,s,c)=>By(`approximateSurfaceLspia`).approximateSurfaceLspia(e,t,n,r,i,a,o,s,c),untrimFace:(e,t,n)=>Mw(e,(e,r)=>r.untrimFace(e,t,n)),getSurfaceCylinderData:e=>Mw(e,(e,t)=>t.getSurfaceCylinderData(e)),getSurfaceAxis:e=>Mw(e,(e,t)=>t.getSurfaceAxis(e)),reverseSurfaceU:e=>By(`reverseSurfaceU`).reverseSurfaceU(e),detectSmallFeatures:(e,t,n)=>Mw(e,(e,r)=>r.detectSmallFeatures(e,t,n)),recognizeFeatures:(e,t)=>Mw(e,(e,n)=>n.recognizeFeatures(e,t)),projectEdges:(e,t,n,r)=>Mw(e,(e,i)=>i.projectEdges(e,t,n,r)),getNurbsSurfaceData:e=>Mw(e,(e,t)=>t.getNurbsSurfaceData?.(e)??null)}}var Fw={hasErrors:!1,hasWarnings:!1,messages:[]};function Iw(){return{modified:new Map,generated:new Map,deleted:new Set}}function Lw(e){return{shape:e,evolution:Iw()}}function Rw(e){return{shape:e,evolution:Iw(),diagnostics:Fw}}function zw(e){let t=bb(e),n=Qy(e),r=ES(e);return{translateWithHistory:(e,n,r,i)=>Lw(t.translate(e,n,r,i)),rotateWithHistory:(e,n,r,i,a,o)=>Lw(t.rotate(e,n,a,o)),mirrorWithHistory:(e,n,r)=>Lw(t.mirror(e,n,r)),scaleWithHistory:(e,n,r)=>Lw(t.scale(e,n,r)),generalTransformWithHistory:(e,n,r,i)=>Lw(t.generalTransform(e,n,r,i)),fuseWithHistory:(e,t,r,i,a)=>Rw(n.fuse(e,t,a)),cutWithHistory:(e,t,r,i,a)=>Rw(n.cut(e,t,a)),intersectWithHistory:(e,t,r,i,a)=>Rw(n.intersect(e,t,a)),filletWithHistory:(e,t,n)=>Lw(r.fillet(e,t,n)),chamferWithHistory:(e,t,n)=>Lw(r.chamfer(e,t,n)),shellWithHistory:(e,t,n,i,a,o)=>Lw(r.shell(e,t,n,o)),thickenWithHistory:(e,t)=>Lw(r.thicken(e,t)),offsetWithHistory:(e,t,n,i,a)=>Lw(r.offset(e,t,a)),draftWithHistory:(e,t,n,i,a)=>Lw(r.draft(e,t,n,i,a)),applyComposedTransformWithHistory:(e,n)=>Lw(t.transform(e,n))}}function Bw(e){let t=e?.manifold;if(!t||typeof t.isEmpty==`function`&&t.isEmpty())return!1;if(typeof t.status==`function`){let e=t.status(),n=typeof e==`number`?e:Number(e?.value??e);if(!Number.isNaN(n)&&n!==0)return!1}return!0}function Vw(e){return{isValid:e=>Bw(e),isValidStrict:e=>Bw(e),healSolid:e=>Bw(e)?e:null,healFace:e=>e,healWire:e=>e,mergeCoincidentVertices:()=>0,removeDegenerateEdges:()=>0,fixFaceOrientations:()=>0,fixShape:e=>e,fixSelfIntersection:e=>e}}var Hw=.004;function Uw(e){return!!e&&typeof e==`object`&&e.__nativeC2d===!0}function Ww(e,t){return{__nativeC2d:!0,k:`line`,p1:e,p2:t}}function Gw(e,t,n,r,i){return{__nativeC2d:!0,k:`conic`,c:e,u:t,v:n,a0:r,a1:i}}function Kw(e,[t,n]){return[e.a*t+e.b*n+e.tx,e.c*t+e.d*n+e.ty]}function qw(e,[t,n]){return[e.a*t+e.b*n,e.c*t+e.d*n]}function Jw(e,t){return{a:e.a*t.a+e.b*t.c,b:e.a*t.b+e.b*t.d,c:e.c*t.a+e.d*t.c,d:e.c*t.b+e.d*t.d,tx:e.a*t.tx+e.b*t.ty+e.tx,ty:e.c*t.tx+e.d*t.ty+e.ty}}function Yw(e,t){return e.k===`line`?Ww(Kw(t,e.p1),Kw(t,e.p2)):e.k===`bezier`?{__nativeC2d:!0,k:`bezier`,pts:e.pts.map(e=>Kw(t,e))}:Gw(Kw(t,e.c),qw(t,e.u),qw(t,e.v),e.a0,e.a1)}function Xw(e,t){let n=e.map(e=>[e[0],e[1]]);for(let e=1;e<n.length;e++)for(let r=0;r<n.length-e;r++){let e=n[r]??[0,0],i=n[r+1]??[0,0];n[r]=[e[0]*(1-t)+i[0]*t,e[1]*(1-t)+i[1]*t]}return n[0]??[0,0]}function Zw(e,t){let n=Math.cos(t),r=Math.sin(t);return[e.c[0]+e.u[0]*n+e.v[0]*r,e.c[1]+e.u[1]*n+e.v[1]*r]}function Qw(e,t){let n=e.length-1;if(n<1)return[0,0];let r=[];for(let t=0;t<n;t++){let i=e[t]??[0,0],a=e[t+1]??[0,0];r.push([n*(a[0]-i[0]),n*(a[1]-i[1])])}return Xw(r,t)}function $w(e){let t=Math.abs(e.a1-e.a0),n=Math.hypot(e.u[0],e.u[1]),r=Math.hypot(e.v[0],e.v[1]),i=Math.max(n,r);if(i<=Hw)return Math.max(2,Math.ceil(t/(2*Math.PI)*8));let a=2*Math.acos(Math.max(-1,1-Hw/i));return Math.max(2,Math.ceil(t/a))}function eT(e){if(e.k===`line`)return[e.p1,e.p2];if(e.k===`bezier`){let t=[];for(let n=0;n<=24;n++)t.push(Xw(e.pts,n/24));return t}let t=e.a1-e.a0,n=$w(e),r=[];for(let i=0;i<=n;i++){let a=e.a0+t*i/n,o=Math.cos(a),s=Math.sin(a);r.push([e.c[0]+e.u[0]*o+e.v[0]*s,e.c[1]+e.u[1]*o+e.v[1]*s])}return r}function tT(e,t,n){let r=e[0],i=e[1],a=t[0],o=t[1],s=n[0],c=n[1],l=2*(r*(o-c)+a*(c-i)+s*(i-o));if(Math.abs(l)<1e-12)return Ww(e,n);let u=((r*r+i*i)*(o-c)+(a*a+o*o)*(c-i)+(s*s+c*c)*(i-o))/l,d=((r*r+i*i)*(s-a)+(a*a+o*o)*(r-s)+(s*s+c*c)*(a-r))/l,f=[u,d],p=Math.hypot(r-u,i-d),m=e=>Math.atan2(e[1]-d,e[0]-u),h=m(e),g=m(t),_=m(n),v=e=>(e%(2*Math.PI)+2*Math.PI)%(2*Math.PI),y=v(g-h),b=v(_-h);return _=y<=b?h+b:h-v(h-_),Gw(f,[p,0],[0,p],h,_)}function nT(e,t){let n={delete:()=>{},isEmpty:()=>!1};function r(e,...n){let r=t(),i=r?.[e];if(!i)throw Error(`manifold 2D: ${e} needs an OCCT kernel (none registered)`);return i.call(r,...n)}let i=e=>e;function a(e){let n=t();if(!n)throw Error(`manifold 2D: ${e} needs an OCCT kernel (none registered)`);return n}function o(e){if(!Uw(e))return e;let t=a(`toOcct`),n=i(e);if(n.k===`line`)return t.makeLine2d(n.p1[0],n.p1[1],n.p2[0],n.p2[1]);if(n.k===`bezier`)return t.makeBezier2d(n.pts);let r=Math.hypot(n.u[0],n.u[1]),o=Math.hypot(n.v[0],n.v[1]),s=Math.abs(Math.abs(n.a1-n.a0)-2*Math.PI)<1e-9,c=n.u[0]*n.v[1]-n.u[1]*n.v[0]>=0;if(Math.abs(r-o)<1e-9*Math.max(1,r)){if(s)return t.makeCircle2d(n.c[0],n.c[1],r,c);let e=Zw(n,n.a0),i=Zw(n,(n.a0+n.a1)/2),a=Zw(n,n.a1);return t.makeArc2dThreePoints(e[0],e[1],i[0],i[1],a[0],a[1])}let l=n.u[0]*n.v[0]+n.u[1]*n.v[1];if(Math.abs(l)<1e-9*Math.max(1,r*o)){let e=n.u[0]/r,i=n.u[1]/r;return s?t.makeEllipse2d(n.c[0],n.c[1],r,o,e,i,c):t.makeEllipseArc2d(n.c[0],n.c[1],r,o,n.a0,n.a1,e,i,c)}return t.makeBSpline2d(eT(n).map(e=>[e[0],e[1]]))}let s={createPoint2d:(e,t)=>({x:e,y:t}),createDirection2d:(e,t)=>({x:e,y:t}),createVector2d:(e,t)=>({x:e,y:t}),createAxis2d:(e,t,n,r)=>({px:e,py:t,dx:n,dy:r}),wrapCurve2dHandle:e=>e,createCurve2dAdaptor:e=>e,makeLine2d:(e,t,n,r)=>Ww([e,t],[n,r]),makeCircle2d:(e,t,n,r=!0)=>Gw([e,t],[n,0],r?[0,n]:[0,-n],0,2*Math.PI),makeArc2dThreePoints:(e,t,n,r,i,a)=>tT([e,t],[n,r],[i,a]),makeArc2dTangent:(e,t,n,r,i,a)=>{let o=Math.hypot(n,r)||1,s=-r/o,c=n/o,l=[i-e,a-t],u=s*l[0]+c*l[1];if(Math.abs(u)<1e-12)return Ww([e,t],[i,a]);let d=(l[0]*l[0]+l[1]*l[1])/(2*u),f=e+s*d,p=t+c*d,m=Math.hypot(e-f,t-p),h=Math.atan2(t-p,e-f),g=Math.atan2(a-p,i-f);s*n+c*r;let _=e=>(e%(2*Math.PI)+2*Math.PI)%(2*Math.PI),v=[-(t-p),e-f];return g=v[0]*n+v[1]*r>=0?h+_(g-h):h-_(h-g),Gw([f,p],[m,0],[0,m],h,g)},makeEllipse2d:(e,t,n,r,i=1,a=0,o=!0)=>{let s=Math.hypot(i,a)||1,c=i/s*n,l=a/s*n,u=-a/s*r*(o?1:-1),d=i/s*r*(o?1:-1);return Gw([e,t],[c,l],[u,d],0,2*Math.PI)},makeEllipseArc2d:(e,t,n,r,i,a,o=1,s=0,c=!0)=>{let l=Math.hypot(o,s)||1,u=o/l*n,d=s/l*n,f=-s/l*r*(c?1:-1),p=o/l*r*(c?1:-1);return Gw([e,t],[u,d],[f,p],i,a)},makeBezier2d:e=>({__nativeC2d:!0,k:`bezier`,pts:e.map(e=>[e[0],e[1]])}),evaluateCurve2d:(e,t)=>{let n=i(e);if(n.k===`line`){let e=n.p2[0]-n.p1[0],r=n.p2[1]-n.p1[1],i=Math.hypot(e,r)||1;return[n.p1[0]+e*t/i,n.p1[1]+r*t/i]}return n.k===`bezier`?Xw(n.pts,t):[n.c[0]+n.u[0]*Math.cos(t)+n.v[0]*Math.sin(t),n.c[1]+n.u[1]*Math.cos(t)+n.v[1]*Math.sin(t)]},evaluateCurve2dD1:(e,t)=>{let n=i(e);if(n.k===`line`){let e=n.p2[0]-n.p1[0],r=n.p2[1]-n.p1[1],i=Math.hypot(e,r)||1;return{point:[n.p1[0]+e*t/i,n.p1[1]+r*t/i],tangent:[e/i,r/i]}}if(n.k===`bezier`)return{point:Xw(n.pts,t),tangent:Qw(n.pts,t)};let r=Math.cos(t),a=Math.sin(t);return{point:[n.c[0]+n.u[0]*r+n.v[0]*a,n.c[1]+n.u[1]*r+n.v[1]*a],tangent:[-n.u[0]*a+n.v[0]*r,-n.u[1]*a+n.v[1]*r]}},getCurve2dBounds:e=>{let t=i(e);return t.k===`conic`?{first:t.a0,last:t.a1}:t.k===`line`?{first:0,last:Math.hypot(t.p2[0]-t.p1[0],t.p2[1]-t.p1[1])}:{first:0,last:1}},getCurve2dType:e=>{let t=i(e);return t.k===`line`?`LINE`:t.k===`bezier`?`BEZIER`:`CIRCLE`},reverseCurve2d:e=>{let t=i(e);if(t.k===`line`){let e=t.p1;t.p1=t.p2,t.p2=e}else if(t.k===`bezier`)t.pts.reverse();else{let e=t.a0;t.a0=t.a1,t.a1=e}},copyCurve2d:e=>structuredClone(i(e)),trimCurve2d:(e,t,n)=>{let r=i(e);if(r.k===`conic`)return Gw(r.c,r.u,r.v,t,n);if(r.k===`line`){let e=r.p2[0]-r.p1[0],i=r.p2[1]-r.p1[1],a=Math.hypot(e,i)||1;return Ww([r.p1[0]+e*t/a,r.p1[1]+i*t/a],[r.p1[0]+e*n/a,r.p1[1]+i*n/a])}return structuredClone(r)},createIdentityGTrsf2d:()=>({a:1,b:0,c:0,d:1,tx:0,ty:0}),createTranslationGTrsf2d:(e,t)=>({a:1,b:0,c:0,d:1,tx:e,ty:t}),createRotationGTrsf2d:(e,t,n)=>{let r=Math.cos(e),i=Math.sin(e);return{a:r,b:-i,c:i,d:r,tx:t-(r*t-i*n),ty:n-(i*t+r*n)}},createScaleGTrsf2d:(e,t,n)=>({a:e,b:0,c:0,d:e,tx:t-e*t,ty:n-e*n}),createMirrorGTrsf2d:(e,t,n,r=0,i=0,a=1,o=0)=>{if(n===`point`)return{a:-1,b:0,c:0,d:-1,tx:2*e,ty:2*t};let s=Math.hypot(a,o)||1,c=a/s,l=o/s,u=c*c-l*l,d=2*c*l;return{a:u,b:d,c:d,d:-u,tx:r-(u*r+d*i),ty:i-(d*r-u*i)}},createAffinityGTrsf2d:(e,t,n,r,i)=>{let a=Math.hypot(n,r)||1,o=n/a,s=r/a,c=-s,l=o,u=o*o+i*c*c,d=o*s+i*c*l,f=s*o+i*l*c,p=s*s+i*l*l;return{a:u,b:d,c:f,d:p,tx:e-(u*e+d*t),ty:t-(f*e+p*t)}},setGTrsf2dTranslationPart:(e,t,n)=>{let r=e;r.tx=t,r.ty=n},multiplyGTrsf2d:(e,t)=>{let n=Jw(e,t);Object.assign(e,n)},transformCurve2dGeneral:(e,t)=>Yw(i(e),t),translateCurve2d:(e,t,n)=>Yw(i(e),{a:1,b:0,c:0,d:1,tx:t,ty:n}),rotateCurve2d:(e,t,n,r)=>{let a=Math.cos(t),o=Math.sin(t);return Yw(i(e),{a,b:-o,c:o,d:a,tx:n-(a*n-o*r),ty:r-(o*n+a*r)})},scaleCurve2d:(e,t,n,r)=>Yw(i(e),{a:t,b:0,c:0,d:t,tx:n-t*n,ty:r-t*r}),mirrorCurve2dAtPoint:(e,t,n)=>Yw(i(e),{a:-1,b:0,c:0,d:-1,tx:2*t,ty:2*n}),mirrorCurve2dAcrossAxis:(e,t,n,r,a)=>{let o=Math.hypot(r,a)||1,s=r/o,c=a/o,l=s*s-c*c,u=2*s*c;return Yw(i(e),{a:l,b:u,c:u,d:-l,tx:t-(l*t+u*n),ty:n-(u*t-l*n)})},affinityTransform2d:(e,t,n,r,a,o)=>{let s=Math.hypot(r,a)||1,c=r/s,l=a/s,u=-l,d=c,f=c*c+o*u*u,p=c*l+o*u*d,m=l*c+o*d*u,h=l*l+o*d*d;return Yw(i(e),{a:f,b:p,c:m,d:h,tx:t-(f*t+p*n),ty:n-(m*t+h*n)})},createBoundingBox2d:()=>({min:[1/0,1/0],max:[-1/0,-1/0]}),addCurveToBBox2d:(e,t)=>{let n=e,r;if(Uw(t))r=eT(i(t));else{let e=a(`addCurveToBBox2d`),{first:n,last:i}=e.getCurve2dBounds(t);r=[];for(let a=0;a<=32;a++)r.push(e.evaluateCurve2d(t,n+(i-n)*a/32))}for(let[e,t]of r)e<n.min[0]&&(n.min[0]=e),t<n.min[1]&&(n.min[1]=t),e>n.max[0]&&(n.max[0]=e),t>n.max[1]&&(n.max[1]=t)},getBBox2dBounds:e=>{let t=e;return{xMin:t.min[0],yMin:t.min[1],xMax:t.max[0],yMax:t.max[1]}},mergeBBox2d:(e,t)=>{let n=e,r=t;n.min[0]=Math.min(n.min[0],r.min[0]),n.min[1]=Math.min(n.min[1],r.min[1]),n.max[0]=Math.max(n.max[0],r.max[0]),n.max[1]=Math.max(n.max[1],r.max[1])},isBBox2dOut:(e,t)=>{let n=e,r=t;return n.max[0]<r.min[0]||n.min[0]>r.max[0]||n.max[1]<r.min[1]||n.min[1]>r.max[1]},isBBox2dOutPoint:(e,t,n)=>{let r=e;return t<r.min[0]||t>r.max[0]||n<r.min[1]||n>r.max[1]},getCurve2dCircleData:e=>{let t=i(e);if(t.k!==`conic`)return null;let n=Math.hypot(t.u[0],t.u[1]),r=Math.hypot(t.v[0],t.v[1]);return Math.abs(n-r)>1e-6?null:{cx:t.c[0],cy:t.c[1],radius:n,isDirect:!0}},liftCurve2dToPlane:(e,t,r,a)=>{let o=r[0],s=r[1],c=r[2],l=a[0],u=a[1],d=a[2],f=s*d-c*u,p=c*l-o*d,m=o*u-s*l,h=eT(i(e)).map(([e,n])=>[t[0]+l*e+f*n,t[1]+u*e+p*n,t[2]+d*e+m*n]);return B(n,z(`profileEdge`,{pts:h},[]))},makeBSpline2d:(e,t)=>a(`makeBSpline2d`).makeBSpline2d(e,t),offsetCurve2d:(e,t)=>a(`offsetCurve2d`).offsetCurve2d(o(e),t),intersectCurves2d:(e,t,n)=>a(`intersectCurves2d`).intersectCurves2d(o(e),o(t),n),projectPointOnCurve2d:(e,t,n)=>a(`projectPointOnCurve2d`).projectPointOnCurve2d(o(e),t,n),distanceBetweenCurves2d:(e,t,n,r,i,s)=>a(`distanceBetweenCurves2d`).distanceBetweenCurves2d(o(e),o(t),n,r,i,s),approximateCurve2dAsBSpline:(e,t,n,r)=>a(`approximateCurve2dAsBSpline`).approximateCurve2dAsBSpline(o(e),t,n,r),decomposeBSpline2dToBeziers:e=>a(`decomposeBSpline2dToBeziers`).decomposeBSpline2dToBeziers(o(e)),serializeCurve2d:e=>a(`serializeCurve2d`).serializeCurve2d(o(e)),deserializeCurve2d:e=>a(`deserializeCurve2d`).deserializeCurve2d(e),splitCurve2d:(e,t)=>a(`splitCurve2d`).splitCurve2d(o(e),t),getCurve2dEllipseData:e=>a(`getCurve2dEllipseData`).getCurve2dEllipseData(o(e)),getCurve2dBezierPoles:e=>a(`getCurve2dBezierPoles`).getCurve2dBezierPoles(o(e)),getCurve2dBezierDegree:e=>a(`getCurve2dBezierDegree`).getCurve2dBezierDegree(o(e)),getCurve2dBSplineData:e=>a(`getCurve2dBSplineData`).getCurve2dBSplineData(o(e)),buildEdgeOnSurface:(e,t)=>a(`buildEdgeOnSurface`).buildEdgeOnSurface(o(e),t),extractSurfaceFromFace:e=>a(`extractSurfaceFromFace`).extractSurfaceFromFace(e),extractCurve2dFromEdge:(e,t)=>a(`extractCurve2dFromEdge`).extractCurve2dFromEdge(e,t),buildCurves3d:e=>{a(`buildCurves3d`).buildCurves3d(e)},fixWireOnFace:(e,t,n)=>a(`fixWireOnFace`).fixWireOnFace(e,t,n),fillSurface:(e,t)=>a(`fillSurface`).fillSurface(e,t)};for(let e of[`evaluateCurve2d`,`evaluateCurve2dD1`,`getCurve2dBounds`,`getCurve2dType`,`reverseCurve2d`,`copyCurve2d`,`trimCurve2d`,`transformCurve2dGeneral`,`translateCurve2d`,`rotateCurve2d`,`scaleCurve2d`,`mirrorCurve2dAtPoint`,`mirrorCurve2dAcrossAxis`,`affinityTransform2d`,`getCurve2dCircleData`,`liftCurve2dToPlane`]){let t=s[e];t&&(s[e]=((n,...i)=>Uw(n)?t(n,...i):r(e,n,...i)))}return s}var rT=`createPoint2d.createDirection2d.createVector2d.createAxis2d.wrapCurve2dHandle.createCurve2dAdaptor.makeLine2d.makeCircle2d.makeArc2dThreePoints.makeArc2dTangent.makeEllipse2d.makeEllipseArc2d.makeBezier2d.makeBSpline2d.evaluateCurve2d.evaluateCurve2dD1.getCurve2dBounds.getCurve2dType.trimCurve2d.reverseCurve2d.copyCurve2d.offsetCurve2d.translateCurve2d.rotateCurve2d.scaleCurve2d.mirrorCurve2dAtPoint.mirrorCurve2dAcrossAxis.affinityTransform2d.createIdentityGTrsf2d.createAffinityGTrsf2d.createTranslationGTrsf2d.createMirrorGTrsf2d.createRotationGTrsf2d.createScaleGTrsf2d.setGTrsf2dTranslationPart.multiplyGTrsf2d.transformCurve2dGeneral.intersectCurves2d.projectPointOnCurve2d.distanceBetweenCurves2d.approximateCurve2dAsBSpline.decomposeBSpline2dToBeziers.createBoundingBox2d.addCurveToBBox2d.getBBox2dBounds.mergeBBox2d.isBBox2dOut.isBBox2dOutPoint.getCurve2dCircleData.getCurve2dEllipseData.getCurve2dBezierPoles.getCurve2dBezierDegree.getCurve2dBSplineData.serializeCurve2d.deserializeCurve2d.splitCurve2d.liftCurve2dToPlane.buildEdgeOnSurface.extractSurfaceFromFace.extractCurve2dFromEdge.buildCurves3d.fixWireOnFace.fillSurface`.split(`.`);function iT(e){let t=zy();if(!t)throw Error(`manifold: ${e} unsupported on manifold kernel; no B-rep kernel registered`);return t}function aT(e){let t={};for(let e of rT)t[e]=(...t)=>iT(e)[e](...t);let n=nT(e,()=>zy());return Object.assign(t,n),t}function oT(e){return{sketchNew:()=>Py(`sketchNew`),sketchAddPoint:()=>Py(`sketchAddPoint`),sketchAddArc:()=>Py(`sketchAddArc`),sketchAddConstraint:()=>Py(`sketchAddConstraint`),sketchSolve:()=>Py(`sketchSolve`),sketchDof:()=>Py(`sketchDof`)}}function sT(e){return{projectEdges:()=>Py(`projectEdges`)}}function cT(e){return{dispose(e){let t=Ly(e);if(t){let e=Vy.get(t.node);e!==void 0&&(zy()?.dispose(e),Vy.delete(t.node))}(e?.manifold)?.delete?.()},executeBatch:()=>Py(`executeBatch`),checkpoint:()=>Py(`checkpoint`),checkpointCount:()=>0,restoreCheckpoint:()=>Py(`restoreCheckpoint`),discardCheckpoint:()=>Py(`discardCheckpoint`)}}var lT={draft:30,standard:10,fine:3},uT=class{oc;kernelId=`manifold`;capabilities={exact:!1,brepExport:!1,exactMeasurement:!1,tessellationModel:`build-time`};setQuality(e){let t=this.oc;t.setCircularSegments?.(0),t.setMinCircularEdgeLength?.(0),t.setMinCircularAngle?.(lT[e])}constructor(e){this.oc=e,Object.assign(this,qy(e),Qy(e),bb(e),Dx(e),$x(e),ES(e),PS(e),wC(e),JC(e),kw(e),Pw(e),zw(e),Vw(e),aT(e),oT(e),sT(e),cT(e))}};function dT(e){return import(e)}function fT(e){return`projectEdges`in e}function pT(e){return`sketchNew`in e&&`sketchDof`in e}var mT=new Map,hT=null,gT=null;function _T(e){vT(`manifold`,new uT(e))}function vT(e,t){mT.set(e,t),hT||=e,e===hT&&(gT=t)}function U(e){if(!e&&gT)return gT;let t=e??hT;if(!t)throw Error(`brepjs kernel not initialized. Call initFromOC() or registerKernel() before using the library.`);let n=mT.get(t);if(!n)throw Error(`brepjs: kernel '${t}' is not registered.`);return n}function yT(e){let t=U(e);if(!jo(t))throw Error(`brepjs: current kernel does not support 2D operations.`);return t}function bT(){return hT}function xT(e,t){let n=hT;hT=e,gT=mT.get(e)??null;try{let e=t();if(e instanceof Promise)throw Error(`withKernel() callback returned a Promise. Async code must use getKernel(id) directly — the kernel override is restored synchronously in finally.`);return e}finally{hT=n,gT=n?mT.get(n)??null:null}}function ST(e){return U(e).capabilities}function CT(e,t){let n=Oo();try{Ao(e),U().setQuality?.(e);let n=t();if(n instanceof Promise)throw Error(`withQuality() callback returned a Promise. Async code must read currentQuality()/getKernel() directly.`);return n}finally{Ao(n),U().setQuality?.(n)}}var wT=new Map;function TT(e,t){wT.set(e,t)}function ET(e){return wT.get(e)}function DT(e,t){let n=wT.get(e);if(!n)throw Error(`withTier: no tier registered for "${e}". Call registerKernelTier("${e}", { kernel, quality }) first.`);return xT(n.kernel,()=>CT(n.quality,t))}function OT(e){qo(),sl(),Bo(),Lc(),Rc(),$c(),el();let t=new Uf(e);vT(`occt`,t),hT=`occt`,gT=t}function kT(){let e=U(),t=e.makeBox(1,1,1);try{e.dispose(t)}catch{}}async function AT(){if(hT)return hT;try{let{OcctKernel:e}=await dT(`occt-wasm`),t=await e.init();return vT(`occt-wasm`,Ha.fromKernel(t)),`occt-wasm`}catch{}try{return OT(await(await dT(`brepjs-opencascade`)).default()),`occt`}catch{}try{let e=await dT(`brepkit-wasm`);return typeof e.default==`function`&&await e.default(),vT(`brepkit`,new Ny(new e.BrepKernel)),`brepkit`}catch{}throw Error(`brepjs: no kernel package found. Install one of:
13
+ npm install occt-wasm (recommended, default)
14
+ npm install brepjs-opencascade
15
+ npm install brepkit-wasm`)}function jT(){var e=typeof SuppressedError==`function`?SuppressedError:function(e,t){var n=Error();return n.name=`SuppressedError`,n.error=e,n.suppressed=t,n},t={},n=[];function r(e,t){if(t!=null){if(Object(t)!==t)throw TypeError(`using declarations can only be used with objects, functions, null, or undefined.`);if(e)var r=t[Symbol.asyncDispose||Symbol.for(`Symbol.asyncDispose`)];if(r===void 0&&(r=t[Symbol.dispose||Symbol.for(`Symbol.dispose`)],e))var i=r;if(typeof r!=`function`)throw TypeError(`Object is not disposable.`);i&&(r=function(){try{i.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:r.bind(null,!1),a:r.bind(null,!0),d:function(){var r,i=this.e,a=0;function o(){for(;r=n.pop();)try{if(!r.a&&a===1)return a=0,n.push(r),Promise.resolve().then(o);if(r.d){var e=r.d.call(r.v);if(r.a)return a|=2,Promise.resolve(e).then(o,s)}else a|=1}catch(e){return s(e)}if(a===1)return i===t?Promise.resolve():Promise.reject(i);if(i!==t)throw i}function s(n){return i=i===t?n:new e(n,i),o()}return o()}}}var MT=Symbol;MT.dispose??=Symbol.for(`Symbol.dispose`),MT.asyncDispose??=Symbol.for(`Symbol.asyncDispose`);var NT=globalThis;NT.FinalizationRegistry||=(console.warn(`brepjs: FinalizationRegistry unavailable — garbage collection will not work`),class{register(e,t,n){}unregister(e){return!1}});var PT={liveHandles:0,peakHandles:0,gcCollected:0,scopeEnters:0,scopeExits:0};function FT(){return{...PT}}function IT(){PT.liveHandles=0,PT.peakHandles=0,PT.gcCollected=0,PT.scopeEnters=0,PT.scopeExits=0}function LT(){PT.liveHandles++,PT.liveHandles>PT.peakHandles&&(PT.peakHandles=PT.liveHandles)}function RT(){PT.liveHandles--}function zT(){PT.gcCollected++,PT.liveHandles--}var BT=new FinalizationRegistry(e=>{zT();try{e.delete()}catch{}});function VT(e){let t=U(),n=!1,r,i=()=>{if(r){for(let e of r)try{e()}catch{}r=void 0}},a=()=>{if(!n){n=!0,RT(),BT.unregister(o),i();try{t.dispose(e)}catch{}}},o={get wrapped(){if(n)throw Error(`Shape handle has been disposed`);return e},get disposed(){return n},[Symbol.dispose](){a()},delete(){a()},onDispose(e){if(n){e();return}(r??=[]).push(e)}};return LT(),BT.register(o,{delete:()=>{t.dispose(e)}},o),o}function HT(e){let t=()=>{};return{get wrapped(){return e},get disposed(){return!1},[Symbol.dispose]:t,delete:t,onDispose:t}}function UT(e){let t=!1,n={get value(){if(t)throw Error(`kernel handle has been disposed`);return e},get disposed(){return t},[Symbol.dispose](){if(!t){t=!0,RT(),BT.unregister(n);try{e.delete()}catch{}}}};return LT(),BT.register(n,e,n),n}var WT=class{handles=[];constructor(){PT.scopeEnters++}register(e){return this.handles.push(()=>{try{let t=e[Symbol.dispose];typeof t==`function`?t.call(e):e.delete()}catch{}}),e}track(e){return this.handles.push(()=>{try{e[Symbol.dispose]()}catch{}}),e}[Symbol.dispose](){PT.scopeExits++;for(let e=this.handles.length-1;e>=0;e--)this.handles[e]?.();this.handles.length=0}};function GT(e){try{var t=jT();return e(t.u(new WT))}catch(e){t.e=e}finally{t.d()}}function KT(e,t){BT.register(e,t,t)}function qT(e){BT.unregister(e)}function JT(e){try{var t=jT();return e(t.u(new WT))}catch(e){t.e=e}finally{t.d()}}async function YT(e){try{var t=jT();return await e(t.u(new WT))}catch(e){t.e=e}finally{t.d()}}function XT(e){return!e.disposed}function ZT(e){return e.__is2D!==!0}function QT(e){return e.__is2D===!0}function $T(e){if(!ZT(e))throw Error(`Expected 3D shape, got 2D`);return e}function eE(e){if(!QT(e))throw Error(`Expected 2D shape, got 3D`);return e}var tE=new WeakMap;function nE(e,t){tE.set(e,t)}function rE(e,t){let n=tE.get(t);if(n!==void 0)return n;let r=e.shapeType(t);return tE.set(t,r),r}function iE(e){return rE(U(),e.wrapped)}function aE(e){return U().curveIsClosed(e.wrapped)}function oE(e){return U().isValid(e.wrapped)}function sE(e){let t=U();if(!t.isValid(e.wrapped))return!1;let n=t.isValidStrict?.bind(t)??t.isValid.bind(t);try{let r=t.solidFromShell(e.wrapped),i=n(r);try{t.dispose(r)}catch{}return i}catch{return!1}}function cE(e){return U().isValid(e.wrapped)}function lE(e){return aE(e)?O(e):k(`Wire is not closed: start and end points do not coincide`)}function uE(e){return oE(e)?O(e):k(`Face orientation is inconsistent or face is invalid`)}function dE(e){return sE(e)?O(e):k(`Shell is not manifold: has free edges or is invalid`)}function fE(e){return cE(e)?O(e):k(`Solid failed BRepCheck validation`)}function pE(e){return U().surfaceType(e.wrapped)===`plane`}function mE(e){let t=U(),n=n=>{try{let r=t.makeFace(e.wrapped,n),i=t.surfaceType(r);try{t.dispose(r)}catch{}return i===`plane`}catch{return!1}};return n(!0)?!0:n(!1)}function hE(e){return pE(e)?O(e):k(`Face is not planar: underlying surface is not a geometric plane`)}function gE(e){return mE(e)?O(e):k(`Wire is not planar: edges do not lie in a common plane`)}function _E(e,t){return t===`2D`&&(e.__is2D=!0),e}function vE(e,t){return _E(VT(e),t)}function yE(e,t){return _E(VT(e),t)}function bE(e,t){return _E(VT(e),t)}function xE(e,t){return _E(VT(e),t)}function SE(e){return _E(VT(e))}function CE(e){return _E(VT(e))}function wE(e){return _E(VT(e))}function TE(e,t){return _E(VT(e),t)}function EE(e){return iE(e)===`vertex`}function DE(e){return iE(e)===`edge`}function OE(e){return iE(e)===`wire`}function kE(e){return iE(e)===`face`}function AE(e){return iE(e)===`shell`}function jE(e){return iE(e)===`solid`}function ME(e){return iE(e)===`compound`}function NE(e){let t=iE(e);return t===`shell`||t===`solid`||t===`compsolid`?!0:t===`compound`?ZT(e):!1}function PE(e){let t=iE(e);return t===`edge`||t===`wire`}function FE(e,t){let n=U(),r=rE(n,e),i=n.downcast(e,r);return r===`vertex`?vE(i,t):r===`edge`?yE(i,t):r===`wire`?bE(i,t):r===`face`?xE(i,t):r===`shell`?SE(i):r===`solid`?CE(i):r===`compsolid`?wE(i):TE(i,t)}function IE(e){return FE(e)}function LE(e,t){let n=e.id,r=t.wrapped.id;(n!==void 0&&r!==void 0?n===r:t.wrapped===e)||U().dispose(e)}function W(e,t){let n=FE(e,t);return LE(e,n),n}function RE(e,t){let n=e.wrapped;if(e[Symbol.dispose](),n!==t){let e=U();e.dispose(n),e.dispose(t)}}function zE(e){U().dispose(e.wrapped),e[Symbol.dispose]()}function BE(e,t,n){nE(e,t);let r=U().downcast(e,t);return t===`vertex`?vE(r,n):t===`edge`?yE(r,n):t===`wire`?bE(r,n):t===`face`?xE(r,n):t===`shell`?SE(r):t===`solid`?CE(r):t===`compsolid`?wE(r):TE(r,n)}function VE(e,t,n){let r=BE(e,t,n);return LE(e,r),r}function HE(e,t,n){return nE(e,t),_E(HT(e),n)}function UE(e,t,n,r,i){let a={kind:e,code:t,message:n,cause:r};return i?{...a,suggestion:i}:a}var WE={KERNEL_OPERATION:(e,t,n,r)=>UE(`KERNEL_OPERATION`,e,t,n,r),VALIDATION:(e,t,n,r)=>UE(`VALIDATION`,e,t,n,r),TYPE_CAST:(e,t,n,r)=>UE(`TYPE_CAST`,e,t,n,r),SKETCHER_STATE:(e,t,n,r)=>UE(`SKETCHER_STATE`,e,t,n,r),MODULE_INIT:(e,t,n,r)=>UE(`MODULE_INIT`,e,t,n,r),COMPUTATION:(e,t,n,r)=>UE(`COMPUTATION`,e,t,n,r),IO:(e,t,n,r)=>UE(`IO`,e,t,n,r),QUERY:(e,t,n,r)=>UE(`QUERY`,e,t,n,r),UNSUPPORTED:(e,t,n,r)=>UE(`UNSUPPORTED`,e,t,n,r)};function GE(e,t,n,r=`KERNEL_OPERATION`){try{return O(W(e()))}catch(e){let i=e instanceof Error?e.message:String(e),a=r===`KERNEL_OPERATION`?_o(i):i,o=go(t);return k(WE[r](t,`${n}: ${a}`,e,o))}}function KE(e,t,n,r=`KERNEL_OPERATION`){try{return O(e())}catch(e){let i=e instanceof Error?e.message:String(e),a=r===`KERNEL_OPERATION`?_o(i):i,o=go(t);return k(WE[r](t,`${n}: ${a}`,e,o))}}function qE(e,t,n,r=`KERNEL_OPERATION`){try{var i=jT();let a=i.u(new WT);return GE(()=>e(a),t,n,r)}catch(e){i.e=e}finally{i.d()}}function JE(e,t){let n=U().iterShapes(e,t),r=Array(n.length);for(let e=0;e<n.length;e++)r[e]=VE(n[e],t);return r}var YE=new WeakMap;function XE(e){let t=YE.get(e);if(!t)return;YE.delete(e);let n=[t.edges,t.faces,t.wires,t.vertices,t.shells,t.solids,t.compSolids];for(let e of n)if(e)for(let t of e)t[Symbol.dispose]()}var ZE=new WeakSet;function QE(e){let t=e.wrapped,n=YE.get(t);return n||(n={},YE.set(t,n)),ZE.has(e)||(ZE.add(e),e.onDispose(()=>{XE(t)})),n}function $E(e){return YE.get(e.wrapped)}function eD(e){XE(e.wrapped)}function tD(e){let t=QE(e);if(t.edges)return t.edges;let n=JE(e.wrapped,`edge`);return t.edges=n,n}function nD(e){let t=QE(e);if(t.faces)return t.faces;let n=JE(e.wrapped,`face`);return t.faces=n,n}function rD(e){let t=QE(e);if(t.wires)return t.wires;let n=JE(e.wrapped,`wire`);return t.wires=n,n}function iD(e){let t=QE(e);if(t.vertices)return t.vertices;let n=JE(e.wrapped,`vertex`);return t.vertices=n,n}function aD(e){let t=QE(e);if(t.solids)return t.solids;let n=JE(e.wrapped,`solid`);return t.solids=n,n}function oD(e){let t=QE(e);if(t.shells)return t.shells;let n=JE(e.wrapped,`shell`);return t.shells=n,n}function sD(e){let t=QE(e);if(t.compSolids)return t.compSolids;let n=JE(e.wrapped,`compsolid`);return t.compSolids=n,n}function*cD(e){for(let t of U().iterShapes(e.wrapped,`edge`))yield VE(t,`edge`)}function*lD(e){for(let t of U().iterShapes(e.wrapped,`face`))yield VE(t,`face`)}function*uD(e){for(let t of U().iterShapes(e.wrapped,`wire`))yield VE(t,`wire`)}function*dD(e){for(let t of U().iterShapes(e.wrapped,`vertex`))yield VE(t,`vertex`)}function*fD(e){for(let t of U().iterShapes(e.wrapped,`solid`))yield VE(t,`solid`)}function*pD(e){for(let t of U().iterShapes(e.wrapped,`shell`))yield VE(t,`shell`)}function*mD(e){for(let t of U().iterShapes(e.wrapped,`compsolid`))yield VE(t,`compsolid`)}function hD(e){let t=QE(e);if(t.bounds)return t.bounds;let{min:n,max:r}=U().boundingBox(e.wrapped),i={xMin:n[0],xMax:r[0],yMin:n[1],yMax:r[1],zMin:n[2],zMax:r[2]};return t.bounds=i,i}function gD(e){return rE(U(),e.wrapped)}function _D(e){let t=QE(e);if(t.surfaceType!==void 0)return t.surfaceType;let n=U().surfaceType(e.wrapped);return t.surfaceType=n,n}function vD(e){let t=QE(e);if(t.isValid!==void 0)return t.isValid;let n=U().isValid(e.wrapped);return t.isValid=n,n}function yD(e){return{kind:gD(e),faceCount:nD(e).length,edgeCount:tD(e).length,wireCount:rD(e).length,vertexCount:iD(e).length,valid:vD(e),bounds:hD(e)}}function bD(e){return U().vertexPosition(e.wrapped)}var G=2147483647,xD=Math.PI/180,SD=180/Math.PI;function CD(e){return e.length===2?[e[0],e[1],0]:[e[0],e[1],e[2]]}function wD(e){return[e[0],e[1]]}var TD={X:[1,0,0],Y:[0,1,0],Z:[0,0,1]};function ED(e){if(typeof e==`string`){let t=TD[e];if(!t)throw Error(`Unknown direction: ${e}`);return t}return e}function DD(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function OD(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function kD(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function AD(e){return[-e[0],-e[1],-e[2]]}function jD(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function MD(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function ND(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}function PD(e){return e[0]*e[0]+e[1]*e[1]+e[2]*e[2]}function FD(e,t){return ND(OD(e,t))}function ID(e){let t=ND(e);return t<1e-10?[0,0,0]:[e[0]/t,e[1]/t,e[2]/t]}function LD(e,t,n=1e-5){return Math.abs(e[0]-t[0])<n&&Math.abs(e[1]-t[1])<n&&Math.abs(e[2]-t[2])<n}function RD(e,t=1e-10){return PD(e)<t*t}function zD(e,t){let n=jD(e,t),r=ND(e),i=ND(t);if(r<1e-10||i<1e-10)return 0;let a=Math.max(-1,Math.min(1,n/(r*i)));return Math.acos(a)}function BD(e,t,n){let r=OD(e,t),i=PD(n);return i<1e-20?e:OD(e,kD(n,jD(r,n)/i))}function VD(e,t,n){let r=ID(t),i=Math.cos(n),a=Math.sin(n),o=jD(e,r),s=MD(r,e);return[e[0]*i+s[0]*a+r[0]*o*(1-i),e[1]*i+s[1]*a+r[1]*o*(1-i),e[2]*i+s[2]*a+r[2]*o*(1-i)]}var HD=e=>Math.round(e*1e3)/1e3;function UD(e){return`x: ${HD(e[0])}, y: ${HD(e[1])}, z: ${HD(e[2])}`}function WD(e,t=null,n=[0,0,1]){let r=ID(n);if(RD(r))throw Error(`Plane normal must be non-zero`);let i;if(t)i=ID(t);else{let[e,t,n]=r,a=Math.abs(e),o=Math.abs(t),s=Math.abs(n),c;c=a<=o&&a<=s?[1,0,0]:o<=s?[0,1,0]:[0,0,1];let l=c[1]*n-c[2]*t,u=c[2]*e-c[0]*n,d=c[0]*t-c[1]*e;i=Math.sqrt(l*l+u*u+d*d)>1e-12?ID([l,u,d]):[1,0,0]}if(RD(i))throw Error(`Plane xDir must be non-zero`);let a=ID(MD(r,i));return{origin:e,xDir:i,yDir:a,zDir:r}}var GD={XY:{xDir:[1,0,0],normal:[0,0,1]},YZ:{xDir:[0,1,0],normal:[1,0,0]},ZX:{xDir:[0,0,1],normal:[0,1,0]},XZ:{xDir:[1,0,0],normal:[0,-1,0]},YX:{xDir:[0,1,0],normal:[0,0,-1]},ZY:{xDir:[0,0,1],normal:[-1,0,0]},front:{xDir:[1,0,0],normal:[0,0,1]},back:{xDir:[-1,0,0],normal:[0,0,-1]},left:{xDir:[0,0,1],normal:[-1,0,0]},right:{xDir:[0,0,-1],normal:[1,0,0]},top:{xDir:[1,0,0],normal:[0,1,0]},bottom:{xDir:[1,0,0],normal:[0,-1,0]}};function KD(e,t=[0,0,0]){let n=GD[e];if(!n)return k(P(`UNKNOWN_PLANE`,`Could not find plane ${e}`));let r;return r=typeof t==`number`?kD(n.normal,t):CD(t),O(WD(r,n.xDir,n.normal))}function qD(e,t){return typeof e==`string`?KD(e,t):O(e)}function JD(e,t){return e&&typeof e!=`string`?{...e}:j(qD(e??`XY`,t))}function YD(e,t){let[n,r]=t;return DD(DD(e.origin,kD(e.xDir,n)),kD(e.yDir,r))}function XD(e,t){return{...e,origin:DD(e.origin,t)}}function ZD(e,t,n=[1,0,0]){let r=t*xD,i=VD(e.zDir,n,r),a=VD(e.xDir,n,r),o=ID(MD(i,a));return{origin:e.origin,xDir:a,yDir:o,zDir:i}}var QD={compound:0,solidCompound:1,solid:2,shell:3,face:4,wire:5,edge:6,vertex:7,shape:8},$D=e=>QD[e],eO={vertex:`vertex`,edge:`edge`,wire:`wire`,face:`face`,shell:`shell`,solid:`solid`,solidCompound:`compsolid`,compound:`compound`,shape:`compound`},tO=function*(e,t){let n=U().iterShapes(e,eO[t]);for(let e of n)yield e},nO=e=>U().isNull(e)?k(yo(`NULL_SHAPE`,`This shape has no type, it is null`)):O(e.ShapeType());function rO(e){if(U().isNull(e))return k(yo(`NULL_SHAPE`,`This shape has no type, it is null`));try{return O(U().downcast(e))}catch(e){return k(yo(`NO_WRAPPER`,`Could not find a wrapper for this shape type`,e))}}function iO(e){if(U().isNull(e))return k(yo(`NULL_SHAPE`,`Cannot copy a null shape`));try{return O(U().copyShape(e))}catch(e){return k(yo(`NO_WRAPPER`,`Could not copy this shape`,e))}}function aO(e){return U().isNull(e)?k(yo(`NULL_SHAPE`,`Cannot cast a null shape`)):O(FE(e))}function oO(e){return U().shapeType(e.wrapped)===`compsolid`}function sO(e){return aO(U().fromBREP(e))}var cO={plane:`PLANE`,cylinder:`CYLINDRE`,cone:`CONE`,sphere:`SPHERE`,torus:`TORUS`,bezier:`BEZIER_SURFACE`,bspline:`BSPLINE_SURFACE`,revolution:`REVOLUTION_SURFACE`,extrusion:`EXTRUSION_SURFACE`,offset:`OFFSET_SURFACE`,other:`OTHER_SURFACE`};function lO(e){return O(cO[_D(e)])}function uO(e){return j(lO(e))}function dO(e){return U().shapeOrientation(e.wrapped)===`forward`?`forward`:`backward`}function fO(e){return FE(U().reverseShape(e.wrapped))}function pO(e){return U().uvBounds(e.wrapped)}function mO(e,t,n){let r=pO(e),i=t*(r.uMax-r.uMin)+r.uMin,a=n*(r.vMax-r.vMin)+r.vMin;return U().pointOnSurface(e.wrapped,i,a)}function hO(e,t){let n=CD(t);return U().uvFromPoint(e.wrapped,n)||[0,0]}function gO(e,t){let n=CD(t);try{let t=n,r=U().uvFromPoint(e.wrapped,t);if(!r)return k(yo(`PROJECTION_FAILED`,`No projection found on the face`));let i=U().projectPointOnFace(e.wrapped,t),a=n[0]-i[0],o=n[1]-i[1],s=n[2]-i[2];return O({uv:r,point:i,distance:Math.sqrt(a*a+o*o+s*s)})}catch(e){return k(yo(`PROJECTION_FAILED`,`Point projection failed: ${e instanceof Error?e.message:String(e)}`))}}function _O(e,t){let n,r;if(t)[n,r]=hO(e,t);else{let t=pO(e);n=.5*(t.uMin+t.uMax),r=.5*(t.vMin+t.vMax)}return U().surfaceNormal(e.wrapped,n,r)}function vO(e){return U().surfaceCenterOfMass(e.wrapped)}function yO(e){return U().getSurfaceAxis(e.wrapped)}function bO(e,t,n=1e-6){let[r,i]=hO(e,t);return U().classifyPointOnFace(e.wrapped,r,i,n)}function xO(e){return FE(U().outerWire(e.wrapped))}function SO(e){return FE(U().removeHolesFromFace(e.wrapped))}function CO(e){let t=xO(e);return Array.from(tO(e.wrapped,`wire`)).map(e=>FE(j(rO(e)))).filter(e=>!U().isSame(e.wrapped,t.wrapped))}function wO(e,t){let n=QE(e),r=U(),i=new Map;for(let n of r.iterShapes(e.wrapped,`face`))i.set(r.hashCode(n,G),t),r.dispose(n);n.faceOrigins=i}function TO(e){return $E(e)?.faceOrigins}function EO(e,t,n){let r=new Map;for(let e of t){let t=TO(e);if(t)for(let[e,n]of t)r.set(e,n)}if(r.size===0)return;let i=new Map;for(let[t,n]of r){if(e.deleted.has(t))continue;let r=e.modified.get(t);if(r&&r.length>0)for(let e of r)i.set(e,n);else i.set(t,n);let a=e.generated.get(t);if(a)for(let e of a)i.has(e)||i.set(e,n)}if(i.size>0){let e=QE(n);e.faceOrigins=i}}var DO=100,OO=.985,kO=.1;function AO(e,t,n,r){let i=-1/0,a;for(let n of r){let r=e[0]*n.normal[0]+e[1]*n.normal[1]+e[2]*n.normal[2];if(r<.707)continue;let o=t[0]-n.centroid[0],s=t[1]-n.centroid[1],c=t[2]-n.centroid[2],l=o*o+s*s+c*c;if(l>DO)continue;let u=r-l/DO;u>i&&(i=u,a=n.origin)}if(a!==void 0)return a;if(!n)return;let o=1/0,s;for(let n of r){if(!n.planar)continue;let r=e[0]*n.normal[0]+e[1]*n.normal[1]+e[2]*n.normal[2];if(Math.abs(r)<OO)continue;let i=t[0]-n.centroid[0],a=t[1]-n.centroid[1],c=t[2]-n.centroid[2],l=i*n.normal[0]+a*n.normal[1]+c*n.normal[2];if(l*l>kO)continue;let u=Math.max(0,i*i+a*a+c*c-l*l);u<o&&(o=u,s=n.origin)}return s}function jO(e,t){let n=new Map;for(let t of e){let e=TO(t);if(e)for(let[t,r]of e)n.set(t,r)}if(n.size===0)return;let r=U(),i=new Map,a=nD(t),o=[];for(let e of a){let t=r.hashCode(e.wrapped,G),a=n.get(t);a===void 0?o.push(e):i.set(t,a)}if(o.length>0){let t=[];for(let n of e){let e=TO(n);if(e)for(let i of nD(n)){let n=r.hashCode(i.wrapped,G),a=e.get(n);if(a!==void 0)try{let e=r.uvBounds(i.wrapped),n=r.surfaceNormal(i.wrapped,.5*(e.uMin+e.uMax),.5*(e.vMin+e.vMax)),o=r.surfaceCenterOfMass(i.wrapped),s=r.surfaceType(i.wrapped)===`plane`;t.push({origin:a,normal:n,centroid:o,planar:s})}catch{}}}if(t.length>0)for(let e of o){let n=r.hashCode(e.wrapped,G);try{let a=r.uvBounds(e.wrapped),o=AO(r.surfaceNormal(e.wrapped,.5*(a.uMin+a.uMax),.5*(a.vMin+a.vMax)),r.surfaceCenterOfMass(e.wrapped),r.surfaceType(e.wrapped)===`plane`,t);o!==void 0&&i.set(n,o)}catch{}}}if(i.size>0){let e=QE(t);e.faceOrigins=i}}var MO=new WeakMap,NO=new WeakMap;function PO(e){return MO.has(e.wrapped)}function FO(e){let t=MO.get(e.wrapped);return t||(t=new Map,MO.set(e.wrapped,t)),t}function IO(e){let t=NO.get(e.wrapped);return t||(t=new Map,NO.set(e.wrapped,t)),t}function LO(e,t,n){let r=Array.isArray(t)?t:nD(e).filter(t),i=FO(e),a=i.get(n)??new Set;for(let e of r)a.add(U().hashCode(e.wrapped,G));return i.set(n,a),e}function RO(e,t){let n=MO.get(e.wrapped);if(!n)return[];let r=n.get(t);if(!r||r.size===0)return[];let i=[];for(let t of nD(e)){let e=U().hashCode(t.wrapped,G);r.has(e)&&i.push(t)}return i}function zO(e){let t=new Map,n=MO.get(e.wrapped);if(!n)return t;let r=nD(e),i=new Map;for(let e of r)i.set(U().hashCode(e.wrapped,G),e);for(let[e,r]of n){let n=[];for(let e of r){let t=i.get(e);t&&n.push(t)}n.length>0&&t.set(e,n)}return t}function BO(e,t,n){return IO(e).set(t,n),e}function VO(e,t){return NO.get(e.wrapped)?.get(t)}function HO(e,t,n){let r=e.get(t)??new Set;r.add(n),e.set(t,r)}function UO(e,t,n){let r=FO(n);for(let i of t){let t=MO.get(i.wrapped);if(!t)continue;let a=new Map;for(let[e,n]of t)for(let t of n){let n=a.get(t)??[];n.push(e),a.set(t,n)}for(let[t,n]of a){if(e.deleted.has(t))continue;let i=e.modified.get(t),a=i&&i.length>0?i:[t];for(let e of a)for(let t of n)HO(r,t,e)}let o=NO.get(i.wrapped);if(o){let e=IO(n);for(let[t,n]of o)e.has(t)||e.set(t,n)}}}var WO=new WeakMap,GO=new WeakMap;function KO(e){return WO.has(e.wrapped)||GO.has(e.wrapped)}function qO(e){let t=GO.get(e.wrapped);return t||(t=new Map,GO.set(e.wrapped,t)),t}function JO(e){if(typeof e==`string`){let t=e.startsWith(`#`)?e.slice(1):e;return t.length===3&&(t=t.charAt(0)+t.charAt(0)+t.charAt(1)+t.charAt(1)+t.charAt(2)+t.charAt(2)),[parseInt(t.slice(0,2),16)/255,parseInt(t.slice(2,4),16)/255,parseInt(t.slice(4,6),16)/255,1]}return e.length===3?[e[0],e[1],e[2],1]:[e[0],e[1],e[2],e[3]]}function YO(e,t){return WO.set(e.wrapped,JO(t)),e}function XO(e,t,n){let r=JO(n),i=qO(e);for(let e of t)i.set(U().hashCode(e.wrapped,G),r);return e}function ZO(e){return WO.get(e.wrapped)}function QO(e,t){let n=GO.get(e.wrapped);if(n)return n.get(U().hashCode(t.wrapped,G))}function $O(e,t,n){for(let e of t){let t=WO.get(e.wrapped);if(t){WO.set(n.wrapped,t);break}}let r=qO(n);for(let n of t){let t=GO.get(n.wrapped);if(!(!t||t.size===0))for(let[n,i]of t){if(e.deleted.has(n))continue;let t=e.modified.get(n);if(t&&t.length>0)for(let e of t)r.set(e,i);else r.set(n,i)}}}function ek(e){return TO(e)!==void 0||PO(e)||KO(e)}function tk(e){if(!e.some(ek))return[];let t=U(),n=[];for(let r of e){let e=t.iterShapes(r.wrapped,`face`);for(let r of e)n.push(t.hashCode(r,G)),t.dispose(r)}return n}function nk(e,t,n){EO(e,t,n),UO(e,t,n),$O(e,t,n)}function rk(e,t){jO(e,t)}function ik(e,t){let n=U(),r=[...n.iterShapes(e.wrapped,`face`)],i=[...n.iterShapes(t.wrapped,`face`)];if(r.length!==i.length)return;let a=new Map;for(let e=0;e<r.length;e++){let t=r[e],o=i[e];t===void 0||o===void 0||a.set(n.hashCode(t,G),[n.hashCode(o,G)])}for(let e of r)n.dispose(e);for(let e of i)n.dispose(e);nk({modified:a,generated:new Map,deleted:new Set},[e],t)}function ak(e,t){let n=tk([e]),{shape:r,evolution:i}=U().translateWithHistory(e.wrapped,t[0],t[1],t[2],n,G),a=W(r);return nk(i,[e],a),a}function ok(e,t,n=[0,0,0],r=[0,0,1]){let i=tk([e]),{shape:a,evolution:o}=U().rotateWithHistory(e.wrapped,t*xD,i,G,r,n),s=W(a);return nk(o,[e],s),s}function sk(e,t=[0,1,0],n=[0,0,0]){let r=tk([e]),{shape:i,evolution:a}=U().mirrorWithHistory(e.wrapped,n,t,r,G),o=W(i);return nk(a,[e],o),o}function ck(e,t,n=[0,0,0]){let r=tk([e]),{shape:i,evolution:a}=U().scaleWithHistory(e.wrapped,n,t,r,G),o=W(i);return nk(a,[e],o),o}function lk(e,t,n){let r=U().boundingBox(e.wrapped),i=[r.max[0]-r.min[0],r.max[1]-r.min[1],r.max[2]-r.min[2]],a=n?.auto===!0;function o(e,t,n){return e!==void 0&&t>1e-12?e/t:e===void 0&&a?n:1}let s=1;a&&(t[0]!==void 0&&i[0]>1e-12?s=t[0]/i[0]:t[1]!==void 0&&i[1]>1e-12?s=t[1]/i[1]:t[2]!==void 0&&i[2]>1e-12&&(s=t[2]/i[2]));let c=[o(t[0],i[0],s),o(t[1],i[1],s),o(t[2],i[2],s)];return Math.abs(c[0]-c[1])<1e-6&&Math.abs(c[1]-c[2])<1e-6?O(ck(e,c[0])):k(P(M.VALIDATION_FAILED,`resize: non-uniform scaling is not supported (WASM build lacks BRepBuilderAPI_GTransform).`,void 0,void 0,`Use auto: true to scale proportionally, or set all three dimensions to achieve uniform scaling.`))}function uk(e){if(`linear`in e)return O({linear:e.linear,translation:e.translation});let[t,n,r,i]=e,a=1e-10;return Math.abs(i[0])>a||Math.abs(i[1])>a||Math.abs(i[2])>a||Math.abs(i[3]-1)>a?k(P(M.VALIDATION_FAILED,`applyMatrix: invalid bottom row [${String(i[0])}, ${String(i[1])}, ${String(i[2])}, ${String(i[3])}]. Must be [0, 0, 0, 1] for an affine transform.`)):O({linear:[t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]],translation:[t[3],n[3],r[3]]})}function dk(e){return e[0]*(e[4]*e[8]-e[5]*e[7])-e[1]*(e[3]*e[8]-e[5]*e[6])+e[2]*(e[3]*e[7]-e[4]*e[6])}function fk(e){let t=1e-8,n=e[0]*e[0]+e[3]*e[3]+e[6]*e[6],r=e[1]*e[1]+e[4]*e[4]+e[7]*e[7],i=e[2]*e[2]+e[5]*e[5]+e[8]*e[8],a=e[0]*e[1]+e[3]*e[4]+e[6]*e[7],o=e[0]*e[2]+e[3]*e[5]+e[6]*e[8],s=e[1]*e[2]+e[4]*e[5]+e[7]*e[8];return!(Math.abs(a)>t||Math.abs(o)>t||Math.abs(s)>t||Math.abs(n-r)>t||Math.abs(n-i)>t)}function pk(e,t){let n=uk(t);if(!n.ok)return n;let{linear:r,translation:i}=n.value,a=dk(r);if(Math.abs(a)<1e-12)return k(P(M.VALIDATION_FAILED,`applyMatrix: singular matrix (determinant ≈ 0). Cannot apply a non-invertible transform.`));if(fk(r)){let t=tk([e]),{shape:n,evolution:a}=U().generalTransformWithHistory(e.wrapped,r,i,!0,t,G),o=W(n);return nk(a,[e],o),O(o)}let o=W(U().generalTransformNonOrthogonal(e.wrapped,r,i));return rk([e],o),O(o)}function mk(e){let t=e.map(e=>e.type===`translate`?{type:`translate`,x:e.v[0],y:e.v[1],z:e.v[2]}:{type:`rotate`,angle:e.angle,axis:e.axis,center:e.center}),{handle:n,dispose:r}=U().composeTransform(t);return{trsf:n,cleanup:r}}function hk(e,t){let{trsf:n,cleanup:r}=mk(`type`in t?[t]:t),i;try{i=W(U().locate(e.wrapped,n))}finally{r()}return ek(e)&&ik(e,i),i}function gk(e,t){let n=tk([e]),{shape:r,evolution:i}=U().applyComposedTransformWithHistory(e.wrapped,t.trsf,n,G),a=W(r);return nk(i,[e],a),a}function _k(e){return GE(()=>U().copyShape(e.wrapped),M.CLONE_FAILED,`Failed to clone shape`)}function vk(e){return KE(()=>U().toBREP(e.wrapped),M.TO_BREP_FAILED,`Failed to serialize shape to BREP`)}function yk(e){return U().hashCode(e.wrapped,G)}function bk(e){return U().isNull(e.wrapped)}function xk(e,t){return U().isSame(e.wrapped,t.wrapped)}function Sk(e,t){return U().isEqual(e.wrapped,t.wrapped)}function Ck(e){return GE(()=>U().simplify(e.wrapped),M.SIMPLIFY_FAILED,`Failed to simplify shape`)}function wk(e){return U().curveType(e.wrapped)}function Tk(e){let[t]=U().curveParameters(e.wrapped);return U().curvePointAtParam(e.wrapped,t)}function Ek(e){let[,t]=U().curveParameters(e.wrapped);return U().curvePointAtParam(e.wrapped,t)}function Dk(e,t=.5){let[n,r]=U().curveParameters(e.wrapped),i=n+(r-n)*t;return U().curvePointAtParam(e.wrapped,i)}function Ok(e,t=.5){let[n,r]=U().curveParameters(e.wrapped),i=n+(r-n)*t;return U().curveTangent(e.wrapped,i).tangent}function kk(e){return U().length(e.wrapped)}function Ak(e){if(wk(e)!==`CIRCLE`)return null;let t=Dk(e,0),n=Dk(e,1/3),r=Dk(e,2/3),i=[n[0]-t[0],n[1]-t[1],n[2]-t[2]],a=[r[0]-t[0],r[1]-t[1],r[2]-t[2]],o=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],s=o[0]*o[0]+o[1]*o[1]+o[2]*o[2];if(s<1e-18)return null;let c=i[0]*i[0]+i[1]*i[1]+i[2]*i[2],l=a[0]*a[0]+a[1]*a[1]+a[2]*a[2],u=[c*a[0]-l*i[0],c*a[1]-l*i[1],c*a[2]-l*i[2]],d=[u[1]*o[2]-u[2]*o[1],u[2]*o[0]-u[0]*o[2],u[0]*o[1]-u[1]*o[0]],f=1/(2*s),p=[t[0]+d[0]*f,t[1]+d[1]*f,t[2]+d[2]*f],m=Math.sqrt(s);return{origin:p,direction:[o[0]/m,o[1]/m,o[2]/m]}}function jk(e){return U().curveIsClosed(e.wrapped)}function Mk(e){return U().curveIsPeriodic(e.wrapped)}function Nk(e){return U().curvePeriod(e.wrapped)}function Pk(e){return U().shapeOrientation(e.wrapped)===`forward`?`forward`:`backward`}function Fk(e){return W(U().reverseShape(e.wrapped))}function Ik(e,t={}){if(e.length<2)return k(yo(`INTERPOLATE_MIN_POINTS`,`Interpolation requires at least 2 points`));try{let n=W(U().interpolatePoints(e,t));return DE(n)?O(n):(zE(n),k(yo(`INTERPOLATE_NOT_EDGE`,`Interpolation did not produce an edge`)))}catch(e){return k(yo(`INTERPOLATE_FAILED`,`Interpolation failed: ${e instanceof Error?e.message:String(e)}`))}}function Lk(e,t={}){if(e.length<2)return k(yo(`APPROXIMATE_MIN_POINTS`,`Approximation requires at least 2 points`));try{let n=W(U().approximatePoints(e,t));return DE(n)?O(n):(zE(n),k(yo(`APPROXIMATE_NOT_EDGE`,`Approximation did not produce an edge`)))}catch(e){return k(yo(`APPROXIMATE_FAILED`,`Approximation failed: ${e instanceof Error?e.message:String(e)}`))}}function Rk(e,t,n=`arc`){let r=W(U().offsetWire2D(e.wrapped,t,{arc:`arc`,intersection:`intersection`,tangent:`tangent`,chamfer:`intersection`}[n]));return OE(r)?O(r):(zE(r),k(yo(`OFFSET_NOT_WIRE`,`Offset did not produce a Wire`)))}function zk(e,t,n,r=!1){return`${e}:${t}:${n}:${r}`}function Bk(e,t){return`edge:${e}:${t}`}var Vk=new WeakMap,Hk=new WeakMap;function Uk(e,t){let n=Vk.get(e);if(n)return n.get(t)}function Wk(e,t,n){let r=Vk.get(e);r||(r=new Map,Vk.set(e,r)),r.set(t,n)}function Gk(e,t){let n=Hk.get(e);if(n)return n.get(t)}function Kk(e,t,n){let r=Hk.get(e);r||(r=new Map,Hk.set(e,r)),r.set(t,n)}function qk(){Vk=new WeakMap,Hk=new WeakMap}function Jk(){let e=new WeakMap,t=new WeakMap;return{getMesh(t,n){return e.get(t)?.get(n)},setMesh(t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)},getEdgeMesh(e,n){return t.get(e)?.get(n)},setEdgeMesh(e,n,r){let i=t.get(e);i||(i=new Map,t.set(e,i)),i.set(n,r)},clear(){e=new WeakMap,t=new WeakMap}}}function Yk(e,t={}){let n=ko(),{tolerance:r=n.tolerance,angularTolerance:i=n.angularTolerance,skipNormals:a=!1,includeUVs:o=!1,cache:s=!0,signal:c}=t;c?.throwIfAborted();let l=zk(r,i,a,o);if(s){let t=Uk(e.wrapped,l);if(t)return t}let u=U().mesh(e.wrapped,{tolerance:r,angularTolerance:i,skipNormals:a,includeUVs:o,...c?{signal:c}:{}}),d=TO(e),f={vertices:u.vertices,normals:u.normals,triangles:u.triangles,uvs:u.uvs,faceGroups:u.faceGroups.map(e=>({start:e.start,count:e.count,faceId:e.faceHash,origin:d?.get(e.faceHash)??0}))};return s&&Wk(e.wrapped,l,f),f}function Xk(e,t={}){let n=ko(),{tolerance:r=n.tolerance,angularTolerance:i=n.angularTolerance,cache:a=!0}=t,o=Bk(r,i);if(a){let t=Gk(e.wrapped,o);if(t)return t}let s=U().meshEdges(e.wrapped,r,i),c={lines:s.lines,edgeGroups:s.edgeGroups.map(e=>({start:e.start,count:e.count,edgeId:e.edgeHash}))};return a&&Kk(e.wrapped,o,c),c}function Zk(e,t){return e instanceof Error&&e.message.startsWith(`${t} export failed`)?So(`${t}_EXPORT_FAILED`,`Failed to write ${t} file`,e):e instanceof WebAssembly.RuntimeError?So(`${t}_EXPORT_CRASHED`,`${t} export crashed the kernel (${e.message}); the shape likely contains geometry the ${t} writer cannot serialize`,e):So(`${t}_FILE_READ_ERROR`,`Failed to read exported ${t} file`,e)}function Qk(e){let t;try{t=aD(e)}catch{return``}if(t.length<=1)return``;let n=[];return t.forEach((e,t)=>{try{hD(e)}catch(e){if(e instanceof TypeError)throw e;n.push(t)}}),n.length===0?`; could not localize the offending sub-solid among ${t.length} solids`:`; offending sub-solid${n.length>1?`s`:``} (of ${t.length}): index ${n.join(`, `)}`}function $k(e,t){try{return hD(e),null}catch(n){if(n instanceof TypeError)throw n;return So(`${t}_EXPORT_UNSERIALIZABLE`,`${t} export aborted: the shape contains degenerate geometry the ${t} writer cannot serialize (bounding-box evaluation failed); export was skipped to avoid crashing the kernel${Qk(e)}`,n)}}function eA(e){let t=$k(e,`STEP`);if(t)return k(t);try{let t=U().exportSTEP([e.wrapped]);return O(new Blob([t],{type:`application/STEP`}))}catch(e){return k(Zk(e,`STEP`))}}function tA(e,t={}){let n=ko(),{tolerance:r=n.tolerance,angularTolerance:i=n.angularTolerance,binary:a=!1}=t,o=$k(e,`STL`);if(o)return k(o);try{U().hasTriangulation(e.wrapped)||U().meshShape(e.wrapped,r,i);let t=U().exportSTL(e.wrapped,a,r,i);return O(new Blob([t],{type:`application/sla`}))}catch(e){return k(Zk(e,`STL`))}}function nA(e){try{let t=U().exportIGES([e.wrapped]);return O(new Blob([t],{type:`application/iges`}))}catch(e){return k(So(`IGES_EXPORT_FAILED`,`Failed to write IGES file`,e))}}function rA(e,t){let n=t?.coarseTolerance??.5,r=t?.fineTolerance??.05,i=t?.angularTolerance??.5;return{coarse:Yk(e,{tolerance:n,angularTolerance:i}),fine:Yk(e,{tolerance:r,angularTolerance:i*.2})}}function iA(e){let t=hD(e),n=t.xMax-t.xMin,r=t.yMax-t.yMin,i=t.zMax-t.zMin;return Math.sqrt(n*n+r*r+i*i)||1}function aA(e,t){let n;if(t.tolerances&&t.tolerances.length>0)n=[...t.tolerances];else{let r=Math.max(1,Math.floor(t.levels??3)),i=t.spacing??4,a=(t.relativeTolerance??5e-4)*iA(e)||2**-52;n=[];for(let e=r-1;e>=0;e--)n.push(a*i**e)}return n.sort((e,t)=>t-e),n}function oA(e,t,n){return Math.min(e/t*n,1)}function sA(e,t={}){let n=t.angularTolerance??ko().angularTolerance,r=t.cache??!0,i=aA(e,t),a=Math.min(...i);return i.map(i=>{let o=oA(i,a,n);return{tolerance:i,angularTolerance:o,mesh:Yk(e,{tolerance:i,angularTolerance:o,cache:r,...t.signal?{signal:t.signal}:{}})}})}function cA(){return new Promise(e=>{setTimeout(e,0)})}async function lA(e,t={}){let n=t.angularTolerance??ko().angularTolerance,r=t.cache??!0,i=t.meshLevel??((e,n,i)=>Yk(e,{tolerance:n,angularTolerance:i,cache:r,...t.signal?{signal:t.signal}:{}})),a=aA(e,t),o=Math.min(...a),s=[];for(let[r,c]of a.entries()){if(t.signal?.aborted)break;let l=oA(c,o,n),u;try{u=await i(e,c,l)}catch(e){if(t.signal?.aborted)break;throw e}let d={tolerance:c,angularTolerance:l,mesh:u};if(s.push(d),t.onLevel?.(d,r),t.signal?.aborted||r===a.length-1)break;await cA()}return s}function uA(e,t,n){if(t<0||t>=e.length)throw Error(n??`Index ${t} out of bounds (length ${e.length})`);return e[t]}function dA(e,t){if(e.length===0)throw Error(t??`Expected non-empty array`);return e[0]}function fA(e,t){if(e.length===0)throw Error(t??`Expected non-empty array`);return e[e.length-1]}function pA(e){return Array.from(Array(e).keys())}function mA(e){return pA(Math.min(...e.map(e=>e.length))).map(t=>e.map(e=>e[t]))}function hA(e,t){return yE(U().makeLineEdge([...e],[...t]))}function gA(e,t=[0,0,0],n=[0,0,1]){return yE(U().makeCircleEdge([...t],[...n],e))}function _A(e,t,n=[0,0,0],r=[0,0,1],i){return t>e?k(P(`ELLIPSE_RADII`,`The minor radius must be smaller than the major one`)):O(yE(U().makeEllipseEdge([...n],[...r],e,t,i?[...i]:void 0)))}function vA(e,t,n,r=[0,0,0],i=[0,0,1],a=!1){return bE(U().makeHelixWire(e,t,n,[...r],[...i],a))}function yA(e,t,n){return yE(U().makeArcEdge([...e],[...t],[...n]))}function bA(e,t,n,r,i=[0,0,0],a=[0,0,1],o){return t>e?k(P(`ELLIPSE_RADII`,`The minor radius must be smaller than the major one`)):O(yE(U().makeEllipseArc([...i],[...a],e,t,n,r,o?[...o]:void 0)))}function xA(e,{tolerance:t=.001,smoothing:n=null,degMax:r=6,degMin:i=1}={}){try{let a=e.map(e=>[...e]);return O(yE(U().approximatePoints(a,{tolerance:t,degMin:i,degMax:r,smoothing:n})))}catch(e){return k(N(`BSPLINE_FAILED`,`B-spline approximation failed`,e))}}function SA(e,{periodic:t=!1,tolerance:n=1e-7}={}){try{let r=e.map(e=>[...e]);return O(yE(U().interpolatePoints(r,{periodic:t,tolerance:n})))}catch(e){return k(N(`BSPLINE_INTERP_FAILED`,`B-spline interpolation failed`,e))}}function CA(e){if(e.length<2)return k(P(`BEZIER_MIN_POINTS`,`Need at least 2 points for a Bezier curve, got ${e.length}`,void 0,{pointCount:e.length}));let t=e.map(e=>[...e]);return O(yE(U().makeBezierEdge(t)))}function wA(e,t,n){return yE(U().makeTangentArc([...e],[...t],[...n]))}function TA(e){try{return O(bE(U().makeWireFromMixed(e.map(e=>e.wrapped))))}catch(e){return k(N(`WIRE_BUILD_FAILED`,`Failed to build the wire: ${e instanceof Error?e.message:`unknown error`}`))}}function EA(e,t){try{let n=U().makeFace(e.wrapped,!0);if(t&&t.length>0){let e=AA(xE(n),t);return pE(e)?O(e):k(P(`FACE_NOT_PLANAR`,`makeFace produced a non-planar face — wire may not be truly planar`))}let r=xE(n);return pE(r)?O(r):k(P(`FACE_NOT_PLANAR`,`makeFace produced a non-planar face — wire may not be truly planar`))}catch(e){return k(N(`FACE_BUILD_FAILED`,`Failed to build the face. Your wire might be non planar.`,e))}}function DA(e){return EA(xO(e))}function OA(e,t){return xE(U().makeFaceOnSurface(e.wrapped,t.wrapped))}function kA(e){try{return qa(aO(U().makeNonPlanarFace(e.wrapped)),e=>kE(e)?O(e):k(N(`FACE_BUILD_FAILED`,`Failed to create a non-planar face`)))}catch(e){return k(N(`FACE_BUILD_FAILED`,`Failed to create a non-planar face`,e))}}function AA(e,t){return xE(U().addHolesInFace(e.wrapped,t.map(e=>e.wrapped)))}function jA(e){try{var t=jT();if(e.length<3)return k(P(`POLYGON_MIN_POINTS`,`You need at least 3 points to make a polygon`));let n=[...e.slice(1),e[0]],r=t.u(new WT);return qa(TA(mA([e,n]).map(([e,t])=>r.register(hA(e,t)))),e=>EA(r.register(e)))}catch(e){t.e=e}finally{t.d()}}function MA(e,t){return U().isNull(e.wrapped)?k(P(M.NULL_SHAPE_INPUT,`${t} is a null shape`)):O(void 0)}function NA(e,t,n,r,i){let a=FE(e);if(!NE(a)){let o=iE(a).toUpperCase();return LE(e,a),zE(a),k(yo(t,`${n}. Got ${o} instead.`,void 0,i?{diagnostics:i}:void 0,r))}return LE(e,a),O(a)}function PA(e,t,{optimisation:n=`none`,simplify:r=!1,signal:i,fuzzyValue:a,unsafe:o,trackEvolution:s=!0}={}){if(i?.aborted)throw i.reason;let c=MA(e,`fuse: first operand`);if(A(c))return c;let l=MA(t,`fuse: second operand`);if(A(l))return l;if(!s)return NA(U().fuse(e.wrapped,t.wrapped,{optimisation:n,simplify:r,fuzzyValue:a}),`FUSE_NOT_3D`,`Fuse did not produce a 3D shape`);let u=tk([e,t]),{shape:d,evolution:f,diagnostics:p}=U().fuseWithHistory(e.wrapped,t.wrapped,u,G,{optimisation:n,simplify:r,fuzzyValue:a});if(p.hasErrors){if(U().isNull(d))return U().dispose(d),console.warn(`brepjs: fuse history path produced null result; retrying without evolution tracking.`,p),NA(U().fuse(e.wrapped,t.wrapped,{optimisation:n,simplify:r,fuzzyValue:a}),`FUSE_NOT_3D`,`Fuse did not produce a 3D shape`);console.warn(`brepjs: fuse reported OCCT warnings/errors but produced a shape. Continuing with result.`,p)}let m=NA(d,`FUSE_NOT_3D`,`Fuse did not produce a 3D shape`,`Common causes: overlapping coplanar faces, zero-thickness geometry, or non-manifold input. Try autoHeal() on inputs first.`,p);return m.ok&&nk(f,[e,t],m.value),m}function FA(e,t,{optimisation:n=`none`,simplify:r=!1,signal:i,fuzzyValue:a,unsafe:o,trackEvolution:s=!0}={}){if(i?.aborted)throw i.reason;let c=MA(e,`cut: base`);if(A(c))return c;let l=MA(t,`cut: tool`);if(A(l))return l;if(!s)return NA(U().cut(e.wrapped,t.wrapped,{optimisation:n,simplify:r,fuzzyValue:a}),`CUT_NOT_3D`,`Cut did not produce a 3D shape`);let u=tk([e,t]),{shape:d,evolution:f,diagnostics:p}=U().cutWithHistory(e.wrapped,t.wrapped,u,G,{optimisation:n,simplify:r,fuzzyValue:a});if(p.hasErrors){if(U().isNull(d))return U().dispose(d),console.warn(`brepjs: cut history path produced null result; retrying without evolution tracking.`,p),NA(U().cut(e.wrapped,t.wrapped,{optimisation:n,simplify:r,fuzzyValue:a}),`CUT_NOT_3D`,`Cut did not produce a 3D shape`);console.warn(`brepjs: cut reported OCCT warnings/errors but produced a shape. Continuing with result.`,p)}let m=NA(d,`CUT_NOT_3D`,`Cut did not produce a 3D shape`,`Common causes: tool does not fully intersect the base, or produces a zero-thickness sliver. Ensure the tool extends through the shape.`,p);return m.ok&&nk(f,[e,t],m.value),m}function IA(e,t,{simplify:n=!1,signal:r,fuzzyValue:i,unsafe:a,trackEvolution:o=!0}={}){if(r?.aborted)throw r.reason;let s=MA(e,`intersect: first operand`);if(A(s))return s;let c=MA(t,`intersect: second operand`);if(A(c))return c;if(!o)return NA(U().intersect(e.wrapped,t.wrapped,{simplify:n,fuzzyValue:i}),`INTERSECT_NOT_3D`,`Intersect did not produce a 3D shape`);let l=tk([e,t]),{shape:u,evolution:d,diagnostics:f}=U().intersectWithHistory(e.wrapped,t.wrapped,l,G,{simplify:n,fuzzyValue:i});if(f.hasErrors){if(U().isNull(u))return U().dispose(u),console.warn(`brepjs: intersect history path produced null result; retrying without evolution tracking.`,f),NA(U().intersect(e.wrapped,t.wrapped,{simplify:n,fuzzyValue:i}),`INTERSECT_NOT_3D`,`Intersect did not produce a 3D shape`);console.warn(`brepjs: intersect reported OCCT warnings/errors but produced a shape. Continuing with result.`,f)}let p=NA(u,`INTERSECT_NOT_3D`,`Intersect did not produce a 3D shape`,`Shapes may not overlap. Verify they share a common volume before intersecting.`,f);return p.ok&&nk(d,[e,t],p.value),p}function LA(e,t,n,r,i,a,o,s){if(o?.aborted)throw o.reason;let c=n-t;if(c===1)return O(uA(e,t));if(c===2)return PA(uA(e,t),uA(e,t+1),{optimisation:r,simplify:!1,trackEvolution:a,fuzzyValue:s,unsafe:!0,...o?{signal:o}:{}});let l=t+Math.ceil(c/2),u=LA(e,t,l,r,i,a,o,s);if(A(u))return u;let d=LA(e,l,n,r,i,a,o,s);return A(d)?d:PA(u.value,d.value,{optimisation:r,simplify:i,trackEvolution:a,fuzzyValue:s,unsafe:!0,...o?{signal:o}:{}})}function RA(e,{optimisation:t=`none`,simplify:n=!1,strategy:r=`native`,signal:i,fuzzyValue:a,unsafe:o,trackEvolution:s=!0}={}){if(i?.aborted)throw i.reason;if(e.length===0)return k(P(`FUSE_ALL_EMPTY`,`fuseAll requires at least one shape`));if(e.length===1)return O(dA(e));for(let t=0;t<e.length;t++){let n=MA(uA(e,t),`fuseAll: shape at index ${t}`);if(A(n))return n}if(r===`native`){let o=NA(U().fuseAll(e.map(e=>e.wrapped),{optimisation:t,simplify:n,strategy:r,fuzzyValue:a,...i?{signal:i}:{}}),`FUSE_ALL_NOT_3D`,`fuseAll did not produce a 3D shape`);return o.ok&&s&&rk(e,o.value),o}return LA(e,0,e.length,t,n,s,i,a)}function zA(e,t,{optimisation:n=`none`,simplify:r=!1,signal:i,fuzzyValue:a,unsafe:o,trackEvolution:s=!0}={}){if(i?.aborted)throw i.reason;if(t.length===0)return O(e);let c=MA(e,`cutAll: base`);if(A(c))return c;for(let e=0;e<t.length;e++){let n=MA(uA(t,e),`cutAll: tool at index ${e}`);if(A(n))return n}let l=[e,...t],u=NA(U().cutAll(e.wrapped,t.map(e=>e.wrapped),{optimisation:n,simplify:r,fuzzyValue:a}),`CUT_ALL_NOT_3D`,`cutAll did not produce a 3D shape`);return u.ok&&s&&rk(l,u.value),u}function BA(e,t){let n=U(),r=kD(e.xDir,t),i=kD(e.yDir,t),a=kD(e.xDir,-t),o=kD(e.yDir,-t),s=e.origin,c=[...DD(DD(s,a),o)],l=[...DD(DD(s,r),o)],u=[...DD(DD(s,r),i)],d=[...DD(DD(s,a),i)],f=[n.makeLineEdge(c,l),n.makeLineEdge(l,u),n.makeLineEdge(u,d),n.makeLineEdge(d,c)],p=n.makeWire(f),m=n.makeFace(p,!0);for(let e of f)n.dispose(e);return n.dispose(p),m}function VA(e,t,{approximation:n=!0,planeSize:r=1e4}={}){if(U().isNull(e.wrapped))return k(P(M.NULL_SHAPE_INPUT,`section: shape is a null shape`));let i=BA(typeof t==`string`?j(qD(t)):t,r);try{return O(W(U().section(e.wrapped,i,n)))}catch(e){let n=e instanceof Error?e.message:String(e),r=typeof t==`string`?t:`custom`;return k(N(`SECTION_FAILED`,`Section with ${r} plane failed: ${n}`,e,{operation:`section`,plane:r},`The cutting plane may not intersect the shape. Verify plane position relative to shape bounds.`))}finally{U().dispose(i)}}function HA(e){let t=U(),n=new Map,r=new Map;for(let i of e){let e=iD(i),a=e[0]?t.hashCode(e[0].wrapped,G):-1,o=e.length>1&&e[1]?t.hashCode(e[1].wrapped,G):a;r.set(i,[a,o]);for(let e of[a,o]){let t=n.get(e)??[];t.push(i),n.set(e,t)}}return{vertexToEdges:n,edgeVertexHashes:r}}function UA(e,t,n){let r=t.vertexToEdges.get(e);if(r)for(let i of r){if(n.has(i))continue;let r=t.edgeVertexHashes.get(i);if(r)return n.add(i),{edge:i,nextTip:r[0]===e?r[1]:r[0]}}}function WA(e,t,n){n.add(e);let r=[e],i=t.edgeVertexHashes.get(e);if(!i)return r;let a=[i[1],i[0]];for(let e=0;e<2;e++){let i=a[e];if(i===void 0)continue;let o=UA(i,t,n);for(;o;)e===0?r.push(o.edge):r.unshift(o.edge),i=o.nextTip,o=UA(i,t,n)}return r}function GA(e){let t=U(),n=HA(e),r=new Set,i=[];for(let a of e){if(r.has(a))continue;let e=WA(a,n,r);try{let n=t.makeWire(e.map(e=>e.wrapped));i.push(W(n))}catch{}}return i}function KA(e){let t=U(),n=0,r=-1;for(let i=0;i<e.length;i++){let a=e[i];if(!a)continue;let o=t.boundingBox(a.wrapped),s=o.max[0]-o.min[0],c=o.max[1]-o.min[1],l=o.max[2]-o.min[2],u=s*s+c*c+l*l;u>r&&(r=u,n=i)}return n}function qA(e,t,n={}){let r=VA(e,t,n);if(!r.ok)return r;let i=rD(r.value);if(i.length===0){let e=tD(r.value);if(e.length===0)return k(N(`SECTION_FAILED`,`sectionToFace: section produced no geometry`,void 0,void 0,`The cutting plane may not intersect the shape. Verify plane position relative to shape bounds.`));i.push(...GA(e))}if(i.length===0)return k(N(`SECTION_FAILED`,`sectionToFace: section produced no usable geometry`,void 0,void 0,`The cutting plane may not intersect the shape. Verify plane position relative to shape bounds.`));let a=KA(i),o=uA(i,a),s=i.filter((e,t)=>t!==a);return EA(o,s.length>0?s:void 0)}function JA(e,t){if(t.length===0)return O(e);if(U().isNull(e.wrapped))return k(P(M.NULL_SHAPE_INPUT,`split: shape is a null shape`));for(let e=0;e<t.length;e++)if(U().isNull(uA(t,e).wrapped))return k(P(M.NULL_SHAPE_INPUT,`splitShape: tool at index ${e} is a null shape`));try{return O(W(U().split(e.wrapped,t.map(e=>e.wrapped))))}catch(e){let n=e instanceof Error?e.message:String(e);return k(N(`SPLIT_FAILED`,`Split operation failed on ${t.length} tool(s): ${n}`,e,{operation:`split`,toolCount:t.length},`The splitting tools may not intersect the shape. Ensure tools cross through the shape's interior.`))}}function YA(e,t,n={}){let r=[];for(let i of t){let t=VA(e,i,n);if(A(t))return t;r.push(t.value)}return O(r)}function XA(e,t,n){if(t.length===0)return O(e);let r=n?.optimisation===`commonFace`?1:n?.optimisation===`sameFace`?2:0,i=U(),a=t.map(e=>({op:e.op,tool:e.tool.wrapped}));try{let o=i.booleanPipeline?.(e.wrapped,a,{glueMode:r});if(o===void 0)return ZA(e,t,n);if(o===null)return k(N(`BOOLEAN_PIPELINE_FAILED`,`Boolean pipeline returned null shape`));let s=W(o);return NE(s)?O(s):(zE(s),k(yo(`BOOLEAN_PIPELINE_NOT_3D`,`Pipeline result is not a 3D shape`)))}catch(e){return k(N(`BOOLEAN_PIPELINE_FAILED`,e instanceof Error?e.message:String(e)))}}function ZA(e,t,n){let r=e,i={...n?.optimisation?{optimisation:n.optimisation}:{},unsafe:!0};for(let e of t){let t=e.op===`fuse`?PA(r,e.tool,i):e.op===`cut`?FA(r,e.tool,i):IA(r,e.tool,i);if(A(t))return t;r=j(t)}return O(r)}function QA(e){return W(U().sew(e.map(e=>e.wrapped)))}function $A(e,t=!1){let n=QA(e);return!t&&!AE(n)?k(yo(`WELD_NOT_SHELL`,`Could not make a shell from faces and shells`)):O(n)}function ej(e,t,n=[0,0,0],r=[0,0,1]){return CE(U().makeCylinder(e,t,[...n],[...r]))}function tj(e){return CE(U().makeSphere(e))}function nj(e,t,n,r=[0,0,0],i=[0,0,1]){return CE(U().makeCone(e,t,n,[...r],[...i]))}function rj(e,t,n=[0,0,0],r=[0,0,1]){return CE(U().makeTorus(e,t,[...n],[...r]))}function ij(e,t,n){return CE(U().makeEllipsoid(e,t,n))}function aj(e){return vE(U().makeVertex(e[0],e[1],e[2]))}function oj(e,t,n=1e-6){return qa(rO(U().offset(e.wrapped,t,n)),e=>qa(aO(e),e=>NE(e)?O(e):k(yo(`OFFSET_NOT_3D`,`Could not offset to a 3d shape`))))}function sj(e){return TE(U().makeCompound(e.map(e=>e.wrapped)))}function cj(e){try{var t=jT();let n=t.u(QA(e)),r=W(U().solidFromShell(n.wrapped));return jE(r)?O(r):(zE(r),k(yo(`SOLID_BUILD_FAILED`,`Could not make a solid of faces and shells`)))}catch(e){t.e=e}finally{t.d()}}function lj(e){return{position:e.vertices,normal:e.normals,index:e.triangles}}function uj(e){return{position:e.vertices,normal:e.normals,index:e.triangles,groups:e.faceGroups.map((e,t)=>({start:e.start,count:e.count,materialIndex:t,faceId:e.faceId}))}}function dj(e){return{position:e.lines}}function fj(e,t){return{coarse:lj(e.coarse),fine:lj(e.fine),coarseDistance:t?.coarse??50,fineDistance:t?.fine??0}}function pj(e,t){let n=t?.step??50,r=t?.distances;if(r&&r.length!==e.length)throw Error(`toLODGeometryLevels: distances must have one entry per level (got ${r.length} for ${e.length} levels)`);let i=e.length-1;return e.map((e,t)=>({geometry:lj(e.mesh),distance:r?.[t]??(i-t)*n}))}function mj(e,t,n,r){if(t.length===0)return k(P(`CHAMFER_ANGLE_NO_EDGES`,`chamferDistAngle requires at least one edge`,void 0,{edgeCount:0}));if(n<=0)return k(P(`CHAMFER_ANGLE_BAD_DISTANCE`,`distance must be positive, got ${n}`,void 0,{distance:n}));if(r<=0||r>=90)return k(P(`CHAMFER_ANGLE_BAD_ANGLE`,`angleDeg must be in range (0, 90), got ${r}`,void 0,{angleDeg:r}));let i;try{let a=U(),o=t.map(e=>e.wrapped);i=a.chamferDistAngle(e.wrapped,o,n,r)}catch(e){return k(N(`CHAMFER_ANGLE_FAILED`,`chamferDistAngle kernel call failed: ${e instanceof Error?e.message:String(e)}`,e,{distance:n,angleDeg:r,edgeCount:t.length}))}let a=rO(i);if(A(a))return U().dispose(i),a;let o=W(a.value);return LE(i,o),NE(o)?O(o):(zE(o),k(yo(`CHAMFER_ANGLE_NOT_3D`,`chamferDistAngle did not produce a 3D shape`)))}function hj(e){let t=U();return t.getNurbsCurveData?t.getNurbsCurveData(e.wrapped):null}function gj(e){let t=U();return t.getNurbsSurfaceData?t.getNurbsSurfaceData(e.wrapped):null}var _j={cut:FA,cutAll:zA,fuse:PA,fuseAll:RA};function vj(e){return{totalInputs:e.totalInputs,batchAttempts:e.batchAttempts,batchSucceeded:e.batchSucceeded,singletonFallbacks:e.singletonFallbacks,failedInputs:[...e.failedInputs].sort((e,t)=>e-t)}}function yj(e,t,n={}){return bj(_j,e,t,n)}function bj(e,t,n,r={}){if(r.signal?.aborted)throw r.signal.reason;let i={totalInputs:n.length,batchAttempts:0,batchSucceeded:0,singletonFallbacks:0,failedInputs:new Set},a=xj(e,t,n,0,r,i);return A(a)?a:O({shape:a.value,telemetry:vj(i)})}function xj(e,t,n,r,i,a){if(n.length===0)return O(t);if(n.length===1)return Sj(e,t,n,r,i,a);a.batchAttempts++;let o=Dj(()=>e.cutAll(t,n,i));if(o&&o.ok)return a.batchSucceeded++,o;if(i.signal?.aborted)throw i.signal.reason;let s=Math.floor(n.length/2),c=xj(e,t,n.slice(0,s),r,i,a);return c.ok?xj(e,c.value,n.slice(s),r+s,i,a):c}function Sj(e,t,n,r,i,a){a.singletonFallbacks++;let o=dA(n),s=Dj(()=>e.cut(t,o,i));if(s&&s.ok)return s;if(i.signal?.aborted)throw i.signal.reason;return a.failedInputs.add(r),O(t)}function Cj(e,t={}){return wj(_j,e,t)}function wj(e,t,n={}){if(n.signal?.aborted)throw n.signal.reason;if(t.length===0)return k(P(M.FUSE_ALL_EMPTY,`fuseAllBisect requires at least one shape`));let r={totalInputs:t.length,batchAttempts:0,batchSucceeded:0,singletonFallbacks:0,failedInputs:new Set},i=Tj(e,t,0,n,r);return A(i)?i:O({shape:i.value,telemetry:vj(r)})}function Tj(e,t,n,r,i){if(t.length===1)return O(dA(t));i.batchAttempts++;let a=Dj(()=>e.fuseAll(t,r));if(a&&a.ok)return i.batchSucceeded++,a;if(r.signal?.aborted)throw r.signal.reason;let o=Math.floor(t.length/2);return Ej(e,Tj(e,t.slice(0,o),n,r,i),Tj(e,t.slice(o),n+o,r,i),t,n,o,r,i)}function Ej(e,t,n,r,i,a,o,s){if(t.ok&&n.ok){s.singletonFallbacks++;let c=Dj(()=>e.fuse(t.value,n.value,o));if(c&&c.ok)return c;for(let e=a;e<r.length;e++)s.failedInputs.add(i+e);return t}if(t.ok){for(let e=a;e<r.length;e++)s.failedInputs.add(i+e);return t}if(n.ok){for(let e=0;e<a;e++)s.failedInputs.add(i+e);return n}return t}function Dj(e){try{return e()}catch{return null}}function Oj(e,t,n){return U().checkBoolean(e.wrapped,t.wrapped,n)}function kj(e,t){return U().isNull(e.wrapped)?k(P(M.NULL_SHAPE_INPUT,`${t} is a null shape`)):O(void 0)}function Aj(e,t){return U().isNull(e.wrapped)?k(P(M.NULL_SHAPE_INPUT,`${t} is a null shape`)):O(void 0)}function jj(e,t,n,r){let i=FE(e);if(!NE(i)){let a=iE(i).toUpperCase();return LE(e,i),zE(i),k(yo(t,`${n}. Got ${a} instead.`,void 0,void 0,r))}return LE(e,i),O(i)}function Mj(e,t){let n=[],r=new Map;for(let i of e){let e=t(i)??0;typeof e==`number`&&e<=0||Array.isArray(e)&&(e[0]<=0||e[1]<=0)||(n.push(i),r.set(U().hashCode(i.wrapped,G),e))}return n.length===0?null:{edges:n,kernelParam:e=>r.get(U().hashCode(e,2147483647))??1}}function Nj(e,t,{optimisation:n=`none`,simplify:r=!1,signal:i,fuzzyValue:a}={}){if(i?.aborted)throw i.reason;let o=kj(e,`fuseWithEvolution: first operand`);if(A(o))return o;let s=kj(t,`fuseWithEvolution: second operand`);if(A(s))return s;let c=tk([e,t]),{shape:l,evolution:u}=U().fuseWithHistory(e.wrapped,t.wrapped,c,G,{optimisation:n,simplify:r,fuzzyValue:a}),d=jj(l,`FUSE_NOT_3D`,`Fuse did not produce a 3D shape`,`Common causes: overlapping coplanar faces, zero-thickness geometry, or non-manifold input. Try autoHeal() on inputs first.`);return d.ok?(nk(u,[e,t],d.value),O({shape:d.value,evolution:u})):d}function Pj(e,t,{optimisation:n=`none`,simplify:r=!1,signal:i,fuzzyValue:a}={}){if(i?.aborted)throw i.reason;let o=kj(e,`cutWithEvolution: base`);if(A(o))return o;let s=kj(t,`cutWithEvolution: tool`);if(A(s))return s;let c=tk([e,t]),{shape:l,evolution:u}=U().cutWithHistory(e.wrapped,t.wrapped,c,G,{optimisation:n,simplify:r,fuzzyValue:a}),d=jj(l,`CUT_NOT_3D`,`Cut did not produce a 3D shape`,`Common causes: tool does not fully intersect the base, or produces a zero-thickness sliver. Ensure the tool extends through the shape.`);return d.ok?(nk(u,[e,t],d.value),O({shape:d.value,evolution:u})):d}function Fj(e,t,{simplify:n=!1,signal:r,fuzzyValue:i}={}){if(r?.aborted)throw r.reason;let a=kj(e,`intersectWithEvolution: first operand`);if(A(a))return a;let o=kj(t,`intersectWithEvolution: second operand`);if(A(o))return o;let s=tk([e,t]),{shape:c,evolution:l}=U().intersectWithHistory(e.wrapped,t.wrapped,s,G,{simplify:n,fuzzyValue:i}),u=jj(c,`INTERSECT_NOT_3D`,`Intersect did not produce a 3D shape`,`Shapes may not overlap. Verify they share a common volume before intersecting.`);return u.ok?(nk(l,[e,t],u.value),O({shape:u.value,evolution:l})):u}function Ij(e,t,n){let r=Aj(e,`filletWithEvolution: shape`);if(A(r))return r;if(typeof n==`number`&&n<=0)return k(P(`INVALID_FILLET_RADIUS`,`Fillet radius must be positive`,void 0,void 0,`Provide a positive radius value greater than 0`));if(Array.isArray(n)&&(n[0]<=0||n[1]<=0))return k(P(`INVALID_FILLET_RADIUS`,`Fillet radii must both be positive`,void 0,void 0,`Both radius values must be greater than 0`));let i=t??tD(e);if(i.length===0)return k(P(M.FILLET_NO_EDGES,`No edges found for fillet`,void 0,void 0,`Check that the shape has edges, or adjust your edge finder criteria`));try{let t,r;if(typeof n==`function`){let e=Mj(i,n);if(!e)return k(P(M.FILLET_NO_EDGES,`No edges with positive radius for fillet`,void 0,void 0,`Check that the radius callback returns positive values`));t=e.edges,r=e.kernelParam}else t=[...i],r=n;let a=tk([e]),{shape:o,evolution:s}=U().filletWithHistory(e.wrapped,t.map(e=>e.wrapped),r,a,G),c=W(o);return NE(c)?(nk(s,[e],c),O({shape:c,evolution:s})):(zE(c),k(N(M.FILLET_NOT_3D,`Fillet result is not a 3D shape`)))}catch(e){return k(N(`FILLET_FAILED`,`Fillet operation failed: ${e instanceof Error?e.message:String(e)}`,e,{operation:`fillet`,edgeCount:i.length,radius:n}))}}function Lj(e,t,n){let r=Aj(e,`chamferWithEvolution: shape`);if(A(r))return r;if(typeof n==`number`&&n<=0)return k(P(`INVALID_CHAMFER_DISTANCE`,`Chamfer distance must be positive`,void 0,void 0,`Provide a positive distance value greater than 0`));if(Array.isArray(n)&&(n[0]<=0||n[1]<=0))return k(P(`INVALID_CHAMFER_DISTANCE`,`Chamfer distances must both be positive`,void 0,void 0,`Both distance values must be greater than 0`));let i=t??tD(e);if(i.length===0)return k(P(M.CHAMFER_NO_EDGES,`No edges found for chamfer`));try{let t,r;if(typeof n==`function`){let e=Mj(i,n);if(!e)return k(P(M.CHAMFER_NO_EDGES,`No edges with positive distance for chamfer`));t=e.edges,r=e.kernelParam}else t=[...i],r=n;let a=tk([e]),{shape:o,evolution:s}=U().chamferWithHistory(e.wrapped,t.map(e=>e.wrapped),r,a,G),c=W(o);return NE(c)?(nk(s,[e],c),O({shape:c,evolution:s})):(zE(c),k(N(M.CHAMFER_NOT_3D,`Chamfer result is not a 3D shape`)))}catch(e){return k(N(`CHAMFER_FAILED`,`Chamfer operation failed: ${e instanceof Error?e.message:String(e)}`,e,{operation:`chamfer`,edgeCount:i.length,distance:n}))}}function Rj(e,t,n,r=.001){let i=Aj(e,`shellWithEvolution: shape`);if(A(i))return i;if(n<=0)return k(P(`INVALID_THICKNESS`,`Shell thickness must be positive`));if(t.length===0)return k(P(`NO_FACES`,`At least one face must be specified for shell`));try{let i=tk([e]),{shape:a,evolution:o}=U().shellWithHistory(e.wrapped,t.map(e=>e.wrapped),n,i,G,r),s=W(a);return NE(s)?(nk(o,[e],s),O({shape:s,evolution:o})):(zE(s),k(N(`SHELL_RESULT_NOT_3D`,`Shell result is not a 3D shape`)))}catch(e){return k(N(`SHELL_FAILED`,`Shell operation failed: ${e instanceof Error?e.message:String(e)}`,e,{operation:`shell`,faceCount:t.length,thickness:n}))}}function zj(e,t,n){try{let r=W(U().positionOnCurve(e.wrapped,t.wrapped,n));return NE(r)?O(r):(zE(r),k(N(M.POSITION_ON_CURVE_FAILED,`positionOnCurve did not produce a 3D shape`)))}catch(e){return k(N(M.POSITION_ON_CURVE_FAILED,`Failed to position shape on curve at param ${n}`,e))}}function Bj(e,t){return U().isNull(e.wrapped)?k(P(M.NULL_SHAPE_INPUT,`${t} is a null shape`)):O(void 0)}function Vj(e,t){if(typeof e==`number`&&e<=0)return k(P(t.code,t.scalar,void 0,void 0,t.scalarHint));if(Array.isArray(e)&&(e[0]<=0||e[1]<=0))return k(P(t.code,t.pair,void 0,void 0,t.pairHint))}function Hj(e,t){let n=[],r=new Map;for(let i of e){let e=t(i)??0;typeof e==`number`&&e<=0||Array.isArray(e)&&(e[0]<=0||e[1]<=0)||(n.push(i),r.set(U().hashCode(i.wrapped,G),e))}return n.length===0?null:{edges:n,kernelParam:e=>{let t=r.get(U().hashCode(e,G));if(t===void 0)throw Error(`fillet/chamfer: edge hash not found — possible hash collision`);return t}}}function Uj(e,t,n,r,i){let a=W(t);return NE(a)?(nk(e,n,a),O(a)):(zE(a),k(N(r,i)))}function Wj(e,t){if(typeof t!=`function`)return{filteredFaces:[...e],kernelAngle:t};let n=[],r=new Map;for(let i of e){let e=t(i);e===null||e===0||Math.abs(e)>=90||(n.push(i),r.set(U().hashCode(i.wrapped,G),e))}return{filteredFaces:n,kernelAngle:e=>{let t=r.get(U().hashCode(e,G));if(t===void 0)throw Error(`draft: face hash not found — possible hash collision`);return t}}}function Gj(e,t){let n=Bj(e,`thicken: shape`);if(A(n))return n;try{let n=tk([e]),{shape:r,evolution:i}=U().thickenWithHistory(e.wrapped,t,n,G),a=W(r);return nk(i,[e],a),O(a)}catch(e){return k(N(`THICKEN_FAILED`,`Thicken operation failed: ${e instanceof Error?e.message:String(e)}`,e))}}function Kj(e,t,n){let r=Bj(e,`fillet: shape`);if(A(r))return r;let i=Vj(n,{code:`INVALID_FILLET_RADIUS`,scalar:`Fillet radius must be positive`,pair:`Fillet radii must both be positive`,scalarHint:`Provide a positive radius value greater than 0`,pairHint:`Both radius values must be greater than 0`});if(i)return i;let a=t??tD(e);if(a.length===0)return k(P(M.FILLET_NO_EDGES,`No edges found for fillet`,void 0,void 0,`Check that the shape has edges, or adjust your edge finder criteria`));if(typeof n==`function`){let e=Hj(a,n);return e?O({filteredEdges:e.edges,kernelRadius:e.kernelParam,selectedCount:a.length}):k(P(M.FILLET_NO_EDGES,`No edges with positive radius for fillet`,void 0,void 0,`Check that the radius callback returns positive values`))}return O({filteredEdges:[...a],kernelRadius:n,selectedCount:a.length})}function qj(e,t,n,{trackEvolution:r=!0}={}){let i=Kj(e,t,n);if(A(i))return i;let{filteredEdges:a,kernelRadius:o,selectedCount:s}=i.value;try{let t=a.map(e=>e.wrapped);if(!r){let n=W(U().fillet(e.wrapped,t,o));return NE(n)?O(n):k(N(M.FILLET_NOT_3D,`Fillet result is not a 3D shape`))}let n=tk([e]),{shape:i,evolution:s}=U().filletWithHistory(e.wrapped,t,o,n,G);return Uj(s,i,[e],M.FILLET_NOT_3D,`Fillet result is not a 3D shape`)}catch(e){return k(N(`FILLET_FAILED`,`Fillet operation failed: ${e instanceof Error?e.message:String(e)}`,e,{operation:`fillet`,edgeCount:s,radius:n}))}}function Jj(e,t,n){let r=Bj(e,`chamfer: shape`);if(A(r))return r;let i=Vj(n,{code:`INVALID_CHAMFER_DISTANCE`,scalar:`Chamfer distance must be positive`,pair:`Chamfer distances must both be positive`,scalarHint:`Provide a positive distance value greater than 0`,pairHint:`Both distance values must be greater than 0`});if(i)return i;let a=t??tD(e);if(a.length===0)return k(P(M.CHAMFER_NO_EDGES,`No edges found for chamfer`));try{let t,r;if(typeof n==`function`){let e=Hj(a,n);if(!e)return k(P(M.CHAMFER_NO_EDGES,`No edges with positive distance for chamfer`));t=e.edges,r=e.kernelParam}else t=[...a],r=n;let i=tk([e]),{shape:o,evolution:s}=U().chamferWithHistory(e.wrapped,t.map(e=>e.wrapped),r,i,G);return Uj(s,o,[e],M.CHAMFER_NOT_3D,`Chamfer result is not a 3D shape`)}catch(e){return k(N(`CHAMFER_FAILED`,`Chamfer operation failed: ${e instanceof Error?e.message:String(e)}`,e,{operation:`chamfer`,edgeCount:a.length,distance:n}))}}function Yj(e,t,n,r=.001,{trackEvolution:i=!0}={}){let a=Bj(e,`shell: shape`);if(A(a))return a;if(n<=0)return k(P(`INVALID_THICKNESS`,`Shell thickness must be positive`));if(t.length===0)return k(P(`NO_FACES`,`At least one face must be specified for shell`));try{if(!i){let i=W(U().shell(e.wrapped,t.map(e=>e.wrapped),n,r));return NE(i)?O(i):k(N(`SHELL_RESULT_NOT_3D`,`Shell result is not a 3D shape`))}let a=tk([e]),{shape:o,evolution:s}=U().shellWithHistory(e.wrapped,t.map(e=>e.wrapped),n,a,G,r),c=W(o);return NE(c)?(nk(s,[e],c),O(c)):k(N(`SHELL_RESULT_NOT_3D`,`Shell result is not a 3D shape`))}catch(e){return k(N(`SHELL_FAILED`,`Shell operation failed: ${e instanceof Error?e.message:String(e)}`,e,{operation:`shell`,faceCount:t.length,thickness:n}))}}function Xj(e,t,n=1e-6){let r=Bj(e,`offset: shape`);if(A(r))return r;if(Math.abs(t)<1e-10)return k(P(`ZERO_OFFSET`,`Offset distance cannot be zero`));try{let r=tk([e]),{shape:i,evolution:a}=U().offsetWithHistory(e.wrapped,t,r,G,n),o=W(i);return NE(o)?(nk(a,[e],o),O(o)):k(N(`OFFSET_RESULT_NOT_3D`,`Offset result is not a 3D shape`))}catch(e){return k(N(`OFFSET_FAILED`,`Offset operation failed: ${e instanceof Error?e.message:String(e)}`,e))}}function Zj(e,t,n){let r=Bj(e,`draft: shape`);if(A(r))return r;if(typeof n==`number`){if(Math.abs(n)<1e-10)return k(P(M.DRAFT_INVALID_ANGLE,`Draft angle cannot be zero`,void 0,void 0,`Provide a non-zero angle in degrees`));if(Math.abs(n)>=90)return k(P(M.DRAFT_INVALID_ANGLE,`Draft angle must be between -90 and 90 degrees (exclusive)`,void 0,void 0,`Typical draft angles are 1-5 degrees for injection molding`))}if(t.length===0)return k(P(M.DRAFT_NO_FACES,`No faces specified for draft`,void 0,void 0,`Select at least one face to apply the draft angle to`))}function Qj(e,t,n,r,i){let a=Zj(e,t,i);if(a)return a;try{let{filteredFaces:a,kernelAngle:o}=Wj(t,i);if(a.length===0)return k(P(M.DRAFT_NO_FACES,`No faces with valid draft angle`,void 0,void 0,`Check that the angle callback returns non-zero values between -90 and 90 degrees`));let s=tk([e]),{shape:c,evolution:l}=U().draftWithHistory(e.wrapped,a.map(e=>e.wrapped),[n[0],n[1],n[2]],[r[0],r[1],r[2]],o,s,G);return Uj(l,c,[e],M.DRAFT_NOT_3D,`Draft result is not a 3D shape`)}catch(e){let n=e instanceof Error?e.message:String(e);return k(N(M.DRAFT_FAILED,`Draft operation failed: ${n}`,e,{operation:`draft`,faceCount:t.length,angle:i}))}}function $j(e,t,n){if(n.length===0)return k(P(M.VARIABLE_FILLET_FAILED,`radii must contain at least one radius spec`));for(let e of n)if(e.radius<=0)return k(P(M.VARIABLE_FILLET_FAILED,`All radius values must be positive`));let r=U();try{let i=JSON.stringify({edge:r.hashCode(t.wrapped,G),radii:n.map(e=>({param:e.param,radius:e.radius}))}),a=W(r.filletVariable(e.wrapped,i));return NE(a)?jE(a)?O(a):(zE(a),k(N(M.VARIABLE_FILLET_FAILED,`Variable-radius fillet did not produce a solid`))):(zE(a),k(N(M.VARIABLE_FILLET_FAILED,`Variable-radius fillet did not produce a 3D shape`)))}catch(e){return k(N(M.VARIABLE_FILLET_FAILED,`Variable-radius fillet failed`,e))}}function eM(e){return vD(e)}function tM(e){if(!jE(e))return k(P(`NOT_A_SOLID`,`Input shape is not a solid`));let t=eM(e);try{let n=U().healSolid(e.wrapped);if(!n)return t?O(e):k(N(M.HEAL_NO_EFFECT,`Solid healing had no effect — shape is still invalid`));let r=W(n);return jE(r)?(eD(r),eM(r)?O(r):(zE(r),k(N(`HEAL_SOLID_INCOMPLETE`,`Healed result is still invalid after ShapeFix_Solid`)))):(zE(r),k(N(`HEAL_RESULT_NOT_SOLID`,`Healed result is not a solid`)))}catch(e){return k(N(`HEAL_SOLID_FAILED`,`Solid healing failed`,e))}}function nM(e){if(!kE(e))return k(P(`NOT_A_FACE`,`Input shape is not a face`));try{let t=W(U().healFace(e.wrapped));return kE(t)?O(t):(zE(t),k(N(`HEAL_RESULT_NOT_FACE`,`Healed result is not a face`)))}catch(e){return k(N(`HEAL_FACE_FAILED`,`Face healing failed`,e))}}function rM(e,t){if(!OE(e))return k(P(`NOT_A_WIRE`,`Input shape is not a wire`));try{let n=W(U().healWire(e.wrapped,t?.wrapped));return OE(n)?O(n):(zE(n),k(N(`HEAL_RESULT_NOT_WIRE`,`Healed result is not a wire`)))}catch(e){return k(N(`HEAL_WIRE_FAILED`,`Wire healing failed`,e))}}function iM(e){return jE(e)?tM(e):kE(e)?nM(e):OE(e)?rM(e):O(e)}function aM(e,t){let n=t?.fixWires!==!1,r=t?.fixFaces!==!1,i=t?.fixSolids!==!1,a=t?.fixSelfIntersection===!0,o=t?.sewTolerance,s=[],c=[];if(eM(e))return O({shape:e,report:{isValid:!0,alreadyValid:!0,wiresHealed:0,facesHealed:0,solidHealed:!1,steps:[`Shape already valid`],diagnostics:[{name:`validation`,attempted:!0,succeeded:!0}]}});s.push(`Shape invalid — applying shape-level healing`);let l=rD(e).length,u=nD(e).length,d=e,f=!1,p=t=>{let n=d;d=t,n!==e&&n.wrapped!==t.wrapped&&zE(n)};if(o!==void 0)try{p(W(U().sew([d.wrapped],o))),s.push(`Applied sewing with tolerance ${o}`),c.push({name:`sew`,attempted:!0,succeeded:!0,detail:`tolerance=${o}`})}catch(e){let t=e instanceof Error?e.message:String(e);s.push(`Sewing failed: ${t}`),c.push({name:`sew`,attempted:!0,succeeded:!1,detail:t})}if(a&&n){let e=rD(d),t=0;for(let n of e)try{U().fixSelfIntersection(n.wrapped),t++}catch{}s.push(`Self-intersection fix: ${t}/${e.length} wires`),c.push({name:`fixSelfIntersection`,attempted:!0,succeeded:t>0,detail:`${t}/${e.length} wires fixed`})}if(jE(d)&&i||kE(d)&&r||OE(d)&&n){let t=iM(d);Wa(t)?(p(t.value),jE(e)?(f=!0,s.push(`Applied ShapeFix_Solid`),c.push({name:`healSolid`,attempted:!0,succeeded:!0})):kE(e)?(s.push(`Applied ShapeFix_Face`),c.push({name:`healFace`,attempted:!0,succeeded:!0})):(s.push(`Applied ShapeFix_Wire`),c.push({name:`healWire`,attempted:!0,succeeded:!0}))):(s.push(`Shape-level healing failed`),c.push({name:`healShape`,attempted:!0,succeeded:!1}))}else c.push({name:`healShape`,attempted:!1,succeeded:!1,detail:`skipped by options`});let m=rD(d).length,h=nD(d).length,g=Math.abs(m-l),_=Math.abs(h-u);g>0&&s.push(`Wire count changed by ${g}`),_>0&&s.push(`Face count changed by ${_}`);let v=eM(d);return s.push(v?`Final validation: valid`:`Final validation: still invalid`),c.push({name:`finalValidation`,attempted:!0,succeeded:v}),O({shape:d,report:{isValid:v,alreadyValid:!1,wiresHealed:g,facesHealed:_,solidHealed:f,steps:s,diagnostics:c}})}function oM(e){try{return O(W(U().fixShape(e.wrapped)))}catch(e){return k(N(M.FIX_SHAPE_FAILED,`ShapeFix_Shape failed`,e))}}function sM(e){try{let t=W(U().solidFromShell(e.wrapped));return jE(t)?eM(t)?O(t):(zE(t),k(N(M.SOLID_FROM_SHELL_FAILED,`solidFromShell produced an invalid solid`))):(zE(t),k(N(M.SOLID_FROM_SHELL_FAILED,`solidFromShell did not produce a solid`)))}catch(e){return k(N(M.SOLID_FROM_SHELL_FAILED,`Failed to create solid from shell`,e))}}function cM(e){try{let t=W(U().fixSelfIntersection(e.wrapped));return OE(t)?O(t):(zE(t),k(N(M.FIX_SELF_INTERSECTION_FAILED,`Result is not a wire`)))}catch(e){return k(N(M.FIX_SELF_INTERSECTION_FAILED,`Failed to fix wire self-intersection`,e))}}function lM(e,{profile:t,endFactor:n=1}){return e<1e-10?k(P(`INVALID_EXTRUSION_LENGTH`,`Extrusion length too small (< 1e-10)`)):t!==`s-curve`&&t!==`linear`?k(P(`UNSUPPORTED_PROFILE`,`Unsupported extrusion profile: ${String(t)}`)):O(U().buildExtrusionLaw(t,e,n).Trim(0,e,1e-6))}function uM(e,t){let n=U(),r=n.makeLineEdge([...e],[...t]),i=n.makeWire([r]);return n.dispose(r),W(i)}function dM(e,t,n,r,i,a=!1){return W(U().makeHelixWire(e,t,n,[...r],[...i],a))}function fM(e){let t=W(e.shape),n=W(e.firstShape),r=W(e.lastShape),i=()=>{zE(t),zE(n),zE(r)};return NE(t)?OE(n)?OE(r)?O([t,n,r]):(i(),k(yo(`SWEEP_END_NOT_WIRE`,`Sweep did not produce an end Wire`))):(i(),k(yo(`SWEEP_START_NOT_WIRE`,`Sweep did not produce a start Wire`))):(i(),k(yo(`SWEEP_NOT_3D`,`Sweep did not produce a 3D shape`)))}function pM(e,t,n={},r=!1){if(n.mode===`simple`&&!r){let n=W(U().simplePipe(e.wrapped,t.wrapped));return NE(n)?O(n):(zE(n),k(yo(`SWEEP_NOT_3D`,`Simple pipe did not produce a 3D shape`)))}let{frenet:i=!1,auxiliarySpine:a,law:o=null,transitionMode:s=`right`,withContact:c,support:l,forceProfileSpineOthogonality:u,tolerance:d,boundTolerance:f,angularTolerance:p,maxDegree:m,maxSegments:h}=n,g=U(),_=s===`round`?!0:!!u,v=g.sweepPipeShell(e.wrapped,t.wrapped,{transitionMode:s,contact:!!c,correction:_,frenet:i,shellMode:r,...a?.wrapped?{auxiliary:a.wrapped}:{},...o===null?{}:{law:o},...l===null?{}:{support:l},tolerance:d,boundTolerance:f,angularTolerance:p,maxDegree:m,maxSegments:h});if(r&&typeof v==`object`&&`firstShape`in v)return fM(v);let y=W(v);return NE(y)?O(y):(zE(y),k(yo(`SWEEP_NOT_3D`,`Sweep did not produce a 3D shape`)))}function mM(e,t,n,r){return pM(e,uM(t,DD(t,n)),{support:r})}function hM(e,t,n,r,i=!1){try{var a=jT();let o=ND(n);if(o<1e-10)return k(P(`ZERO_LENGTH_EXTRUSION`,`Extrusion vector cannot have zero length`));let s=DD(t,n),c=a.u(uM(t,s)),l=null;if(r){let e=lM(o,r);if(A(e))return e;l=e.value}return pM(e,c,{law:l},i)}catch(e){a.e=e}finally{a.d()}}function gM(e,t,n,r,i,a=!1){try{var o=jT();if(Math.abs(t)<1e-10)return k(P(`ZERO_TWIST_ANGLE`,`Twist angle cannot be zero`));let s=ND(r);if(s<1e-10)return k(P(`ZERO_LENGTH_EXTRUSION`,`Extrusion vector cannot have zero length`));let c=DD(n,r),l=o.u(uM(n,c)),u=t<0,d=360/Math.abs(t)*s,f=o.u(dM(d,s,1,n,r,u)),p=null;if(i){let e=lM(s,i);if(A(e))return e;p=e.value}return pM(e,l,{auxiliarySpine:f,law:p},a)}catch(e){o.e=e}finally{o.d()}}function _M(e){let t=e.map(e=>e.location);for(let e=0;e<t.length;e++){let n=t[e];if(n!==void 0&&(n<0||n>1))return P(M.MULTI_SWEEP_FAILED,`Section ${e} location ${n} is out of range [0, 1]`)}let n=t.filter(e=>e!==void 0);for(let e=1;e<n.length;e++)if((n[e]??0)<=(n[e-1]??0))return P(M.MULTI_SWEEP_FAILED,`Section locations must be strictly increasing`)}function vM(e,t,n){let[r,i]=n.curveParameters(t.wrapped),a=i-r,o=Array(e.length);for(let t=0;t<e.length;t++){let n=e[t]?.location;o[t]=n===void 0?NaN:r+n*a}let s=-1,c=r;for(let t=0;t<=e.length;t++){let n=t===e.length;if(!n&&!Number.isNaN(o[t]??NaN)||n){let e=n?i:o[t]??i,a=t-s-1;for(let t=1;t<=a;t++)o[s+t]=c+t/(a+1)*(e-c);n||(s=t,c=o[t]??r)}}for(let e=1;e<o.length;e++)if((o[e]??0)<=(o[e-1]??0))return k(P(M.MULTI_SWEEP_FAILED,`Computed section parameters are not strictly increasing at index ${e} (${o[e-1]?.toFixed(4)} >= ${o[e]?.toFixed(4)})`));return O(o)}function yM(e,t,n){if(e.length<2)return k(P(M.MULTI_SWEEP_INSUFFICIENT_SECTIONS,`Multi-section sweep requires at least 2 sections, got ${e.length}`));let{solid:r=!0,ruled:i=!1,tolerance:a=1e-6}=n??{},o=_M(e);if(o)return k(o);try{let n=U(),o=vM(e,t,n);if(A(o))return o;let s=o.value,c=[],l=[];try{for(let r=0;r<e.length;r++){let i=s[r],a=e[r];if(i===void 0||a===void 0)continue;let o=n.positionOnCurve(a.wire.wrapped,t.wrapped,i);c.push(o),l.push(n.downcast(o,`wire`))}let o=W(n.loftAdvanced(l,{solid:r,ruled:i,tolerance:a}));return NE(o)?O(o):(zE(o),k(yo(`MULTI_SWEEP_NOT_3D`,`Multi-section sweep did not produce a 3D shape`)))}finally{for(let e of l)n.dispose(e);for(let e of c)n.dispose(e)}}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.MULTI_SWEEP_FAILED,`Multi-section sweep failed: ${t}`,e,void 0,`Common causes: profile too large for path curvature, self-intersecting result, or discontinuous path. Try simplifying the profile or path.`))}}function bM(e,t,n,r={}){let{transition:i=`transformed`,solid:a=!0,tolerance:o}=r;try{let r=U(),s=!a,c=n.length>0?n[0]?.wrapped:void 0,l=r.sweepPipeShell(e.wrapped,t.wrapped,{transitionMode:i,...c?{auxiliary:c}:{},shellMode:s,...o===void 0?{}:{tolerance:o,boundTolerance:o}}),u=W(typeof l==`object`&&`shape`in l?l.shape:l);return NE(u)?O(u):(zE(u),k(yo(`GUIDED_SWEEP_NOT_3D`,`Guided sweep did not produce a 3D shape`)))}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.GUIDED_SWEEP_FAILED,`Guided sweep failed: ${t}`,e,void 0,`Common causes: profile too large for path curvature, self-intersecting result, or discontinuous path. Try simplifying the profile or path.`))}}function xM(e,t){if(U().isNull(e.wrapped))return k(P(M.NULL_SHAPE_INPUT,`extrude: face is a null shape`));if(ND(t)<1e-10)return k(P(`EXTRUDE_ZERO_VECTOR`,`extrude: extrusion vector has zero length`));try{let n=U(),r=ND(t),i=ID(t),a=n.extrude(e.wrapped,[...i],r),o=CE(n.downcast(a,`solid`));return LE(a,o),O(o)}catch(e){return k(N(`EXTRUDE_FAILED`,`Extrusion operation failed`,e,{operation:`extrude`,vectorLength:ND(t)}))}}function SM(e,t=[0,0,0],n=[0,0,1],r=2*Math.PI){if(U().isNull(e.wrapped))return k(P(M.NULL_SHAPE_INPUT,`revolve: face is a null shape`));try{let i=W(U().revolveVec(e.wrapped,[...t],[...n],r));return NE(i)?O(i):(zE(i),k(yo(`REVOLUTION_NOT_3D`,`Revolution did not produce a 3D shape`)))}catch(e){return k(N(`REVOLVE_FAILED`,`Revolution operation failed`,e,{operation:`revolve`,angle:r}))}}function CM(e){if(e.length===0)return O([]);let t=U(),n=[];for(let t=0;t<e.length;t++){let r=e[t];if(!r)continue;let i=typeof r.height==`number`?[0,0,r.height]:r.height,a=ND(i);if(a<1e-10)return k(P(`EXTRUDE_ALL_ZERO_VECTOR`,`extrudeAll: entry ${t} has zero-length extrusion vector`));let o=[...ID(i)];n.push({face:r.face.wrapped,direction:o,length:a})}try{return O((t.extrudeBatch?.(n)??n.map(e=>t.extrude(e.face,e.direction,e.length))).map(e=>{let n=CE(t.downcast(e,`solid`));return LE(e,n),n}))}catch(e){return k(N(`EXTRUDE_ALL_FAILED`,`Batch extrusion operation failed`,e))}}function wM(e,{ruled:t=!0,startPoint:n,endPoint:r,tolerance:i=1e-6}={},a=!1){if(e.length===0&&!n&&!r)return k(P(`LOFT_EMPTY`,`Loft requires at least one wire or start/end point`));let o=U(),s=n?o.makeVertex(...CD(n)):void 0,c=r?o.makeVertex(...CD(r)):void 0;try{let n=W(o.loftAdvanced(e.map(e=>e.wrapped),{solid:!a,ruled:t,tolerance:i,...s?{startVertex:s}:{},...c?{endVertex:c}:{}}));return NE(n)?O(n):(zE(n),k(yo(`LOFT_NOT_3D`,`Loft did not produce a 3D shape`)))}catch(e){return k(N(`LOFT_FAILED`,`Loft operation failed`,e,void 0,`Common causes: wire profiles with different edge counts, self-intersecting result, or profiles too far apart. Ensure profiles are compatible and ordered.`))}}function TM(e){if(e.length===0)return O([]);let t=U(),n=[],r=e.map(e=>{let r=e.startPoint?t.makeVertex(...CD(e.startPoint)):void 0,i=e.endPoint?t.makeVertex(...CD(e.endPoint)):void 0;return r&&n.push(r),i&&n.push(i),{wires:e.wires.map(e=>e.wrapped),solid:!0,ruled:e.ruled??!0,tolerance:e.tolerance??1e-6,startVertex:r,endVertex:i}});try{let e=t.loftBatch?.(r)??r.map(e=>t.loftAdvanced(e.wires,{solid:e.solid,ruled:e.ruled,tolerance:e.tolerance,startVertex:e.startVertex,endVertex:e.endVertex})),n=[];for(let t of e){let e=W(t);if(!NE(e))return zE(e),k(yo(`LOFT_ALL_NOT_3D`,`Batch loft entry did not produce a 3D shape`));n.push(e)}return O(n)}catch(e){return k(N(`LOFT_ALL_FAILED`,`Batch loft operation failed`,e))}finally{for(let e of n)t.dispose(e)}}var EM=new WeakMap;function DM(e,t){return EM.get(e)?.get(t)}function OM(e,t,n){let r=EM.get(e);r||(r=new Map,EM.set(e,r)),r.set(t,n)}function kM(e){return U().isNull(e.wrapped)}function AM(e){return k(P(M.NULL_SHAPE_INPUT,`${e}: shape is a null shape`))}function jM(e){let t=DM(e.wrapped,`volume`);if(t)return O(t);if(kM(e))return AM(`measureVolumeProps`);let n=U(),r=n.shapeType(e.wrapped);if(r!==`solid`&&r!==`compsolid`&&r!==`compound`){let t={mass:0,volume:0,centerOfMass:[0,0,0]};return OM(e.wrapped,`volume`,t),O(t)}let i=n.volume(e.wrapped),a=KE(()=>n.centerOfMass(e.wrapped),M.CENTER_OF_MASS_FAILED,`Failed to compute center of mass`);if(!a.ok)return a;let o={mass:i,volume:i,centerOfMass:a.value};return OM(e.wrapped,`volume`,o),O(o)}function MM(e){let t=DM(e.wrapped,`surface`);if(t)return O(t);if(kM(e))return AM(`measureSurfaceProps`);let n=U(),r=n.area(e.wrapped),i=KE(()=>n.centerOfMass(e.wrapped),M.CENTER_OF_MASS_FAILED,`Failed to compute center of mass`);if(!i.ok)return i;let a={mass:r,area:r,centerOfMass:i.value};return OM(e.wrapped,`surface`,a),O(a)}function NM(e){let t=DM(e.wrapped,`linear`);if(t)return O(t);if(kM(e))return AM(`measureLinearProps`);let n=U(),r=n.length(e.wrapped),i={mass:r,length:r,centerOfMass:n.linearCenterOfMass(e.wrapped)};return OM(e.wrapped,`linear`,i),O(i)}function PM(e){let t=jM(e);return t.ok?O(t.value.mass):t}function FM(e){let t=MM(e);return t.ok?O(t.value.mass):t}function IM(e){let t=NM(e);return t.ok?O(t.value.mass):t}function LM(e,t){return kM(e)||kM(t)?AM(`measureDistance`):O(U().distance(e.wrapped,t.wrapped).value)}function RM(e,t){if(kM(e)||kM(t))return AM(`measureDistanceProps`);let n=U().distance(e.wrapped,t.wrapped);return O({distance:n.value,point1:n.point1,point2:n.point2})}function zM(e){if(kM(e))return AM(`createDistanceQuery`);let t=U().createDistanceQuery(e.wrapped);return O({distanceTo(e){return kM(e)?AM(`createDistanceQuery.distanceTo`):O(t.distanceTo(e.wrapped).value)},dispose(){t.dispose()}})}function BM(e,t,n){if(kM(e))return AM(`measureCurvatureAt`);let r=U().surfaceCurvature(e.wrapped,t,n);return O({mean:r.mean,gaussian:r.gaussian,maxCurvature:r.max,minCurvature:r.min,maxDirection:r.maxDirection,minDirection:r.minDirection})}function VM(e){if(kM(e))return AM(`measureCurvatureAtMid`);let t=pO(e),n=(t.uMin+t.uMax)/2,r=(t.vMin+t.vMax)/2,i=U().surfaceCurvature(e.wrapped,n,r);return O({mean:i.mean,gaussian:i.gaussian,maxCurvature:i.max,minCurvature:i.min,maxDirection:i.maxDirection,minDirection:i.minDirection})}function HM(e,t){return e.map(e=>HE(e,t))}function UM(e,t){let n=U(),r=n.iterShapes(e,t),i=[],a=new Map;for(let e of r){let r=n.hashCode(e,G),o=a.get(r);if(o?.some(t=>n.isSame(t,e))){n.dispose(e);continue}let s=VE(e,t);i.push(s),o?o.push(s.wrapped):a.set(r,[s.wrapped])}return i}function WM(e){let t=U(),n=new Map;for(let r of e){let e=t.hashCode(r.wrapped,G),i=n.get(e);i?i.push(r):n.set(e,[r])}return n}function GM(e,t,n){let r=U();return e.get(n)?.find(e=>r.isSame(e.wrapped,t))}function KM(e){let t=QE(e);if(t.edgeToFaces)return t.edgeToFaces;let n=U(),r=nD(e),i=WM(tD(e)),a=new Map;for(let e of r)for(let t of n.iterShapes(e.wrapped,`edge`)){let r=n.hashCode(t,G),o=GM(i,t,r);if(n.dispose(t),!o)continue;let s=a.get(r);s||(s=[],a.set(r,s)),s.some(t=>n.isSame(t.edge,o.wrapped)&&n.isSame(t.face,e.wrapped))||s.push({edge:o.wrapped,face:e.wrapped})}return t.edgeToFaces=a,a}function qM(e){let t=QE(e);if(t.vertexToFaces)return t.vertexToFaces;let n=U(),r=nD(e),i=WM(iD(e)),a=new Map;for(let e of r)for(let t of n.iterShapes(e.wrapped,`vertex`)){let r=n.hashCode(t,G),o=GM(i,t,r);if(n.dispose(t),!o)continue;let s=a.get(r);s||(s=[],a.set(r,s)),s.some(t=>n.isSame(t.vertex,o.wrapped)&&n.isSame(t.face,e.wrapped))||s.push({vertex:o.wrapped,face:e.wrapped})}return t.vertexToFaces=a,a}function JM(e,t){let n=U(),r=KM(e),i=n.hashCode(t.wrapped,G),a=r.get(i)??[],o=[],s=new Map;for(let e of a){if(!n.isSame(e.edge,t.wrapped))continue;let r=n.hashCode(e.face,G),i=s.get(r);i?i.some(t=>n.isSame(t,e.face))||(i.push(e.face),o.push(e.face)):(s.set(r,[e.face]),o.push(e.face))}return HM(o,`face`)}function YM(e,t){let n=U(),r=qM(e),i=n.hashCode(t.wrapped,G),a=r.get(i)??[],o=[],s=new Map;for(let e of a){if(!n.isSame(e.vertex,t.wrapped))continue;let r=n.hashCode(e.face,G),i=s.get(r);i?i.some(t=>n.isSame(t,e.face))||(i.push(e.face),o.push(e.face)):(s.set(r,[e.face]),o.push(e.face))}return HM(o,`face`)}function XM(e){return UM(e.wrapped,`edge`)}function ZM(e){return UM(e.wrapped,`vertex`)}function QM(e){return UM(e.wrapped,`wire`)}function $M(e){return UM(e.wrapped,`vertex`)}function eN(e,t){let n=U(),r=KM(e),i=UM(t.wrapped,`edge`),a=[],o=new Map;for(let e of i){let i=n.hashCode(e.wrapped,G),s=r.get(i)??[];for(let e of s){if(n.isSame(e.face,t.wrapped))continue;let r=n.hashCode(e.face,G),i=o.get(r);i?i.some(t=>n.isSame(t,e.face))||(i.push(e.face),a.push(e.face)):(o.set(r,[e.face]),a.push(e.face))}}for(let e of i)e[Symbol.dispose]();return HM(a,`face`)}var tN=new Map;function nN(e,t){let n=U(),r=bT()??``;if(tN.get(r)!==!1){let i;try{i=n.sharedEdges(e.wrapped,t.wrapped);let a=i.map(e=>VE(e,`edge`));return tN.set(r,!0),a}catch(e){if(i)for(let e of i)n.dispose(e);if(!l(e))throw e;tN.set(r,!1)}}return rN(e,t)}function rN(e,t){let n=U(),r=n.iterShapes(e.wrapped,`edge`),i=n.iterShapes(t.wrapped,`edge`),a=new Map;for(let e of i){let t=n.hashCode(e,G),r=a.get(t);r||(r=[],a.set(t,r)),r.push(e)}let o=[];for(let e of r)a.get(n.hashCode(e,2147483647))?.some(t=>n.isSame(e,t))?o.push(VE(e,`edge`)):n.dispose(e);for(let e of i)n.dispose(e);return o}function iN(e,t){let n=0,r=uO(t);if(e.surfaceType!==void 0)if(r===e.surfaceType)n+=1;else return-1/0;if(e.normal!==void 0){let r=_O(t),i=e.normal[0]*r[0]+e.normal[1]*r[1]+e.normal[2]*r[2];if(i<.707)return-1/0;n+=i}if(e.centroid!==void 0){let r=vO(t),i=e.centroid[0]-r[0],a=e.centroid[1]-r[1],o=e.centroid[2]-r[2],s=i*i+a*a+o*o;if(s>100)return-1/0;n-=s/100}if(e.area!==void 0&&e.area>0){let r=FM(t);if(r.ok&&r.value>0){let t=Math.abs(Math.log(e.area/r.value));t>1&&(n-=t)}}return n}function aN(e){let t=uO(e),n=_O(e),r=vO(e),i=FM(e);return{entityType:`face`,surfaceType:t,normal:n,centroid:r,area:i.ok?i.value:void 0}}var oN=.9;function sN(e){if(e[2]>oN)return`box:top`;if(e[2]<-.9)return`box:bottom`;if(e[1]>oN)return`box:back`;if(e[1]<-.9)return`box:front`;if(e[0]>oN)return`box:right`;if(e[0]<-.9)return`box:left`}function cN(e,t){if(uO(t)!==`PLANE`)return;let n=_O(t)[2];if(n>oN)return`${e}:top`;if(n<-.9)return`${e}:bottom`}function lN(e){return uO(e)===`CYLINDRE`?`cylinder:lateral`:cN(`cylinder`,e)}function uN(e){return uO(e)===`CONE`?`cone:lateral`:cN(`cone`,e)}function dN(e){return uO(e)===`SPHERE`?`sphere:surface`:void 0}var fN={box:e=>sN(_O(e)),cylinder:lN,cone:uN,sphere:dN};function pN(e,t){let n=new Map,r=fN[t],i=U(),a=0;for(let o of i.iterShapes(e.wrapped,`face`)){let e=BE(o,`face`);try{let i=r?.(e),o=i!==void 0&&!n.has(i)?i:`${t}:face_${a}`;n.set(o,[yk(e)]),a++}finally{RE(e,o)}}return n}function mN(e,t,n){return{origin:e,role:t,hint:aN(n)}}function hN(e,t){let n=[];for(let r of e){if(t.deleted.has(r))continue;let e=t.modified.get(r),i=e&&e.length>0?e:[r];for(let e of i)n.includes(e)||n.push(e)}return n}function gN(e,t,n){let r=e.get(t);if(!r)return e;let i=new Map;for(let[e,t]of r){let r=hN(t,n);r.length>0&&i.set(e,r)}let a=new Map;for(let[n,r]of e)a.set(n,n===t?i:r);return a}var _N=.1,vN=.5;function yN(e,t,n){let r=-1/0,i,a=-1/0,o=[];for(let s of t){let t=n(e,s);t>vN&&o.push([s,t]),t>r?(a=r,r=t,i=s):t>a&&(a=t)}return i!==void 0&&r>vN?r-a<_N&&o.length>1?{kind:`ambiguous`,candidates:o.filter(([,e])=>e>=r-_N).map(([e])=>e)}:{kind:`match`,face:i}:{kind:`none`}}function bN(e,t,n,r){let i=nD(n),a=r??iN,o=t.get(e.origin)?.get(e.role);if(o!==void 0&&o.length>0){let t=i.filter(e=>o.includes(yk(e)));if(t.length===1){let[e]=t;if(e!==void 0)return{face:e,confidence:`exact`}}else if(t.length===0)return{ref:e,reason:`deleted`};else{let n=yN(e.hint,t,a);if(n.kind===`match`)return{face:n.face,confidence:`geometric-fallback`};if(n.kind===`ambiguous`)return{ref:e,reason:`ambiguous`,candidates:n.candidates}}}let s=yN(e.hint,i,a);return s.kind===`match`?{face:s.face,confidence:`geometric-fallback`}:s.kind===`ambiguous`?{ref:e,reason:`ambiguous`,candidates:s.candidates}:{ref:e,reason:`not-found`}}function xN(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+r*r+i*i)}function SN(e){if(e.length===0)return;let t=0,n=0,r=0;for(let i of e){let e=bD(i);t+=e[0],n+=e[1],r+=e[2]}let i=e.length;return[t/i,n/i,r/i]}function CN(e,t,n){let r=n.get(t);if(!r)return;let i=yk(e);for(let[e,t]of r)if(t.includes(i))return e}function wN(e,t,n,r){let i=r.get(t)?.get(n);return i===void 0||i.length===0?[]:nD(e).filter(e=>i.includes(yk(e)))}function TN(e){let t=IM(e);return{entityType:`edge`,length:t.ok?t.value:void 0,midpoint:SN($M(e))}}function EN(e){let t=new Set,n=[];for(let r of e){let e=yk(r);t.has(e)||(t.add(e),n.push(r))}return n}var DN=1e-6;function ON(e,t){if(t.length===void 0&&t.midpoint===void 0)return;let n,r=1/0,i=1/0;for(let a of e){let e=0;if(t.length!==void 0){let n=IM(a);n.ok&&(e+=Math.abs(n.value-t.length))}if(t.midpoint!==void 0){let n=SN($M(a));n!==void 0&&(e+=xN(t.midpoint,n))}e<r?(i=r,r=e,n=a):e<i&&(i=e)}if(!(n===void 0||i-r<DN))return n}function kN(e,t,n,r){let[i,a]=JM(n,t);if(i===void 0||a===void 0)return;let o=CN(i,e,r),s=CN(a,e,r);if(!(o===void 0||s===void 0))return{origin:e,faceRoles:[o,s],hint:TN(t)}}function AN(e,t,n){let[r,i]=e.faceRoles,a=wN(n,e.origin,r,t),o=wN(n,e.origin,i,t);if(a.length===0||o.length===0)return{ref:e,reason:`not-found`};let s=[];for(let e of a)for(let t of o)s.push(...nN(e,t));let c=EN(s);if(c.length===1){let[e]=c;if(e!==void 0)return{edge:e,confidence:`exact`}}if(c.length>1){let t=ON(c,e.hint);return t===void 0?{ref:e,reason:`ambiguous`,candidates:c}:{edge:t,confidence:`geometric-fallback`}}return{ref:e,reason:`not-found`}}var jN=3,MN=1e-6;function NN(e,t){let n=new Set;for(let r of e)for(let e of ZM(r)){let r=yk(e);n.add(r),t.has(r)||t.set(r,e)}return n}function PN(e,t){let n=new Set;for(let r of e)t.has(r)&&n.add(r);return n}function FN(e){let t=new Map,n;for(let r of e){let e=NN(r,t);n=n===void 0?e:PN(n,e)}if(n===void 0)return[];let r=[];for(let e of n){let n=t.get(e);n!==void 0&&r.push(n)}return r}function IN(e,t){if(t.position===void 0)return;let n,r=1/0,i=1/0;for(let a of e){let e=xN(bD(a),t.position);e<r?(i=r,r=e,n=a):e<i&&(i=e)}if(!(n===void 0||i-r<MN))return n}function LN(e,t,n,r){let i=YM(n,t);if(i.length<jN)return;let a=new Set;for(let t of i){let n=CN(t,e,r);n!==void 0&&a.add(n)}if(!(a.size<jN))return{origin:e,faceRoles:[...a].sort(),hint:{entityType:`vertex`,position:bD(t)}}}function RN(e,t,n){let r=[];for(let i of e.faceRoles){let a=wN(n,e.origin,i,t);if(a.length===0)return{ref:e,reason:`not-found`};r.push(a)}let i=FN(r);if(i.length===1){let[e]=i;if(e!==void 0)return{vertex:e,confidence:`exact`}}if(i.length>1){let t=IN(i,e.hint);return t===void 0?{ref:e,reason:`ambiguous`,candidates:i}:{vertex:t,confidence:`geometric-fallback`}}return{ref:e,reason:`not-found`}}var zN=.99,BN=.1,VN=1e-6;function HN(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function UN(e,t){return nD(e).filter(e=>HN(_O(e),t)>zN)}function WN(e,t,n){let r=new Set([...t,...n].map(yk)),i=new Set;for(let n of t)for(let t of eN(e,n))i.add(yk(t));let a=[],o=new Set;for(let t of n)for(let n of eN(e,t)){let e=yk(n);r.has(e)||o.has(e)||!i.has(e)||(o.add(e),a.push(n))}return a}function GN(e,t){let n,r=1/0,i=1/0;for(let a of e){let e=xN(vO(a),t);e<r?(i=r,r=e,n=a):e<i&&(i=e)}if(!(n===void 0||i-r<VN))return n}function KN(e,t,n,r,i){let[a,o]=JM(r,n);if(a===void 0||o===void 0)return;let s=CN(a,e,i),c=CN(o,e,i);if(!(s===void 0||c===void 0))return{origin:e,op:t,betweenRoles:[s,c],hint:{entityType:`derived-face`,normalA:_O(a),normalB:_O(o),edgeMidpoint:SN($M(n))}}}function qN(e,t,n){let r=wN(n,e.origin,e.betweenRoles[0],t);r.length===0&&(r=UN(n,e.hint.normalA));let i=wN(n,e.origin,e.betweenRoles[1],t);if(i.length===0&&(i=UN(n,e.hint.normalB)),r.length===0||i.length===0)return{ref:e,reason:`not-found`};let a=WN(n,r,i).filter(t=>HN(_O(t),e.hint.normalA)>BN&&HN(_O(t),e.hint.normalB)>BN);if(a.length===1){let[e]=a;if(e!==void 0)return{face:e,confidence:`geometric-fallback`}}if(a.length>1){let t=e.hint.edgeMidpoint&&GN(a,e.hint.edgeMidpoint);return t?{face:t,confidence:`geometric-fallback`}:{ref:e,reason:`ambiguous`,candidates:a}}return{ref:e,reason:`not-found`}}function JN(e){return typeof e==`object`&&!!e&&`origin`in e}function YN(e){return JN(e)&&`betweenRoles`in e&&`op`in e}function XN(e){return JN(e)&&Array.isArray(e.faceRoles)&&e.faceRoles.length===2}function ZN(e){return JN(e)&&Array.isArray(e.faceRoles)&&e.faceRoles.length>=3}function QN(e){return JN(e)&&typeof e.role==`string`}function $N(e){return QN(e)||XN(e)||ZN(e)||YN(e)}function eP(e,t){return t===void 0?{ok:!1,reason:e}:{ok:!1,reason:e,candidates:t}}function tP(e,t,n){if(YN(e)){let r=qN(e,t,n);return`face`in r?{ok:!0,entity:r.face}:eP(r.reason,r.candidates)}if(XN(e)){let r=AN(e,t,n);return`edge`in r?{ok:!0,entity:r.edge}:eP(r.reason,r.candidates)}if(ZN(e)){let r=RN(e,t,n);return`vertex`in r?{ok:!0,entity:r.vertex}:eP(r.reason,r.candidates)}let r=bN(e,t,n);return`face`in r?{ok:!0,entity:r.face}:eP(r.reason,r.candidates)}function nP(e,t,n){let r=n.get(e.origin);if(r!==void 0)return r;let i=new Map([[e.origin,pN(t,e.origin)]]);return n.set(e.origin,i),i}function rP(e,t){return tP(e,nP(e,t,new Map),t)}function iP(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t!==Object.prototype&&t!==null?!1:!(`wrapped`in e)}function aP(e,t){let n=new Map,r=e=>{if($N(e)){let r=tP(e,nP(e,t,n),t);return r.ok?r.entity:e}if(Array.isArray(e))return e.map(r);if(iP(e)){let t={};for(let[n,i]of Object.entries(e))t[n]=r(i);return t}return e},i={...e};for(let[t,n]of Object.entries(e))i[t]=r(n);return i}function oP(e,t,n,r){let i=CE(U().makeBox(e,t,n)),a=r?.at??(r?.centered?[0,0,0]:void 0);if(a)try{var o=jT();return ak(o.u(i),[a[0]-e/2,a[1]-t/2,a[2]-n/2])}catch(e){o.e=e}finally{o.d()}return i}function sP(e,t,n){let r=n?.at??[0,0,0],i=n?.axis??[0,0,1],a=ej(e,t,r,i);if(n?.centered)try{var o=jT();let e=[-i[0]*t*.5,-i[1]*t*.5,-i[2]*t*.5];return ak(o.u(a),e)}catch(e){o.e=e}finally{o.d()}return a}function cP(e,t){let n=tj(e);if(t?.at)try{var r=jT();return ak(r.u(n),t.at)}catch(e){r.e=e}finally{r.d()}return n}function lP(e,t,n,r){let i=r?.at??[0,0,0],a=r?.axis??[0,0,1],o=nj(e,t,n,i,a);if(r?.centered)try{var s=jT();let e=[-a[0]*n*.5,-a[1]*n*.5,-a[2]*n*.5];return ak(s.u(o),e)}catch(e){s.e=e}finally{s.d()}return o}function uP(e,t,n){return rj(e,t,n?.at??[0,0,0],n?.axis??[0,0,1])}function dP(e,t,n,r){let i=ij(e,t,n);if(r?.at)try{var a=jT();return ak(a.u(i),r.at)}catch(e){a.e=e}finally{a.d()}return i}function fP(e,t){return hA(e,t)}function pP(e,t){let n=t?.axis??[0,0,1];return gA(e,t?.at??[0,0,0],n)}function mP(e,t,n){let r=n?.axis??[0,0,1];return _A(e,t,n?.at??[0,0,0],r,n?.xDir)}function hP(e,t,n,r){return vA(e,t,n,r?.at??[0,0,0],r?.axis??[0,0,1],r?.lefthand??!1)}function gP(e,t,n){return yA(e,t,n)}function _P(e,t,n,r,i){let a=i?.axis??[0,0,1];return bA(e,t,n*xD,r*xD,i?.at??[0,0,0],a,i?.xDir)}function vP(e,t){return xA(e,t)}function yP(e){return CA(e)}function bP(e,t,n){return wA(e,t,n)}function xP(e){return TA(e)}function SP(e){return qa(TA(e),e=>aE(e)?O(e):k(P(`WIRE_NOT_CLOSED`,`Assembled wire is not closed: start and end points do not coincide`)))}function CP(e,t){return EA(e,t)}function wP(e){return kA(e)}function TP(e,t){return OA(e,t)}function EP(e){return jA(e)}function DP(e){return aj(e)}function OP(e){return sj(e)}function kP(e){return cj(e)}function AP(e,t,n){return oj(e,t,n)}function jP(e,t){return $A(e,t)}function MP(e,t){return AA(e,t)}function NP(){return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(Number(e)^crypto.getRandomValues(new Uint8Array(1))[0]&15>>Number(e)/4).toString(16))}function PP(e=[]){let t=e.map(({shape:e,name:t,color:n,alpha:r})=>{let i=n??`#f00`;i.indexOf(`#`)===0&&(i=i.slice(1)),i.length===3&&(i=i.replace(/([0-9a-f])/gi,`$1$1`));let a=parseInt(i.substring(0,2),16),o=parseInt(i.substring(2,4),16),s=parseInt(i.substring(4,6),16),c=Math.round((r??1)*255);return{shape:e.wrapped,name:t??NP(),color:[a,o,s,c]}});return UT(U().createXCAFDocument(t))}function FP(e=[],{unit:t,modelUnit:n}={}){let r=e=>{let t=e;return t.indexOf(`#`)===0&&(t=t.slice(1)),t.length===3&&(t=t.replace(/([0-9a-f])/gi,`$1$1`)),[parseInt(t.substring(0,2),16),parseInt(t.substring(2,4),16),parseInt(t.substring(4,6),16)]},i=U(),a=e.map(({shape:e,name:t,color:n,alpha:i})=>{let[a,o,s]=r(n??`#f00`);return{shape:e.wrapped,name:t??NP(),color:[a,o,s,Math.round((i??1)*255)]}}),o=i.createXCAFDocument(a);try{let e=i.writeXCAFToSTEP(o,{unit:t,modelUnit:n});return e?O(new Blob([e],{type:`application/STEP`})):k(So(`STEP_EXPORT_FAILED`,`Failed to write STEP file`))}finally{o.delete()}}function IP(e,t,n,r,i){if(n<1)return k(P(`PATTERN_INVALID_COUNT`,`Pattern count must be at least 1`));if(n===1)return O(e);if(RD(t))return k(P(`PATTERN_ZERO_DIRECTION`,`Pattern direction cannot be zero`));let a=ID(t),o=U().linearPattern(e.wrapped,[...a],r,n).map(e=>W(e));try{return RA(o,{optimisation:`sameFace`,...i,unsafe:!0})}finally{for(let e of o)e[Symbol.dispose]()}}function LP(e,t,n,r=360,i=[0,0,0],a){if(n<1)return k(P(`PATTERN_INVALID_COUNT`,`Pattern count must be at least 1`));if(n===1)return O(e);if(RD(t))return k(P(`PATTERN_ZERO_AXIS`,`Pattern axis cannot be zero`));let o=r/n,s=U().circularPattern(e.wrapped,[...i],[...t],o,n).map(e=>W(e));try{return RA(s,{optimisation:`sameFace`,...a,unsafe:!0})}finally{for(let e of s)e[Symbol.dispose]()}}function RP(e,t,n,r,i,a,o,s){if(r<1||i<1)return k(P(`PATTERN_INVALID_COUNT`,`Grid pattern counts must be at least 1`));if(r===1&&i===1)return O(e);if(RD(t))return k(P(`PATTERN_ZERO_DIRECTION`,`Grid directionX cannot be zero`));if(RD(n))return k(P(`PATTERN_ZERO_DIRECTION`,`Grid directionY cannot be zero`));let c=U(),l=ID(t),u=ID(n);if(typeof c.gridPattern==`function`)return O(W(c.gridPattern(e.wrapped,[...l],[...u],a,o,r,i)));let d=IP(e,t,r,a,s);if(!d.ok)return d;let f=d.value,p=IP(f,n,i,o,s),m=p.ok&&p.value===f;return f!==e&&!m&&f[Symbol.dispose](),p}function zP(e,t={}){return{name:e,children:[],...t.shape===void 0?{}:{shape:t.shape},...t.translate===void 0?{}:{translate:t.translate},...t.rotate===void 0?{}:{rotate:t.rotate},...t.metadata===void 0?{}:{metadata:t.metadata}}}function BP(e,t){return{...e,children:[...e.children,t]}}function VP(e,t){let n=e.children.findIndex(e=>e.name===t);if(n===-1)return e;let r=[...e.children];return r.splice(n,1),{...e,children:r}}function HP(e,t){return{...e,...t.shape===void 0?{}:{shape:t.shape},...t.translate===void 0?{}:{translate:t.translate},...t.rotate===void 0?{}:{rotate:t.rotate},...t.metadata===void 0?{}:{metadata:t.metadata}}}function UP(e,t){if(e.name===t)return e;for(let n of e.children){let e=UP(n,t);if(e)return e}}function WP(e,t,n=0){t(e,n);for(let r of e.children)WP(r,t,n+1)}function GP(e){let t=1;for(let n of e.children)t+=GP(n);return t}function KP(e){let t=[];return WP(e,e=>{e.shape&&t.push(e.shape)}),t}function qP(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function JP(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function YP(e){let t=Math.hypot(e[0],e[1],e[2])||1;return[e[0]/t,e[1]/t,e[2]/t]}function XP(e){return YP(JP(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function ZP(e,t){let[n,r,i,a]=e,o=2*(i*t[2]-a*t[1]),s=2*(a*t[0]-r*t[2]),c=2*(r*t[1]-i*t[0]);return[t[0]+n*o+(i*c-a*s),t[1]+n*s+(a*o-r*c),t[2]+n*c+(r*s-i*o)]}function QP(e,t){let n=t/2,r=Math.sin(n),i=YP(e);return[Math.cos(n),i[0]*r,i[1]*r,i[2]*r]}function $P(e,t){let n=YP(e),r=YP(t),i=qP(n,r);if(i>=.999999999)return[1,0,0,0];if(i<=-.999999999)return QP(XP(n),Math.PI);let a=JP(n,r),o=Math.hypot(1+i,a[0],a[1],a[2])||1;return[(1+i)/o,a[0]/o,a[1]/o,a[2]/o]}function eF(e,t){let[n,r,i,a]=e,[o,s,c,l]=t;return[n*o-r*s-i*c-a*l,n*s+r*o+i*l-a*c,n*c-r*l+i*o+a*s,n*l+r*c-i*s+a*o]}var tF=Math.PI/180;function nF(e,t,n){return Math.min(n,Math.max(t,e))}function rF(e){let t=Math.hypot(e[0],e[1],e[2])||1;return[e[0]/t,e[1]/t,e[2]/t]}function iF(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function aF(e){return rF(iF(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function oF(e,t,n,r,i){let a=n.min??r,o=n.max??i,s=Math.min(a,o),c=Math.max(a,o);return{kind:e,axis:rF(t),min:s,max:c,value:nF(n.value??0,s,c)}}function sF(e,t,n,r,i){let a=i[0]??{kind:`rotation`,axis:[0,0,1],min:0,max:0,value:0};return{type:e,parent:t,child:n,axis:{origin:r.origin,direction:rF(r.direction)},min:a.min,max:a.max,value:a.value,dofs:i}}function cF(e,t,n,r={}){return sF(`revolute`,e,t,n,[oF(`rotation`,n.direction,r,-180,180)])}function lF(e,t,n,r={}){return sF(`prismatic`,e,t,n,[oF(`translation`,n.direction,r,0,100)])}function uF(e,t,n,r={}){return sF(`cylindrical`,e,t,n,[oF(`rotation`,n.direction,r.rotation??{},-180,180),oF(`translation`,n.direction,r.translation??{},0,100)])}function dF(e,t,n,r={}){let i=rF(n.direction),a;if(r.uDirection){let e=r.uDirection,t=e[0]*i[0]+e[1]*i[1]+e[2]*i[2],n=[e[0]-t*i[0],e[1]-t*i[1],e[2]-t*i[2]];a=Math.hypot(n[0],n[1],n[2])<1e-9?aF(i):rF(n)}else a=aF(i);let o=rF(iF(i,a));return sF(`planar`,e,t,{origin:n.origin,direction:i},[oF(`translation`,a,r.u??{},-100,100),oF(`translation`,o,r.v??{},-100,100),oF(`rotation`,i,r.rotation??{},-180,180)])}function fF(e,t,n,r={}){return sF(`spherical`,e,t,{origin:n,direction:[0,0,1]},[oF(`rotation`,[1,0,0],r.x??{},-180,180),oF(`rotation`,[0,1,0],r.y??{},-180,180),oF(`rotation`,[0,0,1],r.z??{},-180,180)])}function pF(e,t){let n=e.dofs.map((e,n)=>{let r=t[n];return r===void 0?e:{...e,value:nF(r,e.min,e.max)}}),r=n[0];return r?{...e,dofs:n,value:r.value}:{...e,dofs:n}}function mF(e,t){return pF(e,[t])}function hF(e,t,n){if(t.kind===`translation`)return{position:[t.axis[0]*n,t.axis[1]*n,t.axis[2]*n],rotation:[1,0,0,0]};let r=QP(t.axis,n*tF),i=ZP(r,e);return{position:[e[0]-i[0],e[1]-i[1],e[2]-i[2]],rotation:r}}function gF(e,t=e.value){let n=Array.isArray(t)?t:void 0,r=n?void 0:t,i=e.axis.origin,a=vF;for(let t=0;t<e.dofs.length;t++){let o=e.dofs[t];if(!o)continue;let s=n?n[t]??o.value:t===0?r??o.value:o.value;a=yF(a,hF(i,o,nF(s,o.min,o.max)))}return a}function _F(e,t){let n=e.joints??[];return{...e,joints:[...n,t]}}var vF={position:[0,0,0],rotation:[1,0,0,0]};function yF(e,t){let n=ZP(e.rotation,t.position);return{position:[e.position[0]+n[0],e.position[1]+n[1],e.position[2]+n[2]],rotation:eF(e.rotation,t.rotation)}}function bF(e){let t=[];return WP(e,e=>{e.joints&&t.push(...e.joints)}),t}function xF(e,t={}){let n=[],r=new Set;WP(e,e=>{r.add(e.name),e.joints&&n.push(...e.joints)});let i=new Map;for(let e of n)i.set(e.child,e),r.add(e.parent),r.add(e.child);let a=new Map;for(let e of r)i.has(e)||a.set(e,vF);let o=[...n],s=!0;for(;s&&o.length>0;){s=!1;for(let e=o.length-1;e>=0;e--){let n=o[e];if(!n)continue;let r=a.get(n.parent);if(!r||(o.splice(e,1),s=!0,a.has(n.child)))continue;let i=t[n.child]??n.value,c=n.offset?yF(gF(n,i),n.offset):gF(n,i);a.set(n.child,yF(r,c))}}for(let e of o)a.has(e.child)||a.set(e.child,vF);return a}function SF(e){return bF(e).reduce((e,t)=>e+t.dofs.length,0)}var CF={position:[0,0,0],rotation:[1,0,0,0]};function wF(e,t){let n=ZP(e.rotation,t);return[n[0]+e.position[0],n[1]+e.position[1],n[2]+e.position[2]]}function TF(e){return[e[0],-e[1],-e[2],-e[3]]}function EF(e,t){let[n,r,i,a]=eF(t,TF(e)),o=Math.hypot(n,r,i,a)||1;n/=o,r/=o,i/=o,a/=o,n<0&&(n=-n,r=-r,i=-i,a=-a);let s=Math.hypot(r,i,a);if(s<1e-12)return[0,0,0];let c=2*Math.atan2(s,n)/s;return[r*c,i*c,a*c]}function DF(e,t){let n=[];WP(e,e=>{e.joints&&n.push(...e.joints)});let r=new Map;for(let e of n)r.set(e.child,e);let i=[],a=new Set,o=t;for(;o&&r.has(o)&&!a.has(o);){a.add(o);let e=r.get(o);if(!e)break;i.push(e),o=e.parent}return i.reverse()}function OF(e,t){return e[t]??0}function kF(e,t,n){let r=n+1,i=new Float64Array(n*r);for(let a=0;a<n;a++){for(let t=0;t<n;t++)i[a*r+t]=OF(e,a*n+t);i[a*r+n]=OF(t,a)}for(let e=0;e<n;e++){let t=e;for(let a=e+1;a<n;a++)Math.abs(OF(i,a*r+e))>Math.abs(OF(i,t*r+e))&&(t=a);if(Math.abs(OF(i,t*r+e))<1e-12)return null;if(t!==e)for(let n=e;n<r;n++){let a=OF(i,e*r+n);i[e*r+n]=OF(i,t*r+n),i[t*r+n]=a}let a=OF(i,e*r+e);for(let t=e;t<r;t++)i[e*r+t]=OF(i,e*r+t)/a;for(let t=0;t<n;t++){if(t===e)continue;let n=OF(i,t*r+e);if(n!==0)for(let a=e;a<r;a++)i[t*r+a]=OF(i,t*r+a)-n*OF(i,e*r+a)}}let a=new Float64Array(n);for(let e=0;e<n;e++)a[e]=OF(i,e*r+n);return a}function AF(e,t){let n=[],r=[],i=[],a=[];for(let o of e){let e=t?.[o.child];n.push({child:o.child,count:o.dofs.length}),o.dofs.forEach((t,n)=>{let o=(Array.isArray(e)?e[n]:n===0?e:void 0)??t.value;r.push(Math.min(t.max,Math.max(t.min,o))),i.push(t.min),a.push(t.max)})}return{segments:n,q:Float64Array.from(r),lo:Float64Array.from(i),hi:Float64Array.from(a)}}function jF(e,t){let n={},r=0;for(let i of e){let e=[];for(let n=0;n<i.count;n++)e.push(OF(t,r++));n[i.child]=e}return n}function MF(e,t,n,r,i){let a=wF(t,r);if(e[0]=n.position[0]-a[0],e[1]=n.position[1]-a[1],e[2]=n.position[2]-a[2],i===6&&n.rotation){let r=EF(t.rotation,n.rotation);e[3]=r[0],e[4]=r[1],e[5]=r[2]}let o=0;for(let t=0;t<i;t++)o+=OF(e,t)**2;return Math.sqrt(o)}function NF(e,t,n,r,i,a,o,s,c,l){let u=wF(o,s);for(let d=0;d<n;d++){let f=OF(t,d),p=f+c>OF(a,d)&&f-c>=OF(i,d)?-c:c;t[d]=f+p;let m=l(t);t[d]=f;let h=wF(m,s);if(e[d]=(h[0]-u[0])/p,e[n+d]=(h[1]-u[1])/p,e[2*n+d]=(h[2]-u[2])/p,r===6){let t=EF(o.rotation,m.rotation);e[3*n+d]=t[0]/p,e[4*n+d]=t[1]/p,e[5*n+d]=t[2]/p}}}function PF(e,t,n,r,i){let a=new Float64Array(r*r),o=i*i;for(let t=0;t<r;t++)for(let i=0;i<r;i++){let s=0;for(let r=0;r<n;r++)s+=OF(e,t*n+r)*OF(e,i*n+r);a[t*r+i]=s+(t===i?o:0)}let s=kF(a,t,r);if(!s)return null;let c=new Float64Array(n);for(let t=0;t<n;t++){let i=0;for(let a=0;a<r;a++)i+=OF(e,a*n+t)*OF(s,a);c[t]=i}return c}function FF(e,t,n,r={}){let i=r.maxIterations??200,a=r.tolerance??1e-5,o=r.damping??.05,s=r.tip??[0,0,0],c=n.rotation===void 0?3:6,{segments:l,q:u,lo:d,hi:f}=AF(DF(e,t),r.seed),p=u.length,m=n=>xF(e,jF(l,n)).get(t)??CF,h=new Float64Array(c),g=new Float64Array(c*p),_=m(u),v=MF(h,_,n,s,c),y=0;for(;y<i&&p>0&&v>a;y++){NF(g,u,p,c,d,f,_,s,1e-6,m);let e=PF(g,h,p,c,o);if(!e)break;for(let t=0;t<p;t++){let n=OF(u,t)+OF(e,t);u[t]=Math.min(OF(f,t),Math.max(OF(d,t),n))}_=m(u),v=MF(h,_,n,s,c)}return{values:jF(l,u),converged:v<=a,iterations:y,error:v}}function IF(e,t){return e.dofs.map((e,n)=>{let r=(Array.isArray(t)?t[n]:n===0?t:void 0)??e.value;return Math.min(e.max,Math.max(e.min,r))})}function LF(e,t,n,r){let i=[];WP(e,e=>{e.joints&&i.push(...e.joints)});let a=i.map(e=>({child:e.child,a:IF(e,t[e.child]),b:IF(e,n[e.child])})),o=Math.max(1,Math.floor(r)),s=[];for(let t=0;t<=o;t++){let n=t/o,r={};for(let e of a)r[e.child]=e.a.map((t,r)=>t+((e.b[r]??t)-t)*n);s.push({t:n,values:r,poses:xF(e,r)})}return s}var RF=Math.PI/180;function zF(e,t,n,r){let i=e*RF,a=r*RF,o=eF(QP([0,0,1],i),QP([1,0,0],a));return{position:[n*Math.cos(i),n*Math.sin(i),t],rotation:o}}function BF(e,t={}){let n=t.base??`base`,r=e.map((e,t)=>e.name??`link${t+1}`);return e.map((e,t)=>{let i=t===0?n:r[t-1]??`link${t}`,a=r[t]??`link${t+1}`,o=zF(e.theta,e.d,e.a,e.alpha),s={origin:[0,0,0],direction:[0,0,1]},c={...e.min===void 0?{}:{min:e.min},...e.max===void 0?{}:{max:e.max},...e.value===void 0?{}:{value:e.value}};return{...e.type===`prismatic`?lF(i,a,s,c):cF(i,a,s,c),offset:o}})}var VF=Math.PI/180,HF=180/Math.PI;function UF(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function WF(e){return String(e===0?0:e)}function GF(e){return`${WF(e[0])} ${WF(e[1])} ${WF(e[2])}`}function KF(e,t={}){let n=t.name??`robot`,r=t.effort??0,i=t.velocity??0,a=t.meshes??{},o=[],s=[];WP(e,e=>{o.push(e.name),e.joints&&s.push(...e.joints)});for(let e of s){if(e.type!==`revolute`&&e.type!==`prismatic`)return k(P(M.VALIDATION_FAILED,`exportURDF: joint '${e.parent}->${e.child}' is '${e.type}'; URDF supports only revolute and prismatic joints`));if(e.offset)return k(P(M.VALIDATION_FAILED,`exportURDF: joint '${e.parent}->${e.child}' carries a fixed offset (e.g. a DH link) that URDF cannot represent as a single joint`))}let c=[`<?xml version="1.0"?>`,`<robot name="${UF(n)}">`];for(let e of o){let t=a[e];t?c.push(` <link name="${UF(e)}">`,` <visual><geometry><mesh filename="${UF(t)}"/></geometry></visual>`,` </link>`):c.push(` <link name="${UF(e)}"/>`)}for(let e of s){let t=e.type===`revolute`,n=t?e.min*VF:e.min,a=t?e.max*VF:e.max,o=e.type===`prismatic`?[0,0,0]:e.axis.origin;c.push(` <joint name="${UF(`${e.parent}_to_${e.child}`)}" type="${e.type}">`,` <parent link="${UF(e.parent)}"/>`,` <child link="${UF(e.child)}"/>`,` <origin xyz="${GF(o)}" rpy="0 0 0"/>`,` <axis xyz="${GF(e.axis.direction)}"/>`,` <limit lower="${WF(n)}" upper="${WF(a)}" effort="${WF(r)}" velocity="${WF(i)}"/>`,` </joint>`)}return c.push(`</robot>`,``),O(c.join(`
16
+ `))}function qF(e,t){return RegExp(`\\b${t}\\s*=\\s*"([^"]*)"`).exec(e)?.[1]}function JF(e,t){if(!e)return t;let n=e.trim().split(/\s+/).map(Number);return[n[0]??0,n[1]??0,n[2]??0]}function YF(e,t){return ZP(eF(eF(QP([0,0,1],t[2]),QP([0,1,0],t[1])),QP([1,0,0],t[0])),e)}function XF(e){let t=/<robot\b([^>]*)>/.exec(e);if(!t)return k(P(M.VALIDATION_FAILED,`importURDF: no <robot> element found`));let n=qF(t[1]??``,`name`)??`robot`,r=[],i=/<link\b([^>]*?)(?:\/>|>)/g;for(let t=i.exec(e);t;t=i.exec(e)){let e=qF(t[1]??``,`name`);e&&r.push(e)}let a=[],o=/<joint\b([^>]*)>([\s\S]*?)<\/joint>/g;for(let t=o.exec(e);t;t=o.exec(e)){let e=t[1]??``,n=t[2]??``,r=qF(e,`type`)??`fixed`;if(r===`fixed`||r===`floating`||r===`planar`)continue;let i=/<parent\b([^>]*?)\/?>/.exec(n),o=/<child\b([^>]*?)\/?>/.exec(n),s=qF(i?.[1]??``,`link`),c=qF(o?.[1]??``,`link`);if(!s||!c)return k(P(M.VALIDATION_FAILED,`importURDF: joint missing parent/child link (${qF(e,`name`)??`unnamed`})`));let l=/<origin\b([^>]*?)\/?>/.exec(n),u=/<axis\b([^>]*?)\/?>/.exec(n),d=/<limit\b([^>]*?)\/?>/.exec(n),f=JF(qF(l?.[1]??``,`xyz`),[0,0,0]),p=JF(qF(l?.[1]??``,`rpy`),[0,0,0]),m=YF(JF(qF(u?.[1]??``,`xyz`),[1,0,0]),p),h=Number(qF(d?.[1]??``,`lower`)??NaN),g=Number(qF(d?.[1]??``,`upper`)??NaN);if(r===`prismatic`){let e=Number.isFinite(h)&&Number.isFinite(g)?{min:h,max:g}:{};a.push(lF(s,c,{origin:f,direction:m},e))}else if(r===`revolute`||r===`continuous`){let e=r===`continuous`||!Number.isFinite(h)||!Number.isFinite(g)?{min:-180,max:180}:{min:h*HF,max:g*HF};a.push(cF(s,c,{origin:f,direction:m},e))}else return k(P(M.VALIDATION_FAILED,`importURDF: joint '${qF(e,`name`)??`unnamed`}' has unrecognized type '${r}'`))}return O({name:n,links:r,joints:a})}function ZF(){return{steps:[],shapes:new Map}}function QF(e,t,n){let r={...t,timestamp:Date.now()},i=new Map(e.shapes);return i.set(t.outputId,n),{steps:[...e.steps,r],shapes:i}}function $F(e){if(e.steps.length===0)return e;let t=e.steps.slice(0,-1),n=new Set;for(let e of t){n.add(e.outputId);for(let t of e.inputIds)n.add(t)}let r=new Map;for(let[t,i]of e.shapes)n.has(t)&&r.set(t,i);return{steps:t,shapes:r}}function eI(e,t){return e.steps.find(e=>e.id===t)}function tI(e,t){return e.shapes.get(t)}function nI(e){return e.steps.length}function rI(e,t){let n=e.steps.findIndex(e=>e.id===t);return n===-1?[]:e.steps.slice(n)}function iI(e,t,n){let r=new Map(e.shapes);return r.set(t,n),{...e,shapes:r}}function aI(){return{operations:new Map}}function oI(e,t,n){let r=new Map(e.operations);return r.set(t,n),{operations:r}}function sI(e,t){let[n,r]=t;return n!==void 0&&r===void 0&&NE(n)?aP(e,n):{...e}}function cI(e,t){let n=new Set(e.steps.map(e=>e.outputId)),r={steps:[],shapes:new Map};for(let[t,i]of e.shapes)n.has(t)||(r=iI(r,t,i));for(let n of e.steps){let e=t.operations.get(n.type);if(!e)return k(F(`REPLAY_UNKNOWN_OP`,`Unknown operation type: ${n.type}`));let i=[];for(let e of n.inputIds){let t=r.shapes.get(e);if(!t)return k(F(`REPLAY_MISSING_INPUT`,`Missing input shape: ${e} for step ${n.id}`));i.push(t)}try{let t=e(i,sI(n.parameters,i));r=QF(r,{id:n.id,type:n.type,parameters:n.parameters,inputIds:n.inputIds,outputId:n.outputId},t)}catch(e){return k(F(`REPLAY_STEP_FAILED`,`Step ${n.id} (${n.type}) failed: ${e instanceof Error?e.message:String(e)}`))}}return O(r)}function lI(e,t,n){let r=e.steps.findIndex(e=>e.id===t);if(r===-1)return k(F(`REPLAY_STEP_NOT_FOUND`,`Step not found: ${t}`));let i=new Map(e.shapes);for(let t=r;t<e.steps.length;t++){let n=e.steps[t];n&&i.delete(n.outputId)}let a={steps:e.steps.slice(0,r),shapes:i};for(let t=r;t<e.steps.length;t++){let r=e.steps[t];if(!r)continue;let i=n.operations.get(r.type);if(!i)return k(F(`REPLAY_UNKNOWN_OP`,`Unknown operation type: ${r.type}`));let o=[];for(let e of r.inputIds){let t=a.shapes.get(e);if(!t)return k(F(`REPLAY_MISSING_INPUT`,`Missing input shape: ${e} for step ${r.id}`));o.push(t)}try{let e=i(o,sI(r.parameters,o));a=QF(a,{id:r.id,type:r.type,parameters:r.parameters,inputIds:r.inputIds,outputId:r.outputId},e)}catch(e){return k(F(`REPLAY_STEP_FAILED`,`Step ${r.id} (${r.type}) failed: ${e instanceof Error?e.message:String(e)}`))}}return O(a)}function uI(e,t,n,r){return e.steps.findIndex(e=>e.id===t)===-1?k(F(`MODIFY_STEP_NOT_FOUND`,`Step not found: ${t}`)):lI({steps:e.steps.map(e=>e.id===t?{...e,parameters:n}:e),shapes:e.shapes},t,r)}function dI(e){let t={};for(let[n,r]of e.shapes){let e=vk(r);if(!e.ok)return k(F(`SERIALIZE_SHAPE_FAILED`,`Failed to serialize shape "${n}": ${e.error.message}`));t[n]=e.value}return O({steps:e.steps,shapes:t})}function fI(e){let t=new Map;for(let[n,r]of Object.entries(e.shapes))try{let e=sO(r);if(!e.ok)return k(F(`DESERIALIZE_SHAPE_FAILED`,`Failed to deserialize shape "${n}": ${e.error.message}`));t.set(n,e.value)}catch(e){return k(F(`DESERIALIZE_SHAPE_FAILED`,`Failed to deserialize shape "${n}": ${e instanceof Error?e.message:String(e)}`))}return O({steps:e.steps,shapes:t})}function pI(e){try{var t=jT();let{radius:n,pitch:r,height:i,depth:a=.6*r,toothHalfWidth:o=.42*r,crest:s=0,sectionsPerTurn:c=20,lefthand:l=!1,inward:u=!1}=e;if(!(n>0))return k(P(`THREAD_INVALID_RADIUS`,`radius must be > 0`));if(!(r>0))return k(P(`THREAD_INVALID_PITCH`,`pitch must be > 0`));if(!(i>0))return k(P(`THREAD_INVALID_HEIGHT`,`height must be > 0`));if(!(a>0))return k(P(`THREAD_INVALID_DEPTH`,`depth must be > 0`));if(s<0||s>=o)return k(P(`THREAD_INVALID_CREST`,`crest must be >= 0 and < toothHalfWidth`));if(c<3)return k(P(`THREAD_TOO_FEW_SECTIONS`,`sectionsPerTurn must be >= 3`));let d=i/r,f=Math.max(2,Math.round(d*c)),p=l?-1:1,m=u?-a:a,h=u?.3:-.3,g=o,_=t.u(new WT),v=[];for(let e=0;e<=f;e++){let t=p*e*2*Math.PI/c,i=r*Math.abs(t)/(2*Math.PI),a=n*Math.cos(t),o=n*Math.sin(t),l=Math.cos(t),u=Math.sin(t),d=(e,t)=>[a+e*l,o+e*u,i+t],f=s>0?[d(h,-g),d(m,-s),d(m,s),d(h,g)]:[d(h,-g),d(m,0),d(h,g)],y=xP(f.map((e,t)=>_.register(fP(e,f[(t+1)%f.length]))));if(!Wa(y))return y;v.push(_.register(y.value))}return wM(v,{ruled:!0})}catch(e){t.e=e}finally{t.d()}}var mI=1e-9,hI=1e-8,gI=1e-6,_I=([e,t],[n,r],i=gI)=>Math.abs(e-n)<=i&&Math.abs(t-r)<=i,vI=([e,t],[n,r])=>[e+n,t+r],yI=([e,t],[n,r])=>[e-n,t-r],bI=([e,t],n)=>[e*n,t*n],xI=([e,t],[n,r]=[0,0])=>Math.sqrt((e-n)**2+(t-r)**2),SI=([e,t],[n,r]=[0,0])=>(e-n)**2+(t-r)**2;function CI([e,t],[n,r]){return e*r-t*n}var wI=([e,t],[n,r]=[0,0])=>Math.atan2(r*e-t*n,e*n+t*r),TI=([e,t],[n,r]=[0,0])=>Math.atan2(r-t,n-e),EI=(e,t,n=[0,0])=>{let[r,i]=e,[a,o]=n,s=r-a,c=i-o,l=Math.sin(t),u=Math.cos(t),d=s*u-c*l,f=s*l+c*u;return[d+a,f+o]};function DI([e,t]){let n=Math.sqrt(e*e+t*t);return n<1e-12?[0,0]:[e/n,t/n]}var OI=(e,t)=>[Math.cos(t)*e,Math.sin(t)*e],kI=([e,t])=>[Math.sqrt(e*e+t*t),Math.atan2(t,e)],AI=([e,t])=>{let n=DI([e,t]);return n[0]===0&&n[1]===0&&i(`normalize2d`,`Cannot normalize zero-length vector`),n};function jI(e,t){let n,r=0;for(let i=0;i<e.length;i++){let a=e[i];if(t(a))if(r++,r===1)n=a;else break}return r===1?O(n):k(Co(`FINDER_NOT_UNIQUE`,`Finder expected a unique match but found ${r===0?0:`2+`} element(s)`))}function MI(e,t,n,r){let i=e=>n([...t,e]),a=e=>t.every(t=>t(e));function o(t){switch(e){case`edge`:return tD(t);case`face`:return nD(t);case`wire`:return rD(t);case`vertex`:return iD(t)}}let s=e=>{let n=o(e);return t.length===0?n.slice():n.filter(a)},c=()=>MI(e,[],n,r),l={_filters:t,_topoKind:e,when:e=>i(e),inList:e=>{let t=new Map;for(let n of e){let e=yk(n),r=t.get(e);r?r.push(n):t.set(e,[n])}return i(e=>{let n=t.get(yk(e));return!!n&&n.some(t=>xk(t,e))})},not:e=>{let t=e(c());return i(e=>!t.shouldKeep(e))},either:e=>{let t=e.map(e=>e(c()));return i(e=>t.some(t=>t.shouldKeep(e)))},findAll:e=>s(e),findUnique:e=>jI(o(e),a),shouldKeep:a,and:e=>i(t=>e.shouldKeep(t)),or:e=>{let t=a;return n([n=>t(n)||e.shouldKeep(n)])},negate:()=>{let e=a;return n([t=>!e(t)])}},u=r(l,i);return{...l,...u}}var NI={X:[1,0,0],Y:[0,1,0],Z:[0,0,1]};function PI(e){return typeof e==`string`?NI[e]??[0,0,1]:e}function FI(e,t,n){let r=U(),i=r.makeVertex(t[0],t[1],t[2]);return t=>{let a=r.distance(i,t.wrapped).value;return Math.abs(a-e)<n}}function II(e,t){let n=ID(PI(e));return e=>{let r=U(),[i,a]=r.curveParameters(e.wrapped),o=(i+a)/2,{tangent:s}=r.curveTangent(e.wrapped,o),c=ID(s),l=Math.acos(Math.min(1,Math.abs(jD(c,n))));return Math.abs(l-xD*t)<1e-6}}function LI(e){return MI(`edge`,e,LI,(t,n)=>({inDirection:(e=`Z`,t=0)=>n(II(e,t)),ofLength:(e,t=.001)=>n(n=>Math.abs(kk(n)-e)<t),ofCurveType:e=>n(t=>wk(t)===e),parallelTo:(t=`Z`)=>LI(e).inDirection(t,0),atDistance:(e,t=[0,0,0])=>n(FI(e,t,1e-6))}))}function RI(){return LI([])}function zI(e,t){let n=ID(PI(e));return e=>{let r=_O(e),i=Math.acos(Math.min(1,Math.abs(jD(ID(r),n))));return Math.abs(i-xD*t)<1e-6}}function BI(e){return MI(`face`,e,BI,(t,n)=>({inDirection:(e=`Z`,t=0)=>n(zI(e,t)),parallelTo:(t=`Z`)=>BI(e).inDirection(t,0),ofSurfaceType:e=>n(t=>{let n=lO(t);return Wa(n)&&n.value===e}),ofArea:(e,t=.001)=>n(n=>{let r=FM(n);return Wa(r)&&Math.abs(r.value-e)<t}),atDistance:(e,t=[0,0,0])=>n(FI(e,t,1e-6))}))}function VI(){return BI([])}function HI(e){return MI(`wire`,e,HI,(e,t)=>({isClosed:()=>t(e=>jk(e)),isOpen:()=>t(e=>!jk(e)),ofEdgeCount:e=>t(t=>tD(t).length===e)}))}function UI(){return HI([])}function WI(e,t){return typeof e==`object`&&`_topoKind`in e?e.findUnique(t):typeof e!=`function`&&kE(e)?O(e):e(VI()).findUnique(t)}function GI(e){return Array.isArray(e)&&e.length===2&&typeof e[0]==`number`&&typeof e[1]==`number`}function KI(e,t){let n=10**t,r=t<0?e:.01/n+e;return Math.round(r*n)/n}function qI(e){return Math.round(e*100)/100}function JI(e){return Math.round(e*1e5)/1e5}var YI=([e,t])=>`(${qI(e)},${qI(t)})`,XI=(e,t=1e-9)=>{let n=e;return Math.abs(e)<t&&(n=0),n.toFixed(-Math.log10(t))},ZI=(e,t=1e-9)=>Array.from(new Map(e.map(([e,n])=>[`[${XI(e,t)},${XI(n,t)}]`,[e,n]])).values()),QI=class{_wrapped;_deleted=!1;constructor(e){this._wrapped=e??yT().createBoundingBox2d(),KT(this,this._wrapped)}get wrapped(){if(this._deleted)throw Error(`This object has been deleted`);return this._wrapped}delete(){this._deleted||(this._deleted=!0,qT(this._wrapped),typeof this._wrapped.delete==`function`&&this._wrapped.delete())}[Symbol.dispose](){this.delete()}get repr(){let[e,t]=this.bounds;return`${YI(e)} - ${YI(t)}`}get bounds(){let{xMin:e,yMin:t,xMax:n,yMax:r}=yT().getBBox2dBounds(this.wrapped);return[[e,t],[n,r]]}get center(){let[[e,t],[n,r]]=this.bounds;return[e+(n-e)/2,t+(r-t)/2]}get width(){let[[e],[t]]=this.bounds;return Math.abs(t-e)}get height(){let[[,e],[,t]]=this.bounds;return Math.abs(t-e)}outsidePoint(e=1){let[t,n]=this.bounds,r=n[0]-t[0],i=n[1]-t[1];return[n[0]+r/100*e,n[1]+i/100*e*.9]}add(e){yT().mergeBBox2d(this.wrapped,e.wrapped)}isOut(e){return yT().isBBox2dOut(this.wrapped,e.wrapped)}containsPoint(e){return!yT().isBBox2dOutPoint(this.wrapped,e[0],e[1])}};function $I(e){return new eL(U().deserializeCurve2d(e))}var eL=class e{_wrapped;_deleted=!1;_boundingBox;_firstPoint=null;_lastPoint=null;_firstParameter=null;_lastParameter=null;constructor(e){this._wrapped=U().wrapCurve2dHandle(e),this._boundingBox=null,typeof this._wrapped.delete==`function`&&KT(this,this._wrapped)}get wrapped(){if(this._deleted)throw Error(`This object has been deleted`);return this._wrapped}delete(){this._deleted||(this._deleted=!0,typeof this._wrapped.delete==`function`&&(qT(this._wrapped),this._wrapped.delete()))}[Symbol.dispose](){this.delete()}get boundingBox(){if(this._boundingBox)return this._boundingBox;let e=U(),t=e.createBoundingBox2d();return e.addCurveToBBox2d(t,this.wrapped,1e-6),this._boundingBox=new QI(t),this._boundingBox}get repr(){return`${this.geomType} ${YI(this.firstPoint)} - ${YI(this.lastPoint)}`}serialize(){return U().serializeCurve2d(this.wrapped)}value(e){return U().evaluateCurve2d(this.wrapped,e)}get firstPoint(){return this._firstPoint===null&&(this._firstPoint=this.value(this.firstParameter)),this._firstPoint}get lastPoint(){return this._lastPoint===null&&(this._lastPoint=this.value(this.lastParameter)),this._lastPoint}get firstParameter(){return this._firstParameter===null&&(this._firstParameter=U().getCurve2dBounds(this.wrapped).first),this._firstParameter}get lastParameter(){return this._lastParameter===null&&(this._lastParameter=U().getCurve2dBounds(this.wrapped).last),this._lastParameter}get geomType(){return U().getCurve2dType(this.wrapped)}clone(){let t=new e(U().copyCurve2d(this.wrapped));return t._firstPoint=this._firstPoint,t._lastPoint=this._lastPoint,t._firstParameter=this._firstParameter,t._lastParameter=this._lastParameter,t}reverse(){U().reverseCurve2d(this.wrapped);let e=this._firstPoint;this._firstPoint=this._lastPoint,this._lastPoint=e;let t=this._firstParameter;this._firstParameter=this._lastParameter,this._lastParameter=t}distanceFromPoint(e){let t=U().projectPointOnCurve2d(this.wrapped,e[0],e[1]),n=t?t.distance:1/0;return Math.min(n,xI(e,this.firstPoint),xI(e,this.lastPoint))}distanceFromCurve(e){let t;try{t=U().distanceBetweenCurves2d(this.wrapped,e.wrapped,this.firstParameter,this.lastParameter,e.firstParameter,e.lastParameter)}catch{t=1/0}return Math.min(t,this.distanceFromPoint(e.firstPoint),this.distanceFromPoint(e.lastPoint),e.distanceFromPoint(this.firstPoint),e.distanceFromPoint(this.lastPoint))}distanceFrom(e){return GI(e)?this.distanceFromPoint(e):this.distanceFromCurve(e)}isOnCurve(e){return this.distanceFromPoint(e)<1e-9}parameter(e,t=1e-9){let n,r,i=!1;try{let t=U().projectPointOnCurve2d(this.wrapped,e[0],e[1]);t?(n=t.distance,r=t.param):i=!0}catch{i=!0}return i?_I(e,this.firstPoint,t)?O(this.firstParameter):_I(e,this.lastPoint,t)?O(this.lastParameter):k(F(`PARAMETER_NOT_FOUND`,`Failed to find parameter`)):n===void 0||r===void 0?k(F(`PARAMETER_NOT_FOUND`,`Failed to find parameter`)):n>t?k(F(`POINT_NOT_ON_CURVE`,`Point ${YI(e)} not on curve ${this.repr}, ${n.toFixed(9)}`)):O(r)}tangentAt(e){let t;if(Array.isArray(e))t=j(this.parameter(e));else{let n=U().getCurve2dBounds(this.wrapped);t=(n.last-n.first)*e+n.first}return U().evaluateCurve2dD1(this.wrapped,t).tangent}splitAt(n,r=1e-9){let i=n.map(e=>GI(e)?j(this.parameter(e,r)):e);i=Array.from(new Map(i.map(e=>[KI(e,-Math.log10(r)),e])).values()).sort((e,t)=>e-t);let a=this.firstParameter,o=this.lastParameter;return a>o&&i.reverse(),Math.abs(t(i,0)-a)<r*100&&(i=i.slice(1)),!i.length||(Math.abs(t(i,i.length-1)-o)<r*100&&(i=i.slice(0,-1)),!i.length)?[this]:U().splitCurve2d(this.wrapped,i).map(t=>new e(t))}},tL=(e,t=1e-4,n=`C0`,r=200)=>new eL(yT().approximateCurve2dAsBSpline(e.wrapped,t,n,r)),nL=e=>(e.geomType!==`BSPLINE_CURVE`&&i(`BSplineToBezier`,`You can only convert a Bspline`),yT().decomposeBSpline2dToBeziers(e.wrapped).map(e=>new eL(e)));function rL(e,t={tolerance:1e-4,continuity:`C0`,maxSegments:300}){let n=yT();return e.flatMap(e=>{let r=e.geomType;if(r===`ELLIPSE`||r===`CIRCLE`&&_I(e.firstPoint,e.lastPoint))return e.splitAt([.5]);if([`LINE`,`ELLIPSE`,`CIRCLE`].includes(r))return e;if(r===`BEZIER_CURVE`){let t=n.getCurve2dBezierDegree(e.wrapped);if(t!==null&&[1,2,3].includes(t))return e}return rL(nL(r===`BSPLINE_CURVE`?e:tL(e,t.tolerance,t.continuity,t.maxSegments)),t)})}var iL=(e,t)=>{let n=new eL(U().makeLine2d(e[0],e[1],t[0],t[1]));return _I(n.firstPoint,e)||n.reverse(),n},aL=(e,t,n)=>{let r=new eL(U().makeArc2dThreePoints(e[0],e[1],t[0],t[1],n[0],n[1]));if(!_I(r.firstPoint,e)){let e=U().trimCurve2d(r.wrapped,r.lastParameter,r.firstParameter);r.delete(),r=new eL(e)}return r},oL=(e,t,n)=>{let r=new eL(U().makeArc2dTangent(e[0],e[1],t[0],t[1],n[0],n[1]));if(!_I(r.firstPoint,e)){let e=U().trimCurve2d(r.wrapped,r.lastParameter,r.firstParameter);r.delete(),r=new eL(e)}return r},sL=(e,t=[0,0])=>new eL(U().makeCircle2d(t[0],t[1],e,!0)),cL=(e,t,n=[1,0],r=[0,0],i=!0)=>new eL(U().makeEllipse2d(r[0],r[1],e,t,n[0],n[1],i)),lL=(e,t,n,r,i=[0,0],a,o=!0)=>new eL(U().makeEllipseArc2d(i[0],i[1],e,t,n,r,a[0],a[1],o)),uL=(e,t,n)=>{let r=[[e[0],e[1]],...t.map(e=>[e[0],e[1]]),[n[0],n[1]]];return new eL(U().makeBezier2d(r))};function dL(e,{tolerance:t=.001,smoothing:n=null,degMax:r=3,degMin:i=1}={}){try{let a=e.map(e=>[e[0],e[1]]);return O(new eL(U().makeBSpline2d(a,{tolerance:t,smoothing:n,degMax:r,degMin:i,continuity:`C2`})))}catch(e){return k(F(`BSPLINE_2D_FAILED`,`B-spline approximation failed`,e))}}var fL=(e,t,n,r=!1)=>{let i=bI(vI(e,t),.5),a=xI(n,e)*(r?-1:1);return aL(e,vI(bI(AI(yI(i,n)),a),n),t)},pL=(e,n)=>{let r=yT(),a=e.geomType,[o,s]=n,c=`${JI(o)} ${JI(s)}`;if(a===`LINE`)return`L ${c}`;if(a===`BEZIER_CURVE`){let n=r.getCurve2dBezierPoles(e.wrapped);n||i(`adaptedCurveToPathElem`,`Expected Bezier poles`);let a=n.length-1;if(a===1)return`L ${c}`;if(a===2){let[e,r]=t(n,1);return`Q ${qI(e)} ${qI(r)} ${c}`}if(a===3){let[e,r]=t(n,1),[i,a]=t(n,2);return`C ${qI(e)} ${qI(r)} ${qI(i)} ${qI(a)} ${c}`}}if(a===`CIRCLE`){let t=r.getCurve2dCircleData(e.wrapped);t||i(`adaptedCurveToPathElem`,`Expected circle data`);let{radius:n,isDirect:a}=t,l=r.getCurve2dBounds(e.wrapped),u=(l.last-l.first)*SD,d=u===360?`${JI(o)} ${JI(s+1e-4)}`:c;return`A ${n} ${n} 0 ${Math.abs(u)>180?`1`:`0`} ${a?`1`:`0`} ${d}`}if(a===`ELLIPSE`){let t=r.getCurve2dEllipseData(e.wrapped);t||i(`adaptedCurveToPathElem`,`Expected ellipse data`);let{majorRadius:n,minorRadius:a,xAxisAngle:l,isDirect:u}=t,d=r.getCurve2dBounds(e.wrapped),f=(d.last-d.first)*SD,p=f===360?`${JI(o)} ${JI(s+1e-4)}`:c,m=180-l*SD;return`A ${JI(n)} ${JI(a)} ${JI(m)} ${Math.abs(f)>180?`1`:`0`} ${u?`1`:`0`} ${p}`}i(`adaptedCurveToPathElem`,`Unsupported curve type: ${a}`)},mL=e=>{let t=U(),n=t.createBoundingBox2d();return e.forEach(e=>{t.addCurveToBBox2d(n,e.wrapped,1e-6)}),new QI(n)};function hL(e,t){let n=U();return e.map(e=>yE(n.liftCurve2dToPlane(e.wrapped,[...t.origin],[...t.zDir],[...t.xDir])))}var gL=(e,t)=>{let n=U();return e.map(e=>yE(n.buildEdgeOnSurface(e.wrapped,t)))},_L=(e,t)=>{let n=U();return e.map(e=>t?new eL(n.transformCurve2dGeneral(e.wrapped,t)):e.clone())},vL=(e,t,n=[0,0])=>U().createAffinityGTrsf2d(n[0],n[1],-t[1],t[0],e),yL=e=>U().createTranslationGTrsf2d(e[0],e[1]),bL=(e,t=[0,0],n=`center`)=>n===`center`?U().createMirrorGTrsf2d(e[0],e[1],`point`):U().createMirrorGTrsf2d(0,0,`axis`,t[0],t[1],e[0],e[1]),xL=(e,t=[0,0])=>U().createRotationGTrsf2d(e,t[0],t[1]),SL=(e,t=[0,0])=>U().createScaleGTrsf2d(e,t[0],t[1]);function CL(e,t,n=`original`){let r=U(),i=r.extractSurfaceFromFace(t.wrapped),a=pO(t),o=null;if(n===`original`&&uO(t)!==`PLANE`){if(uO(t)!==`CYLINDRE`)return k(P(`UNSUPPORTED_FACE_TYPE`,`Only planar and cylindrical faces can be unwrapped for sketching`));let e=r.getSurfaceCylinderData(i);if(!e)return k(P(`UNSUPPORTED_FACE_TYPE`,`Could not extract cylinder data from face surface`));e.isDirect||(i=r.reverseSurfaceU(i)),o=vL(1/e.radius,[1,0])}if(n===`bounds`){o=r.createIdentityGTrsf2d();try{r.setGTrsf2dTranslationPart(o,0,0);let e=r.createAffinityGTrsf2d(0,0,0,1,a.uMax-a.uMin);if(r.multiplyGTrsf2d(o,e),e.delete(),a.uMin!==0){let e=r.createIdentityGTrsf2d();r.setGTrsf2dTranslationPart(e,-a.uMin,0),r.multiplyGTrsf2d(o,e),e.delete()}let t=r.createAffinityGTrsf2d(0,0,1,0,a.vMax-a.vMin);if(r.multiplyGTrsf2d(o,t),t.delete(),a.vMin!==0){let e=r.createIdentityGTrsf2d();r.setGTrsf2dTranslationPart(e,0,-a.vMin),r.multiplyGTrsf2d(o,e),e.delete()}}catch(e){throw o.delete(),e}}let s=gL(_L(e,o),i);return o&&o.delete(),O(s)}function wL(e,t){let n=U(),r=new eL(n.extractCurve2dFromEdge(e.wrapped,t.wrapped));return Pk(e)===`backward`&&n.reverseCurve2d(r.wrapped),r}var TL=(e,t=1)=>`${e.bounds[0][0]-t} ${-e.bounds[1][1]-t} ${e.width+2*t} ${e.height+2*t}`,EL=(e,t,n=1)=>`<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="${TL(t,n)}" fill="none" stroke="black" stroke-width="0.6%" vector-effect="non-scaling-stroke">
17
+ ${e}
18
+ </svg>`;function DL(e){let t=e.map(e=>e.wrapped);return bE(U().makeWire(t))}var OL=class e{curves;_boundingBox;_orientation;_guessedOrientation;constructor(e){e.length===0&&i(`Blueprint`,`requires at least one curve — use createBlueprint() for Result-based validation`),this.curves=e,this._boundingBox=null,this._orientation=null,this._guessedOrientation=null}delete(){this.curves.forEach(e=>{e.delete()}),this._boundingBox&&this._boundingBox.delete()}[Symbol.dispose](){this.delete()}clone(){return new e(this.curves.map(e=>e.clone()))}get repr(){return[`Blueprint`,...this.curves.map(e=>e.repr)].join(`
19
+ `)}get boundingBox(){return this._boundingBox||=mL(this.curves),this._boundingBox}get orientation(){if(this._orientation)return this._orientation;if(this._guessedOrientation)return this._guessedOrientation;let e=this.curves.flatMap(e=>e.geomType===`LINE`?[e.firstPoint]:[e.firstPoint,e.value(.5)]),t=e.map((t,n)=>{let r=uA(e,(n+1)%e.length);return(r[0]-t[0])*(r[1]+t[1])}).reduce((e,t)=>e+t,0);return this._guessedOrientation=t>0?`clockwise`:`counterClockwise`,this._guessedOrientation}stretch(t,n,r=[0,0]){let i=_L(this.curves,vL(t,n,r));return new e(i)}scale(t,n){let r=n||this.boundingBox.center,i=_L(this.curves,SL(t,r));return new e(i)}rotate(t,n){let r=_L(this.curves,xL(t*xD,n));return new e(r)}translate(t,n=0){let r=GI(t)?t:[t,n],i=_L(this.curves,yL(r));return new e(i)}mirror(t,n=[0,0],r=`center`){let i=_L(this.curves,bL(t,n,r));return new e(i)}sketchOnPlane(e,t){let n=e&&typeof e!=`string`?{...e}:JD(e,t),r=hL(this.curves,n),i=DL(r);for(let e of r)e[Symbol.dispose]();return{wire:i,defaultOrigin:n.origin,defaultDirection:n.zDir}}sketchOnFace(e,t){let n=U(),r=j(CL(this.curves,e,t)),i=DL(r);for(let e of r)e[Symbol.dispose]();n.buildCurves3d(i.wrapped);let a=n.fixWireOnFace(i.wrapped,e.wrapped,1e-9);return i[Symbol.dispose](),{wire:bE(a),baseFace:e}}subFace(e,t){let n=CD(t||[...vO(e)]);return j(EA(this.translate(hO(e,n)).sketchOnFace(e,`original`).wire))}punchHole(e,t,{height:n=null,origin:r=null,draftAngle:i=0}={}){let a=j(WI(t,e)),o=this.subFace(a,r);return j(aO(U().draftPrism(e.wrapped,o.wrapped,a.wrapped,n,i,!1)))}toSVGPathD(){let e=this.clone().mirror([1,0],[0,0],`plane`),t=rL(e.curves).flatMap(e=>pL(e,e.lastPoint)),[n,r]=dA(e.curves).firstPoint;return`M ${JI(n)} ${JI(r)} ${t.join(` `)}${e.isClosed()?` Z`:``}`}toSVGPath(){return`<path d="${this.toSVGPathD()}" />`}toSVGViewBox(e=1){return TL(this.boundingBox,e)}toSVGPaths(){return[this.toSVGPathD()]}toSVG(e=1){return EL(this.toSVGPath(),this.boundingBox,e)}get firstPoint(){return dA(this.curves).firstPoint}get lastPoint(){return fA(this.curves).lastPoint}isInside(e){if(!this.boundingBox.containsPoint(e))return!1;let t=U(),n=iL(e,this.boundingBox.outsidePoint());try{if(this.curves.find(t=>t.isOnCurve(e)))return!1;let r=[],i=0;return this.curves.forEach(e=>{if(e.boundingBox.isOut(n.boundingBox))return;let a=t.intersectCurves2d(n.wrapped,e.wrapped,1e-9);for(let e of a.points)r.some(t=>_I(t,e,1e-9))||(r.push(e),i++);for(let e of a.segments)e.delete()}),!!(i%2)}finally{n.delete()}}isClosed(){return _I(this.firstPoint,this.lastPoint)}intersects(e){if(this.boundingBox.isOut(e.boundingBox))return!1;let t=U();for(let n of this.curves)for(let r of e.curves){if(n.boundingBox.isOut(r.boundingBox))continue;let e=t.intersectCurves2d(n.wrapped,r.wrapped,1e-9);if(e.points.length||e.segments.length)return!0}return!1}},kL=class{constructor(e=1/0,t=Float64Array,n=Uint32Array){let r=e!==1/0;this.ids=r?new n(e):[],this.values=r?new t(e):[],this.capacity=e,this.length=0}clear(){this.length=0}push(e,t){if(this.length===this.capacity)throw RangeError(`Queue is at capacity.`);let n=this.length++;for(;n>0;){let e=n-1>>1,r=this.values[e];if(t>=r)break;this.ids[n]=this.ids[e],this.values[n]=r,n=e}this.ids[n]=e,this.values[n]=t}pop(){if(this.length===0)return;let e=this.ids,t=this.values,n=e[0],r=--this.length;if(r>0){let n=e[r],i=t[r],a=0,o=r>>1;for(;a<o;){let n=(a<<1)+1,o=n+1,s=n+(o<r&+(t[o]<t[n]));if(t[s]>=i)break;e[a]=e[s],t[a]=t[s],a=s}e[a]=n,t[a]=i}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){Array.isArray(this.ids)&&(this.ids.length=this.length),Array.isArray(this.values)&&(this.values.length=this.length)}},AL=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],jL=3,ML=class e{static from(t,n=0){if(n%8!=0)throw Error(`byteOffset must be 8-byte aligned.`);if(!t||t.byteLength===void 0||`buffer`in t)throw Error(`Data must be an instance of ArrayBuffer or SharedArrayBuffer.`);let[r,i]=new Uint8Array(t,n+0,2);if(r!==251)throw Error(`Data does not appear to be in a Flatbush format.`);let a=i>>4;if(a!==jL)throw Error(`Got v${a} data when expected v${jL}.`);let o=AL[i&15];if(!o)throw Error(`Unrecognized array type.`);let[s]=new Uint16Array(t,n+2,1),[c]=new Uint32Array(t,n+4,1);return new e(c,s,o,void 0,t,n)}constructor(e,t=16,n=Float64Array,r=ArrayBuffer,i,a=0){if(e===void 0)throw Error(`Missing required argument: numItems.`);if(isNaN(e)||e<=0)throw Error(`Unexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.byteOffset=a;let o=e,s=o;this._levelBounds=[o*4];do o=Math.ceil(o/this.nodeSize),s+=o,this._levelBounds.push(s*4);while(o!==1);this.ArrayType=n,this.IndexArrayType=s<16384?Uint16Array:Uint32Array;let c=AL.indexOf(n),l=s*4*n.BYTES_PER_ELEMENT;if(c<0)throw Error(`Unexpected typed array class: ${n}.`);let u=n,d=this.IndexArrayType;if(i)this.data=i,this._boxes=new u(i,a+8,s*4),this._indices=new d(i,a+8+l,s),this._pos=s*4,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1];else{let n=this.data=new r(8+l+s*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new u(n,8,s*4),this._indices=new d(n,8+l,s),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(n,0,2).set([251,(jL<<4)+c]),new Uint16Array(n,2,1)[0]=t,new Uint32Array(n,4,1)[0]=e}this._queue=new kL}add(e,t,n=e,r=t){let i=this._pos,a=i>>2,o=this._boxes;return this._indices[a]=a,o[i]=e,o[i+1]=t,o[i+2]=n,o[i+3]=r,this._pos=i+4,e<this.minX&&(this.minX=e),t<this.minY&&(this.minY=t),n>this.maxX&&(this.maxX=n),r>this.maxY&&(this.maxY=r),a}finish(){if(this._pos>>2!==this.numItems)throw Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);let e=this._boxes;if(this.numItems<=this.nodeSize){e[this._pos++]=this.minX,e[this._pos++]=this.minY,e[this._pos++]=this.maxX,e[this._pos++]=this.maxY;return}let{numItems:t,minX:n,minY:r,nodeSize:i,_indices:a,_levelBounds:o}=this,s=this.maxX-n||1,c=this.maxY-r||1,l=new Int32Array(t),u=65535,d=u/s,f=u/c;for(let i=0,a=0;i<t;i++){let t=e[a++],o=e[a++],s=e[a++],c=e[a++];l[i]=IL(d*((t+s)/2-n)|0,f*((o+c)/2-r)|0)}PL(l,e,a,0,t-1,i);let p=t*4;for(let t=0,n=0;t<o.length-1;t++){let r=o[t];for(;n<r;){let t=n,o=e[n++],s=e[n++],c=e[n++],l=e[n++];for(let t=1;t<i&&n<r;t++)o=Math.min(o,e[n++]),s=Math.min(s,e[n++]),c=Math.max(c,e[n++]),l=Math.max(l,e[n++]);a[p>>2]=t,e[p++]=o,e[p++]=s,e[p++]=c,e[p++]=l}}this._pos=p}search(e,t,n,r,i){if(this._pos!==this._boxes.length)throw Error(`Data not yet indexed - call index.finish().`);let{_boxes:a,_levelBounds:o,_indices:s,nodeSize:c}=this,l=this.numItems*4,u=a.length-4,d=o.length-1,f=[],p=[],m=!1;for(;u!==void 0;){let h=Math.min(u+c*4,o[d]),g=u>=l;if(m)this._collectContained(u,h,d,l,p,i);else for(let o=u;o<h;o+=4){let c=a[o];if(n<c)continue;let l=a[o+1];if(r<l)continue;let u=a[o+2];if(e>u)continue;let m=a[o+3];if(t>m)continue;let h=s[o>>2]|0;if(g){let i=+(e<=c&&t<=l&&n>=u&&r>=m);f.push(h|i,d-1)}else(i===void 0||i(h,c,l,u,m))&&p.push(h)}d=f.pop(),u=f.pop(),u!==void 0&&(m=(u&1)==1,u&=-2)}return p}_collectContained(e,t,n,r,i,a){let o=this._boxes,s=this._indices,c=e;for(let e=n;e>0;e--)c=s[c>>2];let l=Math.min(c+(t-e)*this.nodeSize**n,r);if(a===void 0)for(;c<l;c+=4)i.push(s[c>>2]|0);else for(;c<l;c+=4){let e=s[c>>2]|0;a(e,o[c],o[c+1],o[c+2],o[c+3])&&i.push(e)}}neighbors(e,t,n=1/0,r=1/0,i){if(this._pos!==this._boxes.length)throw Error(`Data not yet indexed - call index.finish().`);let{_boxes:a,_levelBounds:o,_indices:s,_queue:c,nodeSize:l}=this,u=this.numItems*4,d=l*4,f=[],p=r*r,m=n===1,h=p;for(c.push(a.length-4<<1,0);c.length;){let r=c.ids[0];if(r&1){if(c.pop(),f.push(r>>1),f.length===n)break;continue}c.pop();let l=r>>1,p=l<u,g=Math.min(l+d,NL(l,o));for(let n=l;n<g;n+=4){let r=a[n],o=a[n+1],l=a[n+2],u=a[n+3],d=Math.max(Math.max(r-e,e-l),0),f=Math.max(Math.max(o-t,t-u),0),g=d*d+f*f;if(g>h)continue;let _=s[n>>2]|0;p?(i===void 0||i(_))&&(c.push(_<<1|1,g),m&&g<h&&(h=g)):c.push(_<<1,g)}}return c.clear(),f}};function NL(e,t){let n=0,r=t.length-1;for(;n<r;){let i=n+r>>1;t[i]>e?r=i:n=i+1}return t[n]}function PL(e,t,n,r,i,a){let o=[r,i];for(;o.length;){let r=o.pop()||0,i=o.pop()||0;if(r-i<=a&&Math.floor(i/a)>=Math.floor(r/a))continue;let s=e[i],c=e[i+r>>1],l=e[r],u=s>c==s>l?c<s==c<l?l:c:s,d=i-1,f=r+1;for(;;){do d++;while(e[d]<u);do f--;while(e[f]>u);if(d>=f)break;FL(e,t,n,d,f)}o.push(i,f,f+1,r)}}function FL(e,t,n,r,i){let a=e[r];e[r]=e[i],e[i]=a;let o=4*r,s=4*i,c=t[o],l=t[o+1],u=t[o+2],d=t[o+3];t[o]=t[s],t[o+1]=t[s+1],t[o+2]=t[s+2],t[o+3]=t[s+3],t[s]=c,t[s+1]=l,t[s+2]=u,t[s+3]=d;let f=n[r];n[r]=n[i],n[i]=f}function IL(e,t){let n=e^t,r=65535^n,i=65535^(e|t),a=e&(t^65535),o=n|r>>1,s=n>>1^n,c=i^(i>>1^r&a>>1),l=a^(n&i>>1^a>>1);return n=o&o>>2^s&s>>2,r=o&s>>2^s&(o^s)>>2,i=c^(o&c>>2^s&l>>2),a=l^(s&c>>2^(o^s)&l>>2),o=n&n>>4^r&r>>4,s=n&r>>4^r&(n^r)>>4,c=i^(n&i>>4^r&a>>4),l=a^(r&i>>4^(n^r)&a>>4),i=c^(o&c>>8^s&l>>8),a=l^(s&c>>8^(o^s)&l>>8),i^=i>>1,a^=a>>1,n=e^t,r=a|65535^(n|i),n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,((r<<1|n)>>>0)-2147483648}var LL=(e,t,n=1e-9)=>{if(e.boundingBox.isOut(t.boundingBox))return O({intersections:[],commonSegments:[],commonSegmentsPoints:[]});let r=yT(),i,a;try{let o=r.intersectCurves2d(e.wrapped,t.wrapped,n);i=o.points,a=o.segments.map(e=>new eL(e))}catch(e){return k(F(`INTERSECTION_FAILED`,`Intersections failed between curves`,e))}let o=a.filter(e=>_I(e.firstPoint,e.lastPoint,n)).map(e=>e.firstPoint);o.length&&(i.push(...o),a=a.filter(e=>!_I(e.firstPoint,e.lastPoint,n)));let s=a.flatMap(e=>[e.firstPoint,e.lastPoint]);return O({intersections:i,commonSegments:a,commonSegmentsPoints:s})},RL=(e,t=1e-9)=>{let n=yT(),r;try{let i=n.intersectCurves2d(e.wrapped,e.wrapped,t);r=i.points;for(let e of i.segments)e.delete()}catch(e){return k(F(`SELF_INTERSECTION_FAILED`,`Self intersection failed`,e))}return O(r)},zL=(e,n,r)=>{let i=AI(yI(n,e)),a=[i[1],-i[0]],o=[t(a,0)*r,t(a,1)*r];return{firstPoint:vI(e,o),lastPoint:vI(n,o)}},BL=(e,t)=>{let n=e.geomType,r=yT();if(n===`CIRCLE`){let n=r.getCurve2dCircleData(e.wrapped);if(!n)return iL(e.firstPoint,e.lastPoint);let{cx:i,cy:a,radius:o,isDirect:s}=n,c=t*(s?1:-1),l=o+c;if(l<1e-10){let t=[i,a],n=e=>{let[n,r]=AI(yI(e,t));return vI(e,[c*n,c*r])};return{collapsed:!0,firstPoint:n(e.firstPoint),lastPoint:n(e.lastPoint)}}let u=new eL(r.makeCircle2d(i,a,l,s)),d;try{d=r.trimCurve2d(u.wrapped,e.firstParameter,e.lastParameter)}finally{u.delete()}return new eL(d)}if(n===`LINE`){let{firstPoint:n,lastPoint:r}=zL(e.firstPoint,e.lastPoint,t);return iL(n,r)}let i=new eL(r.offsetCurve2d(e.wrapped,t)),a=tL(i);if(i.delete(),j(RL(a)).length){let e=a.firstPoint,t=a.lastPoint;return a.delete(),{collapsed:!0,firstPoint:e,lastPoint:t}}return a};function VL(e,n,r){let i=CI(e.tangentAt(1),n.tangentAt(0));if(Math.abs(i)<1e-10)return null;let a=Math.abs(r)*(i>0?-1:1),o=BL(e,a),s=BL(n,a);if(!(o instanceof eL)||!(s instanceof eL))return null;let c=LL(o,s,1e-9);if(!Wa(c))return null;let l=c.value.intersections.at(-1);if(!GI(l))return null;let u=l,d=(e,t)=>{let[n,r]=t.tangentAt(u),i=AI([-r,n]),o=vI(u,bI(i,a)),s=j(e.parameter(o,1e-6));return e.splitAt([s])},f=d(e,o),p=d(n,s);return{first:t(f,0),second:t(p,1),center:u}}function HL(e,t,n){let r=VL(e,t,n);if(!r)return[e,t];let{first:i,second:a,center:o}=r;return[i,fL(i.lastPoint,a.firstPoint,o),a]}function UL(e,t,n){let r=VL(e,t,n);if(!r)return[e,t];let{first:i,second:a}=r;return[i,iL(i.lastPoint,a.firstPoint),a]}function WL(e,n,r){let i=CI(AI(e.tangentAt(1)),AI(n.tangentAt(0))),a=Math.asin(i);if(Math.abs(i)<1e-10)return[e,n];let o=i>0?-1:1,s=Math.abs(r)*Math.sin(a/2)*o,c=BL(e,s),l=BL(n,s);if(!(c instanceof eL)||!(l instanceof eL))return[e,n];let u=LL(c,l,1e-9);if(!Wa(u))return[e,n];let d=u.value.intersections.at(-1);if(!GI(d))return[e,n];let f=sL(r,d),p=j(LL(e,f)).intersections[0],m=j(LL(n,f)).intersections.at(-1);if(!p||!m)return[e,n];let h=e.splitAt([p]),g=n.splitAt([m]),_=t(h,0),v=t(g,g.length-1);try{return[_,aL(_.lastPoint,e.lastPoint,v.firstPoint),v]}catch{return[e,n]}}var GL=class e{blueprints;_boundingBox;constructor(e){this.blueprints=e,this._boundingBox=null}get repr(){return[`Blueprints`,...this.blueprints.map(e=>e.repr)].join(`
20
+ `)}clone(){return new e(this.blueprints.map(e=>e.clone()))}get boundingBox(){if(!this._boundingBox){let e=new QI;this.blueprints.forEach(t=>{e.add(t.boundingBox)}),this._boundingBox=e}return this._boundingBox}stretch(t,n,r){return new e(this.blueprints.map(e=>e.stretch(t,n,r)))}rotate(t,n){return new e(this.blueprints.map(e=>e.rotate(t,n)))}scale(t,n){let r=n||this.boundingBox.center;return new e(this.blueprints.map(e=>e.scale(t,r)))}translate(t,n=0){return new e(this.blueprints.map(e=>typeof t==`number`?e.translate(t,n):e.translate(t)))}mirror(t,n,r){return new e(this.blueprints.map(e=>e.mirror(t,n,r)))}sketchOnPlane(e,t){return this.blueprints.map(n=>n.sketchOnPlane(e,t))}sketchOnFace(e,t){return this.blueprints.map(n=>n.sketchOnFace(e,t))}punchHole(e,t,n={}){let r=e;return this.blueprints.forEach(e=>{r=e.punchHole(r,t,n)}),r}toSVGViewBox(e=1){return TL(this.boundingBox,e)}toSVGPaths(){return this.blueprints.map(e=>e.toSVGPaths())}toSVG(e=1){return EL(this.blueprints.map(e=>e instanceof OL?e.toSVGPath():e.toSVGGroup()).join(`
21
+ `),this.boundingBox,e)}},KL=class e{blueprints;_boundingBox;constructor(e){e.length===0&&i(`CompoundBlueprint`,`requires at least one blueprint (the outer boundary) — use createCompoundBlueprint() for Result-based validation`),this.blueprints=e,this._boundingBox=null}clone(){return new e(this.blueprints.map(e=>e.clone()))}get boundingBox(){if(!this._boundingBox){let e=new QI;this.blueprints.forEach(t=>{e.add(t.boundingBox)}),this._boundingBox=e}return this._boundingBox}get repr(){return[`Compound Blueprints`,`-- Outline`,dA(this.blueprints).repr,`-- Holes`,...this.blueprints.slice(1).map(e=>e.repr)].join(`
22
+ `)}stretch(t,n,r){return new e(this.blueprints.map(e=>e.stretch(t,n,r)))}rotate(t,n){return new e(this.blueprints.map(e=>e.rotate(t,n)))}scale(t,n){let r=n||this.boundingBox.center;return new e(this.blueprints.map(e=>e.scale(t,r)))}translate(t,n=0){return new e(this.blueprints.map(e=>typeof t==`number`?e.translate(t,n):e.translate(t)))}mirror(t,n,r){return new e(this.blueprints.map(e=>e.mirror(t,n,r)))}sketchOnPlane(e,t){return this.blueprints.map(n=>n.sketchOnPlane(e,t))}sketchOnFace(e,t){return this.blueprints.map(n=>n.sketchOnFace(e,t))}punchHole(e,t,n={}){return dA(this.blueprints).punchHole(e,t,n)}toSVGViewBox(e=1){return TL(this.boundingBox,e)}toSVGPaths(){return this.blueprints.flatMap(e=>e.toSVGPaths())}toSVGGroup(){return`<g>${this.blueprints.map(e=>e.toSVGPath()).join(``)}</g>`}toSVG(e=1){return EL(this.toSVGGroup(),this.boundingBox,e)}},qL=e=>{if(e.length===0)return[];if(e.length===1)return[[To(e,0,`groupByBoundingBoxOverlap`)]];let t=new ML(e.length);for(let n of e){let[[e,r],[i,a]]=n.boundingBox.bounds;t.add(e,r,i,a)}t.finish();let n=e.map((n,r)=>{let[[i,a],[o,s]]=n.boundingBox.bounds;return t.search(i,a,o,s).filter(t=>t>r&&!n.boundingBox.isOut(To(e,t,`groupByBoundingBoxOverlap`).boundingBox))}),r=[],i=Array(n.length);return n.forEach((t,n)=>{let a=i[n];a||(a=[],r.push(a)),a.push(To(e,n,`groupByBoundingBoxOverlap`)),t.length&&t.forEach(e=>{i[e]=a})}),r},JL=e=>e.map((t,n)=>{let r=To(t.curves,0,`addContainmentInfo`),i=r.value((r.lastParameter+r.firstParameter)/2);return{blueprint:t,isIn:e.filter((e,t)=>n===t?!1:e.isInside(i))}}),YL=(e,t)=>e.flatMap(({blueprint:e})=>ZL(t.filter(({blueprint:t,isIn:n})=>t===e||n.indexOf(e)!==-1))),XL=(e,t)=>[t.filter(({isIn:e})=>e.length<=1),...ZL(JL(e.map(({blueprint:e})=>e)))],ZL=e=>{if(!e.length)return[];let t=e.filter(({isIn:e})=>!e.length),n=e.filter(({isIn:e})=>e.length>1);return t.length===1&&n.length===0?[e]:t.length>1?YL(t,e):XL(n,e)},QL=e=>new GL(qL(e).map(JL).flatMap(ZL).map(e=>e.length===1?To(e,0,`organiseBlueprints`).blueprint:(e.sort((e,t)=>e.isIn.length-t.isIn.length),new KL(e.map(({blueprint:e})=>e))))),$L=e=>e===`symmetric`||typeof e==`number`||Array.isArray(e)&&e.length===2,eR=e=>{let t;t=e?$L(e)?{endTangent:e}:{endTangent:0,...e}:{endTangent:[1,0]};let{endTangent:n,startFactor:r=1,endFactor:i=1,startTangent:a}=t,o;o=typeof n==`number`?OI(1,n*xD):n;let s;return s=typeof a==`number`?OI(1,a*xD):a,{endTangent:o,startFactor:r,endFactor:i,startTangent:s}};function tR(e,t,n){return e<t?{majorRadius:t,minorRadius:e,rotationAngle:n+90}:{majorRadius:e,minorRadius:t,rotationAngle:n}}function nR(e,t,n,r,i,a,o,s){let c=i*xD,l=e=>xI(s(e)),u=l(OI(n,c)),d=l(OI(r,c+Math.PI/2)),f=AI(s(EI([1,0],c))),[,p]=kI(f),{cx:m,cy:h,startAngle:g,endAngle:_,clockwise:v,rx:y,ry:b}=aR(e,t,u,d,p,a,o),x=lL(y,b,v?g:_,v?_:g,[m,h],f);return v||x.reverse(),x}function rR(e,t,n,r,i){let a=Math.PI*2,o=iR(1,0,e,t),s=iR(e,t,-n,-r);for(;s>a;)s-=a;for(;s<0;)s+=a;i||(s-=a);let c=o+s;for(;c>a;)c-=a;for(;c<0;)c+=a;return{startAngle:o,deltaAngle:s,endAngle:c}}function iR(e,t,n,r){let a=e*n+t*r,o=Math.sqrt((e*e+t*t)*(n*n+r*r));o<1e-12&&i(`radianAngle`,`Cannot compute angle between zero-length vectors`);let s=Math.acos(Math.max(-1,Math.min(1,a/o)));return e*r-t*n<0&&(s=-s),s}function aR([e,t],[n,r],a,o,s,c,l){a<0&&(a=-a),o<0&&(o=-o),(a<1e-10||o<1e-10)&&i(`convertSvgEllipseParams`,`rx and ry cannot be 0`);let u=Math.sin(s),d=Math.cos(s),f=(e-n)/2,p=(t-r)/2,m=(e+n)/2,h=(t+r)/2,g=d*f+u*p,_=d*p-u*f,v=g*g/(a*a)+_*_/(o*o);v>1&&(a*=Math.sqrt(v),o*=Math.sqrt(v));let y=a*o,b=a*_,x=o*g,S=b*b+x*x;S||i(`convertSvgEllipseParams`,`Start point cannot be same as end point`);let C=Math.sqrt(Math.abs((y*y-S)/S));c===l&&(C=-C);let w=C*b/o,ee=-C*x/a,te=d*w-u*ee+m,ne=u*w+d*ee+h,re=(g-w)/a,ie=(g+w)/a,{startAngle:ae,deltaAngle:oe,endAngle:se}=rR(re,(_-ee)/o,ie,(_+ee)/o,l);return{cx:te,cy:ne,startAngle:ae,deltaAngle:oe,endAngle:se,clockwise:l,rx:a,ry:o}}var oR={chamfer:UL,dogbone:WL,fillet:HL};function sR(e,t){if(typeof e==`function`)return e;let n=oR[t];return(t,r)=>n(t,r,e)}var cR=class{pointer;firstPoint;pendingCurves;_nextCorner;constructor(e=[0,0]){this.pointer=e,this.firstPoint=e,this._nextCorner=null,this.pendingCurves=[]}_convertToUV([e,t]){return[e,t]}_convertFromUV([e,t]){return[e,t]}_lastCurve(){let e=this.pendingCurves.length;return e===0?null:this.pendingCurves[e-1]}_requireLastCurve(e,t){let n=this._lastCurve();return n||i(e,`You need a previous curve to ${t}`),n}_resolveRelative(e,t){return[this.pointer[0]+e,this.pointer[1]+t]}_saveCurveAndAdvance(e,t){return this.saveCurve(e),this.pointer=t,this}get penPosition(){return this.pointer}get penAngle(){let e=this._lastCurve();if(!e)return 0;let[t,n]=e.tangentAt(1);return Math.atan2(n,t)*SD}movePointerTo(e){return this.pendingCurves.length&&i(`Sketcher2d.movePointerTo`,`You can only move the pointer if there is no curve defined`),this.pointer=e,this.firstPoint=e,this}saveCurve(e){if(!this._nextCorner){this.pendingCurves.push(e);return}let t=this.pendingCurves.pop();t||i(`Sketcher2d.saveCurve`,`No previous curve available for custom corner`),this.pendingCurves.push(...this._nextCorner(t,e)),this._nextCorner=null}lineTo(e){let t=iL(this._convertToUV(this.pointer),this._convertToUV(e));return this._saveCurveAndAdvance(t,e)}line(e,t){return this.lineTo(this._resolveRelative(e,t))}vLine(e){return this.line(0,e)}hLine(e){return this.line(e,0)}vLineTo(e){return this.lineTo([this.pointer[0],e])}hLineTo(e){return this.lineTo([e,this.pointer[1]])}polarLineTo([e,t]){return this.lineTo(OI(e,t*xD))}polarLine(e,t){let[n,r]=OI(e,t*xD);return this.line(n,r)}tangentLine(e){let t=this._requireLastCurve(`Sketcher2d.tangentLine`,`sketch a tangent line`),n=AI(this._convertFromUV(t.tangentAt(1)));return this.line(n[0]*e,n[1]*e)}threePointsArcTo(e,t){let n=aL(this._convertToUV(this.pointer),this._convertToUV(t),this._convertToUV(e));return this._saveCurveAndAdvance(n,e)}threePointsArc(e,t,n,r){let[i,a]=this.pointer;return this.threePointsArcTo([i+e,a+t],[i+n,a+r])}sagittaArcTo(e,t){let[n,r]=this.pointer,[a,o]=e,s=(n+a)/2,c=(r+o)/2,l=-(o-r),u=a-n,d=Math.sqrt(l**2+u**2);d<1e-12&&i(`sagittaArcTo`,`Start and end points cannot be identical`);let f=[s+l/d*t,c+u/d*t],p=aL(this._convertToUV(this.pointer),this._convertToUV(f),this._convertToUV(e));return this._saveCurveAndAdvance(p,e)}sagittaArc(e,t,n){return this.sagittaArcTo(this._resolveRelative(e,t),n)}vSagittaArc(e,t){return this.sagittaArc(0,e,t)}hSagittaArc(e,t){return this.sagittaArc(e,0,t)}bulgeArcTo(e,t){if(!t)return this.lineTo(e);let n=xI(this.pointer,e)/2;return this.sagittaArcTo(e,-t*n)}bulgeArc(e,t,n){return this.bulgeArcTo(this._resolveRelative(e,t),n)}vBulgeArc(e,t){return this.bulgeArc(0,e,t)}hBulgeArc(e,t){return this.bulgeArc(e,0,t)}tangentArcTo(e){let t=this._requireLastCurve(`Sketcher2d.tangentArc`,`sketch a tangent arc`),n=oL(this._convertToUV(this.pointer),t.tangentAt(1),this._convertToUV(e));return this._saveCurveAndAdvance(n,e)}tangentArc(e,t){return this.tangentArcTo(this._resolveRelative(e,t))}ellipseTo(e,t,n,r=0,i=!1,a=!1){let{majorRadius:o,minorRadius:s,rotationAngle:c}=tR(t,n,r),l=nR(this._convertToUV(this.pointer),this._convertToUV(e),o,s,c,i,a,e=>this._convertToUV(e));return this._saveCurveAndAdvance(l,e)}ellipse(e,t,n,r,i=0,a=!1,o=!1){return this.ellipseTo(this._resolveRelative(e,t),n,r,i,a,o)}halfEllipseTo(e,t,n=!1){let r=TI(e,this.pointer),i=xI(e,this.pointer);return this.ellipseTo(e,i/2,t,r*SD,!0,n)}halfEllipse(e,t,n,r=!1){return this.halfEllipseTo(this._resolveRelative(e,t),n,r)}bezierCurveTo(e,t){let n=t.length===2&&!Array.isArray(t[0])?[t]:t,r=uL(this._convertToUV(this.pointer),n.map(e=>this._convertToUV(e)),this._convertToUV(e));return this._saveCurveAndAdvance(r,e)}quadraticBezierCurveTo(e,t){return this.bezierCurveTo(e,[t])}cubicBezierCurveTo(e,t,n){return this.bezierCurveTo(e,[t,n])}smoothSplineTo(e,t){let{endTangent:n,startTangent:r,startFactor:i,endFactor:a}=eR(t),o=this._lastCurve(),s=xI(this.pointer,e)*.25,c;c=r||(o?this._convertFromUV(o.tangentAt(1)):[1,0]),c=AI(c);let l=[this.pointer[0]+c[0]*i*s,this.pointer[1]+c[1]*i*s],u;u=n===`symmetric`?[-c[0],-c[1]]:n,u=AI(u);let d=[e[0]-u[0]*a*s,e[1]-u[1]*a*s];return this.cubicBezierCurveTo(e,l,d)}smoothSpline(e,t,n){return this.smoothSplineTo(this._resolveRelative(e,t),n)}customCorner(e,t=`fillet`){return this.pendingCurves.length||i(`Sketcher2d.customCorner`,`You need a curve defined to fillet the angle`),this._nextCorner=sR(e,t),this}_customCornerLastWithFirst(e,t=`fillet`){if(!e)return;let n=this.pendingCurves.pop(),r=this.pendingCurves.shift();(!n||!r)&&i(`Sketcher2d._customCornerLastWithFirst`,`Not enough curves to close and fillet`),this.pendingCurves.push(...sR(e,t)(n,r))}_closeSketch(){_I(this.pointer,this.firstPoint)||this.lineTo(this.firstPoint)}_closeWithMirror(){_I(this.pointer,this.firstPoint)&&i(`Sketcher2d._closeWithMirror`,`Cannot close with a mirror when the sketch is already closed`);let e=[this.pointer[0]-this.firstPoint[0],this.pointer[1]-this.firstPoint[1]],t=this._convertToUV(this.pointer),n=this._convertToUV(e),r=this.pendingCurves.map(e=>new eL(U().mirrorCurve2dAcrossAxis(e.wrapped,t[0],t[1],n[0],n[1])));r.reverse();for(let e of r)e.reverse();this.pendingCurves.push(...r),this.pointer=this.firstPoint}},lR=class extends cR{constructor(e=[0,0]){super(),this.pointer=e,this.firstPoint=e,this.pendingCurves=[]}done(){return new OL(this.pendingCurves)}close(){return this._closeSketch(),this.done()}closeWithMirror(){return this._closeWithMirror(),this.close()}closeWithCustomCorner(e,t=`fillet`){return this._closeSketch(),this._customCornerLastWithFirst(e,t),this.done()}},uR=2*Math.PI;function dR(e){let t=e%uR,n=t<0?t+uR:t;return n<Math.PI?n:n===Math.PI?0:Math.abs(n-uR)}function fR(e){return e.curves.map((t,n)=>({firstCurve:t,secondCurve:uA(e.curves,(n+1)%e.curves.length),point:t.lastPoint}))}function pR(e){let t=t=>pR([...e,t]),n=t=>e.every(e=>e(t));return{shouldKeep:n,when:e=>t(e),inList:e=>t(t=>e.some(e=>_I(e,t.point))),atDistance:(e,n=[0,0])=>t(t=>Math.abs(xI(n,t.point)-e)<1e-9),atPoint:e=>t(t=>_I(e,t.point)),inBox:(e,n)=>{let r=Math.min(e[0],n[0]),i=Math.max(e[0],n[0]),a=Math.min(e[1],n[1]),o=Math.max(e[1],n[1]);return t(e=>{let[t,n]=e.point;return t>=r&&t<=i&&n>=a&&n<=o})},ofAngle:e=>t(t=>{let n=t.firstCurve.tangentAt(1),r=t.secondCurve.tangentAt(0);return Math.abs(dR(wI(n,r))-dR(xD*e))<1e-9}),not:e=>{let n=e(pR([]));return t(e=>!n.shouldKeep(e))},either:e=>{let n=e.map(e=>e(pR([])));return t(e=>n.some(t=>t.shouldKeep(e)))},find:e=>fR(e).filter(n)}}function mR(){return pR([])}var hR=(e,t,n=0)=>{let r=[...Array(t).keys()].map(n=>{let r=-(Math.PI*2/t)*n;return[e*Math.sin(r),e*Math.cos(r)]}),i=fA(r),a=new lR().movePointerTo([i[0],i[1]]);return n?r.forEach(([e,t])=>a.sagittaArcTo([e,t],n)):r.forEach(([e,t])=>a.lineTo([e,t])),a.done()},gR=(e,t,n=0)=>{let{rx:r=0,ry:i=0}=typeof n==`number`?{ry:n,rx:n}:n,a=Math.min(r,e/2),o=Math.min(i,t/2),s=a&&o;s||(a=0,o=0);let c=a===o,l=new lR([Math.min(0,-(e/2-a)),-t/2]),u=(e,t)=>{s&&(c?l.tangentArc(e,t):l.ellipse(e,t,a,o,0,!1,!0))};return a<e/2&&l.hLine(e-2*a),u(a,o),o<t/2&&l.vLine(t-2*o),u(-a,o),a<e/2&&l.hLine(-(e-2*a)),u(-a,-o),o<t/2&&l.vLine(-(t-2*o)),u(a,-o),l.close()},_R=(e,t)=>_I(e,t,mI);function vR(e){return`${e[0].toFixed(9)},${e[1].toFixed(9)}`}function yR(e,t){let n=vR(e),r=vR(t);return n<r?`${n}|${r}`:`${r}|${n}`}function bR(e){let t=e[0];return t===void 0&&i(`startOfSegment`,`empty segment`),t.firstPoint}function xR(e){let t=e[e.length-1];return t===void 0&&i(`endOfSegment`,`empty segment`),t.lastPoint}function SR(e){return[...e].reverse().map(e=>{let t=e.clone();return t.reverse(),t})}function CR(e){return[...e].reverse().map(SR)}function wR(e){let t=(e.lastParameter+e.firstParameter)/2;return e.value(t)}function TR(e,t){let n=vR(t);for(let r=0;r<e.length;r++){let i=e[r];if(i!==void 0&&vR(i.firstPoint)===n&&_R(t,i.firstPoint))return r}for(let n=0;n<e.length;n++){let r=e[n];if(r!==void 0&&_R(t,r.firstPoint))return n}return-1}function ER(e,t,n,r){for(let i=0;i<e.length;i++){let a=e[i];if(a!==void 0&&vR(a.firstPoint)===t&&vR(a.lastPoint)===n&&r(a))return i}for(let t=0;t<e.length;t++){let n=e[t];if(n!==void 0&&r(n))return t}return-1}function DR(e,t){return t<=0?e:e.slice(t).concat(e.slice(0,t))}function OR(e,t){return DR(e,TR(e,t))}function kR(e,t){let n=vR(t.firstPoint),r=vR(t.lastPoint),a=e=>_R(t.firstPoint,e.firstPoint)&&_R(t.lastPoint,e.lastPoint),o=e=>_R(t.lastPoint,e.firstPoint)&&_R(t.firstPoint,e.lastPoint);function s(e,t,n,r){let i=ER(e,t,n,r);return i===-1?null:DR(e,i)}let c=s(e,n,r,a);if(c!==null)return c;let l=s(e,r,n,o);if(l!==null)return l;let u=SR(e),d=s(u,n,r,a);if(d!==null)return d;let f=s(u,r,n,o);if(f!==null)return f;i(`rotateToStartAtSegment`,`failed to rotate to segment start`)}function*AR(e,t,n){let r=new Set(t.map(vR)),i=new Set(n.map(e=>yR(e.firstPoint,e.lastPoint))),a=e=>r.has(vR(e))?!0:t.some(t=>_R(t,e)),o=(e,t)=>i.has(yR(e,t))?!0:n.some(n=>_R(n.firstPoint,e)&&_R(n.lastPoint,t)||_R(n.firstPoint,t)&&_R(n.lastPoint,e)),s=[];for(let t of e){if(_R(t.firstPoint,t.lastPoint)){s.push(t);continue}let e=a(t.lastPoint),n=o(t.firstPoint,t.lastPoint);e?(s.push(t),yield s,s=[]):n?(s.length&&(yield s,s=[]),yield[t]):s.push(t)}s.length&&(yield s)}function jR(e,t,n){return e.filter(e=>{let r=t.filter(t=>_R(t.firstPoint,e)||_R(t.lastPoint,e)),i=r.length%2?r.filter(t=>!(_R(t.firstPoint,e)&&_R(t.lastPoint,e))):r;if(i.length===0||i.length%2)return!1;let a=i.map(e=>n.isInside(wR(e)));return!(a.every(Boolean)||a.every(e=>!e))})}function MR(e,n){let r=[],i=[],a=e.curves.map(()=>[]),o=n.curves.map(()=>[]),s=new ML(n.curves.length);for(let e of n.curves){let[[t,n],[r,i]]=e.boundingBox.bounds;s.add(t,n,r,i)}return s.finish(),e.curves.forEach((e,c)=>{let[[l,u],[d,f]]=e.boundingBox.bounds,p=s.search(l,u,d,f);for(let s of p){let{intersections:l,commonSegments:u,commonSegmentsPoints:d}=j(LL(e,t(n.curves,s),mI/100));r.push(...l),a[c]?.push(...l),o[s]?.push(...l),i.push(...u),r.push(...d),a[c]?.push(...d),o[s]?.push(...d)}}),{allIntersections:ZI(r,mI),allCommonSegments:i,firstCurvePoints:a,secondCurvePoints:o}}function NR(e,t){return mA([e,t]).flatMap(([e,t])=>t.length===0?[e]:e.splitAt(t,mI/100))}function PR(e,t,n){return e.some(([e,r])=>e===void 0||r===void 0?!1:_R(e,t)&&_R(r,n)||_R(e,n)&&_R(r,t))}function FR(e,t){let{allIntersections:n,allCommonSegments:r,firstCurvePoints:i,secondCurvePoints:a}=MR(e,t);if(n.length<=1)return null;let o=NR(e.curves,i),s=NR(t.curves,a),c=r.map(e=>[e.firstPoint,e.lastPoint]),l=jR(jR(n,o,t),s,e);if(l.length===0&&r.length===0)return null;if(r.length===0){let e=l[0];if(e===void 0)return null;o=OR(o,e),s=OR(s,e)}else{let e=r[0];if(e===void 0)return null;o=kR(o,e),s=kR(s,e)}let u=Array.from(AR(o,l,r)),d=Array.from(AR(s,l,r)),f=u[0],p=d[0];if(f!==void 0&&p!==void 0){let e=!_R(xR(p),xR(f)),t=r.length>0&&p.length!==1;(e||t)&&(d=CR(d))}let m=Math.max(u.length,d.length),h=[];for(let e=0;e<m;e++){let t=u[e],n=d[e];if(t===void 0||n===void 0){let e=t??n;if(e===void 0)continue;h.push([e,e]);continue}PR(c,bR(t),xR(t))?h.push([t,`same`]):h.push([t,n])}return h}function IR(e){if(e.length<2)return e;let n=[],r=0;for(;r<e.length;){let i=t(e,r);if(i.geomType!==`LINE`){n.push(i),r++;continue}let a=i.lastPoint,o=r+1;for(;o<e.length;){let n=t(e,o);if(n.geomType!==`LINE`||!_R(a,n.firstPoint))break;let r=yI(a,i.firstPoint),s=yI(n.lastPoint,n.firstPoint);if(Math.abs(CI(r,s))>1e-9)break;a=n.lastPoint,o++}o>r+1?n.push(iL(i.firstPoint,a)):n.push(i),r=o}return n}function LR(e){let t=e.map(e=>e.firstPoint),n=e.map(e=>e.lastPoint),r=mA([t,n.slice(-1).concat(n.slice(0,-1))]).map(([e,t],n)=>e===void 0||t===void 0||_R(e,t)?null:n).filter(e=>e!==null);if(r.length===0)return[e];let i=mA([r.slice(0,-1),r.slice(1)]).map(([t,n])=>e.slice(t,n)),a=e.slice(r[r.length-1]),o=r[0];return o!==void 0&&o!==0&&(a=a.concat(e.slice(0,o))),i.push(a),i}function RR(e,t,n){return t===1?{curves:[...e],segmentsIn:1,lastWasSame:null}:t===2||t===0?{curves:[],segmentsIn:null,lastWasSame:null}:t===null?{curves:[],segmentsIn:null,lastWasSame:n?[...n,...e]:e}:{curves:[],segmentsIn:t,lastWasSame:n}}function zR(e,t,n,r,i,a,o){let s=[],c=0,l=e[0];if(l!==void 0){let t=wR(l),n=r.isInside(t);(i.firstInside===`keep`&&n||i.firstInside===`remove`&&!n)&&(c+=1,s.push(...e))}let u=t[0];if(u!==void 0){let e=wR(u),r=n.isInside(e);if(i.secondInside===`keep`&&r||i.secondInside===`remove`&&!r){let e=t;c===1&&(e=SR(t)),c+=1,s.push(...e)}}return a===null&&c===1&&o!==null&&(s=[...o,...s]),{curves:s,segmentsIn:c===1?c:a,lastWasSame:c===1?null:o}}function BR(e,t,n){let r=FR(e,t);if(r===null)return VR(e,t);if(r.every(([,e])=>e===`same`))return{identical:!0};let i=null,a=null,o=r.flatMap(([r,o])=>{if(o===`same`){let e=RR(r,i,a);return i=e.segmentsIn,a=e.lastWasSame,e.curves}let s=zR(r,o,e,t,n,i,a);return i=s.segmentsIn,a=s.lastWasSame,s.curves}),s=a;s!==null&&i===1&&(o=[...s,...o]);let c=LR(IR(o)).filter(e=>e.length>0).map(e=>new OL(e));if(c.length===0)return null;if(c.length===1){let e=c[0];return e===void 0?null:e}return QL(c)}function VR(e,t){let n=e.curves[0],r=t.curves[0];return{identical:!1,firstCurveInSecond:n!==void 0&&t.isInside(wR(n)),secondCurveInFirst:r!==void 0&&e.isInside(wR(r))}}function HR(e,t){let n=BR(e,t,{firstInside:`remove`,secondInside:`remove`});return n===null||n instanceof OL||n instanceof GL?n:n.identical?e.clone():n.firstCurveInSecond?t.clone():n.secondCurveInFirst?e.clone():new GL([e,t])}function UR(e,t){let n=BR(e,t,{firstInside:`remove`,secondInside:`keep`});return n===null||n instanceof OL||n instanceof GL?n:n.identical||n.firstCurveInSecond?null:n.secondCurveInFirst?new GL([new KL([e,t])]):e.clone()}function WR(e,t){let n=BR(e,t,{firstInside:`keep`,secondInside:`keep`});return n===null||n instanceof OL||n instanceof GL?n:n.identical||n.firstCurveInSecond?e.clone():n.secondCurveInFirst?t.clone():null}var GR=(e,t)=>{if(e instanceof OL&&t instanceof OL){let n=[];return e.curves.forEach(e=>{t.curves.forEach(t=>{let{intersections:r,commonSegmentsPoints:i}=j(LL(e,t));n.push(...r),n.push(...i)})}),n=ZI(n),n.length>1}if(e instanceof KL||e instanceof GL)return e.blueprints.some(e=>GR(e,t));if(t instanceof KL||t instanceof GL)return t.blueprints.some(t=>GR(e,t));i(`genericIntersects`,`Unhandled shape combination in genericIntersects`)},KR=(e,t)=>{if(e instanceof KL){if(t instanceof OL)return YR(t,e);if(t instanceof KL)return ZR(e,t)}if(t instanceof KL){if(e instanceof OL)return YR(e,t);if(e instanceof KL)return ZR(e,t)}if(e instanceof OL&&t instanceof OL)return HR(e,t);i(`genericFuse`,`Unhandled shape combination in genericFuse`)},qR=e=>{let t=new Map,n=[];return e.forEach((r,a)=>{let o;t.has(a)?o=t.get(a):(o={current:r,fusedWith:new Set([a])},n.push(o)),e.slice(a+1).forEach((e,n)=>{let r=o.current,s=a+n+1;if(o.fusedWith.has(s))return;let c=e,l=!1;if(t.has(s)&&(c=t.get(s).current,l=!0),r.boundingBox.isOut(c.boundingBox)||!GR(r,c))return;let u;if(r instanceof GL||c instanceof GL){let e=QR(r,c);e===null&&i(`fuseIntersectingBlueprints`,`fuse2D returned null for non-null inputs`),u=e}else u=KR(r,c);if(!(u instanceof OL||u instanceof KL)){if(u instanceof GL&&u.blueprints.length===2)return;u instanceof GL&&u.blueprints.length===1?u=To(u.blueprints,0,`fuseIntersectingBlueprints`):u instanceof GL||i(`fuseIntersectingBlueprints`,`Fuse produced unexpected non-blueprint result`)}o.fusedWith.add(s),o.current=u,l||t.set(s,o)})}),QL(n.map(({current:e})=>e).flatMap(e=>JR(e)))},JR=e=>e instanceof OL?[e]:e instanceof KL?e.blueprints:e instanceof GL?e.blueprints.flatMap(e=>JR(e)):[],YR=(e,t)=>{let n=HR(e,To(t.blueprints,0,`fuseBlueprintWithCompound`)),r=t.blueprints.slice(1).map(t=>UR(t,e));return QL([...JR(n),...r.flatMap(e=>JR(e))])};function XR(e,t){let n=[];for(let r of e)for(let e of t)n.push([r,e]);return n}var ZR=(e,t)=>{let n=To(e.blueprints,0,`fuseCompoundWithCompound`),r=To(t.blueprints,0,`fuseCompoundWithCompound`),i=HR(n,r),a=t.blueprints.slice(1).map(e=>UR(e,n)),o=e.blueprints.slice(1).map(e=>UR(e,r)),s=XR(e.blueprints.slice(1),t.blueprints.slice(1)).flatMap(([e,t])=>JR(WR(e,t)));return QL([...JR(i),...a.flatMap(e=>JR(e)),...o.flatMap(e=>JR(e)),...s])},QR=(e,t)=>{if(e===null)return t?.clone()??null;if(t===null)return e.clone();if(!(e instanceof GL)&&t instanceof GL)return qR([e,...t.blueprints]);if(!(t instanceof GL)&&e instanceof GL)return qR([t,...e.blueprints]);if(e instanceof GL&&t instanceof GL){let n=QR(To(e.blueprints,0,`fuse2D`),t);return e.blueprints.slice(1).forEach(e=>{n=QR(e,n)}),n}if(e instanceof KL){if(t instanceof GL)return QR(t,e);if(t instanceof OL)return YR(t,e);if(t instanceof KL)return ZR(e,t)}if(t instanceof KL){if(e instanceof GL)return QR(e,t);if(e instanceof OL)return YR(e,t);if(e instanceof KL)return ZR(e,t)}return e instanceof OL&&t instanceof OL?HR(e,t):null},$R=e=>{let t=e.flatMap(e=>e===null?[]:e instanceof GL?e.blueprints:e);return t.length===1?To(t,0,`mergeNonIntersecting`):new GL(t)},ez=(e,t)=>{if(e===null)return null;if(t===null)return e.clone();if(e instanceof GL)return $R(e.blueprints.map(e=>ez(e,t)));if(e instanceof KL){let n=To(e.blueprints,0,`cut2D`);if(t instanceof OL&&!t.intersects(n))return n.isInside(t.firstPoint)?QL([n,...JR(QR(t,new GL(e.blueprints.slice(1))))]):e.clone();{let r=ez(n,t);return e.blueprints.slice(1).forEach(e=>{r=ez(r,e)}),r}}if(t instanceof GL){let n=e;for(let e of t.blueprints)n=ez(n,e);return n}if(t instanceof KL){let n=UR(e,To(t.blueprints,0,`cut2D`));return t.blueprints.slice(1).forEach(t=>{n=QR(n,WR(t,e))}),n}return UR(e,t)};function tz(e,t){if(e===null||t===null)return null;if(e instanceof OL&&t instanceof OL)return WR(e,t);if(e instanceof GL)return $R(e.blueprints.map(e=>tz(e,t)));if(e instanceof KL){let n=To(e.blueprints,0,`intersect2D`),r=e.blueprints.slice(1);if(r.length===0)return tz(n,t);let i=tz(n,t);for(let e of r)i=ez(i,e);return i}if(t instanceof GL)return $R(t.blueprints.map(t=>tz(e,t)));if(t instanceof KL){let n=To(t.blueprints,0,`intersect2D`),r=t.blueprints.slice(1);if(r.length===0)return tz(n,e);let i=tz(n,e);for(let e of r)i=ez(i,e);return i}i(`intersect2D`,`Unhandled Shape2D combination`)}var nz=e(((e,t)=>{t.exports={}}));
23
+ /*! https://mths.be/codepointat v0.2.0 by @mathias */
24
+ String.prototype.codePointAt||(function(){var e=function(){try{var e={},t=Object.defineProperty,n=t(e,e,e)&&t}catch{}return n}(),t=function(e){if(this==null)throw TypeError();var t=String(this),n=t.length,r=e?Number(e):0;if(r!=r&&(r=0),!(r<0||r>=n)){var i=t.charCodeAt(r),a;return i>=55296&&i<=56319&&n>r+1&&(a=t.charCodeAt(r+1),a>=56320&&a<=57343)?(i-55296)*1024+a-56320+65536:i}};e?e(String.prototype,`codePointAt`,{value:t,configurable:!0,writable:!0}):String.prototype.codePointAt=t})();var rz=0,iz=-3;function az(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function oz(e,t){this.source=e,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=t,this.destLen=0,this.ltree=new az,this.dtree=new az}var sz=new az,cz=new az,lz=new Uint8Array(30),uz=new Uint16Array(30),dz=new Uint8Array(30),fz=new Uint16Array(30),pz=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),mz=new az,hz=new Uint8Array(320);function gz(e,t,n,r){var i,a;for(i=0;i<n;++i)e[i]=0;for(i=0;i<30-n;++i)e[i+n]=i/n|0;for(a=r,i=0;i<30;++i)t[i]=a,a+=1<<e[i]}function _z(e,t){var n;for(n=0;n<7;++n)e.table[n]=0;for(e.table[7]=24,e.table[8]=152,e.table[9]=112,n=0;n<24;++n)e.trans[n]=256+n;for(n=0;n<144;++n)e.trans[24+n]=n;for(n=0;n<8;++n)e.trans[168+n]=280+n;for(n=0;n<112;++n)e.trans[176+n]=144+n;for(n=0;n<5;++n)t.table[n]=0;for(t.table[5]=32,n=0;n<32;++n)t.trans[n]=n}var vz=new Uint16Array(16);function yz(e,t,n,r){var i,a;for(i=0;i<16;++i)e.table[i]=0;for(i=0;i<r;++i)e.table[t[n+i]]++;for(e.table[0]=0,a=0,i=0;i<16;++i)vz[i]=a,a+=e.table[i];for(i=0;i<r;++i)t[n+i]&&(e.trans[vz[t[n+i]]++]=i)}function bz(e){e.bitcount--||(e.tag=e.source[e.sourceIndex++],e.bitcount=7);var t=e.tag&1;return e.tag>>>=1,t}function xz(e,t,n){if(!t)return n;for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<<e.bitcount,e.bitcount+=8;var r=e.tag&65535>>>16-t;return e.tag>>>=t,e.bitcount-=t,r+n}function Sz(e,t){for(;e.bitcount<24;)e.tag|=e.source[e.sourceIndex++]<<e.bitcount,e.bitcount+=8;var n=0,r=0,i=0,a=e.tag;do r=2*r+(a&1),a>>>=1,++i,n+=t.table[i],r-=t.table[i];while(r>=0);return e.tag=a,e.bitcount-=i,t.trans[n+r]}function Cz(e,t,n){var r=xz(e,5,257),i=xz(e,5,1),a=xz(e,4,4),o,s,c;for(o=0;o<19;++o)hz[o]=0;for(o=0;o<a;++o){var l=xz(e,3,0);hz[pz[o]]=l}for(yz(mz,hz,0,19),s=0;s<r+i;){var u=Sz(e,mz);switch(u){case 16:var d=hz[s-1];for(c=xz(e,2,3);c;--c)hz[s++]=d;break;case 17:for(c=xz(e,3,3);c;--c)hz[s++]=0;break;case 18:for(c=xz(e,7,11);c;--c)hz[s++]=0;break;default:hz[s++]=u;break}}yz(t,hz,0,r),yz(n,hz,r,i)}function wz(e,t,n){for(;;){var r=Sz(e,t);if(r===256)return rz;if(r<256)e.dest[e.destLen++]=r;else{var i,a,o,s;for(r-=257,i=xz(e,lz[r],uz[r]),a=Sz(e,n),o=e.destLen-xz(e,dz[a],fz[a]),s=o;s<o+i;++s)e.dest[e.destLen++]=e.dest[s]}}}function Tz(e){for(var t,n,r;e.bitcount>8;)e.sourceIndex--,e.bitcount-=8;if(t=e.source[e.sourceIndex+1],t=256*t+e.source[e.sourceIndex],n=e.source[e.sourceIndex+3],n=256*n+e.source[e.sourceIndex+2],t!==(~n&65535))return iz;for(e.sourceIndex+=4,r=t;r;--r)e.dest[e.destLen++]=e.source[e.sourceIndex++];return e.bitcount=0,rz}function Ez(e,t){var n=new oz(e,t),r,i,a;do{switch(r=bz(n),i=xz(n,2,0),i){case 0:a=Tz(n);break;case 1:a=wz(n,sz,cz);break;case 2:Cz(n,n.ltree,n.dtree),a=wz(n,n.ltree,n.dtree);break;default:a=iz}if(a!==rz)throw Error(`Data error`)}while(!r);return n.destLen<n.dest.length?typeof n.dest.slice==`function`?n.dest.slice(0,n.destLen):n.dest.subarray(0,n.destLen):n.dest}_z(sz,cz),gz(lz,uz,4,3),gz(dz,fz,2,1),lz[28]=0,uz[28]=258;var Dz=Ez;function Oz(e,t,n,r,i){return(1-i)**3*e+3*(1-i)**2*i*t+3*(1-i)*i**2*n+i**3*r}function kz(){this.x1=NaN,this.y1=NaN,this.x2=NaN,this.y2=NaN}kz.prototype.isEmpty=function(){return isNaN(this.x1)||isNaN(this.y1)||isNaN(this.x2)||isNaN(this.y2)},kz.prototype.addPoint=function(e,t){typeof e==`number`&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=e,this.x2=e),e<this.x1&&(this.x1=e),e>this.x2&&(this.x2=e)),typeof t==`number`&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),t<this.y1&&(this.y1=t),t>this.y2&&(this.y2=t))},kz.prototype.addX=function(e){this.addPoint(e,null)},kz.prototype.addY=function(e){this.addPoint(null,e)},kz.prototype.addBezier=function(e,t,n,r,i,a,o,s){var c=[e,t],l=[n,r],u=[i,a],d=[o,s];this.addPoint(e,t),this.addPoint(o,s);for(var f=0;f<=1;f++){var p=6*c[f]-12*l[f]+6*u[f],m=-3*c[f]+9*l[f]-9*u[f]+3*d[f],h=3*l[f]-3*c[f];if(m===0){if(p===0)continue;var g=-h/p;0<g&&g<1&&(f===0&&this.addX(Oz(c[f],l[f],u[f],d[f],g)),f===1&&this.addY(Oz(c[f],l[f],u[f],d[f],g)));continue}var _=p**2-4*h*m;if(!(_<0)){var v=(-p+Math.sqrt(_))/(2*m);0<v&&v<1&&(f===0&&this.addX(Oz(c[f],l[f],u[f],d[f],v)),f===1&&this.addY(Oz(c[f],l[f],u[f],d[f],v)));var y=(-p-Math.sqrt(_))/(2*m);0<y&&y<1&&(f===0&&this.addX(Oz(c[f],l[f],u[f],d[f],y)),f===1&&this.addY(Oz(c[f],l[f],u[f],d[f],y)))}}},kz.prototype.addQuad=function(e,t,n,r,i,a){var o=e+2/3*(n-e),s=t+2/3*(r-t),c=o+1/3*(i-e),l=s+1/3*(a-t);this.addBezier(e,t,o,s,c,l,i,a)};function Az(){this.commands=[],this.fill=`black`,this.stroke=null,this.strokeWidth=1}Az.prototype.moveTo=function(e,t){this.commands.push({type:`M`,x:e,y:t})},Az.prototype.lineTo=function(e,t){this.commands.push({type:`L`,x:e,y:t})},Az.prototype.curveTo=Az.prototype.bezierCurveTo=function(e,t,n,r,i,a){this.commands.push({type:`C`,x1:e,y1:t,x2:n,y2:r,x:i,y:a})},Az.prototype.quadTo=Az.prototype.quadraticCurveTo=function(e,t,n,r){this.commands.push({type:`Q`,x1:e,y1:t,x:n,y:r})},Az.prototype.close=Az.prototype.closePath=function(){this.commands.push({type:`Z`})},Az.prototype.extend=function(e){if(e.commands)e=e.commands;else if(e instanceof kz){var t=e;this.moveTo(t.x1,t.y1),this.lineTo(t.x2,t.y1),this.lineTo(t.x2,t.y2),this.lineTo(t.x1,t.y2),this.close();return}Array.prototype.push.apply(this.commands,e)},Az.prototype.getBoundingBox=function(){for(var e=new kz,t=0,n=0,r=0,i=0,a=0;a<this.commands.length;a++){var o=this.commands[a];switch(o.type){case`M`:e.addPoint(o.x,o.y),t=r=o.x,n=i=o.y;break;case`L`:e.addPoint(o.x,o.y),r=o.x,i=o.y;break;case`Q`:e.addQuad(r,i,o.x1,o.y1,o.x,o.y),r=o.x,i=o.y;break;case`C`:e.addBezier(r,i,o.x1,o.y1,o.x2,o.y2,o.x,o.y),r=o.x,i=o.y;break;case`Z`:r=t,i=n;break;default:throw Error(`Unexpected path command `+o.type)}}return e.isEmpty()&&e.addPoint(0,0),e},Az.prototype.draw=function(e){e.beginPath();for(var t=0;t<this.commands.length;t+=1){var n=this.commands[t];n.type===`M`?e.moveTo(n.x,n.y):n.type===`L`?e.lineTo(n.x,n.y):n.type===`C`?e.bezierCurveTo(n.x1,n.y1,n.x2,n.y2,n.x,n.y):n.type===`Q`?e.quadraticCurveTo(n.x1,n.y1,n.x,n.y):n.type===`Z`&&e.closePath()}this.fill&&(e.fillStyle=this.fill,e.fill()),this.stroke&&(e.strokeStyle=this.stroke,e.lineWidth=this.strokeWidth,e.stroke())},Az.prototype.toPathData=function(e){e=e===void 0?2:e;function t(t){return Math.round(t)===t?``+Math.round(t):t.toFixed(e)}function n(){for(var e=arguments,n=``,r=0;r<arguments.length;r+=1){var i=e[r];i>=0&&r>0&&(n+=` `),n+=t(i)}return n}for(var r=``,i=0;i<this.commands.length;i+=1){var a=this.commands[i];a.type===`M`?r+=`M`+n(a.x,a.y):a.type===`L`?r+=`L`+n(a.x,a.y):a.type===`C`?r+=`C`+n(a.x1,a.y1,a.x2,a.y2,a.x,a.y):a.type===`Q`?r+=`Q`+n(a.x1,a.y1,a.x,a.y):a.type===`Z`&&(r+=`Z`)}return r},Az.prototype.toSVG=function(e){var t=`<path d="`;return t+=this.toPathData(e),t+=`"`,this.fill&&this.fill!==`black`&&(this.fill===null?t+=` fill="none"`:t+=` fill="`+this.fill+`"`),this.stroke&&(t+=` stroke="`+this.stroke+`" stroke-width="`+this.strokeWidth+`"`),t+=`/>`,t},Az.prototype.toDOMElement=function(e){var t=this.toPathData(e),n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);return n.setAttribute(`d`,t),n};function jz(e){throw Error(e)}function Mz(e,t){e||jz(t)}var K={fail:jz,argument:Mz,assert:Mz},Nz=32768,Pz=2147483648,Fz={},q={},J={};function Iz(e){return function(){return e}}q.BYTE=function(e){return K.argument(e>=0&&e<=255,`Byte value should be between 0 and 255.`),[e]},J.BYTE=Iz(1),q.CHAR=function(e){return[e.charCodeAt(0)]},J.CHAR=Iz(1),q.CHARARRAY=function(e){e===void 0&&(e=``,console.warn(`Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name.`));for(var t=[],n=0;n<e.length;n+=1)t[n]=e.charCodeAt(n);return t},J.CHARARRAY=function(e){return e===void 0?0:e.length},q.USHORT=function(e){return[e>>8&255,e&255]},J.USHORT=Iz(2),q.SHORT=function(e){return e>=Nz&&(e=-(2*Nz-e)),[e>>8&255,e&255]},J.SHORT=Iz(2),q.UINT24=function(e){return[e>>16&255,e>>8&255,e&255]},J.UINT24=Iz(3),q.ULONG=function(e){return[e>>24&255,e>>16&255,e>>8&255,e&255]},J.ULONG=Iz(4),q.LONG=function(e){return e>=Pz&&(e=-(2*Pz-e)),[e>>24&255,e>>16&255,e>>8&255,e&255]},J.LONG=Iz(4),q.FIXED=q.ULONG,J.FIXED=J.ULONG,q.FWORD=q.SHORT,J.FWORD=J.SHORT,q.UFWORD=q.USHORT,J.UFWORD=J.USHORT,q.LONGDATETIME=function(e){return[0,0,0,0,e>>24&255,e>>16&255,e>>8&255,e&255]},J.LONGDATETIME=Iz(8),q.TAG=function(e){return K.argument(e.length===4,`Tag should be exactly 4 ASCII characters.`),[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]},J.TAG=Iz(4),q.Card8=q.BYTE,J.Card8=J.BYTE,q.Card16=q.USHORT,J.Card16=J.USHORT,q.OffSize=q.BYTE,J.OffSize=J.BYTE,q.SID=q.USHORT,J.SID=J.USHORT,q.NUMBER=function(e){return e>=-107&&e<=107?[e+139]:e>=108&&e<=1131?(e-=108,[(e>>8)+247,e&255]):e>=-1131&&e<=-108?(e=-e-108,[(e>>8)+251,e&255]):e>=-32768&&e<=32767?q.NUMBER16(e):q.NUMBER32(e)},J.NUMBER=function(e){return q.NUMBER(e).length},q.NUMBER16=function(e){return[28,e>>8&255,e&255]},J.NUMBER16=Iz(3),q.NUMBER32=function(e){return[29,e>>24&255,e>>16&255,e>>8&255,e&255]},J.NUMBER32=Iz(5),q.REAL=function(e){var t=e.toString(),n=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t);if(n){var r=parseFloat(`1e`+((n[2]?+n[2]:0)+n[1].length));t=(Math.round(e*r)/r).toString()}for(var i=``,a=0,o=t.length;a<o;a+=1){var s=t[a];s===`e`?i+=t[++a]===`-`?`c`:`b`:s===`.`?i+=`a`:s===`-`?i+=`e`:i+=s}i+=i.length&1?`f`:`ff`;for(var c=[30],l=0,u=i.length;l<u;l+=2)c.push(parseInt(i.substr(l,2),16));return c},J.REAL=function(e){return q.REAL(e).length},q.NAME=q.CHARARRAY,J.NAME=J.CHARARRAY,q.STRING=q.CHARARRAY,J.STRING=J.CHARARRAY,Fz.UTF8=function(e,t,n){for(var r=[],i=n,a=0;a<i;a++,t+=1)r[a]=e.getUint8(t);return String.fromCharCode.apply(null,r)},Fz.UTF16=function(e,t,n){for(var r=[],i=n/2,a=0;a<i;a++,t+=2)r[a]=e.getUint16(t);return String.fromCharCode.apply(null,r)},q.UTF16=function(e){for(var t=[],n=0;n<e.length;n+=1){var r=e.charCodeAt(n);t[t.length]=r>>8&255,t[t.length]=r&255}return t},J.UTF16=function(e){return e.length*2};var Lz={"x-mac-croatian":`ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ\xA0ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ`,"x-mac-cyrillic":`АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»…\xA0ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю`,"x-mac-gaelic":`ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»…\xA0ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ`,"x-mac-greek":`Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»…\xA0ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­`,"x-mac-icelandic":`ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»…\xA0ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ`,"x-mac-inuit":`ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ…\xA0ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł`,"x-mac-ce":`ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»…\xA0ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ`,macintosh:`ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»…\xA0ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ`,"x-mac-romanian":`ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»…\xA0ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ`,"x-mac-turkish":`ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»…\xA0ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ`};Fz.MACSTRING=function(e,t,n,r){var i=Lz[r];if(i!==void 0){for(var a=``,o=0;o<n;o++){var s=e.getUint8(t+o);s<=127?a+=String.fromCharCode(s):a+=i[s&127]}return a}};var Rz=typeof WeakMap==`function`&&new WeakMap,zz,Bz=function(e){if(!zz)for(var t in zz={},Lz)zz[t]=new String(t);var n=zz[e];if(n!==void 0){if(Rz){var r=Rz.get(n);if(r!==void 0)return r}var i=Lz[e];if(i!==void 0){for(var a={},o=0;o<i.length;o++)a[i.charCodeAt(o)]=o+128;return Rz&&Rz.set(n,a),a}}};q.MACSTRING=function(e,t){var n=Bz(t);if(n!==void 0){for(var r=[],i=0;i<e.length;i++){var a=e.charCodeAt(i);if(a>=128&&(a=n[a],a===void 0))return;r[i]=a}return r}},J.MACSTRING=function(e,t){var n=q.MACSTRING(e,t);return n===void 0?0:n.length};function Vz(e){return e>=-128&&e<=127}function Hz(e,t,n){for(var r=0,i=e.length;t<i&&r<64&&e[t]===0;)++t,++r;return n.push(128|r-1),t}function Uz(e,t,n){for(var r=0,i=e.length,a=t;a<i&&r<64;){var o=e[a];if(!Vz(o)||o===0&&a+1<i&&e[a+1]===0)break;++a,++r}n.push(r-1);for(var s=t;s<a;++s)n.push(e[s]+256&255);return a}function Wz(e,t,n){for(var r=0,i=e.length,a=t;a<i&&r<64;){var o=e[a];if(o===0||Vz(o)&&a+1<i&&Vz(e[a+1]))break;++a,++r}n.push(64|r-1);for(var s=t;s<a;++s){var c=e[s];n.push(c+65536>>8&255,c+256&255)}return a}q.VARDELTAS=function(e){for(var t=0,n=[];t<e.length;){var r=e[t];t=r===0?Hz(e,t,n):r>=-128&&r<=127?Uz(e,t,n):Wz(e,t,n)}return n},q.INDEX=function(e){for(var t=1,n=[t],r=[],i=0;i<e.length;i+=1){var a=q.OBJECT(e[i]);Array.prototype.push.apply(r,a),t+=a.length,n.push(t)}if(r.length===0)return[0,0];for(var o=[],s=1+Math.floor(Math.log(t)/Math.log(2))/8|0,c=[void 0,q.BYTE,q.USHORT,q.UINT24,q.ULONG][s],l=0;l<n.length;l+=1){var u=c(n[l]);Array.prototype.push.apply(o,u)}return Array.prototype.concat(q.Card16(e.length),q.OffSize(s),o,r)},J.INDEX=function(e){return q.INDEX(e).length},q.DICT=function(e){for(var t=[],n=Object.keys(e),r=n.length,i=0;i<r;i+=1){var a=parseInt(n[i],0),o=e[a];t=t.concat(q.OPERAND(o.value,o.type)),t=t.concat(q.OPERATOR(a))}return t},J.DICT=function(e){return q.DICT(e).length},q.OPERATOR=function(e){return e<1200?[e]:[12,e-1200]},q.OPERAND=function(e,t){var n=[];if(Array.isArray(t))for(var r=0;r<t.length;r+=1)K.argument(e.length===t.length,`Not enough arguments given for type`+t),n=n.concat(q.OPERAND(e[r],t[r]));else if(t===`SID`)n=n.concat(q.NUMBER(e));else if(t===`offset`)n=n.concat(q.NUMBER32(e));else if(t===`number`)n=n.concat(q.NUMBER(e));else if(t===`real`)n=n.concat(q.REAL(e));else throw Error(`Unknown operand type `+t);return n},q.OP=q.BYTE,J.OP=J.BYTE;var Gz=typeof WeakMap==`function`&&new WeakMap;q.CHARSTRING=function(e){if(Gz){var t=Gz.get(e);if(t!==void 0)return t}for(var n=[],r=e.length,i=0;i<r;i+=1){var a=e[i];n=n.concat(q[a.type](a.value))}return Gz&&Gz.set(e,n),n},J.CHARSTRING=function(e){return q.CHARSTRING(e).length},q.OBJECT=function(e){var t=q[e.type];return K.argument(t!==void 0,`No encoding function for type `+e.type),t(e.value)},J.OBJECT=function(e){var t=J[e.type];return K.argument(t!==void 0,`No sizeOf function for type `+e.type),t(e.value)},q.TABLE=function(e){for(var t=[],n=e.fields.length,r=[],i=[],a=0;a<n;a+=1){var o=e.fields[a],s=q[o.type];K.argument(s!==void 0,`No encoding function for field type `+o.type+` (`+o.name+`)`);var c=e[o.name];c===void 0&&(c=o.value);var l=s(c);o.type===`TABLE`?(i.push(t.length),t=t.concat([0,0]),r.push(l)):t=t.concat(l)}for(var u=0;u<r.length;u+=1){var d=i[u],f=t.length;K.argument(f<65536,`Table `+e.tableName+` too big.`),t[d]=f>>8,t[d+1]=f&255,t=t.concat(r[u])}return t},J.TABLE=function(e){for(var t=0,n=e.fields.length,r=0;r<n;r+=1){var i=e.fields[r],a=J[i.type];K.argument(a!==void 0,`No sizeOf function for field type `+i.type+` (`+i.name+`)`);var o=e[i.name];o===void 0&&(o=i.value),t+=a(o),i.type===`TABLE`&&(t+=2)}return t},q.RECORD=q.TABLE,J.RECORD=J.TABLE,q.LITERAL=function(e){return e},J.LITERAL=function(e){return e.length};function Kz(e,t,n){if(t.length&&(t[0].name!==`coverageFormat`||t[0].value===1))for(var r=0;r<t.length;r+=1){var i=t[r];this[i.name]=i.value}if(this.tableName=e,this.fields=t,n)for(var a=Object.keys(n),o=0;o<a.length;o+=1){var s=a[o],c=n[s];this[s]!==void 0&&(this[s]=c)}}Kz.prototype.encode=function(){return q.TABLE(this)},Kz.prototype.sizeOf=function(){return J.TABLE(this)};function qz(e,t,n){n===void 0&&(n=t.length);var r=Array(t.length+1);r[0]={name:e+`Count`,type:`USHORT`,value:n};for(var i=0;i<t.length;i++)r[i+1]={name:e+i,type:`USHORT`,value:t[i]};return r}function Jz(e,t,n){var r=t.length,i=Array(r+1);i[0]={name:e+`Count`,type:`USHORT`,value:r};for(var a=0;a<r;a++)i[a+1]={name:e+a,type:`TABLE`,value:n(t[a],a)};return i}function Yz(e,t,n){var r=t.length,i=[];i[0]={name:e+`Count`,type:`USHORT`,value:r};for(var a=0;a<r;a++)i=i.concat(n(t[a],a));return i}function Xz(e){e.format===1?Kz.call(this,`coverageTable`,[{name:`coverageFormat`,type:`USHORT`,value:1}].concat(qz(`glyph`,e.glyphs))):e.format===2?Kz.call(this,`coverageTable`,[{name:`coverageFormat`,type:`USHORT`,value:2}].concat(Yz(`rangeRecord`,e.ranges,function(e){return[{name:`startGlyphID`,type:`USHORT`,value:e.start},{name:`endGlyphID`,type:`USHORT`,value:e.end},{name:`startCoverageIndex`,type:`USHORT`,value:e.index}]}))):K.assert(!1,`Coverage format must be 1 or 2.`)}Xz.prototype=Object.create(Kz.prototype),Xz.prototype.constructor=Xz;function Zz(e){Kz.call(this,`scriptListTable`,Yz(`scriptRecord`,e,function(e,t){var n=e.script,r=n.defaultLangSys;return K.assert(!!r,`Unable to write GSUB: script `+e.tag+` has no default language system.`),[{name:`scriptTag`+t,type:`TAG`,value:e.tag},{name:`script`+t,type:`TABLE`,value:new Kz(`scriptTable`,[{name:`defaultLangSys`,type:`TABLE`,value:new Kz(`defaultLangSys`,[{name:`lookupOrder`,type:`USHORT`,value:0},{name:`reqFeatureIndex`,type:`USHORT`,value:r.reqFeatureIndex}].concat(qz(`featureIndex`,r.featureIndexes)))}].concat(Yz(`langSys`,n.langSysRecords,function(e,t){var n=e.langSys;return[{name:`langSysTag`+t,type:`TAG`,value:e.tag},{name:`langSys`+t,type:`TABLE`,value:new Kz(`langSys`,[{name:`lookupOrder`,type:`USHORT`,value:0},{name:`reqFeatureIndex`,type:`USHORT`,value:n.reqFeatureIndex}].concat(qz(`featureIndex`,n.featureIndexes)))}]})))}]}))}Zz.prototype=Object.create(Kz.prototype),Zz.prototype.constructor=Zz;function Qz(e){Kz.call(this,`featureListTable`,Yz(`featureRecord`,e,function(e,t){var n=e.feature;return[{name:`featureTag`+t,type:`TAG`,value:e.tag},{name:`feature`+t,type:`TABLE`,value:new Kz(`featureTable`,[{name:`featureParams`,type:`USHORT`,value:n.featureParams}].concat(qz(`lookupListIndex`,n.lookupListIndexes)))}]}))}Qz.prototype=Object.create(Kz.prototype),Qz.prototype.constructor=Qz;function $z(e,t){Kz.call(this,`lookupListTable`,Jz(`lookup`,e,function(e){var n=t[e.lookupType];return K.assert(!!n,`Unable to write GSUB lookup type `+e.lookupType+` tables.`),new Kz(`lookupTable`,[{name:`lookupType`,type:`USHORT`,value:e.lookupType},{name:`lookupFlag`,type:`USHORT`,value:e.lookupFlag}].concat(Jz(`subtable`,e.subtables,n)))}))}$z.prototype=Object.create(Kz.prototype),$z.prototype.constructor=$z;var Y={Table:Kz,Record:Kz,Coverage:Xz,ScriptList:Zz,FeatureList:Qz,LookupList:$z,ushortList:qz,tableList:Jz,recordList:Yz};function eB(e,t){return e.getUint8(t)}function tB(e,t){return e.getUint16(t,!1)}function nB(e,t){return e.getInt16(t,!1)}function rB(e,t){return e.getUint32(t,!1)}function iB(e,t){return e.getInt16(t,!1)+e.getUint16(t+2,!1)/65535}function aB(e,t){for(var n=``,r=t;r<t+4;r+=1)n+=String.fromCharCode(e.getInt8(r));return n}function oB(e,t,n){for(var r=0,i=0;i<n;i+=1)r<<=8,r+=e.getUint8(t+i);return r}function sB(e,t,n){for(var r=[],i=t;i<n;i+=1)r.push(e.getUint8(i));return r}function cB(e){for(var t=``,n=0;n<e.length;n+=1)t+=String.fromCharCode(e[n]);return t}var lB={byte:1,uShort:2,short:2,uLong:4,fixed:4,longDateTime:8,tag:4};function X(e,t){this.data=e,this.offset=t,this.relativeOffset=0}X.prototype.parseByte=function(){var e=this.data.getUint8(this.offset+this.relativeOffset);return this.relativeOffset+=1,e},X.prototype.parseChar=function(){var e=this.data.getInt8(this.offset+this.relativeOffset);return this.relativeOffset+=1,e},X.prototype.parseCard8=X.prototype.parseByte,X.prototype.parseUShort=function(){var e=this.data.getUint16(this.offset+this.relativeOffset);return this.relativeOffset+=2,e},X.prototype.parseCard16=X.prototype.parseUShort,X.prototype.parseSID=X.prototype.parseUShort,X.prototype.parseOffset16=X.prototype.parseUShort,X.prototype.parseShort=function(){var e=this.data.getInt16(this.offset+this.relativeOffset);return this.relativeOffset+=2,e},X.prototype.parseF2Dot14=function(){var e=this.data.getInt16(this.offset+this.relativeOffset)/16384;return this.relativeOffset+=2,e},X.prototype.parseULong=function(){var e=rB(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,e},X.prototype.parseOffset32=X.prototype.parseULong,X.prototype.parseFixed=function(){var e=iB(this.data,this.offset+this.relativeOffset);return this.relativeOffset+=4,e},X.prototype.parseString=function(e){var t=this.data,n=this.offset+this.relativeOffset,r=``;this.relativeOffset+=e;for(var i=0;i<e;i++)r+=String.fromCharCode(t.getUint8(n+i));return r},X.prototype.parseTag=function(){return this.parseString(4)},X.prototype.parseLongDateTime=function(){var e=rB(this.data,this.offset+this.relativeOffset+4);return e-=2082844800,this.relativeOffset+=8,e},X.prototype.parseVersion=function(e){var t=tB(this.data,this.offset+this.relativeOffset),n=tB(this.data,this.offset+this.relativeOffset+2);return this.relativeOffset+=4,e===void 0&&(e=4096),t+n/e/10},X.prototype.skip=function(e,t){t===void 0&&(t=1),this.relativeOffset+=lB[e]*t},X.prototype.parseULongList=function(e){e===void 0&&(e=this.parseULong());for(var t=Array(e),n=this.data,r=this.offset+this.relativeOffset,i=0;i<e;i++)t[i]=n.getUint32(r),r+=4;return this.relativeOffset+=e*4,t},X.prototype.parseOffset16List=X.prototype.parseUShortList=function(e){e===void 0&&(e=this.parseUShort());for(var t=Array(e),n=this.data,r=this.offset+this.relativeOffset,i=0;i<e;i++)t[i]=n.getUint16(r),r+=2;return this.relativeOffset+=e*2,t},X.prototype.parseShortList=function(e){for(var t=Array(e),n=this.data,r=this.offset+this.relativeOffset,i=0;i<e;i++)t[i]=n.getInt16(r),r+=2;return this.relativeOffset+=e*2,t},X.prototype.parseByteList=function(e){for(var t=Array(e),n=this.data,r=this.offset+this.relativeOffset,i=0;i<e;i++)t[i]=n.getUint8(r++);return this.relativeOffset+=e,t},X.prototype.parseList=function(e,t){t||(t=e,e=this.parseUShort());for(var n=Array(e),r=0;r<e;r++)n[r]=t.call(this);return n},X.prototype.parseList32=function(e,t){t||(t=e,e=this.parseULong());for(var n=Array(e),r=0;r<e;r++)n[r]=t.call(this);return n},X.prototype.parseRecordList=function(e,t){t||(t=e,e=this.parseUShort());for(var n=Array(e),r=Object.keys(t),i=0;i<e;i++){for(var a={},o=0;o<r.length;o++){var s=r[o];a[s]=t[s].call(this)}n[i]=a}return n},X.prototype.parseRecordList32=function(e,t){t||(t=e,e=this.parseULong());for(var n=Array(e),r=Object.keys(t),i=0;i<e;i++){for(var a={},o=0;o<r.length;o++){var s=r[o];a[s]=t[s].call(this)}n[i]=a}return n},X.prototype.parseStruct=function(e){if(typeof e==`function`)return e.call(this);for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[r];n[i]=e[i].call(this)}return n},X.prototype.parseValueRecord=function(e){if(e===void 0&&(e=this.parseUShort()),e!==0){var t={};return e&1&&(t.xPlacement=this.parseShort()),e&2&&(t.yPlacement=this.parseShort()),e&4&&(t.xAdvance=this.parseShort()),e&8&&(t.yAdvance=this.parseShort()),e&16&&(t.xPlaDevice=void 0,this.parseShort()),e&32&&(t.yPlaDevice=void 0,this.parseShort()),e&64&&(t.xAdvDevice=void 0,this.parseShort()),e&128&&(t.yAdvDevice=void 0,this.parseShort()),t}},X.prototype.parseValueRecordList=function(){for(var e=this.parseUShort(),t=this.parseUShort(),n=Array(t),r=0;r<t;r++)n[r]=this.parseValueRecord(e);return n},X.prototype.parsePointer=function(e){var t=this.parseOffset16();if(t>0)return new X(this.data,this.offset+t).parseStruct(e)},X.prototype.parsePointer32=function(e){var t=this.parseOffset32();if(t>0)return new X(this.data,this.offset+t).parseStruct(e)},X.prototype.parseListOfLists=function(e){for(var t=this.parseOffset16List(),n=t.length,r=this.relativeOffset,i=Array(n),a=0;a<n;a++){var o=t[a];if(o===0){i[a]=void 0;continue}if(this.relativeOffset=o,e){for(var s=this.parseOffset16List(),c=Array(s.length),l=0;l<s.length;l++)this.relativeOffset=o+s[l],c[l]=e.call(this);i[a]=c}else i[a]=this.parseUShortList()}return this.relativeOffset=r,i},X.prototype.parseCoverage=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort(),n=this.parseUShort();if(t===1)return{format:1,glyphs:this.parseUShortList(n)};if(t===2){for(var r=Array(n),i=0;i<n;i++)r[i]={start:this.parseUShort(),end:this.parseUShort(),index:this.parseUShort()};return{format:2,ranges:r}}throw Error(`0x`+e.toString(16)+`: Coverage format must be 1 or 2.`)},X.prototype.parseClassDef=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{format:1,startGlyph:this.parseUShort(),classes:this.parseUShortList()};if(t===2)return{format:2,ranges:this.parseRecordList({start:X.uShort,end:X.uShort,classId:X.uShort})};throw Error(`0x`+e.toString(16)+`: ClassDef format must be 1 or 2.`)},X.list=function(e,t){return function(){return this.parseList(e,t)}},X.list32=function(e,t){return function(){return this.parseList32(e,t)}},X.recordList=function(e,t){return function(){return this.parseRecordList(e,t)}},X.recordList32=function(e,t){return function(){return this.parseRecordList32(e,t)}},X.pointer=function(e){return function(){return this.parsePointer(e)}},X.pointer32=function(e){return function(){return this.parsePointer32(e)}},X.tag=X.prototype.parseTag,X.byte=X.prototype.parseByte,X.uShort=X.offset16=X.prototype.parseUShort,X.uShortList=X.prototype.parseUShortList,X.uLong=X.offset32=X.prototype.parseULong,X.uLongList=X.prototype.parseULongList,X.struct=X.prototype.parseStruct,X.coverage=X.prototype.parseCoverage,X.classDef=X.prototype.parseClassDef;var uB={reserved:X.uShort,reqFeatureIndex:X.uShort,featureIndexes:X.uShortList};X.prototype.parseScriptList=function(){return this.parsePointer(X.recordList({tag:X.tag,script:X.pointer({defaultLangSys:X.pointer(uB),langSysRecords:X.recordList({tag:X.tag,langSys:X.pointer(uB)})})}))||[]},X.prototype.parseFeatureList=function(){return this.parsePointer(X.recordList({tag:X.tag,feature:X.pointer({featureParams:X.offset16,lookupListIndexes:X.uShortList})}))||[]},X.prototype.parseLookupList=function(e){return this.parsePointer(X.list(X.pointer(function(){var t=this.parseUShort();K.argument(1<=t&&t<=9,`GPOS/GSUB lookup type `+t+` unknown.`);var n=this.parseUShort(),r=n&16;return{lookupType:t,lookupFlag:n,subtables:this.parseList(X.pointer(e[t])),markFilteringSet:r?this.parseUShort():void 0}})))||[]},X.prototype.parseFeatureVariationsList=function(){return this.parsePointer32(function(){var e=this.parseUShort(),t=this.parseUShort();return K.argument(e===1&&t<1,`GPOS/GSUB feature variations table unknown.`),this.parseRecordList32({conditionSetOffset:X.offset32,featureTableSubstitutionOffset:X.offset32})})||[]};var Z={getByte:eB,getCard8:eB,getUShort:tB,getCard16:tB,getShort:nB,getULong:rB,getFixed:iB,getTag:aB,getOffset:oB,getBytes:sB,bytesToString:cB,Parser:X};function dB(e,t){t.parseUShort(),e.length=t.parseULong(),e.language=t.parseULong();var n;e.groupCount=n=t.parseULong(),e.glyphIndexMap={};for(var r=0;r<n;r+=1)for(var i=t.parseULong(),a=t.parseULong(),o=t.parseULong(),s=i;s<=a;s+=1)e.glyphIndexMap[s]=o,o++}function fB(e,t,n,r,i){e.length=t.parseUShort(),e.language=t.parseUShort();var a;e.segCount=a=t.parseUShort()>>1,t.skip(`uShort`,3),e.glyphIndexMap={};for(var o=new Z.Parser(n,r+i+14),s=new Z.Parser(n,r+i+16+a*2),c=new Z.Parser(n,r+i+16+a*4),l=new Z.Parser(n,r+i+16+a*6),u=r+i+16+a*8,d=0;d<a-1;d+=1)for(var f=void 0,p=o.parseUShort(),m=s.parseUShort(),h=c.parseShort(),g=l.parseUShort(),_=m;_<=p;_+=1)g===0?f=_+h&65535:(u=l.offset+l.relativeOffset-2,u+=g,u+=(_-m)*2,f=Z.getUShort(n,u),f!==0&&(f=f+h&65535)),e.glyphIndexMap[_]=f}function pB(e,t){var n={};n.version=Z.getUShort(e,t),K.argument(n.version===0,`cmap table version should be 0.`),n.numTables=Z.getUShort(e,t+2);for(var r=-1,i=n.numTables-1;i>=0;--i){var a=Z.getUShort(e,t+4+i*8),o=Z.getUShort(e,t+4+i*8+2);if(a===3&&(o===0||o===1||o===10)||a===0&&(o===0||o===1||o===2||o===3||o===4)){r=Z.getULong(e,t+4+i*8+4);break}}if(r===-1)throw Error(`No valid cmap sub-tables found.`);var s=new Z.Parser(e,t+r);if(n.format=s.parseUShort(),n.format===12)dB(n,s);else if(n.format===4)fB(n,s,e,t,r);else throw Error(`Only format 4 and 12 cmap tables are supported (found format `+n.format+`).`);return n}function mB(e,t,n){e.segments.push({end:t,start:t,delta:-(t-n),offset:0,glyphIndex:n})}function hB(e){e.segments.push({end:65535,start:65535,delta:1,offset:0})}function gB(e){var t=!0,n;for(n=e.length-1;n>0;--n)if(e.get(n).unicode>65535){console.log(`Adding CMAP format 12 (needed!)`),t=!1;break}var r=[{name:`version`,type:`USHORT`,value:0},{name:`numTables`,type:`USHORT`,value:t?1:2},{name:`platformID`,type:`USHORT`,value:3},{name:`encodingID`,type:`USHORT`,value:1},{name:`offset`,type:`ULONG`,value:t?12:20}];t||(r=r.concat([{name:`cmap12PlatformID`,type:`USHORT`,value:3},{name:`cmap12EncodingID`,type:`USHORT`,value:10},{name:`cmap12Offset`,type:`ULONG`,value:0}])),r=r.concat([{name:`format`,type:`USHORT`,value:4},{name:`cmap4Length`,type:`USHORT`,value:0},{name:`language`,type:`USHORT`,value:0},{name:`segCountX2`,type:`USHORT`,value:0},{name:`searchRange`,type:`USHORT`,value:0},{name:`entrySelector`,type:`USHORT`,value:0},{name:`rangeShift`,type:`USHORT`,value:0}]);var i=new Y.Table(`cmap`,r);for(i.segments=[],n=0;n<e.length;n+=1){for(var a=e.get(n),o=0;o<a.unicodes.length;o+=1)mB(i,a.unicodes[o],n);i.segments=i.segments.sort(function(e,t){return e.start-t.start})}hB(i);var s=i.segments.length,c=0,l=[],u=[],d=[],f=[],p=[],m=[];for(n=0;n<s;n+=1){var h=i.segments[n];h.end<=65535&&h.start<=65535?(l=l.concat({name:`end_`+n,type:`USHORT`,value:h.end}),u=u.concat({name:`start_`+n,type:`USHORT`,value:h.start}),d=d.concat({name:`idDelta_`+n,type:`SHORT`,value:h.delta}),f=f.concat({name:`idRangeOffset_`+n,type:`USHORT`,value:h.offset}),h.glyphId!==void 0&&(p=p.concat({name:`glyph_`+n,type:`USHORT`,value:h.glyphId}))):c+=1,!t&&h.glyphIndex!==void 0&&(m=m.concat({name:`cmap12Start_`+n,type:`ULONG`,value:h.start}),m=m.concat({name:`cmap12End_`+n,type:`ULONG`,value:h.end}),m=m.concat({name:`cmap12Glyph_`+n,type:`ULONG`,value:h.glyphIndex}))}if(i.segCountX2=(s-c)*2,i.searchRange=2**Math.floor(Math.log(s-c)/Math.log(2))*2,i.entrySelector=Math.log(i.searchRange/2)/Math.log(2),i.rangeShift=i.segCountX2-i.searchRange,i.fields=i.fields.concat(l),i.fields.push({name:`reservedPad`,type:`USHORT`,value:0}),i.fields=i.fields.concat(u),i.fields=i.fields.concat(d),i.fields=i.fields.concat(f),i.fields=i.fields.concat(p),i.cmap4Length=14+l.length*2+2+u.length*2+d.length*2+f.length*2+p.length*2,!t){var g=16+m.length*4;i.cmap12Offset=20+i.cmap4Length,i.fields=i.fields.concat([{name:`cmap12Format`,type:`USHORT`,value:12},{name:`cmap12Reserved`,type:`USHORT`,value:0},{name:`cmap12Length`,type:`ULONG`,value:g},{name:`cmap12Language`,type:`ULONG`,value:0},{name:`cmap12nGroups`,type:`ULONG`,value:m.length/3}]),i.fields=i.fields.concat(m)}return i}var _B={parse:pB,make:gB},vB=`.notdef,space,exclam,quotedbl,numbersign,dollar,percent,ampersand,quoteright,parenleft,parenright,asterisk,plus,comma,hyphen,period,slash,zero,one,two,three,four,five,six,seven,eight,nine,colon,semicolon,less,equal,greater,question,at,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,bracketleft,backslash,bracketright,asciicircum,underscore,quoteleft,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,braceleft,bar,braceright,asciitilde,exclamdown,cent,sterling,fraction,yen,florin,section,currency,quotesingle,quotedblleft,guillemotleft,guilsinglleft,guilsinglright,fi,fl,endash,dagger,daggerdbl,periodcentered,paragraph,bullet,quotesinglbase,quotedblbase,quotedblright,guillemotright,ellipsis,perthousand,questiondown,grave,acute,circumflex,tilde,macron,breve,dotaccent,dieresis,ring,cedilla,hungarumlaut,ogonek,caron,emdash,AE,ordfeminine,Lslash,Oslash,OE,ordmasculine,ae,dotlessi,lslash,oslash,oe,germandbls,onesuperior,logicalnot,mu,trademark,Eth,onehalf,plusminus,Thorn,onequarter,divide,brokenbar,degree,thorn,threequarters,twosuperior,registered,minus,eth,multiply,threesuperior,copyright,Aacute,Acircumflex,Adieresis,Agrave,Aring,Atilde,Ccedilla,Eacute,Ecircumflex,Edieresis,Egrave,Iacute,Icircumflex,Idieresis,Igrave,Ntilde,Oacute,Ocircumflex,Odieresis,Ograve,Otilde,Scaron,Uacute,Ucircumflex,Udieresis,Ugrave,Yacute,Ydieresis,Zcaron,aacute,acircumflex,adieresis,agrave,aring,atilde,ccedilla,eacute,ecircumflex,edieresis,egrave,iacute,icircumflex,idieresis,igrave,ntilde,oacute,ocircumflex,odieresis,ograve,otilde,scaron,uacute,ucircumflex,udieresis,ugrave,yacute,ydieresis,zcaron,exclamsmall,Hungarumlautsmall,dollaroldstyle,dollarsuperior,ampersandsmall,Acutesmall,parenleftsuperior,parenrightsuperior,266 ff,onedotenleader,zerooldstyle,oneoldstyle,twooldstyle,threeoldstyle,fouroldstyle,fiveoldstyle,sixoldstyle,sevenoldstyle,eightoldstyle,nineoldstyle,commasuperior,threequartersemdash,periodsuperior,questionsmall,asuperior,bsuperior,centsuperior,dsuperior,esuperior,isuperior,lsuperior,msuperior,nsuperior,osuperior,rsuperior,ssuperior,tsuperior,ff,ffi,ffl,parenleftinferior,parenrightinferior,Circumflexsmall,hyphensuperior,Gravesmall,Asmall,Bsmall,Csmall,Dsmall,Esmall,Fsmall,Gsmall,Hsmall,Ismall,Jsmall,Ksmall,Lsmall,Msmall,Nsmall,Osmall,Psmall,Qsmall,Rsmall,Ssmall,Tsmall,Usmall,Vsmall,Wsmall,Xsmall,Ysmall,Zsmall,colonmonetary,onefitted,rupiah,Tildesmall,exclamdownsmall,centoldstyle,Lslashsmall,Scaronsmall,Zcaronsmall,Dieresissmall,Brevesmall,Caronsmall,Dotaccentsmall,Macronsmall,figuredash,hypheninferior,Ogoneksmall,Ringsmall,Cedillasmall,questiondownsmall,oneeighth,threeeighths,fiveeighths,seveneighths,onethird,twothirds,zerosuperior,foursuperior,fivesuperior,sixsuperior,sevensuperior,eightsuperior,ninesuperior,zeroinferior,oneinferior,twoinferior,threeinferior,fourinferior,fiveinferior,sixinferior,seveninferior,eightinferior,nineinferior,centinferior,dollarinferior,periodinferior,commainferior,Agravesmall,Aacutesmall,Acircumflexsmall,Atildesmall,Adieresissmall,Aringsmall,AEsmall,Ccedillasmall,Egravesmall,Eacutesmall,Ecircumflexsmall,Edieresissmall,Igravesmall,Iacutesmall,Icircumflexsmall,Idieresissmall,Ethsmall,Ntildesmall,Ogravesmall,Oacutesmall,Ocircumflexsmall,Otildesmall,Odieresissmall,OEsmall,Oslashsmall,Ugravesmall,Uacutesmall,Ucircumflexsmall,Udieresissmall,Yacutesmall,Thornsmall,Ydieresissmall,001.000,001.001,001.002,001.003,Black,Bold,Book,Light,Medium,Regular,Roman,Semibold`.split(`,`),yB=`................................space.exclam.quotedbl.numbersign.dollar.percent.ampersand.quoteright.parenleft.parenright.asterisk.plus.comma.hyphen.period.slash.zero.one.two.three.four.five.six.seven.eight.nine.colon.semicolon.less.equal.greater.question.at.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.bracketleft.backslash.bracketright.asciicircum.underscore.quoteleft.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.braceleft.bar.braceright.asciitilde...................................exclamdown.cent.sterling.fraction.yen.florin.section.currency.quotesingle.quotedblleft.guillemotleft.guilsinglleft.guilsinglright.fi.fl..endash.dagger.daggerdbl.periodcentered..paragraph.bullet.quotesinglbase.quotedblbase.quotedblright.guillemotright.ellipsis.perthousand..questiondown..grave.acute.circumflex.tilde.macron.breve.dotaccent.dieresis..ring.cedilla..hungarumlaut.ogonek.caron.emdash.................AE..ordfeminine.....Lslash.Oslash.OE.ordmasculine......ae....dotlessi...lslash.oslash.oe.germandbls`.split(`.`),bB=`................................space.exclamsmall.Hungarumlautsmall..dollaroldstyle.dollarsuperior.ampersandsmall.Acutesmall.parenleftsuperior.parenrightsuperior.twodotenleader.onedotenleader.comma.hyphen.period.fraction.zerooldstyle.oneoldstyle.twooldstyle.threeoldstyle.fouroldstyle.fiveoldstyle.sixoldstyle.sevenoldstyle.eightoldstyle.nineoldstyle.colon.semicolon.commasuperior.threequartersemdash.periodsuperior.questionsmall..asuperior.bsuperior.centsuperior.dsuperior.esuperior...isuperior...lsuperior.msuperior.nsuperior.osuperior...rsuperior.ssuperior.tsuperior..ff.fi.fl.ffi.ffl.parenleftinferior..parenrightinferior.Circumflexsmall.hyphensuperior.Gravesmall.Asmall.Bsmall.Csmall.Dsmall.Esmall.Fsmall.Gsmall.Hsmall.Ismall.Jsmall.Ksmall.Lsmall.Msmall.Nsmall.Osmall.Psmall.Qsmall.Rsmall.Ssmall.Tsmall.Usmall.Vsmall.Wsmall.Xsmall.Ysmall.Zsmall.colonmonetary.onefitted.rupiah.Tildesmall...................................exclamdownsmall.centoldstyle.Lslashsmall...Scaronsmall.Zcaronsmall.Dieresissmall.Brevesmall.Caronsmall..Dotaccentsmall...Macronsmall...figuredash.hypheninferior...Ogoneksmall.Ringsmall.Cedillasmall....onequarter.onehalf.threequarters.questiondownsmall.oneeighth.threeeighths.fiveeighths.seveneighths.onethird.twothirds...zerosuperior.onesuperior.twosuperior.threesuperior.foursuperior.fivesuperior.sixsuperior.sevensuperior.eightsuperior.ninesuperior.zeroinferior.oneinferior.twoinferior.threeinferior.fourinferior.fiveinferior.sixinferior.seveninferior.eightinferior.nineinferior.centinferior.dollarinferior.periodinferior.commainferior.Agravesmall.Aacutesmall.Acircumflexsmall.Atildesmall.Adieresissmall.Aringsmall.AEsmall.Ccedillasmall.Egravesmall.Eacutesmall.Ecircumflexsmall.Edieresissmall.Igravesmall.Iacutesmall.Icircumflexsmall.Idieresissmall.Ethsmall.Ntildesmall.Ogravesmall.Oacutesmall.Ocircumflexsmall.Otildesmall.Odieresissmall.OEsmall.Oslashsmall.Ugravesmall.Uacutesmall.Ucircumflexsmall.Udieresissmall.Yacutesmall.Thornsmall.Ydieresissmall`.split(`.`),xB=`.notdef,.null,nonmarkingreturn,space,exclam,quotedbl,numbersign,dollar,percent,ampersand,quotesingle,parenleft,parenright,asterisk,plus,comma,hyphen,period,slash,zero,one,two,three,four,five,six,seven,eight,nine,colon,semicolon,less,equal,greater,question,at,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,bracketleft,backslash,bracketright,asciicircum,underscore,grave,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,braceleft,bar,braceright,asciitilde,Adieresis,Aring,Ccedilla,Eacute,Ntilde,Odieresis,Udieresis,aacute,agrave,acircumflex,adieresis,atilde,aring,ccedilla,eacute,egrave,ecircumflex,edieresis,iacute,igrave,icircumflex,idieresis,ntilde,oacute,ograve,ocircumflex,odieresis,otilde,uacute,ugrave,ucircumflex,udieresis,dagger,degree,cent,sterling,section,bullet,paragraph,germandbls,registered,copyright,trademark,acute,dieresis,notequal,AE,Oslash,infinity,plusminus,lessequal,greaterequal,yen,mu,partialdiff,summation,product,pi,integral,ordfeminine,ordmasculine,Omega,ae,oslash,questiondown,exclamdown,logicalnot,radical,florin,approxequal,Delta,guillemotleft,guillemotright,ellipsis,nonbreakingspace,Agrave,Atilde,Otilde,OE,oe,endash,emdash,quotedblleft,quotedblright,quoteleft,quoteright,divide,lozenge,ydieresis,Ydieresis,fraction,currency,guilsinglleft,guilsinglright,fi,fl,daggerdbl,periodcentered,quotesinglbase,quotedblbase,perthousand,Acircumflex,Ecircumflex,Aacute,Edieresis,Egrave,Iacute,Icircumflex,Idieresis,Igrave,Oacute,Ocircumflex,apple,Ograve,Uacute,Ucircumflex,Ugrave,dotlessi,circumflex,tilde,macron,breve,dotaccent,ring,cedilla,hungarumlaut,ogonek,caron,Lslash,lslash,Scaron,scaron,Zcaron,zcaron,brokenbar,Eth,eth,Yacute,yacute,Thorn,thorn,minus,multiply,onesuperior,twosuperior,threesuperior,onehalf,onequarter,threequarters,franc,Gbreve,gbreve,Idotaccent,Scedilla,scedilla,Cacute,cacute,Ccaron,ccaron,dcroat`.split(`,`);function SB(e){this.font=e}SB.prototype.charToGlyphIndex=function(e){var t=e.codePointAt(0),n=this.font.glyphs;if(n){for(var r=0;r<n.length;r+=1)for(var i=n.get(r),a=0;a<i.unicodes.length;a+=1)if(i.unicodes[a]===t)return r}return null};function CB(e){this.cmap=e}CB.prototype.charToGlyphIndex=function(e){return this.cmap.glyphIndexMap[e.codePointAt(0)]||0};function wB(e,t){this.encoding=e,this.charset=t}wB.prototype.charToGlyphIndex=function(e){var t=e.codePointAt(0),n=this.encoding[t];return this.charset.indexOf(n)};function TB(e){switch(e.version){case 1:this.names=xB.slice();break;case 2:this.names=Array(e.numberOfGlyphs);for(var t=0;t<e.numberOfGlyphs;t++)e.glyphNameIndex[t]<xB.length?this.names[t]=xB[e.glyphNameIndex[t]]:this.names[t]=e.names[e.glyphNameIndex[t]-xB.length];break;case 2.5:this.names=Array(e.numberOfGlyphs);for(var n=0;n<e.numberOfGlyphs;n++)this.names[n]=xB[n+e.glyphNameIndex[n]];break;case 3:this.names=[];break;default:this.names=[];break}}TB.prototype.nameToGlyphIndex=function(e){return this.names.indexOf(e)},TB.prototype.glyphIndexToName=function(e){return this.names[e]};function EB(e){for(var t,n=e.tables.cmap.glyphIndexMap,r=Object.keys(n),i=0;i<r.length;i+=1){var a=r[i],o=n[a];t=e.glyphs.get(o),t.addUnicode(parseInt(a))}for(var s=0;s<e.glyphs.length;s+=1)t=e.glyphs.get(s),e.cffEncoding?e.isCIDFont?t.name=`gid`+s:t.name=e.cffEncoding.charset[s]:e.glyphNames.names&&(t.name=e.glyphNames.glyphIndexToName(s))}function DB(e){e._IndexToUnicodeMap={};for(var t=e.tables.cmap.glyphIndexMap,n=Object.keys(t),r=0;r<n.length;r+=1){var i=n[r],a=t[i];e._IndexToUnicodeMap[a]===void 0?e._IndexToUnicodeMap[a]={unicodes:[parseInt(i)]}:e._IndexToUnicodeMap[a].unicodes.push(parseInt(i))}}function OB(e,t){t.lowMemory?DB(e):EB(e)}function kB(e,t,n,r,i){e.beginPath(),e.moveTo(t,n),e.lineTo(r,i),e.stroke()}var AB={line:kB};function jB(e,t){var n=t||new Az;return{configurable:!0,get:function(){return typeof n==`function`&&(n=n()),n},set:function(e){n=e}}}function MB(e){this.bindConstructorValues(e)}MB.prototype.bindConstructorValues=function(e){this.index=e.index||0,this.name=e.name||null,this.unicode=e.unicode||void 0,this.unicodes=e.unicodes||e.unicode!==void 0?[e.unicode]:[],`xMin`in e&&(this.xMin=e.xMin),`yMin`in e&&(this.yMin=e.yMin),`xMax`in e&&(this.xMax=e.xMax),`yMax`in e&&(this.yMax=e.yMax),`advanceWidth`in e&&(this.advanceWidth=e.advanceWidth),Object.defineProperty(this,"path",jB(this,e.path))},MB.prototype.addUnicode=function(e){this.unicodes.length===0&&(this.unicode=e),this.unicodes.push(e)},MB.prototype.getBoundingBox=function(){return this.path.getBoundingBox()},MB.prototype.getPath=function(e,t,n,r,i){e=e===void 0?0:e,t=t===void 0?0:t,n=n===void 0?72:n;var a,o;r||={};var s=r.xScale,c=r.yScale;if(r.hinting&&i&&i.hinting&&(o=this.path&&i.hinting.exec(this,n)),o)a=i.hinting.getCommands(o),e=Math.round(e),t=Math.round(t),s=c=1;else{a=this.path.commands;var l=1/(this.path.unitsPerEm||1e3)*n;s===void 0&&(s=l),c===void 0&&(c=l)}for(var u=new Az,d=0;d<a.length;d+=1){var f=a[d];f.type===`M`?u.moveTo(e+f.x*s,t+-f.y*c):f.type===`L`?u.lineTo(e+f.x*s,t+-f.y*c):f.type===`Q`?u.quadraticCurveTo(e+f.x1*s,t+-f.y1*c,e+f.x*s,t+-f.y*c):f.type===`C`?u.curveTo(e+f.x1*s,t+-f.y1*c,e+f.x2*s,t+-f.y2*c,e+f.x*s,t+-f.y*c):f.type===`Z`&&u.closePath()}return u},MB.prototype.getContours=function(){if(this.points===void 0)return[];for(var e=[],t=[],n=0;n<this.points.length;n+=1){var r=this.points[n];t.push(r),r.lastPointOfContour&&(e.push(t),t=[])}return K.argument(t.length===0,`There are still points left in the current contour.`),e},MB.prototype.getMetrics=function(){for(var e=this.path.commands,t=[],n=[],r=0;r<e.length;r+=1){var i=e[r];i.type!==`Z`&&(t.push(i.x),n.push(i.y)),(i.type===`Q`||i.type===`C`)&&(t.push(i.x1),n.push(i.y1)),i.type===`C`&&(t.push(i.x2),n.push(i.y2))}var a={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,n),xMax:Math.max.apply(null,t),yMax:Math.max.apply(null,n),leftSideBearing:this.leftSideBearing};return isFinite(a.xMin)||(a.xMin=0),isFinite(a.xMax)||(a.xMax=this.advanceWidth),isFinite(a.yMin)||(a.yMin=0),isFinite(a.yMax)||(a.yMax=0),a.rightSideBearing=this.advanceWidth-a.leftSideBearing-(a.xMax-a.xMin),a},MB.prototype.draw=function(e,t,n,r,i){this.getPath(t,n,r,i).draw(e)},MB.prototype.drawPoints=function(e,t,n,r){function i(t,n,r,i){e.beginPath();for(var a=0;a<t.length;a+=1)e.moveTo(n+t[a].x*i,r+t[a].y*i),e.arc(n+t[a].x*i,r+t[a].y*i,2,0,Math.PI*2,!1);e.closePath(),e.fill()}t=t===void 0?0:t,n=n===void 0?0:n,r=r===void 0?24:r;for(var a=1/this.path.unitsPerEm*r,o=[],s=[],c=this.path,l=0;l<c.commands.length;l+=1){var u=c.commands[l];u.x!==void 0&&o.push({x:u.x,y:-u.y}),u.x1!==void 0&&s.push({x:u.x1,y:-u.y1}),u.x2!==void 0&&s.push({x:u.x2,y:-u.y2})}e.fillStyle=`blue`,i(o,t,n,a),e.fillStyle=`red`,i(s,t,n,a)},MB.prototype.drawMetrics=function(e,t,n,r){var i;t=t===void 0?0:t,n=n===void 0?0:n,r=r===void 0?24:r,i=1/this.path.unitsPerEm*r,e.lineWidth=1,e.strokeStyle=`black`,AB.line(e,t,-1e4,t,1e4),AB.line(e,-1e4,n,1e4,n);var a=this.xMin||0,o=this.yMin||0,s=this.xMax||0,c=this.yMax||0,l=this.advanceWidth||0;e.strokeStyle=`blue`,AB.line(e,t+a*i,-1e4,t+a*i,1e4),AB.line(e,t+s*i,-1e4,t+s*i,1e4),AB.line(e,-1e4,n+-o*i,1e4,n+-o*i),AB.line(e,-1e4,n+-c*i,1e4,n+-c*i),e.strokeStyle=`green`,AB.line(e,t+l*i,-1e4,t+l*i,1e4)};function NB(e,t,n){Object.defineProperty(e,t,{get:function(){return e.path,e[n]},set:function(t){e[n]=t},enumerable:!0,configurable:!0})}function PB(e,t){if(this.font=e,this.glyphs={},Array.isArray(t))for(var n=0;n<t.length;n++){var r=t[n];r.path.unitsPerEm=e.unitsPerEm,this.glyphs[n]=r}this.length=t&&t.length||0}PB.prototype.get=function(e){if(this.glyphs[e]===void 0){this.font._push(e),typeof this.glyphs[e]==`function`&&(this.glyphs[e]=this.glyphs[e]());var t=this.glyphs[e],n=this.font._IndexToUnicodeMap[e];if(n)for(var r=0;r<n.unicodes.length;r++)t.addUnicode(n.unicodes[r]);this.font.cffEncoding?this.font.isCIDFont?t.name=`gid`+e:t.name=this.font.cffEncoding.charset[e]:this.font.glyphNames.names&&(t.name=this.font.glyphNames.glyphIndexToName(e)),this.glyphs[e].advanceWidth=this.font._hmtxTableData[e].advanceWidth,this.glyphs[e].leftSideBearing=this.font._hmtxTableData[e].leftSideBearing}else typeof this.glyphs[e]==`function`&&(this.glyphs[e]=this.glyphs[e]());return this.glyphs[e]},PB.prototype.push=function(e,t){this.glyphs[e]=t,this.length++};function FB(e,t){return new MB({index:t,font:e})}function IB(e,t,n,r,i,a){return function(){var o=new MB({index:t,font:e});return o.path=function(){n(o,r,i);var t=a(e.glyphs,o);return t.unitsPerEm=e.unitsPerEm,t},NB(o,`xMin`,`_xMin`),NB(o,`xMax`,`_xMax`),NB(o,`yMin`,`_yMin`),NB(o,`yMax`,`_yMax`),o}}function LB(e,t,n,r){return function(){var i=new MB({index:t,font:e});return i.path=function(){var t=n(e,i,r);return t.unitsPerEm=e.unitsPerEm,t},i}}var RB={GlyphSet:PB,glyphLoader:FB,ttfGlyphLoader:IB,cffGlyphLoader:LB};function zB(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n+=1)if(!zB(e[n],t[n]))return!1;return!0}else return!1}function BB(e){return e.length<1240?107:e.length<33900?1131:32768}function VB(e,t,n){var r=[],i=[],a=Z.getCard16(e,t),o,s;if(a!==0){var c=Z.getByte(e,t+2);o=t+(a+1)*c+2;for(var l=t+3,u=0;u<a+1;u+=1)r.push(Z.getOffset(e,l,c)),l+=c;s=o+r[a]}else s=t+2;for(var d=0;d<r.length-1;d+=1){var f=Z.getBytes(e,o+r[d],o+r[d+1]);n&&(f=n(f)),i.push(f)}return{objects:i,startOffset:t,endOffset:s}}function HB(e,t){var n=[],r=Z.getCard16(e,t),i,a;if(r!==0){var o=Z.getByte(e,t+2);i=t+(r+1)*o+2;for(var s=t+3,c=0;c<r+1;c+=1)n.push(Z.getOffset(e,s,o)),s+=o;a=i+n[r]}else a=t+2;return{offsets:n,startOffset:t,endOffset:a}}function UB(e,t,n,r,i){var a=Z.getCard16(n,r),o=0;if(a!==0){var s=Z.getByte(n,r+2);o=r+(a+1)*s+2}var c=Z.getBytes(n,o+t[e],o+t[e+1]);return i&&(c=i(c)),c}function WB(e){for(var t=``,n=15,r=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`.`,`E`,`E-`,null,`-`];;){var i=e.parseByte(),a=i>>4,o=i&15;if(a===n||(t+=r[a],o===n))break;t+=r[o]}return parseFloat(t)}function GB(e,t){var n,r,i,a;if(t===28)return n=e.parseByte(),r=e.parseByte(),n<<8|r;if(t===29)return n=e.parseByte(),r=e.parseByte(),i=e.parseByte(),a=e.parseByte(),n<<24|r<<16|i<<8|a;if(t===30)return WB(e);if(t>=32&&t<=246)return t-139;if(t>=247&&t<=250)return n=e.parseByte(),(t-247)*256+n+108;if(t>=251&&t<=254)return n=e.parseByte(),-(t-251)*256-n-108;throw Error(`Invalid b0 `+t)}function KB(e){for(var t={},n=0;n<e.length;n+=1){var r=e[n][0],i=e[n][1],a=void 0;if(a=i.length===1?i[0]:i,t.hasOwnProperty(r)&&!isNaN(t[r]))throw Error(`Object `+t+` already has key `+r);t[r]=a}return t}function qB(e,t,n){t=t===void 0?0:t;var r=new Z.Parser(e,t),i=[],a=[];for(n=n===void 0?e.length:n;r.relativeOffset<n;){var o=r.parseByte();o<=21?(o===12&&(o=1200+r.parseByte()),i.push([o,a]),a=[]):a.push(GB(r,o))}return KB(i)}function JB(e,t){return t=t<=390?vB[t]:e[t-391],t}function YB(e,t,n){for(var r={},i,a=0;a<t.length;a+=1){var o=t[a];if(Array.isArray(o.type)){var s=[];s.length=o.type.length;for(var c=0;c<o.type.length;c++)i=e[o.op]===void 0?void 0:e[o.op][c],i===void 0&&(i=o.value!==void 0&&o.value[c]!==void 0?o.value[c]:null),o.type[c]===`SID`&&(i=JB(n,i)),s[c]=i;r[o.name]=s}else i=e[o.op],i===void 0&&(i=o.value===void 0?null:o.value),o.type===`SID`&&(i=JB(n,i)),r[o.name]=i}return r}function XB(e,t){var n={};return n.formatMajor=Z.getCard8(e,t),n.formatMinor=Z.getCard8(e,t+1),n.size=Z.getCard8(e,t+2),n.offsetSize=Z.getCard8(e,t+3),n.startOffset=t,n.endOffset=t+4,n}var ZB=[{name:`version`,op:0,type:`SID`},{name:`notice`,op:1,type:`SID`},{name:`copyright`,op:1200,type:`SID`},{name:`fullName`,op:2,type:`SID`},{name:`familyName`,op:3,type:`SID`},{name:`weight`,op:4,type:`SID`},{name:`isFixedPitch`,op:1201,type:`number`,value:0},{name:`italicAngle`,op:1202,type:`number`,value:0},{name:`underlinePosition`,op:1203,type:`number`,value:-100},{name:`underlineThickness`,op:1204,type:`number`,value:50},{name:`paintType`,op:1205,type:`number`,value:0},{name:`charstringType`,op:1206,type:`number`,value:2},{name:`fontMatrix`,op:1207,type:[`real`,`real`,`real`,`real`,`real`,`real`],value:[.001,0,0,.001,0,0]},{name:`uniqueId`,op:13,type:`number`},{name:`fontBBox`,op:5,type:[`number`,`number`,`number`,`number`],value:[0,0,0,0]},{name:`strokeWidth`,op:1208,type:`number`,value:0},{name:`xuid`,op:14,type:[],value:null},{name:`charset`,op:15,type:`offset`,value:0},{name:`encoding`,op:16,type:`offset`,value:0},{name:`charStrings`,op:17,type:`offset`,value:0},{name:`private`,op:18,type:[`number`,`offset`],value:[0,0]},{name:`ros`,op:1230,type:[`SID`,`SID`,`number`]},{name:`cidFontVersion`,op:1231,type:`number`,value:0},{name:`cidFontRevision`,op:1232,type:`number`,value:0},{name:`cidFontType`,op:1233,type:`number`,value:0},{name:`cidCount`,op:1234,type:`number`,value:8720},{name:`uidBase`,op:1235,type:`number`},{name:`fdArray`,op:1236,type:`offset`},{name:`fdSelect`,op:1237,type:`offset`},{name:`fontName`,op:1238,type:`SID`}],QB=[{name:`subrs`,op:19,type:`offset`,value:0},{name:`defaultWidthX`,op:20,type:`number`,value:0},{name:`nominalWidthX`,op:21,type:`number`,value:0}];function $B(e,t){return YB(qB(e,0,e.byteLength),ZB,t)}function eV(e,t,n,r){return YB(qB(e,t,n),QB,r)}function tV(e,t,n,r){for(var i=[],a=0;a<n.length;a+=1){var o=$B(new DataView(new Uint8Array(n[a]).buffer),r);o._subrs=[],o._subrsBias=0,o._defaultWidthX=0,o._nominalWidthX=0;var s=o.private[0],c=o.private[1];if(s!==0&&c!==0){var l=eV(e,c+t,s,r);o._defaultWidthX=l.defaultWidthX,o._nominalWidthX=l.nominalWidthX,l.subrs!==0&&(o._subrs=VB(e,c+l.subrs+t).objects,o._subrsBias=BB(o._subrs)),o._privateDict=l}i.push(o)}return i}function nV(e,t,n,r){var i,a,o=new Z.Parser(e,t);--n;var s=[`.notdef`],c=o.parseCard8();if(c===0)for(var l=0;l<n;l+=1)i=o.parseSID(),s.push(JB(r,i));else if(c===1)for(;s.length<=n;){i=o.parseSID(),a=o.parseCard8();for(var u=0;u<=a;u+=1)s.push(JB(r,i)),i+=1}else if(c===2)for(;s.length<=n;){i=o.parseSID(),a=o.parseCard16();for(var d=0;d<=a;d+=1)s.push(JB(r,i)),i+=1}else throw Error(`Unknown charset format `+c);return s}function rV(e,t,n){var r,i={},a=new Z.Parser(e,t),o=a.parseCard8();if(o===0)for(var s=a.parseCard8(),c=0;c<s;c+=1)r=a.parseCard8(),i[r]=c;else if(o===1){var l=a.parseCard8();r=1;for(var u=0;u<l;u+=1)for(var d=a.parseCard8(),f=a.parseCard8(),p=d;p<=d+f;p+=1)i[p]=r,r+=1}else throw Error(`Unknown encoding format `+o);return new wB(i,n)}function iV(e,t,n){var r,i,a,o,s=new Az,c=[],l=0,u=!1,d=!1,f=0,p=0,m,h,g,_;if(e.isCIDFont){var v=e.tables.cff.topDict._fdSelect[t.index],y=e.tables.cff.topDict._fdArray[v];m=y._subrs,h=y._subrsBias,g=y._defaultWidthX,_=y._nominalWidthX}else m=e.tables.cff.topDict._subrs,h=e.tables.cff.topDict._subrsBias,g=e.tables.cff.topDict._defaultWidthX,_=e.tables.cff.topDict._nominalWidthX;var b=g;function x(e,t){d&&s.closePath(),s.moveTo(e,t),d=!0}function S(){c.length%2!=0&&!u&&(b=c.shift()+_),l+=c.length>>1,c.length=0,u=!0}function C(n){for(var g,v,y,w,ee,te,ne,re,ie,ae,oe,se,ce=0;ce<n.length;){var le=n[ce];switch(ce+=1,le){case 1:S();break;case 3:S();break;case 4:c.length>1&&!u&&(b=c.shift()+_,u=!0),p+=c.pop(),x(f,p);break;case 5:for(;c.length>0;)f+=c.shift(),p+=c.shift(),s.lineTo(f,p);break;case 6:for(;c.length>0&&(f+=c.shift(),s.lineTo(f,p),c.length!==0);)p+=c.shift(),s.lineTo(f,p);break;case 7:for(;c.length>0&&(p+=c.shift(),s.lineTo(f,p),c.length!==0);)f+=c.shift(),s.lineTo(f,p);break;case 8:for(;c.length>0;)r=f+c.shift(),i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),f=a+c.shift(),p=o+c.shift(),s.curveTo(r,i,a,o,f,p);break;case 10:ee=c.pop()+h,te=m[ee],te&&C(te);break;case 11:return;case 12:switch(le=n[ce],ce+=1,le){case 35:r=f+c.shift(),i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),ne=a+c.shift(),re=o+c.shift(),ie=ne+c.shift(),ae=re+c.shift(),oe=ie+c.shift(),se=ae+c.shift(),f=oe+c.shift(),p=se+c.shift(),c.shift(),s.curveTo(r,i,a,o,ne,re),s.curveTo(ie,ae,oe,se,f,p);break;case 34:r=f+c.shift(),i=p,a=r+c.shift(),o=i+c.shift(),ne=a+c.shift(),re=o,ie=ne+c.shift(),ae=o,oe=ie+c.shift(),se=p,f=oe+c.shift(),s.curveTo(r,i,a,o,ne,re),s.curveTo(ie,ae,oe,se,f,p);break;case 36:r=f+c.shift(),i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),ne=a+c.shift(),re=o,ie=ne+c.shift(),ae=o,oe=ie+c.shift(),se=ae+c.shift(),f=oe+c.shift(),s.curveTo(r,i,a,o,ne,re),s.curveTo(ie,ae,oe,se,f,p);break;case 37:r=f+c.shift(),i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),ne=a+c.shift(),re=o+c.shift(),ie=ne+c.shift(),ae=re+c.shift(),oe=ie+c.shift(),se=ae+c.shift(),Math.abs(oe-f)>Math.abs(se-p)?f=oe+c.shift():p=se+c.shift(),s.curveTo(r,i,a,o,ne,re),s.curveTo(ie,ae,oe,se,f,p);break;default:console.log(`Glyph `+t.index+`: unknown operator 1200`+le),c.length=0}break;case 14:c.length>0&&!u&&(b=c.shift()+_,u=!0),d&&=(s.closePath(),!1);break;case 18:S();break;case 19:case 20:S(),ce+=l+7>>3;break;case 21:c.length>2&&!u&&(b=c.shift()+_,u=!0),p+=c.pop(),f+=c.pop(),x(f,p);break;case 22:c.length>1&&!u&&(b=c.shift()+_,u=!0),f+=c.pop(),x(f,p);break;case 23:S();break;case 24:for(;c.length>2;)r=f+c.shift(),i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),f=a+c.shift(),p=o+c.shift(),s.curveTo(r,i,a,o,f,p);f+=c.shift(),p+=c.shift(),s.lineTo(f,p);break;case 25:for(;c.length>6;)f+=c.shift(),p+=c.shift(),s.lineTo(f,p);r=f+c.shift(),i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),f=a+c.shift(),p=o+c.shift(),s.curveTo(r,i,a,o,f,p);break;case 26:for(c.length%2&&(f+=c.shift());c.length>0;)r=f,i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),f=a,p=o+c.shift(),s.curveTo(r,i,a,o,f,p);break;case 27:for(c.length%2&&(p+=c.shift());c.length>0;)r=f+c.shift(),i=p,a=r+c.shift(),o=i+c.shift(),f=a+c.shift(),p=o,s.curveTo(r,i,a,o,f,p);break;case 28:g=n[ce],v=n[ce+1],c.push((g<<24|v<<16)>>16),ce+=2;break;case 29:ee=c.pop()+e.gsubrsBias,te=e.gsubrs[ee],te&&C(te);break;case 30:for(;c.length>0&&(r=f,i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),f=a+c.shift(),p=o+(c.length===1?c.shift():0),s.curveTo(r,i,a,o,f,p),c.length!==0);)r=f+c.shift(),i=p,a=r+c.shift(),o=i+c.shift(),p=o+c.shift(),f=a+(c.length===1?c.shift():0),s.curveTo(r,i,a,o,f,p);break;case 31:for(;c.length>0&&(r=f+c.shift(),i=p,a=r+c.shift(),o=i+c.shift(),p=o+c.shift(),f=a+(c.length===1?c.shift():0),s.curveTo(r,i,a,o,f,p),c.length!==0);)r=f,i=p+c.shift(),a=r+c.shift(),o=i+c.shift(),f=a+c.shift(),p=o+(c.length===1?c.shift():0),s.curveTo(r,i,a,o,f,p);break;default:le<32?console.log(`Glyph `+t.index+`: unknown operator `+le):le<247?c.push(le-139):le<251?(g=n[ce],ce+=1,c.push((le-247)*256+g+108)):le<255?(g=n[ce],ce+=1,c.push(-(le-251)*256-g-108)):(g=n[ce],v=n[ce+1],y=n[ce+2],w=n[ce+3],ce+=4,c.push((g<<24|v<<16|y<<8|w)/65536))}}}return C(n),t.advanceWidth=b,s}function aV(e,t,n,r){var i=[],a,o=new Z.Parser(e,t),s=o.parseCard8();if(s===0)for(var c=0;c<n;c++){if(a=o.parseCard8(),a>=r)throw Error(`CFF table CID Font FDSelect has bad FD index value `+a+` (FD count `+r+`)`);i.push(a)}else if(s===3){var l=o.parseCard16(),u=o.parseCard16();if(u!==0)throw Error(`CFF Table CID Font FDSelect format 3 range has bad initial GID `+u);for(var d,f=0;f<l;f++){if(a=o.parseCard8(),d=o.parseCard16(),a>=r)throw Error(`CFF table CID Font FDSelect has bad FD index value `+a+` (FD count `+r+`)`);if(d>n)throw Error(`CFF Table CID Font FDSelect format 3 range has bad GID `+d);for(;u<d;u++)i.push(a);u=d}if(d!==n)throw Error(`CFF Table CID Font FDSelect format 3 range has bad final GID `+d)}else throw Error(`CFF Table CID Font FDSelect table has unsupported format `+s);return i}function oV(e,t,n,r){n.tables.cff={};var i=VB(e,VB(e,XB(e,t).endOffset,Z.bytesToString).endOffset),a=VB(e,i.endOffset,Z.bytesToString);n.gsubrs=VB(e,a.endOffset).objects,n.gsubrsBias=BB(n.gsubrs);var o=tV(e,t,i.objects,a.objects);if(o.length!==1)throw Error(`CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = `+o.length);var s=o[0];if(n.tables.cff.topDict=s,s._privateDict&&(n.defaultWidthX=s._privateDict.defaultWidthX,n.nominalWidthX=s._privateDict.nominalWidthX),s.ros[0]!==void 0&&s.ros[1]!==void 0&&(n.isCIDFont=!0),n.isCIDFont){var c=s.fdArray,l=s.fdSelect;if(c===0||l===0)throw Error(`Font is marked as a CID font, but FDArray and/or FDSelect information is missing`);c+=t;var u=tV(e,t,VB(e,c).objects,a.objects);s._fdArray=u,l+=t,s._fdSelect=aV(e,l,n.numGlyphs,u.length)}var d=t+s.private[1],f=eV(e,d,s.private[0],a.objects);n.defaultWidthX=f.defaultWidthX,n.nominalWidthX=f.nominalWidthX,f.subrs===0?(n.subrs=[],n.subrsBias=0):(n.subrs=VB(e,d+f.subrs).objects,n.subrsBias=BB(n.subrs));var p;r.lowMemory?(p=HB(e,t+s.charStrings),n.nGlyphs=p.offsets.length):(p=VB(e,t+s.charStrings),n.nGlyphs=p.objects.length);var m=nV(e,t+s.charset,n.nGlyphs,a.objects);if(s.encoding===0?n.cffEncoding=new wB(yB,m):s.encoding===1?n.cffEncoding=new wB(bB,m):n.cffEncoding=rV(e,t+s.encoding,m),n.encoding=n.encoding||n.cffEncoding,n.glyphs=new RB.GlyphSet(n),r.lowMemory)n._push=function(r){var i=UB(r,p.offsets,e,t+s.charStrings);n.glyphs.push(r,RB.cffGlyphLoader(n,r,iV,i))};else for(var h=0;h<n.nGlyphs;h+=1){var g=p.objects[h];n.glyphs.push(h,RB.cffGlyphLoader(n,h,iV,g))}}function sV(e,t){var n,r=vB.indexOf(e);return r>=0&&(n=r),r=t.indexOf(e),r>=0?n=r+vB.length:(n=vB.length+t.length,t.push(e)),n}function cV(){return new Y.Record(`Header`,[{name:`major`,type:`Card8`,value:1},{name:`minor`,type:`Card8`,value:0},{name:`hdrSize`,type:`Card8`,value:4},{name:`major`,type:`Card8`,value:1}])}function lV(e){var t=new Y.Record(`Name INDEX`,[{name:`names`,type:`INDEX`,value:[]}]);t.names=[];for(var n=0;n<e.length;n+=1)t.names.push({name:`name_`+n,type:`NAME`,value:e[n]});return t}function uV(e,t,n){for(var r={},i=0;i<e.length;i+=1){var a=e[i],o=t[a.name];o!==void 0&&!zB(o,a.value)&&(a.type===`SID`&&(o=sV(o,n)),r[a.op]={name:a.name,type:a.type,value:o})}return r}function dV(e,t){var n=new Y.Record(`Top DICT`,[{name:`dict`,type:`DICT`,value:{}}]);return n.dict=uV(ZB,e,t),n}function fV(e){var t=new Y.Record(`Top DICT INDEX`,[{name:`topDicts`,type:`INDEX`,value:[]}]);return t.topDicts=[{name:`topDict_0`,type:`TABLE`,value:e}],t}function pV(e){var t=new Y.Record(`String INDEX`,[{name:`strings`,type:`INDEX`,value:[]}]);t.strings=[];for(var n=0;n<e.length;n+=1)t.strings.push({name:`string_`+n,type:`STRING`,value:e[n]});return t}function mV(){return new Y.Record(`Global Subr INDEX`,[{name:`subrs`,type:`INDEX`,value:[]}])}function hV(e,t){for(var n=new Y.Record(`Charsets`,[{name:`format`,type:`Card8`,value:0}]),r=0;r<e.length;r+=1){var i=e[r],a=sV(i,t);n.fields.push({name:`glyph_`+r,type:`SID`,value:a})}return n}function gV(e){var t=[],n=e.path;t.push({name:`width`,type:`NUMBER`,value:e.advanceWidth});for(var r=0,i=0,a=0;a<n.commands.length;a+=1){var o=void 0,s=void 0,c=n.commands[a];if(c.type===`Q`){var l=1/3,u=2/3;c={type:`C`,x:c.x,y:c.y,x1:Math.round(l*r+u*c.x1),y1:Math.round(l*i+u*c.y1),x2:Math.round(l*c.x+u*c.x1),y2:Math.round(l*c.y+u*c.y1)}}if(c.type===`M`)o=Math.round(c.x-r),s=Math.round(c.y-i),t.push({name:`dx`,type:`NUMBER`,value:o}),t.push({name:`dy`,type:`NUMBER`,value:s}),t.push({name:`rmoveto`,type:`OP`,value:21}),r=Math.round(c.x),i=Math.round(c.y);else if(c.type===`L`)o=Math.round(c.x-r),s=Math.round(c.y-i),t.push({name:`dx`,type:`NUMBER`,value:o}),t.push({name:`dy`,type:`NUMBER`,value:s}),t.push({name:`rlineto`,type:`OP`,value:5}),r=Math.round(c.x),i=Math.round(c.y);else if(c.type===`C`){var d=Math.round(c.x1-r),f=Math.round(c.y1-i),p=Math.round(c.x2-c.x1),m=Math.round(c.y2-c.y1);o=Math.round(c.x-c.x2),s=Math.round(c.y-c.y2),t.push({name:`dx1`,type:`NUMBER`,value:d}),t.push({name:`dy1`,type:`NUMBER`,value:f}),t.push({name:`dx2`,type:`NUMBER`,value:p}),t.push({name:`dy2`,type:`NUMBER`,value:m}),t.push({name:`dx`,type:`NUMBER`,value:o}),t.push({name:`dy`,type:`NUMBER`,value:s}),t.push({name:`rrcurveto`,type:`OP`,value:8}),r=Math.round(c.x),i=Math.round(c.y)}}return t.push({name:`endchar`,type:`OP`,value:14}),t}function _V(e){for(var t=new Y.Record(`CharStrings INDEX`,[{name:`charStrings`,type:`INDEX`,value:[]}]),n=0;n<e.length;n+=1){var r=e.get(n),i=gV(r);t.charStrings.push({name:r.name,type:`CHARSTRING`,value:i})}return t}function vV(e,t){var n=new Y.Record(`Private DICT`,[{name:`dict`,type:`DICT`,value:{}}]);return n.dict=uV(QB,e,t),n}function yV(e,t){for(var n=new Y.Table(`CFF `,[{name:`header`,type:`RECORD`},{name:`nameIndex`,type:`RECORD`},{name:`topDictIndex`,type:`RECORD`},{name:`stringIndex`,type:`RECORD`},{name:`globalSubrIndex`,type:`RECORD`},{name:`charsets`,type:`RECORD`},{name:`charStringsIndex`,type:`RECORD`},{name:`privateDict`,type:`RECORD`}]),r=1/t.unitsPerEm,i={version:t.version,fullName:t.fullName,familyName:t.familyName,weight:t.weightName,fontBBox:t.fontBBox||[0,0,0,0],fontMatrix:[r,0,0,r,0,0],charset:999,encoding:0,charStrings:999,private:[0,999]},a={},o=[],s,c=1;c<e.length;c+=1)s=e.get(c),o.push(s.name);var l=[];n.header=cV(),n.nameIndex=lV([t.postScriptName]);var u=dV(i,l);return n.topDictIndex=fV(u),n.globalSubrIndex=mV(),n.charsets=hV(o,l),n.charStringsIndex=_V(e),n.privateDict=vV(a,l),n.stringIndex=pV(l),i.charset=n.header.sizeOf()+n.nameIndex.sizeOf()+n.topDictIndex.sizeOf()+n.stringIndex.sizeOf()+n.globalSubrIndex.sizeOf(),i.encoding=0,i.charStrings=i.charset+n.charsets.sizeOf(),i.private[1]=i.charStrings+n.charStringsIndex.sizeOf(),u=dV(i,l),n.topDictIndex=fV(u),n}var bV={parse:oV,make:yV};function xV(e,t){var n={},r=new Z.Parser(e,t);return n.version=r.parseVersion(),n.fontRevision=Math.round(r.parseFixed()*1e3)/1e3,n.checkSumAdjustment=r.parseULong(),n.magicNumber=r.parseULong(),K.argument(n.magicNumber===1594834165,`Font header has wrong magic number.`),n.flags=r.parseUShort(),n.unitsPerEm=r.parseUShort(),n.created=r.parseLongDateTime(),n.modified=r.parseLongDateTime(),n.xMin=r.parseShort(),n.yMin=r.parseShort(),n.xMax=r.parseShort(),n.yMax=r.parseShort(),n.macStyle=r.parseUShort(),n.lowestRecPPEM=r.parseUShort(),n.fontDirectionHint=r.parseShort(),n.indexToLocFormat=r.parseShort(),n.glyphDataFormat=r.parseShort(),n}function SV(e){var t=Math.round(new Date().getTime()/1e3)+2082844800,n=t;return e.createdTimestamp&&(n=e.createdTimestamp+2082844800),new Y.Table(`head`,[{name:`version`,type:`FIXED`,value:65536},{name:`fontRevision`,type:`FIXED`,value:65536},{name:`checkSumAdjustment`,type:`ULONG`,value:0},{name:`magicNumber`,type:`ULONG`,value:1594834165},{name:`flags`,type:`USHORT`,value:0},{name:`unitsPerEm`,type:`USHORT`,value:1e3},{name:`created`,type:`LONGDATETIME`,value:n},{name:`modified`,type:`LONGDATETIME`,value:t},{name:`xMin`,type:`SHORT`,value:0},{name:`yMin`,type:`SHORT`,value:0},{name:`xMax`,type:`SHORT`,value:0},{name:`yMax`,type:`SHORT`,value:0},{name:`macStyle`,type:`USHORT`,value:0},{name:`lowestRecPPEM`,type:`USHORT`,value:0},{name:`fontDirectionHint`,type:`SHORT`,value:2},{name:`indexToLocFormat`,type:`SHORT`,value:0},{name:`glyphDataFormat`,type:`SHORT`,value:0}],e)}var CV={parse:xV,make:SV};function wV(e,t){var n={},r=new Z.Parser(e,t);return n.version=r.parseVersion(),n.ascender=r.parseShort(),n.descender=r.parseShort(),n.lineGap=r.parseShort(),n.advanceWidthMax=r.parseUShort(),n.minLeftSideBearing=r.parseShort(),n.minRightSideBearing=r.parseShort(),n.xMaxExtent=r.parseShort(),n.caretSlopeRise=r.parseShort(),n.caretSlopeRun=r.parseShort(),n.caretOffset=r.parseShort(),r.relativeOffset+=8,n.metricDataFormat=r.parseShort(),n.numberOfHMetrics=r.parseUShort(),n}function TV(e){return new Y.Table(`hhea`,[{name:`version`,type:`FIXED`,value:65536},{name:`ascender`,type:`FWORD`,value:0},{name:`descender`,type:`FWORD`,value:0},{name:`lineGap`,type:`FWORD`,value:0},{name:`advanceWidthMax`,type:`UFWORD`,value:0},{name:`minLeftSideBearing`,type:`FWORD`,value:0},{name:`minRightSideBearing`,type:`FWORD`,value:0},{name:`xMaxExtent`,type:`FWORD`,value:0},{name:`caretSlopeRise`,type:`SHORT`,value:1},{name:`caretSlopeRun`,type:`SHORT`,value:0},{name:`caretOffset`,type:`SHORT`,value:0},{name:`reserved1`,type:`SHORT`,value:0},{name:`reserved2`,type:`SHORT`,value:0},{name:`reserved3`,type:`SHORT`,value:0},{name:`reserved4`,type:`SHORT`,value:0},{name:`metricDataFormat`,type:`SHORT`,value:0},{name:`numberOfHMetrics`,type:`USHORT`,value:0}],e)}var EV={parse:wV,make:TV};function DV(e,t,n,r,i){for(var a,o,s=new Z.Parser(e,t),c=0;c<r;c+=1){c<n&&(a=s.parseUShort(),o=s.parseShort());var l=i.get(c);l.advanceWidth=a,l.leftSideBearing=o}}function OV(e,t,n,r,i){e._hmtxTableData={};for(var a,o,s=new Z.Parser(t,n),c=0;c<i;c+=1)c<r&&(a=s.parseUShort(),o=s.parseShort()),e._hmtxTableData[c]={advanceWidth:a,leftSideBearing:o}}function kV(e,t,n,r,i,a,o){o.lowMemory?OV(e,t,n,r,i):DV(t,n,r,i,a)}function AV(e){for(var t=new Y.Table(`hmtx`,[]),n=0;n<e.length;n+=1){var r=e.get(n),i=r.advanceWidth||0,a=r.leftSideBearing||0;t.fields.push({name:`advanceWidth_`+n,type:`USHORT`,value:i}),t.fields.push({name:`leftSideBearing_`+n,type:`SHORT`,value:a})}return t}var jV={parse:kV,make:AV};function MV(e){for(var t=new Y.Table(`ltag`,[{name:`version`,type:`ULONG`,value:1},{name:`flags`,type:`ULONG`,value:0},{name:`numTags`,type:`ULONG`,value:e.length}]),n=``,r=12+e.length*4,i=0;i<e.length;++i){var a=n.indexOf(e[i]);a<0&&(a=n.length,n+=e[i]),t.fields.push({name:`offset `+i,type:`USHORT`,value:r+a}),t.fields.push({name:`length `+i,type:`USHORT`,value:e[i].length})}return t.fields.push({name:`stringPool`,type:`CHARARRAY`,value:n}),t}function NV(e,t){var n=new Z.Parser(e,t),r=n.parseULong();K.argument(r===1,`Unsupported ltag table version.`),n.skip(`uLong`,1);for(var i=n.parseULong(),a=[],o=0;o<i;o++){for(var s=``,c=t+n.parseUShort(),l=n.parseUShort(),u=c;u<c+l;++u)s+=String.fromCharCode(e.getInt8(u));a.push(s)}return a}var PV={make:MV,parse:NV};function FV(e,t){var n={},r=new Z.Parser(e,t);return n.version=r.parseVersion(),n.numGlyphs=r.parseUShort(),n.version===1&&(n.maxPoints=r.parseUShort(),n.maxContours=r.parseUShort(),n.maxCompositePoints=r.parseUShort(),n.maxCompositeContours=r.parseUShort(),n.maxZones=r.parseUShort(),n.maxTwilightPoints=r.parseUShort(),n.maxStorage=r.parseUShort(),n.maxFunctionDefs=r.parseUShort(),n.maxInstructionDefs=r.parseUShort(),n.maxStackElements=r.parseUShort(),n.maxSizeOfInstructions=r.parseUShort(),n.maxComponentElements=r.parseUShort(),n.maxComponentDepth=r.parseUShort()),n}function IV(e){return new Y.Table(`maxp`,[{name:`version`,type:`FIXED`,value:20480},{name:`numGlyphs`,type:`USHORT`,value:e}])}var LV={parse:FV,make:IV},RV=[`copyright`,`fontFamily`,`fontSubfamily`,`uniqueID`,`fullName`,`version`,`postScriptName`,`trademark`,`manufacturer`,`designer`,`description`,`manufacturerURL`,`designerURL`,`license`,`licenseURL`,`reserved`,`preferredFamily`,`preferredSubfamily`,`compatibleFullName`,`sampleText`,`postScriptFindFontName`,`wwsFamily`,`wwsSubfamily`],zV={0:`en`,1:`fr`,2:`de`,3:`it`,4:`nl`,5:`sv`,6:`es`,7:`da`,8:`pt`,9:`no`,10:`he`,11:`ja`,12:`ar`,13:`fi`,14:`el`,15:`is`,16:`mt`,17:`tr`,18:`hr`,19:`zh-Hant`,20:`ur`,21:`hi`,22:`th`,23:`ko`,24:`lt`,25:`pl`,26:`hu`,27:`es`,28:`lv`,29:`se`,30:`fo`,31:`fa`,32:`ru`,33:`zh`,34:`nl-BE`,35:`ga`,36:`sq`,37:`ro`,38:`cz`,39:`sk`,40:`si`,41:`yi`,42:`sr`,43:`mk`,44:`bg`,45:`uk`,46:`be`,47:`uz`,48:`kk`,49:`az-Cyrl`,50:`az-Arab`,51:`hy`,52:`ka`,53:`mo`,54:`ky`,55:`tg`,56:`tk`,57:`mn-CN`,58:`mn`,59:`ps`,60:`ks`,61:`ku`,62:`sd`,63:`bo`,64:`ne`,65:`sa`,66:`mr`,67:`bn`,68:`as`,69:`gu`,70:`pa`,71:`or`,72:`ml`,73:`kn`,74:`ta`,75:`te`,76:`si`,77:`my`,78:`km`,79:`lo`,80:`vi`,81:`id`,82:`tl`,83:`ms`,84:`ms-Arab`,85:`am`,86:`ti`,87:`om`,88:`so`,89:`sw`,90:`rw`,91:`rn`,92:`ny`,93:`mg`,94:`eo`,128:`cy`,129:`eu`,130:`ca`,131:`la`,132:`qu`,133:`gn`,134:`ay`,135:`tt`,136:`ug`,137:`dz`,138:`jv`,139:`su`,140:`gl`,141:`af`,142:`br`,143:`iu`,144:`gd`,145:`gv`,146:`ga`,147:`to`,148:`el-polyton`,149:`kl`,150:`az`,151:`nn`},BV={0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:5,11:1,12:4,13:0,14:6,15:0,16:0,17:0,18:0,19:2,20:4,21:9,22:21,23:3,24:29,25:29,26:29,27:29,28:29,29:0,30:0,31:4,32:7,33:25,34:0,35:0,36:0,37:0,38:29,39:29,40:0,41:5,42:7,43:7,44:7,45:7,46:7,47:7,48:7,49:7,50:4,51:24,52:23,53:7,54:7,55:7,56:7,57:27,58:7,59:4,60:4,61:4,62:4,63:26,64:9,65:9,66:9,67:13,68:13,69:11,70:10,71:12,72:17,73:16,74:14,75:15,76:18,77:19,78:20,79:22,80:30,81:0,82:0,83:0,84:4,85:28,86:28,87:28,88:0,89:0,90:0,91:0,92:0,93:0,94:0,128:0,129:0,130:0,131:0,132:0,133:0,134:0,135:7,136:4,137:26,138:0,139:0,140:0,141:0,142:0,143:28,144:0,145:0,146:0,147:0,148:6,149:0,150:0,151:0},VV={1078:`af`,1052:`sq`,1156:`gsw`,1118:`am`,5121:`ar-DZ`,15361:`ar-BH`,3073:`ar`,2049:`ar-IQ`,11265:`ar-JO`,13313:`ar-KW`,12289:`ar-LB`,4097:`ar-LY`,6145:`ary`,8193:`ar-OM`,16385:`ar-QA`,1025:`ar-SA`,10241:`ar-SY`,7169:`aeb`,14337:`ar-AE`,9217:`ar-YE`,1067:`hy`,1101:`as`,2092:`az-Cyrl`,1068:`az`,1133:`ba`,1069:`eu`,1059:`be`,2117:`bn`,1093:`bn-IN`,8218:`bs-Cyrl`,5146:`bs`,1150:`br`,1026:`bg`,1027:`ca`,3076:`zh-HK`,5124:`zh-MO`,2052:`zh`,4100:`zh-SG`,1028:`zh-TW`,1155:`co`,1050:`hr`,4122:`hr-BA`,1029:`cs`,1030:`da`,1164:`prs`,1125:`dv`,2067:`nl-BE`,1043:`nl`,3081:`en-AU`,10249:`en-BZ`,4105:`en-CA`,9225:`en-029`,16393:`en-IN`,6153:`en-IE`,8201:`en-JM`,17417:`en-MY`,5129:`en-NZ`,13321:`en-PH`,18441:`en-SG`,7177:`en-ZA`,11273:`en-TT`,2057:`en-GB`,1033:`en`,12297:`en-ZW`,1061:`et`,1080:`fo`,1124:`fil`,1035:`fi`,2060:`fr-BE`,3084:`fr-CA`,1036:`fr`,5132:`fr-LU`,6156:`fr-MC`,4108:`fr-CH`,1122:`fy`,1110:`gl`,1079:`ka`,3079:`de-AT`,1031:`de`,5127:`de-LI`,4103:`de-LU`,2055:`de-CH`,1032:`el`,1135:`kl`,1095:`gu`,1128:`ha`,1037:`he`,1081:`hi`,1038:`hu`,1039:`is`,1136:`ig`,1057:`id`,1117:`iu`,2141:`iu-Latn`,2108:`ga`,1076:`xh`,1077:`zu`,1040:`it`,2064:`it-CH`,1041:`ja`,1099:`kn`,1087:`kk`,1107:`km`,1158:`quc`,1159:`rw`,1089:`sw`,1111:`kok`,1042:`ko`,1088:`ky`,1108:`lo`,1062:`lv`,1063:`lt`,2094:`dsb`,1134:`lb`,1071:`mk`,2110:`ms-BN`,1086:`ms`,1100:`ml`,1082:`mt`,1153:`mi`,1146:`arn`,1102:`mr`,1148:`moh`,1104:`mn`,2128:`mn-CN`,1121:`ne`,1044:`nb`,2068:`nn`,1154:`oc`,1096:`or`,1123:`ps`,1045:`pl`,1046:`pt`,2070:`pt-PT`,1094:`pa`,1131:`qu-BO`,2155:`qu-EC`,3179:`qu`,1048:`ro`,1047:`rm`,1049:`ru`,9275:`smn`,4155:`smj-NO`,5179:`smj`,3131:`se-FI`,1083:`se`,2107:`se-SE`,8251:`sms`,6203:`sma-NO`,7227:`sms`,1103:`sa`,7194:`sr-Cyrl-BA`,3098:`sr`,6170:`sr-Latn-BA`,2074:`sr-Latn`,1132:`nso`,1074:`tn`,1115:`si`,1051:`sk`,1060:`sl`,11274:`es-AR`,16394:`es-BO`,13322:`es-CL`,9226:`es-CO`,5130:`es-CR`,7178:`es-DO`,12298:`es-EC`,17418:`es-SV`,4106:`es-GT`,18442:`es-HN`,2058:`es-MX`,19466:`es-NI`,6154:`es-PA`,15370:`es-PY`,10250:`es-PE`,20490:`es-PR`,3082:`es`,1034:`es`,21514:`es-US`,14346:`es-UY`,8202:`es-VE`,2077:`sv-FI`,1053:`sv`,1114:`syr`,1064:`tg`,2143:`tzm`,1097:`ta`,1092:`tt`,1098:`te`,1054:`th`,1105:`bo`,1055:`tr`,1090:`tk`,1152:`ug`,1058:`uk`,1070:`hsb`,1056:`ur`,2115:`uz-Cyrl`,1091:`uz`,1066:`vi`,1106:`cy`,1160:`wo`,1157:`sah`,1144:`ii`,1130:`yo`};function HV(e,t,n){switch(e){case 0:if(t===65535)return`und`;if(n)return n[t];break;case 1:return zV[t];case 3:return VV[t]}}var UV=`utf-16`,WV={0:`macintosh`,1:`x-mac-japanese`,2:`x-mac-chinesetrad`,3:`x-mac-korean`,6:`x-mac-greek`,7:`x-mac-cyrillic`,9:`x-mac-devanagai`,10:`x-mac-gurmukhi`,11:`x-mac-gujarati`,12:`x-mac-oriya`,13:`x-mac-bengali`,14:`x-mac-tamil`,15:`x-mac-telugu`,16:`x-mac-kannada`,17:`x-mac-malayalam`,18:`x-mac-sinhalese`,19:`x-mac-burmese`,20:`x-mac-khmer`,21:`x-mac-thai`,22:`x-mac-lao`,23:`x-mac-georgian`,24:`x-mac-armenian`,25:`x-mac-chinesesimp`,26:`x-mac-tibetan`,27:`x-mac-mongolian`,28:`x-mac-ethiopic`,29:`x-mac-ce`,30:`x-mac-vietnamese`,31:`x-mac-extarabic`},GV={15:`x-mac-icelandic`,17:`x-mac-turkish`,18:`x-mac-croatian`,24:`x-mac-ce`,25:`x-mac-ce`,26:`x-mac-ce`,27:`x-mac-ce`,28:`x-mac-ce`,30:`x-mac-icelandic`,37:`x-mac-romanian`,38:`x-mac-ce`,39:`x-mac-ce`,40:`x-mac-ce`,143:`x-mac-inuit`,146:`x-mac-gaelic`};function KV(e,t,n){switch(e){case 0:return UV;case 1:return GV[n]||WV[t];case 3:if(t===1||t===10)return UV;break}}function qV(e,t,n){for(var r={},i=new Z.Parser(e,t),a=i.parseUShort(),o=i.parseUShort(),s=i.offset+i.parseUShort(),c=0;c<o;c++){var l=i.parseUShort(),u=i.parseUShort(),d=i.parseUShort(),f=i.parseUShort(),p=RV[f]||f,m=i.parseUShort(),h=i.parseUShort(),g=HV(l,d,n),_=KV(l,u,d);if(_!==void 0&&g!==void 0){var v=void 0;if(v=_===UV?Fz.UTF16(e,s+h,m):Fz.MACSTRING(e,s+h,m,_),v){var y=r[p];y===void 0&&(y=r[p]={}),y[g]=v}}}return a===1&&i.parseUShort(),r}function JV(e){var t={};for(var n in e)t[e[n]]=parseInt(n);return t}function YV(e,t,n,r,i,a){return new Y.Record(`NameRecord`,[{name:`platformID`,type:`USHORT`,value:e},{name:`encodingID`,type:`USHORT`,value:t},{name:`languageID`,type:`USHORT`,value:n},{name:`nameID`,type:`USHORT`,value:r},{name:`length`,type:`USHORT`,value:i},{name:`offset`,type:`USHORT`,value:a}])}function XV(e,t){var n=e.length,r=t.length-n+1;loop:for(var i=0;i<r;i++)for(;i<r;i++){for(var a=0;a<n;a++)if(t[i+a]!==e[a])continue loop;return i}return-1}function ZV(e,t){var n=XV(e,t);if(n<0){n=t.length;for(var r=0,i=e.length;r<i;++r)t.push(e[r])}return n}function QV(e,t){var n,r=[],i={},a=JV(RV);for(var o in e){var s=a[o];if(s===void 0&&(s=o),n=parseInt(s),isNaN(n))throw Error(`Name table entry "`+o+`" does not exist, see nameTableNames for complete list.`);i[n]=e[o],r.push(n)}for(var c=JV(zV),l=JV(VV),u=[],d=[],f=0;f<r.length;f++){n=r[f];var p=i[n];for(var m in p){var h=p[m],g=1,_=c[m],v=BV[_],y=KV(g,v,_),b=q.MACSTRING(h,y);b===void 0&&(g=0,_=t.indexOf(m),_<0&&(_=t.length,t.push(m)),v=4,b=q.UTF16(h));var x=ZV(b,d);u.push(YV(g,v,_,n,b.length,x));var S=l[m];if(S!==void 0){var C=q.UTF16(h),w=ZV(C,d);u.push(YV(3,1,S,n,C.length,w))}}}u.sort(function(e,t){return e.platformID-t.platformID||e.encodingID-t.encodingID||e.languageID-t.languageID||e.nameID-t.nameID});for(var ee=new Y.Table(`name`,[{name:`format`,type:`USHORT`,value:0},{name:`count`,type:`USHORT`,value:u.length},{name:`stringOffset`,type:`USHORT`,value:6+u.length*12}]),te=0;te<u.length;te++)ee.fields.push({name:`record_`+te,type:`RECORD`,value:u[te]});return ee.fields.push({name:`strings`,type:`LITERAL`,value:d}),ee}var $V={parse:qV,make:QV},eH=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];function tH(e){for(var t=0;t<eH.length;t+=1){var n=eH[t];if(e>=n.begin&&e<n.end)return t}return-1}function nH(e,t){var n={},r=new Z.Parser(e,t);n.version=r.parseUShort(),n.xAvgCharWidth=r.parseShort(),n.usWeightClass=r.parseUShort(),n.usWidthClass=r.parseUShort(),n.fsType=r.parseUShort(),n.ySubscriptXSize=r.parseShort(),n.ySubscriptYSize=r.parseShort(),n.ySubscriptXOffset=r.parseShort(),n.ySubscriptYOffset=r.parseShort(),n.ySuperscriptXSize=r.parseShort(),n.ySuperscriptYSize=r.parseShort(),n.ySuperscriptXOffset=r.parseShort(),n.ySuperscriptYOffset=r.parseShort(),n.yStrikeoutSize=r.parseShort(),n.yStrikeoutPosition=r.parseShort(),n.sFamilyClass=r.parseShort(),n.panose=[];for(var i=0;i<10;i++)n.panose[i]=r.parseByte();return n.ulUnicodeRange1=r.parseULong(),n.ulUnicodeRange2=r.parseULong(),n.ulUnicodeRange3=r.parseULong(),n.ulUnicodeRange4=r.parseULong(),n.achVendID=String.fromCharCode(r.parseByte(),r.parseByte(),r.parseByte(),r.parseByte()),n.fsSelection=r.parseUShort(),n.usFirstCharIndex=r.parseUShort(),n.usLastCharIndex=r.parseUShort(),n.sTypoAscender=r.parseShort(),n.sTypoDescender=r.parseShort(),n.sTypoLineGap=r.parseShort(),n.usWinAscent=r.parseUShort(),n.usWinDescent=r.parseUShort(),n.version>=1&&(n.ulCodePageRange1=r.parseULong(),n.ulCodePageRange2=r.parseULong()),n.version>=2&&(n.sxHeight=r.parseShort(),n.sCapHeight=r.parseShort(),n.usDefaultChar=r.parseUShort(),n.usBreakChar=r.parseUShort(),n.usMaxContent=r.parseUShort()),n}function rH(e){return new Y.Table(`OS/2`,[{name:`version`,type:`USHORT`,value:3},{name:`xAvgCharWidth`,type:`SHORT`,value:0},{name:`usWeightClass`,type:`USHORT`,value:0},{name:`usWidthClass`,type:`USHORT`,value:0},{name:`fsType`,type:`USHORT`,value:0},{name:`ySubscriptXSize`,type:`SHORT`,value:650},{name:`ySubscriptYSize`,type:`SHORT`,value:699},{name:`ySubscriptXOffset`,type:`SHORT`,value:0},{name:`ySubscriptYOffset`,type:`SHORT`,value:140},{name:`ySuperscriptXSize`,type:`SHORT`,value:650},{name:`ySuperscriptYSize`,type:`SHORT`,value:699},{name:`ySuperscriptXOffset`,type:`SHORT`,value:0},{name:`ySuperscriptYOffset`,type:`SHORT`,value:479},{name:`yStrikeoutSize`,type:`SHORT`,value:49},{name:`yStrikeoutPosition`,type:`SHORT`,value:258},{name:`sFamilyClass`,type:`SHORT`,value:0},{name:`bFamilyType`,type:`BYTE`,value:0},{name:`bSerifStyle`,type:`BYTE`,value:0},{name:`bWeight`,type:`BYTE`,value:0},{name:`bProportion`,type:`BYTE`,value:0},{name:`bContrast`,type:`BYTE`,value:0},{name:`bStrokeVariation`,type:`BYTE`,value:0},{name:`bArmStyle`,type:`BYTE`,value:0},{name:`bLetterform`,type:`BYTE`,value:0},{name:`bMidline`,type:`BYTE`,value:0},{name:`bXHeight`,type:`BYTE`,value:0},{name:`ulUnicodeRange1`,type:`ULONG`,value:0},{name:`ulUnicodeRange2`,type:`ULONG`,value:0},{name:`ulUnicodeRange3`,type:`ULONG`,value:0},{name:`ulUnicodeRange4`,type:`ULONG`,value:0},{name:`achVendID`,type:`CHARARRAY`,value:`XXXX`},{name:`fsSelection`,type:`USHORT`,value:0},{name:`usFirstCharIndex`,type:`USHORT`,value:0},{name:`usLastCharIndex`,type:`USHORT`,value:0},{name:`sTypoAscender`,type:`SHORT`,value:0},{name:`sTypoDescender`,type:`SHORT`,value:0},{name:`sTypoLineGap`,type:`SHORT`,value:0},{name:`usWinAscent`,type:`USHORT`,value:0},{name:`usWinDescent`,type:`USHORT`,value:0},{name:`ulCodePageRange1`,type:`ULONG`,value:0},{name:`ulCodePageRange2`,type:`ULONG`,value:0},{name:`sxHeight`,type:`SHORT`,value:0},{name:`sCapHeight`,type:`SHORT`,value:0},{name:`usDefaultChar`,type:`USHORT`,value:0},{name:`usBreakChar`,type:`USHORT`,value:0},{name:`usMaxContext`,type:`USHORT`,value:0}],e)}var iH={parse:nH,make:rH,unicodeRanges:eH,getUnicodeRange:tH};function aH(e,t){var n={},r=new Z.Parser(e,t);switch(n.version=r.parseVersion(),n.italicAngle=r.parseFixed(),n.underlinePosition=r.parseShort(),n.underlineThickness=r.parseShort(),n.isFixedPitch=r.parseULong(),n.minMemType42=r.parseULong(),n.maxMemType42=r.parseULong(),n.minMemType1=r.parseULong(),n.maxMemType1=r.parseULong(),n.version){case 1:n.names=xB.slice();break;case 2:n.numberOfGlyphs=r.parseUShort(),n.glyphNameIndex=Array(n.numberOfGlyphs);for(var i=0;i<n.numberOfGlyphs;i++)n.glyphNameIndex[i]=r.parseUShort();n.names=[];for(var a=0;a<n.numberOfGlyphs;a++)if(n.glyphNameIndex[a]>=xB.length){var o=r.parseChar();n.names.push(r.parseString(o))}break;case 2.5:n.numberOfGlyphs=r.parseUShort(),n.offset=Array(n.numberOfGlyphs);for(var s=0;s<n.numberOfGlyphs;s++)n.offset[s]=r.parseChar();break}return n}function oH(){return new Y.Table(`post`,[{name:`version`,type:`FIXED`,value:196608},{name:`italicAngle`,type:`FIXED`,value:0},{name:`underlinePosition`,type:`FWORD`,value:0},{name:`underlineThickness`,type:`FWORD`,value:0},{name:`isFixedPitch`,type:`ULONG`,value:0},{name:`minMemType42`,type:`ULONG`,value:0},{name:`maxMemType42`,type:`ULONG`,value:0},{name:`minMemType1`,type:`ULONG`,value:0},{name:`maxMemType1`,type:`ULONG`,value:0}])}var sH={parse:aH,make:oH},cH=Array(9);cH[1]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{substFormat:1,coverage:this.parsePointer(X.coverage),deltaGlyphId:this.parseUShort()};if(t===2)return{substFormat:2,coverage:this.parsePointer(X.coverage),substitute:this.parseOffset16List()};K.assert(!1,`0x`+e.toString(16)+`: lookup type 1 format must be 1 or 2.`)},cH[2]=function(){var e=this.parseUShort();return K.argument(e===1,`GSUB Multiple Substitution Subtable identifier-format must be 1`),{substFormat:e,coverage:this.parsePointer(X.coverage),sequences:this.parseListOfLists()}},cH[3]=function(){var e=this.parseUShort();return K.argument(e===1,`GSUB Alternate Substitution Subtable identifier-format must be 1`),{substFormat:e,coverage:this.parsePointer(X.coverage),alternateSets:this.parseListOfLists()}},cH[4]=function(){var e=this.parseUShort();return K.argument(e===1,`GSUB ligature table identifier-format must be 1`),{substFormat:e,coverage:this.parsePointer(X.coverage),ligatureSets:this.parseListOfLists(function(){return{ligGlyph:this.parseUShort(),components:this.parseUShortList(this.parseUShort()-1)}})}};var lH={sequenceIndex:X.uShort,lookupListIndex:X.uShort};cH[5]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{substFormat:t,coverage:this.parsePointer(X.coverage),ruleSets:this.parseListOfLists(function(){var e=this.parseUShort(),t=this.parseUShort();return{input:this.parseUShortList(e-1),lookupRecords:this.parseRecordList(t,lH)}})};if(t===2)return{substFormat:t,coverage:this.parsePointer(X.coverage),classDef:this.parsePointer(X.classDef),classSets:this.parseListOfLists(function(){var e=this.parseUShort(),t=this.parseUShort();return{classes:this.parseUShortList(e-1),lookupRecords:this.parseRecordList(t,lH)}})};if(t===3){var n=this.parseUShort(),r=this.parseUShort();return{substFormat:t,coverages:this.parseList(n,X.pointer(X.coverage)),lookupRecords:this.parseRecordList(r,lH)}}K.assert(!1,`0x`+e.toString(16)+`: lookup type 5 format must be 1, 2 or 3.`)},cH[6]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{substFormat:1,coverage:this.parsePointer(X.coverage),chainRuleSets:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(lH)}})};if(t===2)return{substFormat:2,coverage:this.parsePointer(X.coverage),backtrackClassDef:this.parsePointer(X.classDef),inputClassDef:this.parsePointer(X.classDef),lookaheadClassDef:this.parsePointer(X.classDef),chainClassSet:this.parseListOfLists(function(){return{backtrack:this.parseUShortList(),input:this.parseUShortList(this.parseShort()-1),lookahead:this.parseUShortList(),lookupRecords:this.parseRecordList(lH)}})};if(t===3)return{substFormat:3,backtrackCoverage:this.parseList(X.pointer(X.coverage)),inputCoverage:this.parseList(X.pointer(X.coverage)),lookaheadCoverage:this.parseList(X.pointer(X.coverage)),lookupRecords:this.parseRecordList(lH)};K.assert(!1,`0x`+e.toString(16)+`: lookup type 6 format must be 1, 2 or 3.`)},cH[7]=function(){var e=this.parseUShort();K.argument(e===1,`GSUB Extension Substitution subtable identifier-format must be 1`);var t=this.parseUShort(),n=new X(this.data,this.offset+this.parseULong());return{substFormat:1,lookupType:t,extension:cH[t].call(n)}},cH[8]=function(){var e=this.parseUShort();return K.argument(e===1,`GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1`),{substFormat:e,coverage:this.parsePointer(X.coverage),backtrackCoverage:this.parseList(X.pointer(X.coverage)),lookaheadCoverage:this.parseList(X.pointer(X.coverage)),substitutes:this.parseUShortList()}};function uH(e,t){t||=0;var n=new X(e,t),r=n.parseVersion(1);return K.argument(r===1||r===1.1,`Unsupported GSUB table version.`),r===1?{version:r,scripts:n.parseScriptList(),features:n.parseFeatureList(),lookups:n.parseLookupList(cH)}:{version:r,scripts:n.parseScriptList(),features:n.parseFeatureList(),lookups:n.parseLookupList(cH),variations:n.parseFeatureVariationsList()}}var dH=Array(9);dH[1]=function(e){return e.substFormat===1?new Y.Table(`substitutionTable`,[{name:`substFormat`,type:`USHORT`,value:1},{name:`coverage`,type:`TABLE`,value:new Y.Coverage(e.coverage)},{name:`deltaGlyphID`,type:`USHORT`,value:e.deltaGlyphId}]):new Y.Table(`substitutionTable`,[{name:`substFormat`,type:`USHORT`,value:2},{name:`coverage`,type:`TABLE`,value:new Y.Coverage(e.coverage)}].concat(Y.ushortList(`substitute`,e.substitute)))},dH[2]=function(e){return K.assert(e.substFormat===1,`Lookup type 2 substFormat must be 1.`),new Y.Table(`substitutionTable`,[{name:`substFormat`,type:`USHORT`,value:1},{name:`coverage`,type:`TABLE`,value:new Y.Coverage(e.coverage)}].concat(Y.tableList(`seqSet`,e.sequences,function(e){return new Y.Table(`sequenceSetTable`,Y.ushortList(`sequence`,e))})))},dH[3]=function(e){return K.assert(e.substFormat===1,`Lookup type 3 substFormat must be 1.`),new Y.Table(`substitutionTable`,[{name:`substFormat`,type:`USHORT`,value:1},{name:`coverage`,type:`TABLE`,value:new Y.Coverage(e.coverage)}].concat(Y.tableList(`altSet`,e.alternateSets,function(e){return new Y.Table(`alternateSetTable`,Y.ushortList(`alternate`,e))})))},dH[4]=function(e){return K.assert(e.substFormat===1,`Lookup type 4 substFormat must be 1.`),new Y.Table(`substitutionTable`,[{name:`substFormat`,type:`USHORT`,value:1},{name:`coverage`,type:`TABLE`,value:new Y.Coverage(e.coverage)}].concat(Y.tableList(`ligSet`,e.ligatureSets,function(e){return new Y.Table(`ligatureSetTable`,Y.tableList(`ligature`,e,function(e){return new Y.Table(`ligatureTable`,[{name:`ligGlyph`,type:`USHORT`,value:e.ligGlyph}].concat(Y.ushortList(`component`,e.components,e.components.length+1)))}))})))},dH[6]=function(e){if(e.substFormat===1)return new Y.Table(`chainContextTable`,[{name:`substFormat`,type:`USHORT`,value:e.substFormat},{name:`coverage`,type:`TABLE`,value:new Y.Coverage(e.coverage)}].concat(Y.tableList(`chainRuleSet`,e.chainRuleSets,function(e){return new Y.Table(`chainRuleSetTable`,Y.tableList(`chainRule`,e,function(e){var t=Y.ushortList(`backtrackGlyph`,e.backtrack,e.backtrack.length).concat(Y.ushortList(`inputGlyph`,e.input,e.input.length+1)).concat(Y.ushortList(`lookaheadGlyph`,e.lookahead,e.lookahead.length)).concat(Y.ushortList(`substitution`,[],e.lookupRecords.length));return e.lookupRecords.forEach(function(e,n){t=t.concat({name:`sequenceIndex`+n,type:`USHORT`,value:e.sequenceIndex}).concat({name:`lookupListIndex`+n,type:`USHORT`,value:e.lookupListIndex})}),new Y.Table(`chainRuleTable`,t)}))})));if(e.substFormat===2)K.assert(!1,`lookup type 6 format 2 is not yet supported.`);else if(e.substFormat===3){var t=[{name:`substFormat`,type:`USHORT`,value:e.substFormat}];return t.push({name:`backtrackGlyphCount`,type:`USHORT`,value:e.backtrackCoverage.length}),e.backtrackCoverage.forEach(function(e,n){t.push({name:`backtrackCoverage`+n,type:`TABLE`,value:new Y.Coverage(e)})}),t.push({name:`inputGlyphCount`,type:`USHORT`,value:e.inputCoverage.length}),e.inputCoverage.forEach(function(e,n){t.push({name:`inputCoverage`+n,type:`TABLE`,value:new Y.Coverage(e)})}),t.push({name:`lookaheadGlyphCount`,type:`USHORT`,value:e.lookaheadCoverage.length}),e.lookaheadCoverage.forEach(function(e,n){t.push({name:`lookaheadCoverage`+n,type:`TABLE`,value:new Y.Coverage(e)})}),t.push({name:`substitutionCount`,type:`USHORT`,value:e.lookupRecords.length}),e.lookupRecords.forEach(function(e,n){t=t.concat({name:`sequenceIndex`+n,type:`USHORT`,value:e.sequenceIndex}).concat({name:`lookupListIndex`+n,type:`USHORT`,value:e.lookupListIndex})}),new Y.Table(`chainContextTable`,t)}K.assert(!1,`lookup type 6 format must be 1, 2 or 3.`)};function fH(e){return new Y.Table(`GSUB`,[{name:`version`,type:`ULONG`,value:65536},{name:`scripts`,type:`TABLE`,value:new Y.ScriptList(e.scripts)},{name:`features`,type:`TABLE`,value:new Y.FeatureList(e.features)},{name:`lookups`,type:`TABLE`,value:new Y.LookupList(e.lookups,dH)}])}var pH={parse:uH,make:fH};function mH(e,t){var n=new Z.Parser(e,t),r=n.parseULong();K.argument(r===1,`Unsupported META table version.`),n.parseULong(),n.parseULong();for(var i=n.parseULong(),a={},o=0;o<i;o++){var s=n.parseTag(),c=n.parseULong(),l=n.parseULong();a[s]=Fz.UTF8(e,t+c,l)}return a}function hH(e){var t=Object.keys(e).length,n=``,r=16+t*12,i=new Y.Table(`meta`,[{name:`version`,type:`ULONG`,value:1},{name:`flags`,type:`ULONG`,value:0},{name:`offset`,type:`ULONG`,value:r},{name:`numTags`,type:`ULONG`,value:t}]);for(var a in e){var o=n.length;n+=e[a],i.fields.push({name:`tag `+a,type:`TAG`,value:a}),i.fields.push({name:`offset `+a,type:`ULONG`,value:r+o}),i.fields.push({name:`length `+a,type:`ULONG`,value:e[a].length})}return i.fields.push({name:`stringPool`,type:`CHARARRAY`,value:n}),i}var gH={parse:mH,make:hH};function _H(e){return Math.log(e)/Math.log(2)|0}function vH(e){for(;e.length%4!=0;)e.push(0);for(var t=0,n=0;n<e.length;n+=4)t+=(e[n]<<24)+(e[n+1]<<16)+(e[n+2]<<8)+e[n+3];return t%=2**32,t}function yH(e,t,n,r){return new Y.Record(`Table Record`,[{name:`tag`,type:`TAG`,value:e===void 0?``:e},{name:`checkSum`,type:`ULONG`,value:t===void 0?0:t},{name:`offset`,type:`ULONG`,value:n===void 0?0:n},{name:`length`,type:`ULONG`,value:r===void 0?0:r}])}function bH(e){var t=new Y.Table(`sfnt`,[{name:`version`,type:`TAG`,value:`OTTO`},{name:`numTables`,type:`USHORT`,value:0},{name:`searchRange`,type:`USHORT`,value:0},{name:`entrySelector`,type:`USHORT`,value:0},{name:`rangeShift`,type:`USHORT`,value:0}]);t.tables=e,t.numTables=e.length;var n=2**_H(t.numTables);t.searchRange=16*n,t.entrySelector=_H(n),t.rangeShift=t.numTables*16-t.searchRange;for(var r=[],i=[],a=t.sizeOf()+yH().sizeOf()*t.numTables;a%4!=0;)a+=1,i.push({name:`padding`,type:`BYTE`,value:0});for(var o=0;o<e.length;o+=1){var s=e[o];K.argument(s.tableName.length===4,`Table name`+s.tableName+` is invalid.`);var c=s.sizeOf(),l=yH(s.tableName,vH(s.encode()),a,c);for(r.push({name:l.tag+` Table Record`,type:`RECORD`,value:l}),i.push({name:s.tableName+` table`,type:`RECORD`,value:s}),a+=c,K.argument(!isNaN(a),`Something went wrong calculating the offset.`);a%4!=0;)a+=1,i.push({name:`padding`,type:`BYTE`,value:0})}return r.sort(function(e,t){return e.value.tag>t.value.tag?1:-1}),t.fields=t.fields.concat(r),t.fields=t.fields.concat(i),t}function xH(e,t,n){for(var r=0;r<t.length;r+=1){var i=e.charToGlyphIndex(t[r]);if(i>0)return e.glyphs.get(i).getMetrics()}return n}function SH(e){for(var t=0,n=0;n<e.length;n+=1)t+=e[n];return t/e.length}function CH(e){for(var t=[],n=[],r=[],i=[],a=[],o=[],s=[],c,l=0,u=0,d=0,f=0,p=0,m=0;m<e.glyphs.length;m+=1){var h=e.glyphs.get(m),g=h.unicode|0;if(isNaN(h.advanceWidth))throw Error(`Glyph `+h.name+` (`+m+`): advanceWidth is not a number.`);(c>g||c===void 0)&&g>0&&(c=g),l<g&&(l=g);var _=iH.getUnicodeRange(g);if(_<32)u|=1<<_;else if(_<64)d|=1<<_-32;else if(_<96)f|=1<<_-64;else if(_<123)p|=1<<_-96;else throw Error(`Unicode ranges bits > 123 are reserved for internal usage`);if(h.name!==`.notdef`){var v=h.getMetrics();t.push(v.xMin),n.push(v.yMin),r.push(v.xMax),i.push(v.yMax),o.push(v.leftSideBearing),s.push(v.rightSideBearing),a.push(h.advanceWidth)}}var y={xMin:Math.min.apply(null,t),yMin:Math.min.apply(null,n),xMax:Math.max.apply(null,r),yMax:Math.max.apply(null,i),advanceWidthMax:Math.max.apply(null,a),advanceWidthAvg:SH(a),minLeftSideBearing:Math.min.apply(null,o),maxLeftSideBearing:Math.max.apply(null,o),minRightSideBearing:Math.min.apply(null,s)};y.ascender=e.ascender,y.descender=e.descender;var b=CV.make({flags:3,unitsPerEm:e.unitsPerEm,xMin:y.xMin,yMin:y.yMin,xMax:y.xMax,yMax:y.yMax,lowestRecPPEM:3,createdTimestamp:e.createdTimestamp}),x=EV.make({ascender:y.ascender,descender:y.descender,advanceWidthMax:y.advanceWidthMax,minLeftSideBearing:y.minLeftSideBearing,minRightSideBearing:y.minRightSideBearing,xMaxExtent:y.maxLeftSideBearing+(y.xMax-y.xMin),numberOfHMetrics:e.glyphs.length}),S=LV.make(e.glyphs.length),C=iH.make(Object.assign({xAvgCharWidth:Math.round(y.advanceWidthAvg),usFirstCharIndex:c,usLastCharIndex:l,ulUnicodeRange1:u,ulUnicodeRange2:d,ulUnicodeRange3:f,ulUnicodeRange4:p,sTypoAscender:y.ascender,sTypoDescender:y.descender,sTypoLineGap:0,usWinAscent:y.yMax,usWinDescent:Math.abs(y.yMin),ulCodePageRange1:1,sxHeight:xH(e,`xyvw`,{yMax:Math.round(y.ascender/2)}).yMax,sCapHeight:xH(e,`HIKLEFJMNTZBDPRAGOQSUVWXY`,y).yMax,usDefaultChar:e.hasChar(` `)?32:0,usBreakChar:e.hasChar(` `)?32:0},e.tables.os2)),w=jV.make(e.glyphs),ee=_B.make(e.glyphs),te=e.getEnglishName(`fontFamily`),ne=e.getEnglishName(`fontSubfamily`),re=te+` `+ne,ie=e.getEnglishName(`postScriptName`);ie||=te.replace(/\s/g,``)+`-`+ne;var ae={};for(var oe in e.names)ae[oe]=e.names[oe];ae.uniqueID||={en:e.getEnglishName(`manufacturer`)+`:`+re},ae.postScriptName||={en:ie},ae.preferredFamily||=e.names.fontFamily,ae.preferredSubfamily||=e.names.fontSubfamily;var se=[],ce=$V.make(ae,se),le=se.length>0?PV.make(se):void 0,ue=sH.make(),de=bV.make(e.glyphs,{version:e.getEnglishName(`version`),fullName:re,familyName:te,weightName:ne,postScriptName:ie,unitsPerEm:e.unitsPerEm,fontBBox:[0,y.yMin,y.ascender,y.advanceWidthMax]}),fe=e.metas&&Object.keys(e.metas).length>0?gH.make(e.metas):void 0,pe=[b,x,S,C,ce,ee,ue,de,w];le&&pe.push(le),e.tables.gsub&&pe.push(pH.make(e.tables.gsub)),fe&&pe.push(fe);for(var me=bH(pe),he=vH(me.encode()),ge=me.fields,_e=!1,ve=0;ve<ge.length;ve+=1)if(ge[ve].name===`head table`){ge[ve].value.checkSumAdjustment=2981146554-he,_e=!0;break}if(!_e)throw Error(`Could not find head table with checkSum to adjust.`);return me}var wH={make:bH,fontToTable:CH,computeCheckSum:vH};function TH(e,t){for(var n=0,r=e.length-1;n<=r;){var i=n+r>>>1,a=e[i].tag;if(a===t)return i;a<t?n=i+1:r=i-1}return-n-1}function EH(e,t){for(var n=0,r=e.length-1;n<=r;){var i=n+r>>>1,a=e[i];if(a===t)return i;a<t?n=i+1:r=i-1}return-n-1}function DH(e,t){for(var n,r=0,i=e.length-1;r<=i;){var a=r+i>>>1;n=e[a];var o=n.start;if(o===t)return n;o<t?r=a+1:i=a-1}if(r>0)return n=e[r-1],t>n.end?0:n}function OH(e,t){this.font=e,this.tableName=t}OH.prototype={searchTag:TH,binSearch:EH,getTable:function(e){var t=this.font.tables[this.tableName];return!t&&e&&(t=this.font.tables[this.tableName]=this.createDefaultTable()),t},getScriptNames:function(){var e=this.getTable();return e?e.scripts.map(function(e){return e.tag}):[]},getDefaultScriptName:function(){var e=this.getTable();if(e){for(var t=!1,n=0;n<e.scripts.length;n++){var r=e.scripts[n].tag;if(r===`DFLT`)return r;r===`latn`&&(t=!0)}if(t)return`latn`}},getScriptTable:function(e,t){var n=this.getTable(t);if(n){e||=`DFLT`;var r=n.scripts,i=TH(n.scripts,e);if(i>=0)return r[i].script;if(t){var a={tag:e,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}};return r.splice(-1-i,0,a),a.script}}},getLangSysTable:function(e,t,n){var r=this.getScriptTable(e,n);if(r){if(!t||t===`dflt`||t===`DFLT`)return r.defaultLangSys;var i=TH(r.langSysRecords,t);if(i>=0)return r.langSysRecords[i].langSys;if(n){var a={tag:t,langSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]}};return r.langSysRecords.splice(-1-i,0,a),a.langSys}}},getFeatureTable:function(e,t,n,r){var i=this.getLangSysTable(e,t,r);if(i){for(var a,o=i.featureIndexes,s=this.font.tables[this.tableName].features,c=0;c<o.length;c++)if(a=s[o[c]],a.tag===n)return a.feature;if(r){var l=s.length;return K.assert(l===0||n>=s[l-1].tag,`Features must be added in alphabetical order.`),a={tag:n,feature:{params:0,lookupListIndexes:[]}},s.push(a),o.push(l),a.feature}}},getLookupTables:function(e,t,n,r,i){var a=this.getFeatureTable(e,t,n,i),o=[];if(a){for(var s,c=a.lookupListIndexes,l=this.font.tables[this.tableName].lookups,u=0;u<c.length;u++)s=l[c[u]],s.lookupType===r&&o.push(s);if(o.length===0&&i){s={lookupType:r,lookupFlag:0,subtables:[],markFilteringSet:void 0};var d=l.length;return l.push(s),c.push(d),[s]}}return o},getGlyphClass:function(e,t){switch(e.format){case 1:return e.startGlyph<=t&&t<e.startGlyph+e.classes.length?e.classes[t-e.startGlyph]:0;case 2:var n=DH(e.ranges,t);return n?n.classId:0}},getCoverageIndex:function(e,t){switch(e.format){case 1:var n=EH(e.glyphs,t);return n>=0?n:-1;case 2:var r=DH(e.ranges,t);return r?r.index+t-r.start:-1}},expandCoverage:function(e){if(e.format===1)return e.glyphs;for(var t=[],n=e.ranges,r=0;r<n.length;r++)for(var i=n[r],a=i.start,o=i.end,s=a;s<=o;s++)t.push(s);return t}};function kH(e){OH.call(this,e,`gpos`)}kH.prototype=OH.prototype,kH.prototype.init=function(){var e=this.getDefaultScriptName();this.defaultKerningTables=this.getKerningTables(e)},kH.prototype.getKerningValue=function(e,t,n){for(var r=0;r<e.length;r++)for(var i=e[r].subtables,a=0;a<i.length;a++){var o=i[a],s=this.getCoverageIndex(o.coverage,t);if(!(s<0))switch(o.posFormat){case 1:for(var c=o.pairSets[s],l=0;l<c.length;l++){var u=c[l];if(u.secondGlyph===n)return u.value1&&u.value1.xAdvance||0}break;case 2:var d=this.getGlyphClass(o.classDef1,t),f=this.getGlyphClass(o.classDef2,n),p=o.classRecords[d][f];return p.value1&&p.value1.xAdvance||0}}return 0},kH.prototype.getKerningTables=function(e,t){if(this.font.tables.gpos)return this.getLookupTables(e,t,`kern`,2)};function AH(e){OH.call(this,e,`gsub`)}function jH(e,t){var n=e.length;if(n!==t.length)return!1;for(var r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0}function MH(e,t,n){for(var r=e.subtables,i=0;i<r.length;i++){var a=r[i];if(a.substFormat===t)return a}if(n)return r.push(n),n}AH.prototype=OH.prototype,AH.prototype.createDefaultTable=function(){return{version:1,scripts:[{tag:`DFLT`,script:{defaultLangSys:{reserved:0,reqFeatureIndex:65535,featureIndexes:[]},langSysRecords:[]}}],features:[],lookups:[]}},AH.prototype.getSingle=function(e,t,n){for(var r=[],i=this.getLookupTables(t,n,e,1),a=0;a<i.length;a++)for(var o=i[a].subtables,s=0;s<o.length;s++){var c=o[s],l=this.expandCoverage(c.coverage),u=void 0;if(c.substFormat===1){var d=c.deltaGlyphId;for(u=0;u<l.length;u++){var f=l[u];r.push({sub:f,by:f+d})}}else{var p=c.substitute;for(u=0;u<l.length;u++)r.push({sub:l[u],by:p[u]})}}return r},AH.prototype.getMultiple=function(e,t,n){for(var r=[],i=this.getLookupTables(t,n,e,2),a=0;a<i.length;a++)for(var o=i[a].subtables,s=0;s<o.length;s++){var c=o[s],l=this.expandCoverage(c.coverage),u=void 0;for(u=0;u<l.length;u++){var d=l[u],f=c.sequences[u];r.push({sub:d,by:f})}}return r},AH.prototype.getAlternates=function(e,t,n){for(var r=[],i=this.getLookupTables(t,n,e,3),a=0;a<i.length;a++)for(var o=i[a].subtables,s=0;s<o.length;s++)for(var c=o[s],l=this.expandCoverage(c.coverage),u=c.alternateSets,d=0;d<l.length;d++)r.push({sub:l[d],by:u[d]});return r},AH.prototype.getLigatures=function(e,t,n){for(var r=[],i=this.getLookupTables(t,n,e,4),a=0;a<i.length;a++)for(var o=i[a].subtables,s=0;s<o.length;s++)for(var c=o[s],l=this.expandCoverage(c.coverage),u=c.ligatureSets,d=0;d<l.length;d++)for(var f=l[d],p=u[d],m=0;m<p.length;m++){var h=p[m];r.push({sub:[f].concat(h.components),by:h.ligGlyph})}return r},AH.prototype.addSingle=function(e,t,n,r){var i=this.getLookupTables(n,r,e,1,!0)[0],a=MH(i,2,{substFormat:2,coverage:{format:1,glyphs:[]},substitute:[]});K.assert(a.coverage.format===1,`Single: unable to modify coverage table format `+a.coverage.format);var o=t.sub,s=this.binSearch(a.coverage.glyphs,o);s<0&&(s=-1-s,a.coverage.glyphs.splice(s,0,o),a.substitute.splice(s,0,0)),a.substitute[s]=t.by},AH.prototype.addMultiple=function(e,t,n,r){K.assert(t.by instanceof Array&&t.by.length>1,`Multiple: "by" must be an array of two or more ids`);var i=this.getLookupTables(n,r,e,2,!0)[0],a=MH(i,1,{substFormat:1,coverage:{format:1,glyphs:[]},sequences:[]});K.assert(a.coverage.format===1,`Multiple: unable to modify coverage table format `+a.coverage.format);var o=t.sub,s=this.binSearch(a.coverage.glyphs,o);s<0&&(s=-1-s,a.coverage.glyphs.splice(s,0,o),a.sequences.splice(s,0,0)),a.sequences[s]=t.by},AH.prototype.addAlternate=function(e,t,n,r){var i=this.getLookupTables(n,r,e,3,!0)[0],a=MH(i,1,{substFormat:1,coverage:{format:1,glyphs:[]},alternateSets:[]});K.assert(a.coverage.format===1,`Alternate: unable to modify coverage table format `+a.coverage.format);var o=t.sub,s=this.binSearch(a.coverage.glyphs,o);s<0&&(s=-1-s,a.coverage.glyphs.splice(s,0,o),a.alternateSets.splice(s,0,0)),a.alternateSets[s]=t.by},AH.prototype.addLigature=function(e,t,n,r){var i=this.getLookupTables(n,r,e,4,!0)[0],a=i.subtables[0];a||(a={substFormat:1,coverage:{format:1,glyphs:[]},ligatureSets:[]},i.subtables[0]=a),K.assert(a.coverage.format===1,`Ligature: unable to modify coverage table format `+a.coverage.format);var o=t.sub[0],s=t.sub.slice(1),c={ligGlyph:t.by,components:s},l=this.binSearch(a.coverage.glyphs,o);if(l>=0){for(var u=a.ligatureSets[l],d=0;d<u.length;d++)if(jH(u[d].components,s))return;u.push(c)}else l=-1-l,a.coverage.glyphs.splice(l,0,o),a.ligatureSets.splice(l,0,[c])},AH.prototype.getFeature=function(e,t,n){if(/ss\d\d/.test(e))return this.getSingle(e,t,n);switch(e){case`aalt`:case`salt`:return this.getSingle(e,t,n).concat(this.getAlternates(e,t,n));case`dlig`:case`liga`:case`rlig`:return this.getLigatures(e,t,n);case`ccmp`:return this.getMultiple(e,t,n).concat(this.getLigatures(e,t,n));case`stch`:return this.getMultiple(e,t,n)}},AH.prototype.add=function(e,t,n,r){if(/ss\d\d/.test(e))return this.addSingle(e,t,n,r);switch(e){case`aalt`:case`salt`:return typeof t.by==`number`?this.addSingle(e,t,n,r):this.addAlternate(e,t,n,r);case`dlig`:case`liga`:case`rlig`:return this.addLigature(e,t,n,r);case`ccmp`:return t.by instanceof Array?this.addMultiple(e,t,n,r):this.addLigature(e,t,n,r)}};function NH(){return typeof window<`u`}function PH(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),r=0;r<e.length;++r)n[r]=e[r];return t}function FH(e){for(var t=new Buffer(e.byteLength),n=new Uint8Array(e),r=0;r<t.length;++r)t[r]=n[r];return t}function IH(e,t){if(!e)throw t}function LH(e,t,n,r,i){var a;return(t&r)>0?(a=e.parseByte(),(t&i)===0&&(a=-a),a=n+a):a=(t&i)>0?n:n+e.parseShort(),a}function RH(e,t,n){var r=new Z.Parser(t,n);e.numberOfContours=r.parseShort(),e._xMin=r.parseShort(),e._yMin=r.parseShort(),e._xMax=r.parseShort(),e._yMax=r.parseShort();var i,a;if(e.numberOfContours>0){for(var o=e.endPointIndices=[],s=0;s<e.numberOfContours;s+=1)o.push(r.parseUShort());e.instructionLength=r.parseUShort(),e.instructions=[];for(var c=0;c<e.instructionLength;c+=1)e.instructions.push(r.parseByte());var l=o[o.length-1]+1;i=[];for(var u=0;u<l;u+=1)if(a=r.parseByte(),i.push(a),(a&8)>0)for(var d=r.parseByte(),f=0;f<d;f+=1)i.push(a),u+=1;if(K.argument(i.length===l,`Bad flags.`),o.length>0){var p=[],m;if(l>0){for(var h=0;h<l;h+=1)a=i[h],m={},m.onCurve=!!(a&1),m.lastPointOfContour=o.indexOf(h)>=0,p.push(m);for(var g=0,_=0;_<l;_+=1)a=i[_],m=p[_],m.x=LH(r,a,g,2,16),g=m.x;for(var v=0,y=0;y<l;y+=1)a=i[y],m=p[y],m.y=LH(r,a,v,4,32),v=m.y}e.points=p}else e.points=[]}else if(e.numberOfContours===0)e.points=[];else{e.isComposite=!0,e.points=[],e.components=[];for(var b=!0;b;){i=r.parseUShort();var x={glyphIndex:r.parseUShort(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(i&1)>0?(i&2)>0?(x.dx=r.parseShort(),x.dy=r.parseShort()):x.matchedPoints=[r.parseUShort(),r.parseUShort()]:(i&2)>0?(x.dx=r.parseChar(),x.dy=r.parseChar()):x.matchedPoints=[r.parseByte(),r.parseByte()],(i&8)>0?x.xScale=x.yScale=r.parseF2Dot14():(i&64)>0?(x.xScale=r.parseF2Dot14(),x.yScale=r.parseF2Dot14()):(i&128)>0&&(x.xScale=r.parseF2Dot14(),x.scale01=r.parseF2Dot14(),x.scale10=r.parseF2Dot14(),x.yScale=r.parseF2Dot14()),e.components.push(x),b=!!(i&32)}if(i&256){e.instructionLength=r.parseUShort(),e.instructions=[];for(var S=0;S<e.instructionLength;S+=1)e.instructions.push(r.parseByte())}}}function zH(e,t){for(var n=[],r=0;r<e.length;r+=1){var i=e[r],a={x:t.xScale*i.x+t.scale01*i.y+t.dx,y:t.scale10*i.x+t.yScale*i.y+t.dy,onCurve:i.onCurve,lastPointOfContour:i.lastPointOfContour};n.push(a)}return n}function BH(e){for(var t=[],n=[],r=0;r<e.length;r+=1){var i=e[r];n.push(i),i.lastPointOfContour&&(t.push(n),n=[])}return K.argument(n.length===0,`There are still points left in the current contour.`),t}function VH(e){var t=new Az;if(!e)return t;for(var n=BH(e),r=0;r<n.length;++r){var i=n[r],a=null,o=i[i.length-1],s=i[0];if(o.onCurve)t.moveTo(o.x,o.y);else if(s.onCurve)t.moveTo(s.x,s.y);else{var c={x:(o.x+s.x)*.5,y:(o.y+s.y)*.5};t.moveTo(c.x,c.y)}for(var l=0;l<i.length;++l)if(a=o,o=s,s=i[(l+1)%i.length],o.onCurve)t.lineTo(o.x,o.y);else{var u=s;a.onCurve||((o.x+a.x)*.5,(o.y+a.y)*.5),s.onCurve||(u={x:(o.x+s.x)*.5,y:(o.y+s.y)*.5}),t.quadraticCurveTo(o.x,o.y,u.x,u.y)}t.closePath()}return t}function HH(e,t){if(t.isComposite)for(var n=0;n<t.components.length;n+=1){var r=t.components[n],i=e.get(r.glyphIndex);if(i.getPath(),i.points){var a=void 0;if(r.matchedPoints===void 0)a=zH(i.points,r);else{if(r.matchedPoints[0]>t.points.length-1||r.matchedPoints[1]>i.points.length-1)throw Error(`Matched points out of range in `+t.name);var o=t.points[r.matchedPoints[0]],s=i.points[r.matchedPoints[1]],c={xScale:r.xScale,scale01:r.scale01,scale10:r.scale10,yScale:r.yScale,dx:0,dy:0};s=zH([s],c)[0],c.dx=o.x-s.x,c.dy=o.y-s.y,a=zH(i.points,c)}t.points=t.points.concat(a)}}return VH(t.points)}function UH(e,t,n,r){for(var i=new RB.GlyphSet(r),a=0;a<n.length-1;a+=1){var o=n[a];o===n[a+1]?i.push(a,RB.glyphLoader(r,a)):i.push(a,RB.ttfGlyphLoader(r,a,RH,e,t+o,HH))}return i}function WH(e,t,n,r){var i=new RB.GlyphSet(r);return r._push=function(a){var o=n[a];o===n[a+1]?i.push(a,RB.glyphLoader(r,a)):i.push(a,RB.ttfGlyphLoader(r,a,RH,e,t+o,HH))},i}function GH(e,t,n,r,i){return i.lowMemory?WH(e,t,n,r):UH(e,t,n,r)}var KH={getPath:VH,parse:GH},qH,JH,YH,XH;function ZH(e){this.font=e,this.getCommands=function(e){return KH.getPath(e).commands},this._fpgmState=this._prepState=void 0,this._errorState=0}function QH(e){return e}function $H(e){return Math.sign(e)*Math.round(Math.abs(e))}function eU(e){return Math.sign(e)*Math.round(Math.abs(e*2))/2}function tU(e){return Math.sign(e)*(Math.round(Math.abs(e)+.5)-.5)}function nU(e){return Math.sign(e)*Math.ceil(Math.abs(e))}function rU(e){return Math.sign(e)*Math.floor(Math.abs(e))}var iU=function(e){var t=this.srPeriod,n=this.srPhase,r=this.srThreshold,i=1;return e<0&&(e=-e,i=-1),e+=r-n,e=Math.trunc(e/t)*t,e+=n,e<0?n*i:e*i},aU={x:1,y:0,axis:`x`,distance:function(e,t,n,r){return(n?e.xo:e.x)-(r?t.xo:t.x)},interpolate:function(e,t,n,r){var i,a,o,s,c,l,u;if(!r||r===this){if(i=e.xo-t.xo,a=e.xo-n.xo,c=t.x-t.xo,l=n.x-n.xo,o=Math.abs(i),s=Math.abs(a),u=o+s,u===0){e.x=e.xo+(c+l)/2;return}e.x=e.xo+(c*s+l*o)/u;return}if(i=r.distance(e,t,!0,!0),a=r.distance(e,n,!0,!0),c=r.distance(t,t,!1,!0),l=r.distance(n,n,!1,!0),o=Math.abs(i),s=Math.abs(a),u=o+s,u===0){aU.setRelative(e,e,(c+l)/2,r,!0);return}aU.setRelative(e,e,(c*s+l*o)/u,r,!0)},normalSlope:-1/0,setRelative:function(e,t,n,r,i){if(!r||r===this){e.x=(i?t.xo:t.x)+n;return}var a=i?t.xo:t.x,o=i?t.yo:t.y,s=a+n*r.x,c=o+n*r.y;e.x=s+(e.y-c)/r.normalSlope},slope:0,touch:function(e){e.xTouched=!0},touched:function(e){return e.xTouched},untouch:function(e){e.xTouched=!1}},oU={x:0,y:1,axis:`y`,distance:function(e,t,n,r){return(n?e.yo:e.y)-(r?t.yo:t.y)},interpolate:function(e,t,n,r){var i,a,o,s,c,l,u;if(!r||r===this){if(i=e.yo-t.yo,a=e.yo-n.yo,c=t.y-t.yo,l=n.y-n.yo,o=Math.abs(i),s=Math.abs(a),u=o+s,u===0){e.y=e.yo+(c+l)/2;return}e.y=e.yo+(c*s+l*o)/u;return}if(i=r.distance(e,t,!0,!0),a=r.distance(e,n,!0,!0),c=r.distance(t,t,!1,!0),l=r.distance(n,n,!1,!0),o=Math.abs(i),s=Math.abs(a),u=o+s,u===0){oU.setRelative(e,e,(c+l)/2,r,!0);return}oU.setRelative(e,e,(c*s+l*o)/u,r,!0)},normalSlope:0,setRelative:function(e,t,n,r,i){if(!r||r===this){e.y=(i?t.yo:t.y)+n;return}var a=i?t.xo:t.x,o=i?t.yo:t.y,s=a+n*r.x;e.y=o+n*r.y+r.normalSlope*(e.x-s)},slope:1/0,touch:function(e){e.yTouched=!0},touched:function(e){return e.yTouched},untouch:function(e){e.yTouched=!1}};Object.freeze(aU),Object.freeze(oU);function sU(e,t){this.x=e,this.y=t,this.axis=void 0,this.slope=t/e,this.normalSlope=-e/t,Object.freeze(this)}sU.prototype.distance=function(e,t,n,r){return this.x*aU.distance(e,t,n,r)+this.y*oU.distance(e,t,n,r)},sU.prototype.interpolate=function(e,t,n,r){var i,a,o=r.distance(e,t,!0,!0),s=r.distance(e,n,!0,!0),c,l,u;if(i=r.distance(t,t,!1,!0),a=r.distance(n,n,!1,!0),c=Math.abs(o),l=Math.abs(s),u=c+l,u===0){this.setRelative(e,e,(i+a)/2,r,!0);return}this.setRelative(e,e,(i*l+a*c)/u,r,!0)},sU.prototype.setRelative=function(e,t,n,r,i){r||=this;var a=i?t.xo:t.x,o=i?t.yo:t.y,s=a+n*r.x,c=o+n*r.y,l=r.normalSlope,u=this.slope,d=e.x,f=e.y;e.x=(u*d-l*s+c-f)/(u-l),e.y=u*(e.x-d)+f},sU.prototype.touch=function(e){e.xTouched=!0,e.yTouched=!0};function cU(e,t){var n=Math.sqrt(e*e+t*t);return e/=n,t/=n,e===1&&t===0?aU:e===0&&t===1?oU:new sU(e,t)}function lU(e,t,n,r){this.x=this.xo=Math.round(e*64)/64,this.y=this.yo=Math.round(t*64)/64,this.lastPointOfContour=n,this.onCurve=r,this.prevPointOnContour=void 0,this.nextPointOnContour=void 0,this.xTouched=!1,this.yTouched=!1,Object.preventExtensions(this)}lU.prototype.nextTouched=function(e){for(var t=this.nextPointOnContour;!e.touched(t)&&t!==this;)t=t.nextPointOnContour;return t},lU.prototype.prevTouched=function(e){for(var t=this.prevPointOnContour;!e.touched(t)&&t!==this;)t=t.prevPointOnContour;return t};var uU=Object.freeze(new lU(0,0)),dU={cvCutIn:17/16,deltaBase:9,deltaShift:.125,loop:1,minDis:1,autoFlip:!0};function fU(e,t){switch(this.env=e,this.stack=[],this.prog=t,e){case`glyf`:this.zp0=this.zp1=this.zp2=1,this.rp0=this.rp1=this.rp2=0;case`prep`:this.fv=this.pv=this.dpv=aU,this.round=$H}}ZH.prototype.exec=function(e,t){if(typeof t!=`number`)throw Error(`Point size is not a number!`);if(!(this._errorState>2)){var n=this.font,r=this._prepState;if(!r||r.ppem!==t){var i=this._fpgmState;if(!i){fU.prototype=dU,i=this._fpgmState=new fU(`fpgm`,n.tables.fpgm),i.funcs=[],i.font=n,exports.DEBUG&&(console.log(`---EXEC FPGM---`),i.step=-1);try{JH(i)}catch(e){console.log(`Hinting error in FPGM:`+e),this._errorState=3;return}}fU.prototype=i,r=this._prepState=new fU(`prep`,n.tables.prep),r.ppem=t;var a=n.tables.cvt;if(a)for(var o=r.cvt=Array(a.length),s=t/n.unitsPerEm,c=0;c<a.length;c++)o[c]=a[c]*s;else r.cvt=[];exports.DEBUG&&(console.log(`---EXEC PREP---`),r.step=-1);try{JH(r)}catch(e){this._errorState<2&&console.log(`Hinting error in PREP:`+e),this._errorState=2}}if(!(this._errorState>1))try{return YH(e,r)}catch(e){this._errorState<1&&(console.log(`Hinting error:`+e),console.log(`Note: further hinting errors are silenced`)),this._errorState=1;return}}},YH=function(e,t){var n=t.ppem/t.font.unitsPerEm,r=n,i=e.components,a,o,s;if(fU.prototype=t,!i)s=new fU(`glyf`,e.instructions),exports.DEBUG&&(console.log(`---EXEC GLYPH---`),s.step=-1),XH(e,s,n,r),o=s.gZone;else{var c=t.font;o=[],a=[];for(var l=0;l<i.length;l++){var u=i[l],d=c.glyphs.get(u.glyphIndex);s=new fU(`glyf`,d.instructions),exports.DEBUG&&(console.log(`---EXEC COMP `+l+`---`),s.step=-1),XH(d,s,n,r);for(var f=Math.round(u.dx*n),p=Math.round(u.dy*r),m=s.gZone,h=s.contours,g=0;g<m.length;g++){var _=m[g];_.xTouched=_.yTouched=!1,_.xo=_.x+=f,_.yo=_.y+=p}var v=o.length;o.push.apply(o,m);for(var y=0;y<h.length;y++)a.push(h[y]+v)}e.instructions&&!s.inhibitGridFit&&(s=new fU(`glyf`,e.instructions),s.gZone=s.z0=s.z1=s.z2=o,s.contours=a,o.push(new lU(0,0),new lU(Math.round(e.advanceWidth*n),0)),exports.DEBUG&&(console.log(`---EXEC COMPOSITE---`),s.step=-1),JH(s),o.length-=2)}return o},XH=function(e,t,n,r){for(var i=e.points||[],a=i.length,o=t.gZone=t.z0=t.z1=t.z2=[],s=t.contours=[],c,l=0;l<a;l++)c=i[l],o[l]=new lU(c.x*n,c.y*r,c.lastPointOfContour,c.onCurve);for(var u,d,f=0;f<a;f++)c=o[f],u||(u=c,s.push(f)),c.lastPointOfContour?(c.nextPointOnContour=u,u.prevPointOnContour=c,u=void 0):(d=o[f+1],c.nextPointOnContour=d,d.prevPointOnContour=c);if(!t.inhibitGridFit){if(exports.DEBUG){console.log(`PROCESSING GLYPH`,t.stack);for(var p=0;p<a;p++)console.log(p,o[p].x,o[p].y)}if(o.push(new lU(0,0),new lU(Math.round(e.advanceWidth*n),0)),JH(t),o.length-=2,exports.DEBUG){console.log(`FINISHED GLYPH`,t.stack);for(var m=0;m<a;m++)console.log(m,o[m].x,o[m].y)}}},JH=function(e){var t=e.prog;if(t){var n=t.length,r;for(e.ip=0;e.ip<n;e.ip++){if(exports.DEBUG&&e.step++,r=qH[t[e.ip]],!r)throw Error(`unknown instruction: 0x`+Number(t[e.ip]).toString(16));r(e)}}};function pU(e){for(var t=e.tZone=Array(e.gZone.length),n=0;n<t.length;n++)t[n]=new lU(0,0)}function mU(e,t){var n=e.prog,r=e.ip,i=1,a;do if(a=n[++r],a===88)i++;else if(a===89)i--;else if(a===64)r+=n[r+1]+1;else if(a===65)r+=2*n[r+1]+1;else if(a>=176&&a<=183)r+=a-176+1;else if(a>=184&&a<=191)r+=(a-184+1)*2;else if(t&&i===1&&a===27)break;while(i>0);e.ip=r}function hU(e,t){exports.DEBUG&&console.log(t.step,`SVTCA[`+e.axis+`]`),t.fv=t.pv=t.dpv=e}function gU(e,t){exports.DEBUG&&console.log(t.step,`SPVTCA[`+e.axis+`]`),t.pv=t.dpv=e}function _U(e,t){exports.DEBUG&&console.log(t.step,`SFVTCA[`+e.axis+`]`),t.fv=e}function vU(e,t){var n=t.stack,r=n.pop(),i=n.pop(),a=t.z2[r],o=t.z1[i];exports.DEBUG&&console.log(`SPVTL[`+e+`]`,r,i);var s,c;e?(s=a.y-o.y,c=o.x-a.x):(s=o.x-a.x,c=o.y-a.y),t.pv=t.dpv=cU(s,c)}function yU(e,t){var n=t.stack,r=n.pop(),i=n.pop(),a=t.z2[r],o=t.z1[i];exports.DEBUG&&console.log(`SFVTL[`+e+`]`,r,i);var s,c;e?(s=a.y-o.y,c=o.x-a.x):(s=o.x-a.x,c=o.y-a.y),t.fv=cU(s,c)}function bU(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`SPVFS[]`,n,r),e.pv=e.dpv=cU(r,n)}function xU(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`SPVFS[]`,n,r),e.fv=cU(r,n)}function SU(e){var t=e.stack,n=e.pv;exports.DEBUG&&console.log(e.step,`GPV[]`),t.push(n.x*16384),t.push(n.y*16384)}function CU(e){var t=e.stack,n=e.fv;exports.DEBUG&&console.log(e.step,`GFV[]`),t.push(n.x*16384),t.push(n.y*16384)}function wU(e){e.fv=e.pv,exports.DEBUG&&console.log(e.step,`SFVTPV[]`)}function TU(e){var t=e.stack,n=t.pop(),r=t.pop(),i=t.pop(),a=t.pop(),o=t.pop(),s=e.z0,c=e.z1,l=s[n],u=s[r],d=c[i],f=c[a],p=e.z2[o];exports.DEBUG&&console.log(`ISECT[], `,n,r,i,a,o);var m=l.x,h=l.y,g=u.x,_=u.y,v=d.x,y=d.y,b=f.x,x=f.y,S=(m-g)*(y-x)-(h-_)*(v-b),C=m*_-h*g,w=v*x-y*b;p.x=(C*(v-b)-w*(m-g))/S,p.y=(C*(y-x)-w*(h-_))/S}function EU(e){e.rp0=e.stack.pop(),exports.DEBUG&&console.log(e.step,`SRP0[]`,e.rp0)}function DU(e){e.rp1=e.stack.pop(),exports.DEBUG&&console.log(e.step,`SRP1[]`,e.rp1)}function OU(e){e.rp2=e.stack.pop(),exports.DEBUG&&console.log(e.step,`SRP2[]`,e.rp2)}function kU(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,`SZP0[]`,t),e.zp0=t,t){case 0:e.tZone||pU(e),e.z0=e.tZone;break;case 1:e.z0=e.gZone;break;default:throw Error(`Invalid zone pointer`)}}function AU(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,`SZP1[]`,t),e.zp1=t,t){case 0:e.tZone||pU(e),e.z1=e.tZone;break;case 1:e.z1=e.gZone;break;default:throw Error(`Invalid zone pointer`)}}function jU(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,`SZP2[]`,t),e.zp2=t,t){case 0:e.tZone||pU(e),e.z2=e.tZone;break;case 1:e.z2=e.gZone;break;default:throw Error(`Invalid zone pointer`)}}function MU(e){var t=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,`SZPS[]`,t),e.zp0=e.zp1=e.zp2=t,t){case 0:e.tZone||pU(e),e.z0=e.z1=e.z2=e.tZone;break;case 1:e.z0=e.z1=e.z2=e.gZone;break;default:throw Error(`Invalid zone pointer`)}}function NU(e){e.loop=e.stack.pop(),exports.DEBUG&&console.log(e.step,`SLOOP[]`,e.loop)}function PU(e){exports.DEBUG&&console.log(e.step,`RTG[]`),e.round=$H}function FU(e){exports.DEBUG&&console.log(e.step,`RTHG[]`),e.round=tU}function IU(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`SMD[]`,t),e.minDis=t/64}function LU(e){exports.DEBUG&&console.log(e.step,`ELSE[]`),mU(e,!1)}function RU(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`JMPR[]`,t),e.ip+=t-1}function zU(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`SCVTCI[]`,t),e.cvCutIn=t/64}function BU(e){var t=e.stack;exports.DEBUG&&console.log(e.step,`DUP[]`),t.push(t[t.length-1])}function VU(e){exports.DEBUG&&console.log(e.step,`POP[]`),e.stack.pop()}function HU(e){exports.DEBUG&&console.log(e.step,`CLEAR[]`),e.stack.length=0}function UU(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`SWAP[]`),t.push(n),t.push(r)}function WU(e){var t=e.stack;exports.DEBUG&&console.log(e.step,`DEPTH[]`),t.push(t.length)}function GU(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`LOOPCALL[]`,n,r);var i=e.ip,a=e.prog;e.prog=e.funcs[n];for(var o=0;o<r;o++)JH(e),exports.DEBUG&&console.log(++e.step,o+1<r?`next loopcall`:`done loopcall`,o);e.ip=i,e.prog=a}function KU(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`CALL[]`,t);var n=e.ip,r=e.prog;e.prog=e.funcs[t],JH(e),e.ip=n,e.prog=r,exports.DEBUG&&console.log(++e.step,`returning from`,t)}function qU(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`CINDEX[]`,n),t.push(t[t.length-n])}function JU(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`MINDEX[]`,n),t.push(t.splice(t.length-n,1)[0])}function YU(e){if(e.env!==`fpgm`)throw Error(`FDEF not allowed here`);var t=e.stack,n=e.prog,r=e.ip,i=t.pop(),a=r;for(exports.DEBUG&&console.log(e.step,`FDEF[]`,i);n[++r]!==45;);e.ip=r,e.funcs[i]=n.slice(a+1,r)}function XU(e,t){var n=t.stack.pop(),r=t.z0[n],i=t.fv,a=t.pv;exports.DEBUG&&console.log(t.step,`MDAP[`+e+`]`,n);var o=a.distance(r,uU);e&&(o=t.round(o)),i.setRelative(r,uU,o,a),i.touch(r),t.rp0=t.rp1=n}function ZU(e,t){var n=t.z2,r=n.length-2,i,a,o;exports.DEBUG&&console.log(t.step,`IUP[`+e.axis+`]`);for(var s=0;s<r;s++)i=n[s],!e.touched(i)&&(a=i.prevTouched(e),a!==i&&(o=i.nextTouched(e),a===o&&e.setRelative(i,i,e.distance(a,a,!1,!0),e,!0),e.interpolate(i,a,o,e)))}function QU(e,t){for(var n=t.stack,r=e?t.rp1:t.rp2,i=(e?t.z0:t.z1)[r],a=t.fv,o=t.pv,s=t.loop,c=t.z2;s--;){var l=n.pop(),u=c[l],d=o.distance(i,i,!1,!0);a.setRelative(u,u,d,o),a.touch(u),exports.DEBUG&&console.log(t.step,(t.loop>1?`loop `+(t.loop-s)+`: `:``)+`SHP[`+(e?`rp1`:`rp2`)+`]`,l)}t.loop=1}function $U(e,t){var n=t.stack,r=e?t.rp1:t.rp2,i=(e?t.z0:t.z1)[r],a=t.fv,o=t.pv,s=n.pop(),c=t.z2[t.contours[s]],l=c;exports.DEBUG&&console.log(t.step,`SHC[`+e+`]`,s);var u=o.distance(i,i,!1,!0);do l!==i&&a.setRelative(l,l,u,o),l=l.nextPointOnContour;while(l!==c)}function eW(e,t){var n=t.stack,r=e?t.rp1:t.rp2,i=(e?t.z0:t.z1)[r],a=t.fv,o=t.pv,s=n.pop();exports.DEBUG&&console.log(t.step,`SHZ[`+e+`]`,s);var c;switch(s){case 0:c=t.tZone;break;case 1:c=t.gZone;break;default:throw Error(`Invalid zone`)}for(var l,u=o.distance(i,i,!1,!0),d=c.length-2,f=0;f<d;f++)l=c[f],a.setRelative(l,l,u,o)}function tW(e){for(var t=e.stack,n=e.loop,r=e.fv,i=t.pop()/64,a=e.z2;n--;){var o=t.pop(),s=a[o];exports.DEBUG&&console.log(e.step,(e.loop>1?`loop `+(e.loop-n)+`: `:``)+`SHPIX[]`,o,i),r.setRelative(s,s,i),r.touch(s)}e.loop=1}function nW(e){for(var t=e.stack,n=e.rp1,r=e.rp2,i=e.loop,a=e.z0[n],o=e.z1[r],s=e.fv,c=e.dpv,l=e.z2;i--;){var u=t.pop(),d=l[u];exports.DEBUG&&console.log(e.step,(e.loop>1?`loop `+(e.loop-i)+`: `:``)+`IP[]`,u,n,`<->`,r),s.interpolate(d,a,o,c),s.touch(d)}e.loop=1}function rW(e,t){var n=t.stack,r=n.pop()/64,i=n.pop(),a=t.z1[i],o=t.z0[t.rp0],s=t.fv,c=t.pv;s.setRelative(a,o,r,c),s.touch(a),exports.DEBUG&&console.log(t.step,`MSIRP[`+e+`]`,r,i),t.rp1=t.rp0,t.rp2=i,e&&(t.rp0=i)}function iW(e){for(var t=e.stack,n=e.rp0,r=e.z0[n],i=e.loop,a=e.fv,o=e.pv,s=e.z1;i--;){var c=t.pop(),l=s[c];exports.DEBUG&&console.log(e.step,(e.loop>1?`loop `+(e.loop-i)+`: `:``)+`ALIGNRP[]`,c),a.setRelative(l,r,0,o),a.touch(l)}e.loop=1}function aW(e){exports.DEBUG&&console.log(e.step,`RTDG[]`),e.round=eU}function oW(e,t){var n=t.stack,r=n.pop(),i=n.pop(),a=t.z0[i],o=t.fv,s=t.pv,c=t.cvt[r];exports.DEBUG&&console.log(t.step,`MIAP[`+e+`]`,r,`(`,c,`)`,i);var l=s.distance(a,uU);e&&(Math.abs(l-c)<t.cvCutIn&&(l=c),l=t.round(l)),o.setRelative(a,uU,l,s),t.zp0===0&&(a.xo=a.x,a.yo=a.y),o.touch(a),t.rp0=t.rp1=i}function sW(e){var t=e.prog,n=e.ip,r=e.stack,i=t[++n];exports.DEBUG&&console.log(e.step,`NPUSHB[]`,i);for(var a=0;a<i;a++)r.push(t[++n]);e.ip=n}function cW(e){var t=e.ip,n=e.prog,r=e.stack,i=n[++t];exports.DEBUG&&console.log(e.step,`NPUSHW[]`,i);for(var a=0;a<i;a++){var o=n[++t]<<8|n[++t];o&32768&&(o=-((o^65535)+1)),r.push(o)}e.ip=t}function lW(e){var t=e.stack,n=e.store;n||=e.store=[];var r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,`WS`,r,i),n[i]=r}function uW(e){var t=e.stack,n=e.store,r=t.pop();exports.DEBUG&&console.log(e.step,`RS`,r);var i=n&&n[r]||0;t.push(i)}function dW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`WCVTP`,n,r),e.cvt[r]=n/64}function fW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`RCVT`,n),t.push(e.cvt[n]*64)}function pW(e,t){var n=t.stack,r=n.pop(),i=t.z2[r];exports.DEBUG&&console.log(t.step,`GC[`+e+`]`,r),n.push(t.dpv.distance(i,uU,e,!1)*64)}function mW(e,t){var n=t.stack,r=n.pop(),i=n.pop(),a=t.z1[r],o=t.z0[i],s=t.dpv.distance(o,a,e,e);exports.DEBUG&&console.log(t.step,`MD[`+e+`]`,r,i,`->`,s),t.stack.push(Math.round(s*64))}function hW(e){exports.DEBUG&&console.log(e.step,`MPPEM[]`),e.stack.push(e.ppem)}function gW(e){exports.DEBUG&&console.log(e.step,`FLIPON[]`),e.autoFlip=!0}function _W(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`LT[]`,n,r),t.push(+(r<n))}function vW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`LTEQ[]`,n,r),t.push(+(r<=n))}function yW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`GT[]`,n,r),t.push(+(r>n))}function bW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`GTEQ[]`,n,r),t.push(+(r>=n))}function xW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`EQ[]`,n,r),t.push(+(n===r))}function SW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`NEQ[]`,n,r),t.push(n===r?0:1)}function CW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`ODD[]`,n),t.push(Math.trunc(n)%2?1:0)}function wW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`EVEN[]`,n),t.push(Math.trunc(n)%2?0:1)}function TW(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`IF[]`,t),t||(mU(e,!0),exports.DEBUG&&console.log(e.step,`EIF[]`))}function EW(e){exports.DEBUG&&console.log(e.step,`EIF[]`)}function DW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`AND[]`,n,r),t.push(n&&r?1:0)}function OW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`OR[]`,n,r),t.push(n||r?1:0)}function kW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`NOT[]`,n),t.push(+!n)}function AW(e,t){var n=t.stack,r=n.pop(),i=t.fv,a=t.pv,o=t.ppem,s=t.deltaBase+(e-1)*16,c=t.deltaShift,l=t.z0;exports.DEBUG&&console.log(t.step,`DELTAP[`+e+`]`,r,n);for(var u=0;u<r;u++){var d=n.pop(),f=n.pop();if(s+((f&240)>>4)===o){var p=(f&15)-8;p>=0&&p++,exports.DEBUG&&console.log(t.step,`DELTAPFIX`,d,`by`,p*c);var m=l[d];i.setRelative(m,m,p*c,a)}}}function jW(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`SDB[]`,t),e.deltaBase=t}function MW(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`SDS[]`,t),e.deltaShift=.5**t}function NW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`ADD[]`,n,r),t.push(r+n)}function PW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`SUB[]`,n,r),t.push(r-n)}function FW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`DIV[]`,n,r),t.push(r*64/n)}function IW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`MUL[]`,n,r),t.push(r*n/64)}function LW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`ABS[]`,n),t.push(Math.abs(n))}function RW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`NEG[]`,n),t.push(-n)}function zW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`FLOOR[]`,n),t.push(Math.floor(n/64)*64)}function BW(e){var t=e.stack,n=t.pop();exports.DEBUG&&console.log(e.step,`CEILING[]`,n),t.push(Math.ceil(n/64)*64)}function VW(e,t){var n=t.stack,r=n.pop();exports.DEBUG&&console.log(t.step,`ROUND[]`),n.push(t.round(r/64)*64)}function HW(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`WCVTF[]`,n,r),e.cvt[r]=n*e.ppem/e.font.unitsPerEm}function UW(e,t){var n=t.stack,r=n.pop(),i=t.ppem,a=t.deltaBase+(e-1)*16,o=t.deltaShift;exports.DEBUG&&console.log(t.step,`DELTAC[`+e+`]`,r,n);for(var s=0;s<r;s++){var c=n.pop(),l=n.pop();if(a+((l&240)>>4)===i){var u=(l&15)-8;u>=0&&u++;var d=u*o;exports.DEBUG&&console.log(t.step,`DELTACFIX`,c,`by`,d),t.cvt[c]+=d}}}function WW(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`SROUND[]`,t),e.round=iU;var n;switch(t&192){case 0:n=.5;break;case 64:n=1;break;case 128:n=2;break;default:throw Error(`invalid SROUND value`)}switch(e.srPeriod=n,t&48){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*n;break;case 32:e.srPhase=.5*n;break;case 48:e.srPhase=.75*n;break;default:throw Error(`invalid SROUND value`)}t&=15,t===0?e.srThreshold=0:e.srThreshold=(t/8-.5)*n}function GW(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`S45ROUND[]`,t),e.round=iU;var n;switch(t&192){case 0:n=Math.sqrt(2)/2;break;case 64:n=Math.sqrt(2);break;case 128:n=2*Math.sqrt(2);break;default:throw Error(`invalid S45ROUND value`)}switch(e.srPeriod=n,t&48){case 0:e.srPhase=0;break;case 16:e.srPhase=.25*n;break;case 32:e.srPhase=.5*n;break;case 48:e.srPhase=.75*n;break;default:throw Error(`invalid S45ROUND value`)}t&=15,t===0?e.srThreshold=0:e.srThreshold=(t/8-.5)*n}function KW(e){exports.DEBUG&&console.log(e.step,`ROFF[]`),e.round=QH}function qW(e){exports.DEBUG&&console.log(e.step,`RUTG[]`),e.round=nU}function JW(e){exports.DEBUG&&console.log(e.step,`RDTG[]`),e.round=rU}function YW(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`SCANCTRL[]`,t)}function XW(e,t){var n=t.stack,r=n.pop(),i=n.pop(),a=t.z2[r],o=t.z1[i];exports.DEBUG&&console.log(t.step,`SDPVTL[`+e+`]`,r,i);var s,c;e?(s=a.y-o.y,c=o.x-a.x):(s=o.x-a.x,c=o.y-a.y),t.dpv=cU(s,c)}function ZW(e){var t=e.stack,n=t.pop(),r=0;exports.DEBUG&&console.log(e.step,`GETINFO[]`,n),n&1&&(r=35),n&32&&(r|=4096),t.push(r)}function QW(e){var t=e.stack,n=t.pop(),r=t.pop(),i=t.pop();exports.DEBUG&&console.log(e.step,`ROLL[]`),t.push(r),t.push(n),t.push(i)}function $W(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`MAX[]`,n,r),t.push(Math.max(r,n))}function eG(e){var t=e.stack,n=t.pop(),r=t.pop();exports.DEBUG&&console.log(e.step,`MIN[]`,n,r),t.push(Math.min(r,n))}function tG(e){var t=e.stack.pop();exports.DEBUG&&console.log(e.step,`SCANTYPE[]`,t)}function nG(e){var t=e.stack.pop(),n=e.stack.pop();switch(exports.DEBUG&&console.log(e.step,`INSTCTRL[]`,t,n),t){case 1:e.inhibitGridFit=!!n;return;case 2:e.ignoreCvt=!!n;return;default:throw Error(`invalid INSTCTRL[] selector`)}}function rG(e,t){var n=t.stack,r=t.prog,i=t.ip;exports.DEBUG&&console.log(t.step,`PUSHB[`+e+`]`);for(var a=0;a<e;a++)n.push(r[++i]);t.ip=i}function iG(e,t){var n=t.ip,r=t.prog,i=t.stack;exports.DEBUG&&console.log(t.ip,`PUSHW[`+e+`]`);for(var a=0;a<e;a++){var o=r[++n]<<8|r[++n];o&32768&&(o=-((o^65535)+1)),i.push(o)}t.ip=n}function Q(e,t,n,r,i,a){var o=a.stack,s=e&&o.pop(),c=o.pop(),l=a.rp0,u=a.z0[l],d=a.z1[c],f=a.minDis,p=a.fv,m=a.dpv,h,g=h=m.distance(d,u,!0,!0),_=g>=0?1:-1,v;g=Math.abs(g),e&&(v=a.cvt[s],r&&Math.abs(g-v)<a.cvCutIn&&(g=v)),n&&g<f&&(g=f),r&&(g=a.round(g)),p.setRelative(d,u,_*g,m),p.touch(d),exports.DEBUG&&console.log(a.step,(e?`MIRP[`:`MDRP[`)+(t?`M`:`m`)+(n?`>`:`_`)+(r?`R`:`_`)+(i===0?`Gr`:i===1?`Bl`:i===2?`Wh`:``)+`]`,e?s+`(`+a.cvt[s]+`,`+v+`)`:``,c,`(d =`,h,`->`,_*g,`)`),a.rp1=a.rp0,a.rp2=c,t&&(a.rp0=c)}qH=[hU.bind(void 0,oU),hU.bind(void 0,aU),gU.bind(void 0,oU),gU.bind(void 0,aU),_U.bind(void 0,oU),_U.bind(void 0,aU),vU.bind(void 0,0),vU.bind(void 0,1),yU.bind(void 0,0),yU.bind(void 0,1),bU,xU,SU,CU,wU,TU,EU,DU,OU,kU,AU,jU,MU,NU,PU,FU,IU,LU,RU,zU,void 0,void 0,BU,VU,HU,UU,WU,qU,JU,void 0,void 0,void 0,GU,KU,YU,void 0,XU.bind(void 0,0),XU.bind(void 0,1),ZU.bind(void 0,oU),ZU.bind(void 0,aU),QU.bind(void 0,0),QU.bind(void 0,1),$U.bind(void 0,0),$U.bind(void 0,1),eW.bind(void 0,0),eW.bind(void 0,1),tW,nW,rW.bind(void 0,0),rW.bind(void 0,1),iW,aW,oW.bind(void 0,0),oW.bind(void 0,1),sW,cW,lW,uW,dW,fW,pW.bind(void 0,0),pW.bind(void 0,1),void 0,mW.bind(void 0,0),mW.bind(void 0,1),hW,void 0,gW,void 0,void 0,_W,vW,yW,bW,xW,SW,CW,wW,TW,EW,DW,OW,kW,AW.bind(void 0,1),jW,MW,NW,PW,FW,IW,LW,RW,zW,BW,VW.bind(void 0,0),VW.bind(void 0,1),VW.bind(void 0,2),VW.bind(void 0,3),void 0,void 0,void 0,void 0,HW,AW.bind(void 0,2),AW.bind(void 0,3),UW.bind(void 0,1),UW.bind(void 0,2),UW.bind(void 0,3),WW,GW,void 0,void 0,KW,void 0,qW,JW,VU,VU,void 0,void 0,void 0,void 0,void 0,YW,XW.bind(void 0,0),XW.bind(void 0,1),ZW,void 0,QW,$W,eG,tG,nG,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,rG.bind(void 0,1),rG.bind(void 0,2),rG.bind(void 0,3),rG.bind(void 0,4),rG.bind(void 0,5),rG.bind(void 0,6),rG.bind(void 0,7),rG.bind(void 0,8),iG.bind(void 0,1),iG.bind(void 0,2),iG.bind(void 0,3),iG.bind(void 0,4),iG.bind(void 0,5),iG.bind(void 0,6),iG.bind(void 0,7),iG.bind(void 0,8),Q.bind(void 0,0,0,0,0,0),Q.bind(void 0,0,0,0,0,1),Q.bind(void 0,0,0,0,0,2),Q.bind(void 0,0,0,0,0,3),Q.bind(void 0,0,0,0,1,0),Q.bind(void 0,0,0,0,1,1),Q.bind(void 0,0,0,0,1,2),Q.bind(void 0,0,0,0,1,3),Q.bind(void 0,0,0,1,0,0),Q.bind(void 0,0,0,1,0,1),Q.bind(void 0,0,0,1,0,2),Q.bind(void 0,0,0,1,0,3),Q.bind(void 0,0,0,1,1,0),Q.bind(void 0,0,0,1,1,1),Q.bind(void 0,0,0,1,1,2),Q.bind(void 0,0,0,1,1,3),Q.bind(void 0,0,1,0,0,0),Q.bind(void 0,0,1,0,0,1),Q.bind(void 0,0,1,0,0,2),Q.bind(void 0,0,1,0,0,3),Q.bind(void 0,0,1,0,1,0),Q.bind(void 0,0,1,0,1,1),Q.bind(void 0,0,1,0,1,2),Q.bind(void 0,0,1,0,1,3),Q.bind(void 0,0,1,1,0,0),Q.bind(void 0,0,1,1,0,1),Q.bind(void 0,0,1,1,0,2),Q.bind(void 0,0,1,1,0,3),Q.bind(void 0,0,1,1,1,0),Q.bind(void 0,0,1,1,1,1),Q.bind(void 0,0,1,1,1,2),Q.bind(void 0,0,1,1,1,3),Q.bind(void 0,1,0,0,0,0),Q.bind(void 0,1,0,0,0,1),Q.bind(void 0,1,0,0,0,2),Q.bind(void 0,1,0,0,0,3),Q.bind(void 0,1,0,0,1,0),Q.bind(void 0,1,0,0,1,1),Q.bind(void 0,1,0,0,1,2),Q.bind(void 0,1,0,0,1,3),Q.bind(void 0,1,0,1,0,0),Q.bind(void 0,1,0,1,0,1),Q.bind(void 0,1,0,1,0,2),Q.bind(void 0,1,0,1,0,3),Q.bind(void 0,1,0,1,1,0),Q.bind(void 0,1,0,1,1,1),Q.bind(void 0,1,0,1,1,2),Q.bind(void 0,1,0,1,1,3),Q.bind(void 0,1,1,0,0,0),Q.bind(void 0,1,1,0,0,1),Q.bind(void 0,1,1,0,0,2),Q.bind(void 0,1,1,0,0,3),Q.bind(void 0,1,1,0,1,0),Q.bind(void 0,1,1,0,1,1),Q.bind(void 0,1,1,0,1,2),Q.bind(void 0,1,1,0,1,3),Q.bind(void 0,1,1,1,0,0),Q.bind(void 0,1,1,1,0,1),Q.bind(void 0,1,1,1,0,2),Q.bind(void 0,1,1,1,0,3),Q.bind(void 0,1,1,1,1,0),Q.bind(void 0,1,1,1,1,1),Q.bind(void 0,1,1,1,1,2),Q.bind(void 0,1,1,1,1,3)];function aG(e){this.char=e,this.state={},this.activeState=null}function oG(e,t,n){this.contextName=n,this.startIndex=e,this.endOffset=t}function sG(e,t,n){this.contextName=e,this.openRange=null,this.ranges=[],this.checkStart=t,this.checkEnd=n}function cG(e,t){this.context=e,this.index=t,this.length=e.length,this.current=e[t],this.backtrack=e.slice(0,t),this.lookahead=e.slice(t+1)}function lG(e){this.eventId=e,this.subscribers=[]}function uG(e){var t=this,n=[`start`,`end`,`next`,`newToken`,`contextStart`,`contextEnd`,`insertToken`,`removeToken`,`removeRange`,`replaceToken`,`replaceRange`,`composeRUD`,`updateContextsRanges`];n.forEach(function(e){Object.defineProperty(t.events,e,{value:new lG(e)})}),e&&n.forEach(function(n){var r=e[n];typeof r==`function`&&t.events[n].subscribe(r)}),[`insertToken`,`removeToken`,`removeRange`,`replaceToken`,`replaceRange`,`composeRUD`].forEach(function(e){t.events[e].subscribe(t.updateContextsRanges)})}function dG(e){this.tokens=[],this.registeredContexts={},this.contextCheckers=[],this.events={},this.registeredModifiers=[],uG.call(this,e)}aG.prototype.setState=function(e,t){return this.state[e]=t,this.activeState={key:e,value:this.state[e]},this.activeState},aG.prototype.getState=function(e){return this.state[e]||null},dG.prototype.inboundIndex=function(e){return e>=0&&e<this.tokens.length},dG.prototype.composeRUD=function(e){var t=this,n=!0,r=e.map(function(e){return t[e[0]].apply(t,e.slice(1).concat(n))}),i=function(e){return typeof e==`object`&&e.hasOwnProperty(`FAIL`)};if(r.every(i))return{FAIL:`composeRUD: one or more operations hasn't completed successfully`,report:r.filter(i)};this.dispatch(`composeRUD`,[r.filter(function(e){return!i(e)})])},dG.prototype.replaceRange=function(e,t,n,r){t=t===null?this.tokens.length:t;var i=n.every(function(e){return e instanceof aG});if(!isNaN(e)&&this.inboundIndex(e)&&i){var a=this.tokens.splice.apply(this.tokens,[e,t].concat(n));return r||this.dispatch(`replaceToken`,[e,t,n]),[a,n]}else return{FAIL:`replaceRange: invalid tokens or startIndex.`}},dG.prototype.replaceToken=function(e,t,n){if(!isNaN(e)&&this.inboundIndex(e)&&t instanceof aG){var r=this.tokens.splice(e,1,t);return n||this.dispatch(`replaceToken`,[e,t]),[r[0],t]}else return{FAIL:`replaceToken: invalid token or index.`}},dG.prototype.removeRange=function(e,t,n){t=isNaN(t)?this.tokens.length:t;var r=this.tokens.splice(e,t);return n||this.dispatch(`removeRange`,[r,e,t]),r},dG.prototype.removeToken=function(e,t){if(!isNaN(e)&&this.inboundIndex(e)){var n=this.tokens.splice(e,1);return t||this.dispatch(`removeToken`,[n,e]),n}else return{FAIL:`removeToken: invalid token index.`}},dG.prototype.insertToken=function(e,t,n){return e.every(function(e){return e instanceof aG})?(this.tokens.splice.apply(this.tokens,[t,0].concat(e)),n||this.dispatch(`insertToken`,[e,t]),e):{FAIL:`insertToken: invalid token(s).`}},dG.prototype.registerModifier=function(e,t,n){this.events.newToken.subscribe(function(r,i){var a=[r,i],o=t===null||t.apply(this,a)===!0,s=[r,i];if(o){var c=n.apply(this,s);r.setState(e,c)}}),this.registeredModifiers.push(e)},lG.prototype.subscribe=function(e){return typeof e==`function`?this.subscribers.push(e)-1:{FAIL:`invalid '`+this.eventId+`' event handler`}},lG.prototype.unsubscribe=function(e){this.subscribers.splice(e,1)},cG.prototype.setCurrentIndex=function(e){this.index=e,this.current=this.context[e],this.backtrack=this.context.slice(0,e),this.lookahead=this.context.slice(e+1)},cG.prototype.get=function(e){switch(!0){case e===0:return this.current;case e<0&&Math.abs(e)<=this.backtrack.length:return this.backtrack.slice(e)[0];case e>0&&e<=this.lookahead.length:return this.lookahead[e-1];default:return null}},dG.prototype.rangeToText=function(e){if(e instanceof oG)return this.getRangeTokens(e).map(function(e){return e.char}).join(``)},dG.prototype.getText=function(){return this.tokens.map(function(e){return e.char}).join(``)},dG.prototype.getContext=function(e){return this.registeredContexts[e]||null},dG.prototype.on=function(e,t){var n=this.events[e];return n?n.subscribe(t):null},dG.prototype.dispatch=function(e,t){var n=this,r=this.events[e];r instanceof lG&&r.subscribers.forEach(function(e){e.apply(n,t||[])})},dG.prototype.registerContextChecker=function(e,t,n){if(this.getContext(e))return{FAIL:`context name '`+e+`' is already registered.`};if(typeof t!=`function`)return{FAIL:`missing context start check.`};if(typeof n!=`function`)return{FAIL:`missing context end check.`};var r=new sG(e,t,n);return this.registeredContexts[e]=r,this.contextCheckers.push(r),r},dG.prototype.getRangeTokens=function(e){var t=e.startIndex+e.endOffset;return[].concat(this.tokens.slice(e.startIndex,t))},dG.prototype.getContextRanges=function(e){var t=this.getContext(e);return t?t.ranges:{FAIL:`context checker '`+e+`' is not registered.`}},dG.prototype.resetContextsRanges=function(){var e=this.registeredContexts;for(var t in e)if(e.hasOwnProperty(t)){var n=e[t];n.ranges=[]}},dG.prototype.updateContextsRanges=function(){this.resetContextsRanges();for(var e=this.tokens.map(function(e){return e.char}),t=0;t<e.length;t++){var n=new cG(e,t);this.runContextCheck(n)}this.dispatch(`updateContextsRanges`,[this.registeredContexts])},dG.prototype.setEndOffset=function(e,t){var n=this.getContext(t).openRange.startIndex,r=new oG(n,e,t),i=this.getContext(t).ranges;return r.rangeId=t+`.`+i.length,i.push(r),this.getContext(t).openRange=null,r},dG.prototype.runContextCheck=function(e){var t=this,n=e.index;this.contextCheckers.forEach(function(r){var i=r.contextName,a=t.getContext(i).openRange;if(!a&&r.checkStart(e)&&(a=new oG(n,null,i),t.getContext(i).openRange=a,t.dispatch(`contextStart`,[i,n])),a&&r.checkEnd(e)){var o=n-a.startIndex+1,s=t.setEndOffset(o,i);t.dispatch(`contextEnd`,[i,s])}})},dG.prototype.tokenize=function(e){this.tokens=[],this.resetContextsRanges();var t=Array.from(e);this.dispatch(`start`);for(var n=0;n<t.length;n++){var r=t[n],i=new cG(t,n);this.dispatch(`next`,[i]),this.runContextCheck(i);var a=new aG(r);this.tokens.push(a),this.dispatch(`newToken`,[a,i])}return this.dispatch(`end`,[this.tokens]),this.tokens};function fG(e){return/[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(e)}function pG(e){return/[\u0630\u0690\u0621\u0631\u0661\u0671\u0622\u0632\u0672\u0692\u06C2\u0623\u0673\u0693\u06C3\u0624\u0694\u06C4\u0625\u0675\u0695\u06C5\u06E5\u0676\u0696\u06C6\u0627\u0677\u0697\u06C7\u0648\u0688\u0698\u06C8\u0689\u0699\u06C9\u068A\u06CA\u066B\u068B\u06CB\u068C\u068D\u06CD\u06FD\u068E\u06EE\u06FE\u062F\u068F\u06CF\u06EF]/.test(e)}function mG(e){return/[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(e)}function hG(e){return/[A-z]/.test(e)}function gG(e){return/\s/.test(e)}function _G(e){this.font=e,this.features={}}function vG(e){this.id=e.id,this.tag=e.tag,this.substitution=e.substitution}function yG(e,t){if(!e)return-1;switch(t.format){case 1:return t.glyphs.indexOf(e);case 2:for(var n=t.ranges,r=0;r<n.length;r++){var i=n[r];if(e>=i.start&&e<=i.end){var a=e-i.start;return i.index+a}}break;default:return-1}return-1}function bG(e,t){return yG(e,t.coverage)===-1?null:e+t.deltaGlyphId}function xG(e,t){var n=yG(e,t.coverage);return n===-1?null:t.substitute[n]}function SG(e,t){for(var n=[],r=0;r<e.length;r++){var i=e[r],a=t.current;a=Array.isArray(a)?a[0]:a;var o=yG(a,i);o!==-1&&n.push(o)}return n.length===e.length?n:-1}function CG(e,t){var n=t.inputCoverage.length+t.lookaheadCoverage.length+t.backtrackCoverage.length;if(e.context.length<n)return[];var r=SG(t.inputCoverage,e);if(r===-1)return[];var i=t.inputCoverage.length-1;if(e.lookahead.length<t.lookaheadCoverage.length)return[];for(var a=e.lookahead.slice(i);a.length&&mG(a[0].char);)a.shift();var o=new cG(a,0),s=SG(t.lookaheadCoverage,o),c=[].concat(e.backtrack);for(c.reverse();c.length&&mG(c[0].char);)c.shift();if(c.length<t.backtrackCoverage.length)return[];var l=new cG(c,0),u=SG(t.backtrackCoverage,l),d=r.length===t.inputCoverage.length&&s.length===t.lookaheadCoverage.length&&u.length===t.backtrackCoverage.length,f=[];if(d)for(var p=0;p<t.lookupRecords.length;p++)for(var m=t.lookupRecords[p].lookupListIndex,h=this.getLookupByIndex(m),g=0;g<h.subtables.length;g++){var _=h.subtables[g],v=this.getLookupMethod(h,_);if(this.getSubstitutionType(h,_)===`12`)for(var y=0;y<r.length;y++){var b=v(e.get(y));b&&f.push(b)}}return f}function wG(e,t){var n=e.current,r=yG(n,t.coverage);if(r===-1)return null;for(var i,a=t.ligatureSets[r],o=0;o<a.length;o++){i=a[o];for(var s=0;s<i.components.length&&e.lookahead[s]===i.components[s];s++)if(s===i.components.length-1)return i}return null}function TG(e,t){var n=yG(e,t.coverage);return n===-1?null:t.sequences[n]}_G.prototype.getDefaultScriptFeaturesIndexes=function(){for(var e=this.font.tables.gsub.scripts,t=0;t<e.length;t++){var n=e[t];if(n.tag===`DFLT`)return n.script.defaultLangSys.featureIndexes}return[]},_G.prototype.getScriptFeaturesIndexes=function(e){if(!this.font.tables.gsub)return[];if(!e)return this.getDefaultScriptFeaturesIndexes();for(var t=this.font.tables.gsub.scripts,n=0;n<t.length;n++){var r=t[n];if(r.tag===e&&r.script.defaultLangSys)return r.script.defaultLangSys.featureIndexes;var i=r.langSysRecords;if(i)for(var a=0;a<i.length;a++){var o=i[a];if(o.tag===e)return o.langSys.featureIndexes}}return this.getDefaultScriptFeaturesIndexes()},_G.prototype.mapTagsToFeatures=function(e,t){for(var n={},r=0;r<e.length;r++){var i=e[r].tag;n[i]=e[r].feature}this.features[t].tags=n},_G.prototype.getScriptFeatures=function(e){var t=this.features[e];if(this.features.hasOwnProperty(e))return t;var n=this.getScriptFeaturesIndexes(e);if(!n)return null;var r=this.font.tables.gsub;return t=n.map(function(e){return r.features[e]}),this.features[e]=t,this.mapTagsToFeatures(t,e),t},_G.prototype.getSubstitutionType=function(e,t){return e.lookupType.toString()+t.substFormat.toString()},_G.prototype.getLookupMethod=function(e,t){var n=this;switch(this.getSubstitutionType(e,t)){case`11`:return function(e){return bG.apply(n,[e,t])};case`12`:return function(e){return xG.apply(n,[e,t])};case`63`:return function(e){return CG.apply(n,[e,t])};case`41`:return function(e){return wG.apply(n,[e,t])};case`21`:return function(e){return TG.apply(n,[e,t])};default:throw Error(`lookupType: `+e.lookupType+` - substFormat: `+t.substFormat+` is not yet supported`)}},_G.prototype.lookupFeature=function(e){var t=e.contextParams,n=t.index,r=this.getFeature({tag:e.tag,script:e.script});if(!r)return Error(`font '`+this.font.names.fullName.en+`' doesn't support feature '`+e.tag+`' for script '`+e.script+`'.`);for(var i=this.getFeatureLookups(r),a=[].concat(t.context),o=0;o<i.length;o++)for(var s=i[o],c=this.getLookupSubtables(s),l=0;l<c.length;l++){var u=c[l],d=this.getSubstitutionType(s,u),f=this.getLookupMethod(s,u),p=void 0;switch(d){case`11`:p=f(t.current),p&&a.splice(n,1,new vG({id:11,tag:e.tag,substitution:p}));break;case`12`:p=f(t.current),p&&a.splice(n,1,new vG({id:12,tag:e.tag,substitution:p}));break;case`63`:p=f(t),Array.isArray(p)&&p.length&&a.splice(n,1,new vG({id:63,tag:e.tag,substitution:p}));break;case`41`:p=f(t),p&&a.splice(n,1,new vG({id:41,tag:e.tag,substitution:p}));break;case`21`:p=f(t.current),p&&a.splice(n,1,new vG({id:21,tag:e.tag,substitution:p}));break}t=new cG(a,n),!(Array.isArray(p)&&!p.length)&&(p=null)}return a.length?a:null},_G.prototype.supports=function(e){if(!e.script)return!1;this.getScriptFeatures(e.script);var t=this.features.hasOwnProperty(e.script);if(!e.tag)return t;var n=this.features[e.script].some(function(t){return t.tag===e.tag});return t&&n},_G.prototype.getLookupSubtables=function(e){return e.subtables||null},_G.prototype.getLookupByIndex=function(e){return this.font.tables.gsub.lookups[e]||null},_G.prototype.getFeatureLookups=function(e){return e.lookupListIndexes.map(this.getLookupByIndex.bind(this))},_G.prototype.getFeature=function(e){if(!this.font)return{FAIL:`No font was found`};this.features.hasOwnProperty(e.script)||this.getScriptFeatures(e.script);var t=this.features[e.script];return t?t.tags[e.tag]?this.features[e.script].tags[e.tag]:null:{FAIL:`No feature for script `+e.script}};function EG(e){var t=e.current,n=e.get(-1);return n===null&&fG(t)||!fG(n)&&fG(t)}function DG(e){var t=e.get(1);return t===null||!fG(t)}var OG={startCheck:EG,endCheck:DG};function kG(e){var t=e.current,n=e.get(-1);return(fG(t)||mG(t))&&!fG(n)}function AG(e){var t=e.get(1);switch(!0){case t===null:return!0;case!fG(t)&&!mG(t):var n=gG(t);if(!n)return!0;if(n){var r=!1;if(r=e.lookahead.some(function(e){return fG(e)||mG(e)}),!r)return!0}break;default:return!1}}var jG={startCheck:kG,endCheck:AG};function MG(e,t,n){t[n].setState(e.tag,e.substitution)}function NG(e,t,n){t[n].setState(e.tag,e.substitution)}function PG(e,t,n){e.substitution.forEach(function(r,i){t[n+i].setState(e.tag,r)})}function FG(e,t,n){var r=t[n];r.setState(e.tag,e.substitution.ligGlyph);for(var i=e.substitution.components.length,a=0;a<i;a++)r=t[n+a+1],r.setState(`deleted`,!0)}var IG={11:MG,12:NG,63:PG,41:FG};function LG(e,t,n){e instanceof vG&&IG[e.id]&&IG[e.id](e,t,n)}function RG(e){for(var t=[].concat(e.backtrack),n=t.length-1;n>=0;n--){var r=t[n],i=pG(r),a=mG(r);if(!i&&!a)return!0;if(i)return!1}return!1}function zG(e){if(pG(e.current))return!1;for(var t=0;t<e.lookahead.length;t++){var n=e.lookahead[t];if(!mG(n))return!0}return!1}function BG(e){var t=this,n=`arab`,r=this.featuresTags[n],i=this.tokenizer.getRangeTokens(e);if(i.length!==1){var a=new cG(i.map(function(e){return e.getState(`glyphIndex`)}),0),o=new cG(i.map(function(e){return e.char}),0);i.forEach(function(e,s){if(!mG(e.char)){a.setCurrentIndex(s),o.setCurrentIndex(s);var c=0;RG(o)&&(c|=1),zG(o)&&(c|=2);var l;switch(c){case 1:l=`fina`;break;case 2:l=`init`;break;case 3:l=`medi`;break}if(r.indexOf(l)!==-1){var u=t.query.lookupFeature({tag:l,script:n,contextParams:a});if(u instanceof Error)return console.info(u.message);u.forEach(function(e,t){e instanceof vG&&(LG(e,i,t),a.context[t]=e.substitution)})}}})}}function VG(e,t){return new cG(e.map(function(e){return e.activeState.value}),t||0)}function HG(e){var t=this,n=`arab`,r=this.tokenizer.getRangeTokens(e),i=VG(r);i.context.forEach(function(e,a){i.setCurrentIndex(a);var o=t.query.lookupFeature({tag:`rlig`,script:n,contextParams:i});o.length&&(o.forEach(function(e){return LG(e,r,a)}),i=VG(r))})}function UG(e){var t=e.current,n=e.get(-1);return n===null&&hG(t)||!hG(n)&&hG(t)}function WG(e){var t=e.get(1);return t===null||!hG(t)}var GG={startCheck:UG,endCheck:WG};function KG(e,t){return new cG(e.map(function(e){return e.activeState.value}),t||0)}function qG(e){var t=this,n=`latn`,r=this.tokenizer.getRangeTokens(e),i=KG(r);i.context.forEach(function(e,a){i.setCurrentIndex(a);var o=t.query.lookupFeature({tag:`liga`,script:n,contextParams:i});o.length&&(o.forEach(function(e){return LG(e,r,a)}),i=KG(r))})}function JG(e){this.baseDir=e||`ltr`,this.tokenizer=new dG,this.featuresTags={}}JG.prototype.setText=function(e){this.text=e},JG.prototype.contextChecks={latinWordCheck:GG,arabicWordCheck:OG,arabicSentenceCheck:jG};function YG(e){var t=this.contextChecks[e+`Check`];return this.tokenizer.registerContextChecker(e,t.startCheck,t.endCheck)}function XG(){return YG.call(this,`latinWord`),YG.call(this,`arabicWord`),YG.call(this,`arabicSentence`),this.tokenizer.tokenize(this.text)}function ZG(){var e=this;this.tokenizer.getContextRanges(`arabicSentence`).forEach(function(t){var n=e.tokenizer.getRangeTokens(t);e.tokenizer.replaceRange(t.startIndex,t.endOffset,n.reverse())})}JG.prototype.registerFeatures=function(e,t){var n=this,r=t.filter(function(t){return n.query.supports({script:e,tag:t})});this.featuresTags.hasOwnProperty(e)?this.featuresTags[e]=this.featuresTags[e].concat(r):this.featuresTags[e]=r},JG.prototype.applyFeatures=function(e,t){if(!e)throw Error(`No valid font was provided to apply features`);this.query||=new _G(e);for(var n=0;n<t.length;n++){var r=t[n];this.query.supports({script:r.script})&&this.registerFeatures(r.script,r.tags)}},JG.prototype.registerModifier=function(e,t,n){this.tokenizer.registerModifier(e,t,n)};function QG(){if(this.tokenizer.registeredModifiers.indexOf(`glyphIndex`)===-1)throw Error(`glyphIndex modifier is required to apply arabic presentation features.`)}function $G(){var e=this;this.featuresTags.hasOwnProperty(`arab`)&&(QG.call(this),this.tokenizer.getContextRanges(`arabicWord`).forEach(function(t){BG.call(e,t)}))}function eK(){var e=this,t=`arab`;this.featuresTags.hasOwnProperty(t)&&this.featuresTags[t].indexOf(`rlig`)!==-1&&(QG.call(this),this.tokenizer.getContextRanges(`arabicWord`).forEach(function(t){HG.call(e,t)}))}function tK(){var e=this,t=`latn`;this.featuresTags.hasOwnProperty(t)&&this.featuresTags[t].indexOf(`liga`)!==-1&&(QG.call(this),this.tokenizer.getContextRanges(`latinWord`).forEach(function(t){qG.call(e,t)}))}JG.prototype.checkContextReady=function(e){return!!this.tokenizer.getContext(e)},JG.prototype.applyFeaturesToContexts=function(){this.checkContextReady(`arabicWord`)&&($G.call(this),eK.call(this)),this.checkContextReady(`latinWord`)&&tK.call(this),this.checkContextReady(`arabicSentence`)&&ZG.call(this)},JG.prototype.processText=function(e){(!this.text||this.text!==e)&&(this.setText(e),XG.call(this),this.applyFeaturesToContexts())},JG.prototype.getBidiText=function(e){return this.processText(e),this.tokenizer.getText()},JG.prototype.getTextGlyphs=function(e){this.processText(e);for(var t=[],n=0;n<this.tokenizer.tokens.length;n++){var r=this.tokenizer.tokens[n];if(!r.state.deleted){var i=r.activeState.value;t.push(Array.isArray(i)?i[0]:i)}}return t};function nK(e){e||={},e.tables=e.tables||{},e.empty||(IH(e.familyName,`When creating a new Font object, familyName is required.`),IH(e.styleName,`When creating a new Font object, styleName is required.`),IH(e.unitsPerEm,`When creating a new Font object, unitsPerEm is required.`),IH(e.ascender,`When creating a new Font object, ascender is required.`),IH(e.descender<=0,`When creating a new Font object, negative descender value is required.`),this.names={fontFamily:{en:e.familyName||` `},fontSubfamily:{en:e.styleName||` `},fullName:{en:e.fullName||e.familyName+` `+e.styleName},postScriptName:{en:e.postScriptName||(e.familyName+e.styleName).replace(/\s/g,``)},designer:{en:e.designer||` `},designerURL:{en:e.designerURL||` `},manufacturer:{en:e.manufacturer||` `},manufacturerURL:{en:e.manufacturerURL||` `},license:{en:e.license||` `},licenseURL:{en:e.licenseURL||` `},version:{en:e.version||`Version 0.1`},description:{en:e.description||` `},copyright:{en:e.copyright||` `},trademark:{en:e.trademark||` `}},this.unitsPerEm=e.unitsPerEm||1e3,this.ascender=e.ascender,this.descender=e.descender,this.createdTimestamp=e.createdTimestamp,this.tables=Object.assign(e.tables,{os2:Object.assign({usWeightClass:e.weightClass||this.usWeightClasses.MEDIUM,usWidthClass:e.widthClass||this.usWidthClasses.MEDIUM,fsSelection:e.fsSelection||this.fsSelectionValues.REGULAR},e.tables.os2)})),this.supported=!0,this.glyphs=new RB.GlyphSet(this,e.glyphs||[]),this.encoding=new SB(this),this.position=new kH(this),this.substitution=new AH(this),this.tables=this.tables||{},this._push=null,this._hmtxTableData={},Object.defineProperty(this,"hinting",{get:function(){if(this._hinting)return this._hinting;if(this.outlinesFormat===`truetype`)return this._hinting=new ZH(this)}})}nK.prototype.hasChar=function(e){return this.encoding.charToGlyphIndex(e)!==null},nK.prototype.charToGlyphIndex=function(e){return this.encoding.charToGlyphIndex(e)},nK.prototype.charToGlyph=function(e){var t=this.charToGlyphIndex(e),n=this.glyphs.get(t);return n||=this.glyphs.get(0),n},nK.prototype.updateFeatures=function(e){return this.defaultRenderOptions.features.map(function(t){return t.script===`latn`?{script:`latn`,tags:t.tags.filter(function(t){return e[t]})}:t})},nK.prototype.stringToGlyphs=function(e,t){var n=this,r=new JG;r.registerModifier(`glyphIndex`,null,function(e){return n.charToGlyphIndex(e.char)});var i=t?this.updateFeatures(t.features):this.defaultRenderOptions.features;r.applyFeatures(this,i);for(var a=r.getTextGlyphs(e),o=a.length,s=Array(o),c=this.glyphs.get(0),l=0;l<o;l+=1)s[l]=this.glyphs.get(a[l])||c;return s},nK.prototype.nameToGlyphIndex=function(e){return this.glyphNames.nameToGlyphIndex(e)},nK.prototype.nameToGlyph=function(e){var t=this.nameToGlyphIndex(e),n=this.glyphs.get(t);return n||=this.glyphs.get(0),n},nK.prototype.glyphIndexToName=function(e){return this.glyphNames.glyphIndexToName?this.glyphNames.glyphIndexToName(e):``},nK.prototype.getKerningValue=function(e,t){e=e.index||e,t=t.index||t;var n=this.position.defaultKerningTables;return n?this.position.getKerningValue(n,e,t):this.kerningPairs[e+`,`+t]||0},nK.prototype.defaultRenderOptions={kerning:!0,features:[{script:`arab`,tags:[`init`,`medi`,`fina`,`rlig`]},{script:`latn`,tags:[`liga`,`rlig`]}]},nK.prototype.forEachGlyph=function(e,t,n,r,i,a){t=t===void 0?0:t,n=n===void 0?0:n,r=r===void 0?72:r,i=Object.assign({},this.defaultRenderOptions,i);var o=1/this.unitsPerEm*r,s=this.stringToGlyphs(e,i),c;if(i.kerning){var l=i.script||this.position.getDefaultScriptName();c=this.position.getKerningTables(l,i.language)}for(var u=0;u<s.length;u+=1){var d=s[u];if(a.call(this,d,t,n,r,i),d.advanceWidth&&(t+=d.advanceWidth*o),i.kerning&&u<s.length-1){var f=c?this.position.getKerningValue(c,d.index,s[u+1].index):this.getKerningValue(d,s[u+1]);t+=f*o}i.letterSpacing?t+=i.letterSpacing*r:i.tracking&&(t+=i.tracking/1e3*r)}return t},nK.prototype.getPath=function(e,t,n,r,i){var a=new Az;return this.forEachGlyph(e,t,n,r,i,function(e,t,n,r){var o=e.getPath(t,n,r,i,this);a.extend(o)}),a},nK.prototype.getPaths=function(e,t,n,r,i){var a=[];return this.forEachGlyph(e,t,n,r,i,function(e,t,n,r){var o=e.getPath(t,n,r,i,this);a.push(o)}),a},nK.prototype.getAdvanceWidth=function(e,t,n){return this.forEachGlyph(e,0,0,t,n,function(){})},nK.prototype.draw=function(e,t,n,r,i,a){this.getPath(t,n,r,i,a).draw(e)},nK.prototype.drawPoints=function(e,t,n,r,i,a){this.forEachGlyph(t,n,r,i,a,function(t,n,r,i){t.drawPoints(e,n,r,i)})},nK.prototype.drawMetrics=function(e,t,n,r,i,a){this.forEachGlyph(t,n,r,i,a,function(t,n,r,i){t.drawMetrics(e,n,r,i)})},nK.prototype.getEnglishName=function(e){var t=this.names[e];if(t)return t.en},nK.prototype.validate=function(){var e=this;function t(t){var n=e.getEnglishName(t);n&&n.trim().length}t(`fontFamily`),t(`weightName`),t(`manufacturer`),t(`copyright`),t(`version`),this.unitsPerEm},nK.prototype.toTables=function(){return wH.fontToTable(this)},nK.prototype.toBuffer=function(){return console.warn(`Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.`),this.toArrayBuffer()},nK.prototype.toArrayBuffer=function(){for(var e=this.toTables().encode(),t=new ArrayBuffer(e.length),n=new Uint8Array(t),r=0;r<e.length;r++)n[r]=e[r];return t},nK.prototype.download=function(e){var t=this.getEnglishName(`fontFamily`),n=this.getEnglishName(`fontSubfamily`);e||=t.replace(/\s/g,``)+`-`+n+`.otf`;var r=this.toArrayBuffer();if(NH())if(window.URL=window.URL||window.webkitURL,window.URL){var i=new DataView(r),a=new Blob([i],{type:`font/opentype`}),o=document.createElement(`a`);o.href=window.URL.createObjectURL(a),o.download=e;var s=document.createEvent(`MouseEvents`);s.initEvent(`click`,!0,!1),o.dispatchEvent(s)}else console.warn(`Font file could not be downloaded. Try using a different browser.`);else{var c=nz(),l=FH(r);c.writeFileSync(e,l)}},nK.prototype.fsSelectionValues={ITALIC:1,UNDERSCORE:2,NEGATIVE:4,OUTLINED:8,STRIKEOUT:16,BOLD:32,REGULAR:64,USER_TYPO_METRICS:128,WWS:256,OBLIQUE:512},nK.prototype.usWidthClasses={ULTRA_CONDENSED:1,EXTRA_CONDENSED:2,CONDENSED:3,SEMI_CONDENSED:4,MEDIUM:5,SEMI_EXPANDED:6,EXPANDED:7,EXTRA_EXPANDED:8,ULTRA_EXPANDED:9},nK.prototype.usWeightClasses={THIN:100,EXTRA_LIGHT:200,LIGHT:300,NORMAL:400,MEDIUM:500,SEMI_BOLD:600,BOLD:700,EXTRA_BOLD:800,BLACK:900};function rK(e,t){var n=JSON.stringify(e),r=256;for(var i in t){var a=parseInt(i);if(!(!a||a<256)){if(JSON.stringify(t[i])===n)return a;r<=a&&(r=a+1)}}return t[r]=e,r}function iK(e,t,n){var r=rK(t.name,n);return[{name:`tag_`+e,type:`TAG`,value:t.tag},{name:`minValue_`+e,type:`FIXED`,value:t.minValue<<16},{name:`defaultValue_`+e,type:`FIXED`,value:t.defaultValue<<16},{name:`maxValue_`+e,type:`FIXED`,value:t.maxValue<<16},{name:`flags_`+e,type:`USHORT`,value:0},{name:`nameID_`+e,type:`USHORT`,value:r}]}function aK(e,t,n){var r={},i=new Z.Parser(e,t);return r.tag=i.parseTag(),r.minValue=i.parseFixed(),r.defaultValue=i.parseFixed(),r.maxValue=i.parseFixed(),i.skip(`uShort`,1),r.name=n[i.parseUShort()]||{},r}function oK(e,t,n,r){for(var i=rK(t.name,r),a=[{name:`nameID_`+e,type:`USHORT`,value:i},{name:`flags_`+e,type:`USHORT`,value:0}],o=0;o<n.length;++o){var s=n[o].tag;a.push({name:`axis_`+e+` `+s,type:`FIXED`,value:t.coordinates[s]<<16})}return a}function sK(e,t,n,r){var i={},a=new Z.Parser(e,t);i.name=r[a.parseUShort()]||{},a.skip(`uShort`,1),i.coordinates={};for(var o=0;o<n.length;++o)i.coordinates[n[o].tag]=a.parseFixed();return i}function cK(e,t){var n=new Y.Table(`fvar`,[{name:`version`,type:`ULONG`,value:65536},{name:`offsetToData`,type:`USHORT`,value:0},{name:`countSizePairs`,type:`USHORT`,value:2},{name:`axisCount`,type:`USHORT`,value:e.axes.length},{name:`axisSize`,type:`USHORT`,value:20},{name:`instanceCount`,type:`USHORT`,value:e.instances.length},{name:`instanceSize`,type:`USHORT`,value:4+e.axes.length*4}]);n.offsetToData=n.sizeOf();for(var r=0;r<e.axes.length;r++)n.fields=n.fields.concat(iK(r,e.axes[r],t));for(var i=0;i<e.instances.length;i++)n.fields=n.fields.concat(oK(i,e.instances[i],e.axes,t));return n}function lK(e,t,n){var r=new Z.Parser(e,t),i=r.parseULong();K.argument(i===65536,`Unsupported fvar table version.`);var a=r.parseOffset16();r.skip(`uShort`,1);for(var o=r.parseUShort(),s=r.parseUShort(),c=r.parseUShort(),l=r.parseUShort(),u=[],d=0;d<o;d++)u.push(aK(e,t+a+d*s,n));for(var f=[],p=t+a+o*s,m=0;m<c;m++)f.push(sK(e,p+m*l,u,n));return{axes:u,instances:f}}var uK={make:cK,parse:lK},dK=function(){return{coverage:this.parsePointer(X.coverage),attachPoints:this.parseList(X.pointer(X.uShortList))}},fK=function(){var e=this.parseUShort();if(K.argument(e===1||e===2||e===3,`Unsupported CaretValue table version.`),e===1)return{coordinate:this.parseShort()};if(e===2)return{pointindex:this.parseShort()};if(e===3)return{coordinate:this.parseShort()}},pK=function(){return this.parseList(X.pointer(fK))},mK=function(){return{coverage:this.parsePointer(X.coverage),ligGlyphs:this.parseList(X.pointer(pK))}},hK=function(){return this.parseUShort(),this.parseList(X.pointer(X.coverage))};function gK(e,t){t||=0;var n=new X(e,t),r=n.parseVersion(1);K.argument(r===1||r===1.2||r===1.3,`Unsupported GDEF table version.`);var i={version:r,classDef:n.parsePointer(X.classDef),attachList:n.parsePointer(dK),ligCaretList:n.parsePointer(mK),markAttachClassDef:n.parsePointer(X.classDef)};return r>=1.2&&(i.markGlyphSets=n.parsePointer(hK)),i}var _K={parse:gK},vK=Array(10);vK[1]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();if(t===1)return{posFormat:1,coverage:this.parsePointer(X.coverage),value:this.parseValueRecord()};if(t===2)return{posFormat:2,coverage:this.parsePointer(X.coverage),values:this.parseValueRecordList()};K.assert(!1,`0x`+e.toString(16)+`: GPOS lookup type 1 format must be 1 or 2.`)},vK[2]=function(){var e=this.offset+this.relativeOffset,t=this.parseUShort();K.assert(t===1||t===2,`0x`+e.toString(16)+`: GPOS lookup type 2 format must be 1 or 2.`);var n=this.parsePointer(X.coverage),r=this.parseUShort(),i=this.parseUShort();if(t===1)return{posFormat:t,coverage:n,valueFormat1:r,valueFormat2:i,pairSets:this.parseList(X.pointer(X.list(function(){return{secondGlyph:this.parseUShort(),value1:this.parseValueRecord(r),value2:this.parseValueRecord(i)}})))};if(t===2){var a=this.parsePointer(X.classDef),o=this.parsePointer(X.classDef),s=this.parseUShort(),c=this.parseUShort();return{posFormat:t,coverage:n,valueFormat1:r,valueFormat2:i,classDef1:a,classDef2:o,class1Count:s,class2Count:c,classRecords:this.parseList(s,X.list(c,function(){return{value1:this.parseValueRecord(r),value2:this.parseValueRecord(i)}}))}}},vK[3]=function(){return{error:`GPOS Lookup 3 not supported`}},vK[4]=function(){return{error:`GPOS Lookup 4 not supported`}},vK[5]=function(){return{error:`GPOS Lookup 5 not supported`}},vK[6]=function(){return{error:`GPOS Lookup 6 not supported`}},vK[7]=function(){return{error:`GPOS Lookup 7 not supported`}},vK[8]=function(){return{error:`GPOS Lookup 8 not supported`}},vK[9]=function(){return{error:`GPOS Lookup 9 not supported`}};function yK(e,t){t||=0;var n=new X(e,t),r=n.parseVersion(1);return K.argument(r===1||r===1.1,`Unsupported GPOS table version `+r),r===1?{version:r,scripts:n.parseScriptList(),features:n.parseFeatureList(),lookups:n.parseLookupList(vK)}:{version:r,scripts:n.parseScriptList(),features:n.parseFeatureList(),lookups:n.parseLookupList(vK),variations:n.parseFeatureVariationsList()}}var bK=Array(10);function xK(e){return new Y.Table(`GPOS`,[{name:`version`,type:`ULONG`,value:65536},{name:`scripts`,type:`TABLE`,value:new Y.ScriptList(e.scripts)},{name:`features`,type:`TABLE`,value:new Y.FeatureList(e.features)},{name:`lookups`,type:`TABLE`,value:new Y.LookupList(e.lookups,bK)}])}var SK={parse:yK,make:xK};function CK(e){var t={};e.skip(`uShort`);var n=e.parseUShort();K.argument(n===0,`Unsupported kern sub-table version.`),e.skip(`uShort`,2);var r=e.parseUShort();e.skip(`uShort`,3);for(var i=0;i<r;i+=1){var a=e.parseUShort(),o=e.parseUShort(),s=e.parseShort();t[a+`,`+o]=s}return t}function wK(e){var t={};e.skip(`uShort`),e.parseULong()>1&&console.warn(`Only the first kern subtable is supported.`),e.skip(`uLong`);var n=e.parseUShort()&255;if(e.skip(`uShort`),n===0){var r=e.parseUShort();e.skip(`uShort`,3);for(var i=0;i<r;i+=1){var a=e.parseUShort(),o=e.parseUShort(),s=e.parseShort();t[a+`,`+o]=s}}return t}function TK(e,t){var n=new Z.Parser(e,t),r=n.parseUShort();if(r===0)return CK(n);if(r===1)return wK(n);throw Error(`Unsupported kern table version (`+r+`).`)}var EK={parse:TK};function DK(e,t,n,r){for(var i=new Z.Parser(e,t),a=r?i.parseUShort:i.parseULong,o=[],s=0;s<n+1;s+=1){var c=a.call(i);r&&(c*=2),o.push(c)}return o}var OK={parse:DK};function kK(e,t){nz().readFile(e,function(e,n){if(e)return t(e.message);t(null,PH(n))})}function AK(e,t){var n=new XMLHttpRequest;n.open(`get`,e,!0),n.responseType=`arraybuffer`,n.onload=function(){return n.response?t(null,n.response):t(`Font could not be loaded: `+n.statusText)},n.onerror=function(){t(`Font could not be loaded`)},n.send()}function jK(e,t){for(var n=[],r=12,i=0;i<t;i+=1){var a=Z.getTag(e,r),o=Z.getULong(e,r+4),s=Z.getULong(e,r+8),c=Z.getULong(e,r+12);n.push({tag:a,checksum:o,offset:s,length:c,compression:!1}),r+=16}return n}function MK(e,t){for(var n=[],r=44,i=0;i<t;i+=1){var a=Z.getTag(e,r),o=Z.getULong(e,r+4),s=Z.getULong(e,r+8),c=Z.getULong(e,r+12),l=void 0;l=s<c?`WOFF`:!1,n.push({tag:a,offset:o,compression:l,compressedLength:s,length:c}),r+=20}return n}function NK(e,t){if(t.compression===`WOFF`){var n=new Uint8Array(e.buffer,t.offset+2,t.compressedLength-2),r=new Uint8Array(t.length);if(Dz(n,r),r.byteLength!==t.length)throw Error(`Decompression error: `+t.tag+` decompressed length doesn't match recorded length`);return{data:new DataView(r.buffer,0),offset:0}}else return{data:e,offset:t.offset}}function PK(e,t){t??={};var n,r,i=new nK({empty:!0}),a=new DataView(e,0),o,s=[],c=Z.getTag(a,0);if(c===`\0\0\0`||c===`true`||c===`typ1`)i.outlinesFormat=`truetype`,o=Z.getUShort(a,4),s=jK(a,o);else if(c===`OTTO`)i.outlinesFormat=`cff`,o=Z.getUShort(a,4),s=jK(a,o);else if(c===`wOFF`){var l=Z.getTag(a,4);if(l===`\0\0\0`)i.outlinesFormat=`truetype`;else if(l===`OTTO`)i.outlinesFormat=`cff`;else throw Error(`Unsupported OpenType flavor `+c);o=Z.getUShort(a,12),s=MK(a,o)}else throw Error(`Unsupported OpenType signature `+c);for(var u,d,f,p,m,h,g,_,v,y,b,x,S=0;S<o;S+=1){var C=s[S],w=void 0;switch(C.tag){case`cmap`:w=NK(a,C),i.tables.cmap=_B.parse(w.data,w.offset),i.encoding=new CB(i.tables.cmap);break;case`cvt `:w=NK(a,C),x=new Z.Parser(w.data,w.offset),i.tables.cvt=x.parseShortList(C.length/2);break;case`fvar`:d=C;break;case`fpgm`:w=NK(a,C),x=new Z.Parser(w.data,w.offset),i.tables.fpgm=x.parseByteList(C.length);break;case`head`:w=NK(a,C),i.tables.head=CV.parse(w.data,w.offset),i.unitsPerEm=i.tables.head.unitsPerEm,n=i.tables.head.indexToLocFormat;break;case`hhea`:w=NK(a,C),i.tables.hhea=EV.parse(w.data,w.offset),i.ascender=i.tables.hhea.ascender,i.descender=i.tables.hhea.descender,i.numberOfHMetrics=i.tables.hhea.numberOfHMetrics;break;case`hmtx`:g=C;break;case`ltag`:w=NK(a,C),r=PV.parse(w.data,w.offset);break;case`maxp`:w=NK(a,C),i.tables.maxp=LV.parse(w.data,w.offset),i.numGlyphs=i.tables.maxp.numGlyphs;break;case`name`:y=C;break;case`OS/2`:w=NK(a,C),i.tables.os2=iH.parse(w.data,w.offset);break;case`post`:w=NK(a,C),i.tables.post=sH.parse(w.data,w.offset),i.glyphNames=new TB(i.tables.post);break;case`prep`:w=NK(a,C),x=new Z.Parser(w.data,w.offset),i.tables.prep=x.parseByteList(C.length);break;case`glyf`:f=C;break;case`loca`:v=C;break;case`CFF `:u=C;break;case`kern`:_=C;break;case`GDEF`:p=C;break;case`GPOS`:m=C;break;case`GSUB`:h=C;break;case`meta`:b=C;break}}var ee=NK(a,y);if(i.tables.name=$V.parse(ee.data,ee.offset,r),i.names=i.tables.name,f&&v){var te=n===0,ne=NK(a,v),re=OK.parse(ne.data,ne.offset,i.numGlyphs,te),ie=NK(a,f);i.glyphs=KH.parse(ie.data,ie.offset,re,i,t)}else if(u){var ae=NK(a,u);bV.parse(ae.data,ae.offset,i,t)}else throw Error(`Font doesn't contain TrueType or CFF outlines.`);var oe=NK(a,g);if(jV.parse(i,oe.data,oe.offset,i.numberOfHMetrics,i.numGlyphs,i.glyphs,t),OB(i,t),_){var se=NK(a,_);i.kerningPairs=EK.parse(se.data,se.offset)}else i.kerningPairs={};if(p){var ce=NK(a,p);i.tables.gdef=_K.parse(ce.data,ce.offset)}if(m){var le=NK(a,m);i.tables.gpos=SK.parse(le.data,le.offset),i.position.init()}if(h){var ue=NK(a,h);i.tables.gsub=pH.parse(ue.data,ue.offset)}if(d){var de=NK(a,d);i.tables.fvar=uK.parse(de.data,de.offset,i.names)}if(b){var fe=NK(a,b);i.tables.meta=gH.parse(fe.data,fe.offset),i.metas=i.tables.meta}return i}function FK(e,t,n){n??={};var r=typeof window>`u`&&!n.isUrl?kK:AK;return new Promise(function(i,a){r(e,function(e,r){if(e){if(t)return t(e);a(e)}var o;try{o=PK(r,n)}catch(e){if(t)return t(e,null);a(e)}if(t)return t(null,o);i(o)})})}function IK(e,t){return PK(PH(nz().readFileSync(e)),t)}var LK=Object.freeze({__proto__:null,Font:nK,Glyph:MB,Path:Az,BoundingBox:kz,_parse:Z,parse:PK,load:FK,loadSync:IK}),RK=class e{sketches;constructor(e){e.length===0&&i(`CompoundSketch`,`Cannot create CompoundSketch with an empty array of sketches`),this.sketches=e}delete(){this.sketches.forEach(e=>{e.delete()})}get outerSketch(){return dA(this.sketches)}get innerSketches(){return this.sketches.slice(1)}get wires(){return XK(this)}face(){return YK(this)}extrude(e,t={}){return ZK(this,e,t)}revolve(e,t={}){return QK(this,e,t)}loftWith(t,n={}){return Array.isArray(t)||!(t instanceof e)?i(`CompoundSketch.loftWith`,`A compound (face-with-holes) sketch can only loft to another compound sketch with the same number of sub-sketches.`):$K(this,t,n)}sweepSketch(){return i(`CompoundSketch.sweepSketch`,`Sweeping a compound (face-with-holes) profile is not supported — sweep its outer Sketch instead.`)}};function zK(e){let t={};e.defaultOrigin&&(t.defaultOrigin=e.defaultOrigin),e.defaultDirection&&(t.defaultDirection=e.defaultDirection);let n=new eq(e.wire,t);return e.baseFace&&(n.baseFace=e.baseFace),n}function BK(e){return new RK(e.map(zK))}function VK(e){if(e instanceof eq)return e;let t=e.sketches;if(Array.isArray(t)){let[e,...n]=t;if(e instanceof eq){for(let e of n)e.delete();return e}}i(`asSketch`,`Expected a single-wire profile to loft or sweep.`)}function HK(e){let t;return t=e.baseFace?OA(e.baseFace,e.wire):j(EA(e.wire)),t}function UK(e){return bE(j(iO(e.wire.wrapped)))}function WK(e,t,{origin:n}={}){let r=j(EA(e.wire)),i=j(SM(r,n?CD(n):e.defaultOrigin,t?CD(t):[0,0,1]));return r[Symbol.dispose](),e.delete(),i}function GK(e,t,{extrusionDirection:n,extrusionProfile:r,twistAngle:i,origin:a}={}){let o=kD(ID(n?CD(n):e.defaultDirection),t),s=a?CD(a):e.defaultOrigin;if(r&&!i){let t=j(hM(e.wire,[...s],[...o],r));return e.delete(),t}if(i){let t=j(gM(e.wire,i,[...s],[...o],r));return e.delete(),t}let c=j(EA(e.wire)),l=j(xM(c,[...o]));return c[Symbol.dispose](),e.delete(),l}function KK(e,t,n={}){let r=Tk(e.wire),i=ID(kD(Ok(e.wire,1e-9),-1)),a=e.defaultDirection,o=kD(MD(i,a),-1),s=VK(t(WD([...r],[...o],[...i]),[...r])),c={forceProfileSpineOthogonality:!0,...n};e.baseFace&&(c.support=e.baseFace.wrapped);let l=j(pM(s.wire,e.wire,c));return e.delete(),l}function qK(e,t,n={},r=!1){let i=[e,...(Array.isArray(t)?t:[t]).map(VK)],a=j(wM(i.map(e=>e.wire),n,r));return i.forEach(e=>{e.delete()}),a}var JK=(e,t)=>{let n=j(t(dA(e))),r=e.slice(1).map(e=>j(t(e)));if(r.length===0)return n;try{return j(zA(n,r,{unsafe:!0}))}finally{n.delete();for(let e of r)e.delete()}};function YK(e){let t=e.outerSketch.face(),n=AA(t,e.innerSketches.map(e=>e.wire));return t[Symbol.dispose](),n}function XK(e){return sj(e.sketches.map(e=>e.wire))}function ZK(e,t,{extrusionDirection:n,extrusionProfile:r,twistAngle:i,origin:a}={}){let o=kD(ID(n?CD(n):e.outerSketch.defaultDirection),t);if(r&&!i)return JK(e.sketches,t=>hM(t.wire,a?CD(a):e.outerSketch.defaultOrigin,o,r));if(i)return JK(e.sketches,t=>gM(t.wire,i,a?CD(a):e.outerSketch.defaultOrigin,o,r));let s=YK(e),c=j(xM(s,o));return s[Symbol.dispose](),c}function QK(e,t,{origin:n}={}){let r=n?CD(n):e.outerSketch.defaultOrigin,i=t?CD(t):[0,0,1],a=YK(e),o=j(SM(a,r,i));return a[Symbol.dispose](),o}function $K(e,t,n={}){e.sketches.length!==t.sketches.length&&i(`CompoundSketch.loftWith`,`You need to loft with another compound with the same number of sketches`);let r=e.sketches.map((e,r)=>{let i=uA(t.sketches,r),a={};return n.ruled!==void 0&&(a.ruled=n.ruled),e.clone().loftWith(i.clone(),a,!0)}),a=YK(e),o=xE(j(iO(a.wrapped)));a[Symbol.dispose](),r.push(o,YK(t));let s=j(cj(r));for(let e of r)e[Symbol.dispose]();return s}var eq=class e{wire;_defaultOrigin;_defaultDirection;_baseFace;constructor(e,{defaultOrigin:t=[0,0,0],defaultDirection:n=[0,0,1]}={}){this.wire=e,this._defaultOrigin=CD(t),this._defaultDirection=CD(n),this.baseFace=null}get baseFace(){return this._baseFace}set baseFace(e){this._baseFace&&this._baseFace[Symbol.dispose](),this._baseFace=e&&xE(j(iO(e.wrapped)))}delete(){this.wire[Symbol.dispose](),this.baseFace&&this.baseFace[Symbol.dispose]()}clone(){let t=bE(j(iO(this.wire.wrapped))),n=new e(t,{defaultOrigin:this.defaultOrigin,defaultDirection:this.defaultDirection});return this.baseFace&&(n.baseFace=xE(j(iO(this.baseFace.wrapped)))),n}get defaultOrigin(){return this._defaultOrigin}set defaultOrigin(e){this._defaultOrigin=CD(e)}get defaultDirection(){return this._defaultDirection}set defaultDirection(e){this._defaultDirection=CD(e)}face(){return HK(this)}wires(){return UK(this)}faces(){return this.face()}revolve(e,t={}){return WK(this,e,t)}extrude(e,t={}){return GK(this,e,t)}sweepSketch(e,t={}){return KK(this,e,t)}loftWith(e,t={},n=!1){return qK(this,e,t,n)}},tq=class{sketches;constructor(e){this.sketches=e}soleSketch(e){this.sketches.length!==1&&i(`Sketches.${e}`,`Multiple profiles — ${e} each sub-sketch individually.`);let t=dA(this.sketches);return t instanceof eq||i(`Sketches.${e}`,`${e} is only supported on single-wire profiles.`),t}face(){return this.sketches.length!==1&&i(`Sketches.face`,`Multiple profiles — use faces() to combine them.`),dA(this.sketches).face()}loftWith(e,t,n){return this.soleSketch(`loftWith`).loftWith(e,t,n)}sweepSketch(e,t){return this.soleSketch(`sweepSketch`).sweepSketch(e,t)}wires(){return sj(this.sketches.flatMap(e=>e instanceof eq?[e.wire]:e.sketches.map(e=>e.wire)))}faces(){return sj(this.sketches.map(e=>e.face()))}extrude(e,t={}){return sj(this.sketches.map(n=>n.extrude(e,t)))}revolve(e,t){return sj(this.sketches.map(n=>n.revolve(e,t)))}},nq={};async function rq(e,t=`default`,n=!1){if(!n&&nq[t])return O(nq[t]);let r;if(typeof e==`string`){let t;try{t=await fetch(e)}catch(t){return k(So(M.FONT_FETCH_FAILED,`Failed to fetch font from ${e}: ${t instanceof Error?t.message:String(t)}`,t))}if(!t.ok)return k(So(M.FONT_FETCH_FAILED,`Failed to fetch font from ${e}: HTTP ${t.status} ${t.statusText}`));r=await t.arrayBuffer()}else r=e;let i;try{i=LK.parse(r)}catch(e){return k(So(M.FONT_PARSE_FAILED,`Failed to parse font data: ${e instanceof Error?e.message:String(e)}`,e))}let a=i;return nq[t]=a,nq.default||=a,O(a)}var iq=(e=`default`)=>nq[e],aq=function*(e){let t=null,n=null;for(let r of e){if(r.type===`Z`){t&&(yield t.close()),t=null;continue}let e=[-r.x,r.y];if(r.type===`M`){t&&(yield t.done()),t=new lR,t.movePointerTo(e),n=e;continue}n&&Math.abs(e[0]-n[0])<1e-9&&Math.abs(e[1]-n[1])<1e-9||(r.type===`L`&&t?.lineTo(e),r.type===`C`&&t?.cubicBezierCurveTo(e,[-r.x1,r.y1],[-r.x2,r.y2]),r.type===`Q`&&t?.quadraticBezierCurveTo(e,[-r.x1,r.y1]),n=e)}};function oq(e,{startX:t=0,startY:n=0,fontSize:r=16,fontFamily:a=`default`}={}){let o=iq(a);o||=iq(),o||i(`text`,`No fonts loaded. Call loadFont() before using text functions.`);let s=o.getPath(e,-t,-n,r);return QL(Array.from(aq(s.commands))).mirror([0,0])}var sq={XY:{dir:[0,0,1],xAxis:[1,0,0]},XZ:{dir:[0,-1,0],xAxis:[1,0,0]},YZ:{dir:[1,0,0],xAxis:[0,1,0]},YX:{dir:[0,0,-1],xAxis:[0,1,0]},ZX:{dir:[0,1,0],xAxis:[0,0,1]},ZY:{dir:[-1,0,0],xAxis:[0,0,1]},front:{dir:[0,-1,0],xAxis:[1,0,0]},back:{dir:[0,1,0],xAxis:[-1,0,0]},right:{dir:[-1,0,0],xAxis:[0,-1,0]},left:{dir:[1,0,0],xAxis:[0,1,0]},bottom:{dir:[0,0,1],xAxis:[1,0,0]},top:{dir:[0,0,-1],xAxis:[1,0,0]}};function cq(e){return typeof e==`string`&&e in sq}var lq=e=>{try{var t=jT();return e.IsNull()?[]:tD(t.u(W(e))).map(e=>j(_k(e)))}catch(e){t.e=e}finally{t.d()}};function uq(e,t,n=!0){let r=U().projectEdges(e.wrapped,[...t.position],[...t.direction],[...t.xAxis]),i=[...lq(r.visible.sharp),...lq(r.visible.smooth),...lq(r.visible.outline)],a=[...lq(r.hidden.sharp),...lq(r.hidden.smooth),...lq(r.hidden.outline)],o;if(n)o=a;else{for(let e of a)e[Symbol.dispose]();o=[]}return{visible:i,hidden:o}}function dq(e=[0,0,0],t=[0,0,1],n){if(ND(t)<1e-12)return k(P(`CAMERA_ZERO_DIRECTION`,`Camera direction cannot be a zero-length vector`));let r;if(n)r=ID(n);else{let e=MD([0,0,1],t);ND(e)<1e-12&&(e=MD([0,1,0],t)),ND(e)<1e-12&&(e=MD([1,0,0],t)),r=ID(e)}let i=ID(MD(t,r));return O({position:e,direction:ID(t),xAxis:r,yAxis:i})}function fq(e,t){let n=ID(OD(e.position,t));return dq(e.position,n)}function pq(e){let t=sq[e];return dq([0,0,0],t.dir,t.xAxis)}function mq(e,t,n=!0){return uq(e,t,n)}var hq=(e,n=1e-7)=>{if(e.length===0)return[];let r=new ML(e.length);e.forEach(e=>{let[t,i]=e.firstPoint;r.add(t-n,i-n,t+n,i+n)}),r.finish();let a=[],o=new Set;return e.forEach((s,c)=>{if(o.has(c))return;let l=[s],u=c;o.add(c);let d=e.length;for(;;){d--<0&&i(`stitchCurves`,`Infinite loop detected`);let[s,c]=t(l,l.length-1).lastPoint,f=r.search(s-n,c-n,s+n,c+n),p=t=>Math.abs((u-t)%e.length),m=f.filter(e=>!o.has(e)).map(n=>[t(e,n),n,p(n)]).sort(([,,e],[,,t])=>e-t);if(m.length===0){a.push(l);break}let[h,g]=t(m,0);l.push(h),o.add(g),u=g}}),a},gq=class extends cR{plane;constructor(e,t){super(),this.plane=e&&typeof e!=`string`?{...e}:j(qD(e??`XY`,t))}delete(){this.pendingCurves=[]}sagittaArcTo(e,t){return super.sagittaArcTo(e,-t)}buildWire(){try{var e=jT();this.pendingCurves.length||i(`Sketcher.buildWire`,`No lines to convert into a wire`);let t=e.u(new WT);return j(TA(hL(this.pendingCurves,this.plane).map(e=>t.register(e))))}catch(t){e.e=t}finally{e.d()}}done(){return new eq(this.buildWire(),{defaultOrigin:this.plane.origin,defaultDirection:this.plane.zDir})}close(){return this._closeSketch(),this.done()}closeWithMirror(){_I(this.pointer,this.firstPoint)&&i(`Sketcher.closeWithMirror`,`Cannot close with a mirror when the sketch is already closed`);let e=this.buildWire(),t=YD(this.plane,this.pointer),n=MD(ID(OD(t,YD(this.plane,this.firstPoint))),this.plane.zDir),r=j(rO(e.wrapped));return new eq(j(TA([e,bE(j(rO(U().mirror(r,CD(t),CD(n)))))])),{defaultOrigin:this.plane.origin,defaultDirection:this.plane.zDir})}closeWithCustomCorner(e,t=`fillet`){return this._closeSketch(),this._customCornerLastWithFirst(e,t),this.done()}},_q=class extends cR{face;_bounds;constructor(e,t=[0,0]){super(t),this.face=xE(j(iO(e.wrapped))),this._bounds=pO(e)}_convertToUV([e,t]){let{uMin:n,uMax:r,vMin:i,vMax:a}=this._bounds;return[n+e*(r-n),i+t*(a-i)]}_convertFromUV([e,t]){let{uMin:n,uMax:r,vMin:i,vMax:a}=this._bounds;return[(e-n)/(r-n),(t-i)/(a-i)]}_adaptSurface(){return U().extractSurfaceFromFace(this.face.wrapped)}buildWire(){let e=U(),t=this._adaptSurface(),n=j(TA(this.pendingCurves.map(n=>yE(e.buildEdgeOnSurface(n.wrapped,t)))));return e.buildCurves3d(n.wrapped),n}done(){try{var e=jT();let t=e.u(new WT),n=this.buildWire(),r=new eq(n);if(jk(n)){let e=t.register(r.clone().face()),n=mO(e,.5,.5),i=kD(_O(e),-1);r.defaultOrigin=[n[0],n[1],n[2]],r.defaultDirection=[i[0],i[1],i[2]]}else{let e=Tk(n),t=_O(this.face,[e[0],e[1],e[2]]);r.defaultOrigin=[e[0],e[1],e[2]],r.defaultDirection=[t[0],t[1],t[2]]}return r.baseFace=this.face,r}catch(t){e.e=t}finally{e.d()}}close(){return this._closeSketch(),this.done()}closeWithMirror(){return this._closeWithMirror(),this.close()}closeWithCustomCorner(e,t=`fillet`){return this._closeSketch(),this._customCornerLastWithFirst(e,t),this.done()}},vq=(e,t={})=>{try{var n=jT();let r=t.plane&&typeof t.plane!=`string`?{...t.plane}:j(qD(t.plane??`XY`,t.origin));return new eq(j(TA([n.u(new WT).register(gA(e,r.origin,r.zDir))])),{defaultOrigin:[...r.origin],defaultDirection:[...r.zDir]})}catch(e){n.e=e}finally{n.d()}},yq=(e=1,t=2,n={})=>{try{var r=jT();let i=n.plane&&typeof n.plane!=`string`?{...n.plane}:j(qD(n.plane??`XY`,n.origin)),a=i.xDir,o=e,s=t;return t>e&&(a=VD(a,i.zDir,90*xD),o=t,s=e),new eq(j(TA([r.u(new WT).register(j(_A(o,s,i.origin,i.zDir,a)))])),{defaultOrigin:[...i.origin],defaultDirection:[...i.zDir]})}catch(e){r.e=e}finally{r.d()}},bq=(e,t,n={})=>(n.plane&&typeof n.plane!=`string`?new gq(n.plane):new gq(n.plane,n.origin)).movePointerTo([-e/2,-t/2]).hLine(e).vLine(t).hLine(-e).vLine(-t).done(),xq=(e,t,n=0,r={})=>{let i=gR(e,t,n).sketchOnPlane(r.plane,r.origin),a={};return i.defaultOrigin&&(a.defaultOrigin=i.defaultOrigin),i.defaultDirection&&(a.defaultDirection=i.defaultDirection),new eq(i.wire,a)},Sq=(e,t,n=0,r={})=>{let i=[...Array(t).keys()].map(n=>{let r=-(Math.PI*2/t)*n;return[e*Math.sin(r),e*Math.cos(r)]}),a=r.plane&&typeof r.plane!=`string`?new gq(r.plane):new gq(r.plane,r.origin),o=fA(i),s=a.movePointerTo([uA(o,0),uA(o,1)]);return n?i.forEach(e=>s.sagittaArcTo([uA(e,0),uA(e,1)],n)):i.forEach(e=>s.lineTo([uA(e,0),uA(e,1)])),s.done()},Cq=(e,t,n=0)=>{let r=Math.PI/t,i=Math.cos(r)*e;return n>=0?i:i+n},wq=(e,t)=>{let n=[...vO(e)],r=[..._O(e)];return new eq(j(Rk(xO(e),t)),{defaultOrigin:n,defaultDirection:r})},Tq=(e,t={},{pointsCount:n=400,start:r=0,stop:i=1}={},a={})=>{try{var o=jT();let s=o.u(new WT),c=t.plane&&typeof t.plane!=`string`?{...t.plane}:j(qD(t.plane??`XY`,t.origin)),l=(i-r)/n,u=[...Array(n+1).keys()].map(t=>{let n=e(r+t*l);return YD(c,n)});return new eq(j(TA([s.register(j(xA(u,a)))])),{defaultOrigin:[...c.origin],defaultDirection:[...c.zDir]})}catch(e){o.e=e}finally{o.d()}},Eq=(e,t,n,r=[0,0,0],i=[0,0,1],a=!1)=>new eq(j(TA([vA(e,t,n,CD(r),CD(i),a)]))),Dq=(e,t,n)=>new gq().movePointerTo([-e/2,t/2]).hLine(e).vLine(-t).hLine(-e).close().extrude(n),Oq=(e,t)=>_I(e,t,hI*100),kq=(e,t,n,r)=>{let i=e[0]-t[0],a=e[1]-t[1],o=n[0]-r[0],s=n[1]-r[1],c=i*s-a*o;if(Math.abs(c)<1e-12)return null;let l=e[0]*t[1]-e[1]*t[0],u=n[0]*r[1]-n[1]*r[0];return[(l*o-u*i)/c,(l*s-u*a)/c]};function Aq(e,t,n,r,i){let a=fL(t,n,r.original.lastPoint);e(r),e(a)}function jq(e,t,n,r,i){let a=iL(t,n);e(r),e(a)}function Mq(e,t,n,r,i){let a=kq(r.offset instanceof eL?yI(t,r.offset.tangentAt(1)):r.offset.firstPoint,t,n,i.offset instanceof eL?vI(n,i.offset.tangentAt(0)):i.offset.lastPoint);if(!a){let i=iL(t,n);e(r),e(i);return}let o=SI([(t[0]+n[0])/2,(t[1]+n[1])/2],a),s=SI(t,n);if(s<1e-18||o>16*s){let i=iL(t,n);e(r),e(i);return}let c=iL(t,a),l=iL(a,n);e(r),e(c),e(l)}var Nq={round:Aq,bevel:jq,miter:Mq};function Pq(e,t,n){let r=n.length===1?To(n,0,`rawOffsets`):Fq(n,e.original.lastPoint),a=To(e.offset.splitAt([r],hI),0,`rawOffsets`),o=t.offset.splitAt([r],hI).at(-1);return o||i(`offset.rawOffsets`,`Split produced no trailing curve segment`),{splitPrevious:{offset:a,original:e.original},splitCurrent:{offset:o,original:t.original}}}function Fq(e,t){let n=To(e,0,`selectClosestIntersection`),r=SI(n,t);for(let i=1;i<e.length;i++){let a=To(e,i,`selectClosestIntersection`),o=SI(a,t);o<r&&(r=o,n=a)}return n}function Iq(e){let t=new Map,n=(e,n)=>{let r=t.get(e)||[];t.set(e,[...r,...n])},r=new ML(e.length);for(let t of e){let[[e,n],[i,a]]=t.boundingBox.bounds;r.add(e,n,i,a)}return r.finish(),e.forEach((t,i)=>{let[[a,o],[s,c]]=t.boundingBox.bounds,l=r.search(a,o,s,c);for(let r of l){if(r<=i)continue;let a=To(e,r,`offsetBlueprint`),{intersections:o,commonSegmentsPoints:s}=j(LL(t,a,hI)),c=[...o,...s].filter(e=>{let n=Oq(e,t.firstPoint)||Oq(e,t.lastPoint),r=Oq(e,a.firstPoint)||Oq(e,a.lastPoint);return!(n&&r)});c.length&&(n(i,c),n(r,c))}}),t}function Lq(e,t,n={}){let r=e.orientation===`clockwise`?-t:t,a=e.curves.map(e=>({offset:BL(e,r),original:e})),o=[],s=null,c=a.at(-1);if(!c)return[];function l(e){if(e instanceof eL){o.push(e);return}s?e.offset instanceof eL?o.push(e.offset):Oq(e.offset.firstPoint,e.offset.lastPoint)||o.push(iL(e.offset.firstPoint,e.offset.lastPoint)):s=e}let u=function*(){for(let e of a.slice(0,-1))yield e;s||i(`offset.rawOffsets`,`No saved curve after iterating offset segments`),yield s};for(let e of u()){let t=c.offset.lastPoint,r=e.offset.firstPoint;if(Oq(t,r)){l(c),c=e;continue}let i=[];if(c.offset instanceof eL&&e.offset instanceof eL){let{intersections:t,commonSegmentsPoints:n}=j(LL(c.offset,e.offset,hI/100));i=[...t,...n]}if(i.length>0){let{splitPrevious:t,splitCurrent:n}=Pq(c,e,i);l(t),c=n;continue}let a=Nq[n.lineJoinType??`round`];a(l,t,r,c,e),c=e}return l(c),o}function Rq(e,n,r={}){let i=Lq(e,n,r);if(i.length<2)return null;let a=Iq(i);if(!a.size){let t=new OL(i);return e.intersects(t)?null:t}let o=i.flatMap((e,t)=>{if(!a.has(t))return e;let n=a.get(t)||[];return e.splitAt(n,hI*100)}),s=new ML(e.curves.length);for(let t of e.curves){let[[e,n],[r,i]]=t.boundingBox.bounds;s.add(e,n,r,i)}s.finish();let c=Math.abs(n),l=o.filter(n=>{let[[r,i],[a,o]]=n.boundingBox.bounds;return!s.search(r-c,i-c,a+c,o+c).some(r=>t(e.curves,r).distanceFrom(n)<c-hI)});if(!l.length)return null;let u=hq(l).filter(e=>e.length>1).map(e=>new OL(e)).filter(e=>e.isClosed());return u.length?u.length===1?To(u,0,`offsetBlueprint`):new GL(u):null}var zq=e=>{let t=To(e,0,`fuseAll`);for(let n=1;n<e.length;n++)t=QR(t,To(e,n,`fuseAll`));return t};function Bq(e,t,n={}){if(e instanceof OL)return Rq(e,t,n);if(e instanceof GL)return zq(e.blueprints.map(e=>Bq(e,t,n)));if(e instanceof KL){let r=zq(e.blueprints.slice(1).map(e=>Bq(e,-t,n)));return ez(Bq(To(e.blueprints,0,`offset`),t,n),r)}return null}function Vq(e,t){return e instanceof OL?new OL(rL(e.curves,t)):e instanceof KL?new KL(e.blueprints.map(e=>Vq(e,t))):e instanceof GL?new GL(e.blueprints.map(e=>Vq(e,t))):e}function Hq(e,t,n,r){let a=()=>!0;r&&(a=r.shouldKeep.bind(r));let o=[dA(t.curves)],s=(t,r)=>{a({firstCurve:t,secondCurve:r,point:t.lastPoint})?o.push(...e(t,r,n)):o.push(t,r)};t.curves.slice(1).forEach(e=>{let t=o.pop();t||i(`customCorners.modifyCorners`,`Unexpected empty curve stack during filleting`),s(t,e)});let c=o.at(-1);if(c||i(`customCorners.modifyCorners`,`Unexpected empty curve list during corner modification`),_I(dA(o).firstPoint,c.lastPoint)&&o.length>1){let e=o.pop(),t=o.shift();(!e||!t)&&i(`customCorners.modifyCorners`,`Unexpected empty curve stack during close-and-fillet`),s(e,t)}return new OL(o)}function Uq(e,t,n,r){return t instanceof OL?Hq(e,t,n,r):t instanceof KL?new KL(t.blueprints.map(t=>Hq(e,t,n,r))):t instanceof GL?new GL(t.blueprints.map(t=>Uq(e,t,n,r)).filter(e=>e!==null)):null}function Wq(e,t,n){return Uq(HL,e,t,n)}function Gq(e,t,n){return Uq(UL,e,t,n)}function Kq(e,t){return e instanceof OL?zK(t):e instanceof KL?BK(t):new tq(t.map(e=>Array.isArray(e)?BK(e):zK(e)))}var qq=class e{innerShape;constructor(e=null){this.innerShape=e}clone(){return new e(this.innerShape?.clone()||null)}serialize(){if(!this.innerShape)return JSON.stringify({type:`Empty`});function e(t){if(t instanceof KL)return{type:`CompoundBlueprint`,blueprints:t.blueprints.map(e)};if(t instanceof GL)return{type:`Blueprints`,blueprints:t.blueprints.map(e)};if(t instanceof OL)return{type:`Blueprint`,curves:t.curves.map(e=>e.serialize())};i(`Drawing.serialize`,`Unknown shape type for serialization`)}return JSON.stringify(e(this.innerShape))}get boundingBox(){return this.innerShape?this.innerShape.boundingBox:new QI}stretch(t,n,r){return this.innerShape?new e(this.innerShape.stretch(t,n,r)):new e}get repr(){return this.innerShape===null?`=== empty shape`:this.innerShape.repr}rotate(t,n){return this.innerShape?new e(this.innerShape.rotate(t,n)):new e}translate(t,n=0){return this.innerShape?new e(typeof t==`number`?this.innerShape.translate(t,n):this.innerShape.translate(t)):new e}scale(t,n){return this.innerShape?new e(this.innerShape.scale(t,n)):new e}mirror(t,n,r){return this.innerShape?new e(this.innerShape.mirror(t,n,r)):new e}cut(t){return new e(ez(this.innerShape,t.innerShape))}fuse(t){return new e(QR(this.innerShape,t.innerShape))}intersect(t){return new e(tz(this.innerShape,t.innerShape))}fillet(t,n){let r=n&&n(mR());return new e(Wq(this.innerShape,t,r))}chamfer(t,n){let r=n&&n(mR());return new e(Gq(this.innerShape,t,r))}sketchOnPlane(e,t){this.innerShape||i(`Drawing`,`Trying to sketch an empty drawing`);let n=this.innerShape.sketchOnPlane(e,t);return Kq(this.innerShape,n)}sketchOnFace(e,t){this.innerShape||i(`Drawing`,`Trying to sketch an empty drawing`);let n=this.innerShape.sketchOnFace(e,t);return Kq(this.innerShape,n)}punchHole(e,t,n={}){return this.innerShape?this.innerShape.punchHole(e,t,n):e}toSVG(e){return this.innerShape?.toSVG(e)||``}toSVGViewBox(e=1){return this.innerShape?.toSVGViewBox(e)||``}toSVGPaths(){return this.innerShape?.toSVGPaths()||[]}offset(t,n={}){return new e(Bq(this.innerShape,t,n))}approximate(t,n={}){return t!==`svg`&&i(`Drawing.approximate`,`Only 'svg' is supported for now`),new e(Vq(this.innerShape,n))}get blueprint(){if(!(this.innerShape instanceof OL)){if(this.innerShape instanceof GL&&this.innerShape.blueprints.length===1&&this.innerShape.blueprints[0]instanceof OL)return this.innerShape.blueprints[0];i(`Drawing.blueprint`,`This drawing is not a blueprint`)}return this.innerShape}};function Jq(e){function t(e){if(e.type===`CompoundBlueprint`)return new KL(e.blueprints.map(t));if(e.type===`Blueprints`)return new GL(e.blueprints.map(t));if(e.type===`Blueprint`)return new OL(e.curves.map(e=>$I(e)));i(`Drawing.deserialize`,`Unknown shape type for deserialization`)}return new qq(t(JSON.parse(e)))}var Yq=class extends cR{constructor(e=[0,0]){super(),this.pointer=e,this.firstPoint=e,this.pendingCurves=[]}done(){return new qq(new OL(this.pendingCurves))}close(){return this._closeSketch(),this.done()}closeWithMirror(){return this._closeWithMirror(),this.close()}closeWithCustomCorner(e,t=`fillet`){return this._closeSketch(),this._customCornerLastWithFirst(e,t),this.done()}};function Xq(e){let t=new Yq;return e&&t.movePointerTo(e),t}function Zq(e,t,n=0){return new qq(gR(e,t,n))}var Qq=Zq;function $q(e){return new qq(new OL([sL(e)]))}function eJ(e,t){let[n,r]=[e,t].sort((e,t)=>e-t);return new qq(new OL([cL(r,n,r===e?[1,0]:[0,1])]))}function tJ(e){return Xq().movePointerTo([-e,0]).sagittaArc(2*e,0,e).sagittaArc(-2*e,0,e).close()}function nJ(e,t){return Xq().movePointerTo([-e,0]).halfEllipse(2*e,0,t).halfEllipse(-2*e,0,t).close()}function rJ(e,t,n=0){return new qq(hR(e,t,n))}function iJ(e,{startX:t=0,startY:n=0,fontSize:r=16,fontFamily:i=`default`}={}){return new qq(oq(e,{startX:t,startY:n,fontSize:r,fontFamily:i}))}var aJ=(e,t={},n={})=>{e.length<2&&i(`drawPointsInterpolation`,`Need at least 2 points for interpolation, got ${e.length}`);let r=[j(dL(e,t))],a=e[0],o=e[e.length-1];return n.closeShape&&a&&o&&!_I(a,o)&&r.push(iL(o,a)),new qq(new OL(r))},oJ=(e,{pointsCount:t=400,start:n=0,stop:r=1,closeShape:i=!1}={},a={})=>{let o=(r-n)/t;return aJ([...Array(t+1).keys()].map(t=>e(n+t*o)),a,{closeShape:i})},sJ=e=>{try{var t=jT();let n=t.u(new WT),r=Qq(1e3,1e3).sketchOnPlane();n.register(r.wire);let i=n.register(j(EA(r.wire))),a=hq(e.map(e=>wL(e,i))).map(e=>new OL(e));return a.length===0?new qq:a.length===1?new qq(a[0]):new qq(new GL(a))}catch(e){t.e=e}finally{t.d()}};function cJ(e,t=`front`){let n;n=typeof t==`string`?j(pq(t)):t;let{visible:r,hidden:i}=mq(e,n);try{return{visible:sJ(r),hidden:sJ(i)}}finally{for(let e of r)e[Symbol.dispose]();for(let e of i)e[Symbol.dispose]()}}function lJ(e){try{var t=jT();let n=t.u(new WT),r=n.register(xE(j(iO(e.wrapped)))),i=hq(tD(n.register(xO(r))).map(t=>wL(t,e))).map(e=>new OL(e));return i.length===0?new qq:i.length===1?new qq(i[0]):new qq(new GL(i))}catch(e){t.e=e}finally{t.d()}}function uJ(e,t,n){return n===void 0?e.sketchOnPlane(t):e.sketchOnPlane(t,n)}function dJ(e,t){return e.fuse(t)}function fJ(e,t){return e.cut(t)}function pJ(e,t){return e.intersect(t)}function mJ(e,t,n){return e.fillet(t,n)}function hJ(e,t,n){return e.chamfer(t,n)}function gJ(e,t,n=0){return typeof t==`number`?e.translate(t,n):e.translate(t)}function _J(e,t,n){return e.rotate(t,n)}function vJ(e,t,n){return e.scale(t,n)}function yJ(e,t,n,r){return e.mirror(t,n,r)}function bJ(e){let t=e.clone();return t.reverse(),t}function xJ(e){return e.boundingBox}function SJ(e){return e.firstPoint}function CJ(e){return e.lastPoint}function wJ(e,t,n){return e.splitAt(t,n)}function TJ(e,t,n){return e.parameter(t,n)}function EJ(e,t){return e.tangentAt(t)}function DJ(e,t){return e.isOnCurve(t)}function OJ(e,t){return e.distanceFrom(t)}function kJ(e){return e.length===0?k(P(M.BLUEPRINT_EMPTY_CURVES,`createBlueprint: at least one curve is required`)):O(new OL(e))}function AJ(e){return e.length===0?k(P(M.COMPOUND_BLUEPRINT_EMPTY,`createCompoundBlueprint: at least one blueprint (outer boundary) is required`)):O(new KL(e))}function jJ(e){return e.boundingBox}function MJ(e){return e.orientation}function NJ(e,t){return e.isInside(t)}function PJ(e){return e.toSVGPathD()}function FJ(e,t,n){return e.translate(t,n)}function IJ(e,t,n){return e.rotate(t,n)}function LJ(e,t,n){return e.scale(t,n)}function RJ(e,t,n,r){return e.mirror(t,n,r)}function zJ(e,t,n,r){return e.stretch(t,n,r)}function BJ(e,t,n){return e.sketchOnPlane(t,n)}function VJ(e,t,n){return e.sketchOnFace(t,n)}function HJ(e,t){return n(e,t*3)}function UJ(e,t){return n(e,t)}function WJ(e){let t=[`# brepjs OBJ export`],n=e.vertices.length/3;for(let r=0;r<n;r++){let[n,i,a]=HJ(e.vertices,r);t.push(`v ${n} ${i} ${a}`)}let r=e.normals.length/3;for(let n=0;n<r;n++){let[r,i,a]=HJ(e.normals,n);t.push(`vn ${r} ${i} ${a}`)}let i=n=>{let[r,i,a]=UJ(e.triangles,n);t.push(`f ${r+1}//${r+1} ${i+1}//${i+1} ${a+1}//${a+1}`)};if(e.faceGroups.length>0)for(let n of e.faceGroups){t.push(`g face_${n.faceId}`);let e=n.count/3;for(let t=0;t<e;t++)i(n.start+t*3)}else{let t=e.triangles.length/3;for(let e=0;e<t;e++)i(e*3)}return t.join(`
25
+ `)+`
26
+ `}var GJ=5126,KJ=5125,qJ=34962,JJ=34963,YJ=[-Math.SQRT1_2,0,0,Math.SQRT1_2];function XJ(e){return e===`Z`?[{mesh:0}]:[{name:`Z_up_to_Y_up`,rotation:YJ,children:[1]},{mesh:0}]}function ZJ(e){let n=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let i=0;i<e.length;i+=3)for(let a=0;a<3;a++){let o=t(e,i+a);o<t(n,a)&&(n[a]=o),o>t(r,a)&&(r[a]=o)}return{min:n,max:r}}function QJ(e){return e+3&-4}function $J(e){let t=new Uint8Array(e),n=8192,r=[];for(let e=0;e<t.length;e+=n)r.push(String.fromCharCode(...t.subarray(e,e+n)));return btoa(r.join(``))}function eY(e,t){let n=iY(e,`base64`,t);return JSON.stringify(n)}function tY(e,t){let{doc:n,binBuffer:r}=aY(e,t),i=JSON.stringify(n),a=new TextEncoder().encode(i),o=QJ(a.length),s=new Uint8Array(o);s.set(a);for(let e=a.length;e<o;e++)s[e]=32;let c=QJ(r.byteLength),l=new Uint8Array(c);l.set(new Uint8Array(r));let u=20+o+8+c,d=new ArrayBuffer(u),f=new DataView(d),p=new Uint8Array(d);f.setUint32(0,1179937895,!0),f.setUint32(4,2,!0),f.setUint32(8,u,!0),f.setUint32(12,o,!0),f.setUint32(16,1313821514,!0),p.set(s,20);let m=20+o;return f.setUint32(m,c,!0),f.setUint32(m+4,5130562,!0),p.set(l,m+8),d}function nY(e,t,n,r,i){return[{bufferView:0,componentType:KJ,count:e.length,type:`SCALAR`},{bufferView:1,componentType:GJ,count:t.length/3,type:`VEC3`,min:r,max:i},{bufferView:2,componentType:GJ,count:n.length/3,type:`VEC3`}]}function rY(e,t,n){return[{buffer:0,byteOffset:0,byteLength:e,target:JJ},{buffer:0,byteOffset:QJ(e),byteLength:t,target:qJ},{buffer:0,byteOffset:QJ(e)+t,byteLength:n,target:qJ}]}function iY(e,t,n){let{vertices:r,normals:i,triangles:a}=e,o=n?.materials;if(o&&o.size>0&&e.faceGroups.length>0)return dY(e,t,o,n.upAxis??`Y`);let s=a.byteLength,c=r.byteLength,l=i.byteLength,u=QJ(s)+c+l,{min:d,max:f}=ZJ(r),p={asset:{version:`2.0`,generator:`brepjs`},scene:0,scenes:[{nodes:[0]}],nodes:XJ(n?.upAxis??`Y`),meshes:[{primitives:[{attributes:{POSITION:1,NORMAL:2},indices:0}]}],accessors:nY(a,r,i,d,f),bufferViews:rY(s,c,l),buffers:[{byteLength:u}]};if(t===`base64`){let t=pY(e);p.buffers[0]={byteLength:u,uri:`data:application/octet-stream;base64,`+$J(t)}}return p}function aY(e,t){let n=t?.materials;if(n&&n.size>0&&e.faceGroups.length>0){let{doc:r,binBuffer:i}=fY(e,n,t.upAxis??`Y`);return{doc:r,binBuffer:i}}return{doc:iY(e,`glb`,t),binBuffer:pY(e)}}function oY(e,n){let{vertices:r,normals:i,triangles:a,faceGroups:o}=e,s=[],c=new Map,l=new Map;for(let e of n.values()){if(l.has(e))continue;let t=JSON.stringify([e.baseColor,e.metallic,e.roughness,e.name]),n=c.get(t);if(n!==void 0)l.set(e,n);else{let n=s.length;c.set(t,n),l.set(e,n),s.push({name:e.name??`material_${n}`,pbrMetallicRoughness:{baseColorFactor:e.baseColor??[.8,.8,.8,1],metallicFactor:e.metallic??0,roughnessFactor:e.roughness??.5}})}}let u=new Map;for(let e=0;e<o.length;e++){let t=uA(o,e),r=n.get(t.faceId),i=r===void 0?-1:l.get(r)??-1,a=u.get(i);a?a.push(e):u.set(i,[e])}let d=[];for(let[e,n]of u){let r=0;for(let e of n)r+=uA(o,e).count;let i=new Uint32Array(r),s=0;for(let e of n){let n=uA(o,e);for(let e=n.start;e<n.start+n.count;e++)i[s++]=t(a,e)}d.push({indices:i,materialIdx:e})}let f=0,p=[];for(let e of d){let t=e.indices.byteLength;p.push({byteOffset:f,byteLength:t}),f=QJ(f+t)}let m=f;return{primitiveData:d,indexBufferInfos:p,verticesOffset:m,totalByteLength:m+r.byteLength+i.byteLength,uniqueMaterials:s}}function sY(e,t,n,r){let{vertices:i,normals:a}=e,{min:o,max:s}=ZJ(i),c=r.length;r.push({buffer:0,byteOffset:t,byteLength:i.byteLength,target:qJ});let l=n.length;n.push({bufferView:c,componentType:GJ,count:i.length/3,type:`VEC3`,min:o,max:s});let u=r.length;r.push({buffer:0,byteOffset:t+i.byteLength,byteLength:a.byteLength,target:qJ});let d=n.length;return n.push({bufferView:u,componentType:GJ,count:a.length/3,type:`VEC3`}),{verticesAccIdx:l,normalsAccIdx:d}}function cY(e,t,n,r,i,a){let o=[];for(let s=0;s<e.length;s++){let c=uA(e,s),l=uA(t,s),u=a.length;a.push({buffer:0,byteOffset:l.byteOffset,byteLength:l.byteLength,target:JJ});let d=i.length;i.push({bufferView:u,componentType:KJ,count:c.indices.length,type:`SCALAR`});let f={attributes:{POSITION:n,NORMAL:r},indices:d};c.materialIdx>=0&&(f.material=c.materialIdx),o.push(f)}return o}function lY(e,t,n=`Y`){let{primitiveData:r,indexBufferInfos:i,verticesOffset:a,totalByteLength:o,uniqueMaterials:s}=t,c=[],l=[],{verticesAccIdx:u,normalsAccIdx:d}=sY(e,a,c,l),f=cY(r,i,u,d,c,l);return{asset:{version:`2.0`,generator:`brepjs`},scene:0,scenes:[{nodes:[0]}],nodes:XJ(n),meshes:[{primitives:f}],accessors:c,bufferViews:l,buffers:[{byteLength:o}],materials:s}}function uY(e,t){let{vertices:n,normals:r}=e,{primitiveData:i,indexBufferInfos:a,verticesOffset:o,totalByteLength:s}=t,c=new ArrayBuffer(s),l=new Uint8Array(c);for(let e=0;e<i.length;e++){let t=uA(i,e),n=uA(a,e);l.set(new Uint8Array(t.indices.buffer,t.indices.byteOffset,t.indices.byteLength),n.byteOffset)}return l.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),o),l.set(new Uint8Array(r.buffer,r.byteOffset,r.byteLength),o+n.byteLength),c}function dY(e,t,n,r=`Y`){let i=oY(e,n),a=lY(e,i,r);if(t===`base64`){let t=uY(e,i);a.buffers[0]={byteLength:i.totalByteLength,uri:`data:application/octet-stream;base64,`+$J(t)}}return a}function fY(e,t,n=`Y`){let r=oY(e,t);return{doc:lY(e,r,n),binBuffer:uY(e,r)}}function pY(e){let{vertices:t,normals:n,triangles:r}=e,i=r.byteLength,a=t.byteLength,o=n.byteLength,s=QJ(i)+a+o,c=new ArrayBuffer(s),l=new Uint8Array(c);return l.set(new Uint8Array(r.buffer,r.byteOffset,i),0),l.set(new Uint8Array(t.buffer,t.byteOffset,a),QJ(i)),l.set(new Uint8Array(n.buffer,n.byteOffset,o),QJ(i)+a),c}function mY(e,t){let n=t?.layer??`0`,r=[];r.push(`0`,`SECTION`,`2`,`HEADER`),r.push(`9`,`$ACADVER`,`1`,`AC1009`),r.push(`0`,`ENDSEC`);let i=new Set([n]);for(let t of e)t.layer&&i.add(t.layer);r.push(`0`,`SECTION`,`2`,`TABLES`),r.push(`0`,`TABLE`,`2`,`LAYER`,`70`,String(i.size));for(let e of i)r.push(`0`,`LAYER`,`2`,e,`70`,`0`,`62`,`7`,`6`,`CONTINUOUS`);r.push(`0`,`ENDTAB`),r.push(`0`,`ENDSEC`),r.push(`0`,`SECTION`,`2`,`ENTITIES`);for(let t of e){let e=t.layer??n;if(t.type===`LINE`)r.push(`0`,`LINE`,`8`,e,`10`,String(t.start[0]),`20`,String(t.start[1]),`30`,`0`,`11`,String(t.end[0]),`21`,String(t.end[1]),`31`,`0`);else{r.push(`0`,`LWPOLYLINE`,`8`,e,`90`,String(t.points.length),`70`,t.closed?`1`:`0`);for(let e of t.points)r.push(`10`,String(e[0]),`20`,String(e[1]))}}return r.push(`0`,`ENDSEC`),r.push(`0`,`EOF`),r.join(`
27
+ `)+`
28
+ `}function hY(e,t){let n=t?.curveSegments??32,r=[],i=gY(e);for(let e of i)for(let t of e.curves)r.push(..._Y(t,n));return mY(r,t)}function gY(e){if(`curves`in e&&Array.isArray(e.curves))return[e];if(`blueprints`in e&&Array.isArray(e.blueprints)){let t=[];for(let n of e.blueprints)t.push(...gY(n));return t}return[]}function _Y(e,t){return e.geomType===`LINE`?[{type:`LINE`,start:e.firstPoint,end:e.lastPoint}]:[vY(e,t)]}function vY(e,t){let n=e.firstParameter,r=e.lastParameter,i=[];for(let a=0;a<=t;a++){let o=n+(r-n)*(a/t);i.push(e.value(o))}return{type:`POLYLINE`,points:i}}var yY=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=t&1?3988292384^t>>>1:t>>>1;yY[e]=t}function bY(e){let t=4294967295;for(let n of e)t=(yY[(t^n)&255]??0)^t>>>8;return(t^4294967295)>>>0}function xY(e,t,n,r){return e.setUint32(n,67324752,!0),n+=4,e.setUint16(n,20,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint32(n,r.crc,!0),n+=4,e.setUint32(n,r.data.length,!0),n+=4,e.setUint32(n,r.data.length,!0),n+=4,e.setUint16(n,r.name.length,!0),n+=2,e.setUint16(n,0,!0),n+=2,t.set(r.name,n),n+=r.name.length,t.set(r.data,n),n+=r.data.length,n}function SY(e,t,n,r,i){return e.setUint32(n,33639248,!0),n+=4,e.setUint16(n,20,!0),n+=2,e.setUint16(n,20,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint32(n,i.crc,!0),n+=4,e.setUint32(n,i.data.length,!0),n+=4,e.setUint32(n,i.data.length,!0),n+=4,e.setUint16(n,i.name.length,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint16(n,0,!0),n+=2,e.setUint32(n,0,!0),n+=4,e.setUint32(n,r,!0),n+=4,t.set(i.name,n),n+=i.name.length,n}function CY(e,t,n,r,i){e.setUint32(t,101010256,!0),t+=4,e.setUint16(t,0,!0),t+=2,e.setUint16(t,0,!0),t+=2,e.setUint16(t,n,!0),t+=2,e.setUint16(t,n,!0),t+=2,e.setUint32(t,i,!0),t+=4,e.setUint32(t,r,!0),t+=4,e.setUint16(t,0,!0)}function wY(e){let t=0,n=[];for(let r of e)n.push({offset:t,entry:r}),t+=30+r.name.length+r.data.length;let r=t,i=0;for(let t of e)i+=46+t.name.length;let a=t+i+22,o=new ArrayBuffer(a),s=new DataView(o),c=new Uint8Array(o),l=0;for(let{entry:e}of n)l=xY(s,c,l,e);for(let{offset:e,entry:t}of n)l=SY(s,c,l,e,t);return CY(s,l,e.length,r,i),o}function TY(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function EY(e){let t=e=>Math.round(Math.max(0,Math.min(1,e))*255).toString(16).padStart(2,`0`).toUpperCase();return`#${t(e[0])}${t(e[1])}${t(e[2])}${t(e[3])}`}function DY(e){let t=[];for(let n=0;n<e.vertices.length;n+=3){let r=e.vertices[n]??0,i=e.vertices[n+1]??0,a=e.vertices[n+2]??0;t.push(` <vertex x="${r}" y="${i}" z="${a}" />`)}return t}function OY(e){let t=new Map,n=[];if(e!==void 0&&e.size>0)for(let r of e.values()){let e=EY(r);t.has(e)||(t.set(e,n.length),n.push(e))}return{colorIndexByHex:t,colorHexList:n}}function kY(e){let t=new Map,n=[];if(e!==void 0&&e.size>0)for(let r of e.values())t.has(r.name)||(t.set(r.name,n.length),n.push(r));return{materialIndexByName:t,materialList:n}}function AY(e,t,n,r,i){let a=new Map;for(let o of e.faceGroups){let e=o.start/3,s=o.count/3,c=o.faceId,l;if(n!==void 0){let e=n.get(c);if(e!==void 0){let t=i.get(e.name);t!==void 0&&(l={pid:3,p1:t})}}if(l===void 0&&t!==void 0){let e=t.get(c);if(e!==void 0){let t=EY(e),n=r.get(t);n!==void 0&&(l={pid:2,p1:n})}}if(l!==void 0)for(let t=e;t<e+s;t++)a.set(t,l)}return a}function jY(e,t){let n=[];for(let r=0;r<e.triangles.length;r+=3){let i=r/3,a=e.triangles[r]??0,o=e.triangles[r+1]??0,s=e.triangles[r+2]??0,c=t.get(i);c===void 0?n.push(` <triangle v1="${a}" v2="${o}" v3="${s}" />`):n.push(` <triangle v1="${a}" v2="${o}" v3="${s}" pid="${c.pid}" p1="${c.p1}" />`)}return n}function MY(e,t){let n=[];if(e.length>0){let t=e.map(e=>` <color color="${e}" />`).join(`
29
+ `);n.push(` <colorgroup id="2">\n${t}\n </colorgroup>`)}if(t.length>0){let e=t.map(e=>{let t=e.displayColor===void 0?`#FFFFFFFF`:EY(e.displayColor);return` <base name="${TY(e.name)}" displaycolor="${t}" />`}).join(`
30
+ `);n.push(` <basematerials id="3">\n${e}\n </basematerials>`)}return n}function NY(e,t,n,r,i){let a=DY(e),{colorIndexByHex:o,colorHexList:s}=OY(r),{materialIndexByName:c,materialList:l}=kY(i),u=jY(e,AY(e,r,i,o,c)),d=MY(s,l);return`<?xml version="1.0" encoding="UTF-8"?>
31
+ <model unit="${n}" xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02"${l.length>0?`
32
+ xmlns:m="http://schemas.microsoft.com/3dmanufacturing/material/2015/02"`:``}>
33
+ <resources>${d.length>0?`
34
+ `+d.join(`
35
+ `):``}
36
+ <object id="1" name="${TY(t)}" type="model">
37
+ <mesh>
38
+ <vertices>
39
+ ${a.join(`
40
+ `)}
41
+ </vertices>
42
+ <triangles>
43
+ ${u.join(`
44
+ `)}
45
+ </triangles>
46
+ </mesh>
47
+ </object>
48
+ </resources>
49
+ <build>
50
+ <item objectid="1" />
51
+ </build>
52
+ </model>`}function PY(e,t={}){let{name:n=`model`,unit:r=`millimeter`,colors:i,materials:a}=t,o=new TextEncoder,s=NY(e,n,r,i,a);function c(e,t){let n=o.encode(e),r=o.encode(t);return{name:n,data:r,crc:bY(r)}}return wY([c(`[Content_Types].xml`,`<?xml version="1.0" encoding="UTF-8"?>
53
+ <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
54
+ <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
55
+ <Default Extension="model" ContentType="application/vnd.ms-package.3dmanufacturing-3dmodel+xml" />
56
+ </Types>`),c(`_rels/.rels`,`<?xml version="1.0" encoding="UTF-8"?>
57
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
58
+ <Relationship Target="/3D/3dmodel.model" Id="rel0" Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel" />
59
+ </Relationships>`),c(`3D/3dmodel.model`,s)])}function FY(e){let t=[],n=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g,r;for(;(r=n.exec(e))!==null;){let e=r[1]??``,n=(r[2]??``).trim(),i=[];if(n){let e=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g,t;for(;(t=e.exec(n))!==null;)i.push(parseFloat(t[0]))}t.push({command:e,args:i})}return t}function IY(e){return[e[0],-e[1]]}function LY(e,t,n,r){let i=0;for(;i<e.length;){let a=(n?t.cx:0)+(e[i]??0),o=(n?t.cy:0)+(e[i+1]??0);i===0?(t.sx=a,t.sy=o):r.push(iL(IY([t.cx,t.cy]),IY([a,o]))),t.cx=a,t.cy=o,i+=2}}function RY(e,t,n,r){let i=0;for(;i<e.length;){let a=(n?t.cx:0)+(e[i]??0),o=(n?t.cy:0)+(e[i+1]??0);r.push(iL(IY([t.cx,t.cy]),IY([a,o]))),t.cx=a,t.cy=o,i+=2}}function zY(e,t,n,r){for(let i of e){let e=n?t.cx+i:i;r.push(iL(IY([t.cx,t.cy]),IY([e,t.cy]))),t.cx=e}}function BY(e,t,n,r){for(let i of e){let e=n?t.cy+i:i;r.push(iL(IY([t.cx,t.cy]),IY([t.cx,e]))),t.cy=e}}function VY(e,t,n,r){let i=0;for(;i+5<e.length;){let a=n?t.cx:0,o=n?t.cy:0,s=a+(e[i]??0),c=o+(e[i+1]??0),l=a+(e[i+2]??0),u=o+(e[i+3]??0),d=a+(e[i+4]??0),f=o+(e[i+5]??0);r.push(uL(IY([t.cx,t.cy]),[IY([s,c]),IY([l,u])],IY([d,f]))),t.prevControlX=l,t.prevControlY=u,t.cx=d,t.cy=f,i+=6}}function HY(e,t,n,r){let i=0;for(;i+3<e.length;){let a=n?t.cx:0,o=n?t.cy:0,s=t.lastCmd,c=s===`C`||s===`S`?2*t.cx-t.prevControlX:t.cx,l=s===`C`||s===`S`?2*t.cy-t.prevControlY:t.cy,u=a+(e[i]??0),d=o+(e[i+1]??0),f=a+(e[i+2]??0),p=o+(e[i+3]??0);r.push(uL(IY([t.cx,t.cy]),[IY([c,l]),IY([u,d])],IY([f,p]))),t.prevControlX=u,t.prevControlY=d,t.cx=f,t.cy=p,t.lastCmd=`S`,i+=4}}function UY(e,t,n,r){let i=0;for(;i+3<e.length;){let a=n?t.cx:0,o=n?t.cy:0,s=a+(e[i]??0),c=o+(e[i+1]??0),l=a+(e[i+2]??0),u=o+(e[i+3]??0);r.push(uL(IY([t.cx,t.cy]),[IY([s,c])],IY([l,u]))),t.prevControlX=s,t.prevControlY=c,t.cx=l,t.cy=u,i+=4}}function WY(e,t,n,r){let i=0;for(;i+1<e.length;){let a=n?t.cx:0,o=n?t.cy:0,s=t.lastCmd,c=s===`Q`||s===`T`?2*t.cx-t.prevControlX:t.cx,l=s===`Q`||s===`T`?2*t.cy-t.prevControlY:t.cy,u=a+(e[i]??0),d=o+(e[i+1]??0);r.push(uL(IY([t.cx,t.cy]),[IY([c,l])],IY([u,d]))),t.prevControlX=c,t.prevControlY=l,t.cx=u,t.cy=d,t.lastCmd=`T`,i+=2}}function GY(e,t,n,r,i){let a=Math.max(n,r),o=i?1:-1,s=t+2*o*a,c=[e-o*a,t+o*a],l=[e+o*a,t+o*a];try{return[aL(IY([e,t]),IY(c),IY([e,s])),aL(IY([e,s]),IY(l),IY([e,t]))]}catch{return[]}}function KY(e,t,n,r,i,a,o,s){let c=.5,l=e+c*(n-e),u=t+c*(r-t),d=n-e,f=r-t,p=Math.sqrt(d*d+f*f),m=Math.max(i,a),h=p/2,g=h<m?m-Math.sqrt(m*m-h*h):m,_=(o===s?-1:1)*(s?1:-1),v=-f/p,y=d/p,b=l+_*g*v,x=u+_*g*y;try{return[aL(IY([e,t]),IY([b,x]),IY([n,r]))]}catch{return[iL(IY([e,t]),IY([n,r]))]}}function qY(e,t,n,r){let i=0;for(;i+6<e.length;){let a=n?t.cx:0,o=n?t.cy:0,s=Math.abs(e[i]??0),c=Math.abs(e[i+1]??0),l=(e[i+3]??0)!==0,u=(e[i+4]??0)!==0,d=a+(e[i+5]??0),f=o+(e[i+6]??0);if(s===0||c===0)r.push(iL(IY([t.cx,t.cy]),IY([d,f])));else{let e=d-t.cx,n=f-t.cy;Math.sqrt(e*e+n*n)<1e-10?r.push(...GY(t.cx,t.cy,s,c,u)):r.push(...KY(t.cx,t.cy,d,f,s,c,l,u))}t.cx=d,t.cy=f,i+=7}}function JY(e,t){(Math.abs(e.cx-e.sx)>1e-10||Math.abs(e.cy-e.sy)>1e-10)&&t.push(iL(IY([e.cx,e.cy]),IY([e.sx,e.sy]))),e.cx=e.sx,e.cy=e.sy}function YY(e){let t=FY(e),n=[],r={cx:0,cy:0,sx:0,sy:0,prevControlX:0,prevControlY:0,lastCmd:``};for(let{command:e,args:i}of t){let t=e===e.toLowerCase(),a=e.toUpperCase();switch(a){case`M`:LY(i,r,t,n);break;case`L`:RY(i,r,t,n);break;case`H`:zY(i,r,t,n);break;case`V`:BY(i,r,t,n);break;case`C`:VY(i,r,t,n);break;case`S`:HY(i,r,t,n);break;case`Q`:UY(i,r,t,n);break;case`T`:WY(i,r,t,n);break;case`A`:qY(i,r,t,n);break;case`Z`:JY(r,n);break}a!==`S`&&a!==`T`&&(r.lastCmd=a)}return n}function XY(e){try{let t=YY(e);return t.length===0?k(So(`SVG_EMPTY_PATH`,`SVG path produced no curves`)):O(new OL(t))}catch(e){return k(So(`SVG_PARSE_FAILED`,`Failed to parse SVG path: ${e instanceof Error?e.message:String(e)}`))}}function ZY(e){try{let t=/\bd\s*=\s*(?:"([^"]*)"|'([^']*)')/,n=[],r=e.toLowerCase(),i=0;for(;i<r.length;){let a=r.indexOf(`<path `,i);if(a===-1)break;let o=e.indexOf(`>`,a);if(o===-1)break;let s=e.slice(a,o+1);i=o+1;let c=t.exec(s),l=c?.[1]??c?.[2];if(!l)continue;let u=XY(l);u.ok&&n.push(u.value)}return n.length===0?k(So(`SVG_NO_PATHS`,`No <path> elements found in SVG`)):O(n)}catch(e){return k(So(`SVG_IMPORT_FAILED`,`Failed to import SVG: ${e instanceof Error?e.message:String(e)}`))}}function QY(e,t){try{let n=U(),r=e.map(e=>({shape:e.shape.wrapped,name:e.name,color:e.color?[...e.color]:void 0}));return O(n.exportSTEPConfigured(r,t))}catch(e){return k(So(M.STEP_EXPORT_CONFIGURED_FAILED,`Configured STEP export failed`,e))}}async function $Y(e){try{let t=await e.arrayBuffer(),n=U().importSTEP(t);return n.length===0?k(So(`STEP_IMPORT_FAILED`,`STEP file contains no valid geometry`)):O(FE(n[0]))}catch(e){return k(So(`STEP_IMPORT_FAILED`,`Failed to load STEP file`,e))}}async function eX(e){try{let t=await e.arrayBuffer(),n=U().importSTL(t);return n.IsNull()?k(So(`STL_IMPORT_FAILED`,`Failed to create solid from STL mesh`)):O(FE(n))}catch(e){return k(So(`STL_IMPORT_FAILED`,`Failed to load STL file`,e))}}async function tX(e){try{let t=await e.arrayBuffer(),n=U().importIGES(t);return n.length===0?k(So(`IGES_IMPORT_FAILED`,`IGES file contains no valid geometry`)):O(FE(n[0]))}catch(e){return k(So(`IGES_IMPORT_FAILED`,`Failed to load IGES file`,e))}}function nX(e,t,n={}){let r=oq(e,t);return new tq((typeof n.plane==`string`||n.plane===void 0?r.sketchOnPlane(n.plane,n.origin):r.sketchOnPlane(n.plane)).map(e=>Array.isArray(e)?new RK(e.map(zK)):zK(e)))}function rX(e,t){let n=t?.fontSize??1,r=iq(t?.fontFamily);if(!r)return k(P(M.NO_FONT_LOADED,`No font loaded. Call loadFont() first.`,void 0,void 0,`Load a font with loadFont() before calling textMetrics()`));let i=r.getAdvanceWidth(e,n),a=n/r.unitsPerEm,o=r.ascender*a,s=r.descender*a;return O({width:i,height:o-s,ascender:o,descender:s})}function iX(e){let t=e?.fontSize??1,n=iq(e?.fontFamily);if(!n)return k(P(M.NO_FONT_LOADED,`No font loaded. Call loadFont() first.`,void 0,void 0,`Load a font with loadFont() before calling fontMetrics()`));let r=t/n.unitsPerEm,i=n.ascender*r,a=n.descender*r,o=(n.tables?.os2?.sTypoLineGap??0)*r;return O({ascender:i,descender:a,unitsPerEm:n.unitsPerEm,lineHeight:i-a+o})}function aX(e){return e.type===`init`}function oX(e){return e.type===`operation`}function sX(e){return e.type===`dispose`}function cX(e){return e.type===`batch`}function lX(e){return e.success}function uX(e){return!e.success}function dX(){return{pending:new Map}}function fX(e,t){let n=new Map(e.pending);return n.set(t.id,t),{pending:n}}function pX(e,t){let n=e.pending.get(t);if(!n)return{queue:e,task:void 0};let r=new Map(e.pending);return r.delete(t),{queue:{pending:r},task:n}}function mX(e){return e.pending.size}function hX(e){return e.pending.size===0}function gX(e,t){for(let n of e.pending.values())n.reject(t);return{pending:new Map}}function _X(e,t){let n=t.data,r=e.get(n.id);if(r)if(e.delete(n.id),lX(n)){let e={};n.resultBrep!==void 0&&(e.resultBrep=n.resultBrep),n.resultData!==void 0&&(e.resultData=n.resultData),r.resolve(e)}else r.reject(Error(n.error))}function vX(e){let{worker:t,wasmUrl:n}=e,r=new Map,i=!1;function a(){return crypto.randomUUID()}function o(e){_X(r,e)}t.addEventListener(`message`,o);function s(e){return i?Promise.reject(Error(`WorkerClient has been disposed`)):new Promise((n,i)=>{r.set(e.id,{resolve:n,reject:i}),t.postMessage(e)})}return{async init(){await s({id:a(),type:`init`,...n===void 0?{}:{wasmUrl:n}})},async execute(e,t,n){return s({id:a(),type:`operation`,operation:e,shapesBrep:t,parameters:n})},executeBatch(e){let t=e.length;return s({id:a(),type:`batch`,operations:e}).then(e=>{let n=e.resultData;if(!Array.isArray(n)||n.length!==t)throw Error(`Invalid batch response: expected ${t} results`);return n})},dispose(){i=!0;for(let e of r.values())e.reject(Error(`WorkerClient disposed`));r.clear(),t.removeEventListener(`message`,o);let e={id:a(),type:`dispose`};t.postMessage(e)}}}function yX(){return{operations:new Map}}function bX(e,t,n){let r=new Map(e.operations);return r.set(t,n),{operations:r}}function xX(e){return e instanceof Error?e.message:String(e)}function SX(e,t,n,r){let i=e.operations.get(t);if(!i)return{success:!1,error:`Unknown operation: ${t}`};try{let e=i(n,r);return{success:!0,...e.resultBrep===void 0?{}:{resultBrep:e.resultBrep},...e.resultData===void 0?{}:{resultData:e.resultData}}}catch(e){return{success:!1,error:xX(e)}}}function CX(e,t){return t.success?{id:e,success:!0,...t.resultBrep===void 0?{}:{resultBrep:t.resultBrep},...t.resultData===void 0?{}:{resultData:t.resultData}}:{id:e,success:!1,error:t.error??`operation failed`}}function wX(e,t){let n=globalThis;n.onmessage=async r=>{let i=r.data;if(aX(i)){try{await t(i.wasmUrl);let e={id:i.id,success:!0};n.postMessage(e)}catch(e){let t={id:i.id,success:!1,error:xX(e)};n.postMessage(t)}return}if(oX(i)){let t=SX(e,i.operation,i.shapesBrep,i.parameters);n.postMessage(CX(i.id,t));return}if(cX(i)){let t=i.operations.map(t=>SX(e,t.operation,t.shapesBrep,t.params)),r={id:i.id,success:!0,resultData:t};n.postMessage(r);return}if(sX(i)){let e={id:i.id,success:!0};n.postMessage(e),n.close?.()}}}function TX(e){let{workers:t,wasmUrl:n}=e;if(t.length===0)throw Error(`createWorkerPool requires at least one worker`);let r=t.map(e=>({client:vX({worker:e,...n===void 0?{}:{wasmUrl:n}}),inFlight:0})),i=!1;function a(){return r.reduce((e,t)=>t.inFlight<e.inFlight?t:e)}function o(e,t,n){if(i)return Promise.reject(Error(`WorkerPool has been disposed`));let r=a();return r.inFlight+=1,r.client.execute(e,t,n).finally(()=>{--r.inFlight})}function s(){if(!i){i=!0;for(let e of r)e.client.dispose()}}return{size:r.length,async init(){try{await Promise.all(r.map(e=>e.client.init()))}catch(e){throw s(),e}},execute:o,executeBatch(e){return Promise.all(e.map(e=>o(e.operation,e.shapesBrep,e.params)))},inFlight(){return r.map(e=>e.inFlight)},dispose:s}}var EX=Object.defineProperty,DX=(e,t)=>{let n={};for(var r in e)EX(n,r,{get:e[r],enumerable:!0});return t||EX(n,Symbol.toStringTag,{value:`Module`}),n},OX=1,kX=2;function AX(e,t){t===`commonFace`&&e.SetGlue(OX),t===`sameFace`&&e.SetGlue(kX)}function jX(e){return typeof e==`number`}function MX(e){if(typeof e==`number`)return!0;if(typeof e==`object`&&e){let t=e;return`distances`in t&&Array.isArray(t.distances)&&`selectedFace`in t||`distance`in t&&`angle`in t&&`selectedFace`in t}return!1}function NX(e){return typeof e==`number`?!0:Array.isArray(e)&&e.length===2?e.every(jX):!1}function PX(e,t){let n=n=>{let r=e.findAll(n);if(r.length===0)return[];let i=0,a=FD(bD(dA(r)),t);for(let e=1;e<r.length;e++){let n=FD(bD(uA(r,e)),t);n<a&&(a=n,i=e)}return[uA(r,i)]},r=e=>{let t=n(e);return t.length===0?k(Co(`FINDER_NOT_UNIQUE`,`Finder expected a unique match but found 0 element(s)`)):O(dA(t))};return{...e,findAll:n,findUnique:r}}function FX(e){return MI(`vertex`,e,FX,(t,n)=>({nearestTo:t=>PX(FX(e),t),atPosition:(e,t=1e-4)=>n(n=>FD(bD(n),e)<t),withinBox:(e,t)=>n(n=>{let r=bD(n);return r[0]>=e[0]-1e-6&&r[0]<=t[0]+1e-6&&r[1]>=e[1]-1e-6&&r[1]<=t[1]+1e-6&&r[2]>=e[2]-1e-6&&r[2]<=t[2]+1e-6}),atDistance:(e,t=[0,0,0],r=1e-4)=>n(n=>{let i=bD(n);return Math.abs(FD(i,t)-e)<r})}))}function IX(){return FX([])}var LX=new Map,RX=null,zX=null;function BX(e,t){LX.set(e,t),RX||=e,e===RX&&(zX=t)}function VX(e){if(!e&&zX)return zX;let t=e??RX;if(!t)throw Error(`brepjs voxel engine not initialized. Call initVoxel() (or registerVoxel()) before using voxel operations.`);let n=LX.get(t);if(!n)throw Error(`brepjs: voxel engine '${t}' is not registered.`);return n}function HX(){return RX}function UX(e,t=`voxel`){BX(t,e),RX=t,zX=e}function WX(e){if(e.vertices.length%3!=0)return P(`VOXEL_INVALID_MESH`,`mesh.vertices length must be a multiple of 3 (flat xyz).`);if(e.triangles.length%3!=0)return P(`VOXEL_INVALID_MESH`,`mesh.triangles length must be a multiple of 3.`);let t=e.vertices.length/3;for(let n=0;n<e.triangles.length;n++){let r=e.triangles[n];if(r===void 0||r>=t)return P(`VOXEL_INVALID_TRIANGLE_INDEX`,`triangle index ${r} at position ${n} is out of range for ${t} vertices.`)}return null}function GX(e,t){return WX(e)||(t.length%3==0?null:P(`VOXEL_INVALID_QUERIES`,`queries length must be a multiple of 3 (flat xyz).`))}function KX(e){try{return O(VX(e))}catch(e){return k(xo(`VOXEL_NOT_INITIALIZED`,e instanceof Error?e.message:`voxel engine not initialized`,e))}}function qX(e,t,n){let r=GX(e,t);if(r)return k(r);let i=KX(n);return A(i)?i:O(i.value.winding_numbers(e.vertices,e.triangles,t))}function JX(e,t,n){let r=GX(e,t);if(r)return k(r);let i=KX(n);if(A(i))return i;let a=i.value.points_inside(e.vertices,e.triangles,t);return O(Array.from(a,e=>e===1))}var YX=48,XX=2;function ZX(e,t,n){let r=WX(e);if(r)return k(r);if(e.vertices.length===0||e.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`repairMesh requires a non-empty triangle mesh.`));let i=t?.resolution??YX,a=t?.padding??XX;if(!Number.isInteger(i)||i<1)return k(P(`VOXEL_INVALID_RESOLUTION`,`resolution must be an integer >= 1.`));if(!Number.isInteger(a)||a<1)return k(P(`VOXEL_INVALID_PADDING`,`padding must be an integer >= 1.`));let o=KX(n);if(A(o))return o;try{try{var s=jT();let t=s.u(o.value.repair_mesh(e.vertices,e.triangles,i,a)),n=t.positions.length/3;return O({vertices:t.positions,normals:t.normals,triangles:t.indices,uvs:new Float32Array(n*2),faceGroups:[{start:0,count:t.indices.length/3,faceHash:0}]})}catch(e){s.e=e}finally{s.d()}}catch(e){return k(F(`VOXEL_REPAIR_FAILED`,e instanceof Error?e.message:`voxel repair failed (grid too large?).`,e))}}var QX=.001;function $X(e,t=QX){try{let n=Yk(e,{tolerance:t});return n.vertices.length===0||n.triangles.length===0?k(F(`VOXEL_SHAPE_MESH_EMPTY`,`shape tessellated to an empty triangle mesh.`)):O({vertices:n.vertices,triangles:n.triangles})}catch(e){return k(F(`VOXEL_SHAPE_MESH_FAILED`,e instanceof Error?e.message:`failed to mesh shape for voxel op.`,e))}}var eZ=48,tZ=2,nZ={union:0,intersection:1,difference:2};function rZ(e){let t=e?.resolution??eZ,n=e?.padding??tZ;return!Number.isInteger(t)||t<1?k(P(`VOXEL_INVALID_RESOLUTION`,`resolution must be an integer >= 1.`)):!Number.isInteger(n)||n<1?k(P(`VOXEL_INVALID_PADDING`,`padding must be an integer >= 1.`)):O({resolution:t,padding:n})}function iZ(e){if(e.positions.length===0||e.indices.length===0)return k(F(`VOXEL_DEGENERATE_RESULT`,`the voxel operation produced an empty mesh (over-shrunk offset or disjoint operands?).`));let t=e.positions.length/3;return O({vertices:e.positions,normals:e.normals,triangles:e.indices,uvs:new Float32Array(t*2),faceGroups:[{start:0,count:e.indices.length/3,faceHash:0}]})}function aZ(e,t,n,r){let i=WX(e);if(i)return k(i);if(e.vertices.length===0||e.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`offsetMesh requires a non-empty triangle mesh.`));if(!Number.isFinite(t))return k(P(`VOXEL_INVALID_DISTANCE`,`distance must be a finite number.`));let a=rZ(n);if(A(a))return a;let o=KX(r);if(A(o))return o;try{try{var s=jT();return iZ(s.u(o.value.offset_mesh(e.vertices,e.triangles,t,a.value.resolution,a.value.padding)))}catch(e){s.e=e}finally{s.d()}}catch(e){return k(F(`VOXEL_OFFSET_FAILED`,e instanceof Error?e.message:`voxel offset failed (grid too large?).`,e))}}function oZ(e,t,n,r){let i=WX(e);if(i)return k(i);if(e.vertices.length===0||e.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`shellMesh requires a non-empty triangle mesh.`));if(!Number.isFinite(t)||t<=0)return k(P(`VOXEL_INVALID_THICKNESS`,`thickness must be a finite number > 0.`));let a=rZ(n);if(A(a))return a;let o=KX(r);if(A(o))return o;try{try{var s=jT();return iZ(s.u(o.value.shell_mesh(e.vertices,e.triangles,t,a.value.resolution,a.value.padding)))}catch(e){s.e=e}finally{s.d()}}catch(e){return k(F(`VOXEL_SHELL_FAILED`,e instanceof Error?e.message:`voxel shell failed (grid too large?).`,e))}}function sZ(e,t,n,r,i){let a=WX(e);if(a)return k(a);let o=WX(t);if(o)return k(o);if(e.vertices.length===0||e.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`voxelBoolean requires a non-empty mesh for operand A.`));if(t.vertices.length===0||t.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`voxelBoolean requires a non-empty mesh for operand B.`));let s=nZ[n],c=rZ(r);if(A(c))return c;let l=KX(i);if(A(l))return l;try{try{var u=jT();return iZ(u.u(l.value.voxel_boolean(e.vertices,e.triangles,t.vertices,t.triangles,s,c.value.resolution,c.value.padding)))}catch(e){u.e=e}finally{u.d()}}catch(e){return k(F(`VOXEL_BOOLEAN_FAILED`,e instanceof Error?e.message:`voxel boolean failed (grid too large?).`,e))}}function cZ(e,t,n,r){let i=$X(e);return A(i)?i:aZ(i.value,t,n,r)}function lZ(e,t,n,r){let i=$X(e);return A(i)?i:oZ(i.value,t,n,r)}function uZ(e,t,n,r,i){let a=$X(e);if(A(a))return a;let o=$X(t);return A(o)?o:sZ(a.value,o.value,n,r,i)}var dZ=48,fZ=2,pZ={union:0,intersection:1,difference:2};function mZ(e){let t=e?.resolution??dZ,n=e?.padding??fZ;return!Number.isInteger(t)||t<1?k(P(`VOXEL_INVALID_RESOLUTION`,`resolution must be an integer >= 1.`)):!Number.isInteger(n)||n<1?k(P(`VOXEL_INVALID_PADDING`,`padding must be an integer >= 1.`)):O({resolution:t,padding:n})}function hZ(e){try{var t=jT();let n=e.contour(),{positions:r,normals:i,indices:a}=t.u({value:n,[Symbol.dispose](){n.free()}}).value;if(r.length===0||a.length===0)return k(F(`VOXEL_DEGENERATE_RESULT`,`the voxel field contoured to an empty mesh (over-shrunk offset or disjoint operands?).`));let o=r.length/3;return O({vertices:r,normals:i,triangles:a,uvs:new Float32Array(o*2),faceGroups:[{start:0,count:a.length/3,faceHash:0}]})}catch(e){t.e=e}finally{t.d()}}function gZ(e){return{raw:e,delete(){e.free()}}}function _Z(e){return vZ(e)}function vZ(e){let t=UT(gZ(e)),n={get value(){return t.value.raw},get disposed(){return t.disposed},[Symbol.dispose](){t[Symbol.dispose]()},boolean(e,t){return this.value.boolean(e.value,pZ[t]),n},offset(e){return this.value.offset(e),n},shell(e){return this.value.shell(e),n},reinit(){return this.value.reinit(),n},contour(){let e=hZ(this.value);if(A(e))throw Error(e.error.message);return e.value}};return n}function yZ(e){return!e.disposed}function bZ(){return k(P(`VOXEL_FIELD_DISPOSED`,`the voxel field handle has been disposed.`))}function xZ(e,t,n){let r=WX(e);if(r)return k(r);if(e.vertices.length===0||e.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`voxelField requires a non-empty triangle mesh.`));let i=mZ(t);if(A(i))return i;let a=KX(n);if(A(a))return a;try{return O(vZ(new a.value.VoxelField(e.vertices,e.triangles,i.value.resolution,i.value.padding)))}catch(e){return k(F(`VOXEL_FIELD_VOXELIZE_FAILED`,e instanceof Error?e.message:`voxel field voxelization failed (grid too large or non-dense?).`,e))}}function SZ(e,t,n,r,i){let a=WX(e);if(a)return k(a);let o=WX(t);if(o)return k(o);if(e.vertices.length===0||e.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`voxelBooleanField requires a non-empty mesh for operand A.`));if(t.vertices.length===0||t.triangles.length===0)return k(P(`VOXEL_EMPTY_MESH`,`voxelBooleanField requires a non-empty mesh for operand B.`));let s=mZ(r);if(A(s))return s;let c=KX(i);if(A(c))return c;try{return O(vZ(c.value.VoxelField.boolean_of(e.vertices,e.triangles,t.vertices,t.triangles,pZ[n],s.value.resolution,s.value.padding)))}catch(e){return k(F(`VOXEL_FIELD_BOOLEAN_FAILED`,e instanceof Error?e.message:`voxel field boolean failed (grid too large or non-dense?).`,e))}}function CZ(e,t,n){if(!yZ(e)||!yZ(t))return bZ();try{return e.value.boolean(t.value,pZ[n]),O(e)}catch(e){return k(F(`VOXEL_FIELD_BOOLEAN_FAILED`,e instanceof Error?e.message:`voxel field boolean failed (dim mismatch?).`,e))}}function wZ(e,t){if(!yZ(e))return bZ();if(!Number.isFinite(t))return k(P(`VOXEL_INVALID_DISTANCE`,`distance must be a finite number.`));try{return e.value.offset(t),O(e)}catch(e){return k(F(`VOXEL_FIELD_OFFSET_FAILED`,e instanceof Error?e.message:`voxel field offset failed.`,e))}}function TZ(e,t){if(!yZ(e))return bZ();if(!Number.isFinite(t)||t<=0)return k(P(`VOXEL_INVALID_THICKNESS`,`thickness must be a finite number > 0.`));try{return e.value.shell(t),O(e)}catch(e){return k(F(`VOXEL_FIELD_SHELL_FAILED`,e instanceof Error?e.message:`voxel field shell failed.`,e))}}function EZ(e){if(!yZ(e))return bZ();try{return e.value.reinit(),O(e)}catch(e){return k(F(`VOXEL_FIELD_REINIT_FAILED`,e instanceof Error?e.message:`voxel field reinit failed.`,e))}}function DZ(e){if(!yZ(e))return bZ();try{return hZ(e.value)}catch(e){return k(F(`VOXEL_FIELD_CONTOUR_FAILED`,e instanceof Error?e.message:`voxel field contour failed.`,e))}}function OZ(e,t,n){let r=$X(e);return A(r)?r:xZ(r.value,t,n)}function kZ(e,t,n,r,i){let a=$X(e);if(A(a))return a;let o=$X(t);return A(o)?o:SZ(a.value,o.value,n,r,i)}var AZ=48,jZ=2;function MZ(e){try{return O(VX(e))}catch(e){return k(xo(`VOXEL_NOT_INITIALIZED`,e instanceof Error?e.message:`voxel engine not initialized`,e))}}function NZ(e){let t=e?.resolution??AZ,n=e?.padding??jZ;return!Number.isInteger(t)||t<1?k(P(`SDF_INVALID_RESOLUTION`,`resolution must be an integer >= 1.`)):!Number.isInteger(n)||n<1?k(P(`SDF_INVALID_PADDING`,`padding must be an integer >= 1.`)):O({resolution:t,padding:n})}function PZ(e){return{raw:e,delete(){e.free()}}}var FZ={offsetField(e){return IZ(this.value.offset_field(e.value))},roundField(e){return IZ(this.value.round_field(e.value))},shellField(e){return IZ(this.value.shell_field(e.value))},smoothUnionField(e,t){return IZ(this.value.smooth_union_field(e.value,t.value))}};function IZ(e){let t=UT(PZ(e));return{get value(){return t.value.raw},get disposed(){return t.disposed},[Symbol.dispose](){t[Symbol.dispose]()},union(e){return IZ(this.value.union(e.value))},intersection(e){return IZ(this.value.intersection(e.value))},difference(e){return IZ(this.value.difference(e.value))},smoothUnion(e,t){return IZ(this.value.smooth_union(e.value,t))},smoothIntersection(e,t){return IZ(this.value.smooth_intersection(e.value,t))},smoothDifference(e,t){return IZ(this.value.smooth_difference(e.value,t))},offset(e){return IZ(this.value.offset(e))},round(e){return IZ(this.value.round(e))},shell(e){return IZ(this.value.shell(e))},onion(e){return IZ(this.value.onion(e))},...FZ,translate(e,t,n){return IZ(this.value.translate(e,t,n))},rotate(e,t,n,r){return IZ(this.value.rotate(e,t,n,r))},scale(e){return IZ(this.value.scale(e))},rasterize(e){return LZ(this.value,e)},rasterizeIn(e,t){return RZ(this.value,e,t)}}}function LZ(e,t){let n=NZ(t);if(A(n))return n;try{return O(_Z(e.rasterize(n.value.resolution,n.value.padding)))}catch(e){return zZ(e)}}function RZ(e,t,n){let r=NZ(n);if(A(r))return r;let i=BZ(t);if(i)return k(i);try{return O(_Z(e.rasterize_in(t.min[0],t.min[1],t.min[2],t.max[0],t.max[1],t.max[2],r.value.resolution,r.value.padding)))}catch(e){return zZ(e)}}function zZ(e){return k(F(`SDF_RASTERIZE_FAILED`,e instanceof Error?e.message:`SDF rasterization failed (grid too large?).`,e))}function BZ(e){if(![...e.min,...e.max].every(e=>Number.isFinite(e)))return P(`SDF_INVALID_BOUNDS`,`bounds must be finite numbers.`);for(let t=0;t<3;t++)if(e.max[t]<=e.min[t])return P(`SDF_INVALID_BOUNDS`,`bounds max must exceed min on every axis.`);return null}function VZ(e,t){let n=MZ(t);if(A(n))return n;try{return O(IZ(e(n.value)))}catch(e){return k(F(`SDF_BUILD_FAILED`,e instanceof Error?e.message:`SDF primitive construction failed.`,e))}}function HZ(e,t){return VZ(t=>t.Sdf.sphere(e),t)}function UZ(e,t,n,r){return VZ(r=>r.Sdf.box_(e,t,n),r)}function WZ(e,t,n,r,i){return VZ(i=>i.Sdf.rounded_box(e,t,n,r),i)}function GZ(e,t,n){return VZ(n=>n.Sdf.cylinder(e,t),n)}function KZ(e,t,n){return VZ(n=>n.Sdf.cone(e,t),n)}function qZ(e,t,n,r){return VZ(r=>r.Sdf.capsule(e[0],e[1],e[2],t[0],t[1],t[2],n),r)}function JZ(e,t,n){return VZ(n=>n.Sdf.torus(e,t),n)}function YZ(e,t,n){return VZ(n=>n.Sdf.plane(e[0],e[1],e[2],t),n)}function XZ(e){if(e.length<2)return k(P(`SDF_INVALID_SPINE`,`sweep spine needs at least 2 points.`));let t=new Float64Array(e.length*3);for(let n=0;n<e.length;n++){let r=e[n];if(!r.every(e=>Number.isFinite(e)))return k(P(`SDF_INVALID_SPINE`,`sweep spine coordinates must be finite.`));t[n*3]=r[0],t[n*3+1]=r[1],t[n*3+2]=r[2]}return O(t)}function ZZ(e,t,n,r){let i=XZ(e);if(A(i))return i;let a=n?.closed??!1;return VZ(e=>e.Sdf.sweep(i.value,t.value,a),r)}var QZ={gyroid:0,schwarzP:1,diamond:2};function $Z(e,t,n,r){let i=QZ[e];return i===void 0?k(P(`SDF_INVALID_LATTICE_KIND`,`unknown lattice kind: ${e}`)):VZ(e=>e.Sdf.lattice(i,t.value,n.value),r)}function eQ(e,t,n){return VZ(n=>n.Sdf.strut_lattice(e,t.value),n)}function tQ(e){return{raw:e,delete(){e.free()}}}function nQ(e){let t=UT(tQ(e));return{get value(){return t.value.raw},get disposed(){return t.disposed},[Symbol.dispose](){t[Symbol.dispose]()}}}function rQ(e,t){let n=MZ(t);if(A(n))return n;try{return O(nQ(e(n.value)))}catch(e){return k(F(`SDF_FIELD_BUILD_FAILED`,e instanceof Error?e.message:`scalar field construction failed.`,e))}}function iQ(e,t){return rQ(t=>t.ScalarField.constant(e),t)}function aQ(e,t,n,r,i,a){return rQ(a=>a.ScalarField.axial_ramp(e,t,n,r,i),a)}function oQ(e,t,n,r,i,a,o){return rQ(o=>o.ScalarField.radial_ramp(e[0],e[1],e[2],t,n,r,i,a),o)}function sQ(e,t,n,r){return rQ(r=>r.ScalarField.from_sdf(e.value,t,n),r)}function cQ(e,t,n,r){return rQ(r=>r.ScalarField.clamp(e.value,t,n),r)}var lQ={gyroid:0,schwarzP:1,diamond:2},uQ=48,dQ=2;function fQ(e){let t=lQ[e.type];if(t===void 0)return k(P(`LATTICE_INVALID_TYPE`,`lattice type must be one of gyroid, schwarzP, diamond (got '${e.type}').`));if(!(e.period>0))return k(P(`LATTICE_INVALID_PERIOD`,`period must be > 0.`));if(!(e.thickness>0))return k(P(`LATTICE_INVALID_THICKNESS`,`thickness must be > 0.`));let n=e.resolution??uQ,r=e.padding??dQ;return!Number.isInteger(n)||n<1?k(P(`LATTICE_INVALID_RESOLUTION`,`resolution must be an integer >= 1.`)):!Number.isInteger(r)||r<1?k(P(`LATTICE_INVALID_PADDING`,`padding must be an integer >= 1.`)):O({tag:t,period:e.period,thickness:e.thickness,resolution:n,padding:r})}function pQ(e){let t=e.positions.length/3;return{vertices:e.positions,normals:e.normals,triangles:e.indices,uvs:new Float32Array(t*2),faceGroups:[{start:0,count:e.indices.length/3,faceHash:0}]}}function mQ(e,t,n){let r=WX(e);if(r)return k(r);if(e.vertices.length===0||e.triangles.length===0)return k(P(`LATTICE_EMPTY_MESH`,`latticeInfill requires a non-empty triangle mesh.`));let i=fQ(t);if(A(i))return i;let a=KX(n);if(A(a))return a;let{tag:o,period:s,thickness:c,resolution:l,padding:u}=i.value;try{try{var d=jT();return O(pQ(d.u(a.value.lattice_infill(e.vertices,e.triangles,l,u,o,s,c))))}catch(e){d.e=e}finally{d.d()}}catch(e){return k(F(`LATTICE_INFILL_FAILED`,e instanceof Error?e.message:`lattice infill failed (grid too large?).`,e))}}function hQ(e,t,n){let r=$X(e);return A(r)?r:mQ(r.value,t,n)}function gQ(e,t,n){for(let t=0;t<3;t++){let n=e.min[t],r=e.max[t];if(n===void 0||r===void 0||!(n<r))return k(P(`LATTICE_INVALID_BOUNDS`,`bounds.min must be strictly less than bounds.max on every axis (axis ${t}).`))}let r=fQ(t);if(A(r))return r;let i=KX(n);if(A(i))return i;let{tag:a,period:o,thickness:s,resolution:c,padding:l}=r.value,[u,d,f]=e.min,[p,m,h]=e.max;try{try{var g=jT();return O(pQ(g.u(i.value.tpms_box(u,d,f,p,m,h,c,l,a,o,s))))}catch(e){g.e=e}finally{g.d()}}catch(e){return k(F(`TPMS_LATTICE_FAILED`,e instanceof Error?e.message:`tpms lattice failed (grid too large?).`,e))}}function _Q(e){return U().createVector3d(e[0],e[1],e[2])}function vQ(e){return U().createPoint3d(e[0],e[1],e[2])}function yQ(e){return U().createDirection3d(e[0],e[1],e[2])}function bQ(e){return[e.X(),e.Y(),e.Z()]}function xQ(e){return[e.X(),e.Y(),e.Z()]}function SQ(e){return[e.X(),e.Y(),e.Z()]}function CQ(e,t){let n=_Q(e);try{return t(n)}finally{n.delete()}}function wQ(e,t){let n=vQ(e);try{return t(n)}finally{n.delete()}}function TQ(e,t){let n=yQ(e);try{return t(n)}finally{n.delete()}}var EQ=.299,DQ=.587,OQ=.114;function kQ(e,t={}){if(e.length<2)return k(P(M.SURFACE_GRID_TOO_SMALL,`surfaceFromGrid: need at least 2 rows, got ${e.length}`));let n=e.length,r=e[0]?.length??0;if(r<2)return k(P(M.SURFACE_GRID_TOO_SMALL,`surfaceFromGrid: need at least 2 columns, got ${r}`));for(let t=0;t<n;t++){let n=e[t];if(!n||n.length!==r)return k(P(M.SURFACE_GRID_JAGGED,`surfaceFromGrid: row ${t} has ${n?.length??0} columns, expected ${r}`))}let{width:i=r-1,depth:a=n-1,scaleZ:o=1}=t,s=i/(r-1),c=a/(n-1);try{return AQ(e,n,r,s,c,o)}catch{}try{return jQ(e,n,r,s,c,o)}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.SURFACE_FAILED,`surfaceFromGrid failed: ${t}`,e))}}function AQ(e,t,n,r,i,a){let o=[];for(let s=0;s<t;s++)for(let t=0;t<n;t++){let n=e[s],c=(n?n[t]??0:0)*a;o.push([t*r,s*i,c])}let s=W(U().bsplineSurface(o,t,n));return kE(s)?O(s):(zE(s),k(N(M.SURFACE_FAILED,`B-spline surface did not produce a face`)))}function jQ(e,t,n,r,i,a){let o=[];for(let s=0;s<t;s++)for(let t=0;t<n;t++){let n=e[s],c=(n?n[t]??0:0)*a;o.push([t*r,s*i,c])}let s=W(U().triangulatedSurface(o,t,n));return kE(s)||AE(s)?O(s):(zE(s),k(N(M.SURFACE_FAILED,`surfaceFromGrid: unexpected shape type from sewing`)))}async function MQ(e,t={}){let n=t.channel??`luminance`,r=Math.max(1,Math.round(t.downsample??1));if(typeof createImageBitmap!=`function`)return k(So(M.SURFACE_FAILED,`surfaceFromImage requires createImageBitmap (not available in this environment)`));let i;try{i=await createImageBitmap(e)}catch(e){return k(So(M.SURFACE_FAILED,`surfaceFromImage: failed to decode image — ${e instanceof Error?e.message:String(e)}`))}let a=i.width,o=i.height;if(a<2||o<2)return i.close(),k(P(M.SURFACE_GRID_TOO_SMALL,`surfaceFromImage: image too small (${a}x${o}), need at least 2x2`));if(typeof OffscreenCanvas!=`function`)return i.close(),k(So(M.SURFACE_FAILED,`surfaceFromImage requires OffscreenCanvas (not available in this environment)`));let s=new OffscreenCanvas(a,o).getContext(`2d`);if(!s)return i.close(),k(So(M.SURFACE_FAILED,`surfaceFromImage: could not get 2D canvas context`));s.drawImage(i,0,0),i.close();let c=s.getImageData(0,0,a,o).data,l=[];for(let e=0;e<o;e+=r){let t=[];for(let i=0;i<a;i+=r){let r=(e*a+i)*4,o=c[r]??0,s=c[r+1]??0,l=c[r+2]??0,u;switch(n){case`r`:u=o/255;break;case`g`:u=s/255;break;case`b`:u=l/255;break;default:u=(EQ*o+DQ*s+OQ*l)/255;break}t.push(u)}l.push(t)}let u={};return t.width!==void 0&&(u.width=t.width),t.depth!==void 0&&(u.depth=t.depth),t.scaleZ!==void 0&&(u.scaleZ=t.scaleZ),kQ(l,u)}function NQ(e,t){return U().isNull(e.wrapped)?k(P(M.NULL_SHAPE_INPUT,`${t} is a null shape`)):O(void 0)}function PQ(e,t={}){if(e.length===0)return k(P(M.HULL_EMPTY_INPUT,`hull: at least one shape is required`,void 0,void 0,`Provide one or more shapes to compute a convex hull`));for(let[t,n]of e.entries()){let e=NQ(n,`hull: shapes[${t}]`);if(A(e))return e}let n=t.tolerance??.1;try{let t=U(),r=e.map(e=>e.wrapped),i=W(t.hull(r,n));return jE(i)?O(i):(zE(i),k(N(M.HULL_NOT_3D,`Hull result is not a solid; input may be degenerate`)))}catch(e){let t=e instanceof Error?e.message:String(e);return t.includes(`coplanar`)||t.includes(`fewer than`)||t.includes(`degenerate`)?k(N(M.HULL_DEGENERATE,`Hull degenerate: ${t}`,e)):k(N(M.HULL_FAILED,`Hull operation failed: ${t}`,e))}}function FQ(e){if(e.length<4)return k(P(M.HULL_EMPTY_INPUT,`convexHull: at least 4 points required, got ${e.length}`,void 0,void 0,`Provide 4 or more non-coplanar 3D points`));try{let t=U(),n=e.map(e=>({x:e[0],y:e[1],z:e[2]})),r=W(t.hullFromPoints(n,.1));return jE(r)?O(r):(zE(r),k(N(M.HULL_NOT_3D,`convexHull result is not a solid; points may be coplanar`)))}catch(e){let t=e instanceof Error?e.message:String(e);return t.includes(`coplanar`)||t.includes(`fewer than`)||t.includes(`degenerate`)?k(N(M.HULL_DEGENERATE,`convexHull degenerate: ${t}`,e)):k(N(M.HULL_FAILED,`convexHull failed: ${t}`,e))}}function IQ(e){let n=nD(e);if(n.length!==1)return null;let r=t(n,0);if(_D(r)!==`sphere`)return null;let i=U().area(r.wrapped);return Math.sqrt(i/(4*Math.PI))}function LQ(e,t,n){try{let r=W(U().offset(e.wrapped,t,n));return NE(r)?O(r):(zE(r),k(yo(M.MINKOWSKI_NOT_3D,`Minkowski sphere offset did not produce a 3D shape`)))}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.MINKOWSKI_FAILED,`Minkowski sphere offset failed: ${t}`,e,{operation:`minkowski`,fastPath:`sphere`}))}}function RQ(e,t,n){let r=U();try{let i=iD(e),a=iD(t);if(i.length===0||a.length===0)return k(N(M.MINKOWSKI_FAILED,`Minkowski sum: one or both shapes have no vertices`,void 0,{operation:`minkowski`}));let o=[];for(let e of i){let[t,n,i]=r.vertexPosition(e.wrapped);for(let e of a){let[a,s,c]=r.vertexPosition(e.wrapped);o.push({x:t+a,y:n+s,z:i+c})}}let s=W(r.hullFromPoints(o,n));return NE(s)?O(s):(zE(s),k(yo(M.MINKOWSKI_NOT_3D,`Minkowski hull did not produce a 3D shape`)))}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.MINKOWSKI_FAILED,`Minkowski general path failed: ${t}`,e,{operation:`minkowski`}))}}function zQ(e,t,n={}){let{tolerance:r=1e-6}=n;if(U().isNull(e.wrapped))return k(P(M.NULL_SHAPE_INPUT,`minkowski: shape is a null shape`));if(U().isNull(t.wrapped))return k(P(M.MINKOWSKI_NULL_TOOL,`minkowski: tool is a null shape`));if(!NE(e)||!NE(t))return k(P(M.MINKOWSKI_NOT_3D,`minkowski: both shape and tool must be 3D`));let i=IQ(t);return i===null?RQ(e,t,r):LQ(e,i,r)}function BQ(e,t,n={}){let{tolerance:r=1e-6}=n;if(e.length<4)return k(P(M.POLYHEDRON_INSUFFICIENT_POINTS,`polyhedron: need at least 4 points, got ${e.length}`));if(t.length<4)return k(P(M.POLYHEDRON_INSUFFICIENT_FACES,`polyhedron: need at least 4 faces, got ${t.length}`));let i=[];for(let[n,r]of t.entries()){for(let t of r)if(t<0||t>=e.length)return k(P(M.POLYHEDRON_INVALID_INDEX,`polyhedron: face ${n} has out-of-range index ${t} (${e.length} points)`));if(r.length<3)continue;let t=r[0];for(let e=1;e<r.length-1;e++)i.push([t,r[e],r[e+1]])}try{let t=U(),n=e.map(([e,t,n])=>({x:e,y:t,z:n})),a=W(t.buildSolidFromFaces(n,i,r));return jE(a)?O(a):(zE(a),k(N(M.POLYHEDRON_FAILED,`Polyhedron did not produce a solid`)))}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.POLYHEDRON_FAILED,`Polyhedron failed: ${t}`,e))}}var VQ=1e-10;function HQ(e,t,n,r){return e*r-t*n}function UQ(e,t,n,r){return e*n+t*r}function WQ(e,t){return Math.sqrt(e*e+t*t)}function GQ(e,t){let n=e[(t%e.length+e.length)%e.length];if(!n)throw Error(`Invalid polygon index ${t} for length ${e.length}`);return n}function KQ(e){let t=0;for(let n=0;n<e.length;n++){let r=GQ(e,n),i=GQ(e,n+1);t+=r.x*i.y-i.x*r.y}return t<0?[...e].reverse():e}function qQ(e,t){let n=GQ(e,t-1),r=GQ(e,t),i=GQ(e,t+1),a=r.x-n.x,o=r.y-n.y,s=WQ(a,o),c=i.x-r.x,l=i.y-r.y,u=WQ(c,l);if(s<VQ||u<VQ)return{dx:0,dy:0};let d=-o/s,f=a/s,p=-l/u,m=c/u,h=d+p,g=f+m,_=WQ(h,g);if(_<VQ)return{dx:d,dy:f};h/=_,g/=_;let v=UQ(h,g,d,f),y=Math.abs(v)>VQ?1/v:1;return{dx:h*y,dy:g*y}}function JQ(e){return!e.prev||!e.next?!1:HQ(e.x-e.prev.x,e.y-e.prev.y,e.next.x-e.x,e.next.y-e.y)<-1e-10}function YQ(e){let t=e.map((t,n)=>{let r=qQ(e,n);return{x:t.x,y:t.y,bx:r.dx,by:r.dy,origIdx:n,prev:null,next:null,active:!0}});for(let e=0;e<t.length;e++){let n=t[e],r=t[(e-1+t.length)%t.length],i=t[(e+1)%t.length];n&&r&&i&&(n.prev=r,n.next=i)}return t}function XQ(e,t){let n=e;for(let e=0;e<t&&n;e++)n.active=!1,n=n.next}function ZQ(e){let t=1,n=e.next;for(;n!==e&&(t++,n=n.next,!(t>1e4)););return t}function QQ(e,t){let n=e.bx-t.bx,r=e.by-t.by,i=t.x-e.x,a=t.y-e.y;if(Math.abs(n)<VQ&&Math.abs(r)<VQ)return null;let o;if(o=Math.abs(n)>Math.abs(r)?i/n:a/r,o<VQ)return null;let s=Math.abs(n)>Math.abs(r)?r:n,c=Math.abs(n)>Math.abs(r)?a:i;if(Math.abs(s)>VQ){let e=c/s;if(Math.abs(o-e)>1e-4*Math.max(1,Math.abs(o)))return null}return o}function $Q(e,t,n){let r=n.x-t.x,i=n.y-t.y,a=WQ(r,i);if(a<VQ)return null;let o=-i/a,s=r/a,c=(e.x-t.x)*o+(e.y-t.y)*s,l=e.bx-(t.bx+n.bx)/2,u=e.by-(t.by+n.by)/2,d=l*o+u*s;if(Math.abs(d)<VQ)return null;let f=-c/d;if(f<VQ)return null;let p=e.x+f*e.bx,m=e.y+f*e.by,h=t.x+f*t.bx,g=t.y+f*t.by,_=n.x+f*n.bx,v=n.y+f*n.by,y=_-h,b=v-g,x=WQ(y,b);if(x<VQ)return f;let S=UQ(p-h,m-g,y,b)/(x*x);return S<-.01||S>1.01?null:f}function e$(e){let t=[];for(let n of e){if(!n.active||!n.next)continue;let e=QQ(n,n.next);if(e!==null&&e>VQ){let r=n.x+e*n.bx,i=n.y+e*n.by;t.push({time:e,x:r,y:i,nodeA:n,nodeB:n.next,type:`edge`})}if(JQ(n)){let e=n.next.next,r=0;for(;e!==n.prev&&e!==n&&r<1e3;){let i=$Q(n,e,e.next);if(i!==null&&i>VQ){let r=n.x+i*n.bx,a=n.y+i*n.by;t.push({time:i,x:r,y:a,nodeA:n,nodeB:e,type:`split`})}e=e.next,r++}}}return t.sort((e,t)=>e.time-t.time),t}function t$(e){if(e.length<3)return O({nodes:[],faces:[]});try{return O(n$(e))}catch(e){return k(F(M.STRAIGHT_SKELETON_FAILED,e instanceof Error?e.message:String(e),e))}}function n$(e){let t=KQ(e),n=t.length,r=[],i=Array.from({length:n},()=>[]),a=YQ(t),o=0,s=n*n*2;for(;o<s;){o++;let e=a.find(e=>e.active);if(!e)break;let t=ZQ(e);if(t<=3){if(t===3){let t=e,n=t.next,a=n.next,o=QQ(t,n),s=o!==null&&o>VQ?o:0,c=(t.x+n.x+a.x)/3+s*(t.bx+n.bx+a.bx)/3,l=(t.y+n.y+a.y)/3+s*(t.by+n.by+a.by)/3,u=r.length;r.push({x:c,y:l,height:s});let d=i[t.origIdx],f=i[n.origIdx],p=i[a.origIdx];d&&d.push(u),f&&f.push(u),p&&p.push(u),t.active=!1,n.active=!1,a.active=!1}else XQ(e,t);continue}let n=a.filter(e=>e.active),s=e$(n);if(s.length===0){for(let e of n)e.active=!1;break}let c=s[0];if(!c)break;if(c.type===`edge`){let e=c.nodeA,t=c.nodeB;if(!e.active||!t.active)continue;let n=r.length;r.push({x:c.x,y:c.y,height:c.time});let a=i[e.origIdx],o=i[t.origIdx];a&&a.push(n),o&&o.push(n),e.x=c.x,e.y=c.y,e.next=t.next,t.next.prev=e,t.active=!1;let s=[],l=e;do s.push({x:l.x,y:l.y}),l=l.next;while(l!==e);let u=qQ(s,0);e.bx=u.dx,e.by=u.dy}else{let e=c.nodeA,t=c.nodeB;if(!e.active||!t.active)continue;let n=r.length;r.push({x:c.x,y:c.y,height:c.time});let o=i[e.origIdx];o&&o.push(n);let s=i[t.origIdx];s&&s.push(n);let l={x:c.x,y:c.y,bx:0,by:0,origIdx:e.origIdx,prev:null,next:null,active:!0};a.push(l),e.x=c.x,e.y=c.y;let u=e.next,d=t.next;e.next=d,d.prev=e,l.next=u,u.prev=l,l.prev=t,t.next=l;let f=e=>{let t=[],n=e;do t.push({x:n.x,y:n.y}),n=n.next;while(n!==e);return t},p=qQ(f(e),0);e.bx=p.dx,e.by=p.dy;let m=qQ(f(l),0);l.bx=m.dx,l.by=m.dy}}let c=[];for(let e=0;e<n;e++){let a=(e+1)%n,o=[GQ(t,e),GQ(t,a)],s=[0,0],l=i[a],u=i[e];if(l)for(let e of l){let t=r[e];t&&(o.push({x:t.x,y:t.y}),s.push(t.height))}if(u)for(let e=u.length-1;e>=0;e--){let t=u[e];if(t===void 0)continue;let n=r[t];if(!n)continue;let i=o[o.length-1];i&&WQ(n.x-i.x,n.y-i.y)>VQ&&(o.push({x:n.x,y:n.y}),s.push(n.height))}o.length>=3&&c.push({vertices:o,heights:s})}let l=[];for(let e of r)l.some(t=>Math.abs(t.x-e.x)<.01&&Math.abs(t.y-e.y)<.01)||l.push(e);return{nodes:l,faces:c}}function r$(e){let t=tD(e).map(e=>{let t=Tk(e);return{x:t[0],y:t[1]}}),n=t[0],r=t[t.length-1];return t.length>1&&n&&r&&Math.abs(n.x-r.x)<1e-10&&Math.abs(n.y-r.y)<1e-10&&t.pop(),t}function i$(e){let t=[];for(let n=1;n<e-1;n++)t.push([0,n,n+1]);return t}function a$(e,t,n,r,i,a){return(n-e)*(a-t)-(r-t)*(i-e)}function o$(e,t,n,r,i,a,o,s){let c=a$(n,r,i,a,e,t),l=a$(i,a,o,s,e,t),u=a$(o,s,n,r,e,t);return!((c<0||l<0||u<0)&&(c>0||l>0||u>0))}function s$(e){let t=e.length;if(t<3)return[];if(t===3)return[[0,1,2]];let n=0;for(let r=0;r<t;r++){let i=e[r],a=e[(r+1)%t];i&&a&&(n+=i.x*a.y-a.x*i.y)}let r=[],i=Array.from({length:t},(e,t)=>t);n<0&&i.reverse();let a=(t,n,r)=>{let a=e[t],o=e[n],s=e[r];if(!a||!o||!s||a$(a.x,a.y,o.x,o.y,s.x,s.y)<=0)return!1;for(let c of i){if(c===t||c===n||c===r)continue;let i=e[c];if(i&&o$(i.x,i.y,a.x,a.y,o.x,o.y,s.x,s.y))return!1}return!0};for(;i.length>3;){let e=!1;for(let t=0;t<i.length;t++){let n=i[(t-1+i.length)%i.length],o=i[t],s=i[(t+1)%i.length];if(!(n===void 0||o===void 0||s===void 0)&&a(n,o,s)){r.push([n,o,s]),i.splice(t,1),e=!0;break}}if(!e)break}if(i.length===3){let[e,t,n]=i;e!==void 0&&t!==void 0&&n!==void 0&&r.push([e,t,n])}return r}function c$(e,t,n){let r=[];for(let i of e.faces){let e=i.vertices.map((e,n)=>[e.x,e.y,(i.heights[n]??0)*t]),a=i$(e.length);for(let[t,i,o]of a){let a=e[t],s=e[i],c=e[o];if(!a||!s||!c)continue;let l=s[0]-a[0],u=s[1]-a[1],d=s[2]-a[2],f=c[0]-a[0],p=c[1]-a[1],m=c[2]-a[2],h=u*m-d*p,g=d*f-l*m,_=l*p-u*f;if(h*h+g*g+_*_<1e-20)continue;let v=n.buildTriFace(a,s,c);v!==null&&r.push(v)}}return r}function l$(e,t){let n=(t?.angle??45)*xD,r=Math.tan(n);try{let t=r$(e);if(t.length<3)return k(N(M.ROOF_FAILED,`Wire must have at least 3 edges for roof generation`));let n=t$(t);if(!n.ok)return n;let i=n.value;if(i.faces.length===0)return k(N(M.ROOF_FAILED,`Straight skeleton computation produced no faces`));let a=U(),o=c$(i,r,a);for(let[e,n,r]of s$(t)){let i=t[e],s=t[n],c=t[r];if(!i||!s||!c)continue;let l=[i.x,i.y,0],u=[s.x,s.y,0],d=[c.x,c.y,0],f=a.buildTriFace(l,d,u);f!==null&&o.push(f)}if(o.length===0)return k(N(M.ROOF_FAILED,`No valid triangular faces could be built`));try{let e=a.sewAndSolidify(o,1e-6),t=a.fixShape(e);return t!==e&&a.dispose(e),O(CE(t))}catch(e){try{let t=CE(a.sew(o,1e-6));return cE(t)?O(t):k(N(M.ROOF_FAILED,`Sew fallback produced invalid solid`,e))}catch(e){return k(N(M.ROOF_FAILED,`Failed to sew roof faces`,e))}}finally{for(let e of o)a.dispose(e)}}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.ROOF_FAILED,`Roof generation failed: ${t}`,e))}}function u$(e){return[[1,0,0,e[0]],[0,1,0,e[1]],[0,0,1,e[2]],[0,0,0,1]]}function d$(e){let t=e[0];return t!==void 0&&typeof t[0]==`number`}function f$(e,t,n){return{__instanced:!0,source:e,placements:t,grid:n,[Symbol.dispose](){e[Symbol.dispose]()}}}function p$(e){return typeof e==`object`&&!!e&&e.__instanced===!0}function m$(e,t){return f$(e,d$(t)?t.map(u$):t.map(e=>e.map(e=>[...e])))}function h$(e,t){let{cols:n,rows:r,pitchX:i,pitchY:a}=t;if(!Number.isInteger(n)||!Number.isInteger(r)||n<1||r<1)throw RangeError(`instanceGrid: cols and rows must be positive integers, got ${n}x${r}`);let o=[];for(let e=0;e<n;e++)for(let t=0;t<r;t++)o.push(u$([e*i,t*a,0]));return f$(e,o,{cols:n,rows:r,pitchX:i,pitchY:a})}function g$(e){return e.placements.length}function _$(e,t={}){let{source:n,placements:r,grid:i}=e;return r.length===0?k(P(`INSTANCE_EMPTY`,`materialize: instance has no placements`)):t.fuse?NE(n)?i?RP(n,[1,0,0],[0,1,0],i.cols,i.rows,i.pitchX,i.pitchY):v$(n,r,!0):k(P(`MATERIALIZE_NOT_3D`,`materialize({fuse:true}) requires a 3D source shape`)):v$(n,r,!1)}function v$(e,t,n){let r=[];for(let n of t){let t=pk(e,n);if(!t.ok){for(let e of r)e[Symbol.dispose]();return t}r.push(t.value)}let i=n?RA(r,{unsafe:!0}):O(sj(r));for(let e of r)(!i.ok||e!==i.value)&&e[Symbol.dispose]();return i}function y$(e,t){return{geometry:Yk(e.source,t),instances:e.placements}}var b$={coincident:3,concentric:4,distance:1,angle:1},x$=[1,0,0,0];function S$(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function C$(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function w$(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function T$(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function E$(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function D$(e){let t=Math.hypot(e[0],e[1],e[2])||1;return[e[0]/t,e[1]/t,e[2]/t]}function O$(e){return D$(T$(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function k$(e,t){let n=S$(ZP(t.rotation,e.origin),t.position);return{type:e.type,origin:n,...e.normal?{normal:ZP(t.rotation,e.normal)}:{},...e.direction?{direction:ZP(t.rotation,e.direction)}:{}}}function A$(e,t,n){let r=e.normal??[0,0,1];return{position:E$(r,w$(r,C$(e.origin,t.origin))+n),rotation:x$}}function j$(e,t){let n=e.direction??[0,0,1],r=$P(t.direction??[0,0,1],n),i=ZP(r,t.origin);return{position:C$(e.origin,i),rotation:r}}function M$(e,t,n){let r=D$(e.normal??[0,0,1]),i=D$(t.normal??[0,0,1]),a=Math.acos(Math.max(-1,Math.min(1,w$(i,r)))),o=T$(i,r);return{position:[0,0,0],rotation:QP(Math.hypot(o[0],o[1],o[2])<1e-9?O$(i):o,a-n)}}function N$(e,t,n){let r=C$(t,e),i=Math.hypot(r[0],r[1],r[2]);return{position:C$(S$(e,E$(i<1e-9?[1,0,0]:E$(r,1/i),n)),t),rotation:x$}}function P$(e,t,n,r){let i=D$(e);return{position:E$(i,w$(i,C$(t,n))-r),rotation:x$}}function F$(e,t,n){let r=D$(e.direction??[0,0,1]),i=S$(e.origin,E$(r,w$(r,C$(t,e.origin))));if(n===0)return{position:C$(i,t),rotation:x$};let a=C$(t,i),o=Math.hypot(a[0],a[1],a[2]);return{position:C$(S$(i,E$(o<1e-9?O$(r):E$(a,1/o),n)),t),rotation:x$}}function I$(e,t,n){let r=D$(t.direction??[0,0,1]),i=C$(t.origin,e),a=C$(i,E$(r,w$(r,i))),o=Math.hypot(a[0],a[1],a[2]);return n===0?{position:E$(a,-1),rotation:x$}:{position:C$(E$(o<1e-9?O$(r):E$(a,1/o),n),a),rotation:x$}}function L$(e,t,n){let r=D$(e.direction??[0,0,1]),i=$P(D$(t.direction??[0,0,1]),r),a=C$(ZP(i,t.origin),e.origin),o=C$(a,E$(r,w$(r,a))),s=Math.hypot(o[0],o[1],o[2]);return{position:C$(E$(s<1e-9?O$(r):E$(o,1/s),n),o),rotation:i}}var R$=new Set([`plane-plane`,`plane-point`,`point-plane`,`point-point`,`axis-axis`,`axis-point`,`point-axis`]),z$={angle:`plane`,concentric:`axis`},B$=new Set([`coincident`,`distance`,`angle`,`concentric`]);function V$(e,t,n){let r=z$[e];return r?t===r&&n===r:R$.has(`${t}-${n}`)}function H$(e,t,n){switch(`${e.type}-${t.type}`){case`plane-plane`:case`plane-point`:return A$(e,t,n);case`point-plane`:return P$(t.normal??[0,0,1],e.origin,t.origin,n);case`point-point`:return N$(e.origin,t.origin,n);case`axis-axis`:return n===0?j$(e,t):L$(e,t,n);case`axis-point`:return F$(e,t.origin,n);case`point-axis`:return I$(e.origin,t,n);default:return null}}function U$(e,t,n){switch(e.type){case`concentric`:return j$(t,n);case`angle`:return M$(t,n,(e.value??0)*Math.PI/180);default:{let r=H$(t,n,e.type===`distance`?e.value??0:0);if(!r)throw Error(`solveMate: unsupported entity pair escaped filter: ${t.type}-${n.type}`);return r}}}function W$(e,t){let n=new Map;for(let t of e)n.set(t,{position:[0,0,0],rotation:x$});let r=[],i=t.filter(e=>B$.has(e.type)&&e.entityA&&e.entityB),a=new Set;for(let e of i)e.entityB&&a.add(e.entityB.node);let o=new Set;for(let t of e)a.has(t)||o.add(t);for(let e of t)e.type===`fixed`&&e.entityA&&o.add(e.entityA.node);let s=[];for(let e of i){if(!e.entityA||!e.entityB)continue;let t=e.entityA.entity.type,n=e.entityB.entity.type;if(!V$(e.type,t,n)){r.push(`${e.type}(${t}-${n})`);continue}s.push(e)}let c=!0;for(;c&&s.length>0;){c=!1;for(let e=s.length-1;e>=0;e--){let t=s[e];if(!t?.entityA||!t.entityB)continue;let r=t.entityA,i=t.entityB;if(!o.has(r.node)||(s.splice(e,1),c=!0,o.has(i.node)))continue;let a=n.get(r.node)??{position:[0,0,0],rotation:x$},l=k$(r.entity,a);n.set(i.node,U$(t,l,i.entity)),o.add(i.node)}}for(let e of s)r.push(`${e.type}(unanchored)`);return{transforms:n,dof:r.reduce((e,t)=>e+(b$[t]??b$[t.split(`(`)[0]??``]??0),0),converged:r.length===0,unsupported:r}}function G$(e){if(e.face){let t=yO(e.face);return t?{type:`axis`,origin:t.origin,direction:t.direction}:{type:`plane`,origin:vO(e.face),normal:_O(e.face)}}if(e.edge){if(wk(e.edge)===`LINE`)return{type:`axis`,origin:Tk(e.edge),direction:Ok(e.edge)};let t=Ak(e.edge);return t?{type:`axis`,origin:t.origin,direction:t.direction}:null}return e.point?{type:`point`,origin:e.point}:null}function K$(e,t){let n=G$(e),r=G$(t);return!n||!r?k(P(M.ASSEMBLY_MATE_INVALID,`solveAssembly: could not extract geometry from mate entities`)):O({entityA:{node:e.node,entity:n},entityB:{node:t.node,entity:r}})}function q$(e){switch(e.type){case`fixed`:return O({type:`fixed`,entityA:{node:e.entity.node,entity:{type:`point`,origin:[0,0,0]}}});case`coincident`:{let t=K$(e.entityA,e.entityB);return t.ok?O({type:`coincident`,...t.value}):t}case`distance`:{let t=K$(e.entityA,e.entityB);return t.ok?O({type:`distance`,...t.value,value:e.distance}):t}case`angle`:{let t=K$(e.entityA,e.entityB);return t.ok?O({type:`angle`,...t.value,value:e.angle}):t}case`concentric`:{let t=K$(e.axisA,e.axisB);return t.ok?O({type:`concentric`,...t.value}):t}}}function J$(e,t){let n=e.mates??[];return{...e,mates:[...n,t]}}function Y$(e){let t=e.mates;if(!t||t.length===0)return k(P(M.ASSEMBLY_MATE_INVALID,`solveAssembly: no mates defined`));try{let n=[];WP(e,e=>{n.push(e.name)});let r=[];for(let e of t){let t=q$(e);if(!t.ok)return t;r.push(t.value)}let i=W$(n,r);if(!i.converged){let e=i.unsupported.length>0?`Unsupported constraint types: ${i.unsupported.join(`, `)} (${i.dof} DOF unresolved)`:`Assembly constraint solver did not converge`;return k(N(M.ASSEMBLY_NOT_CONVERGED,e))}return O({transforms:i.transforms,dof:i.dof,converged:i.converged})}catch(e){let t=e instanceof Error?e.message:String(e);return k(N(M.ASSEMBLY_SOLVE_FAILED,`Assembly solve failed: ${t}`,e))}}function X$(e,t,n=1e-6){if(U().isNull(e.wrapped))return k(P(M.NULL_SHAPE_INPUT,`checkInterference: first shape is a null shape`));if(U().isNull(t.wrapped))return k(P(M.NULL_SHAPE_INPUT,`checkInterference: second shape is a null shape`));let r=U().distance(e.wrapped,t.wrapped);return O({hasInterference:r.value<=n,minDistance:r.value,pointOnShape1:r.point1,pointOnShape2:r.point2})}function Z$(e,n=1e-6){let r=[],i=e.map(e=>hD(e));return e.forEach((a,o)=>{for(let s=o+1;s<e.length;s++){if(Q$(t(i,o),t(i,s),n))continue;let c=j(X$(a,t(e,s),n));c.hasInterference&&r.push({i:o,j:s,result:c})}}),r}function Q$(e,t,n){return e.xMax+n<t.xMin||t.xMax+n<e.xMin||e.yMax+n<t.yMin||t.yMax+n<e.yMin||e.zMax+n<t.zMin||t.zMax+n<e.zMin}function $$(e){let t=e.split(/\r?\n/),n=[],r=!1,i;for(let e=0;e<t.length-1;e+=2){let a=t[e],o=t[e+1];if(a===void 0||o===void 0)continue;let s=parseInt(a.trim(),10),c=o.trim();if(!isNaN(s)){if(s===2&&c===`ENTITIES`){r=!0;continue}if(r){if(s===0){if(c===`ENDSEC`||c===`EOF`){i&&n.push(i);break}i&&n.push(i),i={type:c,layer:`0`,data:new Map};continue}i&&(s===8?i.layer=c:i.data.set(s,c))}}}return n}function e1(e,t,n=0){let r=e.get(t);if(r===void 0)return n;let i=parseFloat(r);return isNaN(i)?n:i}function t1(e){let{type:t,data:n}=e,r=U();if(t===`LINE`)return r.makeLineEdge([e1(n,10),e1(n,20),e1(n,30)],[e1(n,11),e1(n,21),e1(n,31)]);if(t===`CIRCLE`)return r.makeCircleEdge([e1(n,10),e1(n,20),e1(n,30)],[0,0,1],e1(n,40));if(t===`ARC`){let e=e1(n,50)*Math.PI/180,t=e1(n,51)*Math.PI/180;return r.makeCircleArc([e1(n,10),e1(n,20),e1(n,30)],[0,0,1],e1(n,40),e,t)}}async function n1(e,t){let n;try{n=await e.text()}catch(e){return k(So(M.DXF_IMPORT_FAILED,`Failed to read DXF blob`,e))}let r=$$(n),i=t?.layer===void 0?r:r.filter(e=>e.layer===t.layer);if(i.length===0)return O([]);let a=[];try{for(let e of i){let t=t1(e);t!==void 0&&a.push(t)}return a.length===0?O([]):O([bE(U().makeWire(a))])}catch(e){return k(So(M.DXF_IMPORT_FAILED,`Failed to convert DXF entities to geometry`,e))}finally{for(let e of a)e.delete()}}function r1(e,t,n=1e-6){let r=U(),i=[];for(let[t,n,a]of e){let e=r.buildTriFace(t,n,a);e!==null&&i.push(e)}if(i.length===0)return k(So(t,`No valid triangular faces could be built`));try{return O(FE(r.sewAndSolidify(i,n)))}catch{try{return O(FE(r.sew(i,n)))}catch(e){return k(So(t,`Failed to sew triangular faces`,e))}}}function i1(e){let t=e.split(/\s+/),n=parseFloat(t[1]??``),r=parseFloat(t[2]??``),i=parseFloat(t[3]??``);return isNaN(n)||isNaN(r)||isNaN(i)?null:[n,r,i]}function a1(e){return e.split(/\s+/).slice(1).map(e=>parseInt(e.split(`/`)[0]??``,10)).filter(e=>!isNaN(e))}async function o1(e){let t=(await e.text()).split(`
60
+ `),n=[],r=[];for(let e of t){let t=e.trim();if(t.startsWith(`v `)){let e=i1(t);e&&n.push(e)}else if(t.startsWith(`f `)){let e=a1(t);e.length>=3&&r.push(e)}}if(n.length===0||r.length===0)return k(So(M.OBJ_IMPORT_FAILED,`OBJ file contains no valid geometry`));try{return s1(n,r)}catch(e){let t=e instanceof Error?e.message:String(e);return k(So(M.OBJ_IMPORT_FAILED,`OBJ import failed: ${t}`,e))}}function s1(e,t){let n=[];for(let r of t)for(let t=1;t<r.length-1;t++){let i=r[0]??0,a=r[t]??0,o=r[t+1]??0,s=i>0?i-1:e.length+i,c=a>0?a-1:e.length+a,l=o>0?o-1:e.length+o,u=e[s],d=e[c],f=e[l];!u||!d||!f||n.push([u,d,f])}return r1(n,M.OBJ_IMPORT_FAILED)}function c1(e,t){let n=-1;for(let t=e.length-22;t>=0;t--)if(e[t]===80&&e[t+1]===75&&e[t+2]===5&&e[t+3]===6){n=t;break}if(n<0)return null;let r=new DataView(e.buffer,e.byteOffset,e.byteLength),i=r.getUint32(n+16,!0),a=i+r.getUint32(n+12,!0),o=i,s=new TextDecoder;for(;o<a&&r.getUint32(o,!0)===33639248;){let n=r.getUint16(o+28,!0),i=r.getUint16(o+30,!0),a=r.getUint16(o+32,!0),c=r.getUint32(o+42,!0);if(s.decode(e.subarray(o+46,o+46+n))===t){if(r.getUint16(c+8,!0)!==0)return null;let t=r.getUint16(c+26,!0),n=r.getUint16(c+28,!0),i=r.getUint32(c+18,!0),a=c+30+t+n;return e.subarray(a,a+i)}o+=46+n+i+a}return null}function l1(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||e===95}function u1(e){let t={},n=0;for(;n<e.length;){let r=e.indexOf(`="`,n);if(r<0)break;let i=r;for(;i>0&&l1(e.charCodeAt(i-1));)i--;if(i===r){n=r+2;continue}let a=e.slice(i,r),o=r+2,s=e.indexOf(`"`,o);if(s<0)break;t[a]=e.slice(o,s),n=s+1}return t}function d1(e,t){let n=[],r=`<${t} `,i=0;for(;i<e.length;){let t=e.indexOf(r,i);if(t<0)break;let a=e.indexOf(`>`,t);if(a<0)break;n.push(e.slice(t,a+1)),i=a+1}return n}function f1(e,t){let n=e.indexOf(`<${t}`);if(n<0)return null;let r=e.indexOf(`</${t}>`,n);return r<0?null:e.slice(n,r+t.length+3)}function p1(e){let t=e.startsWith(`#`)?e.slice(1):e;return[parseInt(t.slice(0,2),16)/255,parseInt(t.slice(2,4),16)/255,parseInt(t.slice(4,6),16)/255,t.length>=8?parseInt(t.slice(6,8),16)/255:1]}function m1(e){let t=new Map,n=0;for(;n<e.length;){let r=e.indexOf(`<colorgroup`,n);if(r<0)break;let i=e.indexOf(`</colorgroup>`,r);if(i<0)break;let a=e.slice(r,i+13);n=i+13;let o=e.indexOf(`>`,r);if(o<0)continue;let s=u1(e.slice(r,o+1)).id;if(s===void 0)continue;let c=parseInt(s,10),l=[];for(let e of d1(a,`color`)){let t=u1(e).color;t!==void 0&&l.push(p1(t))}t.set(c,l)}let r=0;for(;r<e.length;){let n=e.indexOf(`<basematerials`,r);if(n<0)break;let i=e.indexOf(`</basematerials>`,n);if(i<0)break;let a=e.slice(n,i+16);r=i+16;let o=e.indexOf(`>`,n);if(o<0)continue;let s=u1(e.slice(n,o+1)).id;if(s===void 0)continue;let c=parseInt(s,10),l=[];for(let e of d1(a,`base`)){let t=u1(e).displaycolor;t===void 0?l.push([0,0,0,1]):l.push(p1(t))}t.set(c,l)}return t}function h1(e){let t=[],n=[],r=[],i=m1(e);for(let n of d1(e,`vertex`)){let e=u1(n);e.x!==void 0&&e.y!==void 0&&e.z!==void 0&&t.push([parseFloat(e.x),parseFloat(e.y),parseFloat(e.z)])}let a=null,o=null,s=f1(e,`object`);if(s!==null){let e=s.indexOf(`>`);if(e>=0){let t=u1(s.slice(0,e+1));t.pid!==void 0&&(a=parseInt(t.pid,10)),t.pindex!==void 0&&(o=parseInt(t.pindex,10))}}for(let t of d1(e,`triangle`)){let e=u1(t);if(e.v1!==void 0&&e.v2!==void 0&&e.v3!==void 0){n.push([parseInt(e.v1,10),parseInt(e.v2,10),parseInt(e.v3,10)]);let t=null,s=e.pid??(a===null?void 0:String(a)),c=e.p1??(o===null?void 0:String(o));if(s!==void 0&&c!==void 0){let e=parseInt(s,10),n=parseInt(c,10),r=i.get(e);r!==void 0&&n<r.length&&(t=r[n]??null)}r.push(t)}}return{vertices:t,triangles:n,triangleColors:r}}function g1(e){let t=new Map;for(let n of e){if(n===null)continue;let e=n.join(`,`),r=t.get(e);r===void 0?t.set(e,{count:1,color:n}):r.count++}let n=null;for(let e of t.values())(n===null||e.count>n.count)&&(n=e);return n===null?null:n.color}function _1(e){let t=U(),n=e.vertices.map(([e,t,n])=>({x:e,y:t,z:n})),r=e.triangles;try{return O(FE(t.buildSolidFromFaces(n,r,1e-6)))}catch{let t=[];for(let[n,r,i]of e.triangles){let a=e.vertices[n],o=e.vertices[r],s=e.vertices[i];!a||!o||!s||t.push([a,o,s])}return r1(t,M.THREEMF_IMPORT_FAILED)}}async function v1(e){try{let t=await e.arrayBuffer(),n=c1(new Uint8Array(t),`3D/3dmodel.model`);if(!n)return k(So(M.THREEMF_IMPORT_FAILED,`3MF archive does not contain 3D/3dmodel.model (or uses unsupported compression)`));let r=h1(new TextDecoder().decode(n));if(r.vertices.length===0||r.triangles.length===0)return k(So(M.THREEMF_IMPORT_FAILED,`3MF model contains no valid geometry`));let i=_1(r);if(i.ok){let e=g1(r.triangleColors);e!==null&&YO(i.value,e)}return i}catch(e){let t=e instanceof Error?e.message:String(e);return k(So(M.THREEMF_IMPORT_FAILED,`3MF import failed: ${t}`,e))}}async function y1(e){try{let t=await e.arrayBuffer();return O(FE(U().importGLB(t)))}catch(e){let t=e instanceof Error?e.message:String(e);return k(So(M.GLB_IMPORT_FAILED,`Failed to import GLB: ${t}`,e))}}function $(e){return`__wrapped`in e?e.val:e}function b1(e){return $(e)}function x1(e,t){return ak($(e),t)}function S1(e,t,n){let r=n?.at;return ok($(e),t,r,n?.axis)}function C1(e,t){let n=t?.at;return sk($(e),t?.normal??[1,0,0],n)}function w1(e,t,n){return ck($(e),t,n?.center)}function T1(e){return _k($(e))}function E1(e,t){return pk($(e),t)}function D1(e,t){return gk($(e),t)}function O1(e,t){return hk($(e),t)}function k1(e,t,n){return PA($(e),$(t),{...n,unsafe:!0})}function A1(e,t,n){return FA($(e),$(t),{...n,unsafe:!0})}function j1(e,t){return RA(e.map(e=>$(e)),{...t,unsafe:!0})}function M1(e,t,n){return zA($(e),t.map(e=>$(e)),{...n,unsafe:!0})}function N1(e,t,n){return IA($(e),$(t),{...n,unsafe:!0})}function P1(e,t,n){return VA($(e),t,n)}function F1(e,t,n){return qA($(e),t,n)}function I1(e,t){return JA($(e),t)}function L1(e,t,n){return YA($(e),t,n)}function R1(e,t){if(e!==void 0)return Array.isArray(e)?e:typeof e==`object`&&`findAll`in e?e.findAll(t):e(RI()).findAll(t)}function z1(e,t){return Array.isArray(e)?e:typeof e==`object`&&`findAll`in e?e.findAll(t):e(VI()).findAll(t)}function B1(e){return typeof e==`object`&&!Array.isArray(e)&&typeof e!=`function`?{mode:`distAngle`,distance:e.distance,angle:e.angle}:typeof e==`function`?{mode:`standard`,distance:t=>{let n=e(t);return n===null?null:typeof n==`object`&&!Array.isArray(n)?n.distance:n}}:{mode:`standard`,distance:e}}function V1(e,t,n){let r=$(e),i,a;return n===void 0?(i=void 0,a=t):(i=R1(t,r),a=n),qj(r,i,a)}function H1(e,t,n){let r=$(e),i,a;n===void 0?(i=void 0,a=t):(i=R1(t,r),a=n);let o=B1(a);return o.mode===`distAngle`?mj(r,[...i??tD(r)],o.distance,o.angle):Jj(r,i,o.distance)}function U1(e,t,n,r){let i=$(e);return Yj(i,z1(t,i),n,r?.tolerance)}function W1(e,t,n){return Xj($(e),t,n?.tolerance)}function G1(e,t){return Gj($(e),t)}function K1(e,t,n){let r=$(e);return Qj(r,z1(t,r),n.pullDirection,n.neutralPlane,n.angle)}function q1(e){return iM($(e))}function J1(e){return Ck($(e))}function Y1(e,t){return Yk($(e),t)}function X1(e,t){return Xk($(e),t)}function Z1(e){return yD($(e))}function Q1(e){return vk($(e))}function $1(e){return sO(e)}function e0(e){return eM($(e))}function t0(e){return bk($(e))}function n0(e,t){return xM($(e),typeof t==`number`?[0,0,t]:t)}function r0(e,t){let n=t?.at??[0,0,0];return SM($(e),n,t?.axis??[0,0,1],t?.angle??2*Math.PI)}function i0(e,t){return wM(e.map(e=>$(e)),t)}function a0(e,n){if(n===void 0){let t=nD(e);if(t.length===0)return k(P(M.COMPOUND_NO_FACES,`compoundOps: shape has no faces`));let n=dA(t),r=vO(n)[2];for(let e=1;e<t.length;e++){let i=uA(t,e),a=vO(i)[2];a>r&&(n=i,r=a)}return O(n)}if(typeof n==`function`){let r=n(VI()).findAll(e);return r.length===0?k(Co(M.COMPOUND_FACE_NOT_FOUND,`compoundOps: face finder matched no faces`)):O(t(r,0))}return O(n)}function o0(e){return`sketchOnPlane`in e&&typeof e.sketchOnPlane==`function`?{wire:e.sketchOnPlane(`XY`).wire,owned:!0}:{wire:e,owned:!1}}function s0(e,t){let n=$(e),{at:r,radius:i,axis:a}=t,o=a??[0,0,1];if(i<=0)return k(P(`DRILL_INVALID_RADIUS`,`Drill radius must be positive`));if(RD(o))return k(P(`DRILL_ZERO_AXIS`,`Drill axis cannot be zero`));let s=ID(o),c=r.length===2?[r[0],r[1],0]:[r[0],r[1],r[2]],l;if(t.depth!==void 0)l=ej(i,t.depth,c,s);else{let e=hD(n),t=[[e.xMin,e.yMin,e.zMin],[e.xMax,e.yMin,e.zMin],[e.xMin,e.yMax,e.zMin],[e.xMax,e.yMax,e.zMin],[e.xMin,e.yMin,e.zMax],[e.xMax,e.yMin,e.zMax],[e.xMin,e.yMax,e.zMax],[e.xMax,e.yMax,e.zMax]],r=1/0,a=-1/0;for(let e of t){let t=(e[0]-c[0])*s[0]+(e[1]-c[1])*s[1]+(e[2]-c[2])*s[2];t<r&&(r=t),t>a&&(a=t)}--r,a+=1,l=ej(i,a-r,[c[0]+s[0]*r,c[1]+s[1]*r,c[2]+s[2]*r],s)}try{return FA(n,l,{unsafe:!0})}finally{l[Symbol.dispose]()}}function c0(e,t){try{var n=jT();let r=$(e),{profile:i,depth:a}=t;if(a<=0)return k(P(`POCKET_INVALID_DEPTH`,`Pocket depth must be positive`));let o=a0(r,t.face);if(A(o))return o;let s=o.value,c=_O(s),l=vO(s),u=n.u(new WT),{wire:d,owned:f}=o0(i);f&&u.register(d);let p=EA(d);if(A(p))return p;u.register(p.value);let m=xM(u.register(ak(p.value,l)),kD(ID(c),-a));return A(m)?m:(u.register(m.value),FA(r,m.value,{unsafe:!0}))}catch(e){n.e=e}finally{n.d()}}function l0(e,t){try{var n=jT();let r=$(e),{profile:i,height:a}=t;if(a<=0)return k(P(`BOSS_INVALID_HEIGHT`,`Boss height must be positive`));let o=a0(r,t.face);if(A(o))return o;let s=o.value,c=_O(s),l=vO(s),u=n.u(new WT),{wire:d,owned:f}=o0(i);f&&u.register(d);let p=EA(d);if(A(p))return p;u.register(p.value);let m=xM(u.register(ak(p.value,l)),kD(ID(c),a));return A(m)?m:(u.register(m.value),PA(r,m.value,{unsafe:!0}))}catch(e){n.e=e}finally{n.d()}}function u0(e,t){try{var n=jT();let r=$(e),i=t?.normal??[1,0,0],a=t?.at;return RD(i)?k(P(`MIRROR_ZERO_NORMAL`,`Mirror plane normal cannot be zero`)):PA(r,n.u(sk(r,i,a)),{unsafe:!0})}catch(e){n.e=e}finally{n.d()}}function d0(e,t){let n=$(e),{xDir:r,xCount:i,xSpacing:a,yDir:o,yCount:s,ySpacing:c}=t;if(i<1||s<1)return k(P(`PATTERN_INVALID_COUNT`,`Pattern counts must be at least 1`));if(RD(r))return k(P(`PATTERN_ZERO_DIRECTION`,`X direction cannot be zero`));if(RD(o))return k(P(`PATTERN_ZERO_DIRECTION`,`Y direction cannot be zero`));if(i===1&&s===1)return O(n);let l=ID(r),u=ID(o),d=[n],f=[];for(let e=0;e<i;e++)for(let t=0;t<s;t++){if(e===0&&t===0)continue;let r=ak(n,[l[0]*a*e+u[0]*c*t,l[1]*a*e+u[1]*c*t,l[2]*a*e+u[2]*c*t]);d.push(r),f.push(r)}try{return RA(d,{unsafe:!0})}finally{for(let e of f)e[Symbol.dispose]()}}var f0=class extends Error{code;kind;suggestion;metadata;constructor(e){let t=e.suggestion?`${e.message}\nSuggestion: ${e.suggestion}`:e.message;super(t),this.name=`BrepError`,this.code=e.code,this.kind=e.kind,e.suggestion&&(this.suggestion=e.suggestion),e.metadata&&(this.metadata=e.metadata)}};function p0(e){if(A(e))throw new f0(e.error);return e.value}function m0(e){return e}function h0(e){return e}function g0(e){return e}function _0(e){return e}function v0(e){return{val:e,__wrapped:!0,translate:t=>O0(x1(e,t)),rotate:(t,n)=>O0(S1(e,t,n)),mirror:t=>O0(C1(e,t)),scale:(t,n)=>O0(w1(e,t,n)),applyMatrix:t=>O0(p0(E1(e,t))),moveX:t=>O0(x1(e,[t,0,0])),moveY:t=>O0(x1(e,[0,t,0])),moveZ:t=>O0(x1(e,[0,0,t])),rotateX:t=>O0(S1(e,t,{axis:[1,0,0]})),rotateY:t=>O0(S1(e,t,{axis:[0,1,0]})),rotateZ:t=>O0(S1(e,t,{axis:[0,0,1]})),bounds:()=>hD(e),describe:()=>Z1(e),clone:()=>O0(p0(T1(e))),mesh:t=>Y1(e,t),meshEdges:t=>X1(e,t),isValid:()=>e0(e),isEmpty:()=>t0(e),heal:()=>O0(p0(q1(e))),simplify:()=>O0(p0(J1(e))),toBREP:()=>p0(Q1(e)),apply:t=>O0(t(e)),applyResult:t=>O0(p0(t(e))),done:()=>e}}function y0(e){return{fuse:(t,n)=>k0(p0(k1(e,$(t),{...n,unsafe:!0}))),cut:(t,n)=>k0(p0(A1(e,$(t),{...n,unsafe:!0}))),intersect:(t,n)=>k0(p0(N1(e,$(t),{...n,unsafe:!0}))),fuseAll:(t,n)=>k0(_0(p0(RA([e,...t.map($)],{...n,unsafe:!0})))),cutAll:(t,n)=>k0(_0(p0(zA(e,t,{...n,unsafe:!0})))),section:(t,n)=>O0(p0(P1(e,t,n))),split:t=>O0(p0(I1(e,t))),slice:(t,n)=>p0(L1(e,t,n))}}function b0(e){return{fillet(...t){return t.length===1?k0(_0(p0(V1(m0(e),t[0])))):k0(_0(p0(V1(m0(e),t[0],t[1]))))},chamfer(...t){return t.length===1?k0(_0(p0(H1(m0(e),t[0])))):k0(_0(p0(H1(m0(e),t[0],t[1]))))},shell:(t,n,r)=>k0(_0(p0(U1(m0(e),t,n,r)))),offset:(t,n)=>k0(_0(p0(W1(m0(e),t,n)))),draft:(t,n)=>k0(_0(p0(K1(m0(e),t,n))))}}function x0(e){return{drill:t=>k0(p0(s0(e,t))),pocket:t=>k0(p0(c0(e,t))),boss:t=>k0(p0(l0(e,t))),mirrorJoin:t=>k0(p0(u0(e,t))),rectangularPattern:t=>k0(p0(d0(e,t)))}}function S0(e){return{volume:()=>p0(PM(e)),area:()=>p0(FM(e)),volumeProps:()=>p0(jM(e)),surfaceProps:()=>p0(MM(e))}}function C0(e){return{edges:()=>tD(e),faces:()=>nD(e),wires:()=>rD(e),vertices:()=>iD(e)}}function w0(e){return{linearPattern:(t,n,r)=>k0(_0(p0(IP(e,t,n,r)))),circularPattern:(t,n,r)=>k0(_0(p0(LP(e,t,n,r))))}}function T0(e){return{...v0(e),...y0(e),...b0(e),...x0(e),...S0(e),...C0(e),...w0(e)}}function E0(e){return{...v0(e),length:()=>kk(e),startPoint:()=>Tk(e),endPoint:()=>Ek(e),pointAt:t=>Dk(e,t),tangentAt:t=>Ok(e,t),isClosed:()=>jk(e),sweep(t,n){if(!OE(e))throw Error(`sweep requires a Wire`);let r=p0(pM(g0(e),$(t),n));return k0(Array.isArray(r)?r[0]:r)}}}function D0(e){return{...v0(e),area:()=>p0(FM(e)),normalAt:t=>_O(e,t),center:()=>vO(e),surfaceType:()=>p0(lO(e)),outerWire:()=>xO(e),innerWires:()=>CO(e),extrude:t=>k0(p0(n0(h0(e),t))),revolve:t=>k0(p0(r0(h0(e),t)))}}function O0(e){return NE(e)?T0(e):kE(e)?D0(e):DE(e)||OE(e)?E0(e):v0(e)}function k0(e){return T0(e)}function A0(e){if(e&&typeof e==`object`&&`face`in e&&typeof e.face==`function`&&`_defaultOrigin`in e)return D0(e.face());if(e&&typeof e==`object`&&`wrapped`in e)return kE(e)?D0(e):NE(e)?T0(e):DE(e)||OE(e)?E0(e):v0(e);throw Error(`shape() requires a Sketch or branded shape type`)}var j0=.25,M0=e=>Math.tan(e)-e;function N0(e,t,n,r){let i=e/Math.cos(t),a=n+r*(Math.tan(t)-t);return[i*Math.cos(a),i*Math.sin(a),0]}function P0(e,t,n,r,i){let a=[];for(let o=0;o<=r;o++){let s=.5-.5*Math.cos(o/r*Math.PI);a.push(N0(e,s*t,n,i))}return a}function F0(e){return Math.max(16,Math.round(8*Math.sqrt(e)))}function I0(e,t,n,r,i,a,o){let s=e*t/2,c=s*Math.cos(n),l=t*(1+r),u=t*(1+i-r),d=o?s-t*(1-r):s+l,f=o?s+t*(1+i+r):s-u,p=a/s,m=(Math.PI/2+2*r*Math.tan(n))/e+(o?p:-p),h=o?f:d;return{rPitch:s,rb:c,rTip:d,rRoot:f,alphaPitch:n,halfToothAngle:m,alphaTip:h<=c?0:Math.acos(Math.min(1,c/h)),toothPitch:2*Math.PI/e,isInternal:o}}function L0(e,t,n){if(t===0)return O(e);let r=M0(e)+2*t*Math.tan(e)/n,i,a;if(r>M0(e)?(i=e,a=Math.PI/2-1e-6):(i=1e-4,a=e),r>M0(a)||r<M0(i))return k(P(`GEAR_PA_OUT_OF_RANGE`,`working pressure angle out of range — target inv(αw)=${r.toFixed(4)} not in [${M0(i).toFixed(4)}, ${M0(a).toFixed(4)}]`,void 0,{target:r,invLo:M0(i),invHi:M0(a)}));for(let e=0;e<50;e++){let e=.5*(i+a);M0(e)<r?i=e:a=e}return O(.5*(i+a))}function R0(e,t,n,r,i){return L0(e,t+n,r+i)}function z0(e,t,n,r,i){return L0(e,n-t,i-r)}function B0(e,t,n,r,i){return(e+t)*n*Math.cos(r)/(2*Math.cos(i))}function V0(e,t,n,r){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(n))return k(P(`GEAR_NON_INTEGER_TEETH`,`tooth counts and planet count must be integers`));if(e<4||t<4||n<2)return k(P(`GEAR_TEETH_TOO_FEW`,`zs ≥ 4, zp ≥ 4, N ≥ 2 required`));if((2*e+2*t)%n!=0)return k(P(`GEAR_ASSEMBLY`,`(2·zs + 2·zp) must be divisible by N — got ${2*e+2*t} mod ${n} = ${(2*e+2*t)%n}`));let i=t+2+2*r,a=(e+t)*Math.sin(Math.PI/n);return a<=i?k(P(`GEAR_PLANET_COLLISION`,`planet tips would collide: (zs+zp)·sin(π/N) = ${a.toFixed(3)} ≤ planet tip = ${i.toFixed(3)}`)):O(void 0)}function H0(e,t,n,r,i,a,o,s){return(Math.sqrt(Math.max(0,e*e-t*t))+Math.sqrt(Math.max(0,n*n-r*r))-i*Math.sin(s))/(Math.PI*a*Math.cos(o))}function U0(e,t,n,r,i,a,o,s){return(Math.sqrt(Math.max(0,e*e-t*t))-Math.sqrt(Math.max(0,n*n-r*r))+i*Math.sin(s))/(Math.PI*a*Math.cos(o))}function W0(e,t){return 1-e*Math.sin(t)*Math.sin(t)/2}function G0(e,t,n){return Math.max(0,W0(e,t)-n)}function K0(e){return e<8?.2:.485-2.88/e}function q0(e,t,n,r){let i=e*1e3,a=K0(r);return a<=0||n<=0||t<=0?1/0:2*i/(r*t*t*n*a)}function J0(e,t,n=!1){let r=(1.4+6.5/e)*(20/(t*180/Math.PI))**.15;return n?r*.85:r}function Y0(e,t,n,r,i,a=!1){return q0(e,t,n,r)*J0(r,i,a)}function X0(e){return e/2}function Z0(e,t){return e+2*t}function Q0(e){return e%2==0?Math.PI/e:0}function $0(e,t,n){return e*(1+t/n)+Q0(n)}function e2(e={}){let t=e.moduleSize??3,n=e.sunTeeth??15,r=e.planetTeeth??12,i=e.numPlanets??3,a=(e.pressureAngleDeg??20)*Math.PI/180,o=e.sunShift??0,s=e.planetShift??0,c=V0(n,r,i,s);if(A(c))return c;let l=R0(a,o,s,n,r);if(A(l))return l;let u=B0(n,r,t,a,l.value),d=[];for(let e=0;e<i;e++){let t=e*2*Math.PI/i,a=$0(t,n,r);d.push({rotationDeg:a*180/Math.PI,position:[u*Math.cos(t),u*Math.sin(t),0]})}return O(d)}function t2(e,t,n,r,i){let a=t*e.toothPitch,o=(t+1)%n*e.toothPitch,s=M0(e.alphaPitch),c=a-e.halfToothAngle-s,l=a+e.halfToothAngle+s,u=P0(e.rb,e.alphaTip,c,r,1),d=P0(e.rb,e.alphaTip,l,r,-1).reverse(),f=dA(u),p=fA(u),m=dA(d),h=fA(d),g=[],_=e=>{i.register(e),g.push(e)},v=e.isInternal?e.rb<e.rRoot:e.rb>e.rRoot;v&&_(hA([e.rRoot*Math.cos(c),e.rRoot*Math.sin(c),0],f));let y=e.rPitch*1e-5,b=SA(u,{tolerance:y});if(A(b))return b;_(b.value),_(yA(p,[e.rTip*Math.cos(a),e.rTip*Math.sin(a),0],m));let x=SA(d,{tolerance:y});if(A(x))return x;_(x.value),v&&_(hA(h,[e.rRoot*Math.cos(l),e.rRoot*Math.sin(l),0]));let S=o-e.halfToothAngle-s,C=.5*(l+S);return S<l&&(C+=Math.PI),_(yA(v?[e.rRoot*Math.cos(l),e.rRoot*Math.sin(l),0]:h,[e.rRoot*Math.cos(C),e.rRoot*Math.sin(C),0],v?[e.rRoot*Math.cos(S),e.rRoot*Math.sin(S),0]:[e.rb*Math.cos(S),e.rb*Math.sin(S),0])),O(g)}function n2(e){return i2(e,!1)}function r2(e){return i2(e,!0)}function i2(e,t){try{var n=jT();let{teeth:r,moduleSize:i,pressureAngle:a,shift:o,clearance:s,flankThinning:c,samples:l=F0(i)}=e;if(r<4)return k(P(`GEAR_TEETH_TOO_FEW`,`gear needs ≥ 4 teeth, got ${r}`));if(i<=0)return k(P(`GEAR_MODULE_NONPOSITIVE`,`module must be > 0, got ${i}`));let u=I0(r,i,a,o,s,c,t),d=n.u(new WT),f=[];for(let e=0;e<r;e++){let t=t2(u,e,r,l,d);if(A(t))return t;f.push(...t.value)}let p=TA(f);return A(p)?p:O(p.value)}catch(e){n.e=e}finally{n.d()}}function a2(e){let{teeth:t,moduleSize:n,thickness:r,pressureAngleDeg:i=20,shift:a=0,clearance:o=j0,flankThinning:s=0,bore:c=0,samples:l}=e;if(r<=0)return k(P(`GEAR_THICKNESS_NONPOSITIVE`,`thickness must be > 0`));if(l!==void 0&&(!Number.isInteger(l)||l<1))return k(P(`GEAR_SAMPLES_INVALID`,`samples must be a positive integer; got ${String(l)}`));let u=i*Math.PI/180,d=I0(t,n,u,a,o,s,!1);if(c>0&&c>=2*d.rRoot)return k(P(`GEAR_BORE_TOO_LARGE`,`bore diameter ${c.toFixed(2)} ≥ root diameter ${(2*d.rRoot).toFixed(2)} — would erase the gear teeth`));let f=n2({teeth:t,moduleSize:n,pressureAngle:u,shift:a,clearance:o,flankThinning:s,...l===void 0?{}:{samples:l}});if(A(f))return f;let p=s2(t,u,a);return f2(f.value,r,c,d,p)}function o2(e){let{teeth:t,moduleSize:n,thickness:r,pressureAngleDeg:i=20,shift:a=0,clearance:o=j0,flankThinning:s=0,ringWallThickness:c=2*e.moduleSize,samples:l}=e;if(r<=0)return k(P(`GEAR_THICKNESS_NONPOSITIVE`,`thickness must be > 0`));if(c<=0)return k(P(`GEAR_WALL_NONPOSITIVE`,`ringWallThickness must be > 0`));if(l!==void 0&&(!Number.isInteger(l)||l<1))return k(P(`GEAR_SAMPLES_INVALID`,`samples must be a positive integer; got ${String(l)}`));let u=i*Math.PI/180,d=r2({teeth:t,moduleSize:n,pressureAngle:u,shift:a,clearance:o,flankThinning:s,...l===void 0?{}:{samples:l}});if(A(d))return d;let f=I0(t,n,u,a,o,s,!0),p=d2(f.rPitch+c);return A(p)?p:m2(p.value,d.value,r,f,[])}function s2(e,t,n){let r=G0(e,t,n);return r<=0?[]:[{code:`UNDERCUT_RISK`,severity:`warning`,message:`gear is undercut: increase shift by ${r.toFixed(3)} to avoid (z=${e})`,context:{deficit:r,teeth:e}}]}function c2(e){let t=u2(e);if(A(t))return t;let n=t.value,r=l2(n);if(A(r))return r;let{sun:i,planet:a,ring:o}=r.value,s=v2(n,i,a,o),c=g2(a.solid,n);a.solid.delete();let l=_2(o.solid,n.zr),u=y2(n,s);return O({sun:i.solid,planets:c,ring:l,ringTeeth:n.zr,workingPressureAngle:n.alphaW_sp,centerDistance:n.centerDistance,contactRatio:{sunPlanet:s.crSunPlanet,planetRing:s.crPlanetRing},undercutDeficit:{sun:s.undercutSun,planet:s.undercutPlanet},...s.lewisStress?{lewisStress:s.lewisStress}:{},...s.stressConcentrationFactor?{stressConcentrationFactor:s.stressConcentrationFactor}:{},diagnostics:u})}function l2(e){let t=e.samples===void 0?{}:{samples:e.samples},n={moduleSize:e.moduleSize,thickness:e.thickness,pressureAngleDeg:e.pressureAngleDeg,clearance:e.clearance,flankThinning:e.bHalf,...t},r=a2({...n,teeth:e.sunTeeth,shift:e.sunShift,bore:e.sunBore});if(A(r))return r;let i=a2({...n,teeth:e.planetTeeth,shift:e.planetShift,bore:e.planetBore});if(A(i))return r.value.solid.delete(),i;let a=o2({...n,teeth:e.zr,shift:e.ringShift,ringWallThickness:e.ringWallThickness});return A(a)?(r.value.solid.delete(),i.value.solid.delete(),a):O({sun:r.value,planet:i.value,ring:a.value})}function u2(e){let t=e.moduleSize??3,n=e.sunTeeth??15,r=e.planetTeeth??12,i=e.numPlanets??3,a=e.pressureAngleDeg??20,o=a*Math.PI/180,s=e.sunShift??0,c=e.planetShift??0,l=e.ringShift??0;if(e.thickness<=0)return k(P(`GEAR_THICKNESS_NONPOSITIVE`,`thickness must be > 0`));let u=V0(n,r,i,c);if(A(u))return u;let d=Z0(n,r),f=R0(o,s,c,n,r);if(A(f))return f;let p=z0(o,c,l,r,d);if(A(p))return p;let m=B0(n,r,t,o,f.value);return O({moduleSize:t,sunTeeth:n,planetTeeth:r,numPlanets:i,pressureAngleDeg:a,alpha:o,alphaW_sp:f.value,alphaW_pr:p.value,clearance:e.clearance??.25,bHalf:X0(e.backlash??0),sunShift:s,planetShift:c,ringShift:l,ringWallThickness:e.ringWallThickness??2*t,thickness:e.thickness,sunBore:e.sunBore??0,planetBore:e.planetBore??0,...e.appliedTorque===void 0?{}:{appliedTorque:e.appliedTorque},...e.samples===void 0?{}:{samples:e.samples},zr:d,centerDistance:m})}function d2(e){try{var t=jT();let n=TA([t.u(new WT).register(gA(e,[0,0,0],[0,0,1]))]);return A(n)?n:O(n.value)}catch(e){t.e=e}finally{t.d()}}function f2(e,t,n,r,i){try{var a=jT();let o=a.u(new WT);o.register(e);let s=EA(e);if(A(s))return s;o.register(s.value);let c=xM(s.value,[0,0,t]);if(A(c))return c;if(n<=0)return O(h2(c.value,r,i));let l=a.u(new WT);l.register(c.value);let u=p2(n/2);if(A(u))return u;l.register(u.value);let d=xM(u.value,[0,0,t+1]);if(A(d))return d;l.register(d.value);let f=l.register(ak(d.value,[0,0,-.5])),p=FA(c.value,f);return A(p)?p:O(h2(p.value,r,i))}catch(e){a.e=e}finally{a.d()}}function p2(e){let t=d2(e);return A(t)?t:EA(t.value)}function m2(e,t,n,r,i){let a=EA(e,[t]);if(A(a))return a;let o=xM(a.value,[0,0,n]);return A(o)?o:O(h2(o.value,r,i))}function h2(e,t,n=[]){return{solid:e,diagnostics:n,pitchDiameter:2*t.rPitch,baseDiameter:2*t.rb,tipDiameter:2*t.rTip,rootDiameter:2*t.rRoot}}function g2(e,t){let n=[];try{for(let r=0;r<t.numPlanets;r++){let i=r*2*Math.PI/t.numPlanets,a=ok(e,$0(i,t.sunTeeth,t.planetTeeth)*180/Math.PI);try{let e=[t.centerDistance*Math.cos(i),t.centerDistance*Math.sin(i),0];n.push(ak(a,e))}finally{a.delete()}}return n}catch(e){for(let e of n)e.delete();throw e}}function _2(e,t){let n=Q0(t);if(n===0)return e;let r=ok(e,n*180/Math.PI);return e.delete(),r}function v2(e,t,n,r){let i={crSunPlanet:H0(t.tipDiameter/2,t.baseDiameter/2,n.tipDiameter/2,n.baseDiameter/2,e.centerDistance,e.moduleSize,e.alpha,e.alphaW_sp),crPlanetRing:U0(n.tipDiameter/2,n.baseDiameter/2,r.tipDiameter/2,r.baseDiameter/2,e.centerDistance,e.moduleSize,e.alpha,e.alphaW_pr),undercutSun:G0(e.sunTeeth,e.alpha,e.sunShift),undercutPlanet:G0(e.planetTeeth,e.alpha,e.planetShift)};if(e.appliedTorque!==void 0){let t=e.appliedTorque;i.lewisStress={sun:Y0(t,e.moduleSize,e.thickness,e.sunTeeth,e.alpha),planet:Y0(t*e.planetTeeth/e.sunTeeth,e.moduleSize,e.thickness,e.planetTeeth,e.alpha),ring:Y0(t*e.zr/e.sunTeeth,e.moduleSize,e.thickness,e.zr,e.alpha,!0)},i.stressConcentrationFactor={sun:J0(e.sunTeeth,e.alpha),planet:J0(e.planetTeeth,e.alpha),ring:J0(e.zr,e.alpha,!0)}}return i}function y2(e,t){let n=[];t.crSunPlanet<1.2&&n.push({code:`CONTACT_RATIO_LOW_SUN_PLANET`,severity:`warning`,message:`sun-planet contact ratio ${t.crSunPlanet.toFixed(2)} is below 1.2 — may run unevenly`,context:{value:t.crSunPlanet}}),t.crPlanetRing<1.2&&n.push({code:`CONTACT_RATIO_LOW_PLANET_RING`,severity:`warning`,message:`planet-ring contact ratio ${t.crPlanetRing.toFixed(2)} is below 1.2 — may run unevenly`,context:{value:t.crPlanetRing}}),t.undercutSun>0&&n.push({code:`UNDERCUT_RISK_SUN`,severity:`warning`,message:`sun gear is undercut: increase sunShift by ${t.undercutSun.toFixed(3)} to avoid`,context:{deficit:t.undercutSun,sunTeeth:e.sunTeeth}}),t.undercutPlanet>0&&n.push({code:`UNDERCUT_RISK_PLANET`,severity:`warning`,message:`planet gear is undercut: increase planetShift by ${t.undercutPlanet.toFixed(3)} to avoid`,context:{deficit:t.undercutPlanet,planetTeeth:e.planetTeeth}});let r=Math.abs(e.sunShift)+Math.abs(e.planetShift)+Math.abs(e.ringShift);e.appliedTorque!==void 0&&r>.05&&n.push({code:`LEWIS_Y_SHIFT_UNCORRECTED`,severity:`info`,message:`Lewis stress uses unshifted Y(z) and K_f approximations; expect ±5% per 0.1 of profile shift`});let i=e.ringShift-(e.sunShift+2*e.planetShift);return Math.abs(i)>1e-6&&n.push({code:`PLANETARY_SHIFT_KINEMATIC_MISMATCH`,severity:`warning`,message:`ringShift should equal sunShift + 2·planetShift for both meshes to share working PA; off by ${i.toFixed(3)}`,context:{kinematicError:i,sunShift:e.sunShift,planetShift:e.planetShift,ringShift:e.ringShift}}),n}var b2=DX({addHoles:()=>MP,bezier:()=>yP,box:()=>oP,bsplineApprox:()=>vP,circle:()=>pP,compound:()=>OP,cone:()=>lP,cylinder:()=>sP,ellipse:()=>mP,ellipseArc:()=>_P,ellipsoid:()=>dP,face:()=>CP,fill:()=>DA,filledFace:()=>wP,helix:()=>hP,line:()=>fP,offsetFace:()=>AP,polygon:()=>EP,polyhedron:()=>BQ,sewShells:()=>jP,solid:()=>kP,sphere:()=>cP,subFace:()=>TP,tangentArc:()=>bP,threePointArc:()=>gP,torus:()=>uP,vertex:()=>DP,wire:()=>xP,wireLoop:()=>SP}),x2=DX({checkBoolean:()=>Oj,convexHull:()=>FQ,cut:()=>A1,cutAll:()=>zA,cutAllBisect:()=>yj,fuse:()=>k1,fuseAll:()=>RA,fuseAllBisect:()=>Cj,hull:()=>PQ,intersect:()=>N1,minkowski:()=>zQ,section:()=>P1,sectionToFace:()=>F1,slice:()=>L1,split:()=>I1}),S2=DX({chamfer:()=>H1,draft:()=>K1,fillet:()=>V1,heal:()=>q1,offset:()=>W1,shell:()=>U1,simplify:()=>J1,thicken:()=>G1,variableFillet:()=>$j}),C2=DX({applyMatrix:()=>E1,clone:()=>T1,composeTransforms:()=>mk,mirror:()=>C1,rotate:()=>S1,scale:()=>w1,transformCopy:()=>D1,translate:()=>x1}),w2=DX({checkAllInterferences:()=>Z$,checkInterference:()=>X$,createDistanceQuery:()=>zM,measureArea:()=>FM,measureCurvatureAt:()=>BM,measureCurvatureAtMid:()=>VM,measureDistance:()=>LM,measureDistanceProps:()=>RM,measureLength:()=>IM,measureLinearProps:()=>NM,measureSurfaceProps:()=>MM,measureVolume:()=>PM,measureVolumeProps:()=>jM}),T2=DX({blueprintToDXF:()=>hY,exportAssemblySTEP:()=>FP,exportDXF:()=>mY,exportGlb:()=>tY,exportGltf:()=>eY,exportIGES:()=>nA,exportOBJ:()=>WJ,exportSTEP:()=>eA,exportSTEPConfigured:()=>QY,exportSTL:()=>tA,exportThreeMF:()=>PY,importDXF:()=>n1,importGLB:()=>y1,importIGES:()=>tX,importOBJ:()=>o1,importSTEP:()=>$Y,importSTL:()=>eX,importSVG:()=>ZY,importSVGPathD:()=>XY,importThreeMF:()=>v1}),E2=DX({cornerFinder:()=>mR,edgeFinder:()=>RI,faceFinder:()=>VI,getSingleFace:()=>WI,vertexFinder:()=>IX,wireFinder:()=>UI}),D2=DX({complexExtrude:()=>hM,extrude:()=>n0,guidedSweep:()=>bM,loft:()=>i0,multiSectionSweep:()=>yM,revolve:()=>r0,roof:()=>l$,supportExtrude:()=>mM,surfaceFromGrid:()=>kQ,surfaceFromImage:()=>MQ,sweep:()=>pM,twistExtrude:()=>gM}),O2=DX({circularPattern:()=>LP,linearPattern:()=>IP}),k2=14695981039346656037n,A2=1099511628211n,j2=18446744073709551615n;function M2(){return k2}function N2(e,t){return(e^BigInt(t&255))*A2&j2}function P2(e,t){let n=e;for(let e=0;e<t.length;e++)n=N2(n,t[e]??0);return n}var F2=new TextEncoder;function I2(e,t){return P2(e,F2.encode(t))}var L2=new ArrayBuffer(8),R2=new DataView(L2),z2=new Uint8Array(L2);function B2(e,t){return R2.setFloat64(0,Object.is(t,-0)?0:t),P2(e,z2)}function V2(e,t){let n=e,r=t&j2;for(let e=0;e<8;e++)n=N2(n,Number(r&255n)),r>>=8n;return n}function H2(e,t){let n=e,r=t|0;for(let e=0;e<4;e++)n=N2(n,r&255),r>>>=8;return n}function U2(e,t){return N2(e,+!!t)}function W2(e){return(e&j2).toString(16).padStart(16,`0`)}var G2=new Set;function K2(e){return I2(M2(),e)}function q2(e){return{kind:`NumLit`,value:e,structuralHash:B2(K2(`NumLit`),e),freeParams:G2}}function J2(e){let t=K2(`Vec3Lit`);for(let n of e)t=B2(t,n);return{kind:`Vec3Lit`,value:e,structuralHash:t,freeParams:G2}}function Y2(e){let t=K2(`Vec2Lit`);for(let n of e)t=B2(t,n);return{kind:`Vec2Lit`,value:e,structuralHash:t,freeParams:G2}}function X2(e){return{kind:`Param`,name:e,structuralHash:I2(K2(`Param`),e),freeParams:new Set([e])}}function Z2(e,t,n){let r=I2(K2(`BinOp`),e);return r=V2(r,t.structuralHash),r=V2(r,n.structuralHash),{kind:`BinOp`,op:e,a:t,b:n,structuralHash:r,freeParams:s4(t.freeParams,n.freeParams)}}function Q2(e,t){let n=I2(K2(`UnaryOp`),e);return n=V2(n,t.structuralHash),{kind:`UnaryOp`,op:e,arg:t,structuralHash:n,freeParams:t.freeParams}}function $2(e,t){let n=H2(K2(`Component`),t);return n=V2(n,e.structuralHash),{kind:`Component`,vec:e,index:t,structuralHash:n,freeParams:e.freeParams}}function e4(e,t){let n=H2(K2(`BuildVec`),e),r=new Set;for(let e of t){n=V2(n,e.structuralHash);for(let t of e.freeParams)r.add(t)}return{kind:`BuildVec`,dim:e,components:t,structuralHash:n,freeParams:r}}var t4=(e,t)=>Z2(`+`,e,t),n4=(e,t)=>Z2(`*`,e,t);function r4(e){return typeof e==`number`?q2(e):e}function i4(e,t){if(!Array.isArray(e))return e;let n=e;return n.every(e=>typeof e==`number`)?t===3?J2([n[0],n[1],n[2]]):Y2([n[0],n[1]]):e4(t,n.map(r4))}function a4(e){return i4(e,3)}function o4(e){return i4(e,2)}function s4(e,t){if(e.size===0)return t;if(t.size===0)return e;let n=new Set(e);for(let e of t)n.add(e);return n}function c4(e){return typeof e==`number`}function l4(e,t){return c4(e)?O(e):k(P(M.NULL_SHAPE_INPUT,`${t}: expected number, got ${Array.isArray(e)?`vector(${e.length})`:typeof e}`))}function u4(e,t,n){return Array.isArray(e)&&e.length===t?O(e):k(P(M.NULL_SHAPE_INPUT,`${n}: expected Vec${t}, got ${c4(e)?`number`:`vector(${e.length})`}`))}function d4(e,t){switch(e.kind){case`NumLit`:return O(e.value);case`Vec3Lit`:return O(e.value);case`Vec2Lit`:return O(e.value);case`Param`:{let n=t[e.name];return n===void 0?k(P(M.NULL_SHAPE_INPUT,`unbound param: ${e.name}`)):O(n)}case`BinOp`:return f4(e,t);case`UnaryOp`:return p4(e,t);case`Component`:return m4(e,t);case`BuildVec`:return h4(e,t)}}function f4(e,t){let n=d4(e.a,t);if(!n.ok)return n;let r=d4(e.b,t);if(!r.ok)return r;let i=l4(n.value,`BinOp(${e.op}).a`);if(!i.ok)return i;let a=l4(r.value,`BinOp(${e.op}).b`);if(!a.ok)return a;switch(e.op){case`+`:return O(i.value+a.value);case`-`:return O(i.value-a.value);case`*`:return O(i.value*a.value);case`/`:return a.value===0?k(P(M.NULL_SHAPE_INPUT,`BinOp(/): division by zero`)):O(i.value/a.value)}}function p4(e,t){let n=d4(e.arg,t);if(!n.ok)return n;let r=l4(n.value,`UnaryOp(${e.op})`);if(!r.ok)return r;let i=r.value;switch(e.op){case`neg`:return O(-i);case`sin`:return O(Math.sin(i));case`cos`:return O(Math.cos(i));case`sqrt`:return O(Math.sqrt(i));case`abs`:return O(Math.abs(i))}}function m4(e,t){let n=d4(e.vec,t);if(!n.ok)return n;if(c4(n.value))return k(P(M.NULL_SHAPE_INPUT,`Component: cannot index a scalar`));let r=n.value,i=r[e.index];return i===void 0?k(P(M.NULL_SHAPE_INPUT,`Component: index ${e.index} out of range for Vec${r.length}`)):O(i)}function h4(e,t){if(e.components.length!==e.dim)return k(P(M.NULL_SHAPE_INPUT,`BuildVec(${e.dim}): expected ${e.dim} components, got ${e.components.length}`));let n=[];for(let r of e.components){let e=d4(r,t);if(!e.ok)return e;let i=l4(e.value,`BuildVec.component`);if(!i.ok)return i;n.push(i.value)}return O(e.dim===2?[n[0],n[1]]:[n[0],n[1],n[2]])}function g4(e,t,n){let r=d4(e,t);return r.ok?l4(r.value,n):r}function _4(e,t,n){let r=d4(e,t);if(!r.ok)return r;let i=u4(r.value,3,n);if(!i.ok)return i;let[a,o,s]=i.value;return O([a,o,s])}function v4(e,t){if(t.size===0)return Object.freeze({});let n={};for(let r of t){let t=e[r];t!==void 0&&(n[r]=t)}return Object.freeze(n)}var y4=new Set;function b4(e){return I2(M2(),e)}function x4(e,t){return V2(e,t.structuralHash)}function S4(e,t){return t===void 0?U2(e,!1):x4(U2(e,!0),t)}function C4(e,t){return t===void 0?U2(e,!1):B2(U2(e,!0),t)}function w4(...e){let t=new Set;for(let n of e)if(n)for(let e of n.freeParams)t.add(e);return t.size===0?y4:t}function T4(e,t,n){let r=r4(e),i=r4(t),a=r4(n),o=b4(`Box`);return o=x4(x4(x4(o,r),i),a),{kind:`Box`,x:r,y:i,z:a,structuralHash:o,freeParams:w4(r,i,a)}}function E4(e){let t=r4(e);return{kind:`Sphere`,radius:t,structuralHash:x4(b4(`Sphere`),t),freeParams:t.freeParams}}function D4(e,t){let n=r4(e),r=r4(t);return{kind:`Cylinder`,radius:n,height:r,structuralHash:x4(x4(b4(`Cylinder`),n),r),freeParams:w4(n,r)}}function O4(e,t,n){let r=r4(e),i=r4(t),a=r4(n),o=b4(`Cone`);return o=x4(x4(x4(o,r),i),a),{kind:`Cone`,radius1:r,radius2:i,height:a,structuralHash:o,freeParams:w4(r,i,a)}}function k4(e,t){let n=r4(e),r=r4(t);return{kind:`Torus`,majorRadius:n,minorRadius:r,structuralHash:x4(x4(b4(`Torus`),n),r),freeParams:w4(n,r)}}function A4(e){let t=e.map(a4),n=H2(b4(`Polygon`),t.length);for(let e of t)n=x4(n,e);return{kind:`Polygon`,points:t,structuralHash:n,freeParams:w4(...t)}}function j4(e){let t=r4(e);return{kind:`Circle`,radius:t,structuralHash:x4(b4(`Circle`),t),freeParams:t.freeParams}}function M4(e,t){let n=a4(e),r=a4(t);return{kind:`Line`,from:n,to:r,structuralHash:x4(x4(b4(`Line`),n),r),freeParams:w4(n,r)}}function N4(e){let t=a4(e);return{kind:`Vertex`,point:t,structuralHash:x4(b4(`Vertex`),t),freeParams:t.freeParams}}function P4(e){return{kind:`Empty`,output:e,structuralHash:I2(b4(`Empty`),e),freeParams:y4}}function F4(){return P4(`Solid`)}function I4(){return P4(`Face`)}function L4(){return P4(`Wire`)}function R4(e,t,n,r){return C4(x4(x4(b4(e),t),n),r)}function z4(e,t,n){return{kind:`Fuse`,a:e,b:t,tolerance:n,structuralHash:R4(`Fuse`,e,t,n),freeParams:w4(e,t)}}function B4(e,t,n){return{kind:`Cut`,a:e,b:t,tolerance:n,structuralHash:R4(`Cut`,e,t,n),freeParams:w4(e,t)}}function V4(e,t,n){return{kind:`Intersect`,a:e,b:t,tolerance:n,structuralHash:R4(`Intersect`,e,t,n),freeParams:w4(e,t)}}function H4(e,t){let n=H2(b4(`FuseAll`),e.length);for(let t of e)n=x4(n,t);return n=C4(n,t),{kind:`FuseAll`,shapes:e,tolerance:t,structuralHash:n,freeParams:w4(...e)}}function U4(e,t,n){let r=x4(b4(`CutAll`),e);r=H2(r,t.length);for(let e of t)r=x4(r,e);return r=C4(r,n),{kind:`CutAll`,base:e,tools:t,tolerance:n,structuralHash:r,freeParams:w4(e,...t)}}function W4(e){return e===void 0?void 0:a4(e)}function G4(e,t){let n=a4(t);return{kind:`Translate`,target:e,vector:n,structuralHash:x4(x4(b4(`Translate`),e),n),freeParams:w4(e,n)}}function K4(e,t,n){let r=r4(t),i=W4(n?.axis),a=W4(n?.at),o=x4(x4(b4(`Rotate`),e),r);return o=S4(o,i),o=S4(o,a),{kind:`Rotate`,target:e,angle:r,axis:i,at:a,structuralHash:o,freeParams:w4(e,r,i,a)}}function q4(e,t,n){let r=r4(t),i=W4(n?.center),a=x4(x4(b4(`Scale`),e),r);return a=S4(a,i),{kind:`Scale`,target:e,factor:r,center:i,structuralHash:a,freeParams:w4(e,r,i)}}function J4(e,t){let n=W4(t?.normal),r=W4(t?.at),i=x4(b4(`Mirror`),e);return i=S4(i,n),i=S4(i,r),{kind:`Mirror`,target:e,normal:n,at:r,structuralHash:i,freeParams:w4(e,n,r)}}function Y4(e){let t=H2(b4(`Compound`),e.length);for(let n of e)t=x4(t,n);return{kind:`Compound`,children:e,structuralHash:t,freeParams:w4(...e)}}function X4(e,t,n=!1){let r=t.map(e=>e.map(e=>[...e])),i=H2(U2(x4(b4(`Instance`),e),n),r.length);for(let e of r)for(let t of e.flat())i=B2(i,t);return{kind:`Instance`,source:e,placements:r,fuse:n,structuralHash:i,freeParams:w4(e)}}function Z4(e){switch(e.kind){case`Box`:case`Sphere`:case`Cylinder`:case`Cone`:case`Torus`:return`Solid`;case`Polygon`:return`Face`;case`Circle`:case`Line`:return`Edge`;case`Vertex`:return`Vertex`;case`Empty`:return e.output;case`Fuse`:case`Cut`:case`Intersect`:return Z4(e.a);case`FuseAll`:return e.shapes[0]?Z4(e.shapes[0]):`Solid`;case`CutAll`:return Z4(e.base);case`Translate`:case`Rotate`:case`Scale`:case`Mirror`:return Z4(e.target);case`Compound`:return`Compound`;case`Instance`:return e.fuse?`Solid`:`Compound`}}function Q4(e,t){let n=g4(e.x,t.env,`Box.x`);if(!n.ok)return n;let r=g4(e.y,t.env,`Box.y`);if(!r.ok)return r;let i=g4(e.z,t.env,`Box.z`);return i.ok?O(oP(n.value,r.value,i.value)):i}function $4(e,t){let n=g4(e.radius,t.env,`Sphere.radius`);return n.ok?O(cP(n.value)):n}function e3(e,t){let n=g4(e.radius,t.env,`Cylinder.radius`);if(!n.ok)return n;let r=g4(e.height,t.env,`Cylinder.height`);return r.ok?O(sP(n.value,r.value)):r}function t3(e,t){let n=g4(e.radius1,t.env,`Cone.radius1`);if(!n.ok)return n;let r=g4(e.radius2,t.env,`Cone.radius2`);if(!r.ok)return r;let i=g4(e.height,t.env,`Cone.height`);return i.ok?O(lP(n.value,r.value,i.value)):i}function n3(e,t){let n=g4(e.majorRadius,t.env,`Torus.majorRadius`);if(!n.ok)return n;let r=g4(e.minorRadius,t.env,`Torus.minorRadius`);return r.ok?O(uP(n.value,r.value)):r}function r3(e,t){let n=[];for(let r of e.points){let e=_4(r,t.env,`Polygon.point`);if(!e.ok)return e;n.push(e.value)}return EP(n)}function i3(e,t){let n=g4(e.radius,t.env,`Circle.radius`);return n.ok?O(pP(n.value)):n}function a3(e,t){let n=_4(e.from,t.env,`Line.from`);if(!n.ok)return n;let r=_4(e.to,t.env,`Line.to`);return r.ok?O(fP(n.value,r.value)):r}function o3(e,t){let n=_4(e.point,t.env,`Vertex.point`);return n.ok?O(DP(n.value)):n}function s3(e){return k(F(M.NULL_SHAPE_INPUT,`${e}: empty result has no kernel representation`))}function c3(e,t,n){let r=e.evalNode(t);return r.ok?NE(r.value)?O(r.value):k(yo(M.CSG_NOT_3D,`${n}: operand did not produce a 3D shape`)):r}function l3(e,t){return{unsafe:!0,fuzzyValue:e.tolerance??t.tolerance}}function u3(e,t){if(e.a.kind===`Empty`)return t.evalNode(e.b);if(e.b.kind===`Empty`)return t.evalNode(e.a);let n=c3(t,e.a,`Fuse.a`);if(!n.ok)return n;let r=c3(t,e.b,`Fuse.b`);return r.ok?PA(n.value,r.value,l3(e,t)):r}function d3(e,t){if(e.a.kind===`Empty`)return s3(`Cut`);if(e.b.kind===`Empty`)return t.evalNode(e.a);let n=c3(t,e.a,`Cut.a`);if(!n.ok)return n;let r=c3(t,e.b,`Cut.b`);return r.ok?FA(n.value,r.value,l3(e,t)):r}function f3(e,t){if(e.a.kind===`Empty`||e.b.kind===`Empty`)return s3(`Intersect`);let n=c3(t,e.a,`Intersect.a`);if(!n.ok)return n;let r=c3(t,e.b,`Intersect.b`);return r.ok?IA(n.value,r.value,l3(e,t)):r}function p3(e,t,n){let r=[];for(let i of t){let t=c3(e,i,n);if(!t.ok)return t;r.push(t.value)}return O(r)}function m3(e,t){let n=e.shapes.filter(e=>e.kind!==`Empty`);if(n.length===0)return s3(`FuseAll`);if(n.length===1&&n[0])return t.evalNode(n[0]);let r=p3(t,n,`FuseAll.operand`);return r.ok?RA(r.value,l3(e,t)):r}function h3(e,t){if(e.base.kind===`Empty`)return s3(`CutAll`);let n=e.tools.filter(e=>e.kind!==`Empty`);if(n.length===0)return t.evalNode(e.base);let r=c3(t,e.base,`CutAll.base`);if(!r.ok)return r;let i=p3(t,n,`CutAll.tool`);return i.ok?zA(r.value,i.value,l3(e,t)):i}function g3(e){return k(F(M.NULL_SHAPE_INPUT,`${e}: cannot transform an Empty node`))}function _3(e,t,n,r){return e?_4(e,t,n):O(r)}function v3(e,t){let n=U(),{handle:r,dispose:i}=n.composeTransform(t),a;try{a=FE(n.locate(e.wrapped,r))}finally{i()}return ek(e)&&ik(e,a),a}function y3(e,t){if(e.target.kind===`Empty`)return g3(`Translate`);let n=_4(e.vector,t.env,`Translate.vector`);if(!n.ok)return n;let r=t.evalNode(e.target);return r.ok?O(v3(r.value,[{type:`translate`,x:n.value[0],y:n.value[1],z:n.value[2]}])):r}function b3(e,t){if(e.target.kind===`Empty`)return g3(`Rotate`);let n=g4(e.angle,t.env,`Rotate.angle`);if(!n.ok)return n;let r=_3(e.axis,t.env,`Rotate.axis`,[0,0,1]);if(!r.ok)return r;let i=_3(e.at,t.env,`Rotate.at`,[0,0,0]);if(!i.ok)return i;let a=t.evalNode(e.target);return a.ok?O(v3(a.value,[{type:`rotate`,angle:n.value,axis:r.value,center:i.value}])):a}function x3(e,t){if(e.target.kind===`Empty`)return g3(`Scale`);let n=g4(e.factor,t.env,`Scale.factor`);if(!n.ok)return n;let r=_3(e.center,t.env,`Scale.center`,[0,0,0]);if(!r.ok)return r;let i=t.evalNode(e.target);return i.ok?O(ck(i.value,n.value,r.value)):i}function S3(e,t){if(e.target.kind===`Empty`)return g3(`Mirror`);let n=_3(e.normal,t.env,`Mirror.normal`,[1,0,0]);if(!n.ok)return n;let r=_3(e.at,t.env,`Mirror.at`,[0,0,0]);if(!r.ok)return r;let i=t.evalNode(e.target);return i.ok?O(sk(i.value,n.value,r.value)):i}function C3(e,t){let n=e.children.filter(e=>e.kind!==`Empty`);if(n.length===0)return k(F(M.NULL_SHAPE_INPUT,`Compound: cannot materialize a compound with zero non-empty children`));let r=[];for(let e of n){let n=t.evalNode(e);if(!n.ok)return n;r.push(n.value)}return O(OP(r))}function w3(){return k(F(M.NULL_SHAPE_INPUT,`Empty: cannot materialize an Empty node directly — only valid as boolean/transform operand`))}function T3(e,t){let n=t.evalNode(e.source);return n.ok?_$(m$(n.value,e.placements),{fuse:e.fuse}):n}function E3(e,t){switch(e.kind){case`Box`:return Q4(e,t);case`Sphere`:return $4(e,t);case`Cylinder`:return e3(e,t);case`Cone`:return t3(e,t);case`Torus`:return n3(e,t);case`Polygon`:return r3(e,t);case`Circle`:return i3(e,t);case`Line`:return a3(e,t);case`Vertex`:return o3(e,t);case`Empty`:return w3();case`Fuse`:return u3(e,t);case`Cut`:return d3(e,t);case`Intersect`:return f3(e,t);case`FuseAll`:return m3(e,t);case`CutAll`:return h3(e,t);case`Translate`:return y3(e,t);case`Rotate`:return b3(e,t);case`Scale`:return x3(e,t);case`Mirror`:return S3(e,t);case`Compound`:return C3(e,t);case`Instance`:return T3(e,t)}}function D3(e,t){if(typeof t==`number`)return B2(U2(e,!1),t);let n=U2(e,!0);n=H2(n,t.length);for(let e of t)n=B2(n,e);return n}function O3(e,t){if(t.size===0)return M2();let n=v4(e,t),r=Object.keys(n).sort(),i=M2();for(let e of r){i=I2(i,e);let t=n[e];t!==void 0&&(i=D3(i,t))}return i}function k3(e,t,n,r){let i=O3(t,e.freeParams),a=r===void 0?`d`:B2(M2(),r).toString(16);return`${W2(e.structuralHash)}:${n}:${W2(i)}:${a}`}var A3=[1,0,0,0];function j3(e,t){let n=g4(e.angle,t,`evaluateMesh.peelRigid`);if(!n.ok)return null;let r=e.axis?_4(e.axis,t,`evaluateMesh.peelRigid`):O([0,0,1]);if(!r.ok)return null;let i=e.at?_4(e.at,t,`evaluateMesh.peelRigid`):O([0,0,0]);return i.ok?{angle:n.value,axis:r.value,center:i.value}:null}function M3(e,t){let n=e,r=A3,i=[0,0,0];for(;;)if(n.kind===`Translate`){let e=_4(n.vector,t,`evaluateMesh.peelRigid`);if(!e.ok)break;let a=ZP(r,e.value);i=[i[0]+a[0],i[1]+a[1],i[2]+a[2]],n=n.target}else if(n.kind===`Rotate`){let e=j3(n,t);if(!e)break;let a=QP(e.axis,e.angle*Math.PI/180),o=eF(r,a),s=ZP(r,e.center),c=ZP(o,e.center);i=[i[0]+s[0]-c[0],i[1]+s[1]-c[1],i[2]+s[2]-c[2]],r=o,n=n.target}else break;return{inner:n,rot:r,trans:i}}function N3(e){return e[0]===1&&e[1]===0&&e[2]===0&&e[3]===0}function P3(e,t,n,r,i,a,o,s,c){for(let l=0;l<t.length;l+=3){let u=t[l]??0,d=t[l+1]??0,f=t[l+2]??0,p=2*(i*f-a*d),m=2*(a*u-r*f),h=2*(r*d-i*u);e[l]=u+n*p+(i*h-a*m)+o,e[l+1]=d+n*m+(a*p-r*h)+s,e[l+2]=f+n*h+(r*m-i*p)+c}}function F3(e,t,n){let[r,i,a]=n,o=N3(t);if(o&&r===0&&i===0&&a===0)return e;let s=e.vertices,c=new Float32Array(s.length);if(o){for(let e=0;e<s.length;e+=3)c[e]=(s[e]??0)+r,c[e+1]=(s[e+1]??0)+i,c[e+2]=(s[e+2]??0)+a;return{...e,vertices:c}}let[l,u,d,f]=t;P3(c,s,l,u,d,f,r,i,a);let p=e.normals,m=new Float32Array(p.length);return P3(m,p,l,u,d,f,0,0,0),{...e,vertices:c,normals:m}}function I3(e,t,n){let r=new Map,i=Math.min(t.length,n.length);for(let e=0;e<i;e++){let i=t[e],a=n[e];i!==void 0&&a!==void 0&&r.set(i,a)}return e.map(e=>({...e,faceId:r.get(e.faceId)??e.faceId}))}var L3=class{cache=new Map;refCounts=new Map;evaluating=!1;pendingKeys=[];kernelId;defaultTolerance;maxCacheEntries;maxMeshCacheEntries;meshCache=new Map;onStep;hits=0;misses=0;evictions=0;constructor(e={}){this.kernelId=e.kernel??bT()??`unregistered`,this.defaultTolerance=e.tolerance,e.onStep&&(this.onStep=e.onStep);let t=e.maxCacheEntries;if(t!==void 0&&(!Number.isInteger(t)||t<1))throw RangeError(`Evaluator: maxCacheEntries must be a positive integer, got ${String(t)}`);this.maxCacheEntries=t;let n=e.maxMeshCacheEntries;if(n!==void 0&&(!Number.isInteger(n)||n<1))throw RangeError(`Evaluator: maxMeshCacheEntries must be a positive integer, got ${String(n)}`);this.maxMeshCacheEntries=n}evaluate(e,t={}){if(this.maxCacheEntries!==void 0&&this.evaluating)throw Error(`Evaluator.evaluate() is not reentrant when maxCacheEntries is set — do not call it from an onStep callback.`);return xT(this.kernelId,()=>{this.evaluating=!0;let n=!1;try{let r=this.evaluateInner(e,t);return this.maxCacheEntries!==void 0&&r.ok&&this.trimCache(this.maxCacheEntries),n=r.ok,r}finally{!n&&this.maxCacheEntries!==void 0&&this.rollbackPending(),this.pendingKeys.length=0,this.evaluating=!1}})}evaluateMesh(e,t={},n={}){n.signal?.throwIfAborted();let r=n.cache??!0,i=ko(),a=n.tolerance??i.tolerance,o=n.angularTolerance??i.angularTolerance,s=`${k3(e,t,this.kernelId,this.defaultTolerance)}|${zk(a,o,n.skipNormals??!1,n.includeUVs??!1)}`;if(r){let r=this.meshCache.get(s);if(r!==void 0)return this.maxMeshCacheEntries!==void 0&&(this.meshCache.delete(s),this.meshCache.set(s,r)),O(r);let{inner:i,rot:a,trans:o}=M3(e,t);if(i!==e){let r=this.evaluateMesh(i,t,n);if(!r.ok)return r;let c=this.evaluate(i,t);if(!c.ok)return c;let l=nD(c.value).map(yk),u=this.evaluate(e,t);if(!u.ok)return u;let d=nD(u.value).map(yk),f=F3(r.value,a,o),p=I3(f.faceGroups,l,d),m=new Set(d);if(p.every(e=>m.has(e.faceId))){let e={...f,faceGroups:p};return this.meshCache.set(s,e),this.maxMeshCacheEntries!==void 0&&this.trimMeshCache(this.maxMeshCacheEntries),O(e)}}}let c=this.evaluate(e,t);if(!c.ok)return c;let l=xT(this.kernelId,()=>Yk(c.value,n));return r&&(this.meshCache.set(s,l),this.maxMeshCacheEntries!==void 0&&this.trimMeshCache(this.maxMeshCacheEntries)),O(l)}evaluateInner(e,t){let n=k3(e,t,this.kernelId,this.defaultTolerance),r=this.cache.get(n);if(r!==void 0)return this.hits++,this.maxCacheEntries!==void 0&&(this.cache.delete(n),this.cache.set(n,r)),this.onStep?.({node:e,cacheKey:n,cacheHit:!0}),O(r);this.misses++;let i=E3(e,{env:t,tolerance:this.defaultTolerance,evalNode:e=>this.evaluateInner(e,t)});if(!i.ok)return i;let a=i.value;return this.refCounts.set(a,(this.refCounts.get(a)??0)+1),this.cache.set(n,a),this.maxCacheEntries!==void 0&&this.pendingKeys.push(n),this.onStep?.({node:e,cacheKey:n,cacheHit:!1}),i}releaseShape(e){let t=(this.refCounts.get(e)??1)-1;t<=0?(this.refCounts.delete(e),e[Symbol.dispose]()):this.refCounts.set(e,t)}trimCache(e){for(;this.cache.size>e;){let e=this.cache.keys().next();if(e.done)break;let t=e.value,n=this.cache.get(t);this.cache.delete(t),this.evictions++,n!==void 0&&this.releaseShape(n)}}trimMeshCache(e){for(;this.meshCache.size>e;){let e=this.meshCache.keys().next();if(e.done)break;this.meshCache.delete(e.value)}}rollbackPending(){for(let e of this.pendingKeys){let t=this.cache.get(e);t!==void 0&&(this.cache.delete(e),this.releaseShape(t))}}cacheStats(){return{hits:this.hits,misses:this.misses,entries:this.cache.size,evictions:this.evictions}}resetStats(){this.hits=0,this.misses=0,this.evictions=0}[Symbol.dispose](){for(let e of this.refCounts.keys())e[Symbol.dispose]();this.refCounts.clear(),this.cache.clear(),this.meshCache.clear()}};function R3(e,t){try{var n=jT();let r=t(n.u(new L3(e)));if(r instanceof Promise)throw Error(`withEvaluator() callback returned a Promise. Async code must construct an Evaluator directly and dispose it manually — borrowed shapes would otherwise be freed before the Promise resolves.`);return r}catch(e){n.e=e}finally{n.d()}}function z3(e){return{csgVersion:1,root:G3(e)}}function B3(e){switch(e.kind){case`NumLit`:return{kind:`NumLit`,value:e.value};case`Vec3Lit`:return{kind:`Vec3Lit`,value:[e.value[0],e.value[1],e.value[2]]};case`Vec2Lit`:return{kind:`Vec2Lit`,value:[e.value[0],e.value[1]]};case`Param`:return{kind:`Param`,name:e.name};case`BinOp`:return{kind:`BinOp`,op:e.op,a:B3(e.a),b:B3(e.b)};case`UnaryOp`:return{kind:`UnaryOp`,op:e.op,arg:B3(e.arg)};case`Component`:return{kind:`Component`,vec:B3(e.vec),index:e.index};case`BuildVec`:return{kind:`BuildVec`,dim:e.dim,components:e.components.map(B3)}}}function V3(e){switch(e.kind){case`Box`:return{kind:`Box`,x:B3(e.x),y:B3(e.y),z:B3(e.z)};case`Sphere`:return{kind:`Sphere`,radius:B3(e.radius)};case`Cylinder`:return{kind:`Cylinder`,radius:B3(e.radius),height:B3(e.height)};case`Cone`:return{kind:`Cone`,radius1:B3(e.radius1),radius2:B3(e.radius2),height:B3(e.height)};case`Torus`:return{kind:`Torus`,majorRadius:B3(e.majorRadius),minorRadius:B3(e.minorRadius)};case`Polygon`:return{kind:`Polygon`,points:e.points.map(B3)};case`Circle`:return{kind:`Circle`,radius:B3(e.radius)};case`Line`:return{kind:`Line`,from:B3(e.from),to:B3(e.to)};case`Vertex`:return{kind:`Vertex`,point:B3(e.point)};case`Empty`:return{kind:`Empty`,output:e.output};default:return}}function H3(e){switch(e.kind){case`Fuse`:case`Cut`:case`Intersect`:return{kind:e.kind,a:G3(e.a),b:G3(e.b),tolerance:e.tolerance};case`FuseAll`:return{kind:`FuseAll`,shapes:e.shapes.map(G3),tolerance:e.tolerance};case`CutAll`:return{kind:`CutAll`,base:G3(e.base),tools:e.tools.map(G3),tolerance:e.tolerance};default:return}}function U3(e){return e?B3(e):void 0}function W3(e){switch(e.kind){case`Translate`:return{kind:`Translate`,target:G3(e.target),vector:B3(e.vector)};case`Rotate`:return{kind:`Rotate`,target:G3(e.target),angle:B3(e.angle),axis:U3(e.axis),at:U3(e.at)};case`Scale`:return{kind:`Scale`,target:G3(e.target),factor:B3(e.factor),center:U3(e.center)};case`Mirror`:return{kind:`Mirror`,target:G3(e.target),normal:U3(e.normal),at:U3(e.at)};default:return}}function G3(e){return e.kind===`Compound`?{kind:`Compound`,children:e.children.map(G3)}:e.kind===`Instance`?{kind:`Instance`,source:G3(e.source),placements:e.placements,fuse:e.fuse}:V3(e)??H3(e)??W3(e)}function K3(e){return k(P(M.NULL_SHAPE_INPUT,`csg.fromJSON: ${e}`))}function q3(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function J3(e){return typeof e==`number`&&Number.isFinite(e)}function Y3(e){return typeof e==`string`}function X3(e,t){if(!Array.isArray(e)||e.length!==3)return K3(`${t}: expected Vec3 array`);let[n,r,i]=e;return!J3(n)||!J3(r)||!J3(i)?K3(`${t}: Vec3 contains non-number`):O([n,r,i])}function Z3(e,t){if(!Array.isArray(e)||e.length!==2)return K3(`${t}: expected Vec2 array`);let[n,r]=e;return!J3(n)||!J3(r)?K3(`${t}: Vec2 contains non-number`):O([n,r])}function Q3(e){if(!q3(e))return K3(`input is not an object`);let t=e.csgVersion;if(t!==1)return K3(`unsupported csgVersion ${String(t)} (expected 1)`);let n=e.root;return o6(n)}function $3(e){if(!q3(e))return K3(`expression: not an object`);let t=e.kind;switch(t){case`NumLit`:return J3(e.value)?O(q2(e.value)):K3(`NumLit.value`);case`Vec3Lit`:{let t=X3(e.value,`Vec3Lit.value`);return t.ok?O(J2(t.value)):t}case`Vec2Lit`:{let t=Z3(e.value,`Vec2Lit.value`);return t.ok?O(Y2(t.value)):t}case`Param`:return Y3(e.name)?O(X2(e.name)):K3(`Param.name`);case`BinOp`:return e6(e);case`UnaryOp`:return t6(e);case`Component`:return n6(e);case`BuildVec`:return r6(e);default:return K3(`unknown expression kind: ${String(t)}`)}}function e6(e){let t=e.op;if(t!==`+`&&t!==`-`&&t!==`*`&&t!==`/`)return K3(`BinOp.op: ${String(t)}`);let n=$3(e.a);if(!n.ok)return n;let r=$3(e.b);return r.ok?O(Z2(t,n.value,r.value)):r}function t6(e){let t=e.op;if(!Y3(t)||![`neg`,`sin`,`cos`,`sqrt`,`abs`].includes(t))return K3(`UnaryOp.op: ${String(t)}`);let n=$3(e.arg);return n.ok?O(Q2(t,n.value)):n}function n6(e){let t=e.index;if(t!==0&&t!==1&&t!==2)return K3(`Component.index: ${String(t)}`);let n=$3(e.vec);return n.ok?O($2(n.value,t)):n}function r6(e){let t=e.dim;if(t!==2&&t!==3)return K3(`BuildVec.dim: ${String(t)}`);let n=e.components;if(!Array.isArray(n))return K3(`BuildVec.components: not array`);if(n.length!==t)return K3(`BuildVec.components: expected ${t} components, got ${n.length}`);let r=[];for(let e of n){let t=$3(e);if(!t.ok)return t;r.push(t.value)}return O(e4(t,r))}function i6(e,t){if(!Array.isArray(e))return K3(`${t}: not array`);let n=[];for(let t of e){let e=o6(t);if(!e.ok)return e;n.push(e.value)}return O(n)}function a6(e){let t=e.tolerance;return t==null?O(void 0):J3(t)?O(t):K3(`tolerance: not a finite number`)}function o6(e){if(!q3(e))return K3(`node: not an object`);let t=e.kind;switch(t){case`Box`:case`Sphere`:case`Cylinder`:case`Cone`:case`Torus`:case`Polygon`:case`Circle`:case`Line`:case`Vertex`:case`Empty`:return c6(t,e);case`Fuse`:case`Cut`:case`Intersect`:return g6(t,e);case`FuseAll`:case`CutAll`:return _6(t,e);case`Translate`:case`Rotate`:case`Scale`:case`Mirror`:return v6(t,e);case`Compound`:return w6(e);case`Instance`:return E6(e);default:return K3(`unknown node kind: ${String(t)}`)}}function s6(e,t,n){let r=$3(e[t]);return r.ok?O(n(r.value)):r}function c6(e,t){switch(e){case`Box`:return l6(t);case`Sphere`:return s6(t,`radius`,E4);case`Cylinder`:return u6(t);case`Cone`:return d6(t);case`Torus`:return f6(t);case`Polygon`:return p6(t);case`Circle`:return s6(t,`radius`,j4);case`Line`:return m6(t);case`Vertex`:return s6(t,`point`,N4);case`Empty`:return h6(t)}return K3(`unhandled primitive: ${e}`)}function l6(e){let t=$3(e.x);if(!t.ok)return t;let n=$3(e.y);if(!n.ok)return n;let r=$3(e.z);return r.ok?O(T4(t.value,n.value,r.value)):r}function u6(e){let t=$3(e.radius);if(!t.ok)return t;let n=$3(e.height);return n.ok?O(D4(t.value,n.value)):n}function d6(e){let t=$3(e.radius1);if(!t.ok)return t;let n=$3(e.radius2);if(!n.ok)return n;let r=$3(e.height);return r.ok?O(O4(t.value,n.value,r.value)):r}function f6(e){let t=$3(e.majorRadius);if(!t.ok)return t;let n=$3(e.minorRadius);return n.ok?O(k4(t.value,n.value)):n}function p6(e){let t=e.points;if(!Array.isArray(t))return K3(`Polygon.points: not array`);let n=[];for(let e of t){let t=$3(e);if(!t.ok)return t;n.push(t.value)}return O(A4(n))}function m6(e){let t=$3(e.from);if(!t.ok)return t;let n=$3(e.to);return n.ok?O(M4(t.value,n.value)):n}function h6(e){let t=e.output;switch(t){case`Solid`:return O(F4());case`Face`:return O(I4());case`Wire`:return O(L4());default:return K3(`Empty.output: ${String(t)}`)}}function g6(e,t){let n=o6(t.a);if(!n.ok)return n;let r=o6(t.b);if(!r.ok)return r;let i=a6(t);if(!i.ok)return i;switch(e){case`Fuse`:return O(z4(n.value,r.value,i.value));case`Cut`:return O(B4(n.value,r.value,i.value));case`Intersect`:return O(V4(n.value,r.value,i.value))}}function _6(e,t){let n=a6(t);if(!n.ok)return n;if(e===`FuseAll`){let e=i6(t.shapes,`FuseAll.shapes`);return e.ok?O(H4(e.value,n.value)):e}let r=o6(t.base);if(!r.ok)return r;let i=i6(t.tools,`CutAll.tools`);return i.ok?O(U4(r.value,i.value,n.value)):i}function v6(e,t){let n=o6(t.target);if(!n.ok)return n;switch(e){case`Translate`:return y6(t,n.value);case`Rotate`:return x6(t,n.value);case`Scale`:return S6(t,n.value);case`Mirror`:return C6(t,n.value)}}function y6(e,t){let n=$3(e.vector);return n.ok?O(G4(t,n.value)):n}function b6(e,t){if(e[t]===void 0)return O(void 0);let n=$3(e[t]);return n.ok?O(n.value):n}function x6(e,t){let n=$3(e.angle);if(!n.ok)return n;let r=b6(e,`axis`);if(!r.ok)return r;let i=b6(e,`at`);return i.ok?O(K4(t,n.value,{axis:r.value,at:i.value})):i}function S6(e,t){let n=$3(e.factor);if(!n.ok)return n;let r=b6(e,`center`);return r.ok?O(q4(t,n.value,{center:r.value})):r}function C6(e,t){let n=b6(e,`normal`);if(!n.ok)return n;let r=b6(e,`at`);return r.ok?O(J4(t,{normal:n.value,at:r.value})):r}function w6(e){let t=i6(e.children,`Compound.children`);return t.ok?O(Y4(t.value)):t}function T6(e){return Array.isArray(e)&&e.length===4&&e.every(e=>Array.isArray(e)&&e.length===4&&e.every(J3))}function E6(e){let t=o6(e.source);if(!t.ok)return t;let n=e.placements;return!Array.isArray(n)||!n.every(T6)?K3(`Instance.placements must be an array of 4x4 number matrices`):O(X4(t.value,n,e.fuse===!0))}function D6(e){return A6(e)}function O6(e){switch(e.kind){case`NumLit`:case`Vec3Lit`:case`Vec2Lit`:case`Param`:return e;case`BinOp`:{let t=O6(e.a),n=O6(e.b);if(t.kind===`NumLit`&&n.kind===`NumLit`)switch(e.op){case`+`:return q2(t.value+n.value);case`-`:return q2(t.value-n.value);case`*`:return q2(t.value*n.value);case`/`:return q2(t.value/n.value)}return t!==e.a||n!==e.b?Z2(e.op,t,n):e}case`UnaryOp`:{let t=O6(e.arg);if(t.kind===`NumLit`){let n=t.value;switch(e.op){case`neg`:return q2(-n);case`sin`:return q2(Math.sin(n));case`cos`:return q2(Math.cos(n));case`sqrt`:return q2(Math.sqrt(n));case`abs`:return q2(Math.abs(n))}}return t===e.arg?e:Q2(e.op,t)}case`Component`:{let t=O6(e.vec);return t.kind===`Vec3Lit`||t.kind===`Vec2Lit`&&(e.index===0||e.index===1)?q2(t.value[e.index]):t===e.vec?e:$2(t,e.index)}case`BuildVec`:{let t=e.components.map(O6);return k6(e.dim,t)||(t.some((t,n)=>t!==e.components[n])?e4(e.dim,t):e)}}}function k6(e,t){if(t.length!==e)return;let n=[];for(let e of t){if(e.kind!==`NumLit`)return;n.push(e.value)}return e===2?Y2([n[0],n[1]]):J2([n[0],n[1],n[2]])}function A6(e){switch(e.kind){case`Box`:return T4(O6(e.x),O6(e.y),O6(e.z));case`Sphere`:return E4(O6(e.radius));case`Cylinder`:return D4(O6(e.radius),O6(e.height));case`Cone`:return O4(O6(e.radius1),O6(e.radius2),O6(e.height));case`Torus`:return k4(O6(e.majorRadius),O6(e.minorRadius));case`Polygon`:return A4(e.points.map(O6));case`Circle`:return j4(O6(e.radius));case`Line`:return M4(O6(e.from),O6(e.to));case`Vertex`:return N4(O6(e.point));case`Empty`:return e;case`Fuse`:return j6(e.a,e.b,e.tolerance);case`Cut`:return M6(e.a,e.b,e.tolerance);case`Intersect`:return N6(e.a,e.b,e.tolerance);case`FuseAll`:return P6(e.shapes,e.tolerance);case`CutAll`:return F6(e.base,e.tools,e.tolerance);case`Translate`:return I6(e.target,e.vector);case`Rotate`:return K4(A6(e.target),O6(e.angle),{axis:e.axis?O6(e.axis):void 0,at:e.at?O6(e.at):void 0});case`Scale`:return q4(A6(e.target),O6(e.factor),{center:e.center?O6(e.center):void 0});case`Mirror`:return J4(A6(e.target),{normal:e.normal?O6(e.normal):void 0,at:e.at?O6(e.at):void 0});case`Compound`:return Y4(e.children.map(A6).filter(e=>e.kind!==`Empty`));case`Instance`:return X4(A6(e.source),e.placements,e.fuse)}}function j6(e,t,n){let r=A6(e),i=A6(t);return r.kind===`Empty`?i:i.kind===`Empty`?r:z4(r,i,n)}function M6(e,t,n){let r=A6(e),i=A6(t);return i.kind===`Empty`||r.kind===`Empty`?r:B4(r,i,n)}function N6(e,t,n){let r=A6(e),i=A6(t);return r.kind===`Empty`?r:i.kind===`Empty`?i:V4(r,i,n)}function P6(e,t){let n=e.map(A6).filter(e=>e.kind!==`Empty`);return n.length===0?F4():n.length===1?n[0]:H4(n,t)}function F6(e,t,n){let r=A6(e);if(r.kind===`Empty`)return r;let i=t.map(A6).filter(e=>e.kind!==`Empty`);return i.length===0?r:U4(r,i,n)}function I6(e,t){let n=A6(e),r=O6(t);if(r.kind!==`Vec3Lit`)return G4(n,r);let[i,a,o]=r.value;if(i===0&&a===0&&o===0)return n;if(n.kind===`Translate`){let e=O6(n.vector);if(e.kind===`Vec3Lit`)return G4(n.target,[e.value[0]+i,e.value[1]+a,e.value[2]+o])}return G4(n,r)}function L6(e,t,n){return R6(e,t,n)}function R6(e,t,n){return t(e)?n:z6(e,t,n)}function z6(e,t,n){switch(e.kind){case`Box`:case`Sphere`:case`Cylinder`:case`Cone`:case`Torus`:case`Polygon`:case`Circle`:case`Line`:case`Vertex`:case`Empty`:return e;case`Fuse`:return z4(R6(e.a,t,n),R6(e.b,t,n),e.tolerance);case`Cut`:return B4(R6(e.a,t,n),R6(e.b,t,n),e.tolerance);case`Intersect`:return V4(R6(e.a,t,n),R6(e.b,t,n),e.tolerance);case`FuseAll`:return H4(e.shapes.map(e=>R6(e,t,n)),e.tolerance);case`CutAll`:return U4(R6(e.base,t,n),e.tools.map(e=>R6(e,t,n)),e.tolerance);case`Translate`:return G4(R6(e.target,t,n),e.vector);case`Rotate`:return K4(R6(e.target,t,n),e.angle,{axis:e.axis,at:e.at});case`Scale`:return q4(R6(e.target,t,n),e.factor,{center:e.center});case`Mirror`:return J4(R6(e.target,t,n),{normal:e.normal,at:e.at});case`Compound`:return Y4(e.children.map(e=>R6(e,t,n)));case`Instance`:return X4(R6(e.source,t,n),e.placements,e.fuse)}}function B6(e,t){t(e);for(let n of V6(e))B6(n,t)}function V6(e){switch(e.kind){case`Box`:case`Sphere`:case`Cylinder`:case`Cone`:case`Torus`:case`Polygon`:case`Circle`:case`Line`:case`Vertex`:case`Empty`:return[];case`Fuse`:case`Cut`:case`Intersect`:return[e.a,e.b];case`FuseAll`:return e.shapes;case`CutAll`:return[e.base,...e.tools];case`Translate`:case`Rotate`:case`Scale`:case`Mirror`:return[e.target];case`Compound`:return e.children;case`Instance`:return[e.source]}}function H6(e){let t=0;return B6(e,()=>{t++}),t}var U6=DX({CSG_VERSION:()=>1,Evaluator:()=>L3,add:()=>t4,asScalarExpr:()=>r4,asVec2Expr:()=>o4,asVec3Expr:()=>a4,binOp:()=>Z2,box:()=>T4,buildVec:()=>e4,circle:()=>j4,component:()=>$2,compound:()=>Y4,cone:()=>O4,cut:()=>B4,cutAll:()=>U4,cylinder:()=>D4,emptyFace:()=>I4,emptySolid:()=>F4,emptyWire:()=>L4,foldExpr:()=>O6,forEachNode:()=>B6,fromJSON:()=>Q3,fuse:()=>z4,fuseAll:()=>H4,instance:()=>X4,intersect:()=>V4,line:()=>M4,mirror:()=>J4,mul:()=>n4,nodeCount:()=>H6,numLit:()=>q2,optimize:()=>D6,outputKindOf:()=>Z4,param:()=>X2,polygon:()=>A4,replaceNode:()=>L6,rotate:()=>K4,scale:()=>q4,sphere:()=>E4,toJSON:()=>z3,torus:()=>k4,translate:()=>G4,unaryOp:()=>Q2,vec2Lit:()=>Y2,vec3Lit:()=>J2,vertex:()=>N4,withEvaluator:()=>R3});export{cR as BaseSketcher2d,lR as BlueprintSketcher,r as BrepBugError,M as BrepErrorCode,f0 as BrepWrapperError,Ny as BrepkitAdapter,RK as CompoundSketch,o as DEFAULT_CAPABILITIES,xD as DEG2RAD,WT as DisposalScope,a as EXACT_BREP_CAPABILITIES,_q as FaceSketcher,G as HASH_CODE_MAX,Ua as OK,Ha as OcctWasmAdapter,SD as RAD2DEG,eq as Sketch,gq as Sketcher,tq as Sketches,BP as addChild,MP as addHoles,_F as addJoint,J$ as addMate,QF as addStep,eN as adjacentFaces,Qa as all,qa as andThen,AX as applyGlue,E1 as applyMatrix,Lk as approximateCurve,eE as as2D,$T as as3D,$D as asTopo,pN as assignRoles,aM as autoHeal,yP as bezier,hY as blueprintToDXF,XA as booleanPipeline,x2 as booleans,l0 as boss,oP as box,vP as bsplineApprox,i as bug,pq as cameraFromPlane,fq as cameraLookAt,aN as captureHint,aO as cast,FE as castShape,IE as castShape3D,H1 as chamfer,mj as chamferDistAngleShape,Lj as chamferWithEvolution,Z$ as checkAllInterferences,Oj as checkBoolean,X$ as checkInterference,pP as circle,LP as circularPattern,bO as classifyPointOnFace,qk as clearMeshCache,T1 as clone,lE as closedWire,lo as collect,KP as collectShapes,XO as colorFaces,YO as colorShape,hM as complexExtrude,mk as composeTransforms,OP as compound,ZK as compoundSketchExtrude,YK as compoundSketchFace,$K as compoundSketchLoft,QK as compoundSketchRevolve,F as computationError,t$ as computeStraightSkeleton,lP as cone,D2 as construction,FQ as convexHull,mR as cornerFinder,GP as countNodes,PP as createAssembly,zP as createAssemblyNode,kJ as createBlueprint,dq as createCamera,TE as createCompound,AJ as createCompoundBlueprint,KN as createDerivedFaceRef,zM as createDistanceQuery,yE as createEdge,kN as createEdgeRef,xE as createFace,VT as createHandle,ZF as createHistory,UT as createKernelHandle,Jk as createMeshCache,KD as createNamedPlane,yX as createOperationRegistry,WD as createPlane,mN as createRef,aI as createRegistry,SE as createShell,CE as createSolid,dX as createTaskQueue,vE as createVertex,LN as createVertexRef,bE as createWire,vX as createWorkerClient,wX as createWorkerHandler,TX as createWorkerPool,U6 as csg,Oo as currentQuality,xJ as curve2dBoundingBox,OJ as curve2dDistanceFrom,SJ as curve2dFirstPoint,DJ as curve2dIsOnCurve,CJ as curve2dLastPoint,TJ as curve2dParameter,wJ as curve2dSplitAt,EJ as curve2dTangentAt,Ak as curveAxis,Ek as curveEndPoint,jk as curveIsClosed,Mk as curveIsPeriodic,kk as curveLength,Nk as curvePeriod,Dk as curvePointAt,Tk as curveStartPoint,Ok as curveTangentAt,A1 as cut,ez as cut2D,M1 as cutAll,yj as cutAllBisect,UR as cutBlueprints,Pj as cutWithEvolution,sP as cylinder,uF as cylindricalJoint,iN as defaultScorer,pX as dequeueTask,Z1 as describe,Jq as deserializeDrawing,fI as deserializeHistory,sO as deserializeShape,rO as downcast,K1 as draft,Xq as draw,tJ as drawCircle,nJ as drawEllipse,lJ as drawFaceOutline,oJ as drawParametricFunction,aJ as drawPointsInterpolation,rJ as drawPolysides,cJ as drawProjection,Qq as drawRectangle,Zq as drawRoundedRectangle,$q as drawSingleCircle,eJ as drawSingleEllipse,iJ as drawText,hJ as drawingChamfer,fJ as drawingCut,mJ as drawingFillet,dJ as drawingFuse,pJ as drawingIntersect,uJ as drawingToSketchOnPlane,s0 as drill,RI as edgeFinder,XM as edgesOfFace,mP as ellipse,_P as ellipseArc,dP as ellipsoid,fX as enqueueTask,k as err,FP as exportAssemblySTEP,mY as exportDXF,tY as exportGlb,eY as exportGltf,nA as exportIGES,WJ as exportOBJ,eA as exportSTEP,QY as exportSTEPConfigured,tA as exportSTL,PY as exportThreeMF,KF as exportURDF,n0 as extrude,CM as extrudeAll,CP as face,yO as faceAxis,vO as faceCenter,VI as faceFinder,uO as faceGeomType,dO as faceOrientation,JM as facesOfEdge,YM as facesOfVertex,CZ as fieldBoolean,DZ as fieldContour,wZ as fieldOffset,EZ as fieldReinit,TZ as fieldShell,DA as fill,wP as filledFace,V1 as fillet,Ij as filletWithEvolution,RO as findFacesByTag,UP as findNode,eI as findStep,cM as fixSelfIntersection,oM as fixShape,Ja as flatMap,to as flatten,fO as flipFaceOrientation,Fk as flipOrientation,iX as fontMetrics,xF as forwardKinematics,$1 as fromBREP,SQ as fromKernelDir,xQ as fromKernelPnt,bQ as fromKernelVec,ro as fromNullable,k1 as fuse,QR as fuse2D,j1 as fuseAll,Cj as fuseAllBisect,HR as fuseBlueprints,Nj as fuseWithEvolution,I0 as gearGeometry,HX as getActiveVoxelId,hD as getBounds,jJ as getBounds2D,sD as getCompSolids,wk as getCurveType,FT as getDisposalStats,tD as getEdges,QO as getFaceColor,TO as getFaceOrigins,zO as getFaceTags,nD as getFaces,iq as getFont,yk as getHashCode,tI as getHistoryShape,U as getKernel,ST as getKernelCapabilities,ET as getKernelTier,hj as getNurbsCurveData,gj as getNurbsSurfaceData,Pk as getOrientation,MJ as getOrientation2D,Lo as getPerformanceStats,ZO as getShapeColor,iE as getShapeKind,oD as getShells,WI as getSingleFace,aD as getSolids,lO as getSurfaceType,VO as getTagMetadata,iD as getVertices,VX as getVoxel,rD as getWires,RP as gridPattern,bM as guidedSweep,q1 as heal,nM as healFace,tM as healSolid,rM as healWire,hP as helix,PQ as hull,n1 as importDXF,y1 as importGLB,tX as importIGES,o1 as importOBJ,$Y as importSTEP,eX as importSTL,ZY as importSVG,XY as importSVGPathD,v1 as importThreeMF,XF as importURDF,AT as init,_T as initFromManifold,OT as initFromOC,UX as initVoxel,CO as innerWires,m$ as instance,g$ as instanceCount,h$ as instanceGrid,y$ as instancedMesh,Ik as interpolateCurve,N1 as intersect,tz as intersect2D,WR as intersectBlueprints,Fj as intersectWithEvolution,eD as invalidateShapeCache,FF as inverseKinematics,T2 as io,So as ioError,QT as is2D,ZT as is3D,cX as isBatchRequest,MX as isChamferRadius,aE as isClosedWire,oO as isCompSolid,ME as isCompound,YN as isDerivedFaceRef,sX as isDisposeRequest,DE as isEdge,XN as isEdgeRef,t0 as isEmpty,Sk as isEqualShape,A as isErr,uX as isErrorResponse,kE as isFace,QN as isFaceRef,NX as isFilletRadius,aX as isInitRequest,NJ as isInside2D,p$ as isInstanced,$N as isLineageRef,XT as isLive,sE as isManifoldShell,jX as isNumber,Wa as isOk,oX as isOperationRequest,oE as isOrientedFace,pE as isPlanarFace,mE as isPlanarWire,cq as isProjectionPlane,hX as isQueueEmpty,xk as isSameShape,PE as isShape1D,NE as isShape3D,AE as isShell,jE as isSolid,lX as isSuccessResponse,e0 as isValid,cE as isValidSolid,EE as isVertex,ZN as isVertexRef,OE as isWire,mD as iterCompSolids,cD as iterEdges,lD as iterFaces,pD as iterShells,fD as iterSolids,tO as iterTopo,dD as iterVertices,uD as iterWires,LF as jointTrajectory,gF as jointTransform,BF as jointsFromDH,GE as kernelCall,KE as kernelCallRaw,qE as kernelCallScoped,N as kernelError,mQ as latticeInfill,hQ as latticeInfillShape,fP as line,IP as linearPattern,rq as loadFont,O1 as locate,i0 as loft,TM as loftAll,Dq as makeBaseBox,a2 as makeExternalGear,o2 as makeInternalGear,JD as makePlane,c2 as makePlanetaryGear,uq as makeProjectedEdges,dE as manifoldShell,Ga as map,no as mapBoth,Ka as mapErr,co as match,_$ as materialize,FM as measureArea,BM as measureCurvatureAt,VM as measureCurvatureAtMid,LM as measureDistance,RM as measureDistanceProps,IM as measureLength,NM as measureLinearProps,MM as measureSurfaceProps,PM as measureVolume,jM as measureVolumeProps,w2 as measurement,SF as mechanismDOF,Y1 as mesh,X1 as meshEdges,sA as meshLODs,lA as meshLODsProgressive,rA as meshMultiLOD,zQ as minkowski,C1 as mirror,RJ as mirror2D,yJ as mirrorDrawing,u0 as mirrorJoin,S2 as modifiers,uI as modifyStep,xo as moduleInitError,yM as multiSectionSweep,_O as normalAt,W1 as offset,AP as offsetFace,aZ as offsetMesh,cZ as offsetShape,Rk as offsetWire2D,O as ok,Ya as or,Xa as orElse,QL as organiseBlueprints,uE as orientedFace,xO as outerWire,O2 as patterns,mX as pendingCount,po as pipeline,ZD as pivotPlane,hE as planarFace,dF as planarJoint,gE as planarWire,e2 as planetPlacements,c0 as pocket,mO as pointOnSurface,JX as pointsInside,EP as polygon,BQ as polyhedron,Cq as polysideInnerRadius,hR as polysidesBlueprint,zj as positionOnCurve,kT as prewarm,b2 as primitives,lF as prismaticJoint,mq as projectEdges,gO as projectPointOnFace,E2 as query,Co as queryError,d0 as rectangularPattern,bX as registerHandler,vT as registerKernel,TT as registerKernelTier,oI as registerOperation,iI as registerShape,BX as registerVoxel,gX as rejectAll,VP as removeChild,SO as removeHolesFromFace,ZX as repairMesh,lI as replayFrom,cI as replayHistory,IT as resetDisposalStats,Ro as resetPerformanceStats,lk as resize,$ as resolve,b1 as resolve3D,qN as resolveDerivedFaceRef,ED as resolveDirection,AN as resolveEdgeRef,tP as resolveLineageRef,qD as resolvePlane,bN as resolveRef,rP as resolveRefIn,aP as resolveRefParams,RN as resolveVertexRef,bJ as reverseCurve,cF as revoluteJoint,r0 as revolve,l$ as roof,S1 as rotate,IJ as rotate2D,_J as rotateDrawing,gR as roundedRectangleBlueprint,w1 as scale,LJ as scale2D,vJ as scaleDrawing,UZ as sdfBox,qZ as sdfCapsule,KZ as sdfCone,GZ as sdfCylinder,aQ as sdfFieldAxialRamp,cQ as sdfFieldClamp,iQ as sdfFieldConst,sQ as sdfFieldFromSdf,oQ as sdfFieldRadialRamp,$Z as sdfLattice,YZ as sdfPlane,WZ as sdfRoundedBox,HZ as sdfSphere,eQ as sdfStrutLattice,ZZ as sdfSweep,JZ as sdfTorus,P1 as section,F1 as sectionToFace,dI as serializeHistory,mF as setJointValue,pF as setJointValues,wO as setShapeOrigin,BO as setTagMetadata,jP as sewShells,A0 as shape,$X as shapeToMeshInput,nO as shapeType,nN as sharedEdges,U1 as shell,oZ as shellMesh,lZ as shellShape,Rj as shellWithEvolution,J1 as simplify,vq as sketchCircle,yq as sketchEllipse,GK as sketchExtrude,HK as sketchFace,wq as sketchFaceOffset,Eq as sketchHelix,qK as sketchLoft,VJ as sketchOnFace2D,BJ as sketchOnPlane2D,Tq as sketchParametricFunction,Sq as sketchPolysides,bq as sketchRectangle,WK as sketchRevolve,xq as sketchRoundedRectangle,KK as sketchSweep,nX as sketchText,UK as sketchWires,bo as sketcherStateError,L1 as slice,kP as solid,sM as solidFromShell,Y$ as solveAssembly,cP as sphere,fF as sphericalJoint,I1 as split,nI as stepCount,rI as stepsFrom,zJ as stretch2D,TP as subFace,mM as supportExtrude,pT as supportsConstraintSketch,fT as supportsProjection,kQ as surfaceFromGrid,MQ as surfaceFromImage,pM as sweep,LO as tagFaces,bP as tangentArc,$a as tap,eo as tapErr,oq as textBlueprints,rX as textMetrics,G1 as thicken,pI as thread,gP as threePointArc,Q1 as toBREP,lj as toBufferGeometryData,uj as toGroupedBufferGeometryData,_Q as toKernelVec,fj as toLODGeometryData,pj as toLODGeometryLevels,dj as toLineGeometryData,PJ as toSVGPathD,wD as toVec2,CD as toVec3,uP as torus,gQ as tpmsLattice,D1 as transformCopy,C2 as transforms,x1 as translate,FJ as translate2D,gJ as translateDrawing,XD as translatePlane,uo as tryCatch,fo as tryCatchAsync,gM as twistExtrude,yo as typeCastError,$F as undoLast,wo as unsupportedError,j as unwrap,so as unwrapErr,ao as unwrapOr,oo as unwrapOrElse,HP as updateNode,gN as updateRoles,pO as uvBounds,hO as uvCoordinates,fE as validSolid,V0 as validatePlanetary,P as validationError,$j as variableFillet,DD as vecAdd,zD as vecAngle,MD as vecCross,FD as vecDistance,jD as vecDot,LD as vecEquals,RD as vecIsZero,ND as vecLength,PD as vecLengthSq,AD as vecNegate,ID as vecNormalize,BD as vecProjectToPlane,UD as vecRepr,VD as vecRotate,kD as vecScale,OD as vecSub,DP as vertex,IX as vertexFinder,bD as vertexPosition,$M as verticesOfEdge,ZM as verticesOfFace,sZ as voxelBoolean,SZ as voxelBooleanField,kZ as voxelBooleanFieldShapes,uZ as voxelBooleanShapes,xZ as voxelField,OZ as voxelFieldFromShape,WP as walkAssembly,qX as windingNumbers,xP as wire,UI as wireFinder,SP as wireLoop,QM as wiresOfFace,xT as withKernel,TQ as withKernelDir,wQ as withKernelPnt,CQ as withKernelVec,CT as withQuality,GT as withScope,JT as withScopeResult,YT as withScopeResultAsync,DT as withTier,Za as zipResults};