brepjs-cad 0.90.0 → 0.92.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.
@@ -4,7 +4,7 @@ var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);function
4
4
  `)+`
5
5
  `).buffer}function Nr(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
6
  `)+`
7
- `).buffer}function Pr(e,t){return e.toBREP(E(t))}function Fr(e,t){return D(e,e.fromBREP(t))}function Ir(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 Lr(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 Rr(e,t,n,r){if(n.length===0)return``;let i=Ir(e,t,n.map(e=>({shape:e.shape,name:e.name??``,color:e.color})));try{return Lr(e,i)}finally{i.delete()}}function zr(e,t,n,r){return T(`vertex`,e.makeVertex(t,n,r))}function Br(e,t){throw Pe(t)?Error(`occt-wasm: makeEdge from curve handle is not implemented`):Error(`occt-wasm: makeEdge is not implemented`)}function Vr(e,t,n){let r=Ie(t,n.map(E));try{return T(`wire`,e.makeWire(r))}finally{r.delete()}}function Hr(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 Ur(e,t,n){return T(`face`,e.makeFace(E(t)))}function Wr(e,t,n){return T(`edge`,e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Gr(e,t,n,r){return T(`edge`,e.makeCircleEdge(t[0],t[1],t[2],n[0],n[1],n[2],r))}function Kr(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 qr(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 Jr(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 Yr(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 Xr(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 Zr(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 Qr(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 $r(e,t,n){let r=Ie(t,n.map(E));try{return T(`compound`,e.makeCompound(r))}finally{r.delete()}}function ei(e,t){return T(`solid`,e.solidFromShell(E(t)))}function ti(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 ni(e,t){return T(`face`,e.makeNonPlanarFace(E(t)))}function ri(e,t,n,r){let i=Ie(t,r.map(E));try{return T(`face`,e.addHolesInFace(E(n),i))}finally{i.delete()}}function ii(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 ai(e,t,n){let r=E(t);return T(`face`,e.makeFaceOnSurface(r,E(n)))}function oi(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 si(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 ci(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 li(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 ui(e,t,n){return{x:e,y:t,z:n,__type:`point3d`,delete:Ne}}function di(e,t,n){return{x:e,y:t,z:n,__type:`direction3d`,delete:Ne}}function fi(e,t,n){return{x:e,y:t,z:n,__type:`vector3d`,delete:Ne}}function pi(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 mi(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 hi(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 gi(e){return e}function _i(e){return e}function vi(e,t){return{x:e,y:t}}function yi(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 bi(e,t){return{x:e,y:t}}function xi(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete(){}}}function Si(e){return e}function Ci(e,t,n,r){return _i(te(e,t,n,r))}function wi(e,t,n,r){return _i(ne(e,t,n,r))}function Ti(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 _i(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),_i({__bk2d:`trimmed`,basis:g,tStart:e,tEnd:t})}let _=f;return _<u-1e-9&&(_+=2*Math.PI),_i({__bk2d:`trimmed`,basis:g,tStart:u,tEnd:_})}function Ei(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 _i(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),_i({__bk2d:`trimmed`,basis:x,tStart:e,tEnd:t})}let S=_;return S<g-1e-9&&(S+=2*Math.PI),_i({__bk2d:`trimmed`,basis:x,tStart:g,tEnd:S})}function Di(e,t,n,r,i,a,o){return _i(ae(e,t,n,r,i??1,a??0,o??!0))}function Oi(e,t,n,r,i,a,o,s,c){return _i({...ae(e,t,n,r,o??1,s??0,c??!0),__bk2d:`ellipse`,startAngle:i,endAngle:a})}function ki(e){return _i(oe(e))}function Ai(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),_i({__bk2d:`bspline`,poles:n,knots:a,multiplicities:o,degree:i,isPeriodic:!1})}function ji(e,t){return S(gi(e),t)}function Mi(e,t){return{point:S(gi(e),t),tangent:C(gi(e),t)}}function Ni(e){return w(gi(e))}function Pi(e){let t=gi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return ee(t)}function Fi(e,t,n){return _i({__bk2d:`trimmed`,basis:gi(e),tStart:t,tEnd:n})}function Ii(e){return _i(JSON.parse(JSON.stringify(gi(e))))}function Li(e,t){let n=gi(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 _i(oe(i.length<=25?i:i.filter((e,t)=>t%2==0||t===i.length-1)))}function Ri(e,t,n){return _i(se(gi(e),t,n))}function zi(e,t,n,r){return _i(ce(gi(e),t,n,r))}function Bi(e,t,n,r){return _i(le(gi(e),t,n,r))}function Vi(e,t,n){return _i(ue(gi(e),t,n))}function Hi(e,t,n,r,i){return _i(de(gi(e),t,n,r,i))}function Ui(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=gi(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 _i(oe(v))}function Wi(e,t,n,r,i,a){return Ui(e,t,n,r,i,a)}function Gi(){return{type:`identity2d`,delete(){}}}function Ki(e,t,n,r,i){return{type:`affinity2d`,axOriginX:e,axOriginY:t,axDirX:n,axDirY:r,ratio:i,delete(){}}}function qi(e,t){return{type:`translate2d`,dx:e,dy:t,delete(){}}}function Ji(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 Yi(e,t,n){return{type:`rotate2d`,angle:e,cx:t,cy:n,delete(){}}}function Xi(e,t,n){return{type:`scale2d`,sx:e,sy:e,cx:t,cy:n,delete(){}}}function Zi(e,t,n){let r=e;r.dx=(Number(r.dx)||0)+t,r.dy=(Number(r.dy)||0)+n}function Qi(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 $i(e,t){let n=t;return n.type===`translate2d`?Ri(e,Number(n.dx)||0,Number(n.dy)||0):n.type===`rotate2d`?zi(e,Number(n.angle)||0,Number(n.cx)||0,Number(n.cy)||0):n.type===`scale2d`?Bi(e,Number(n.sx)||1,Number(n.cx)||0,Number(n.cy)||0):n.type===`mirror2d`?Vi(e,Number(n.ox)||0,Number(n.oy)||0):n.type===`affinity2d`?Ui(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)?Ri(e,Number(n.dx)||0,Number(n.dy)||0):e}function ea(e,t,n){let r=fe(gi(e),gi(t),n);return{points:r.points,segments:r.segments.map(e=>_i(e))}}function ta(e,t,n){let r=gi(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 na(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(gi(e),c);for(let e=0;e<=20;e++){let n=i+(a-i)*(e/20),[r,s]=S(gi(t),n),c=Math.sqrt((r-l)**2+(s-u)**2);c<o&&(o=c)}}return o}function ra(e,t){let n=gi(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),_i({__bk2d:`bspline`,poles:a,knots:c,multiplicities:l,degree:o,isPeriodic:!1})}function ia(e){let t=gi(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[_i(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=>_i(oe(e)))}function aa(){return Ce()}function oa(e,t,n){we(e,gi(t),n)}function sa(e){return{xMin:e.xMin,yMin:e.yMin,xMax:e.xMax,yMax:e.yMax}}function ca(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 la(e,t){return e.xMax<t.xMin||e.xMin>t.xMax||e.yMax<t.yMin||e.yMin>t.yMax}function ua(e,t,n){return t<e.xMin||t>e.xMax||n<e.yMin||n>e.yMax}function da(e){let t=gi(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 fa(e){let t=gi(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 pa(e){let t=gi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles:null}function ma(e){let t=gi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles.length-1:null}function ha(e){return xe(gi(e))}function ga(e){return _i(Se(e))}function _a(e,t){let n=w(gi(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(Fi(e,a,o))}return i}function va(e,t,n,r,i,a){let o=gi(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 ya(e,t,n,r){let i=gi(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 ba(e){return e}function xa(){return _i(te(0,0,1,0))}function Sa(e,t){e.buildCurves3d(E(t))}function Ca(e,t,n,r){return T(`wire`,e.fixWireOnFace(E(t),E(n),r))}function wa(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 Ta(e,t,n,r,i,a,o,s){let c=Le(t,o);try{let{id:t,evolution:o}=wa(e.translateWithHistory(E(n),r,i,a,c,s));return{shape:D(e,t),evolution:o}}finally{c.delete()}}function Ea(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}=wa(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 Da(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=wa(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 Oa(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=wa(e.scaleWithHistory(E(n),r[0],r[1],r[2],i,s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function ka(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 Aa(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=wa(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 ja(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=wa(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 Ma(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=wa(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 Na(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}=wa(e.filletWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Pa(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}=wa(e.chamferWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Fa(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}=wa(e.shellWithHistory(E(n),c,i,s??.001,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Ia(e,t,n,r,i,a){let o=Le(t,i);try{let{id:t,evolution:i}=wa(e.thickenWithHistory(E(n),r,.001,o,a));return{shape:D(e,t),evolution:i}}finally{o.delete()}}function La(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=wa(e.offsetWithHistory(E(n),r,o??1e-6,s,a));return{shape:D(e,t),evolution:i}}finally{s.delete()}}function Ra(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 za(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 Ba(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 ti(e,t,[...i],[...a],r)}function Va(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 Ha(e,t,n,r){if(n.length===0)throw Error(`hull: no shapes provided`);let i=Va(e,t,n,r);if(i.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);return Ba(e,t,i,r)}function Ua(e){throw new c(`occt-wasm: ${e} is not yet implemented`)}var Wa=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){Ua(`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 zr(this.k,e,t,n)}makeEdge(e,t,n){return Br(this.k,e)}makeWire(e){return Vr(this.k,this.Module,e)}makeFace(e,t){return Ur(this.k,e,t)}makeLineEdge(e,t){return Wr(this.k,e,t)}makeCircleEdge(e,t,n){return Gr(this.k,e,t,n)}makeCircleArc(e,t,n,r,i){return Kr(this.k,e,t,n,r,i)}makeArcEdge(e,t,n){return qr(this.k,e,t,n)}makeEllipseEdge(e,t,n,r,i){return Jr(this.k,e,t,n,r)}makeEllipseArc(e,t,n,r,i,a,o){return Yr(this.k,e,t,n,r,i,a)}makeBezierEdge(e){return Xr(this.k,this.Module,e)}makeTangentArc(e,t,n){return Zr(this.k,e,t,n)}makeHelixWire(e,t,n,r,i,a){return Qr(this.k,e,t,n,r,i)}makeWireFromMixed(e){return Hr(this.k,this.Module,e)}makeCompound(e){return $r(this.k,this.Module,e)}solidFromShell(e){return ei(this.k,e)}hull(e,t){return Ha(this.k,this.Module,e,t)}hullFromPoints(e,t){return Ba(this.k,this.Module,e,t)}buildSolidFromFaces(e,t,n){return ti(this.k,this.Module,e,t,n)}makeNonPlanarFace(e){return ni(this.k,e)}addHolesInFace(e,t){return ri(this.k,this.Module,e,t)}removeHolesFromFace(e){return ii(this.k,this.Module,e)}makeFaceOnSurface(e,t){return ai(this.k,e,t)}bsplineSurface(e,t,n){return oi(this.k,this.Module,e,t,n)}triangulatedSurface(e,t,n){return si(this.k,this.Module,e,t,n)}buildTriFace(e,t,n){return ci(this.k,e,t,n)}sewAndSolidify(e,t){return li(this.k,this.Module,e,t)}createPoint3d(e,t,n){return ui(e,t,n)}createDirection3d(e,t,n){return di(e,t,n)}createVector3d(e,t,n){return fi(e,t,n)}createAxis1(e,t,n,r,i,a){return pi(e,t,n,r,i,a)}createAxis2(e,t,n,r,i,a,o,s,c){return mi(e,t,n,r,i,a,o,s,c)}createAxis3(e,t,n,r,i,a,o,s,c){return hi(e,t,n,r,i,a,o,s,c)}extrude(e,t,n){return $n(this.k,e,t,n)}revolve(e,t,n){return er(this.k,e,t,n)}loft(e,t,n,r){return tr(this.k,this.Module,e,t,n,r)}sweep(e,t,n){return nr(this.k,e,t,n)}simplePipe(e,t){return rr(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){Ua(`sweepWithOptions`)}sweepPipeShell(e,t,n){return ir(this.k,e,t,n)}loftAdvanced(e,t){return ar(this.k,this.Module,e,t)}buildExtrusionLaw(e,t,n){return or(this.k,e,t,n)}revolveVec(e,t,n,r){return sr(this.k,e,t,n,r)}draftPrism(e,t,n,r,i,a){return cr(this.k,e,t,n,r,i,a)}fillet(e,t,n){return Vn(this.k,this.Module,e,t,n)}chamfer(e,t,n){return Hn(this.k,this.Module,e,t,n)}chamferDistAngle(e,t,n,r){return Un(this.k,this.Module,e,t,n,r)}shell(e,t,n,r){return Wn(this.k,this.Module,e,t,n,r)}thicken(e,t){return Gn(this.k,e,t)}offset(e,t,n){return Kn(this.k,e,t,n)}filletVariable(e,t){return qn(this.k,e,t)}draft(e,t,n,r,i){return Jn(this.k,e,t,n,r,i)}defeature(e,t){return Yn(this.k,this.Module,e,t)}offsetWire2D(e,t,n){return Xn(this.k,e,t,n)}simplify(e){return Zn(this.k,e)}reverseShape(e){return Qn(this.k,e)}composeTransform(e){return lr(e)}transform(e,t){return dr(this.k,this.Module,e,t)}locate(e,t){return fr(this.k,this.Module,e,t)}translate(e,t,n,r){return pr(this.k,e,t,n,r)}rotate(e,t,n,r){return mr(this.k,e,t,n,r)}mirror(e,t,n){return hr(this.k,e,t,n)}scale(e,t,n){return gr(this.k,e,t,n)}generalTransform(e,t,n,r){return _r(this.k,this.Module,e,t,n,r)}generalTransformNonOrthogonal(e,t,n){return _r(this.k,this.Module,e,t,n,!1)}positionOnCurve(e,t,n){return vr(this.k,this.Module,e,t,n)}linearPattern(e,t,n,r){return yr(this.k,e,t,n,r)}circularPattern(e,t,n,r,i){return br(this.k,e,t,n,r,i)}transformBatch(e){return xr(this.k,e)}translateWithHistory(e,t,n,r,i,a){return Ta(this.k,this.Module,e,t,n,r,i,a)}rotateWithHistory(e,t,n,r,i,a){return Ea(this.k,this.Module,e,t,n,r,i,a)}mirrorWithHistory(e,t,n,r,i){return Da(this.k,this.Module,e,t,n,r,i)}scaleWithHistory(e,t,n,r,i){return Oa(this.k,this.Module,e,t,n,r,i)}generalTransformWithHistory(e,t,n,r,i,a){return ka((e,t,n,r)=>this.generalTransform(e,t,n,r),e,t,n,r,i)}fuseWithHistory(e,t,n,r,i){return Aa(this.k,this.Module,e,t,n,r,i)}cutWithHistory(e,t,n,r,i){return ja(this.k,this.Module,e,t,n,r,i)}intersectWithHistory(e,t,n,r,i){return Ma(this.k,this.Module,e,t,n,r,i)}filletWithHistory(e,t,n,r,i){return Na(this.k,this.Module,e,t,n,r,i)}chamferWithHistory(e,t,n,r,i){return Pa(this.k,this.Module,e,t,n,r,i)}shellWithHistory(e,t,n,r,i,a){return Fa(this.k,this.Module,e,t,n,r,i,a)}thickenWithHistory(e,t,n,r){return Ia(this.k,this.Module,e,t,n,r)}offsetWithHistory(e,t,n,r,i){return La(this.k,this.Module,e,t,n,r,i)}draftWithHistory(e,t,n,r,i,a,o){return Ra(this.k,e,t,n,i)}applyComposedTransformWithHistory(e,t,n,r){return za((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 Pt(this.k,this.Module,e,t)}meshEdges(e,t,n){return It(this.k,this.Module,e,t,n)}hasTriangulation(e){return Lt(this.k,e)}meshShape(e,t,n){Rt(this.k,e,t,n)}exportSTEP(e){return wr(this.k,this.makeCompound.bind(this),e)}exportSTL(e,t,n,r){return Tr(this.mesh.bind(this),e,t,n,r)}importSTEP(e){return Er(this.k,e)}importSTL(e){return Dr(this.k,this.Module,e)}exportIGES(e){return Or(this.k,this.makeCompound.bind(this),e)}importIGES(e){return kr(this.k,e)}exportSTEPAssembly(e,t){return Ar(this.k,this.Module,e,t)}export3MF(e,t){throw Error(`export3MF is only available with the brepkit kernel`)}exportGLB(e,t){return jr(this.mesh.bind(this),e,t)}exportOBJ(e,t){return Mr(this.mesh.bind(this),e,t)}exportPLY(e,t){return Nr(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 Pr(this.k,e)}fromBREP(e){return Fr(this.k,e)}createXCAFDocument(e){return Ir(this.k,this.Module,e)}writeXCAFToSTEP(e,t){return Lr(this.k,e,t)}exportSTEPConfigured(e,t){return Rr(this.k,this.Module,e,t)}volume(e){return Sn(this.k,e)}area(e){return Cn(this.k,e)}length(e){return wn(this.k,e)}centerOfMass(e){return Tn(this.k,e)}linearCenterOfMass(e){return En(this.k,e)}boundingBox(e){return Dn(this.k,e)}distance(e,t){return Nn(this.k,this.Module,e,t)}surfaceCurvature(e,t,n){return Bn(this.k,e,t,n)}surfaceCenterOfMass(e){return On(this.k,e)}measureBulk(e,t){return kn(this.k,e,t)}createDistanceQuery(e){return An(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)}subShapeCount(e,t){return bt(this.k,e,t)}subShapeHashes(e,t,n){return xt(this.k,e,t,n)}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 St(this.k,e,t)}adjacentFaces(e,t){return Ct(this.k,e,t)}sew(e,t){return wt(this.k,this.Module,e,t)}curveType(e){return Bt(this.k,e)}curveParameters(e){return Vt(this.k,e)}curvePointAtParam(e,t){return Ht(this.k,e,t)}curveTangent(e,t){return Ut(this.k,e,t)}curveIsClosed(e){return Wt(this.k,e)}curveIsPeriodic(e){return Gt(this.k,e)}curvePeriod(e){return Kt(this.k,e)}interpolatePoints(e,t){return qt(this.k,this.Module,e,t)}approximatePoints(e,t){return Jt(this.k,this.Module,e,t)}curveDegreeElevate(e,t){return Yt(this.k,e,t)}curveKnotInsert(e,t,n){return Xt(this.k,e,t,n)}curveKnotRemove(e,t,n){return Zt(this.k,e,t,n)}curveSplit(e,t){return Qt(this.k,e,t)}getBezierPenultimatePole(e){return $t(this.k,e)}createCurveAdaptor(e){Ua(`createCurveAdaptor`)}vertexPosition(e){return tn(this.k,e)}surfaceType(e){return nn(this.k,e)}uvBounds(e){return rn(this.k,e)}outerWire(e){return an(this.k,e)}surfaceNormal(e,t,n){return on(this.k,e,t,n)}pointOnSurface(e,t,n){return sn(this.k,e,t,n)}uvFromPoint(e,t){return vn(this.k,e,t)}projectPointOnFace(e,t){return yn(this.k,e,t)}classifyPointOnFace(e,t,n,r){return bn(this.k,e,t,n,r)}classifyPointRobust(e,t,n){Ua(`classifyPointRobust`)}classifyPointWinding(e,t,n){Ua(`classifyPointWinding`)}approximateSurfaceLspia(e,t,n,r,i,a,o,s,c){Ua(`approximateSurfaceLspia`)}untrimFace(e,t,n){Ua(`untrimFace`)}getSurfaceCylinderData(e){return _n(this.k,e)}getSurfaceAxis(e){return gn(this.k,e)}reverseSurfaceU(e){Ua(`reverseSurfaceU`)}detectSmallFeatures(e,t,n){Ua(`detectSmallFeatures`)}recognizeFeatures(e,t){Ua(`recognizeFeatures`)}projectEdges(e,t,n,r){return xn(this.k,this.Module,e,t,n,r)}isValid(e){return Et(this.k,e)}healSolid(e){return Dt(this.k,e)}healFace(e){return Ot(this.k,e)}healWire(e,t){return kt(this.k,e,t)}mergeCoincidentVertices(e,t){return At(this.k,e,t)}removeDegenerateEdges(e,t){return jt(this.k,e,t)}fixFaceOrientations(e){return Mt(this.k,e)}fixShape(e){return Nt(this.k,e)}fixSelfIntersection(e){Ua(`fixSelfIntersection`)}createPoint2d(e,t){return vi(e,t)}createDirection2d(e,t){return yi(e,t)}createVector2d(e,t){return bi(e,t)}createAxis2d(e,t,n,r){return xi(e,t,n,r)}wrapCurve2dHandle(e){return Si(e)}createCurve2dAdaptor(e){Ua(`createCurve2dAdaptor`)}makeLine2d(e,t,n,r){return Ci(e,t,n,r)}makeCircle2d(e,t,n,r){return wi(e,t,n,r)}makeArc2dThreePoints(e,t,n,r,i,a){return Ti(e,t,n,r,i,a)}makeArc2dTangent(e,t,n,r,i,a){return Ei(e,t,n,r,i,a)}makeEllipse2d(e,t,n,r,i,a,o){return Di(e,t,n,r,i,a,o)}makeEllipseArc2d(e,t,n,r,i,a,o,s,c){return Oi(e,t,n,r,i,a,o,s,c)}makeBezier2d(e){return ki(e)}makeBSpline2d(e,t){return Ai(e)}evaluateCurve2d(e,t){return ji(e,t)}evaluateCurve2dD1(e,t){return Mi(e,t)}getCurve2dBounds(e){return Ni(e)}getCurve2dType(e){return Pi(e)}trimCurve2d(e,t,n){return Fi(e,t,n)}reverseCurve2d(e){}copyCurve2d(e){return Ii(e)}offsetCurve2d(e,t){return Li(e,t)}translateCurve2d(e,t,n){return Ri(e,t,n)}rotateCurve2d(e,t,n,r){return zi(e,t,n,r)}scaleCurve2d(e,t,n,r){return Bi(e,t,n,r)}mirrorCurve2dAtPoint(e,t,n){return Vi(e,t,n)}mirrorCurve2dAcrossAxis(e,t,n,r,i){return Hi(e,t,n,r,i)}affinityTransform2d(e,t,n,r,i,a){return Wi(e,t,n,r,i,a)}createIdentityGTrsf2d(){return Gi()}createAffinityGTrsf2d(e,t,n,r,i){return Ki(e,t,n,r,i)}createTranslationGTrsf2d(e,t){return qi(e,t)}createMirrorGTrsf2d(e,t,n,r,i,a,o){return Ji(e,t,n,r,i,a,o)}createRotationGTrsf2d(e,t,n){return Yi(e,t,n)}createScaleGTrsf2d(e,t,n){return Xi(e,t,n)}setGTrsf2dTranslationPart(e,t,n){Zi(e,t,n)}multiplyGTrsf2d(e,t){Qi(e,t)}transformCurve2dGeneral(e,t){return $i(e,t)}intersectCurves2d(e,t,n){return ea(e,t,n)}projectPointOnCurve2d(e,t,n){return ta(e,t,n)}distanceBetweenCurves2d(e,t,n,r,i,a){return na(e,t,n,r,i,a)}approximateCurve2dAsBSpline(e,t,n,r){return ra(e,r)}decomposeBSpline2dToBeziers(e){return ia(e)}createBoundingBox2d(){return aa()}addCurveToBBox2d(e,t,n){oa(e,t,n)}getBBox2dBounds(e){return sa(e)}mergeBBox2d(e,t){ca(e,t)}isBBox2dOut(e,t){return la(e,t)}isBBox2dOutPoint(e,t,n){return ua(e,t,n)}getCurve2dCircleData(e){return da(e)}getCurve2dEllipseData(e){return fa(e)}getCurve2dBezierPoles(e){return pa(e)}getCurve2dBezierDegree(e){return ma(e)}getCurve2dBSplineData(e){Ua(`getCurve2dBSplineData`)}serializeCurve2d(e){return ha(e)}deserializeCurve2d(e){return ga(e)}splitCurve2d(e,t){return _a(e,t)}liftCurve2dToPlane(e,t,n,r){return va(this.k,this.Module,e,t,n,r)}buildEdgeOnSurface(e,t){return ya(this.k,this.Module,e,t)}extractSurfaceFromFace(e){return ba(e)}extractCurve2dFromEdge(e,t){return xa()}buildCurves3d(e){Sa(this.k,e)}fixWireOnFace(e,t,n){return Ca(this.k,e,t,n)}fillSurface(e,t){Ua(`fillSurface`)}getNurbsCurveData(e){return en(this.k,e)}};function O(e){return{ok:!0,value:e}}function k(e){return{ok:!1,error:e}}var Ga=O(void 0);function Ka(e){return e.ok}function A(e){return!e.ok}function qa(e,t){return e.ok?O(t(e.value)):e}function Ja(e,t){return e.ok?e:k(t(e.error))}function Ya(e,t){return e.ok?t(e.value):e}var Xa=Ya;function Za(e,t){return e.ok?e:t}function Qa(e,t){return e.ok?e:t(e.error)}function $a(e,t){return e.ok?t.ok?O([e.value,t.value]):t:e}var eo=fo;function to(e,t){return e.ok&&t(e.value),e}function no(e,t){return e.ok||t(e.error),e}function ro(e){return e.ok?e.value:e}function io(e,t,n){return e.ok?O(t(e.value)):k(n(e.error))}function ao(e,t){return e==null?k(t()):O(e)}function oo(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: ${oo(e.error)}`)}function so(e,t){return e.ok?e.value:t}function co(e,t){return e.ok?e.value:t(e.error)}function lo(e){if(!e.ok)return e.error;throw Error(`Called unwrapErr() on an Ok: ${String(e.value)}`)}function uo(e,t){return e.ok?t.ok(e.value):t.err(e.error)}function fo(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return O(t)}function po(e,t){try{return O(e())}catch(e){return k(t(e))}}async function mo(e,t){try{return O(await e())}catch(e){return k(t(e))}}function ho(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 go=[{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.`}],_o={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 vo(e){return _o[e]}function yo(e){for(let{pattern:t,translation:n}of go)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 bo(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 bo(`KERNEL_OPERATION`,e,t,n,r,i)}function P(e,t,n,r,i){return bo(`VALIDATION`,e,t,n,r,i)}function xo(e,t,n,r,i){return bo(`TYPE_CAST`,e,t,n,r,i)}function So(e,t,n,r,i){return bo(`SKETCHER_STATE`,e,t,n,r,i)}function Co(e,t,n,r,i){return bo(`MODULE_INIT`,e,t,n,r,i)}function wo(e,t,n,r,i){return bo(`COMPUTATION`,e,t,n,r,i)}function To(e,t,n,r,i){return bo(`IO`,e,t,n,r,i)}function Eo(e,t,n,r,i){return bo(`QUERY`,e,t,n,r,i)}function Do(e,t,n,r,i){return bo(`UNSUPPORTED`,e,t,n,r,i)}function Oo(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 ko={draft:{tolerance:.01,angularTolerance:.5},standard:{tolerance:.001,angularTolerance:.1},fine:{tolerance:1e-4,angularTolerance:.05}},Ao=`standard`;function jo(){return Ao}function Mo(e=Ao){return ko[e]}function No(e){Ao=e}function Po(e){return`makeLine2d`in e}var Fo=[`boolean`,`loft`,`extrude`,`shell`,`fillet`,`mesh`,`edgeMesh`,`transform`],Io=Object.create(null),Lo=Object.create(null);function Ro(){for(let e of Fo)Io[e]=0,Lo[e]=0}Ro();function zo(e){let t=performance.now();return()=>{Io[e]=(Io[e]??0)+(performance.now()-t),Lo[e]=(Lo[e]??0)+1}}function Bo(){let e={};for(let t of Fo)e[t]={totalMs:Io[t]??0,count:Lo[t]??0};return e}function Vo(){Ro()}var Ho;function Uo(){Ho=void 0}function Wo(e){return Ho??=typeof e.BooleanBatch==`function`,Ho}function Go(e){return e===`commonFace`?1:e===`sameFace`?2:0}function Ko(e,t,n={}){if(!Wo(e))return null;let r=zo(`boolean`),i=new e.BooleanBatch;try{for(let e of t)i.addShape(e);return i.fuseAll(Go(n.optimisation),!!n.simplify,n.fuzzyValue??0)}finally{i.delete(),r()}}function qo(e,t,n,r={}){if(!Wo(e))return null;if(n.length===0)return t;let i=zo(`boolean`),a=new e.BooleanBatch;try{for(let e of n)a.addShape(e);return a.cutAll(t,Go(r.optimisation),!!r.simplify,r.fuzzyValue??0)}finally{a.delete(),i()}}var Jo=2147483647,Yo;function Xo(){Yo=void 0}function Zo(e){return Yo??=typeof e.MeasurementExtractor?.extract==`function`,Yo}function Qo(e,t,n=!1){if(Zo(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:$o(e,t),area:es(e,t),length:n?ts(e,t):0,centerOfMass:ns(e,t),boundingBox:is(e,t)}}function $o(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 es(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 ts(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 ns(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 rs(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 is(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 as(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 os(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 ss(e){return{volume:t=>$o(e,t),area:t=>es(e,t),length:t=>ts(e,t),centerOfMass:t=>ns(e,t),linearCenterOfMass:t=>rs(e,t),boundingBox:t=>is(e,t),distance:(t,n)=>as(e,t,n),classifyPointOnFace:(t,n,r,i)=>os(e,t,n,r,i),measureBulk:(t,n)=>Qo(e,t,n)}}var cs={vertex:7,edge:6,wire:5,face:4,shell:3,solid:2,compsolid:1,compound:0};function ls(e,t,n){let r=e.TopologyExtractor.extract(t,cs[n]),i=r.getShapesCount(),a=[];for(let e=0;e<i;e++)a.push(r.getShape(e));return r.delete(),a}var us=new WeakMap;function ds(e,t,n){let r=us.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},us.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,Jo),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 fs(e,t,n){return e.TopologyExtractor?ls(e,t,n):ds(e,t,n)}var ps=new WeakMap;function ms(e){let t=ps.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`]]),ps.set(e,t)}return t}function hs(e,t){if(t.IsNull())throw Error(`Cannot determine shape type: shape is null`);let n=ms(e).get(t.ShapeType());if(!n)throw Error(`Unknown shape type enum value`);return n}function gs(e,t){let n=new e.BRepCheck_Analyzer(t,!0,!1,!1),r=n.IsValid_2();return n.delete(),r}function _s(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 vs(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 ys(e,t){return e.IsSame(t)}function bs(e,t){return e.IsEqual(t)}function xs(e){return{iterShapes:(t,n)=>fs(e,t,n),iterShapeList:(t,n)=>{vs(e,t,n)},shapeType:t=>hs(e,t),isSame:(e,t)=>ys(e,t),isEqual:(e,t)=>bs(e,t),isValid:t=>gs(e,t),sew:(t,n)=>_s(e,t,n)}}var Ss=.001;function Cs(e,t,n){n===`commonFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueShift),n===`sameFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueFull)}function ws(e,t){e.SetRunParallel(!0),e.SetUseOBB?.(!0),t!==void 0&&t>0&&e.SetFuzzyValue?.(t)}function Ts(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 Es(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 Ds(e,t,n,r={}){let i=zo(`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);Cs(e,c,i),ws(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ss);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Os(e,t,n,r={}){let i=zo(`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);Cs(e,c,i),ws(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ss);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function ks(e,t,n,r={}){let i=zo(`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);Cs(e,c,i),ws(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ss);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function As(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),ws(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 js(e,t,n={}){let r=Ko(e,t,n);if(r!==null)return r;let i=zo(`boolean`);try{let{optimisation:r,simplify:i=!1}=n,a=n.fuzzyValue??Ts(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),Cs(e,s,r),ws(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 Ms(e,n,r,i,a){a.signal?.throwIfAborted();let o=i-r;if(o===1)return t(n,r);if(o===2)return Ds(e,n[r],n[r+1],{...a,simplify:!1});let s=r+Math.ceil(o/2);return Ds(e,Ms(e,n,r,s,a),Ms(e,n,s,i,a),{...a,simplify:!1})}function Ns(e,t,n={}){let r=Ms(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 Ps(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`?Ns(e,n,r):js(e,n,r)}function Fs(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),ws(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 Is(e,t,n,r={}){if(n.length===0)return t;let i=qo(e,t,n,r);if(i!==null)return i;let a=Es(e,n),o=Os(e,t,a,r);return a.delete(),o}function Ls(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 Rs(e){return{fuse:(t,n,r)=>Ds(e,t,n,r),cut:(t,n,r)=>Os(e,t,n,r),intersect:(t,n,r)=>ks(e,t,n,r),section:(t,n,r)=>As(e,t,n,r),fuseAll:(t,n)=>Ps(e,t,n),cutAll:(t,n,r)=>Is(e,t,n,r),split:(t,n)=>Fs(e,t,n),checkBoolean:(t,n,r)=>Ls(e,t,n,r,t=>gs(e,t))}}var zs={fuse:0,cut:1,intersect:2};function Bs(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(zs[e.op],e.tool);let e=r.execute(t,i,a);return e.IsNull()?null:e}finally{r.delete()}}}function Vs(e){return{booleanPipeline:(t,n,r)=>Bs(e,t,n,r)??null}}function Hs(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 Us(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 Ws(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 Gs(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=fs(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 Ks(e,t,n,r){let i=new e.BRepPrimAPI_MakeBox_2(t,n,r),a=i.Solid();return i.delete(),a}function qs(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 Js(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 Ys(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 Xs(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 Zs(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 Qs(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 $s(e){return{makeVertex:(t,n,r)=>Hs(e,t,n,r),makeEdge:(t,n,r)=>Us(e,t,n,r),makeWire:t=>Ws(e,t),makeWireFromMixed:t=>Zs(e,t),makeFace:(t,n)=>Gs(e,t,n),makeBox:(t,n,r)=>Ks(e,t,n,r),makeCylinder:(t,n,r,i)=>qs(e,t,n,r,i),makeSphere:(t,n)=>Js(e,t,n),makeCone:(t,n,r,i,a)=>Ys(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Qs(e,t,n,r,i),buildTriFace:(t,n,r)=>Xs(e,t,n,r)}}function ec(e,t){let n=e[t];if(n===void 0)throw Error(`Index ${t} out of bounds`);return n}function tc(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 nc(e,t,n){let{faces:r,points:i}=t,a=[];for(let[t,n,o]of r){let r=ec(i,t),s=ec(i,n),c=ec(i,o),l=Xs(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 rc(e,t,n){if(t.length===0)throw Error(`hull: no shapes provided`);let r=tc(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 nc(e,i,n)}function ic(e,t,n,r){return nc(e,{points:t,faces:n},r)}function ac(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 nc(e,r,n)}function oc(e){return{hull:(t,n)=>rc(e,t,n),hullFromPoints:(t,n)=>ac(e,t,n),buildSolidFromFaces:(t,n,r)=>ic(e,t,n,r)}}function sc(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 cc(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 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=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 uc(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 dc(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 fc(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 pc(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 mc(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 hc(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 gc(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 _c(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=gc(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 vc(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 yc(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 bc(e,t){let n=new e.ShapeFix_Solid_1,r=n.SolidFromShell(e.TopoDS_Cast.Shell(t));return n.delete(),r}function xc(e,t){return e.BRepToolsWrapper.Write(t)}function Sc(e,t){return e.BRepToolsWrapper.Read(t)}function Cc(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 wc(e,t){try{t.delete()}catch{}}function Tc(e,t,n){let r=sc(e,[0,0,0],[t,0,0]),i=sc(e,[t,0,0],[t,n,0]),a=sc(e,[t,n,0],[0,n,0]),o=sc(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 Ec(e,t,n,r){return new e.gp_Pnt_3(t,n,r)}function Dc(e,t,n,r){return new e.gp_Dir_5(t,n,r)}function Oc(e,t,n,r){return new e.gp_Vec_4(t,n,r)}function kc(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 Ac(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 jc(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 Mc(e){return{makeLineEdge:(t,n)=>sc(e,t,n),makeCircleEdge:(t,n,r)=>cc(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>lc(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>uc(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>fc(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>pc(e,t,n,r,i,a,o,s),makeBezierEdge:t=>mc(e,t),makeTangentArc:(t,n,r)=>dc(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>hc(e,t,n,r,i,a,o),makeCompound:t=>vc(e,t),makeBoxFromCorners:(t,n)=>yc(e,t,n),makeRectangle:(t,n)=>Tc(e,t,n),solidFromShell:t=>bc(e,t),makeEllipsoid:(t,n,r)=>_c(e,t,n,r),toBREP:t=>xc(e,t),fromBREP:t=>Sc(e,t),exportSTEPAssembly:(t,n)=>Cc(e,t,n??{}),dispose:t=>{wc(e,t)},createPoint3d:(t,n,r)=>Ec(e,t,n,r),createDirection3d:(t,n,r)=>Dc(e,t,n,r),createVector3d:(t,n,r)=>Oc(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>kc(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>Ac(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>jc(e,t,n,r,i,a,o,s,c,l)}}function Nc(e,t,n,r){let i=zo(`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 Pc(e,t,n,r){let i=new e.BRepPrimAPI_MakeRevol_1(t,n,r,!1),a=i.Shape();return i.delete(),a}function Fc(e,t,n=!1,r,i){let a=zo(`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 Ic(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 Lc(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 Rc,zc;function Bc(){Rc=void 0}function Vc(){zc=void 0}function Hc(e){return Rc??=typeof e.LoftBatch==`function`,Rc}function Uc(e){return zc??=typeof e.ExtrudeBatch==`function`,zc}function Wc(e,t){if(t.length===0)return[];if(Hc(e)){let n=zo(`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=>Fc(e,t.wires,t.ruled??!1,t.startVertex,t.endVertex))}function Gc(e,t){if(t.length===0)return[];if(Uc(e)){let n=zo(`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=>Nc(e,t.face,t.direction,t.length))}function Kc(e){return{extrude:(t,n,r)=>Nc(e,t,n,r),revolve:(t,n,r)=>Pc(e,t,n,r),loft:(t,n,r,i)=>Fc(e,t,n,r,i),sweep:(t,n,r)=>Ic(e,t,n,r??{}),simplePipe:(t,n)=>Lc(e,t,n),loftBatch:t=>Wc(e,t),extrudeBatch:t=>Gc(e,t)}}function qc(e,t,n,r){let i=zo(`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 Jc(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 Yc(e,t,n,r,i=.001){let a=zo(`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 Xc(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 Zc(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 Qc(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 $c(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 el,tl;function nl(){el=void 0}function rl(){tl=void 0}function il(e){return el??=typeof e.ShellBatch==`function`,el}function al(e){return tl??=typeof e.FilletBatch==`function`,tl}function ol(e,t){if(t.length===0)return[];if(il(e)){let n=zo(`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=>Yc(e,t.shape,t.faces,t.thickness,t.tolerance??.001))}function sl(e,t){if(t.length===0)return[];if(al(e)){let n=zo(`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 qc(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 cl(e){return{fillet:(t,n,r)=>qc(e,t,n,r),chamfer:(t,n,r)=>Jc(e,t,n,r),chamferDistAngle:(t,n,r,i)=>Zc(e,t,n,r,i),shell:(t,n,r,i)=>Yc(e,t,n,r,i),thicken:(t,n)=>Xc(e,t,n),offset:(t,n,r)=>$c(e,t,n,r),offsetWire2D:(t,n,r)=>Qc(e,t,n,r),shellBatch:t=>ol(e,t),filletBatch:t=>sl(e,t)}}var ll;function ul(){ll=void 0}function dl(e){return ll??=typeof e.TransformBatch==`function`,ll}function fl(e,t){if(t.length===0)return[];let n=zo(`transform`);try{if(dl(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 hl(e,t.shape,t.x,t.y,t.z);case`rotate`:return gl(e,t.shape,t.angle,[...t.axis],[...t.center]);case`scale`:return vl(e,t.shape,[...t.center],t.factor);case`mirror`:return _l(e,t.shape,[...t.origin],[...t.normal])}})}finally{n()}}function pl(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),i=r.ModifiedShape(t);return r.delete(),i}function ml(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!1,!1);try{return r.ModifiedShape(t)}finally{r.delete()}}function hl(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=pl(e,t,a);return a.delete(),o.delete(),s}function gl(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=pl(e,t,a);return a.delete(),c.delete(),o.delete(),s.delete(),l}function _l(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=pl(e,t,i);return i.delete(),s.delete(),a.delete(),o.delete(),c}function vl(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n);i.SetScale(a,r);let o=pl(e,t,i);return i.delete(),a.delete(),o}function yl(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 bl(e,t){let n=new e.ShapeUpgrade_UnifySameDomain_2(t,!0,!0,!1);n.Build();let r=n.Shape();return n.delete(),r}function xl(e){return{transform:(t,n)=>pl(e,t,n),locate:(t,n)=>ml(e,t,n),translate:(t,n,r,i)=>hl(e,t,n,r,i),rotate:(t,n,r,i)=>gl(e,t,n,r,i),mirror:(t,n,r)=>_l(e,t,n,r),scale:(t,n,r)=>vl(e,t,n,r),transformBatch:t=>fl(e,t),generalTransform:(t,n,r,i)=>yl(e,t,n,r,i),simplify:t=>bl(e,t)}}function Sl(e,t,n){if(n===0)return new Float32Array;let r=t/4;return e.slice(r,r+n)}function Cl(e,t,n){let r=zo(`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=Sl(e.HEAPF32,r.getVerticesPtr(),i),u=n.skipNormals||a===0?new Float32Array:Sl(e.HEAPF32,r.getNormalsPtr(),a),d=r.getTrianglesPtr()/4,f=e.HEAPU32.slice(d,d+o),p=c>0?Sl(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 wl(e,t,n,r){let i=zo(`edgeMesh`);try{let i=e.EdgeMeshExtractor.extract(t,n,r),a=i.getLinesSize(),o=i.getEdgeGroupsSize(),s=Sl(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 Tl(e){return{mesh:(t,n)=>Cl(e,t,n),meshEdges:(t,n,r)=>wl(e,t,n,r)}}var El=0;function Dl(e,t){return`${e}_${++El}.${t}`}function Ol(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=Dl(`_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 kl(e,t,n=!1){let r=Dl(`_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 Al(e,t){let n=new e.IGESControl_Writer_1;for(let e of t)n.AddShape(e);n.ComputeModel();let r=Dl(`_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 jl(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=Dl(`_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 Ml(e,t){let n=Dl(`_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 Nl(e,t){let n=Dl(`_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 Pl(e){return{exportSTEP:t=>Ol(e,t),exportSTL:(t,n)=>kl(e,t,n),importSTEP:t=>jl(e,t),importSTL:t=>Ml(e,t),exportIGES:t=>Al(e,t),importIGES:t=>Nl(e,t)}}function Fl(e,t){let n=e.BRep_Tool.Pnt(t),r=[n.X(),n.Y(),n.Z()];return n.delete(),r}function Il(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 Ll=new WeakMap;function Rl(e,t){let n=Ll.get(e);n||(n=Il(e),Ll.set(e,n));let r=new e.BRepAdaptor_Surface_2(t,!1),i=r.GetType();return r.delete(),n.get(i)??`other`}function zl(e,t){let n=e.BRepTools.UVBounds_1(t);return{uMin:n.UMin,uMax:n.UMax,vMin:n.VMin,vMax:n.VMax}}function Bl(e,t){return e.BRepTools.OuterWire(t)}function Vl(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 Hl(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 Ul(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 Wl(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 Gl(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 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.FirstParameter(),n.LastParameter()];return n.delete(),r}function ql(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 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.IsClosed();return n.delete(),r}function Yl(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 Xl(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 Zl(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 Ql(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 $l(e,t,n){switch(n??eu(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 eu(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 tu(e,t,n){return e.shapeHashCode(t,n)}function nu(e,t){return t.IsNull()}function ru(e,t){return t.Reversed()}function iu(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 au(e,t,n,r){new e.BRepMesh_IncrementalMeshWrapper(t,n,!1,r,!1).delete()}function ou(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 su(e,t){return t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t)}function cu(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 lu(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 uu(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let e=n.GetType(),t=lu(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 du(e,t){return t.get().UReversed()}function fu(e){return{vertexPosition:t=>Fl(e,t),surfaceType:t=>Rl(e,t),uvBounds:t=>zl(e,t),outerWire:t=>Bl(e,t),surfaceNormal:(t,n,r)=>Vl(e,t,n,r),pointOnSurface:(t,n,r)=>Hl(e,t,n,r),uvFromPoint:(t,n)=>Ul(e,t,n),projectPointOnFace:(t,n)=>Wl(e,t,n),curveTangent:(t,n)=>Gl(e,t,n),curveParameters:t=>Kl(e,t),shapeOrientation:t=>Ql(e,t),downcast:(t,n)=>$l(e,t,n),copyShape:t=>$l(e,t),hashCode:(t,n)=>tu(e,t,n),isNull:t=>nu(e,t),hasTriangulation:t=>iu(e,t),meshShape:(t,n,r)=>{au(e,t,n,r)},getBezierPenultimatePole:t=>ou(e,t),createCurveAdaptor:t=>su(e,t),reverseShape:t=>ru(e,t),curvePointAtParam:(t,n)=>ql(e,t,n),curveIsClosed:t=>Jl(e,t),curveIsPeriodic:t=>Yl(e,t),curvePeriod:t=>Xl(e,t),curveType:t=>Zl(e,t),getSurfaceCylinderData:t=>cu(e,t),getSurfaceAxis:t=>uu(e,t),reverseSurfaceU:t=>du(e,t)}}function pu(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 mu(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 hu(e){return{getNurbsCurveData:t=>pu(e,t),getNurbsSurfaceData:t=>mu(e,t)}}function gu(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 _u(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 vu(e){return{interpolatePoints:(t,n)=>gu(e,t,n??{}),approximatePoints:(t,n)=>_u(e,t,n??{})}}function yu(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 bu(e,t){let n=new e.ShapeFix_Face_2(t);n.Perform();let r=n.Face();return n.delete(),r}function xu(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 Su(e){return{healSolid:t=>yu(e,t),healFace:t=>bu(e,t),healWire:(t,n)=>xu(e,t,n)}}var Cu={modified:new Map,generated:new Map,deleted:new Set};function wu(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 Tu(e,t){try{let n=wu(e.HEAP32,t.getModifiedPtr(),t.getModifiedSize()),r=wu(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 Eu(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 Du(e,t,n,r,i){if(r.length===0)return Cu;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 Tu(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,Eu(e,a,i));let l=t.Generated(r);l.Size()>0&&s.set(n,Eu(e,l,i))}return{modified:o,generated:s,deleted:c}}function Ou(e,t,n,r,i){let a=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),o=a.Shape(),s=r.length===0?Cu:Du(e,a,t,r,i);return a.delete(),{shape:o,evolution:s}}function ku(e,t,n,r,i,a,o){return a&&t.SimplifyResult(!0,!0,.001),{shape:t.Shape(),evolution:Du(e,t,n,r,i),diagnostics:o??{hasErrors:!1,hasWarnings:!1,messages:[]}}}function Au(e,t,n,r,i){return{shape:t.Shape(),evolution:Du(e,t,n,r,i)}}function ju(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=Ou(e,t,s,a,o);return s.delete(),l}function Mu(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=Ou(e,t,s,r,i);return s.delete(),d}function Nu(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=Ou(e,t,o,i,a);return o.delete(),u}function Pu(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=Ou(e,t,o,i,a);return o.delete(),c}function Fu(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=Ou(e,t,s,a,o);return s.delete(),c}function Iu(e){return{hasErrors:e.HasErrors(),hasWarnings:e.HasWarnings(),messages:[]}}function Lu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Fuse_3(t,n,o);Cs(e,s,a.optimisation),ws(s,a.fuzzyValue),s.Build(o);let c=Iu(s),l=ku(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function Ru(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Cut_3(t,n,o);Cs(e,s,a.optimisation),ws(s,a.fuzzyValue),s.Build(o);let c=Iu(s),l=ku(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function zu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Common_3(t,n,o);Cs(e,s,a.optimisation),ws(s,a.fuzzyValue),s.Build(o);let c=Iu(s),l=ku(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function Bu(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=Au(e,o,t,i,a);return o.delete(),c}function Vu(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=Au(e,o,t,i,a);return o.delete(),u}function Hu(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=Au(e,s,t,i,a);return s.delete(),u}function Uu(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=Au(e,a,t,r,i);return a.delete(),s}function Wu(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=Au(e,o,t,r,i);return o.delete(),c}function Gu(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(),Au(e,_,t,o,s)}finally{_.delete(),g.delete(),h.delete(),m.delete()}}function Ku(e){return{translateWithHistory:(t,n,r,i,a,o)=>ju(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>Mu(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>Nu(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>Pu(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>Fu(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>Lu(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>Ru(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>zu(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>Bu(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>Vu(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>Hu(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>Uu(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>Wu(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>Gu(e,t,n,r,i,a,o,s)}}function qu(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 Ju(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 Yu(e,t,n,r,i){return Ou(e,t,n,r,i)}function Xu(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 Zu(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=Xu(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 Qu(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 $u(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 ed(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 td(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 nd(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 rd(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 id(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 ad(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 od(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 sd(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 cd(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 ld(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=ud(e,d,f,p);a.Add(h);let g=ud(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 ud(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 dd(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 fd(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 pd(e,t){let n=new e.ShapeFix_Wire_1;n.Load_1(t),n.FixSelfIntersection();let r=n.Wire();return n.delete(),r}function md(){return{gaussian:0,mean:0,max:0,min:0,maxDirection:[1,0,0],minDirection:[0,1,0]}}function hd(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 gd(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=md();if(h>=1e-15){m.Divide(h);let e=hd(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:_d(o,s,e.du1,e.dv1),minDirection:_d(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 _d(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 vd(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 yd(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 bd(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 xd(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 Sd(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 Cd(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=Dl(`_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 wd(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=Dl(`_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 Td(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=Dl(`_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 Ed(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)?wd(e,t):Td(e,t)}function Dd(e){return{composeTransform:t=>Ju(e,t),applyComposedTransformWithHistory:(t,n,r,i)=>Yu(e,t,n,r,i),sweepPipeShell:(t,n,r)=>Zu(e,t,n,r??{}),loftAdvanced:(t,n)=>Qu(e,t,n??{}),buildExtrusionLaw:(t,n,r)=>$u(e,t,n,r),revolveVec:(t,n,r,i)=>ed(e,t,n,r,i),positionOnCurve:(t,n,r)=>rd(e,t,n,r),linearPattern:(t,n,r,i)=>td(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>nd(e,t,n,r,i,a),makeNonPlanarFace:t=>id(e,t),addHolesInFace:(t,n)=>ad(e,t,n),removeHolesFromFace:t=>od(e,t),makeFaceOnSurface:(t,n)=>sd(e,t,n),bsplineSurface:(t,n,r)=>cd(e,t,n,r),triangulatedSurface:(t,n,r)=>ld(e,t,n,r),sewAndSolidify:(t,n)=>dd(e,t,n),fixShape:t=>fd(e,t),fixSelfIntersection:t=>pd(e,t),surfaceCurvature:(t,n,r)=>gd(e,t,n,r),surfaceCenterOfMass:t=>vd(e,t),createDistanceQuery:t=>yd(e,t),projectEdges:(t,n,r,i)=>bd(e,t,n,r,i),draftPrism:(t,n,r,i,a,o)=>xd(e,t,n,r,i,a,o),generalTransformNonOrthogonal:(t,n,r)=>qu(e,t,n,r),createXCAFDocument:t=>Sd(e,t),writeXCAFToSTEP:(t,n)=>Cd(e,t,n??{}),exportSTEPConfigured:(t,n)=>Ed(e,t,n??{})}}var Od=()=>{};function kd(e){return e}function Ad(e){let t=kd(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function jd(e){return e}function Md(e,t){return{x:e,y:t}}function Nd(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 Pd(e,t){return{x:e,y:t}}function Fd(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:Od}}function Id(e){return e}function Ld(e){return e}function Rd(e,t,n,r){return te(e,t,n,r)}function zd(e,t,n,r){return ne(e,t,n,r)}function Bd(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function Vd(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 Hd(e){return oe(e)}function Ud(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 Wd(e,t){return S(kd(e),t)}function Gd(e,t){return{point:S(kd(e),t),tangent:C(kd(e),t)}}function Kd(e){return w(kd(e))}function qd(e){return ee(Ad(e))}function Jd(e,t,n){return{__bk2d:`trimmed`,basis:kd(e),tStart:t,tEnd:n}}function Yd(e){return JSON.parse(JSON.stringify(e))}function Xd(e,t){let n=kd(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 Ud(i)}function Zd(e,t,n){return se(kd(e),t,n)}function Qd(e,t,n,r){return ce(kd(e),t,n,r)}function $d(e,t,n,r){return le(kd(e),t,n,r)}function ef(e,t,n){return ue(kd(e),t,n)}function tf(e,t,n,r,i){return de(kd(e),t,n,r,i)}function nf(e,t,n,r,i,a){return pf(e,of(t,n,r,i,a))}function rf(e,t,n){return{m:e,tx:t,ty:n,delete:Od}}function af(){return rf([1,0,0,0,1,0,0,0,1],0,0)}function of(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return af();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 rf(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function sf(e,t){return rf([1,0,0,0,1,0,0,0,1],e,t)}function cf(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 rf(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return rf([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function lf(e,t,n){let r=Math.cos(e),i=Math.sin(e);return rf([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function uf(e,t,n){return rf([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function df(e,t,n){e.tx=t,e.ty=n}function ff(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 pf(e,n){let r=kd(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 mf(e,t,n){let r=fe(kd(e),kd(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function hf(e,t,n){let r=kd(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 gf(e,t,n,r,i,a){let o=kd(e),s=kd(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=hf(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=hf(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 _f(e,n,r,i){let a=kd(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 Ud(l,{degMax:s})}function vf(e){let n=Ad(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return vf(_f(e,1e-6,`C2`,10));let r=w(kd(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 yf(){return Ce()}function bf(e,t,n){we(jd(e),kd(t),n)}function xf(e){let t=jd(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function Sf(e,t){let n=jd(e),r=jd(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 Cf(e,t){let n=jd(e),r=jd(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function wf(e,t,n){let r=jd(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function Tf(e){let t=Ad(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function Ef(e){let t=Ad(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function Df(e){let t=Ad(e);return t.__bk2d===`bezier`?[...t.poles]:null}function Of(e){let t=Ad(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function kf(e){let t=Ad(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function Af(e){return xe(kd(e))}function jf(e){return Se(e)}function Mf(e,t){let n=kd(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 Nf(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 Pf(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 Ff(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 If(e,n,r,i,a){let o=kd(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 Nf(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 Pf(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?Nf(e,t(n,0),t(n,1)):Ff(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 Ff(e,u)}function Lf(e,t,n){let r=kd(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 Ff(e,a)}function Rf(e,t){return e.BRep_Tool.Surface_2(t)}function zf(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(),Ud(o)}function Bf(e,t){e.BRepLib.BuildCurves3d_2(t)}function Vf(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 Hf(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=fs(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 Uf(e){return{wrapCurve2dHandle:e=>Id(e),createCurve2dAdaptor:e=>Ld(e),createPoint2d:(e,t)=>Md(e,t),createDirection2d:(e,t)=>Nd(e,t),createVector2d:(e,t)=>Pd(e,t),createAxis2d:(e,t,n,r)=>Fd(e,t,n,r),makeLine2d:(e,t,n,r)=>Rd(e,t,n,r),makeCircle2d:(e,t,n,r)=>zd(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)=>Bd(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>Vd(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>Hd(e),makeBSpline2d:(e,t)=>Ud(e,t),evaluateCurve2d:(e,t)=>Wd(e,t),evaluateCurve2dD1:(e,t)=>Gd(e,t),getCurve2dBounds:e=>Kd(e),getCurve2dType:e=>qd(e),trimCurve2d:(e,t,n)=>Jd(e,t,n),reverseCurve2d:e=>{},copyCurve2d:e=>Yd(e),offsetCurve2d:(e,t)=>Xd(e,t),translateCurve2d:(e,t,n)=>Zd(e,t,n),rotateCurve2d:(e,t,n,r)=>Qd(e,t,n,r),scaleCurve2d:(e,t,n,r)=>$d(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>ef(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>tf(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>nf(e,t,n,r,i,a),createIdentityGTrsf2d:()=>af(),createAffinityGTrsf2d:(e,t,n,r,i)=>of(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>sf(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>cf(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>lf(e,t,n),createScaleGTrsf2d:(e,t,n)=>uf(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{df(e,t,n)},multiplyGTrsf2d:(e,t)=>{ff(e,t)},transformCurve2dGeneral:(e,t)=>pf(e,t),intersectCurves2d:(e,t,n)=>mf(e,t,n),projectPointOnCurve2d:(e,t,n)=>hf(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>gf(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>_f(e,t,n,r),decomposeBSpline2dToBeziers:e=>vf(e),createBoundingBox2d:()=>yf(),addCurveToBBox2d:(e,t,n)=>{bf(e,t,n)},getBBox2dBounds:e=>xf(e),mergeBBox2d:(e,t)=>{Sf(e,t)},isBBox2dOut:(e,t)=>Cf(e,t),isBBox2dOutPoint:(e,t,n)=>wf(e,t,n),getCurve2dCircleData:e=>Tf(e),getCurve2dEllipseData:e=>Ef(e),getCurve2dBezierPoles:e=>Df(e),getCurve2dBezierDegree:e=>Of(e),getCurve2dBSplineData:e=>kf(e),serializeCurve2d:e=>Af(e),deserializeCurve2d:e=>jf(e),splitCurve2d:(e,t)=>Mf(e,t),liftCurve2dToPlane:(t,n,r,i)=>If(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>Lf(e,t,n),extractSurfaceFromFace:t=>Rf(e,t),extractCurve2dFromEdge:(t,n)=>zf(e,t,n),buildCurves3d:t=>{Bf(e,t)},fixWireOnFace:(t,n,r)=>Vf(e,t,n,r),fillSurface:(t,n)=>Hf(e,t,n)}}function Wf(){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 Gf(e){return{draft:(t,n,r,i,a)=>Gu(e,t,n,r,i,a,[],1).shape}}var Kf=class{oc;kernelId=`occt`;capabilities=a;constructor(e){this.oc=e,Object.assign(this,Rs(e),Vs(e),oc(e),$s(e),Mc(e),Kc(e),cl(e),xl(e),Tl(e),Pl(e),ss(e),xs(e),fu(e),hu(e),vu(e),Su(e),Ku(e),Dd(e),Uf(e),Gf(e),Wf())}},qf=()=>{};function Jf(e){return typeof e==`object`&&!!e&&e.__brepkit}function Yf(e,t){return{__brepkit:!0,type:e,id:t,delete:qf,HashCode(e){return t%e},IsNull(){return!1}}}function F(e){return Yf(`solid`,e)}function Xf(e){return Yf(`face`,e)}function Zf(e){return Yf(`edge`,e)}function Qf(e){return Yf(`wire`,e)}function $f(e){return Yf(`shell`,e)}function ep(e){let t=Yf(`compound`,e);return gp.has(e)?{...t,delete:()=>gp.delete(e)}:t}function tp(e){return Yf(`vertex`,e)}function I(e,t){if(!Jf(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 L(e){return Array.from(e)}function np(e,t){if(!Jf(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 rp(e,t,n){if(!Jf(t))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof t);if(t.type===`solid`)return[t.id];if(t.type===`compound`){let r=L(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 ip(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 ap(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function op(e,t,n){return[1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1]}function sp(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 cp(e,t=[0,0,1],n=[0,0,0]){let r=sp(t,[0,0,1]),i=r[0]===0&&r[1]===0&&r[2]===0?[0,0,1]:r,a=sp(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 lp(e,t){let[n,r,i]=sp(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 up(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 dp(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 fp(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 pp=.01,mp=9e5;function hp(){return mp++}var gp=new Map,_p=new Set;function vp(e,t){_p.has(e)||(_p.add(e),console.warn(`brepkit: ${t}`))}function yp(e){return e.optimisation!==void 0||e.simplify!==void 0||e.strategy!==void 0||e.fuzzyValue!==void 0}function bp(e){return e}function xp(e){let t=e;for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function Sp(e){return e}function Cp(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 wp(e,t,n){let r=gp.get(t);return r?r.flatMap(t=>t.type===n?[t]:Mp(e,t,n)):n===`solid`?L(e.getCompoundSolids(t)).map(F):n===`face`||n===`edge`||n===`vertex`||n===`wire`?L(e.getCompoundSolids(t)).map(F).flatMap(t=>Mp(e,t,n)):[]}function Tp(e,t,n,r){switch(r){case`solid`:return[t];case`shell`:return L(e.getSolidShells(n)).map($f);case`face`:return L(e.getSolidFaces(n)).map(Xf);case`edge`:return L(e.getSolidEdges(n)).map(Zf);case`vertex`:return L(e.getSolidVertices(n)).map(tp);case`wire`:return L(e.getSolidFaces(n)).flatMap(t=>L(e.getFaceWires(t)).map(Qf));default:return[]}}function Ep(e,t,n){let r=L(e.getShellFaces(t)).map(Xf),i=new Set,a=[];for(let t of r)for(let r of Mp(e,t,n)){let e=I(r);i.has(e)||(i.add(e),a.push(r))}return a}function Dp(e,t,n,r){return r===`shell`?[t]:r===`face`?L(e.getShellFaces(n)).map(Xf):r===`edge`||r===`vertex`?Ep(e,n,r):[]}function Op(e,t,n,r){return r===`face`?[t]:r===`edge`?L(e.getFaceEdges(n)).map(Zf):r===`vertex`?L(e.getFaceVertices(n)).map(tp):r===`wire`?L(e.getFaceWires(n)).map(Qf):[]}function kp(e,n){let r=L(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(tp(e.makeVertex(t,n,r))))}}return a}function Ap(e,t,n,r){return r===`wire`?[t]:r===`edge`?L(e.getWireEdges(n)).map(Zf):r===`vertex`?kp(e,n):[]}function jp(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[tp(i),tp(a)]}return[]}function Mp(e,t,n){let r=I(t);switch(t.type){case`compound`:return wp(e,r,n);case`solid`:return Tp(e,t,r,n);case`shell`:return Dp(e,t,r,n);case`face`:return Op(e,t,r,n);case`wire`:return Ap(e,t,r,n);case`edge`:return jp(e,t,r,n);default:return[]}}function Np(e,t,n){if(Array.isArray(t))for(let e of t)n(e)}function Pp(e,t){if(Jf(t))return t.type;throw Error(`brepkit: cannot determine shape type of non-brepkit handle`)}function Fp(e,t,n){return Jf(t)&&Jf(n)&&t.id===n.id&&t.type===n.type}function Ip(e,t,n){return Fp(e,t,n)}function Lp(e,t,n){return t}function Rp(e,t,n){return Jf(t)?t.id%n:0}function zp(e,t){return!t||!Jf(t)}function Bp(e,t){let n=I(t);return e.getShapeOrientation(n)}function Vp(e,t){let n=np(t,`edgeToFaceMap`);return e.edgeToFaceMap(n)}function Hp(e,t,n){let r=I(t,`face`),i=I(n,`face`);return Array.from(e.sharedEdges(r,i)).map(e=>Zf(e))}function Up(e,t,n){let r=np(t,`adjacentFaces`),i=I(n,`face`);return Array.from(e.adjacentFaces(r,i)).map(e=>Xf(e))}function Wp(e,t){let n=t;return n.type===`face`?[n.id]:n.type===`solid`?L(e.getSolidFaces(n.id)):n.type===`shell`?L(e.getShellFaces(n.id)):[]}function Gp(e,t,n){let r=t.flatMap(t=>Wp(e,t)),i=n??1e-7;try{return $f(e.weldShellsAndFaces(r,i))}catch(e){console.warn(`brepkit: weldShellsAndFaces failed, falling back to sewFaces:`,e)}return $f(e.sewFaces(r,i))}function Kp(e){return{iterShapes:(t,n)=>Mp(e,t,n),iterShapeList:(t,n)=>{Np(e,t,n)},shapeType:t=>Pp(e,t),isSame:(t,n)=>Fp(e,t,n),isEqual:(t,n)=>Ip(e,t,n),downcast:(t,n)=>Lp(e,t,n),copyShape:t=>Lp(e,t),hashCode:(t,n)=>Rp(e,t,n),isNull:t=>zp(e,t),shapeOrientation:t=>Bp(e,t),edgeToFaceMap:t=>Vp(e,t),sharedEdges:(t,n)=>Hp(e,t,n),adjacentFaces:(t,n)=>Up(e,t,n),sew:(t,n)=>Gp(e,t,n)}}function qp(e,t){return n(e.getVertexPosition(I(t,`vertex`)))}function Jp(e,t){return e.getSurfaceType(I(t,`face`))}function Yp(e,n){let r=e.getSurfaceDomain(I(n,`face`));return{uMin:t(r,0),uMax:t(r,1),vMin:t(r,2),vMax:t(r,3)}}function Xp(e,t){return Qf(e.getFaceOuterWire(I(t,`face`)))}function Zp(e,t,r,i){return n(e.evaluateSurfaceNormal(I(t,`face`),r,i))}function Qp(e,t,r,i){return n(e.evaluateSurface(I(t,`face`),r,i))}function $p(e,n,r){try{let i=e.projectPointOnSurface(I(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 em(e,t,r){return n(e.projectPointOnSurface(I(t,`face`),r[0],r[1],r[2]),2)}function tm(e,r,i){let a=r,o,s=i;if(a.type===`wire`){let n=L(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=I(r,`edge`);let c=e.evaluateEdgeCurveD1(o,s);return{point:n(c,0),tangent:n(c,3)}}function nm(e,n){let r=n;if(r.type===`wire`){let n=L(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(I(n,`edge`));return[t(i,0),t(i,1)]}function rm(e,r,i){let a=r;if(a.type===`wire`){let r=L(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(I(r,`edge`),i))}function im(e,r){let i=r;if(i.type===`wire`){let r=L(e.getWireEdges(i.id));if(r.length===0)return!1;if(r.length===1)return am(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=>ip(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 am(e.getEdgeVertices(I(r,`edge`)))}function am(e){return ip(t(e,0),t(e,1),t(e,2),t(e,3),t(e,4),t(e,5))<1e-7}function om(e,t){let n=t;try{if(n.type===`edge`||n.type===`wire`&&L(e.getWireEdges(n.id)).length===1)return im(e,t)}catch{}return!1}function sm(e,t){try{if(om(e,t)){let n=nm(e,t);return n[1]-n[0]}}catch{}return 0}function cm(e,t){if(t.type===`wire`){let n=Mp(e,t,`edge`)[0];return n?e.getEdgeCurveType(I(n,`edge`)):`LINE`}return e.getEdgeCurveType(I(t,`edge`))}function lm(e,t,n){let r=I(t,`edge`);return Zf(e.curveDegreeElevate(r,n))}function um(e,t,n,r){let i=I(t,`edge`);return Zf(e.curveKnotInsert(i,n,r))}function dm(e,t,n,r){let i=I(t,`edge`);return Zf(e.curveKnotRemove(i,n,r))}function fm(e,n,r){let i=I(n,`edge`),a=e.curveSplit(i,r);return[Zf(t(a,0)),Zf(t(a,1))]}function pm(e,t,n,r,i,a,o,s,c,l){return Xf(e.approximateSurfaceLspia(t,n,r,i,a,o,s,c,l))}function mm(e,t,n,r){let i=I(t,`face`);return Xf(e.untrimFace(i,n,r))}function hm(e,t){return t}function gm(e,t){let r=Km(e,t);return!r||r.controlPoints.length<6?null:n(r.controlPoints,r.controlPoints.length-6)}function _m(e,t){if(Jf(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 vm(e,t){let n=JSON.parse(e.getAnalyticSurfaceParams(I(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 ym(e,t){return t}function bm(e,n,r,i,a){a!==void 0&&vp(`classify-tolerance`,`classifyPointOnFace() tolerance parameter is not supported; brepkit uses domain-based classification.`);let o=I(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 xm(e,t,n,r){let i=np(t,`classifyPointRobust`);return e.classifyPointRobust(i,n[0],n[1],n[2],r)}function Sm(e,t,n,r){let i=np(t,`classifyPointWinding`);return e.classifyPointWinding(i,n[0],n[1],n[2],r)}function Cm(e,t,n,r){let i=np(t,`detectSmallFeatures`);return Array.from(e.detectSmallFeatures(i,n,r)).map(e=>Xf(e))}function wm(e,t,n){let r=np(t,`recognizeFeatures`);return e.recognizeFeatures(r,n)}function Tm(e,t,r,i,a){let o=I(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=ip(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(Zf(e.makeLineEdge(i,a,0,o,s,0)))}let r=hp();return gp.set(r,n),ep(r)},b=()=>{let e=hp();return gp.set(e,[]),ep(e)};return{visible:{outline:y(v.visible),smooth:b(),sharp:b()},hidden:{outline:y(v.hidden),smooth:b(),sharp:b()}}}function Em(e,t){let n=I(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 Dm(e,t){return JSON.parse(e.getNurbsSurfaceDataParity(I(t,`face`)))}function Om(e){return{vertexPosition:t=>qp(e,t),surfaceType:t=>Jp(e,t),uvBounds:t=>Yp(e,t),outerWire:t=>Xp(e,t),surfaceNormal:(t,n,r)=>Zp(e,t,n,r),pointOnSurface:(t,n,r)=>Qp(e,t,n,r),uvFromPoint:(t,n)=>$p(e,t,n),projectPointOnFace:(t,n)=>em(e,t,n),curveTangent:(t,n)=>tm(e,t,n),curveParameters:t=>nm(e,t),curvePointAtParam:(t,n)=>rm(e,t,n),curveIsClosed:t=>im(e,t),curveIsPeriodic:t=>om(e,t),curvePeriod:t=>sm(e,t),curveType:t=>cm(e,t),curveDegreeElevate:(t,n)=>lm(e,t,n),curveKnotInsert:(t,n,r)=>um(e,t,n,r),curveKnotRemove:(t,n,r)=>dm(e,t,n,r),curveSplit:(t,n)=>fm(e,t,n),approximateSurfaceLspia:(t,n,r,i,a,o,s,c,l)=>pm(e,t,n,r,i,a,o,s,c,l),untrimFace:(t,n,r)=>mm(e,t,n,r),createCurveAdaptor:t=>hm(e,t),getBezierPenultimatePole:t=>gm(e,t),getSurfaceCylinderData:t=>_m(e,t),getSurfaceAxis:t=>vm(e,t),reverseSurfaceU:t=>ym(e,t),classifyPointOnFace:(t,n,r,i)=>bm(e,t,n,r,i),classifyPointRobust:(t,n,r)=>xm(e,t,n,r),classifyPointWinding:(t,n,r)=>Sm(e,t,n,r),detectSmallFeatures:(t,n,r)=>Cm(e,t,n,r),recognizeFeatures:(t,n)=>wm(e,t,n),projectEdges:(t,n,r,i)=>Tm(e,t,n,r,i),getNurbsCurveData:t=>Em(e,t),getNurbsSurfaceData:t=>Dm(e,t)}}function km(e,t,n){if(Array.isArray(n)&&n.length===16)return Hm(e,t,n);throw Error(`brepkit: transform expects a 16-element matrix array`)}function Am(e,t,n,r,i){return Hm(e,t,op(n,r,i))}function jm(e,t,n,r,i){return Hm(e,t,cp(n,r,i))}function Mm(e,t,n,r){let i=t;return i.type===`solid`?F(e.mirror(i.id,n[0],n[1],n[2],r[0],r[1],r[2])):Hm(e,t,dp(n,r))}function Nm(e,t,n,r){return Hm(e,t,lp(n,r))}function Pm(e,t,n,r,i){return Hm(e,t,up(n,r))}function Fm(e,t,n,r){return Hm(e,t,up(n,r))}function Im(e,t,n,r){let{point:i,tangent:a}=tm(e,n,r),[o,s,c]=a,l=Math.sqrt(o*o+s*s+c*c);if(l<1e-12)return Am(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=jm(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=jm(e,p,n,t)}return Am(e,p,i[0],i[1],i[2])}function Lm(e,t,n,r,i){let a=[t];for(let o=1;o<i;o++){let i=r*o;a.push(Am(e,t,n[0]*i,n[1]*i,n[2]*i))}return a}function Rm(e,t,n,r,i,a){let o=[t];for(let s=1;s<a;s++)o.push(jm(e,t,i*s,r,n));return o}function zm(e,t,n,r,i,a,o,s){return ep(e.gridPattern(np(t,`gridPattern`),n[0],n[1],n[2],r[0],r[1],r[2],i,a,o,s))}function Bm(e,t){return t.map(t=>{switch(t.type){case`translate`:return Am(e,t.shape,t.x,t.y,t.z);case`rotate`:return jm(e,t.shape,t.angle,t.axis,t.center);case`scale`:return Nm(e,t.shape,t.center,t.factor);case`mirror`:return Mm(e,t.shape,t.origin,t.normal)}})}function Vm(e){return{transform:(t,n)=>km(e,t,n),locate:(t,n)=>km(e,t,n),translate:(t,n,r,i)=>Am(e,t,n,r,i),rotate:(t,n,r,i)=>jm(e,t,n,r,i),mirror:(t,n,r)=>Mm(e,t,n,r),scale:(t,n,r)=>Nm(e,t,n,r),generalTransform:(t,n,r,i)=>Pm(e,t,n,r,i),generalTransformNonOrthogonal:(t,n,r)=>Fm(e,t,n,r),positionOnCurve:(t,n,r)=>Im(e,t,n,r),linearPattern:(t,n,r,i)=>Lm(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>Rm(e,t,n,r,i,a),gridPattern:(t,n,r,i,a,o,s)=>zm(e,t,n,r,i,a,o,s),transformBatch:t=>Bm(e,t)}}function Hm(e,t,n){let r=t;if(!Jf(t))throw Error(`brepkit: applyMatrix requires a BrepkitHandle`);switch(r.type){case`solid`:{let t=e.copySolid(r.id);return e.transformSolid(t,n),F(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),Xf(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),Qf(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),Zf(t)}default:throw Error(`brepkit: applyMatrix does not support '${r.type}' shapes`)}}function Um(e,t){return!!(e&&(e[0]!==0||e[1]!==0||e[2]!==0)||t&&(t[0]!==0||t[1]!==0||t[2]!==1))}function Wm(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=jm(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=jm(e,i,n,t)}}return n&&(n[0]!==0||n[1]!==0||n[2]!==0)&&(i=Am(e,i,n[0],n[1],n[2])),i}function Gm(e,t){let r,i=t;if(i.type===`solid`||i.type===`compound`){let n=Mp(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=I(i,`face`),o=0;for(let t of n){let n=I(t,`face`);try{let t=e.faceArea(n,pp);t>o&&(o=t,a=n)}catch{}}r=a}else r=I(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 Km(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 qm(e,t){if(!Jf(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 Jm(e,t){if(!Jf(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 Ym(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(I(t));return n>0&&console.warn(`brepkit: repairSolid left ${n} error(s) on solid.`),t}catch(n){try{return e.healSolid(I(t)),t}catch(e){return console.warn(`brepkit: healSolid failed (repairSolid error:`,n,`, healSolid error:`,e,`)`),null}}}function Xm(e,t){return t}function Zm(e,t,n){return t}function Qm(e,t,n){let r=np(t,`mergeCoincidentVertices`);return e.mergeCoincidentVertices(r,n)}function $m(e,t,n){let r=np(t,`removeDegenerateEdges`);return e.removeDegenerateEdges(r,n)}function eh(e,t){let n=np(t,`fixFaceOrientations`);return e.fixFaceOrientations(n)}function th(e,t){let n=t;return n.type===`solid`&&e.healSolid(n.id),t}function nh(e,t){return t}function rh(e,t){if(!Jf(t)||t.type!==`solid`)return null;try{return typeof e.validateSolidDetails==`function`?e.validateSolidDetails(t.id):null}catch{return null}}function ih(e){return{isValid:t=>qm(e,t),isValidStrict:t=>Jm(e,t),healSolid:t=>Ym(e,t),healFace:t=>Xm(e,t),healWire:(t,n)=>Zm(e,t,n),fixShape:t=>th(e,t),fixSelfIntersection:t=>nh(e,t),mergeCoincidentVertices:(t,n)=>Qm(e,t,n),removeDegenerateEdges:(t,n)=>$m(e,t,n),fixFaceOrientations:t=>eh(e,t),validationDetails:t=>rh(e,t)}}function ah(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 oh(e,t){return t.type===`compound`?L(e.getCompoundSolids(t.id)).length===0:!1}function sh(e){return ep(e.makeCompound([]))}function ch(e,t,n,r){if(r&&yp(r)&&vp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),oh(e,t))return n;if(oh(e,n))return t;let i=np(t,`fuse`),a=n;if(a.type===`compound`){let t=L(e.getCompoundSolids(a.id)),n=i;for(let r of t)n=e.fuse(n,r);return F(n)}return F(e.fuse(i,np(n,`fuse`)))}function lh(e,t,n,r){if(r&&yp(r)&&vp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),oh(e,t))return sh(e);if(oh(e,n))return t;let i=np(t,`cut`),a=n;if(a.type===`compound`){let t=L(e.getCompoundSolids(a.id)),n=i;for(let r of t)try{n=e.cut(n,r)}catch(t){if(ah(t))return sh(e);throw t}return F(n)}try{return F(e.cut(i,np(n,`cut`)))}catch(t){if(ah(t))return sh(e);throw t}}function uh(e,t,n,r){if(r&&yp(r)&&vp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),oh(e,t)||oh(e,n))return sh(e);try{return F(e.intersect(np(t,`intersect`),np(n,`intersect`)))}catch(t){if(ah(t))return sh(e);throw t}}function dh(e,n,r,i){let{point:a,normal:o}=Gm(e,r),s=Jf(n)&&n.type===`solid`?n.id:I(n,`solid`),c=L(e.section(s,a[0],a[1],a[2],o[0],o[1],o[2]));if(c.length===0)return ep(e.makeCompound([]));let l=[];for(let n=0;n<c.length;n++){let r=L(e.getFaceWires(t(c,n)));for(let e=0;e<r.length;e++)l.push(Qf(t(r,e)))}let[u]=l;if(l.length===1&&u!==void 0)return u;let d=hp();return gp.set(d,l),ep(d)}function fh(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(...L(e.getCompoundSolids(n.id))):t.push(np(r,`fuseAll`))}if(t.length===0)throw Error(`brepkit: fuseAll resolved to zero solid IDs`);return F(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(ch(e,i[n],i[n+1],r)):t.push(i[n]);i=t}return t(i,0)}function ph(e,t,n,r){if(n.length===0)return t;if(n.length===1)return lh(e,t,n[0],r);let i=np(t,`cutAll`),a=[];for(let t of n){let n=t;n.type===`compound`?a.push(...L(e.getCompoundSolids(n.id))):a.push(np(t,`cutAll`))}return a.length===0?t:F(e.compoundCut(i,new Uint32Array(a)))}function mh(e,t,n){if(n.length===0)throw Error(`brepkit: split requires at least one tool`);let{point:r,normal:i}=Gm(e,n[0]),a=L(e.split(I(t,`solid`),r[0],r[1],r[2],i[0],i[1],i[2]));return ep(e.makeCompound(a))}function hh(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 gh(e,t,n,r,i){let a=[];return(!Jf(t)||t.IsNull())&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),(!Jf(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 _h(e,n,r){let i=[];for(let r of n){let n=r;if(n.type===`solid`){let r=L(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 F(e.convexHull(i))}function vh(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 F(e.convexHull(r))}function yh(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 F(e.importIndexedMesh(a,o))}function bh(e){return{fuse:(t,n,r)=>ch(e,t,n,r),cut:(t,n,r)=>lh(e,t,n,r),intersect:(t,n,r)=>uh(e,t,n,r),section:(t,n,r)=>dh(e,t,n,r),fuseAll:(t,n)=>fh(e,t,n),cutAll:(t,n,r)=>ph(e,t,n,r),split:(t,n)=>mh(e,t,n),meshBoolean:(t,n,r,i,a,o)=>hh(e,t,n,r,i,a,o),checkBoolean:(t,n,r)=>gh(e,t,n,r,t=>qm(e,t)),hull:(t,n)=>_h(e,t,n),hullFromPoints:(t,n)=>vh(e,t,n),buildSolidFromFaces:(t,n,r)=>yh(e,t,n,r)}}function xh(e,t,n,r){return tp(e.makeVertex(t,n,r))}function Sh(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 Mh(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(Jf(t)&&t.type===`edge`)return t;throw Error(`brepkit: makeEdge requires a curve with origin/direction, or an edge handle`)}function Ch(e,t){let n=[];for(let r of t){let t=r;if(t.type===`wire`)for(let r of L(e.getWireEdges(t.id)))n.push(r);else n.push(I(r,`edge`))}return Qf(e.makeWire(n,!0))}function wh(e,t,n){let r=t,i=r.type===`edge`?e.makeWire([r.id],!0):I(t,`wire`);return Xf(n?e.makePlanarFaceFromWire(i):e.makeFaceFromWire(i))}function Th(e,t,n,r){return F(e.makeBox(t,n,r))}function Eh(e,t,n){return Xf(e.makeRectangle(t,n))}function Dh(e,t,n,r,i){let a=F(e.makeCylinder(t,n));return Um(r,i)?Wm(e,a,r,i):a}function Oh(e,t,n){let r=F(e.makeSphere(t,32));return n&&(n[0]!==0||n[1]!==0||n[2]!==0)?Am(e,r,n[0],n[1],n[2]):r}function kh(e,t,n,r,i,a){let o=F(e.makeCone(t,n,r));return Um(i,a)?Wm(e,o,i,a):o}function Ah(e,t,n,r,i){let a=F(e.makeTorus(t,n,32));return Um(r,i)?Wm(e,a,r,i):a}function jh(e,t,n,r){let i=Math.max(t,n,r);return Pm(e,Oh(e,i),[t/i,0,0,0,n/i,0,0,0,r/i],[0,0,0],!1)}function Mh(e,t,n){return Zf(e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Nh(e,t,n,r){let i=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);return Zf(e.makeCircleEdge(t[0],t[1],t[2],n[0]/i,n[1]/i,n[2]/i,r))}function Ph(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 Zf(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 cg(e,t,n,r,i,a)}function Fh(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 Ih(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 Mh(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=Fh(p,m,h,g,_,v);if(!y)return Mh(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 Zf(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 Lh(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 Zf(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 Zf(e.makeEllipseEdge(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i))}function Rh(e,t,n,r,i,a,o,s){return lg(e,t,n,r,i,a,o,s)}function zh(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 Zf(e.makeNurbsEdge(c[0],c[1],c[2],l[0],l[1],l[2],r,a,s,o))}function Bh(e,t,n,r){return Zf(e.makeTangentArc3d(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function Vh(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 Ch(e,[eg(e,p)])}function Hh(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 L(e.getWireEdges(t.id)))n.push(r)}if(n.length===0)throw Error(`brepkit: makeWireFromMixed requires at least one edge`);return Qf(e.makeWire(n,!1))}function Uh(e,t){let n=t.filter(Jf);if(n.length===0)throw Error(`brepkit: makeCompound requires at least one shape`);if(n.every(e=>e.type===`solid`))return ep(e.makeCompound(n.map(e=>e.id)));let r=hp();return gp.set(r,n),ep(r)}function Wh(e,t,n){let r=Th(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?Am(e,r,i,a,o):r}function Gh(e,t){let n=t;if(n.type===`solid`)return t;if(n.type===`shell`){try{return e.getSolidFaces(n.id),F(n.id)}catch{}return F(e.solidFromShell(n.id))}return F(e.solidFromShell(I(t,`shell`)))}function Kh(e,t){return wh(e,t,!1)}function qh(e,t,n){let r=n.map(e=>I(e,`wire`));return Xf(e.addHolesToFace(I(t,`face`),r))}function Jh(e,t){return Xf(e.removeHolesFromFace(I(t,`face`)))}function Yh(e,t,n){return wh(e,n,!1)}function Xh(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 Xf(e.interpolateSurface(i,n,r,a,o))}catch{return Zh(e,t,n,r)}}function Zh(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=Qh(e,t(n,s),t(n,c),t(n,l));d&&a.push(d);let f=Qh(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 Gp(e,a,1e-6)}function Qh(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 wh(e,Ch(e,[Mh(e,t,n),Mh(e,n,r),Mh(e,r,t)]))}catch(e){return console.warn(`brepkit: makeNonPlanarFace failed:`,e),null}}function $h(e,t,n){let r=t.map(e=>I(e,`face`));return F(e.sewFaces(r,n))}function eg(e,n,r){if(r?.tolerance!==void 0&&vp(`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 Mh(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 Zf(e.interpolatePoints(a,i))}function tg(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 Zf(e.approximateCurveLspia(a,r,o,i,100))}function ng(e,t,n,r){return{x:t,y:n,z:r}}function rg(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 ig(e,t,n,r){return{x:t,y:n,z:r}}function ag(e,t,n,r,i,a,o){return{origin:[t,n,r],direction:[i,a,o]}}function og(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 sg(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 cg(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 Zf(e.makeNurbsEdge(b,x,S,C,w,ee,2,v,g,_))}function lg(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 Zf(e.makeNurbsEdge(y,b,x,S,C,w,2,_,h,g))}function ug(e){return{makeVertex:(t,n,r)=>xh(e,t,n,r),makeEdge:(t,n,r)=>Sh(e,t,n,r),makeWire:t=>Ch(e,t),makeWireFromMixed:t=>Hh(e,t),makeFace:(t,n)=>wh(e,t,n),makeBox:(t,n,r)=>Th(e,t,n,r),makeRectangle:(t,n)=>Eh(e,t,n),makeCylinder:(t,n,r,i)=>Dh(e,t,n,r,i),makeSphere:(t,n)=>Oh(e,t,n),makeCone:(t,n,r,i,a)=>kh(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Ah(e,t,n,r,i),makeEllipsoid:(t,n,r)=>jh(e,t,n,r),makeLineEdge:(t,n)=>Mh(e,t,n),makeCircleEdge:(t,n,r)=>Nh(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>Ph(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>Ih(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>Lh(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>Rh(e,t,n,r,i,a,o,s),makeBezierEdge:t=>zh(e,t),makeTangentArc:(t,n,r)=>Bh(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>Vh(e,t,n,r,i,a,o),makeCompound:t=>Uh(e,t),makeBoxFromCorners:(t,n)=>Wh(e,t,n),solidFromShell:t=>Gh(e,t),makeNonPlanarFace:t=>Kh(e,t),addHolesInFace:(t,n)=>qh(e,t,n),removeHolesFromFace:t=>Jh(e,t),makeFaceOnSurface:(t,n)=>Yh(e,t,n),bsplineSurface:(t,n,r)=>Xh(e,t,n,r),triangulatedSurface:(t,n,r)=>Zh(e,t,n,r),buildTriFace:(t,n,r)=>Qh(e,t,n,r),sewAndSolidify:(t,n)=>$h(e,t,n),interpolatePoints:(t,n)=>eg(e,t,n),approximatePoints:(t,n)=>tg(e,t,n),createPoint3d:(t,n,r)=>ng(e,t,n,r),createDirection3d:(t,n,r)=>rg(e,t,n,r),createVector3d:(t,n,r)=>ig(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>ag(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>og(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>sg(e,t,n,r,i,a,o,s,c,l)}}function dg(e,t,n,r){let i=np(t,`fillet`),a=n.map(e=>I(e,`edge`));if(typeof r==`number`)return F(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 F(e.filletVariable(i,JSON.stringify(o)))}function fg(e,t,n,r){let i=np(t,`chamfer`),a=n.map(e=>I(e,`edge`));if(typeof r==`number`)return F(e.chamfer(i,a,r));if(Array.isArray(r)){let[t,n]=r;return typeof e.chamferAsymmetric==`function`?F(e.chamferAsymmetric(i,a,t,n)):(vp(`chamfer-asymmetric`,`chamferAsymmetric not available; using averaged distance.`),F(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):(vp(`chamfer-callback`,`chamferAsymmetric not available; asymmetric edges use averaged distance.`),s=e.chamfer(s,t.ids,(t.d1+t.d2)/2));return F(s)}function pg(e,t,n,r,i){let a=r*Math.tan(i*Math.PI/180),o=np(t,`chamferDistAngle`),s=n.map(e=>I(e,`edge`));return typeof e.chamferAsymmetric==`function`?F(e.chamferAsymmetric(o,s,r,a)):(vp(`chamfer-dist-angle`,`chamferAsymmetric not available; using averaged distance.`),F(e.chamfer(o,s,(r+a)/2)))}function mg(e,n){let r=L(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 hg(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 gg(e,t,n){try{let r=mg(e,t);if(r===null)return null;let i=-1,a=1/0;for(let t of n)try{let n=mg(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 _g(e,t,n,r){if(r.has(t))return t;let i=hg(e,t,n);if(i!==null)return i;let a=gg(e,t,n);return a===null?t:a}function vg(e,t,n,r,i){i!==void 0&&vp(`shell-tolerance`,`shell() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let a=np(t,`shell`),o=L(e.getSolidFaces(a)),s=new Set(o),c=n.map(t=>_g(e,I(t,`face`),o,s));return F(e.shell(a,r,c))}function yg(e,t,n){let r=t;if(r.type===`face`)return F(e.thicken(r.id,n));throw Error(`brepkit: thicken() requires a face`)}function bg(e,t,n,r){r!==void 0&&vp(`offset-tolerance`,`offset() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let i=t;if(i.type===`face`)return F(e.thicken(i.id,n));let a=np(t,`offset`);return F(e.offsetSolidV2(a,n))}function xg(e,t,n){let r=np(t,`filletVariable`);return F(e.filletVariable(r,n))}function Sg(e,t,n,r,i,a){let o=np(t,`draft`),s=n.map(e=>I(e,`face`));return F(e.draft(o,s,r[0],r[1],r[2],i[0],i[1],i[2],a))}function Cg(e,t,n){let r=np(t,`defeature`),i=n.map(e=>I(e,`face`));return F(e.defeature(r,i))}function wg(e){switch(e){case`arc`:case`tangent`:return`arc`;case`intersection`:return`intersection`;default:return`intersection`}}function Tg(e,n,r,i){if(typeof e.offsetWire2DWithJoin==`function`)return Qf(e.offsetWire2DWithJoin(I(n,`wire`),r,wg(i)));let a=Mp(e,n,`edge`);if(a.length===0)return n;let o=[];for(let n of a){let r=e.getEdgeVertices(I(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 Qf(e.makePolygonWire(c))}function Eg(e,t){if(t.type===`solid`)try{e.healSolid(I(t))}catch(e){console.warn(`brepkit: healing failed in simplify:`,e)}return t}function Dg(e,t){let n=t,r=e.reverseShape(n.id);return Yf(n.type,r)}function Og(e){return{fillet:(t,n,r)=>dg(e,t,n,r),chamfer:(t,n,r)=>fg(e,t,n,r),chamferDistAngle:(t,n,r,i)=>pg(e,t,n,r,i),shell:(t,n,r,i)=>vg(e,t,n,r,i),thicken:(t,n)=>yg(e,t,n),offset:(t,n,r)=>bg(e,t,n,r),filletVariable:(t,n)=>xg(e,t,n),draft:(t,n,r,i,a)=>Sg(e,t,n,r,i,Cp(n,a)),defeature:(t,n)=>Cg(e,t,n),offsetWire2D:(t,n,r)=>Tg(e,t,n,r),simplify:t=>Eg(e,t),reverseShape:t=>Dg(e,t)}}function kg(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=F(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 Ag(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 jg(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 Mg(e,t,n){try{return{hash:n,normal:e.getFaceNormal(t),centroid:jg(e,t)}}catch{return{hash:n,normal:[0,0,0],centroid:jg(e,t)}}}var Ng=.707,Pg=100,Fg=.05;function Ig(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<Ng)continue;let c=Ag(e.centroid,o.centroid);if(c>Pg)continue;let l=s-c/Pg;l>r&&(r=l),i.push({idx:a,score:l})}return{matches:i,bestScore:r}}function Lg(e,t){let n=1/0,r;for(let i of t){let t=Ag(e.centroid,i.centroid);t<n&&(n=t,r=i)}return r}function Rg(e,n,r,i,a,o,s,c){let l=n;if(l.type!==`solid`)return;let u=L(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(Mg(e,i,r[n]??i%a))}let p=i.map(t=>Mg(e,t,t%a)),m=new Set;for(let e of p){let{matches:n,bestScore:r}=Ig(e,f);if(n.length>0){for(let i of n)if(i.score>=r-Fg){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=Lg(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 zg(e,t,n,r,i,a,o,s){let c=new Set(s),l=new Map(a);Rg(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 Bg(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 Vg(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?zg(e,l,d,f,a,o,s,c):Bg(i,r,u,t,s,c)}else if(l)Rg(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 Hg(e,n,r,i,a,o){let s=n,c=new Map,l=new Map,u=new Set;if(s.type===`solid`){let n=L(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 Vg(e,n,d,r,i,c,l,u,o)}return{shape:n,evolution:{modified:c,generated:l,deleted:u}}}function Ug(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 Wg(e,t){let n=new Set;Ug(t.combinedModified,e.evolution.modified,e.evolution.deleted,n,t.combinedDeleted),Ug(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 Gg(e,t,n,r,i,a){let o=L(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=kg(a(t.id,e),i);s=n.shape,Wg(n,c)}return{shape:s,accum:c}}function Kg(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{...kg(o(u.id,d.id),i),diagnostics:l}}catch(e){if(!ah(e))throw e}if(d.type===`compound`){let{shape:n,accum:a}=Gg(e,t,d.id,r,i,o);return{shape:n,evolution:{modified:a.combinedModified,generated:a.combinedGenerated,deleted:a.combinedDeleted},diagnostics:l}}}return{...Hg(e,s(t,n,a),r,i,!1,t),diagnostics:l}}function qg(e,t,n,r,i,a,o){return Hg(e,Am(e,t,n,r,i),a,o,!0)}function Jg(e,t,n,r,i,a,o){return Hg(e,jm(e,t,n*180/Math.PI,a,o),r,i,!0)}function Yg(e,t,n,r,i,a){return Hg(e,Mm(e,t,n,r),i,a,!0)}function Xg(e,t,n,r,i,a){return Hg(e,Nm(e,t,n,r),i,a,!0)}function Zg(e,t,n,r,i,a,o){return Hg(e,Pm(e,t,n,r,i),a,o,!0)}function Qg(e,t,n,r,i,a){return Kg(e,t,n,r,i,a,(t,n)=>e.fuseWithEvolution(t,n),(t,n,r)=>ch(e,t,n,r),`fuseWithHistory`)}function $g(e,t,n,r,i,a){return Kg(e,t,n,r,i,a,(t,n)=>e.cutWithEvolution(t,n),(t,n,r)=>lh(e,t,n,r),`cutWithHistory`)}function e_(e,t,n,r,i,a){return Kg(e,t,n,r,i,a,(t,n)=>e.intersectWithEvolution(t,n),(t,n,r)=>uh(e,t,n,r),`intersectWithHistory`)}function t_(e,t,n,r,i,a){return Hg(e,dg(e,t,n,r),i,a,!1,t)}function n_(e,t,n,r,i,a){return Hg(e,fg(e,t,n,r),i,a,!1,t)}function r_(e,t,n,r,i,a,o){return Hg(e,vg(e,t,n,r,o),i,a,!1,t)}function i_(e,t,n,r,i){return Hg(e,yg(e,t,n),r,i,!1,t)}function a_(e,t,n,r,i,a){return Hg(e,bg(e,t,n,a),r,i,!1,t)}function o_(e,t,n,r,i,a,o,s){return Hg(e,Sg(e,t,n,r,i,a),o,s,!1,t)}function s_(e,t,n,r,i){return Hg(e,Hm(e,t,n),r,i,!0)}function c_(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=fp(e.type===`translate`?op(e.x,e.y,e.z):cp(e.angle,e.axis,e.center),n);return{handle:n,dispose:()=>{}}}function l_(e){return{translateWithHistory:(t,n,r,i,a,o)=>qg(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>Jg(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>Yg(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>Xg(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>Zg(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>Qg(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>$g(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>e_(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>t_(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>n_(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>r_(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>i_(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>a_(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>o_(e,t,n,r,i,Cp(n,a),o,s),applyComposedTransformWithHistory:(t,n,r,i)=>s_(e,t,n,r,i),composeTransform:t=>c_(e,t)}}function u_(e,t,n){let r=I(t),i=t,a=n.tolerance||.01,o=n.angularTolerance>0?n.angularTolerance:void 0,s;if(i.type===`solid`)s=p_(e,r,a,!!n.includeUVs,o);else if(i.type===`face`)s=v_(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 d_(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 f_(e,t){return!1}function p_(e,t,n,r,i){try{return m_(e,t,n,r,i)}catch(r){return console.warn(`brepkit: tessellateSolidGrouped failed (solidId=${t}), falling back to per-face:`,r),__(e,t,n,i)}}function m_(e,t,n,r,i){return typeof e.tessellateSolidGroupedBinary==`function`?h_(e,t,n,r,i,e.tessellateSolidGroupedBinary(t,n,i)):g_(e,t,n,r,i)}function h_(e,n,r,i,a,o){let s=o.positions,c=o.normals,l=o.indices,u=o.faceOffsets,d=L(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 g_(e,n,r,i,a){let o=e.tessellateSolidGrouped(n,r,a),s=JSON.parse(o),c=L(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 __(e,t,n,r){let i=L(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 v_(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 y_(e){return{mesh:(t,n)=>u_(e,t,n),meshEdges:(t,n,r)=>d_(e,t,n,r),hasTriangulation:t=>f_(e,t),meshShape:(e,t,n)=>{}}}function b_(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=rp(e,r,`exportSTEP`);for(let r of t){let t=e.exportStep(r);n.push(new TextDecoder().decode(t))}}return n.join(`
7
+ `).buffer}function Pr(e,t){return e.toBREP(E(t))}function Fr(e,t){return D(e,e.fromBREP(t))}function Ir(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 Lr(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 Rr(e,t,n,r){if(n.length===0)return``;let i=Ir(e,t,n.map(e=>({shape:e.shape,name:e.name??``,color:e.color})));try{return Lr(e,i)}finally{i.delete()}}function zr(e,t,n,r){return T(`vertex`,e.makeVertex(t,n,r))}function Br(e,t){throw Pe(t)?Error(`occt-wasm: makeEdge from curve handle is not implemented`):Error(`occt-wasm: makeEdge is not implemented`)}function Vr(e,t,n){let r=Ie(t,n.map(E));try{return T(`wire`,e.makeWire(r))}finally{r.delete()}}function Hr(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 Ur(e,t,n){return T(`face`,e.makeFace(E(t)))}function Wr(e,t,n){return T(`edge`,e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Gr(e,t,n,r){return T(`edge`,e.makeCircleEdge(t[0],t[1],t[2],n[0],n[1],n[2],r))}function Kr(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 qr(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 Jr(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 Yr(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 Xr(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 Zr(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 Qr(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 $r(e,t,n){let r=Ie(t,n.map(E));try{return T(`compound`,e.makeCompound(r))}finally{r.delete()}}function ei(e,t){return T(`solid`,e.solidFromShell(E(t)))}function ti(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 ni(e,t){return T(`face`,e.makeNonPlanarFace(E(t)))}function ri(e,t,n,r){let i=Ie(t,r.map(E));try{return T(`face`,e.addHolesInFace(E(n),i))}finally{i.delete()}}function ii(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 ai(e,t,n){let r=E(t);return T(`face`,e.makeFaceOnSurface(r,E(n)))}function oi(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 si(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 ci(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 li(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 ui(e,t,n){return{x:e,y:t,z:n,__type:`point3d`,delete:Ne}}function di(e,t,n){return{x:e,y:t,z:n,__type:`direction3d`,delete:Ne}}function fi(e,t,n){return{x:e,y:t,z:n,__type:`vector3d`,delete:Ne}}function pi(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 mi(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 hi(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 gi(e){return e}function _i(e){return e}function vi(e,t){return{x:e,y:t}}function yi(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 bi(e,t){return{x:e,y:t}}function xi(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete(){}}}function Si(e){return e}function Ci(e,t,n,r){return _i(te(e,t,n,r))}function wi(e,t,n,r){return _i(ne(e,t,n,r))}function Ti(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 _i(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),_i({__bk2d:`trimmed`,basis:g,tStart:e,tEnd:t})}let _=f;return _<u-1e-9&&(_+=2*Math.PI),_i({__bk2d:`trimmed`,basis:g,tStart:u,tEnd:_})}function Ei(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 _i(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),_i({__bk2d:`trimmed`,basis:x,tStart:e,tEnd:t})}let S=_;return S<g-1e-9&&(S+=2*Math.PI),_i({__bk2d:`trimmed`,basis:x,tStart:g,tEnd:S})}function Di(e,t,n,r,i,a,o){return _i(ae(e,t,n,r,i??1,a??0,o??!0))}function Oi(e,t,n,r,i,a,o,s,c){return _i({...ae(e,t,n,r,o??1,s??0,c??!0),__bk2d:`ellipse`,startAngle:i,endAngle:a})}function ki(e){return _i(oe(e))}function Ai(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),_i({__bk2d:`bspline`,poles:n,knots:a,multiplicities:o,degree:i,isPeriodic:!1})}function ji(e,t){return S(gi(e),t)}function Mi(e,t){return{point:S(gi(e),t),tangent:C(gi(e),t)}}function Ni(e){return w(gi(e))}function Pi(e){let t=gi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return ee(t)}function Fi(e,t,n){return _i({__bk2d:`trimmed`,basis:gi(e),tStart:t,tEnd:n})}function Ii(e){return _i(JSON.parse(JSON.stringify(gi(e))))}function Li(e,t){let n=gi(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 _i(oe(i.length<=25?i:i.filter((e,t)=>t%2==0||t===i.length-1)))}function Ri(e,t,n){return _i(se(gi(e),t,n))}function zi(e,t,n,r){return _i(ce(gi(e),t,n,r))}function Bi(e,t,n,r){return _i(le(gi(e),t,n,r))}function Vi(e,t,n){return _i(ue(gi(e),t,n))}function Hi(e,t,n,r,i){return _i(de(gi(e),t,n,r,i))}function Ui(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=gi(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 _i(oe(v))}function Wi(e,t,n,r,i,a){return Ui(e,t,n,r,i,a)}function Gi(){return{type:`identity2d`,delete(){}}}function Ki(e,t,n,r,i){return{type:`affinity2d`,axOriginX:e,axOriginY:t,axDirX:n,axDirY:r,ratio:i,delete(){}}}function qi(e,t){return{type:`translate2d`,dx:e,dy:t,delete(){}}}function Ji(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 Yi(e,t,n){return{type:`rotate2d`,angle:e,cx:t,cy:n,delete(){}}}function Xi(e,t,n){return{type:`scale2d`,sx:e,sy:e,cx:t,cy:n,delete(){}}}function Zi(e,t,n){let r=e;r.dx=(Number(r.dx)||0)+t,r.dy=(Number(r.dy)||0)+n}function Qi(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 $i(e,t){let n=t;return n.type===`translate2d`?Ri(e,Number(n.dx)||0,Number(n.dy)||0):n.type===`rotate2d`?zi(e,Number(n.angle)||0,Number(n.cx)||0,Number(n.cy)||0):n.type===`scale2d`?Bi(e,Number(n.sx)||1,Number(n.cx)||0,Number(n.cy)||0):n.type===`mirror2d`?Vi(e,Number(n.ox)||0,Number(n.oy)||0):n.type===`affinity2d`?Ui(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)?Ri(e,Number(n.dx)||0,Number(n.dy)||0):e}function ea(e,t,n){let r=fe(gi(e),gi(t),n);return{points:r.points,segments:r.segments.map(e=>_i(e))}}function ta(e,t,n){let r=gi(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 na(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(gi(e),c);for(let e=0;e<=20;e++){let n=i+(a-i)*(e/20),[r,s]=S(gi(t),n),c=Math.sqrt((r-l)**2+(s-u)**2);c<o&&(o=c)}}return o}function ra(e,t){let n=gi(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),_i({__bk2d:`bspline`,poles:a,knots:c,multiplicities:l,degree:o,isPeriodic:!1})}function ia(e){let t=gi(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[_i(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=>_i(oe(e)))}function aa(){return Ce()}function oa(e,t,n){we(e,gi(t),n)}function sa(e){return{xMin:e.xMin,yMin:e.yMin,xMax:e.xMax,yMax:e.yMax}}function ca(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 la(e,t){return e.xMax<t.xMin||e.xMin>t.xMax||e.yMax<t.yMin||e.yMin>t.yMax}function ua(e,t,n){return t<e.xMin||t>e.xMax||n<e.yMin||n>e.yMax}function da(e){let t=gi(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 fa(e){let t=gi(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 pa(e){let t=gi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles:null}function ma(e){let t=gi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles.length-1:null}function ha(e){return xe(gi(e))}function ga(e){return _i(Se(e))}function _a(e,t){let n=w(gi(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(Fi(e,a,o))}return i}function va(e,t,n,r,i,a){let o=gi(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 ya(e,t,n,r){let i=gi(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 ba(e){return e}function xa(e,t,n){let[r,i]=Vt(e,t),a=[];for(let o=0;o<=60;o++){let s=vn(e,n,Ht(e,t,r+(i-r)*o/60));s&&a.push(s)}if(a.length<2)throw Error(`occt-wasm: extractCurve2dFromEdge could not project the edge onto the face surface`);return Ai(a)}function Sa(e,t){e.buildCurves3d(E(t))}function Ca(e,t,n,r){return T(`wire`,e.fixWireOnFace(E(t),E(n),r))}function wa(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 Ta(e,t,n,r,i,a,o,s){let c=Le(t,o);try{let{id:t,evolution:o}=wa(e.translateWithHistory(E(n),r,i,a,c,s));return{shape:D(e,t),evolution:o}}finally{c.delete()}}function Ea(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}=wa(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 Da(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=wa(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 Oa(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=wa(e.scaleWithHistory(E(n),r[0],r[1],r[2],i,s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function ka(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 Aa(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=wa(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 ja(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=wa(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 Ma(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=wa(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 Na(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}=wa(e.filletWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Pa(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}=wa(e.chamferWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Fa(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}=wa(e.shellWithHistory(E(n),c,i,s??.001,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Ia(e,t,n,r,i,a){let o=Le(t,i);try{let{id:t,evolution:i}=wa(e.thickenWithHistory(E(n),r,.001,o,a));return{shape:D(e,t),evolution:i}}finally{o.delete()}}function La(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=wa(e.offsetWithHistory(E(n),r,o??1e-6,s,a));return{shape:D(e,t),evolution:i}}finally{s.delete()}}function Ra(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 za(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 Ba(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 ti(e,t,[...i],[...a],r)}function Va(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 Ha(e,t,n,r){if(n.length===0)throw Error(`hull: no shapes provided`);let i=Va(e,t,n,r);if(i.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);return Ba(e,t,i,r)}function Ua(e){throw new c(`occt-wasm: ${e} is not yet implemented`)}var Wa=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){Ua(`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 zr(this.k,e,t,n)}makeEdge(e,t,n){return Br(this.k,e)}makeWire(e){return Vr(this.k,this.Module,e)}makeFace(e,t){return Ur(this.k,e,t)}makeLineEdge(e,t){return Wr(this.k,e,t)}makeCircleEdge(e,t,n){return Gr(this.k,e,t,n)}makeCircleArc(e,t,n,r,i){return Kr(this.k,e,t,n,r,i)}makeArcEdge(e,t,n){return qr(this.k,e,t,n)}makeEllipseEdge(e,t,n,r,i){return Jr(this.k,e,t,n,r)}makeEllipseArc(e,t,n,r,i,a,o){return Yr(this.k,e,t,n,r,i,a)}makeBezierEdge(e){return Xr(this.k,this.Module,e)}makeTangentArc(e,t,n){return Zr(this.k,e,t,n)}makeHelixWire(e,t,n,r,i,a){return Qr(this.k,e,t,n,r,i)}makeWireFromMixed(e){return Hr(this.k,this.Module,e)}makeCompound(e){return $r(this.k,this.Module,e)}solidFromShell(e){return ei(this.k,e)}hull(e,t){return Ha(this.k,this.Module,e,t)}hullFromPoints(e,t){return Ba(this.k,this.Module,e,t)}buildSolidFromFaces(e,t,n){return ti(this.k,this.Module,e,t,n)}makeNonPlanarFace(e){return ni(this.k,e)}addHolesInFace(e,t){return ri(this.k,this.Module,e,t)}removeHolesFromFace(e){return ii(this.k,this.Module,e)}makeFaceOnSurface(e,t){return ai(this.k,e,t)}bsplineSurface(e,t,n){return oi(this.k,this.Module,e,t,n)}triangulatedSurface(e,t,n){return si(this.k,this.Module,e,t,n)}buildTriFace(e,t,n){return ci(this.k,e,t,n)}sewAndSolidify(e,t){return li(this.k,this.Module,e,t)}createPoint3d(e,t,n){return ui(e,t,n)}createDirection3d(e,t,n){return di(e,t,n)}createVector3d(e,t,n){return fi(e,t,n)}createAxis1(e,t,n,r,i,a){return pi(e,t,n,r,i,a)}createAxis2(e,t,n,r,i,a,o,s,c){return mi(e,t,n,r,i,a,o,s,c)}createAxis3(e,t,n,r,i,a,o,s,c){return hi(e,t,n,r,i,a,o,s,c)}extrude(e,t,n){return $n(this.k,e,t,n)}revolve(e,t,n){return er(this.k,e,t,n)}loft(e,t,n,r){return tr(this.k,this.Module,e,t,n,r)}sweep(e,t,n){return nr(this.k,e,t,n)}simplePipe(e,t){return rr(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){Ua(`sweepWithOptions`)}sweepPipeShell(e,t,n){return ir(this.k,e,t,n)}loftAdvanced(e,t){return ar(this.k,this.Module,e,t)}buildExtrusionLaw(e,t,n){return or(this.k,e,t,n)}revolveVec(e,t,n,r){return sr(this.k,e,t,n,r)}draftPrism(e,t,n,r,i,a){return cr(this.k,e,t,n,r,i,a)}fillet(e,t,n){return Vn(this.k,this.Module,e,t,n)}chamfer(e,t,n){return Hn(this.k,this.Module,e,t,n)}chamferDistAngle(e,t,n,r){return Un(this.k,this.Module,e,t,n,r)}shell(e,t,n,r){return Wn(this.k,this.Module,e,t,n,r)}thicken(e,t){return Gn(this.k,e,t)}offset(e,t,n){return Kn(this.k,e,t,n)}filletVariable(e,t){return qn(this.k,e,t)}draft(e,t,n,r,i){return Jn(this.k,e,t,n,r,i)}defeature(e,t){return Yn(this.k,this.Module,e,t)}offsetWire2D(e,t,n){return Xn(this.k,e,t,n)}simplify(e){return Zn(this.k,e)}reverseShape(e){return Qn(this.k,e)}composeTransform(e){return lr(e)}transform(e,t){return dr(this.k,this.Module,e,t)}locate(e,t){return fr(this.k,this.Module,e,t)}translate(e,t,n,r){return pr(this.k,e,t,n,r)}rotate(e,t,n,r){return mr(this.k,e,t,n,r)}mirror(e,t,n){return hr(this.k,e,t,n)}scale(e,t,n){return gr(this.k,e,t,n)}generalTransform(e,t,n,r){return _r(this.k,this.Module,e,t,n,r)}generalTransformNonOrthogonal(e,t,n){return _r(this.k,this.Module,e,t,n,!1)}positionOnCurve(e,t,n){return vr(this.k,this.Module,e,t,n)}linearPattern(e,t,n,r){return yr(this.k,e,t,n,r)}circularPattern(e,t,n,r,i){return br(this.k,e,t,n,r,i)}transformBatch(e){return xr(this.k,e)}translateWithHistory(e,t,n,r,i,a){return Ta(this.k,this.Module,e,t,n,r,i,a)}rotateWithHistory(e,t,n,r,i,a){return Ea(this.k,this.Module,e,t,n,r,i,a)}mirrorWithHistory(e,t,n,r,i){return Da(this.k,this.Module,e,t,n,r,i)}scaleWithHistory(e,t,n,r,i){return Oa(this.k,this.Module,e,t,n,r,i)}generalTransformWithHistory(e,t,n,r,i,a){return ka((e,t,n,r)=>this.generalTransform(e,t,n,r),e,t,n,r,i)}fuseWithHistory(e,t,n,r,i){return Aa(this.k,this.Module,e,t,n,r,i)}cutWithHistory(e,t,n,r,i){return ja(this.k,this.Module,e,t,n,r,i)}intersectWithHistory(e,t,n,r,i){return Ma(this.k,this.Module,e,t,n,r,i)}filletWithHistory(e,t,n,r,i){return Na(this.k,this.Module,e,t,n,r,i)}chamferWithHistory(e,t,n,r,i){return Pa(this.k,this.Module,e,t,n,r,i)}shellWithHistory(e,t,n,r,i,a){return Fa(this.k,this.Module,e,t,n,r,i,a)}thickenWithHistory(e,t,n,r){return Ia(this.k,this.Module,e,t,n,r)}offsetWithHistory(e,t,n,r,i){return La(this.k,this.Module,e,t,n,r,i)}draftWithHistory(e,t,n,r,i,a,o){return Ra(this.k,e,t,n,i)}applyComposedTransformWithHistory(e,t,n,r){return za((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 Pt(this.k,this.Module,e,t)}meshEdges(e,t,n){return It(this.k,this.Module,e,t,n)}hasTriangulation(e){return Lt(this.k,e)}meshShape(e,t,n){Rt(this.k,e,t,n)}exportSTEP(e){return wr(this.k,this.makeCompound.bind(this),e)}exportSTL(e,t,n,r){return Tr(this.mesh.bind(this),e,t,n,r)}importSTEP(e){return Er(this.k,e)}importSTL(e){return Dr(this.k,this.Module,e)}exportIGES(e){return Or(this.k,this.makeCompound.bind(this),e)}importIGES(e){return kr(this.k,e)}exportSTEPAssembly(e,t){return Ar(this.k,this.Module,e,t)}export3MF(e,t){throw Error(`export3MF is only available with the brepkit kernel`)}exportGLB(e,t){return jr(this.mesh.bind(this),e,t)}exportOBJ(e,t){return Mr(this.mesh.bind(this),e,t)}exportPLY(e,t){return Nr(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 Pr(this.k,e)}fromBREP(e){return Fr(this.k,e)}createXCAFDocument(e){return Ir(this.k,this.Module,e)}writeXCAFToSTEP(e,t){return Lr(this.k,e,t)}exportSTEPConfigured(e,t){return Rr(this.k,this.Module,e,t)}volume(e){return Sn(this.k,e)}area(e){return Cn(this.k,e)}length(e){return wn(this.k,e)}centerOfMass(e){return Tn(this.k,e)}linearCenterOfMass(e){return En(this.k,e)}boundingBox(e){return Dn(this.k,e)}distance(e,t){return Nn(this.k,this.Module,e,t)}surfaceCurvature(e,t,n){return Bn(this.k,e,t,n)}surfaceCenterOfMass(e){return On(this.k,e)}measureBulk(e,t){return kn(this.k,e,t)}createDistanceQuery(e){return An(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)}subShapeCount(e,t){return bt(this.k,e,t)}subShapeHashes(e,t,n){return xt(this.k,e,t,n)}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 St(this.k,e,t)}adjacentFaces(e,t){return Ct(this.k,e,t)}sew(e,t){return wt(this.k,this.Module,e,t)}curveType(e){return Bt(this.k,e)}curveParameters(e){return Vt(this.k,e)}curvePointAtParam(e,t){return Ht(this.k,e,t)}curveTangent(e,t){return Ut(this.k,e,t)}curveIsClosed(e){return Wt(this.k,e)}curveIsPeriodic(e){return Gt(this.k,e)}curvePeriod(e){return Kt(this.k,e)}interpolatePoints(e,t){return qt(this.k,this.Module,e,t)}approximatePoints(e,t){return Jt(this.k,this.Module,e,t)}curveDegreeElevate(e,t){return Yt(this.k,e,t)}curveKnotInsert(e,t,n){return Xt(this.k,e,t,n)}curveKnotRemove(e,t,n){return Zt(this.k,e,t,n)}curveSplit(e,t){return Qt(this.k,e,t)}getBezierPenultimatePole(e){return $t(this.k,e)}createCurveAdaptor(e){Ua(`createCurveAdaptor`)}vertexPosition(e){return tn(this.k,e)}surfaceType(e){return nn(this.k,e)}uvBounds(e){return rn(this.k,e)}outerWire(e){return an(this.k,e)}surfaceNormal(e,t,n){return on(this.k,e,t,n)}pointOnSurface(e,t,n){return sn(this.k,e,t,n)}uvFromPoint(e,t){return vn(this.k,e,t)}projectPointOnFace(e,t){return yn(this.k,e,t)}classifyPointOnFace(e,t,n,r){return bn(this.k,e,t,n,r)}classifyPointRobust(e,t,n){Ua(`classifyPointRobust`)}classifyPointWinding(e,t,n){Ua(`classifyPointWinding`)}approximateSurfaceLspia(e,t,n,r,i,a,o,s,c){Ua(`approximateSurfaceLspia`)}untrimFace(e,t,n){Ua(`untrimFace`)}getSurfaceCylinderData(e){return _n(this.k,e)}getSurfaceAxis(e){return gn(this.k,e)}reverseSurfaceU(e){Ua(`reverseSurfaceU`)}detectSmallFeatures(e,t,n){Ua(`detectSmallFeatures`)}recognizeFeatures(e,t){Ua(`recognizeFeatures`)}projectEdges(e,t,n,r){return xn(this.k,this.Module,e,t,n,r)}isValid(e){return Et(this.k,e)}healSolid(e){return Dt(this.k,e)}healFace(e){return Ot(this.k,e)}healWire(e,t){return kt(this.k,e,t)}mergeCoincidentVertices(e,t){return At(this.k,e,t)}removeDegenerateEdges(e,t){return jt(this.k,e,t)}fixFaceOrientations(e){return Mt(this.k,e)}fixShape(e){return Nt(this.k,e)}fixSelfIntersection(e){Ua(`fixSelfIntersection`)}createPoint2d(e,t){return vi(e,t)}createDirection2d(e,t){return yi(e,t)}createVector2d(e,t){return bi(e,t)}createAxis2d(e,t,n,r){return xi(e,t,n,r)}wrapCurve2dHandle(e){return Si(e)}createCurve2dAdaptor(e){Ua(`createCurve2dAdaptor`)}makeLine2d(e,t,n,r){return Ci(e,t,n,r)}makeCircle2d(e,t,n,r){return wi(e,t,n,r)}makeArc2dThreePoints(e,t,n,r,i,a){return Ti(e,t,n,r,i,a)}makeArc2dTangent(e,t,n,r,i,a){return Ei(e,t,n,r,i,a)}makeEllipse2d(e,t,n,r,i,a,o){return Di(e,t,n,r,i,a,o)}makeEllipseArc2d(e,t,n,r,i,a,o,s,c){return Oi(e,t,n,r,i,a,o,s,c)}makeBezier2d(e){return ki(e)}makeBSpline2d(e,t){return Ai(e)}evaluateCurve2d(e,t){return ji(e,t)}evaluateCurve2dD1(e,t){return Mi(e,t)}getCurve2dBounds(e){return Ni(e)}getCurve2dType(e){return Pi(e)}trimCurve2d(e,t,n){return Fi(e,t,n)}reverseCurve2d(e){}copyCurve2d(e){return Ii(e)}offsetCurve2d(e,t){return Li(e,t)}translateCurve2d(e,t,n){return Ri(e,t,n)}rotateCurve2d(e,t,n,r){return zi(e,t,n,r)}scaleCurve2d(e,t,n,r){return Bi(e,t,n,r)}mirrorCurve2dAtPoint(e,t,n){return Vi(e,t,n)}mirrorCurve2dAcrossAxis(e,t,n,r,i){return Hi(e,t,n,r,i)}affinityTransform2d(e,t,n,r,i,a){return Wi(e,t,n,r,i,a)}createIdentityGTrsf2d(){return Gi()}createAffinityGTrsf2d(e,t,n,r,i){return Ki(e,t,n,r,i)}createTranslationGTrsf2d(e,t){return qi(e,t)}createMirrorGTrsf2d(e,t,n,r,i,a,o){return Ji(e,t,n,r,i,a,o)}createRotationGTrsf2d(e,t,n){return Yi(e,t,n)}createScaleGTrsf2d(e,t,n){return Xi(e,t,n)}setGTrsf2dTranslationPart(e,t,n){Zi(e,t,n)}multiplyGTrsf2d(e,t){Qi(e,t)}transformCurve2dGeneral(e,t){return $i(e,t)}intersectCurves2d(e,t,n){return ea(e,t,n)}projectPointOnCurve2d(e,t,n){return ta(e,t,n)}distanceBetweenCurves2d(e,t,n,r,i,a){return na(e,t,n,r,i,a)}approximateCurve2dAsBSpline(e,t,n,r){return ra(e,r)}decomposeBSpline2dToBeziers(e){return ia(e)}createBoundingBox2d(){return aa()}addCurveToBBox2d(e,t,n){oa(e,t,n)}getBBox2dBounds(e){return sa(e)}mergeBBox2d(e,t){ca(e,t)}isBBox2dOut(e,t){return la(e,t)}isBBox2dOutPoint(e,t,n){return ua(e,t,n)}getCurve2dCircleData(e){return da(e)}getCurve2dEllipseData(e){return fa(e)}getCurve2dBezierPoles(e){return pa(e)}getCurve2dBezierDegree(e){return ma(e)}getCurve2dBSplineData(e){Ua(`getCurve2dBSplineData`)}serializeCurve2d(e){return ha(e)}deserializeCurve2d(e){return ga(e)}splitCurve2d(e,t){return _a(e,t)}liftCurve2dToPlane(e,t,n,r){return va(this.k,this.Module,e,t,n,r)}buildEdgeOnSurface(e,t){return ya(this.k,this.Module,e,t)}extractSurfaceFromFace(e){return ba(e)}extractCurve2dFromEdge(e,t){return xa(this.k,e,t)}buildCurves3d(e){Sa(this.k,e)}fixWireOnFace(e,t,n){return Ca(this.k,e,t,n)}fillSurface(e,t){Ua(`fillSurface`)}getNurbsCurveData(e){return en(this.k,e)}};function O(e){return{ok:!0,value:e}}function k(e){return{ok:!1,error:e}}var Ga=O(void 0);function Ka(e){return e.ok}function A(e){return!e.ok}function qa(e,t){return e.ok?O(t(e.value)):e}function Ja(e,t){return e.ok?e:k(t(e.error))}function Ya(e,t){return e.ok?t(e.value):e}var Xa=Ya;function Za(e,t){return e.ok?e:t}function Qa(e,t){return e.ok?e:t(e.error)}function $a(e,t){return e.ok?t.ok?O([e.value,t.value]):t:e}var eo=fo;function to(e,t){return e.ok&&t(e.value),e}function no(e,t){return e.ok||t(e.error),e}function ro(e){return e.ok?e.value:e}function io(e,t,n){return e.ok?O(t(e.value)):k(n(e.error))}function ao(e,t){return e==null?k(t()):O(e)}function oo(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: ${oo(e.error)}`)}function so(e,t){return e.ok?e.value:t}function co(e,t){return e.ok?e.value:t(e.error)}function lo(e){if(!e.ok)return e.error;throw Error(`Called unwrapErr() on an Ok: ${String(e.value)}`)}function uo(e,t){return e.ok?t.ok(e.value):t.err(e.error)}function fo(e){let t=[];for(let n of e){if(!n.ok)return n;t.push(n.value)}return O(t)}function po(e,t){try{return O(e())}catch(e){return k(t(e))}}async function mo(e,t){try{return O(await e())}catch(e){return k(t(e))}}function ho(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 go=[{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.`}],_o={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 vo(e){return _o[e]}function yo(e){for(let{pattern:t,translation:n}of go)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 bo(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 bo(`KERNEL_OPERATION`,e,t,n,r,i)}function P(e,t,n,r,i){return bo(`VALIDATION`,e,t,n,r,i)}function xo(e,t,n,r,i){return bo(`TYPE_CAST`,e,t,n,r,i)}function So(e,t,n,r,i){return bo(`SKETCHER_STATE`,e,t,n,r,i)}function Co(e,t,n,r,i){return bo(`MODULE_INIT`,e,t,n,r,i)}function wo(e,t,n,r,i){return bo(`COMPUTATION`,e,t,n,r,i)}function To(e,t,n,r,i){return bo(`IO`,e,t,n,r,i)}function Eo(e,t,n,r,i){return bo(`QUERY`,e,t,n,r,i)}function Do(e,t,n,r,i){return bo(`UNSUPPORTED`,e,t,n,r,i)}function Oo(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 ko={draft:{tolerance:.01,angularTolerance:.5},standard:{tolerance:.001,angularTolerance:.1},fine:{tolerance:1e-4,angularTolerance:.05}},Ao=`standard`;function jo(){return Ao}function Mo(e=Ao){return ko[e]}function No(e){Ao=e}function Po(e){return`makeLine2d`in e}var Fo=[`boolean`,`loft`,`extrude`,`shell`,`fillet`,`mesh`,`edgeMesh`,`transform`],Io=Object.create(null),Lo=Object.create(null);function Ro(){for(let e of Fo)Io[e]=0,Lo[e]=0}Ro();function zo(e){let t=performance.now();return()=>{Io[e]=(Io[e]??0)+(performance.now()-t),Lo[e]=(Lo[e]??0)+1}}function Bo(){let e={};for(let t of Fo)e[t]={totalMs:Io[t]??0,count:Lo[t]??0};return e}function Vo(){Ro()}var Ho;function Uo(){Ho=void 0}function Wo(e){return Ho??=typeof e.BooleanBatch==`function`,Ho}function Go(e){return e===`commonFace`?1:e===`sameFace`?2:0}function Ko(e,t,n={}){if(!Wo(e))return null;let r=zo(`boolean`),i=new e.BooleanBatch;try{for(let e of t)i.addShape(e);return i.fuseAll(Go(n.optimisation),!!n.simplify,n.fuzzyValue??0)}finally{i.delete(),r()}}function qo(e,t,n,r={}){if(!Wo(e))return null;if(n.length===0)return t;let i=zo(`boolean`),a=new e.BooleanBatch;try{for(let e of n)a.addShape(e);return a.cutAll(t,Go(r.optimisation),!!r.simplify,r.fuzzyValue??0)}finally{a.delete(),i()}}var Jo=2147483647,Yo;function Xo(){Yo=void 0}function Zo(e){return Yo??=typeof e.MeasurementExtractor?.extract==`function`,Yo}function Qo(e,t,n=!1){if(Zo(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:$o(e,t),area:es(e,t),length:n?ts(e,t):0,centerOfMass:ns(e,t),boundingBox:is(e,t)}}function $o(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 es(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 ts(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 ns(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 rs(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 is(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 as(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 os(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 ss(e){return{volume:t=>$o(e,t),area:t=>es(e,t),length:t=>ts(e,t),centerOfMass:t=>ns(e,t),linearCenterOfMass:t=>rs(e,t),boundingBox:t=>is(e,t),distance:(t,n)=>as(e,t,n),classifyPointOnFace:(t,n,r,i)=>os(e,t,n,r,i),measureBulk:(t,n)=>Qo(e,t,n)}}var cs={vertex:7,edge:6,wire:5,face:4,shell:3,solid:2,compsolid:1,compound:0};function ls(e,t,n){let r=e.TopologyExtractor.extract(t,cs[n]),i=r.getShapesCount(),a=[];for(let e=0;e<i;e++)a.push(r.getShape(e));return r.delete(),a}var us=new WeakMap;function ds(e,t,n){let r=us.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},us.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,Jo),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 fs(e,t,n){return e.TopologyExtractor?ls(e,t,n):ds(e,t,n)}var ps=new WeakMap;function ms(e){let t=ps.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`]]),ps.set(e,t)}return t}function hs(e,t){if(t.IsNull())throw Error(`Cannot determine shape type: shape is null`);let n=ms(e).get(t.ShapeType());if(!n)throw Error(`Unknown shape type enum value`);return n}function gs(e,t){let n=new e.BRepCheck_Analyzer(t,!0,!1,!1),r=n.IsValid_2();return n.delete(),r}function _s(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 vs(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 ys(e,t){return e.IsSame(t)}function bs(e,t){return e.IsEqual(t)}function xs(e){return{iterShapes:(t,n)=>fs(e,t,n),iterShapeList:(t,n)=>{vs(e,t,n)},shapeType:t=>hs(e,t),isSame:(e,t)=>ys(e,t),isEqual:(e,t)=>bs(e,t),isValid:t=>gs(e,t),sew:(t,n)=>_s(e,t,n)}}var Ss=.001;function Cs(e,t,n){n===`commonFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueShift),n===`sameFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueFull)}function ws(e,t){e.SetRunParallel(!0),e.SetUseOBB?.(!0),t!==void 0&&t>0&&e.SetFuzzyValue?.(t)}function Ts(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 Es(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 Ds(e,t,n,r={}){let i=zo(`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);Cs(e,c,i),ws(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ss);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Os(e,t,n,r={}){let i=zo(`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);Cs(e,c,i),ws(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ss);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function ks(e,t,n,r={}){let i=zo(`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);Cs(e,c,i),ws(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ss);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function As(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),ws(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 js(e,t,n={}){let r=Ko(e,t,n);if(r!==null)return r;let i=zo(`boolean`);try{let{optimisation:r,simplify:i=!1}=n,a=n.fuzzyValue??Ts(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),Cs(e,s,r),ws(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 Ms(e,n,r,i,a){a.signal?.throwIfAborted();let o=i-r;if(o===1)return t(n,r);if(o===2)return Ds(e,n[r],n[r+1],{...a,simplify:!1});let s=r+Math.ceil(o/2);return Ds(e,Ms(e,n,r,s,a),Ms(e,n,s,i,a),{...a,simplify:!1})}function Ns(e,t,n={}){let r=Ms(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 Ps(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`?Ns(e,n,r):js(e,n,r)}function Fs(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),ws(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 Is(e,t,n,r={}){if(n.length===0)return t;let i=qo(e,t,n,r);if(i!==null)return i;let a=Es(e,n),o=Os(e,t,a,r);return a.delete(),o}function Ls(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 Rs(e){return{fuse:(t,n,r)=>Ds(e,t,n,r),cut:(t,n,r)=>Os(e,t,n,r),intersect:(t,n,r)=>ks(e,t,n,r),section:(t,n,r)=>As(e,t,n,r),fuseAll:(t,n)=>Ps(e,t,n),cutAll:(t,n,r)=>Is(e,t,n,r),split:(t,n)=>Fs(e,t,n),checkBoolean:(t,n,r)=>Ls(e,t,n,r,t=>gs(e,t))}}var zs={fuse:0,cut:1,intersect:2};function Bs(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(zs[e.op],e.tool);let e=r.execute(t,i,a);return e.IsNull()?null:e}finally{r.delete()}}}function Vs(e){return{booleanPipeline:(t,n,r)=>Bs(e,t,n,r)??null}}function Hs(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 Us(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 Ws(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 Gs(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=fs(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 Ks(e,t,n,r){let i=new e.BRepPrimAPI_MakeBox_2(t,n,r),a=i.Solid();return i.delete(),a}function qs(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 Js(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 Ys(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 Xs(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 Zs(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 Qs(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 $s(e){return{makeVertex:(t,n,r)=>Hs(e,t,n,r),makeEdge:(t,n,r)=>Us(e,t,n,r),makeWire:t=>Ws(e,t),makeWireFromMixed:t=>Zs(e,t),makeFace:(t,n)=>Gs(e,t,n),makeBox:(t,n,r)=>Ks(e,t,n,r),makeCylinder:(t,n,r,i)=>qs(e,t,n,r,i),makeSphere:(t,n)=>Js(e,t,n),makeCone:(t,n,r,i,a)=>Ys(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Qs(e,t,n,r,i),buildTriFace:(t,n,r)=>Xs(e,t,n,r)}}function ec(e,t){let n=e[t];if(n===void 0)throw Error(`Index ${t} out of bounds`);return n}function tc(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 nc(e,t,n){let{faces:r,points:i}=t,a=[];for(let[t,n,o]of r){let r=ec(i,t),s=ec(i,n),c=ec(i,o),l=Xs(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 rc(e,t,n){if(t.length===0)throw Error(`hull: no shapes provided`);let r=tc(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 nc(e,i,n)}function ic(e,t,n,r){return nc(e,{points:t,faces:n},r)}function ac(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 nc(e,r,n)}function oc(e){return{hull:(t,n)=>rc(e,t,n),hullFromPoints:(t,n)=>ac(e,t,n),buildSolidFromFaces:(t,n,r)=>ic(e,t,n,r)}}function sc(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 cc(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 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=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 uc(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 dc(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 fc(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 pc(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 mc(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 hc(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 gc(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 _c(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=gc(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 vc(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 yc(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 bc(e,t){let n=new e.ShapeFix_Solid_1,r=n.SolidFromShell(e.TopoDS_Cast.Shell(t));return n.delete(),r}function xc(e,t){return e.BRepToolsWrapper.Write(t)}function Sc(e,t){return e.BRepToolsWrapper.Read(t)}function Cc(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 wc(e,t){try{t.delete()}catch{}}function Tc(e,t,n){let r=sc(e,[0,0,0],[t,0,0]),i=sc(e,[t,0,0],[t,n,0]),a=sc(e,[t,n,0],[0,n,0]),o=sc(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 Ec(e,t,n,r){return new e.gp_Pnt_3(t,n,r)}function Dc(e,t,n,r){return new e.gp_Dir_5(t,n,r)}function Oc(e,t,n,r){return new e.gp_Vec_4(t,n,r)}function kc(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 Ac(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 jc(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 Mc(e){return{makeLineEdge:(t,n)=>sc(e,t,n),makeCircleEdge:(t,n,r)=>cc(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>lc(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>uc(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>fc(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>pc(e,t,n,r,i,a,o,s),makeBezierEdge:t=>mc(e,t),makeTangentArc:(t,n,r)=>dc(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>hc(e,t,n,r,i,a,o),makeCompound:t=>vc(e,t),makeBoxFromCorners:(t,n)=>yc(e,t,n),makeRectangle:(t,n)=>Tc(e,t,n),solidFromShell:t=>bc(e,t),makeEllipsoid:(t,n,r)=>_c(e,t,n,r),toBREP:t=>xc(e,t),fromBREP:t=>Sc(e,t),exportSTEPAssembly:(t,n)=>Cc(e,t,n??{}),dispose:t=>{wc(e,t)},createPoint3d:(t,n,r)=>Ec(e,t,n,r),createDirection3d:(t,n,r)=>Dc(e,t,n,r),createVector3d:(t,n,r)=>Oc(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>kc(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>Ac(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>jc(e,t,n,r,i,a,o,s,c,l)}}function Nc(e,t,n,r){let i=zo(`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 Pc(e,t,n,r){let i=new e.BRepPrimAPI_MakeRevol_1(t,n,r,!1),a=i.Shape();return i.delete(),a}function Fc(e,t,n=!1,r,i){let a=zo(`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 Ic(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 Lc(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 Rc,zc;function Bc(){Rc=void 0}function Vc(){zc=void 0}function Hc(e){return Rc??=typeof e.LoftBatch==`function`,Rc}function Uc(e){return zc??=typeof e.ExtrudeBatch==`function`,zc}function Wc(e,t){if(t.length===0)return[];if(Hc(e)){let n=zo(`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=>Fc(e,t.wires,t.ruled??!1,t.startVertex,t.endVertex))}function Gc(e,t){if(t.length===0)return[];if(Uc(e)){let n=zo(`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=>Nc(e,t.face,t.direction,t.length))}function Kc(e){return{extrude:(t,n,r)=>Nc(e,t,n,r),revolve:(t,n,r)=>Pc(e,t,n,r),loft:(t,n,r,i)=>Fc(e,t,n,r,i),sweep:(t,n,r)=>Ic(e,t,n,r??{}),simplePipe:(t,n)=>Lc(e,t,n),loftBatch:t=>Wc(e,t),extrudeBatch:t=>Gc(e,t)}}function qc(e,t,n,r){let i=zo(`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 Jc(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 Yc(e,t,n,r,i=.001){let a=zo(`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 Xc(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 Zc(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 Qc(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 $c(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 el,tl;function nl(){el=void 0}function rl(){tl=void 0}function il(e){return el??=typeof e.ShellBatch==`function`,el}function al(e){return tl??=typeof e.FilletBatch==`function`,tl}function ol(e,t){if(t.length===0)return[];if(il(e)){let n=zo(`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=>Yc(e,t.shape,t.faces,t.thickness,t.tolerance??.001))}function sl(e,t){if(t.length===0)return[];if(al(e)){let n=zo(`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 qc(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 cl(e){return{fillet:(t,n,r)=>qc(e,t,n,r),chamfer:(t,n,r)=>Jc(e,t,n,r),chamferDistAngle:(t,n,r,i)=>Zc(e,t,n,r,i),shell:(t,n,r,i)=>Yc(e,t,n,r,i),thicken:(t,n)=>Xc(e,t,n),offset:(t,n,r)=>$c(e,t,n,r),offsetWire2D:(t,n,r)=>Qc(e,t,n,r),shellBatch:t=>ol(e,t),filletBatch:t=>sl(e,t)}}var ll;function ul(){ll=void 0}function dl(e){return ll??=typeof e.TransformBatch==`function`,ll}function fl(e,t){if(t.length===0)return[];let n=zo(`transform`);try{if(dl(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 hl(e,t.shape,t.x,t.y,t.z);case`rotate`:return gl(e,t.shape,t.angle,[...t.axis],[...t.center]);case`scale`:return vl(e,t.shape,[...t.center],t.factor);case`mirror`:return _l(e,t.shape,[...t.origin],[...t.normal])}})}finally{n()}}function pl(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),i=r.ModifiedShape(t);return r.delete(),i}function ml(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!1,!1);try{return r.ModifiedShape(t)}finally{r.delete()}}function hl(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=pl(e,t,a);return a.delete(),o.delete(),s}function gl(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=pl(e,t,a);return a.delete(),c.delete(),o.delete(),s.delete(),l}function _l(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=pl(e,t,i);return i.delete(),s.delete(),a.delete(),o.delete(),c}function vl(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n);i.SetScale(a,r);let o=pl(e,t,i);return i.delete(),a.delete(),o}function yl(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 bl(e,t){let n=new e.ShapeUpgrade_UnifySameDomain_2(t,!0,!0,!1);n.Build();let r=n.Shape();return n.delete(),r}function xl(e){return{transform:(t,n)=>pl(e,t,n),locate:(t,n)=>ml(e,t,n),translate:(t,n,r,i)=>hl(e,t,n,r,i),rotate:(t,n,r,i)=>gl(e,t,n,r,i),mirror:(t,n,r)=>_l(e,t,n,r),scale:(t,n,r)=>vl(e,t,n,r),transformBatch:t=>fl(e,t),generalTransform:(t,n,r,i)=>yl(e,t,n,r,i),simplify:t=>bl(e,t)}}function Sl(e,t,n){if(n===0)return new Float32Array;let r=t/4;return e.slice(r,r+n)}function Cl(e,t,n){let r=zo(`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=Sl(e.HEAPF32,r.getVerticesPtr(),i),u=n.skipNormals||a===0?new Float32Array:Sl(e.HEAPF32,r.getNormalsPtr(),a),d=r.getTrianglesPtr()/4,f=e.HEAPU32.slice(d,d+o),p=c>0?Sl(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 wl(e,t,n,r){let i=zo(`edgeMesh`);try{let i=e.EdgeMeshExtractor.extract(t,n,r),a=i.getLinesSize(),o=i.getEdgeGroupsSize(),s=Sl(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 Tl(e){return{mesh:(t,n)=>Cl(e,t,n),meshEdges:(t,n,r)=>wl(e,t,n,r)}}var El=0;function Dl(e,t){return`${e}_${++El}.${t}`}function Ol(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=Dl(`_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 kl(e,t,n=!1){let r=Dl(`_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 Al(e,t){let n=new e.IGESControl_Writer_1;for(let e of t)n.AddShape(e);n.ComputeModel();let r=Dl(`_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 jl(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=Dl(`_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 Ml(e,t){let n=Dl(`_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 Nl(e,t){let n=Dl(`_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 Pl(e){return{exportSTEP:t=>Ol(e,t),exportSTL:(t,n)=>kl(e,t,n),importSTEP:t=>jl(e,t),importSTL:t=>Ml(e,t),exportIGES:t=>Al(e,t),importIGES:t=>Nl(e,t)}}function Fl(e,t){let n=e.BRep_Tool.Pnt(t),r=[n.X(),n.Y(),n.Z()];return n.delete(),r}function Il(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 Ll=new WeakMap;function Rl(e,t){let n=Ll.get(e);n||(n=Il(e),Ll.set(e,n));let r=new e.BRepAdaptor_Surface_2(t,!1),i=r.GetType();return r.delete(),n.get(i)??`other`}function zl(e,t){let n=e.BRepTools.UVBounds_1(t);return{uMin:n.UMin,uMax:n.UMax,vMin:n.VMin,vMax:n.VMax}}function Bl(e,t){return e.BRepTools.OuterWire(t)}function Vl(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 Hl(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 Ul(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 Wl(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 Gl(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 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.FirstParameter(),n.LastParameter()];return n.delete(),r}function ql(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 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.IsClosed();return n.delete(),r}function Yl(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 Xl(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 Zl(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 Ql(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 $l(e,t,n){switch(n??eu(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 eu(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 tu(e,t,n){return e.shapeHashCode(t,n)}function nu(e,t){return t.IsNull()}function ru(e,t){return t.Reversed()}function iu(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 au(e,t,n,r){new e.BRepMesh_IncrementalMeshWrapper(t,n,!1,r,!1).delete()}function ou(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 su(e,t){return t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t)}function cu(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 lu(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 uu(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let e=n.GetType(),t=lu(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 du(e,t){return t.get().UReversed()}function fu(e){return{vertexPosition:t=>Fl(e,t),surfaceType:t=>Rl(e,t),uvBounds:t=>zl(e,t),outerWire:t=>Bl(e,t),surfaceNormal:(t,n,r)=>Vl(e,t,n,r),pointOnSurface:(t,n,r)=>Hl(e,t,n,r),uvFromPoint:(t,n)=>Ul(e,t,n),projectPointOnFace:(t,n)=>Wl(e,t,n),curveTangent:(t,n)=>Gl(e,t,n),curveParameters:t=>Kl(e,t),shapeOrientation:t=>Ql(e,t),downcast:(t,n)=>$l(e,t,n),copyShape:t=>$l(e,t),hashCode:(t,n)=>tu(e,t,n),isNull:t=>nu(e,t),hasTriangulation:t=>iu(e,t),meshShape:(t,n,r)=>{au(e,t,n,r)},getBezierPenultimatePole:t=>ou(e,t),createCurveAdaptor:t=>su(e,t),reverseShape:t=>ru(e,t),curvePointAtParam:(t,n)=>ql(e,t,n),curveIsClosed:t=>Jl(e,t),curveIsPeriodic:t=>Yl(e,t),curvePeriod:t=>Xl(e,t),curveType:t=>Zl(e,t),getSurfaceCylinderData:t=>cu(e,t),getSurfaceAxis:t=>uu(e,t),reverseSurfaceU:t=>du(e,t)}}function pu(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 mu(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 hu(e){return{getNurbsCurveData:t=>pu(e,t),getNurbsSurfaceData:t=>mu(e,t)}}function gu(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 _u(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 vu(e){return{interpolatePoints:(t,n)=>gu(e,t,n??{}),approximatePoints:(t,n)=>_u(e,t,n??{})}}function yu(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 bu(e,t){let n=new e.ShapeFix_Face_2(t);n.Perform();let r=n.Face();return n.delete(),r}function xu(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 Su(e){return{healSolid:t=>yu(e,t),healFace:t=>bu(e,t),healWire:(t,n)=>xu(e,t,n)}}var Cu={modified:new Map,generated:new Map,deleted:new Set};function wu(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 Tu(e,t){try{let n=wu(e.HEAP32,t.getModifiedPtr(),t.getModifiedSize()),r=wu(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 Eu(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 Du(e,t,n,r,i){if(r.length===0)return Cu;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 Tu(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,Eu(e,a,i));let l=t.Generated(r);l.Size()>0&&s.set(n,Eu(e,l,i))}return{modified:o,generated:s,deleted:c}}function Ou(e,t,n,r,i){let a=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),o=a.Shape(),s=r.length===0?Cu:Du(e,a,t,r,i);return a.delete(),{shape:o,evolution:s}}function ku(e,t,n,r,i,a,o){return a&&t.SimplifyResult(!0,!0,.001),{shape:t.Shape(),evolution:Du(e,t,n,r,i),diagnostics:o??{hasErrors:!1,hasWarnings:!1,messages:[]}}}function Au(e,t,n,r,i){return{shape:t.Shape(),evolution:Du(e,t,n,r,i)}}function ju(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=Ou(e,t,s,a,o);return s.delete(),l}function Mu(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=Ou(e,t,s,r,i);return s.delete(),d}function Nu(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=Ou(e,t,o,i,a);return o.delete(),u}function Pu(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=Ou(e,t,o,i,a);return o.delete(),c}function Fu(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=Ou(e,t,s,a,o);return s.delete(),c}function Iu(e){return{hasErrors:e.HasErrors(),hasWarnings:e.HasWarnings(),messages:[]}}function Lu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Fuse_3(t,n,o);Cs(e,s,a.optimisation),ws(s,a.fuzzyValue),s.Build(o);let c=Iu(s),l=ku(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function Ru(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Cut_3(t,n,o);Cs(e,s,a.optimisation),ws(s,a.fuzzyValue),s.Build(o);let c=Iu(s),l=ku(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function zu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Common_3(t,n,o);Cs(e,s,a.optimisation),ws(s,a.fuzzyValue),s.Build(o);let c=Iu(s),l=ku(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function Bu(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=Au(e,o,t,i,a);return o.delete(),c}function Vu(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=Au(e,o,t,i,a);return o.delete(),u}function Hu(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=Au(e,s,t,i,a);return s.delete(),u}function Uu(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=Au(e,a,t,r,i);return a.delete(),s}function Wu(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=Au(e,o,t,r,i);return o.delete(),c}function Gu(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(),Au(e,_,t,o,s)}finally{_.delete(),g.delete(),h.delete(),m.delete()}}function Ku(e){return{translateWithHistory:(t,n,r,i,a,o)=>ju(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>Mu(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>Nu(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>Pu(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>Fu(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>Lu(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>Ru(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>zu(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>Bu(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>Vu(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>Hu(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>Uu(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>Wu(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>Gu(e,t,n,r,i,a,o,s)}}function qu(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 Ju(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 Yu(e,t,n,r,i){return Ou(e,t,n,r,i)}function Xu(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 Zu(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=Xu(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 Qu(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 $u(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 ed(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 td(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 nd(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 rd(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 id(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 ad(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 od(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 sd(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 cd(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 ld(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=ud(e,d,f,p);a.Add(h);let g=ud(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 ud(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 dd(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 fd(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 pd(e,t){let n=new e.ShapeFix_Wire_1;n.Load_1(t),n.FixSelfIntersection();let r=n.Wire();return n.delete(),r}function md(){return{gaussian:0,mean:0,max:0,min:0,maxDirection:[1,0,0],minDirection:[0,1,0]}}function hd(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 gd(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=md();if(h>=1e-15){m.Divide(h);let e=hd(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:_d(o,s,e.du1,e.dv1),minDirection:_d(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 _d(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 vd(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 yd(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 bd(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 xd(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 Sd(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 Cd(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=Dl(`_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 wd(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=Dl(`_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 Td(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=Dl(`_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 Ed(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)?wd(e,t):Td(e,t)}function Dd(e){return{composeTransform:t=>Ju(e,t),applyComposedTransformWithHistory:(t,n,r,i)=>Yu(e,t,n,r,i),sweepPipeShell:(t,n,r)=>Zu(e,t,n,r??{}),loftAdvanced:(t,n)=>Qu(e,t,n??{}),buildExtrusionLaw:(t,n,r)=>$u(e,t,n,r),revolveVec:(t,n,r,i)=>ed(e,t,n,r,i),positionOnCurve:(t,n,r)=>rd(e,t,n,r),linearPattern:(t,n,r,i)=>td(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>nd(e,t,n,r,i,a),makeNonPlanarFace:t=>id(e,t),addHolesInFace:(t,n)=>ad(e,t,n),removeHolesFromFace:t=>od(e,t),makeFaceOnSurface:(t,n)=>sd(e,t,n),bsplineSurface:(t,n,r)=>cd(e,t,n,r),triangulatedSurface:(t,n,r)=>ld(e,t,n,r),sewAndSolidify:(t,n)=>dd(e,t,n),fixShape:t=>fd(e,t),fixSelfIntersection:t=>pd(e,t),surfaceCurvature:(t,n,r)=>gd(e,t,n,r),surfaceCenterOfMass:t=>vd(e,t),createDistanceQuery:t=>yd(e,t),projectEdges:(t,n,r,i)=>bd(e,t,n,r,i),draftPrism:(t,n,r,i,a,o)=>xd(e,t,n,r,i,a,o),generalTransformNonOrthogonal:(t,n,r)=>qu(e,t,n,r),createXCAFDocument:t=>Sd(e,t),writeXCAFToSTEP:(t,n)=>Cd(e,t,n??{}),exportSTEPConfigured:(t,n)=>Ed(e,t,n??{})}}var Od=()=>{};function kd(e){return e}function Ad(e){let t=kd(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function jd(e){return e}function Md(e,t){return{x:e,y:t}}function Nd(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 Pd(e,t){return{x:e,y:t}}function Fd(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:Od}}function Id(e){return e}function Ld(e){return e}function Rd(e,t,n,r){return te(e,t,n,r)}function zd(e,t,n,r){return ne(e,t,n,r)}function Bd(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function Vd(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 Hd(e){return oe(e)}function Ud(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 Wd(e,t){return S(kd(e),t)}function Gd(e,t){return{point:S(kd(e),t),tangent:C(kd(e),t)}}function Kd(e){return w(kd(e))}function qd(e){return ee(Ad(e))}function Jd(e,t,n){return{__bk2d:`trimmed`,basis:kd(e),tStart:t,tEnd:n}}function Yd(e){return JSON.parse(JSON.stringify(e))}function Xd(e,t){let n=kd(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 Ud(i)}function Zd(e,t,n){return se(kd(e),t,n)}function Qd(e,t,n,r){return ce(kd(e),t,n,r)}function $d(e,t,n,r){return le(kd(e),t,n,r)}function ef(e,t,n){return ue(kd(e),t,n)}function tf(e,t,n,r,i){return de(kd(e),t,n,r,i)}function nf(e,t,n,r,i,a){return pf(e,of(t,n,r,i,a))}function rf(e,t,n){return{m:e,tx:t,ty:n,delete:Od}}function af(){return rf([1,0,0,0,1,0,0,0,1],0,0)}function of(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return af();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 rf(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function sf(e,t){return rf([1,0,0,0,1,0,0,0,1],e,t)}function cf(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 rf(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return rf([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function lf(e,t,n){let r=Math.cos(e),i=Math.sin(e);return rf([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function uf(e,t,n){return rf([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function df(e,t,n){e.tx=t,e.ty=n}function ff(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 pf(e,n){let r=kd(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 mf(e,t,n){let r=fe(kd(e),kd(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function hf(e,t,n){let r=kd(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 gf(e,t,n,r,i,a){let o=kd(e),s=kd(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=hf(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=hf(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 _f(e,n,r,i){let a=kd(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 Ud(l,{degMax:s})}function vf(e){let n=Ad(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return vf(_f(e,1e-6,`C2`,10));let r=w(kd(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 yf(){return Ce()}function bf(e,t,n){we(jd(e),kd(t),n)}function xf(e){let t=jd(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function Sf(e,t){let n=jd(e),r=jd(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 Cf(e,t){let n=jd(e),r=jd(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function wf(e,t,n){let r=jd(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function Tf(e){let t=Ad(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function Ef(e){let t=Ad(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function Df(e){let t=Ad(e);return t.__bk2d===`bezier`?[...t.poles]:null}function Of(e){let t=Ad(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function kf(e){let t=Ad(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function Af(e){return xe(kd(e))}function jf(e){return Se(e)}function Mf(e,t){let n=kd(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 Nf(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 Pf(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 Ff(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 If(e,n,r,i,a){let o=kd(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 Nf(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 Pf(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?Nf(e,t(n,0),t(n,1)):Ff(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 Ff(e,u)}function Lf(e,t,n){let r=kd(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 Ff(e,a)}function Rf(e,t){return e.BRep_Tool.Surface_2(t)}function zf(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(),Ud(o)}function Bf(e,t){e.BRepLib.BuildCurves3d_2(t)}function Vf(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 Hf(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=fs(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 Uf(e){return{wrapCurve2dHandle:e=>Id(e),createCurve2dAdaptor:e=>Ld(e),createPoint2d:(e,t)=>Md(e,t),createDirection2d:(e,t)=>Nd(e,t),createVector2d:(e,t)=>Pd(e,t),createAxis2d:(e,t,n,r)=>Fd(e,t,n,r),makeLine2d:(e,t,n,r)=>Rd(e,t,n,r),makeCircle2d:(e,t,n,r)=>zd(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)=>Bd(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>Vd(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>Hd(e),makeBSpline2d:(e,t)=>Ud(e,t),evaluateCurve2d:(e,t)=>Wd(e,t),evaluateCurve2dD1:(e,t)=>Gd(e,t),getCurve2dBounds:e=>Kd(e),getCurve2dType:e=>qd(e),trimCurve2d:(e,t,n)=>Jd(e,t,n),reverseCurve2d:e=>{},copyCurve2d:e=>Yd(e),offsetCurve2d:(e,t)=>Xd(e,t),translateCurve2d:(e,t,n)=>Zd(e,t,n),rotateCurve2d:(e,t,n,r)=>Qd(e,t,n,r),scaleCurve2d:(e,t,n,r)=>$d(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>ef(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>tf(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>nf(e,t,n,r,i,a),createIdentityGTrsf2d:()=>af(),createAffinityGTrsf2d:(e,t,n,r,i)=>of(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>sf(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>cf(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>lf(e,t,n),createScaleGTrsf2d:(e,t,n)=>uf(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{df(e,t,n)},multiplyGTrsf2d:(e,t)=>{ff(e,t)},transformCurve2dGeneral:(e,t)=>pf(e,t),intersectCurves2d:(e,t,n)=>mf(e,t,n),projectPointOnCurve2d:(e,t,n)=>hf(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>gf(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>_f(e,t,n,r),decomposeBSpline2dToBeziers:e=>vf(e),createBoundingBox2d:()=>yf(),addCurveToBBox2d:(e,t,n)=>{bf(e,t,n)},getBBox2dBounds:e=>xf(e),mergeBBox2d:(e,t)=>{Sf(e,t)},isBBox2dOut:(e,t)=>Cf(e,t),isBBox2dOutPoint:(e,t,n)=>wf(e,t,n),getCurve2dCircleData:e=>Tf(e),getCurve2dEllipseData:e=>Ef(e),getCurve2dBezierPoles:e=>Df(e),getCurve2dBezierDegree:e=>Of(e),getCurve2dBSplineData:e=>kf(e),serializeCurve2d:e=>Af(e),deserializeCurve2d:e=>jf(e),splitCurve2d:(e,t)=>Mf(e,t),liftCurve2dToPlane:(t,n,r,i)=>If(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>Lf(e,t,n),extractSurfaceFromFace:t=>Rf(e,t),extractCurve2dFromEdge:(t,n)=>zf(e,t,n),buildCurves3d:t=>{Bf(e,t)},fixWireOnFace:(t,n,r)=>Vf(e,t,n,r),fillSurface:(t,n)=>Hf(e,t,n)}}function Wf(){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 Gf(e){return{draft:(t,n,r,i,a)=>Gu(e,t,n,r,i,a,[],1).shape}}var Kf=class{oc;kernelId=`occt`;capabilities=a;constructor(e){this.oc=e,Object.assign(this,Rs(e),Vs(e),oc(e),$s(e),Mc(e),Kc(e),cl(e),xl(e),Tl(e),Pl(e),ss(e),xs(e),fu(e),hu(e),vu(e),Su(e),Ku(e),Dd(e),Uf(e),Gf(e),Wf())}},qf=()=>{};function Jf(e){return typeof e==`object`&&!!e&&e.__brepkit}function Yf(e,t){return{__brepkit:!0,type:e,id:t,delete:qf,HashCode(e){return t%e},IsNull(){return!1}}}function F(e){return Yf(`solid`,e)}function Xf(e){return Yf(`face`,e)}function Zf(e){return Yf(`edge`,e)}function Qf(e){return Yf(`wire`,e)}function $f(e){return Yf(`shell`,e)}function ep(e){let t=Yf(`compound`,e);return gp.has(e)?{...t,delete:()=>gp.delete(e)}:t}function tp(e){return Yf(`vertex`,e)}function I(e,t){if(!Jf(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 L(e){return Array.from(e)}function np(e,t){if(!Jf(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 rp(e,t,n){if(!Jf(t))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof t);if(t.type===`solid`)return[t.id];if(t.type===`compound`){let r=L(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 ip(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 ap(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function op(e,t,n){return[1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1]}function sp(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 cp(e,t=[0,0,1],n=[0,0,0]){let r=sp(t,[0,0,1]),i=r[0]===0&&r[1]===0&&r[2]===0?[0,0,1]:r,a=sp(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 lp(e,t){let[n,r,i]=sp(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 up(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 dp(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 fp(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 pp=.01,mp=9e5;function hp(){return mp++}var gp=new Map,_p=new Set;function vp(e,t){_p.has(e)||(_p.add(e),console.warn(`brepkit: ${t}`))}function yp(e){return e.optimisation!==void 0||e.simplify!==void 0||e.strategy!==void 0||e.fuzzyValue!==void 0}function bp(e){return e}function xp(e){let t=e;for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function Sp(e){return e}function Cp(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 wp(e,t,n){let r=gp.get(t);return r?r.flatMap(t=>t.type===n?[t]:Mp(e,t,n)):n===`solid`?L(e.getCompoundSolids(t)).map(F):n===`face`||n===`edge`||n===`vertex`||n===`wire`?L(e.getCompoundSolids(t)).map(F).flatMap(t=>Mp(e,t,n)):[]}function Tp(e,t,n,r){switch(r){case`solid`:return[t];case`shell`:return L(e.getSolidShells(n)).map($f);case`face`:return L(e.getSolidFaces(n)).map(Xf);case`edge`:return L(e.getSolidEdges(n)).map(Zf);case`vertex`:return L(e.getSolidVertices(n)).map(tp);case`wire`:return L(e.getSolidFaces(n)).flatMap(t=>L(e.getFaceWires(t)).map(Qf));default:return[]}}function Ep(e,t,n){let r=L(e.getShellFaces(t)).map(Xf),i=new Set,a=[];for(let t of r)for(let r of Mp(e,t,n)){let e=I(r);i.has(e)||(i.add(e),a.push(r))}return a}function Dp(e,t,n,r){return r===`shell`?[t]:r===`face`?L(e.getShellFaces(n)).map(Xf):r===`edge`||r===`vertex`?Ep(e,n,r):[]}function Op(e,t,n,r){return r===`face`?[t]:r===`edge`?L(e.getFaceEdges(n)).map(Zf):r===`vertex`?L(e.getFaceVertices(n)).map(tp):r===`wire`?L(e.getFaceWires(n)).map(Qf):[]}function kp(e,n){let r=L(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(tp(e.makeVertex(t,n,r))))}}return a}function Ap(e,t,n,r){return r===`wire`?[t]:r===`edge`?L(e.getWireEdges(n)).map(Zf):r===`vertex`?kp(e,n):[]}function jp(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[tp(i),tp(a)]}return[]}function Mp(e,t,n){let r=I(t);switch(t.type){case`compound`:return wp(e,r,n);case`solid`:return Tp(e,t,r,n);case`shell`:return Dp(e,t,r,n);case`face`:return Op(e,t,r,n);case`wire`:return Ap(e,t,r,n);case`edge`:return jp(e,t,r,n);default:return[]}}function Np(e,t,n){if(Array.isArray(t))for(let e of t)n(e)}function Pp(e,t){if(Jf(t))return t.type;throw Error(`brepkit: cannot determine shape type of non-brepkit handle`)}function Fp(e,t,n){return Jf(t)&&Jf(n)&&t.id===n.id&&t.type===n.type}function Ip(e,t,n){return Fp(e,t,n)}function Lp(e,t,n){return t}function Rp(e,t,n){return Jf(t)?t.id%n:0}function zp(e,t){return!t||!Jf(t)}function Bp(e,t){let n=I(t);return e.getShapeOrientation(n)}function Vp(e,t){let n=np(t,`edgeToFaceMap`);return e.edgeToFaceMap(n)}function Hp(e,t,n){let r=I(t,`face`),i=I(n,`face`);return Array.from(e.sharedEdges(r,i)).map(e=>Zf(e))}function Up(e,t,n){let r=np(t,`adjacentFaces`),i=I(n,`face`);return Array.from(e.adjacentFaces(r,i)).map(e=>Xf(e))}function Wp(e,t){let n=t;return n.type===`face`?[n.id]:n.type===`solid`?L(e.getSolidFaces(n.id)):n.type===`shell`?L(e.getShellFaces(n.id)):[]}function Gp(e,t,n){let r=t.flatMap(t=>Wp(e,t)),i=n??1e-7;try{return $f(e.weldShellsAndFaces(r,i))}catch(e){console.warn(`brepkit: weldShellsAndFaces failed, falling back to sewFaces:`,e)}return $f(e.sewFaces(r,i))}function Kp(e){return{iterShapes:(t,n)=>Mp(e,t,n),iterShapeList:(t,n)=>{Np(e,t,n)},shapeType:t=>Pp(e,t),isSame:(t,n)=>Fp(e,t,n),isEqual:(t,n)=>Ip(e,t,n),downcast:(t,n)=>Lp(e,t,n),copyShape:t=>Lp(e,t),hashCode:(t,n)=>Rp(e,t,n),isNull:t=>zp(e,t),shapeOrientation:t=>Bp(e,t),edgeToFaceMap:t=>Vp(e,t),sharedEdges:(t,n)=>Hp(e,t,n),adjacentFaces:(t,n)=>Up(e,t,n),sew:(t,n)=>Gp(e,t,n)}}function qp(e,t){return n(e.getVertexPosition(I(t,`vertex`)))}function Jp(e,t){return e.getSurfaceType(I(t,`face`))}function Yp(e,n){let r=e.getSurfaceDomain(I(n,`face`));return{uMin:t(r,0),uMax:t(r,1),vMin:t(r,2),vMax:t(r,3)}}function Xp(e,t){return Qf(e.getFaceOuterWire(I(t,`face`)))}function Zp(e,t,r,i){return n(e.evaluateSurfaceNormal(I(t,`face`),r,i))}function Qp(e,t,r,i){return n(e.evaluateSurface(I(t,`face`),r,i))}function $p(e,n,r){try{let i=e.projectPointOnSurface(I(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 em(e,t,r){return n(e.projectPointOnSurface(I(t,`face`),r[0],r[1],r[2]),2)}function tm(e,r,i){let a=r,o,s=i;if(a.type===`wire`){let n=L(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=I(r,`edge`);let c=e.evaluateEdgeCurveD1(o,s);return{point:n(c,0),tangent:n(c,3)}}function nm(e,n){let r=n;if(r.type===`wire`){let n=L(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(I(n,`edge`));return[t(i,0),t(i,1)]}function rm(e,r,i){let a=r;if(a.type===`wire`){let r=L(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(I(r,`edge`),i))}function im(e,r){let i=r;if(i.type===`wire`){let r=L(e.getWireEdges(i.id));if(r.length===0)return!1;if(r.length===1)return am(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=>ip(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 am(e.getEdgeVertices(I(r,`edge`)))}function am(e){return ip(t(e,0),t(e,1),t(e,2),t(e,3),t(e,4),t(e,5))<1e-7}function om(e,t){let n=t;try{if(n.type===`edge`||n.type===`wire`&&L(e.getWireEdges(n.id)).length===1)return im(e,t)}catch{}return!1}function sm(e,t){try{if(om(e,t)){let n=nm(e,t);return n[1]-n[0]}}catch{}return 0}function cm(e,t){if(t.type===`wire`){let n=Mp(e,t,`edge`)[0];return n?e.getEdgeCurveType(I(n,`edge`)):`LINE`}return e.getEdgeCurveType(I(t,`edge`))}function lm(e,t,n){let r=I(t,`edge`);return Zf(e.curveDegreeElevate(r,n))}function um(e,t,n,r){let i=I(t,`edge`);return Zf(e.curveKnotInsert(i,n,r))}function dm(e,t,n,r){let i=I(t,`edge`);return Zf(e.curveKnotRemove(i,n,r))}function fm(e,n,r){let i=I(n,`edge`),a=e.curveSplit(i,r);return[Zf(t(a,0)),Zf(t(a,1))]}function pm(e,t,n,r,i,a,o,s,c,l){return Xf(e.approximateSurfaceLspia(t,n,r,i,a,o,s,c,l))}function mm(e,t,n,r){let i=I(t,`face`);return Xf(e.untrimFace(i,n,r))}function hm(e,t){return t}function gm(e,t){let r=Km(e,t);return!r||r.controlPoints.length<6?null:n(r.controlPoints,r.controlPoints.length-6)}function _m(e,t){if(Jf(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 vm(e,t){let n=JSON.parse(e.getAnalyticSurfaceParams(I(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 ym(e,t){return t}function bm(e,n,r,i,a){a!==void 0&&vp(`classify-tolerance`,`classifyPointOnFace() tolerance parameter is not supported; brepkit uses domain-based classification.`);let o=I(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 xm(e,t,n,r){let i=np(t,`classifyPointRobust`);return e.classifyPointRobust(i,n[0],n[1],n[2],r)}function Sm(e,t,n,r){let i=np(t,`classifyPointWinding`);return e.classifyPointWinding(i,n[0],n[1],n[2],r)}function Cm(e,t,n,r){let i=np(t,`detectSmallFeatures`);return Array.from(e.detectSmallFeatures(i,n,r)).map(e=>Xf(e))}function wm(e,t,n){let r=np(t,`recognizeFeatures`);return e.recognizeFeatures(r,n)}function Tm(e,t,r,i,a){let o=I(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=ip(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(Zf(e.makeLineEdge(i,a,0,o,s,0)))}let r=hp();return gp.set(r,n),ep(r)},b=()=>{let e=hp();return gp.set(e,[]),ep(e)};return{visible:{outline:y(v.visible),smooth:b(),sharp:b()},hidden:{outline:y(v.hidden),smooth:b(),sharp:b()}}}function Em(e,t){let n=I(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 Dm(e,t){return JSON.parse(e.getNurbsSurfaceDataParity(I(t,`face`)))}function Om(e){return{vertexPosition:t=>qp(e,t),surfaceType:t=>Jp(e,t),uvBounds:t=>Yp(e,t),outerWire:t=>Xp(e,t),surfaceNormal:(t,n,r)=>Zp(e,t,n,r),pointOnSurface:(t,n,r)=>Qp(e,t,n,r),uvFromPoint:(t,n)=>$p(e,t,n),projectPointOnFace:(t,n)=>em(e,t,n),curveTangent:(t,n)=>tm(e,t,n),curveParameters:t=>nm(e,t),curvePointAtParam:(t,n)=>rm(e,t,n),curveIsClosed:t=>im(e,t),curveIsPeriodic:t=>om(e,t),curvePeriod:t=>sm(e,t),curveType:t=>cm(e,t),curveDegreeElevate:(t,n)=>lm(e,t,n),curveKnotInsert:(t,n,r)=>um(e,t,n,r),curveKnotRemove:(t,n,r)=>dm(e,t,n,r),curveSplit:(t,n)=>fm(e,t,n),approximateSurfaceLspia:(t,n,r,i,a,o,s,c,l)=>pm(e,t,n,r,i,a,o,s,c,l),untrimFace:(t,n,r)=>mm(e,t,n,r),createCurveAdaptor:t=>hm(e,t),getBezierPenultimatePole:t=>gm(e,t),getSurfaceCylinderData:t=>_m(e,t),getSurfaceAxis:t=>vm(e,t),reverseSurfaceU:t=>ym(e,t),classifyPointOnFace:(t,n,r,i)=>bm(e,t,n,r,i),classifyPointRobust:(t,n,r)=>xm(e,t,n,r),classifyPointWinding:(t,n,r)=>Sm(e,t,n,r),detectSmallFeatures:(t,n,r)=>Cm(e,t,n,r),recognizeFeatures:(t,n)=>wm(e,t,n),projectEdges:(t,n,r,i)=>Tm(e,t,n,r,i),getNurbsCurveData:t=>Em(e,t),getNurbsSurfaceData:t=>Dm(e,t)}}function km(e,t,n){if(Array.isArray(n)&&n.length===16)return Hm(e,t,n);throw Error(`brepkit: transform expects a 16-element matrix array`)}function Am(e,t,n,r,i){return Hm(e,t,op(n,r,i))}function jm(e,t,n,r,i){return Hm(e,t,cp(n,r,i))}function Mm(e,t,n,r){let i=t;return i.type===`solid`?F(e.mirror(i.id,n[0],n[1],n[2],r[0],r[1],r[2])):Hm(e,t,dp(n,r))}function Nm(e,t,n,r){return Hm(e,t,lp(n,r))}function Pm(e,t,n,r,i){return Hm(e,t,up(n,r))}function Fm(e,t,n,r){return Hm(e,t,up(n,r))}function Im(e,t,n,r){let{point:i,tangent:a}=tm(e,n,r),[o,s,c]=a,l=Math.sqrt(o*o+s*s+c*c);if(l<1e-12)return Am(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=jm(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=jm(e,p,n,t)}return Am(e,p,i[0],i[1],i[2])}function Lm(e,t,n,r,i){let a=[t];for(let o=1;o<i;o++){let i=r*o;a.push(Am(e,t,n[0]*i,n[1]*i,n[2]*i))}return a}function Rm(e,t,n,r,i,a){let o=[t];for(let s=1;s<a;s++)o.push(jm(e,t,i*s,r,n));return o}function zm(e,t,n,r,i,a,o,s){return ep(e.gridPattern(np(t,`gridPattern`),n[0],n[1],n[2],r[0],r[1],r[2],i,a,o,s))}function Bm(e,t){return t.map(t=>{switch(t.type){case`translate`:return Am(e,t.shape,t.x,t.y,t.z);case`rotate`:return jm(e,t.shape,t.angle,t.axis,t.center);case`scale`:return Nm(e,t.shape,t.center,t.factor);case`mirror`:return Mm(e,t.shape,t.origin,t.normal)}})}function Vm(e){return{transform:(t,n)=>km(e,t,n),locate:(t,n)=>km(e,t,n),translate:(t,n,r,i)=>Am(e,t,n,r,i),rotate:(t,n,r,i)=>jm(e,t,n,r,i),mirror:(t,n,r)=>Mm(e,t,n,r),scale:(t,n,r)=>Nm(e,t,n,r),generalTransform:(t,n,r,i)=>Pm(e,t,n,r,i),generalTransformNonOrthogonal:(t,n,r)=>Fm(e,t,n,r),positionOnCurve:(t,n,r)=>Im(e,t,n,r),linearPattern:(t,n,r,i)=>Lm(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>Rm(e,t,n,r,i,a),gridPattern:(t,n,r,i,a,o,s)=>zm(e,t,n,r,i,a,o,s),transformBatch:t=>Bm(e,t)}}function Hm(e,t,n){let r=t;if(!Jf(t))throw Error(`brepkit: applyMatrix requires a BrepkitHandle`);switch(r.type){case`solid`:{let t=e.copySolid(r.id);return e.transformSolid(t,n),F(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),Xf(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),Qf(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),Zf(t)}default:throw Error(`brepkit: applyMatrix does not support '${r.type}' shapes`)}}function Um(e,t){return!!(e&&(e[0]!==0||e[1]!==0||e[2]!==0)||t&&(t[0]!==0||t[1]!==0||t[2]!==1))}function Wm(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=jm(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=jm(e,i,n,t)}}return n&&(n[0]!==0||n[1]!==0||n[2]!==0)&&(i=Am(e,i,n[0],n[1],n[2])),i}function Gm(e,t){let r,i=t;if(i.type===`solid`||i.type===`compound`){let n=Mp(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=I(i,`face`),o=0;for(let t of n){let n=I(t,`face`);try{let t=e.faceArea(n,pp);t>o&&(o=t,a=n)}catch{}}r=a}else r=I(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 Km(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 qm(e,t){if(!Jf(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 Jm(e,t){if(!Jf(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 Ym(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(I(t));return n>0&&console.warn(`brepkit: repairSolid left ${n} error(s) on solid.`),t}catch(n){try{return e.healSolid(I(t)),t}catch(e){return console.warn(`brepkit: healSolid failed (repairSolid error:`,n,`, healSolid error:`,e,`)`),null}}}function Xm(e,t){return t}function Zm(e,t,n){return t}function Qm(e,t,n){let r=np(t,`mergeCoincidentVertices`);return e.mergeCoincidentVertices(r,n)}function $m(e,t,n){let r=np(t,`removeDegenerateEdges`);return e.removeDegenerateEdges(r,n)}function eh(e,t){let n=np(t,`fixFaceOrientations`);return e.fixFaceOrientations(n)}function th(e,t){let n=t;return n.type===`solid`&&e.healSolid(n.id),t}function nh(e,t){return t}function rh(e,t){if(!Jf(t)||t.type!==`solid`)return null;try{return typeof e.validateSolidDetails==`function`?e.validateSolidDetails(t.id):null}catch{return null}}function ih(e){return{isValid:t=>qm(e,t),isValidStrict:t=>Jm(e,t),healSolid:t=>Ym(e,t),healFace:t=>Xm(e,t),healWire:(t,n)=>Zm(e,t,n),fixShape:t=>th(e,t),fixSelfIntersection:t=>nh(e,t),mergeCoincidentVertices:(t,n)=>Qm(e,t,n),removeDegenerateEdges:(t,n)=>$m(e,t,n),fixFaceOrientations:t=>eh(e,t),validationDetails:t=>rh(e,t)}}function ah(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 oh(e,t){return t.type===`compound`?L(e.getCompoundSolids(t.id)).length===0:!1}function sh(e){return ep(e.makeCompound([]))}function ch(e,t,n,r){if(r&&yp(r)&&vp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),oh(e,t))return n;if(oh(e,n))return t;let i=np(t,`fuse`),a=n;if(a.type===`compound`){let t=L(e.getCompoundSolids(a.id)),n=i;for(let r of t)n=e.fuse(n,r);return F(n)}return F(e.fuse(i,np(n,`fuse`)))}function lh(e,t,n,r){if(r&&yp(r)&&vp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),oh(e,t))return sh(e);if(oh(e,n))return t;let i=np(t,`cut`),a=n;if(a.type===`compound`){let t=L(e.getCompoundSolids(a.id)),n=i;for(let r of t)try{n=e.cut(n,r)}catch(t){if(ah(t))return sh(e);throw t}return F(n)}try{return F(e.cut(i,np(n,`cut`)))}catch(t){if(ah(t))return sh(e);throw t}}function uh(e,t,n,r){if(r&&yp(r)&&vp(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),oh(e,t)||oh(e,n))return sh(e);try{return F(e.intersect(np(t,`intersect`),np(n,`intersect`)))}catch(t){if(ah(t))return sh(e);throw t}}function dh(e,n,r,i){let{point:a,normal:o}=Gm(e,r),s=Jf(n)&&n.type===`solid`?n.id:I(n,`solid`),c=L(e.section(s,a[0],a[1],a[2],o[0],o[1],o[2]));if(c.length===0)return ep(e.makeCompound([]));let l=[];for(let n=0;n<c.length;n++){let r=L(e.getFaceWires(t(c,n)));for(let e=0;e<r.length;e++)l.push(Qf(t(r,e)))}let[u]=l;if(l.length===1&&u!==void 0)return u;let d=hp();return gp.set(d,l),ep(d)}function fh(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(...L(e.getCompoundSolids(n.id))):t.push(np(r,`fuseAll`))}if(t.length===0)throw Error(`brepkit: fuseAll resolved to zero solid IDs`);return F(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(ch(e,i[n],i[n+1],r)):t.push(i[n]);i=t}return t(i,0)}function ph(e,t,n,r){if(n.length===0)return t;if(n.length===1)return lh(e,t,n[0],r);let i=np(t,`cutAll`),a=[];for(let t of n){let n=t;n.type===`compound`?a.push(...L(e.getCompoundSolids(n.id))):a.push(np(t,`cutAll`))}return a.length===0?t:F(e.compoundCut(i,new Uint32Array(a)))}function mh(e,t,n){if(n.length===0)throw Error(`brepkit: split requires at least one tool`);let{point:r,normal:i}=Gm(e,n[0]),a=L(e.split(I(t,`solid`),r[0],r[1],r[2],i[0],i[1],i[2]));return ep(e.makeCompound(a))}function hh(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 gh(e,t,n,r,i){let a=[];return(!Jf(t)||t.IsNull())&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),(!Jf(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 _h(e,n,r){let i=[];for(let r of n){let n=r;if(n.type===`solid`){let r=L(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 F(e.convexHull(i))}function vh(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 F(e.convexHull(r))}function yh(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 F(e.importIndexedMesh(a,o))}function bh(e){return{fuse:(t,n,r)=>ch(e,t,n,r),cut:(t,n,r)=>lh(e,t,n,r),intersect:(t,n,r)=>uh(e,t,n,r),section:(t,n,r)=>dh(e,t,n,r),fuseAll:(t,n)=>fh(e,t,n),cutAll:(t,n,r)=>ph(e,t,n,r),split:(t,n)=>mh(e,t,n),meshBoolean:(t,n,r,i,a,o)=>hh(e,t,n,r,i,a,o),checkBoolean:(t,n,r)=>gh(e,t,n,r,t=>qm(e,t)),hull:(t,n)=>_h(e,t,n),hullFromPoints:(t,n)=>vh(e,t,n),buildSolidFromFaces:(t,n,r)=>yh(e,t,n,r)}}function xh(e,t,n,r){return tp(e.makeVertex(t,n,r))}function Sh(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 Mh(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(Jf(t)&&t.type===`edge`)return t;throw Error(`brepkit: makeEdge requires a curve with origin/direction, or an edge handle`)}function Ch(e,t){let n=[];for(let r of t){let t=r;if(t.type===`wire`)for(let r of L(e.getWireEdges(t.id)))n.push(r);else n.push(I(r,`edge`))}return Qf(e.makeWire(n,!0))}function wh(e,t,n){let r=t,i=r.type===`edge`?e.makeWire([r.id],!0):I(t,`wire`);return Xf(n?e.makePlanarFaceFromWire(i):e.makeFaceFromWire(i))}function Th(e,t,n,r){return F(e.makeBox(t,n,r))}function Eh(e,t,n){return Xf(e.makeRectangle(t,n))}function Dh(e,t,n,r,i){let a=F(e.makeCylinder(t,n));return Um(r,i)?Wm(e,a,r,i):a}function Oh(e,t,n){let r=F(e.makeSphere(t,32));return n&&(n[0]!==0||n[1]!==0||n[2]!==0)?Am(e,r,n[0],n[1],n[2]):r}function kh(e,t,n,r,i,a){let o=F(e.makeCone(t,n,r));return Um(i,a)?Wm(e,o,i,a):o}function Ah(e,t,n,r,i){let a=F(e.makeTorus(t,n,32));return Um(r,i)?Wm(e,a,r,i):a}function jh(e,t,n,r){let i=Math.max(t,n,r);return Pm(e,Oh(e,i),[t/i,0,0,0,n/i,0,0,0,r/i],[0,0,0],!1)}function Mh(e,t,n){return Zf(e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Nh(e,t,n,r){let i=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);return Zf(e.makeCircleEdge(t[0],t[1],t[2],n[0]/i,n[1]/i,n[2]/i,r))}function Ph(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 Zf(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 cg(e,t,n,r,i,a)}function Fh(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 Ih(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 Mh(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=Fh(p,m,h,g,_,v);if(!y)return Mh(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 Zf(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 Lh(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 Zf(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 Zf(e.makeEllipseEdge(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i))}function Rh(e,t,n,r,i,a,o,s){return lg(e,t,n,r,i,a,o,s)}function zh(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 Zf(e.makeNurbsEdge(c[0],c[1],c[2],l[0],l[1],l[2],r,a,s,o))}function Bh(e,t,n,r){return Zf(e.makeTangentArc3d(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function Vh(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 Ch(e,[eg(e,p)])}function Hh(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 L(e.getWireEdges(t.id)))n.push(r)}if(n.length===0)throw Error(`brepkit: makeWireFromMixed requires at least one edge`);return Qf(e.makeWire(n,!1))}function Uh(e,t){let n=t.filter(Jf);if(n.length===0)throw Error(`brepkit: makeCompound requires at least one shape`);if(n.every(e=>e.type===`solid`))return ep(e.makeCompound(n.map(e=>e.id)));let r=hp();return gp.set(r,n),ep(r)}function Wh(e,t,n){let r=Th(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?Am(e,r,i,a,o):r}function Gh(e,t){let n=t;if(n.type===`solid`)return t;if(n.type===`shell`){try{return e.getSolidFaces(n.id),F(n.id)}catch{}return F(e.solidFromShell(n.id))}return F(e.solidFromShell(I(t,`shell`)))}function Kh(e,t){return wh(e,t,!1)}function qh(e,t,n){let r=n.map(e=>I(e,`wire`));return Xf(e.addHolesToFace(I(t,`face`),r))}function Jh(e,t){return Xf(e.removeHolesFromFace(I(t,`face`)))}function Yh(e,t,n){return wh(e,n,!1)}function Xh(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 Xf(e.interpolateSurface(i,n,r,a,o))}catch{return Zh(e,t,n,r)}}function Zh(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=Qh(e,t(n,s),t(n,c),t(n,l));d&&a.push(d);let f=Qh(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 Gp(e,a,1e-6)}function Qh(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 wh(e,Ch(e,[Mh(e,t,n),Mh(e,n,r),Mh(e,r,t)]))}catch(e){return console.warn(`brepkit: makeNonPlanarFace failed:`,e),null}}function $h(e,t,n){let r=t.map(e=>I(e,`face`));return F(e.sewFaces(r,n))}function eg(e,n,r){if(r?.tolerance!==void 0&&vp(`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 Mh(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 Zf(e.interpolatePoints(a,i))}function tg(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 Zf(e.approximateCurveLspia(a,r,o,i,100))}function ng(e,t,n,r){return{x:t,y:n,z:r}}function rg(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 ig(e,t,n,r){return{x:t,y:n,z:r}}function ag(e,t,n,r,i,a,o){return{origin:[t,n,r],direction:[i,a,o]}}function og(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 sg(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 cg(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 Zf(e.makeNurbsEdge(b,x,S,C,w,ee,2,v,g,_))}function lg(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 Zf(e.makeNurbsEdge(y,b,x,S,C,w,2,_,h,g))}function ug(e){return{makeVertex:(t,n,r)=>xh(e,t,n,r),makeEdge:(t,n,r)=>Sh(e,t,n,r),makeWire:t=>Ch(e,t),makeWireFromMixed:t=>Hh(e,t),makeFace:(t,n)=>wh(e,t,n),makeBox:(t,n,r)=>Th(e,t,n,r),makeRectangle:(t,n)=>Eh(e,t,n),makeCylinder:(t,n,r,i)=>Dh(e,t,n,r,i),makeSphere:(t,n)=>Oh(e,t,n),makeCone:(t,n,r,i,a)=>kh(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Ah(e,t,n,r,i),makeEllipsoid:(t,n,r)=>jh(e,t,n,r),makeLineEdge:(t,n)=>Mh(e,t,n),makeCircleEdge:(t,n,r)=>Nh(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>Ph(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>Ih(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>Lh(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>Rh(e,t,n,r,i,a,o,s),makeBezierEdge:t=>zh(e,t),makeTangentArc:(t,n,r)=>Bh(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>Vh(e,t,n,r,i,a,o),makeCompound:t=>Uh(e,t),makeBoxFromCorners:(t,n)=>Wh(e,t,n),solidFromShell:t=>Gh(e,t),makeNonPlanarFace:t=>Kh(e,t),addHolesInFace:(t,n)=>qh(e,t,n),removeHolesFromFace:t=>Jh(e,t),makeFaceOnSurface:(t,n)=>Yh(e,t,n),bsplineSurface:(t,n,r)=>Xh(e,t,n,r),triangulatedSurface:(t,n,r)=>Zh(e,t,n,r),buildTriFace:(t,n,r)=>Qh(e,t,n,r),sewAndSolidify:(t,n)=>$h(e,t,n),interpolatePoints:(t,n)=>eg(e,t,n),approximatePoints:(t,n)=>tg(e,t,n),createPoint3d:(t,n,r)=>ng(e,t,n,r),createDirection3d:(t,n,r)=>rg(e,t,n,r),createVector3d:(t,n,r)=>ig(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>ag(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>og(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>sg(e,t,n,r,i,a,o,s,c,l)}}function dg(e,t,n,r){let i=np(t,`fillet`),a=n.map(e=>I(e,`edge`));if(typeof r==`number`)return F(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 F(e.filletVariable(i,JSON.stringify(o)))}function fg(e,t,n,r){let i=np(t,`chamfer`),a=n.map(e=>I(e,`edge`));if(typeof r==`number`)return F(e.chamfer(i,a,r));if(Array.isArray(r)){let[t,n]=r;return typeof e.chamferAsymmetric==`function`?F(e.chamferAsymmetric(i,a,t,n)):(vp(`chamfer-asymmetric`,`chamferAsymmetric not available; using averaged distance.`),F(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):(vp(`chamfer-callback`,`chamferAsymmetric not available; asymmetric edges use averaged distance.`),s=e.chamfer(s,t.ids,(t.d1+t.d2)/2));return F(s)}function pg(e,t,n,r,i){let a=r*Math.tan(i*Math.PI/180),o=np(t,`chamferDistAngle`),s=n.map(e=>I(e,`edge`));return typeof e.chamferAsymmetric==`function`?F(e.chamferAsymmetric(o,s,r,a)):(vp(`chamfer-dist-angle`,`chamferAsymmetric not available; using averaged distance.`),F(e.chamfer(o,s,(r+a)/2)))}function mg(e,n){let r=L(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 hg(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 gg(e,t,n){try{let r=mg(e,t);if(r===null)return null;let i=-1,a=1/0;for(let t of n)try{let n=mg(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 _g(e,t,n,r){if(r.has(t))return t;let i=hg(e,t,n);if(i!==null)return i;let a=gg(e,t,n);return a===null?t:a}function vg(e,t,n,r,i){i!==void 0&&vp(`shell-tolerance`,`shell() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let a=np(t,`shell`),o=L(e.getSolidFaces(a)),s=new Set(o),c=n.map(t=>_g(e,I(t,`face`),o,s));return F(e.shell(a,r,c))}function yg(e,t,n){let r=t;if(r.type===`face`)return F(e.thicken(r.id,n));throw Error(`brepkit: thicken() requires a face`)}function bg(e,t,n,r){r!==void 0&&vp(`offset-tolerance`,`offset() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let i=t;if(i.type===`face`)return F(e.thicken(i.id,n));let a=np(t,`offset`);return F(e.offsetSolidV2(a,n))}function xg(e,t,n){let r=np(t,`filletVariable`);return F(e.filletVariable(r,n))}function Sg(e,t,n,r,i,a){let o=np(t,`draft`),s=n.map(e=>I(e,`face`));return F(e.draft(o,s,r[0],r[1],r[2],i[0],i[1],i[2],a))}function Cg(e,t,n){let r=np(t,`defeature`),i=n.map(e=>I(e,`face`));return F(e.defeature(r,i))}function wg(e){switch(e){case`arc`:case`tangent`:return`arc`;case`intersection`:return`intersection`;default:return`intersection`}}function Tg(e,n,r,i){if(typeof e.offsetWire2DWithJoin==`function`)return Qf(e.offsetWire2DWithJoin(I(n,`wire`),r,wg(i)));let a=Mp(e,n,`edge`);if(a.length===0)return n;let o=[];for(let n of a){let r=e.getEdgeVertices(I(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 Qf(e.makePolygonWire(c))}function Eg(e,t){if(t.type===`solid`)try{e.healSolid(I(t))}catch(e){console.warn(`brepkit: healing failed in simplify:`,e)}return t}function Dg(e,t){let n=t,r=e.reverseShape(n.id);return Yf(n.type,r)}function Og(e){return{fillet:(t,n,r)=>dg(e,t,n,r),chamfer:(t,n,r)=>fg(e,t,n,r),chamferDistAngle:(t,n,r,i)=>pg(e,t,n,r,i),shell:(t,n,r,i)=>vg(e,t,n,r,i),thicken:(t,n)=>yg(e,t,n),offset:(t,n,r)=>bg(e,t,n,r),filletVariable:(t,n)=>xg(e,t,n),draft:(t,n,r,i,a)=>Sg(e,t,n,r,i,Cp(n,a)),defeature:(t,n)=>Cg(e,t,n),offsetWire2D:(t,n,r)=>Tg(e,t,n,r),simplify:t=>Eg(e,t),reverseShape:t=>Dg(e,t)}}function kg(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=F(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 Ag(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 jg(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 Mg(e,t,n){try{return{hash:n,normal:e.getFaceNormal(t),centroid:jg(e,t)}}catch{return{hash:n,normal:[0,0,0],centroid:jg(e,t)}}}var Ng=.707,Pg=100,Fg=.05;function Ig(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<Ng)continue;let c=Ag(e.centroid,o.centroid);if(c>Pg)continue;let l=s-c/Pg;l>r&&(r=l),i.push({idx:a,score:l})}return{matches:i,bestScore:r}}function Lg(e,t){let n=1/0,r;for(let i of t){let t=Ag(e.centroid,i.centroid);t<n&&(n=t,r=i)}return r}function Rg(e,n,r,i,a,o,s,c){let l=n;if(l.type!==`solid`)return;let u=L(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(Mg(e,i,r[n]??i%a))}let p=i.map(t=>Mg(e,t,t%a)),m=new Set;for(let e of p){let{matches:n,bestScore:r}=Ig(e,f);if(n.length>0){for(let i of n)if(i.score>=r-Fg){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=Lg(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 zg(e,t,n,r,i,a,o,s){let c=new Set(s),l=new Map(a);Rg(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 Bg(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 Vg(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?zg(e,l,d,f,a,o,s,c):Bg(i,r,u,t,s,c)}else if(l)Rg(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 Hg(e,n,r,i,a,o){let s=n,c=new Map,l=new Map,u=new Set;if(s.type===`solid`){let n=L(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 Vg(e,n,d,r,i,c,l,u,o)}return{shape:n,evolution:{modified:c,generated:l,deleted:u}}}function Ug(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 Wg(e,t){let n=new Set;Ug(t.combinedModified,e.evolution.modified,e.evolution.deleted,n,t.combinedDeleted),Ug(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 Gg(e,t,n,r,i,a){let o=L(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=kg(a(t.id,e),i);s=n.shape,Wg(n,c)}return{shape:s,accum:c}}function Kg(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{...kg(o(u.id,d.id),i),diagnostics:l}}catch(e){if(!ah(e))throw e}if(d.type===`compound`){let{shape:n,accum:a}=Gg(e,t,d.id,r,i,o);return{shape:n,evolution:{modified:a.combinedModified,generated:a.combinedGenerated,deleted:a.combinedDeleted},diagnostics:l}}}return{...Hg(e,s(t,n,a),r,i,!1,t),diagnostics:l}}function qg(e,t,n,r,i,a,o){return Hg(e,Am(e,t,n,r,i),a,o,!0)}function Jg(e,t,n,r,i,a,o){return Hg(e,jm(e,t,n*180/Math.PI,a,o),r,i,!0)}function Yg(e,t,n,r,i,a){return Hg(e,Mm(e,t,n,r),i,a,!0)}function Xg(e,t,n,r,i,a){return Hg(e,Nm(e,t,n,r),i,a,!0)}function Zg(e,t,n,r,i,a,o){return Hg(e,Pm(e,t,n,r,i),a,o,!0)}function Qg(e,t,n,r,i,a){return Kg(e,t,n,r,i,a,(t,n)=>e.fuseWithEvolution(t,n),(t,n,r)=>ch(e,t,n,r),`fuseWithHistory`)}function $g(e,t,n,r,i,a){return Kg(e,t,n,r,i,a,(t,n)=>e.cutWithEvolution(t,n),(t,n,r)=>lh(e,t,n,r),`cutWithHistory`)}function e_(e,t,n,r,i,a){return Kg(e,t,n,r,i,a,(t,n)=>e.intersectWithEvolution(t,n),(t,n,r)=>uh(e,t,n,r),`intersectWithHistory`)}function t_(e,t,n,r,i,a){return Hg(e,dg(e,t,n,r),i,a,!1,t)}function n_(e,t,n,r,i,a){return Hg(e,fg(e,t,n,r),i,a,!1,t)}function r_(e,t,n,r,i,a,o){return Hg(e,vg(e,t,n,r,o),i,a,!1,t)}function i_(e,t,n,r,i){return Hg(e,yg(e,t,n),r,i,!1,t)}function a_(e,t,n,r,i,a){return Hg(e,bg(e,t,n,a),r,i,!1,t)}function o_(e,t,n,r,i,a,o,s){return Hg(e,Sg(e,t,n,r,i,a),o,s,!1,t)}function s_(e,t,n,r,i){return Hg(e,Hm(e,t,n),r,i,!0)}function c_(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=fp(e.type===`translate`?op(e.x,e.y,e.z):cp(e.angle,e.axis,e.center),n);return{handle:n,dispose:()=>{}}}function l_(e){return{translateWithHistory:(t,n,r,i,a,o)=>qg(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>Jg(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>Yg(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>Xg(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>Zg(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>Qg(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>$g(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>e_(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>t_(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>n_(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>r_(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>i_(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>a_(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>o_(e,t,n,r,i,Cp(n,a),o,s),applyComposedTransformWithHistory:(t,n,r,i)=>s_(e,t,n,r,i),composeTransform:t=>c_(e,t)}}function u_(e,t,n){let r=I(t),i=t,a=n.tolerance||.01,o=n.angularTolerance>0?n.angularTolerance:void 0,s;if(i.type===`solid`)s=p_(e,r,a,!!n.includeUVs,o);else if(i.type===`face`)s=v_(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 d_(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 f_(e,t){return!1}function p_(e,t,n,r,i){try{return m_(e,t,n,r,i)}catch(r){return console.warn(`brepkit: tessellateSolidGrouped failed (solidId=${t}), falling back to per-face:`,r),__(e,t,n,i)}}function m_(e,t,n,r,i){return typeof e.tessellateSolidGroupedBinary==`function`?h_(e,t,n,r,i,e.tessellateSolidGroupedBinary(t,n,i)):g_(e,t,n,r,i)}function h_(e,n,r,i,a,o){let s=o.positions,c=o.normals,l=o.indices,u=o.faceOffsets,d=L(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 g_(e,n,r,i,a){let o=e.tessellateSolidGrouped(n,r,a),s=JSON.parse(o),c=L(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 __(e,t,n,r){let i=L(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 v_(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 y_(e){return{mesh:(t,n)=>u_(e,t,n),meshEdges:(t,n,r)=>d_(e,t,n,r),hasTriangulation:t=>f_(e,t),meshShape:(e,t,n)=>{}}}function b_(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=rp(e,r,`exportSTEP`);for(let r of t){let t=e.exportStep(r);n.push(new TextDecoder().decode(t))}}return n.join(`
8
8
  `)}function x_(e,n,r,i=De,a=Oe){let{vertices:o,triangles:s}=u_(e,F(t(rp(e,n,`exportSTL`),0)),{tolerance:i,angularTolerance:a,skipNormals:!0});return r?je(o,s):Me(o,s)}function S_(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return L(e.importStep(n)).map(F)}function C_(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return F(e.importStl(n))}function w_(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=rp(e,r,`exportIGES`);for(let r of t){let t=e.exportIges(r);n.push(new TextDecoder().decode(t))}}return n.join(`
9
9
  `)}function T_(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return L(e.importIges(n)).map(F)}function E_(e,t,n){return t.length===0?``:b_(e,t.map(e=>e.shape))}function D_(e,t,n){let r=np(t,`export3MF`);return ap(e.export3mf(r,n))}function O_(e,t,n){let r=np(t,`exportGLB`);return ap(e.exportGlb(r,n))}function k_(e,t,n){let r=np(t,`exportOBJ`);return ap(e.exportObj(r,n))}function A_(e,t,n){let r=np(t,`exportPLY`);return ap(e.exportPly(r,n))}function j_(e,t){return L(e.import3mf(new Uint8Array(t))).map(e=>F(e))}function M_(e,t){return F(e.importObj(new Uint8Array(t)))}function N_(e,t){return F(e.importGlb(new Uint8Array(t)))}function P_(e,t){let n=t;return n.type===`solid`?e.toBREP(n.id):(vp(`brep-non-solid`,`toBREP for non-solid shapes uses STEP format.`),b_(e,[t]))}function F_(e,t){if(typeof e.fromBREP==`function`&&t.trimStart().startsWith(`{`))return F(e.fromBREP(t));let n=S_(e,t)[0];if(!n)throw Error(`brepkit: fromBREP produced no shapes`);return n}function I_(e,t){return{__brepkit_xcaf:!0,shapes:t,delete:qf}}function L_(e,t,n){return t&&t.__brepkit_xcaf&&Array.isArray(t.shapes)?b_(e,t.shapes.map(e=>e.shape)):``}function R_(e,t,n){return b_(e,t.map(e=>e.shape))}function z_(e){return{exportSTEP:t=>b_(e,t),exportSTL:(t,n,r,i)=>x_(e,t,n,r,i),importSTEP:t=>S_(e,t),importSTL:t=>C_(e,t),exportIGES:t=>w_(e,t),importIGES:t=>T_(e,t),exportSTEPAssembly:(t,n)=>E_(e,t,n),export3MF:(t,n)=>D_(e,t,n),exportGLB:(t,n)=>O_(e,t,n),exportOBJ:(t,n)=>k_(e,t,n),exportPLY:(t,n)=>A_(e,t,n),import3MF:t=>j_(e,t),importOBJ:t=>M_(e,t),importGLB:t=>N_(e,t),toBREP:t=>P_(e,t),fromBREP:t=>F_(e,t),createXCAFDocument:t=>I_(e,t),writeXCAFToSTEP:(t,n)=>L_(e,t,n),exportSTEPConfigured:(t,n)=>R_(e,t,n)}}function B_(e,t){return{x:e,y:t}}function V_(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 H_(e,t){return{x:e,y:t}}function U_(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:qf}}function W_(e){return e}function G_(e){return e}function K_(e,t,n,r){return te(e,t,n,r)}function q_(e,t,n,r){return ne(e,t,n,r)}function J_(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function Y_(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 X_(e){return oe(e)}function Z_(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 Q_(e,t){return S(bp(e),t)}function $_(e,t){return{point:S(bp(e),t),tangent:C(bp(e),t)}}function ev(e){return w(bp(e))}function tv(e){return ee(xp(e))}function nv(e,t,n){return{__bk2d:`trimmed`,basis:bp(e),tStart:t,tEnd:n}}function rv(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 iv(e){return JSON.parse(JSON.stringify(e))}function av(e,t){let n=bp(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 Z_(i)}function ov(e,t,n){return se(bp(e),t,n)}function sv(e,t,n,r){return ce(bp(e),t,n,r)}function cv(e,t,n,r){return le(bp(e),t,n,r)}function lv(e,t,n){return ue(bp(e),t,n)}function uv(e,t,n,r,i){return de(bp(e),t,n,r,i)}function dv(e,t,n,r,i,a){return xv(e,mv(t,n,r,i,a))}function fv(e,t,n){return{m:e,tx:t,ty:n,delete:qf}}function pv(){return fv([1,0,0,0,1,0,0,0,1],0,0)}function mv(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return pv();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 fv(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function hv(e,t){return fv([1,0,0,0,1,0,0,0,1],e,t)}function gv(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 fv(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return fv([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function _v(e,t,n){let r=Math.cos(e),i=Math.sin(e);return fv([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function vv(e,t,n){return fv([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function yv(e,t,n){e.tx=t,e.ty=n}function bv(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 xv(e,n){let r=bp(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 Sv(e,t,n){let r=fe(bp(e),bp(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function Cv(e,t,n){let r=bp(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 wv(e,t,n,r,i,a){let o=bp(e),s=bp(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=Cv(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=Cv(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 Tv(e,n,r,i){let a=bp(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 Z_(l,{degMax:s})}function Ev(e){let n=xp(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return Ev(Tv(e,1e-6,`C2`,10));let r=w(bp(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 Dv(){return Ce()}function Ov(e,t,n){we(Sp(e),bp(t),n)}function kv(e){let t=Sp(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function Av(e,t){let n=Sp(e),r=Sp(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 jv(e,t){let n=Sp(e),r=Sp(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function Mv(e,t,n){let r=Sp(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function Nv(e){let t=xp(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function Pv(e){let t=xp(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function Fv(e){let t=xp(e);return t.__bk2d===`bezier`?[...t.poles]:null}function Iv(e){let t=xp(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function Lv(e){let t=xp(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function Rv(e){return xe(bp(e))}function zv(e){return Se(e)}function Bv(e,t){let n=bp(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 Vv(e,n,r,i,a){let o=bp(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 Mh(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?Zf(t(p,0)):Qf(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?Zf(t(te,0)):Qf(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 Mh(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 Zf(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 eg(e,u)}function Hv(e,t,r){if(!Jf(r))throw Error(`brepkit: buildEdgeOnSurface requires a face handle as surface`);let i=I(r,`face`),a=bp(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 eg(e,c)}function Uv(e){return e}function Wv(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 Gv(e,n,r){let i=I(n,`edge`),a=I(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)}));Wv(d,u,80,.05);let f=d.map(e=>e.uv);if(f.length>=2)return Z_(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 Kv(e,t,n){return e}function qv(e,n,r){if(n.length>=1){let r=Mp(e,n[0],`edge`);if(r.length===4){let n=[],i=[];for(let a of r){let r=I(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 Xf(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 Kh(e,i)}function Jv(e){return{createPoint2d:(e,t)=>B_(e,t),createDirection2d:(e,t)=>V_(e,t),createVector2d:(e,t)=>H_(e,t),createAxis2d:(e,t,n,r)=>U_(e,t,n,r),wrapCurve2dHandle:e=>W_(e),createCurve2dAdaptor:e=>G_(e),makeLine2d:(e,t,n,r)=>K_(e,t,n,r),makeCircle2d:(e,t,n,r)=>q_(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)=>J_(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>Y_(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>X_(e),makeBSpline2d:(e,t)=>Z_(e,t),evaluateCurve2d:(e,t)=>Q_(e,t),evaluateCurve2dD1:(e,t)=>$_(e,t),getCurve2dBounds:e=>ev(e),getCurve2dType:e=>tv(e),trimCurve2d:(e,t,n)=>nv(e,t,n),reverseCurve2d:e=>{rv(e)},copyCurve2d:e=>iv(e),offsetCurve2d:(e,t)=>av(e,t),translateCurve2d:(e,t,n)=>ov(e,t,n),rotateCurve2d:(e,t,n,r)=>sv(e,t,n,r),scaleCurve2d:(e,t,n,r)=>cv(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>lv(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>uv(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>dv(e,t,n,r,i,a),createIdentityGTrsf2d:()=>pv(),createAffinityGTrsf2d:(e,t,n,r,i)=>mv(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>hv(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>gv(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>_v(e,t,n),createScaleGTrsf2d:(e,t,n)=>vv(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{yv(e,t,n)},multiplyGTrsf2d:(e,t)=>{bv(e,t)},transformCurve2dGeneral:(e,t)=>xv(e,t),intersectCurves2d:(e,t,n)=>Sv(e,t,n),projectPointOnCurve2d:(e,t,n)=>Cv(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>wv(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>Tv(e,t,n,r),decomposeBSpline2dToBeziers:e=>Ev(e),createBoundingBox2d:()=>Dv(),addCurveToBBox2d:(e,t,n)=>{Ov(e,t,n)},getBBox2dBounds:e=>kv(e),mergeBBox2d:(e,t)=>{Av(e,t)},isBBox2dOut:(e,t)=>jv(e,t),isBBox2dOutPoint:(e,t,n)=>Mv(e,t,n),getCurve2dCircleData:e=>Nv(e),getCurve2dEllipseData:e=>Pv(e),getCurve2dBezierPoles:e=>Fv(e),getCurve2dBezierDegree:e=>Iv(e),getCurve2dBSplineData:e=>Lv(e),serializeCurve2d:e=>Rv(e),deserializeCurve2d:e=>zv(e),splitCurve2d:(e,t)=>Bv(e,t),liftCurve2dToPlane:(t,n,r,i)=>Vv(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>Hv(e,t,n),extractSurfaceFromFace:e=>Uv(e),extractCurve2dFromEdge:(t,n)=>Gv(e,t,n),buildCurves3d:e=>{},fixWireOnFace:(e,t,n)=>Kv(e,t,n),fillSurface:(t,n)=>qv(e,t,n)}}function Yv(e,t){let n=t;if(n.type===`solid`)return e.volume(I(t),pp);if(n.type===`compound`){let n=Mp(e,t,`solid`),r=0;for(let t of n)r+=e.volume(I(t),pp);return r}return 0}function Xv(e,t){let n=t;if(n.type===`face`)return e.faceArea(I(t),pp);if(n.type===`solid`)return e.surfaceArea(I(t),pp);if(n.type===`compound`){let n=Mp(e,t,`face`),r=0;for(let t of n)r+=e.faceArea(I(t),pp);return r}return 0}function Zv(e,t){let n=t;if(n.type===`edge`)return e.edgeLength(I(t));if(n.type===`face`)return e.facePerimeter(I(t));if(n.type===`wire`)return e.wireLength(n.id);throw Error(`brepkit: length() requires an edge, wire, or face`)}function Qv(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 $v(e,t){let r=t;if(r.type===`solid`)return n(e.centerOfMass(I(t),pp));if(r.type===`face`){let n=Yp(e,t);return Qp(e,t,(n.uMin+n.uMax)/2,(n.vMin+n.vMax)/2)}if(r.type===`edge`)return Qv(e,r.id);if(r.type===`vertex`)return qp(e,t);let i=Mp(e,t,`vertex`);if(i.length>0){let t=0,n=0,r=0;for(let a of i){let i=qp(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 ey(e,t){let n=t;return n.type===`edge`?Qv(e,n.id):$v(e,t)}function ty(e,t){let r=t;if(r.type===`solid`){let r=e.boundingBox(I(t));return{min:n(r,0),max:n(r,3)}}if(r.type===`vertex`){let n=qp(e,t);return{min:[...n],max:[...n]}}let i=Mp(e,t,`vertex`);if(i.length===0)return{min:[0,0,0],max:[0,0,0]};let a=qp(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=qp(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 ny(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 ry(e,r,i,a){let o=I(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 iy(e,n){let r=e.tessellateFace(I(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 ay(e,t){let n=n=>ny(e,t,n);return{distanceTo(e){return n(e)},dispose(){}}}function oy(e,t,n=!1){let r=t,i=r.type===`edge`||r.type===`wire`||r.type===`face`;return{volume:Yv(e,t),area:Xv(e,t),length:n&&i?Zv(e,t):0,centerOfMass:$v(e,t),boundingBox:ty(e,t)}}function sy(e){return{volume:t=>Yv(e,t),area:t=>Xv(e,t),length:t=>Zv(e,t),centerOfMass:t=>$v(e,t),linearCenterOfMass:t=>ey(e,t),boundingBox:t=>ty(e,t),distance:(t,n)=>ny(e,t,n),surfaceCurvature:(t,n,r)=>ry(e,t,n,r),surfaceCenterOfMass:t=>iy(e,t),createDistanceQuery:t=>ay(e,t),measureBulk:(t,n)=>oy(e,t,n)}}function cy(e){return e.sketchNew()}function ly(e,t,n,r,i){return e.sketchAddPoint(t,n,r,i)}function uy(e,t,n){e.sketchAddConstraint(t,n)}function dy(e,t,n,r){return e.sketchSolve(t,n,r)}function fy(e,t,n,r,i){return e.sketchAddArc(t,n,r,i)}function py(e,t){let n=e.sketchDof(t);return typeof n==`string`?n:String(n)}function my(e){return{sketchNew:()=>cy(e),sketchAddPoint:(t,n,r,i)=>ly(e,t,n,r,i),sketchAddArc:(t,n,r,i)=>fy(e,t,n,r,i),sketchAddConstraint:(t,n)=>{uy(e,t,n)},sketchSolve:(t,n,r)=>dy(e,t,n,r),sketchDof:t=>py(e,t)}}function hy(e,t,n,r){return F(e.extrude(I(t,`face`),n[0],n[1],n[2],r))}function gy(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),F(e.revolve(I(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 _y(e,t,n,r,i){let a=180/Math.PI*i;return a>360&&(a=360),F(e.revolve(I(t,`face`),n[0],n[1],n[2],r[0],r[1],r[2],a))}function vy(e,t,n,r,i){(n!==void 0||r!==void 0||i!==void 0)&&vp(`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):I(t,`face`)});return F(e.loft(a))}function yy(e){switch(e){case 0:return`rmf`;case 1:return`rightCorner`;case 2:return`roundCorner`;default:return}}function by(e,t,n,r){let i=r?.transitionMode===void 0?void 0:yy(r.transitionMode),a=t,o=a.type===`wire`?e.makeFaceFromWire(a.id):I(t,`face`);if(n.type===`wire`){let t=Mp(e,n,`edge`).map(e=>I(e,`edge`));if(i&&t.length===1){let n=t[0];if(n!==void 0)return F(e.sweepWithOptions(o,n,i,[],0,`transformed`))}return i&&t.length>1&&vp(`sweep-transition-multi-edge`,`Sweep transition mode not supported for multi-edge wires; ignored.`),F(e.sweepAlongEdges(o,t))}if(i){let t=I(n,`edge`);return F(e.sweepWithOptions(o,t,i,[],0,`transformed`))}let s=Km(e,n);if(!s)throw Error(`brepkit: sweep spine must be an edge or wire`);return F(e.sweep(o,s.degree,s.knots,s.controlPoints,s.weights))}function xy(e,t,n){let r=t,i=r.type===`wire`?e.makeFaceFromWire(r.id):I(t,`face`);if(n.type===`wire`){let t=Mp(e,n,`edge`).map(e=>I(e,`edge`));return F(e.sweepAlongEdges(i,t))}let a=Km(e,n);if(!a)throw Error(`brepkit: pipe spine must be an edge or wire`);return F(e.pipe(i,a.degree,a.knots,a.controlPoints,a.weights))}function Sy(e,t,n,r,i,a,o){let s=I(t,`face`);return F(e.helicalSweep(s,n[0],n[1],n[2],r[0],r[1],r[2],i,a,o))}function Cy(e,t,n,r,i,a){let o=I(t,`face`),s=I(n,`edge`);return F(e.sweepWithOptions(o,s,r,i,a,`transformed`))}function wy(e){switch(e){case`right`:return`rightCorner`;case`round`:return`roundCorner`;case`transformed`:return`rmf`;default:return}}function Ty(e,t,n){return n?{shape:e,firstShape:t,lastShape:t}:e}function Ey(e,t,n,r){try{return F(e.sweepWithOptions(t,n,r,[],0,`transformed`))}catch(e){console.warn(`brepkit: sweepWithOptions failed, falling back to sweepSmooth/simplePipe:`,e);return}}function Dy(e,t){try{if(t.type!==`wire`)return{edgeId:I(t,`edge`)};let n=Mp(e,t,`edge`);if(n.length===1){let e=n[0];return e?{edgeId:I(e,`edge`)}:void 0}vp(`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 Oy(e,t,n,r){let i=Dy(e,n);if(i)return Ey(e,t,i.edgeId,r)}function ky(e,t,n){let r=Km(e,n);if(!(!r||r.degree<=1))try{return F(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 Ay(e,t,n,r){let i=t,a=i.type===`wire`?e.makeFaceFromWire(i.id):I(t,`face`),o=!!(r&&r.shellMode),s=r?.transitionMode,c=s?wy(s):void 0;if(c){let r=Oy(e,a,n,c);if(r)return Ty(r,t,o)}return Ty(ky(e,a,n)||xy(e,t,n),t,o)}function jy(e,t,n){let r=t.map(t=>{let n=t;return n.type===`wire`?e.makeFaceFromWire(n.id):I(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(I(n.startVertex,`vertex`));t.startPoint=[r[0],r[1],r[2]]}if(n?.endVertex){let r=e.getVertexPosition(I(n.endVertex,`vertex`));t.endPoint=[r[0],r[1],r[2]]}return F(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 F(e.loftSmooth(r))}catch(e){console.warn(`brepkit: loftSmooth failed, falling back to basic loft:`,e)}return vy(e,t)}function My(e,t,n,r){let i={type:`extrusionLaw`,profile:t,length:n,endFactor:r,Trim(e,t,n){return i},delete:qf};return i}function Ny(e,t,n,r,i,a,o){if(i!==null){let r=hy(e,n,Zp(e,n,0,0),i);return o?ch(e,t,r):r}return t}function Py(e){return{extrude:(t,n,r)=>hy(e,t,n,r),revolve:(t,n,r)=>gy(e,t,n,r),revolveVec:(t,n,r,i)=>_y(e,t,n,r,i),loft:(t,n,r,i)=>vy(e,t,n,r,i),sweep:(t,n,r)=>by(e,t,n,r),simplePipe:(t,n)=>xy(e,t,n),helicalSweep:(t,n,r,i,a,o)=>Sy(e,t,n,r,i,a,o),sweepWithOptions:(t,n,r,i,a)=>Cy(e,t,n,r,i,a),sweepPipeShell:(t,n,r)=>Ay(e,t,n,r),loftAdvanced:(t,n)=>jy(e,t,n),buildExtrusionLaw:(t,n,r)=>My(e,t,n,r),draftPrism:(t,n,r,i,a,o)=>Ny(e,t,n,r,i,a,o)}}function Fy(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 Iy=class{oc;kernelId=`brepkit`;capabilities=a;bk;constructor(e){this.bk=e,this.oc=e;let t=this.bk;Object.assign(this,bh(t),ug(t),Py(t),Og(t),Vm(t),y_(t),z_(t),sy(t),Kp(t),Om(t),ih(t),l_(t),my(t),Jv(t),Fy(t))}};function Ly(e){throw Error(`manifold: ${e} is not implemented`)}var Ry=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 zy(e){return Ry.has(e)}function R(e,t,n){return{op:e,params:t,inputs:n,replayable:zy(e)&&n.every(e=>e.replayable)}}function z(e,t){return{manifold:e,node:t}}function B(e){return e.manifold}function By(e){return typeof e?.translate==`function`?e.translate([0,0,0]):e}function V(e){return e.node}function Vy(e){if(e&&typeof e==`object`&&`manifold`in e&&`node`in e)return e}var Hy=[`occt`,`occt-wasm`];function Uy(){for(let e of Hy)try{return H(e)}catch{}}function Wy(e){let t=Uy();if(!t)throw new c(`manifold: ${e} requires a registered occt kernel; none is available`);return t}var Gy=new WeakMap,Ky=[0,0,0],qy=[0,0,1];function Jy(e){return Math.hypot(e[0],e[1],e[2])}function Yy(e){let t=Jy(e);return t===0?[...qy]:[e[0]/t,e[1]/t,e[2]/t]}function Xy(e){let[t,n,r]=Yy(e);return[0,180/Math.PI*Math.atan2(Math.hypot(t,n),r),180/Math.PI*Math.atan2(n,t)]}function Zy(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(Xy(n))),(t[0]!==0||t[1]!==0||t[2]!==0)&&(r=r.translate(t)),r}return{makeBox:(e,n,r)=>z(t.cube([e,n,r],!1),R(`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 z(t.cube(r,!1).translate(i),R(`makeBoxWithCorners`,{p1:e,p2:n},[]))},makeCylinder:(e,r,i=Ky,a=qy)=>z(n(t.cylinder(r,e,e,0,!1),i,a),R(`makeCylinder`,{radius:e,height:r,center:i,direction:a},[])),makeSphere:(e,n=Ky)=>{let r=t.sphere(e,0);return(n[0]!==0||n[1]!==0||n[2]!==0)&&(r=r.translate(n)),z(r,R(`makeSphere`,{radius:e,center:n},[]))},makeCone:(e,r,i,a=Ky,o=qy)=>z(n(t.cylinder(i,e,r,0,!1),a,o),R(`makeCone`,{radius1:e,radius2:r,height:i,center:a,direction:o},[])),makeTorus:(r,i,a=Ky,o=qy)=>{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 z(n(t.revolve([c],0),a,o),R(`makeTorus`,{majorRadius:r,minorRadius:i,center:a,direction:o},[]))},makeEllipsoid:(e,n,r)=>z(t.sphere(1,0).scale([e,n,r]),R(`makeEllipsoid`,{aLength:e,bLength:n,cLength:r},[])),makeRectangle:()=>Ly(`makeRectangle`)}}function Qy(e){return e}function $y(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 eb(e){let t=V(Qy(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 tb(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 nb(e){let t=e.Manifold;function n(e,t,n){let r=Qy(e),i=Qy(t);return z(B(r).add(B(i)),R(`makeFuse`,{},[V(r),V(i)]))}function r(e,t,n){let r=Qy(e),i=Qy(t);return z(B(r).subtract(B(i)),R(`makeCut`,{},[V(r),V(i)]))}function i(e,t,n){let r=Qy(e),i=Qy(t);return z(B(r).intersect(B(i)),R(`makeCommon`,{},[V(r),V(i)]))}function a(e,n){if(e.length===0)throw Error(`manifold: fuseAll requires at least one shape`);let r=e.map(Qy),[i]=r;if(i===void 0)throw Error(`manifold: fuseAll requires at least one shape`);return r.length===1?i:z(t.union(r.map(B)),R(`makeFuse`,{},r.map(V)))}function o(e,n,r){let i=Qy(e);if(n.length===0)return i;let a=n.map(Qy);return z(t.difference([B(i),...a.map(B)]),R(`makeCut`,{},[V(i),...a.map(V)]))}function s(e,t,n){let r=Qy(e),{normal:i,offset:a}=eb(t),[o]=B(r).splitByPlane(i,a);return z(o,R(`section`,{normal:i,offset:a},[V(r),V(Qy(t))]))}function c(e,n){let r=Qy(e),[i]=n;if(i===void 0)throw Error(`manifold: split requires at least one tool`);let a=Qy(i),{normal:o,offset:s}=eb(i),[c,l]=B(r).splitByPlane(o,s);return z(t.union([c,l]),R(`split`,{normal:o,offset:s},[V(r),V(a)]))}function l(e,t,n){let r=[],i=Qy(e),a=Qy(t);return(B(i)===void 0||B(i).isEmpty())&&r.push({operand:`base`,issue:`null-shape`,message:`Base shape is empty`}),(B(a)===void 0||B(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 tb($y(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 rb(e){return e}function ib(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function ab(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 ob(e,t,n){let r=ib();return r[12]=e,r[13]=t,r[14]=n,r}function sb(e,t,n){let r=e,[i,a,o]=ab(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=ib();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 cb(e,t){let n=ib();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 lb(e,t){let[n,r,i]=ab(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=ib();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 ub(e,t){let n=ib();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 db(e,t,n,r,i){return z(e.transform(t),R(n,r,[i]))}function fb(e,t,n,r){let i=rb(e);return db(B(i),ob(t,n,r),`translateShape`,{x:t,y:n,z:r},V(i))}function pb(e,t,n=[0,0,1],r=[0,0,0]){let i=rb(e);return db(B(i),sb(t,n,r),`rotateShape`,{angle:t,axis:n,center:r},V(i))}function mb(e,t,n){let r=rb(e);return db(B(r),lb(t,n),`mirrorShape`,{origin:t,normal:n},V(r))}function hb(e,t,n){let r=rb(e);return db(B(r),cb(t,n),`scaleShape`,{center:t,factor:n},V(r))}function gb(e,t){if(!Array.isArray(t)||t.length!==16)throw Error(`manifold: transform expects a 16-element column-major matrix`);let n=rb(e);return db(B(n),t,`transformShape`,{matrix:[...t]},V(n))}function _b(e,t,n,r){let i=rb(e);return db(B(i),ub(t,n),`generalTransform`,{linear:t,translation:n,isOrthogonal:r},V(i))}function vb(e,t,n){let r=rb(e);return db(B(r),ub(t,n),`generalTransformNonOrthogonal`,{linear:t,translation:n},V(r))}function yb(e){let t=ib();for(let n of e)t=Tb(n.type===`translate`?ob(n.x,n.y,n.z):sb(n.angle*Math.PI/180,n.axis??[0,0,1],n.center??[0,0,0]),t);return{handle:t,dispose:()=>{}}}function bb(e,t,n,r){let i=[e];for(let a=1;a<r;a++){let r=n*a;i.push(fb(e,t[0]*r,t[1]*r,t[2]*r))}return i}function xb(e,t,n,r,i){let a=[e];for(let o=1;o<i;o++)a.push(pb(e,r*o*Math.PI/180,n,t));return a}function Sb(e,t,n,r,i,a,o,s){let c=rb(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(B(c).transform(ob(o,s,d))),u.push(V(c))}return z(l.length===1?l[0]:e.Manifold.union(l),R(`gridPattern`,{directionX:n,directionY:r,spacingX:i,spacingY:a,countX:o,countY:s},u))}function Cb(e){return e.map(e=>{switch(e.type){case`translate`:return fb(e.shape,e.x,e.y,e.z);case`rotate`:return pb(e.shape,e.angle*Math.PI/180,e.axis,e.center);case`scale`:return hb(e.shape,e.center,e.factor);case`mirror`:return mb(e.shape,e.origin,e.normal)}})}function wb(e){return{composeTransform:yb,transform:gb,locate:gb,translate:fb,rotate:pb,mirror:mb,scale:hb,generalTransform:_b,generalTransformNonOrthogonal:vb,positionOnCurve:()=>Ly(`positionOnCurve`),linearPattern:bb,circularPattern:xb,gridPattern:(t,n,r,i,a,o,s)=>Sb(e,t,n,r,i,a,o,s),transformBatch:Cb}}function Tb(e,t){let n=ib();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 Eb=2*Math.PI,Db=e=>Math.hypot(e[0],e[1],e[2]),Ob=(e,t)=>[e[0]-t[0],e[1]-t[1],e[2]-t[2]];function kb(e){return Db(Ob(e.p2,e.p1))}function Ab(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 jb(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 Mb(e){return e.k===`line`?{first:0,last:kb(e)}:e.k===`conic`?{first:e.a0,last:e.a1}:e.k===`helix`?{first:0,last:Eb*e.turns}:{first:0,last:1}}function Nb(e,t){if(e.k===`line`){let n=t/(kb(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 Ab(e.points,t);if(e.k===`helix`){let n=Math.cos(t),r=Math.sin(t),i=e.pitch*t/Eb;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 Pb(e,t){let n;if(e.k===`line`)n=Ob(e.p2,e.p1);else if(e.k===`bezier`){let r=Ab(e.points,Math.max(0,t-1e-4));n=Ob(Ab(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/Eb;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=Db(n)||1;return[n[0]/r,n[1]/r,n[2]/r]}function Fb(e){if(e.k===`line`)return kb(e);if(e.k===`helix`){let t=Eb*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-Eb)<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 zb(t=>Nb(e,t),e.a0,e.a1,256)}return zb(t=>Nb(e,t),0,1,128)}function Ib(e){return e.k===`conic`?Math.abs(Math.abs(e.a1-e.a0)-Eb)<1e-9:!1}function Lb(e){return Ib(e)}function Rb(e){return e.k===`conic`?Eb:0}function zb(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+=Db(Ob(s,a)),a=s}return i}function Bb(e){return e}function Vb(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Hb(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 Ub(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function Wb(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function Gb(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Kb(e){return Math.hypot(e[0],e[1],e[2])}function qb(e){let t=Kb(e);return t<1e-12?[0,0,1]:[e[0]/t,e[1]/t,e[2]/t]}function Jb(e){return qb(Hb(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function Yb(e){let t=qb(e),n=Jb(t);return{xAxis:n,yAxis:qb(Hb(t,n))}}function Xb(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 Zb(e){return Xb(e)<0?[...e].reverse():e}function Qb(e){return Xb(e)>0?[...e].reverse():e}function $b(e){return e.node?.params}function ex(e){let t=Bb(e),n=$b(t),r=n?.outline??n?.polygon??n?.points;if(r&&r.length>=3){let e=n?.origin??[0,0,0],t=Zb(r.map(e=>[e[0],e[1]])),i=(n?.holes)?.filter(e=>e.length>=3).map(e=>Qb(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}=Yb(n?.normal??[0,0,1]);return{outline:t,holes:i,origin:e,xAxis:a,yAxis:o}}return tx(t)}function tx(e){let t=B(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=nx(i);return{outline:Zb(o.length>=3?o:[[-.5,-.5],[.5,-.5],[0,.5]]),origin:[0,0,a],xAxis:[1,0,0],yAxis:[0,1,0]}}function nx(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 rx(e){let t=[];for(let n=1;n+1<e;n++)t.push(0,n,n+1);return t}function ix(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 ax(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 ox(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=cx(t.length,n),a=new e.Mesh({numProp:3,vertProperties:Float32Array.from(r),triVerts:Uint32Array.from(i)});return sx(e,new e.Manifold(a))}function sx(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 cx(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=rx(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=rx(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 lx(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 qb(Ub(e[Math.min(e.length-1,t+1)]??e[t]??[0,0,0],n))},i=r(0),a=qb(Ub(t,Gb(i,Vb(t,i))));Kb(a)<1e-9&&(a=Jb(i)),n.push({origin:e[0]??[0,0,0],xAxis:a,yAxis:qb(Hb(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=Ub(s,o),l=Vb(c,c),u=a;if(l>1e-18){let e=Ub(a,Gb(c,2/l*Vb(c,a))),n=Ub(i,Gb(c,2/l*Vb(c,i))),o=Ub(r(t),n),s=Vb(o,o);u=s>1e-18?Ub(e,Gb(o,2/s*Vb(o,e))):e}let d=r(t),f=qb(Ub(u,Gb(d,Vb(u,d)))),p=qb(Hb(d,f));n.push({origin:s,xAxis:f,yAxis:p,tangent:d}),i=d,a=f}return n}var ux=24,dx=24,fx=null;function px(e){let t=fx?fx(Math.max(Math.abs(e),1e-6)):ux;return Math.max(ux,t)}var mx=[0,0,0],hx=1e-6,gx={delete:()=>{},isEmpty:()=>!1};function _x(e,t){return e[t]??mx}function vx(e,t=1){return Math.max(2,Math.ceil(Math.abs(e)/(2*Math.PI)*px(t)))}function yx(e){return qb(Hb(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function bx(e,t,n,r,i,a){let o=qb(t),s=a?qb(a):yx(o),c=qb(Hb(o,s)),l=i-r,u=vx(l,n),d=[];for(let t=0;t<=u;t++){let i=r+l*t/u;d.push(Wb(e,Wb(Gb(s,n*Math.cos(i)),Gb(c,n*Math.sin(i)))))}return d}function xx(e,t,n){let r=Ub(t,e),i=Ub(n,e),a=Hb(r,i);if(Kb(a)<1e-12)return[e,t,n];let o=qb(a),s=Vb(r,r),c=Vb(i,i),l=Vb(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=Wb(e,Wb(Gb(r,d),Gb(i,f))),m=Kb(Ub(e,p)),h=qb(Ub(e,p)),g=qb(Hb(o,h)),_=(e=>Math.atan2(Vb(Ub(e,p),g),Vb(Ub(e,p),h)))(n);return _<0&&(_+=2*Math.PI),bx(p,o,m,0,_,h)}function Sx(e){let t=[];for(let n=0;n<=dx;n++){let r=n/dx,i=e.map(e=>[...e]);for(let e=1;e<i.length;e++)for(let t=0;t<i.length-e;t++){let e=_x(i,t),n=_x(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(_x(i,0))}return t}function Cx(e){let t=0,n=0,r=0;for(let i=0;i<e.length;i++){let a=_x(e,i),o=_x(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 Kb(i)<1e-12?[0,0,1]:qb(i)}function wx(e,t){return Kb(Ub(e,t))<hx}function Tx(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=_x(n,n.length-1),a=wx(_x(r,0),i),o=wx(_x(r,r.length-1),i);!a&&o&&(r=[...r].reverse());let s=wx(_x(r,0),i);for(let e=+!!s;e<r.length;e++)n.push(_x(r,e))}return n.length>1&&wx(_x(n,0),_x(n,n.length-1))&&n.pop(),n}function Ex(e){let t=Cx(e),n=_x(e,0),r=e.length>1?qb(Ub(_x(e,1),n)):yx(t);r=qb(Ub(r,Gb(t,Vb(r,t)))),Kb(r)<1e-9&&(r=yx(t));let i=qb(Hb(t,r));return{outline:Zb(e.map(e=>{let t=Ub(e,n);return[Vb(t,r),Vb(t,i)]})),origin:n,xAxis:r,yAxis:i}}var Dx=12;function Ox(e,t){let[n,r]=e.curveParameters(t),i=Dx;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 kx(e,t){return Tx(e.iterShapes(t,`edge`).map(t=>Ox(e,t)))}function Ax(e){let t=e.getCircularSegments;typeof t==`function`&&(fx=e=>t(e));function n(e,t){return z(gx,R(`profileEdge`,t?{pts:e,curve:t}:{pts:e},[]))}function r(e,t){let n=qb(e),r=t?qb(t):yx(n);return{x:r,y:qb(Hb(n,r))}}function i(e,t,n){let r=Ub(t,e),i=Ub(n,e),a=Hb(r,i);if(Kb(a)<1e-12)return;let o=qb(a),s=Vb(r,r),c=Vb(i,i),l=Vb(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=Wb(e,Wb(Gb(r,d),Gb(i,f))),m=Kb(Ub(e,p)),h=qb(Ub(e,p)),g=qb(Hb(o,h)),_=Math.atan2(Vb(Ub(n,p),g),Vb(Ub(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=Vy(e);if(t){let e=t.node.params;return e?.ring??e?.pts??[]}let n=Uy();return n?Ox(n,e):[]}function o(e){let t=[];for(let n of e){let e=Vy(n);e&&t.push(V(e))}return t}function s(e){let t=Tx(e.map(e=>a(e)));return z(gx,R(`profileWire`,{ring:t,...t.length>=3?Ex(t):void 0},o(e)))}function c(e,t){let{outline:n,origin:r,xAxis:i,yAxis:a}=Ex(e);return z(gx,R(`profileFace`,{outline:n,origin:r,xAxis:i,yAxis:a},t?[t]:[]))}function l(e){let t=Vy(e);if(t){let e=t.node.params?.ring??[];if(e.length>=3)return c(e,V(t))}let n=Uy();return c(n?kx(n,e):[],t?V(t):void 0)}function u(e,t){let n=Vy(e),r=n?.node?.params??{},i=r.origin??mx,a=r.xAxis??[1,0,0],s=r.yAxis??[0,1,0],c=e=>{let t=Ub(e,i);return[Vb(t,a),Vb(t,s)]},l=[];for(let e of t){let t=Vy(e),n;if(t)n=t.node.params?.ring??[];else{let t=Uy();n=t?kx(t,e):[]}n.length>=3&&l.push(n.map(c))}let u=[...r.holes??[],...l],d=n?[V(n),...o(t)]:o(t);return z(gx,R(`profileFace`,{outline:r.outline??[],holes:u,origin:i,xAxis:a,yAxis:s},d))}function d(e,t,n,r,i){let a=qb(t),o=i?qb(i):yx(a),s=qb(Hb(a,o)),c=[],l=px(Math.max(n,r));for(let t=0;t<=l;t++){let i=2*Math.PI*t/l;c.push(Wb(e,Wb(Gb(o,n*Math.cos(i)),Gb(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(bx(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(bx(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(xx(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(Sx(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=qb(a),c=yx(s),l=qb(Hb(s,c)),u=o?Gb(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*ux)),m=[];for(let e=0;e<=p;e++)m.push(Nb(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 jx(e){let t=e.Manifold,n=Ax(e);function r(e,n){let r=e.map(e=>[e.x,e.y,e.z]);return z(t.hull(r),R(`hullFromPoints`,{points:r,tolerance:n},[]))}function i(e,n){let r=e.map(e=>B(e));return z(t.hull(r),R(`hull`,{tolerance:n},e.map(e=>V(e))))}function a(e){let n=e.map(e=>B(e)),r=n[0];if(!r)throw Error(`manifold: makeCompound requires at least one input shape`);return z(n.length===1?r:t.union(n),R(`makeCompound`,{},e.map(e=>V(e))))}function o(e,t){let n=e[0];return n||Ly(`sewAndSolidify (no input faces on manifold kernel)`),z(B(n),R(`sewAndSolidify`,{tolerance:t},e.map(e=>V(e))))}return{makeVertex:(e,t,r)=>n.makeVertex(e,t,r),makeEdge:()=>Ly(`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:()=>Ly(`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:()=>Ly(`solidFromShell`),hull:i,hullFromPoints:r,buildSolidFromFaces:()=>Ly(`buildSolidFromFaces`),makeNonPlanarFace:()=>Ly(`makeNonPlanarFace`),addHolesInFace:(e,t)=>n.addHolesInFace(e,t),removeHolesFromFace:()=>Ly(`removeHolesFromFace`),makeFaceOnSurface:()=>Ly(`makeFaceOnSurface`),bsplineSurface:(e,t,n)=>Wy(`bsplineSurface`).bsplineSurface(e,t,n),triangulatedSurface:(e,t,n)=>Wy(`triangulatedSurface`).triangulatedSurface(e,t,n),buildTriFace:()=>Ly(`buildTriFace`),sewAndSolidify:o,createPoint3d:()=>Ly(`createPoint3d`),createDirection3d:()=>Ly(`createDirection3d`),createVector3d:()=>Ly(`createVector3d`),createAxis1:()=>Ly(`createAxis1`),createAxis2:()=>Ly(`createAxis2`),createAxis3:()=>Ly(`createAxis3`)}}var Mx=Math.PI/180;function Nx(e){return e}function Px(e){let t=180/Math.PI*e;return t>360?360:t}function Fx(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 Ix(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=Fx(n.Location()),t=Fx(n.Direction());if(e&&t)return{origin:e,direction:t}}}}function Lx(e){return e.outline.map(e=>[e[0],e[1]])}function Rx(e){return{outline:e.outline,origin:e.origin,xAxis:e.xAxis,yAxis:e.yAxis}}function zx(e){return{origin:e.origin,xAxis:e.xAxis,yAxis:e.yAxis,tangent:qb(Hb(e.xAxis,e.yAxis))}}function Bx(e){let t=0;for(let n of e.outline)t=Math.max(t,Math.hypot(n[0],n[1]));return t||1}function Vx(e){let t=B(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 Hx(e,t){let n=Nx(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=Vx(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 Ux(e){return e?.node??R(`spine`,{},[])}function Wx(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 Gx(e,t,n){let r=qb(n);return e.outline.map(n=>{let i=Ub(Wb(e.origin,Wb(Gb(e.xAxis,n[0]),Gb(e.yAxis,n[1]))),t),a=i[0]*r[0]+i[1]*r[1]+i[2]*r[2];return[Kb(Ub(i,Gb(r,a))),a]})}function Kx(e,t,n){let r=e,i=qb(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=Hb([0,1,0],i);Kb(t)<1e-9&&(t=[1,0,0]),t=qb(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 qx(e,t,n,r,i){let a=qb(t),{xAxis:o,yAxis:s}=Yb(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=Wb(Gb(o,n*Math.cos(i)),Gb(s,n*Math.sin(i)));d.push(Wb(e,Wb(f,Gb(a,u*r))))}return d}function Jx(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 Yx(e,t,n,r){let i=ex(t),a=qb([n[0],n[1],n[2]]),o=Kb([n[0]*r,n[1]*r,n[2]*r]),s=[Lx(i),...(i.holes??[]).map(e=>e.map(e=>[e[0],e[1]]))];return z(Wx(sx(e,e.Manifold.extrude(s,o)),i,a),R(`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},[V(Nx(t))]))}function Xx(e,t,n,r,i,a,o){let s=ex(t),c=Px(i),l=Gx(s,n,r);return z(Kx(e.Manifold.revolve([l],0,c),n,r),R(a,o,[V(Nx(t))]))}function Zx(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 Qx(e,t,n,r){if(t.length<2)throw Error(`manifold: loft requires at least two profiles`);let i=t.map(ex),a=i.reduce((e,t)=>Math.max(e,t.outline.length),0),o=i.map(e=>ax({...e,outline:ix(e.outline,a)},zx(e)));for(let e=1;e<o.length;e++)o[e]=Zx(o[e]??[],o[e-1]??[]);return z(ox(e,o),R(n,{sections:i.map(Rx),...r},t.map(e=>V(Nx(e)))))}function $x(e,t,n,r,i,a,o){let s=ex(t),c=lx(n,s.xAxis),l=c.length;return z(ox(e,c.map((e,t)=>{let n=o?o(l>1?t/(l-1):0):1;return ax(s,e,n)})),R(i,{section:Rx(s),path:n.map(e=>[e[0],e[1],e[2]]),...a},[V(Nx(t)),r]))}function eS(e,t,n,r,i,a){if(r===null)return t;let o=ex(n),s=qb(Hb(o.xAxis,o.yAxis)),c=Math.tan(i*Mx),l={origin:Wb(o.origin,Gb(s,r)),xAxis:o.xAxis,yAxis:o.yAxis,tangent:s},u=1+c*r/Bx(o),d=ox(e,[ax(o,zx(o),1),ax(o,l,u)]),f=R(`draftPrism`,{outline:o.outline,origin:o.origin,xAxis:o.xAxis,yAxis:o.yAxis,height:r,angleDeg:i,fuse:a},[V(Nx(n))]);if(a){let e=Nx(t);return z(B(e).add(d),R(`makeFuse`,{},[V(e),f]))}return z(d,f)}function tS(e){return{revolve:(t,n,r)=>{let i=Ix(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 Xx(e,t,a,o,r,`revolve`,{...Rx(ex(t)),axisOrigin:[a[0],a[1],a[2]],axisDirection:[o[0],o[1],o[2]],angleDeg:Px(r)})},revolveVec:(t,n,r,i)=>Xx(e,t,n,r,i,`revolveVec`,{...Rx(ex(t)),center:[n[0],n[1],n[2]],direction:[r[0],r[1],r[2]],angleDeg:Px(i)})}}function nS(e){return{sweep:(t,n,r)=>{let i={};return r?.transitionMode!==void 0&&(i.transitionMode=r.transitionMode),$x(e,t,Hx(n,16),Ux(n),`sweep`,i)},simplePipe:(t,n)=>$x(e,t,Hx(n,16),Ux(n),`simplePipe`,{}),sweepWithOptions:(t,n,r,i,a)=>$x(e,t,Hx(n,Math.max(2,a||16)),Ux(n),`sweepWithOptions`,{contactMode:r,scaleValues:[...i],segments:a},Jx(i)),sweepPipeShell:(t,n,r)=>{let i={};r?.transitionMode!==void 0&&(i.transitionMode=r.transitionMode);let a=$x(e,t,Hx(n,16),Ux(n),`sweepPipeShell`,i);return r?.shellMode?{shape:a,firstShape:t,lastShape:t}:a},helicalSweep:(t,n,r,i,a,o)=>$x(e,t,qx(n,r,i,a,o),Ux(t),`helicalSweep`,{axisOrigin:[n[0],n[1],n[2]],axisDirection:[r[0],r[1],r[2]],radius:i,pitch:a,turns:o})}}function rS(e){return{extrude:(t,n,r)=>Yx(e,t,n,r),...tS(e),loft:(t,n)=>Qx(e,t,`loft`,{ruled:n??!1}),loftAdvanced:(t,n)=>Qx(e,t,`loftAdvanced`,{solid:n?.solid??!0,ruled:n?.ruled??!1,tolerance:n?.tolerance}),...nS(e),draftPrism:(t,n,r,i,a,o)=>eS(e,t,n,i,a,o),buildExtrusionLaw:(e,t,n)=>({type:`extrusionLaw`,profile:e,length:t,endFactor:n}),loftBatch:()=>Ly(`loftBatch`),extrudeBatch:t=>t.map(t=>Yx(e,t.face,t.direction,t.length))}}var iS=16;function aS(e,t,n){if(!(n>0))return By(t);let r=cS(e,n);return r===void 0||typeof t?.minkowskiDifference!=`function`||typeof t?.minkowskiSum!=`function`?By(t):t.minkowskiDifference(r).minkowskiSum(r)}function oS(e,t,n){if(n===0)return By(t);let r=cS(e,Math.abs(n));return r===void 0?By(t):n>0?typeof t?.minkowskiSum==`function`?t.minkowskiSum(r):By(t):typeof t?.minkowskiDifference==`function`?t.minkowskiDifference(r):By(t)}function sS(e,t,n,r){if(n===0)return By(t);if(r)return oS(e,t,Math.abs(n));let i=oS(e,t,-Math.abs(n));return typeof t?.subtract==`function`?t.subtract(i):By(t)}function cS(e,t){let n=e?.Manifold;if(typeof n?.sphere==`function`)return n.sphere(t,iS)}function lS(e){return e}function uS(e){let t=e;if(t!=null){if(typeof t.index==`number`)return t.index;if(typeof t.id==`number`)return t.id}}function dS(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 fS(e){let t=e;if(t?.box!==void 0)return dS(t.box);let n=(e?.manifold)?.boundingBox?.();return n===void 0?void 0:dS(n)}function pS(e){let t=e.length;if(t===0)return{kind:`all`,count:t};let n=[];for(let t of e){let e=fS(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=uS(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 mS(e){return typeof e==`function`&&Ly(`fillet (per-edge radius callback)`),e}function hS(e){return typeof e==`number`?e:e[0]}function gS(e){let t=e.match(/[-+]?\d*\.?\d+/);return t?Number(t[0]):0}function _S(e,t,n,r,i){let a=lS(n),o=mS(i),s=pS(r);return z(aS(e,B(a),hS(o)),R(t,{radius:o,selection:s},[V(a)]))}function vS(e,t,n,r,i){let a=lS(t),o=pS(n);return z(aS(e,B(a),r),R(`chamferDistAngle`,{distance:r,angleDeg:i,selection:o},[V(a)]))}function yS(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]),sx(e,B(t).subtract(d))}catch{return}}function bS(e,t,n,r,i){let a=lS(t),o=pS(n);return z(yS(e,a,r)??sS(e,B(a),r,!1),R(`shell`,i===void 0?{thickness:r,selection:o}:{thickness:r,selection:o,tolerance:i},[V(a)]))}function xS(e,t,n){let r=lS(t);return z(sS(e,B(r),n,!0),R(`thicken`,{thickness:n},[V(r)]))}function SS(e,t,n,r){let i=lS(t);return z(oS(e,B(i),n),R(`offset`,r===void 0?{distance:n}:{distance:n,tolerance:r},[V(i)]))}function CS(e,t,n){let r=lS(t);return z(aS(e,B(r),gS(n)),R(`filletVariable`,{spec:n},[V(r)]))}function wS(e,t,n,r,i){typeof i==`function`&&Ly(`draft (per-face angle callback)`);let a=lS(e),o=pS(t);return z(By(B(a)),R(`draft`,{pullDirection:n,neutralPlane:r,angleDeg:i,selection:o},[V(a)]))}function TS(e,t){let n=lS(e),r=pS(t);return z(By(B(n)),R(`defeature`,{selection:r},[V(n)]))}function ES(e){let t=lS(e),n=B(t);return z(typeof n?.simplify==`function`?n.simplify():By(n),R(`simplify`,{},[V(t)]))}function DS(e){let t=lS(e),n=B(t);return z(typeof n?.mirror==`function`?n.mirror([1,0,0]):By(n),R(`reverseShape`,{},[V(t)]))}function OS(e,t){let n=lS(t.shape),r=pS(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 z(aS(e,B(n),a),R(`fillet`,{radii:i,selection:r},[V(n)]))}function kS(e){return{fillet:(t,n,r)=>_S(e,`fillet`,t,n,r),chamfer:(t,n,r)=>_S(e,`chamfer`,t,n,r),chamferDistAngle:(t,n,r,i)=>vS(e,t,n,r,i),shell:(t,n,r,i)=>bS(e,t,n,r,i),thicken:(t,n)=>xS(e,t,n),offset:(t,n,r)=>SS(e,t,n,r),filletVariable:(t,n)=>CS(e,t,n),draft:(e,t,n,r,i)=>wS(e,t,n,r,i),defeature:(e,t)=>TS(e,t),offsetWire2D:()=>Ly(`offsetWire2D`),simplify:e=>ES(e),reverseShape:e=>DS(e),shellBatch:t=>t.map(t=>bS(e,t.shape,t.faces,t.thickness,t.tolerance)),filletBatch:t=>t.map(t=>OS(e,t))}}function AS(e){return B(e).getMesh()}function jS(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 MS(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 NS(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 PS(e,t){let n=AS(e),r=jS(n),i=new Uint32Array(n.triVerts);return{vertices:r,normals:t.skipNormals?new Float32Array:MS(r,i),triangles:i,uvs:t.includeUVs?new Float32Array(r.length/3*2):new Float32Array,faceGroups:NS(n)}}function FS(e,t,n){let r=AS(e),i=jS(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 IS(e){return!0}function LS(e){return{mesh:(e,t)=>PS(e,t),meshEdges:(e,t,n)=>FS(e,t,n),hasTriangulation:e=>IS(e),meshShape:(e,t,n)=>{}}}function RS(e,t=[0,0,0]){return Array.isArray(e)&&e.length>=3?[Number(e[0]),Number(e[1]),Number(e[2])]:[...t]}function zS(e,t=0){return typeof e==`number`?e:t}function BS(e,t=``){return typeof e==`string`?e:t}function VS(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function HS(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function US(e,t,n,r){return VS(t,VS(HS(n,e[0]),HS(r,e[1])))}function WS(e,t){let n=t.outline??[];if(n.length<3)throw Error(`manifold replay: profile outline needs at least three points`);let r=RS(t.origin),i=RS(t.xAxis,[1,0,0]),a=RS(t.yAxis,[0,1,0]),o=n.map(e=>US(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 GS(e,t){return WS(e,t)}function KS(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 qS(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 JS(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=>KS(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=qS(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(KS(e,t)))}function YS(e){let t=e.selection;return t===void 0?void 0:t}function XS(e){let t=e[0];if(t===void 0)throw Error(`manifold replay: op requires an input shape`);return t}function ZS(e,t,n){return e.createAxis1(t[0],t[1],t[2],n[0],n[1],n[2])}function QS(e,t){return(n,r)=>{let i=WS(n,r),a=RS(r[e]),o=RS(r[t],[0,0,1]),s=zS(r.angleDeg,360);return n.revolve(i,ZS(n,a,o),Math.PI/180*s)}}var $S={makeBox:(e,t)=>e.makeBox(zS(t.width),zS(t.height),zS(t.depth)),makeBoxWithCorners:(e,t)=>e.makeBoxFromCorners(RS(t.p1),RS(t.p2)),makeCylinder:(e,t)=>e.makeCylinder(zS(t.radius),zS(t.height),RS(t.center),RS(t.direction,[0,0,1])),makeSphere:(e,t)=>e.makeSphere(zS(t.radius),RS(t.center)),makeCone:(e,t)=>e.makeCone(zS(t.radius1),zS(t.radius2),zS(t.height),RS(t.center),RS(t.direction,[0,0,1])),makeTorus:(e,t)=>e.makeTorus(zS(t.majorRadius),zS(t.minorRadius),RS(t.center),RS(t.direction,[0,0,1])),makeEllipsoid:(e,t)=>e.makeEllipsoid(zS(t.aLength),zS(t.bLength),zS(t.cLength)),makeFuse:(e,t,n)=>{if(n.length<2)return XS(n);let r=XS(n);for(let t of n.slice(1))r=e.fuse(r,t);return r},makeCut:(e,t,n)=>{let r=XS(n);return e.cutAll(r,n.slice(1))},makeCommon:(e,t,n)=>{let r=XS(n);for(let t of n.slice(1))r=e.intersect(r,t);return r},translateShape:(e,t,n)=>e.translate(XS(n),zS(t.x),zS(t.y),zS(t.z)),rotateShape:(e,t,n)=>e.rotate(XS(n),zS(t.angle),RS(t.axis,[0,0,1]),RS(t.center)),scaleShape:(e,t,n)=>e.scale(XS(n),RS(t.center),zS(t.factor,1)),mirrorShape:(e,t,n)=>e.mirror(XS(n),RS(t.origin),RS(t.normal,[1,0,0])),transformShape:(e,t,n)=>e.transform(XS(n),t.matrix),generalTransform:(e,t,n)=>e.generalTransform(XS(n),t.linear,RS(t.translation),!!t.isOrthogonal),generalTransformNonOrthogonal:(e,t,n)=>e.generalTransformNonOrthogonal(XS(n),t.linear,RS(t.translation)),gridPattern:(e,t,n)=>{if(typeof e.gridPattern!=`function`)throw Error(`manifold replay: target kernel lacks gridPattern`);return e.gridPattern(XS(n),RS(t.directionX),RS(t.directionY),zS(t.spacingX),zS(t.spacingY),zS(t.countX,1),zS(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)=>WS(e,t),extrude:(e,t)=>{let n=WS(e,t);return e.extrude(n,RS(t.direction,[0,0,1]),zS(t.length,1))},revolve:QS(`axisOrigin`,`axisDirection`),revolveVec:QS(`center`,`direction`),loft:(e,t)=>{let n=(t.sections??[]).map(t=>eC(e,t));return e.loft(n,!!t.ruled)},loftAdvanced:(e,t)=>{let n=(t.sections??[]).map(t=>eC(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(tC(e,t),nC(e,t)),simplePipe:(e,t)=>e.simplePipe(tC(e,t),nC(e,t)),sweepWithOptions:(e,t)=>e.sweepWithOptions(tC(e,t),nC(e,t),BS(t.contactMode),t.scaleValues??[],zS(t.segments,0)),sweepPipeShell:(e,t)=>{let n=e.sweepPipeShell(tC(e,t),nC(e,t));return rC(n)?n.shape:n},helicalSweep:(e,t)=>e.helicalSweep(tC(e,t),RS(t.axisOrigin),RS(t.axisDirection,[0,0,1]),zS(t.radius),zS(t.pitch),zS(t.turns,1)),draftPrism:(e,t)=>{let n=WS(e,t);return e.draftPrism(n,n,n,zS(t.height),zS(t.angleDeg),!!t.fuse)},fillet:(e,t,n)=>{let r=XS(n),i=JS(e,r,YS(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=XS(n),i=JS(e,r,YS(t),`edge`);return e.chamfer(r,i,t.radius)},chamferDistAngle:(e,t,n)=>{let r=XS(n),i=JS(e,r,YS(t),`edge`);return e.chamferDistAngle(r,i,zS(t.distance),zS(t.angleDeg))},shell:(e,t,n)=>{let r=XS(n),i=JS(e,r,YS(t),`face`);return typeof t.tolerance==`number`?e.shell(r,i,zS(t.thickness),t.tolerance):e.shell(r,i,zS(t.thickness))},thicken:(e,t,n)=>e.thicken(XS(n),zS(t.thickness)),offset:(e,t,n)=>typeof t.tolerance==`number`?e.offset(XS(n),zS(t.distance),t.tolerance):e.offset(XS(n),zS(t.distance)),filletVariable:(e,t,n)=>e.filletVariable(XS(n),BS(t.spec)),draft:(e,t,n)=>{let r=XS(n),i=JS(e,r,YS(t),`face`);return e.draft(r,i,RS(t.pullDirection,[0,0,1]),RS(t.neutralPlane),zS(t.angleDeg))},defeature:(e,t,n)=>{let r=XS(n),i=JS(e,r,YS(t),`face`);return e.defeature(r,i)},simplify:(e,t,n)=>e.simplify(XS(n)),reverseShape:(e,t,n)=>e.reverseShape(XS(n)),hull:(e,t,n)=>e.hull([...n],zS(t.tolerance)),hullFromPoints:(e,t)=>{let n=t.points??[];return e.hullFromPoints(n.map(e=>({x:e[0],y:e[1],z:e[2]})),zS(t.tolerance))},sewAndSolidify:(e,t,n)=>e.sewAndSolidify([...n],zS(t.tolerance))};function eC(e,t){let n=GS(e,t);return e.iterShapes(n,`wire`)[0]??n}function tC(e,t){let n=t.section;return n?GS(e,n):WS(e,t)}function nC(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 rC(e){return typeof e==`object`&&!!e&&`shape`in e&&`firstShape`in e&&`lastShape`in e}function iC(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=$S[e.op];if(!a)throw Error(`manifold replay: no replay handler for op '${e.op}'`);let o=e.inputs.map(e=>iC(e,t,n,r)),s=a(t,e.params,o);return n.set(e,s),r.add(s),s}function aC(e,t,n=new Map){let r=new Set,i=iC(e,t,n,r);for(let e of r)e!==i&&t.dispose(e);return i}function oC(e){return B(e)}function sC(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 cC(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 lC(e){let t=e;if(t&&t.__manifoldSub&&t.box)return t.box;let n=sC(e);return n?cC(n):oC(e).boundingBox()}function uC(e){return oC(e)?.getMesh?.()}function dC(e,t){let n=t*e.numProp;return[e.vertProperties[n]??0,e.vertProperties[n+1]??0,e.vertProperties[n+2]??0]}function fC(e,t){let n=t*3;return[e.triVerts[n]??0,e.triVerts[n+1]??0,e.triVerts[n+2]??0]}function pC(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 mC(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function hC(e){let t=lC(e);return[(t.min[0]+t.max[0])/2,(t.min[1]+t.max[1])/2,(t.min[2]+t.max[2])/2]}function gC(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=dC(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 _C(e){let t=uC(e);if(!t)return hC(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]=fC(t,e),s=dC(t,n),c=dC(t,a),l=dC(t,o),u=mC(s,pC(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?gC(t):[i[0]/r,i[1]/r,i[2]/r]}function vC(e){let t=uC(e);if(!t)return hC(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]=fC(t,e),s=dC(t,n),c=dC(t,a),l=dC(t,o),u=pC([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?gC(t):[i[0]/r,i[1]/r,i[2]/r]}function yC(e){return oC(e).volume()}function bC(e){let t=e;return t&&t.__nativeFace&&typeof t.area==`number`?t.area:oC(e).surfaceArea()}function xC(e){let t=e;if(t&&t.__manifoldSub&&t.box)return{min:[...t.box.min],max:[...t.box.max]};let n=lC(e);return{min:[...n.min],max:[...n.max]}}function SC(e){return _C(e)}function CC(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 wC(e,t){return CC(lC(e),lC(t))}function TC(e,t=!1){return{volume:yC(e),area:bC(e),length:0,centerOfMass:SC(e),boundingBox:xC(e)}}function EC(e,t,n){let r=Uy();if(!r)throw new c(`manifold: surfaceCurvature requires a registered occt kernel; none is available`);let i=Vy(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=Gy.get(i.node)??(()=>{let e=aC(i.node,r);return Gy.set(i.node,e),e})();return r.surfaceCurvature(a,t,n)}function DC(e){return{volume:e=>yC(e),area:e=>bC(e),length:e=>{let t=e;if(t&&t.__nativeEdge&&typeof t.length==`number`)return t.length;let n=Vy(e)?.node;return n?.op===`profileEdge`&&n.params?.curve?Fb(n.params.curve):Ly(`length`)},centerOfMass:e=>SC(e),linearCenterOfMass:e=>SC(e),boundingBox:e=>xC(e),distance:(e,t)=>wC(e,t),surfaceCurvature:(e,t,n)=>EC(e,t,n),surfaceCenterOfMass:e=>vC(e),measureBulk:(e,t)=>TC(e,t),createDistanceQuery:e=>({distanceTo:t=>wC(e,t),dispose:()=>{}})}}function OC(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 kC(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:OC(t,r[0]??0),normal:S,center:C,area:f,min:[p,m,h],max:[g,_,v],tris:y})}return l}function AC(e){return!!e&&typeof e==`object`&&e.__nativeFace===!0}var jC=Math.cos(45*Math.PI/180),MC=(e,t)=>e<t?e*1e9+t:t*1e9+e,NC=(e,t)=>e<t?`${e},${t}`:`${t},${e}`;function PC(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=MC(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]>jC)continue;let s=NC(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 FC(t))d.push(IC(e,n,s));return d}function FC(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 IC(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:LC(i)?`LINE`:`CIRCLE`}}function LC(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 RC(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 zC(e){return!!e&&typeof e==`object`&&e.__nativeVertex===!0}function BC(e){return!!e&&typeof e==`object`&&e.__nativeEdge===!0}function VC(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 HC(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 UC(e,t){let n=Vy(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=Wy(t),i=Gy.get(n.node);if(i!==void 0)return{occt:r,brep:i};let a=aC(n.node,r);return Gy.set(n.node,a),{occt:r,brep:a}}function WC(e){if(Vy(e))return`solid`;let{occt:t,brep:n}=UC(e,`shapeType`);return t.shapeType(n)}function GC(e,t){let n=Vy(e),r=Vy(t);return!n||!r?!1:n.manifold===r.manifold}function KC(e,t){if(!Vy(e))return 0;let{occt:n,brep:r}=UC(e,`hashCode`);return n.hashCode(r,t)}function qC(e){let t=Vy(e);return t?!B(t):!0}function JC(e,t){let n=Vy(e);if(!n)return[];if(t===`solid`)return[e];if(t===`vertex`){let e=B(n);return e&&typeof e.getMesh==`function`?RC(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=B(n);if(e&&typeof e.getMesh==`function`)return kC(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=B(n);if(e&&typeof e.getMesh==`function`)return PC(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=Uy();if(!r)return[];let i=Gy.get(n.node)??(()=>{let e=aC(n.node,r);return Gy.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 YC(e){let{occt:t,brep:n}=UC(e,`edgeToFaceMap`);return t.edgeToFaceMap(n)}function XC(e,t){let{occt:n,brep:r}=UC(e,`adjacentFaces`);return n.adjacentFaces(r,t)}function ZC(e){return{iterShapes:JC,iterShapeList:(e,t)=>{Wy(`iterShapeList`).iterShapeList(e,t)},shapeType:WC,isSame:GC,isEqual:GC,downcast:e=>e,copyShape:e=>{let t=Vy(e);return t?z(By(B(t)),R(`translateShape`,{x:0,y:0,z:0},[t.node])):e},hashCode:KC,isNull:qC,shapeOrientation:e=>`forward`,edgeToFaceMap:YC,sharedEdges:(e,t)=>Wy(`sharedEdges`).sharedEdges(e,t),adjacentFaces:XC,sew:()=>{throw Error(`manifold: sew is unsupported on the mesh kernel; use a B-rep kernel`)}}}function QC(e){return B(e).getMesh()}function $C(e){return e.numProp&&e.numProp>=3?e.numProp:3}function ew(e){return Math.floor(e.vertProperties.length/$C(e))}function tw(e,t){let n=t*$C(e);return[e.vertProperties[n]??0,e.vertProperties[n+1]??0,e.vertProperties[n+2]??0]}function nw(e,t){let n=t*3;return[e.triVerts[n]??0,e.triVerts[n+1]??0,e.triVerts[n+2]??0]}function rw(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 iw(e,t){let n=QC(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]=nw(n,e),s=tw(n,r),c=tw(n,a),l=tw(n,o),u=rw(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]=nw(n,e),o=tw(n,t),s=tw(n,r),c=tw(n,a),l=rw(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
10
  `)}function aw(e){let t=QC(e),n=ew(t),r=Math.floor(t.triVerts.length/3),i=[`# exported by brepjs manifold kernel`];for(let e=0;e<n;e++){let n=tw(t,e);i.push(`v ${n[0]} ${n[1]} ${n[2]}`)}for(let e=0;e<r;e++){let[n,r,a]=nw(t,e);i.push(`f ${n+1} ${r+1} ${a+1}`)}return new TextEncoder().encode(i.join(`