@tscircuit/runframe 0.0.131 → 0.0.132

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.
@@ -7533,7 +7533,7 @@ Check the render method of %s.`,u0(xd)||"Unknown"));var Fc=X9(zl,nc);Fc.payload=
7533
7533
  at `+Sa}return J},peg$SyntaxError.buildMessage=function(ua,J){var la={literal:function(Ia){return'"'+Aa(Ia.text)+'"'},class:function(Ia){var La=Ia.parts.map(function(Fa){return Array.isArray(Fa)?ba(Fa[0])+"-"+ba(Fa[1]):ba(Fa)});return"["+(Ia.inverted?"^":"")+La.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(Ia){return Ia.description}};function xa(Ia){return Ia.charCodeAt(0).toString(16).toUpperCase()}function Aa(Ia){return Ia.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(La){return"\\x0"+xa(La)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(La){return"\\x"+xa(La)})}function ba(Ia){return Ia.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(La){return"\\x0"+xa(La)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(La){return"\\x"+xa(La)})}function Sa(Ia){return la[Ia.type](Ia)}function Ma(Ia){var La=Ia.map(Sa),Fa,ka;if(La.sort(),La.length>0){for(Fa=1,ka=1;Fa<La.length;Fa++)La[Fa-1]!==La[Fa]&&(La[ka]=La[Fa],ka++);La.length=ka}switch(La.length){case 1:return La[0];case 2:return La[0]+" or "+La[1];default:return La.slice(0,-1).join(", ")+", or "+La[La.length-1]}}function Ra(Ia){return Ia?'"'+Aa(Ia)+'"':"end of input"}return"Expected "+Ma(ua)+" but "+Ra(J)+" found."};function peg$parse(ua,J){J=J!==void 0?J:{};var la={},xa=J.grammarSource,Aa={transformList:Wc},ba=Wc,Sa="matrix",Ma="(",Ra=")",Ia="translate",La="scale",Fa="rotate",ka="skewX",el="skewY",tl=",",rl=".",il=/^[eE]/,nl=/^[+\-]/,sl=/^[0-9]/,ll=/^[ \t\r\n]/,dl=Ou("matrix",!1),gl=Ou("(",!1),_l=Ou(")",!1),vl=Ou("translate",!1),Cl=Ou("scale",!1),Ll=Ou("rotate",!1),Il=Ou("skewX",!1),Fl=Ou("skewY",!1),Ol=Ou(",",!1),ql=k0("fractionalConstant"),rc=Ou(".",!1),sc=x0(["e","E"],!1,!1),Kl=x0(["+","-"],!1,!1),Gl=x0([["0","9"]],!1,!1),kl=x0([" "," ","\r",`
7534
7534
  `],!1,!1),Wl=function(ld){return ld},tc=function(ld,nf){return ld.concat(nf)},Zl=function(ld,nf,lf,uf,Mf,Qh){return[{type:"matrix",a:ld,b:nf,c:lf,d:uf,e:Mf,f:Qh}]},ac=function(ld,nf){var lf={type:"translate",tx:ld};return nf&&(lf.ty=nf),[lf]},Cc=function(ld,nf){var lf={type:"scale",sx:ld};return nf&&(lf.sy=nf),[lf]},_c=function(ld,nf){var lf={type:"rotate",angle:ld};return nf&&(lf.cx=nf[0],lf.cy=nf[1]),[lf]},Dc=function(ld){return[{type:"skewX",angle:ld}]},Uc=function(ld){return[{type:"skewY",angle:ld}]},Oc=function(ld){return parseFloat(ld.join(""))},jc=function(ld){return parseInt(ld.join(""))},Bc=function(ld){return ld},vc=function(ld,nf){return[ld,nf]},Mc=function(ld){return ld.join("")},kc=function(ld,nf){return[ld,nf||null].join("")},Jc=function(ld,nf){return[ld,nf].join("")},fu=function(ld,nf){return[ld?ld.join(""):null,".",nf.join("")].join("")},hu=function(ld){return ld.join("")},wu=function(ld,nf){return["e",ld,nf.join("")].join("")},pu=0,Eu=[{line:1,column:1}],Tu=0,mu=[],gu=0,Gu;if("startRule"in J){if(!(J.startRule in Aa))throw new Error(`Can't start parsing from rule "`+J.startRule+'".');ba=Aa[J.startRule]}function Ou(ld,nf){return{type:"literal",text:ld,ignoreCase:nf}}function x0(ld,nf,lf){return{type:"class",parts:ld,inverted:nf,ignoreCase:lf}}function I0(){return{type:"end"}}function k0(ld){return{type:"other",description:ld}}function ku(ld){var nf=Eu[ld],lf;if(nf)return nf;for(lf=ld-1;!Eu[lf];)lf--;for(nf=Eu[lf],nf={line:nf.line,column:nf.column};lf<ld;)ua.charCodeAt(lf)===10?(nf.line++,nf.column=1):nf.column++,lf++;return Eu[ld]=nf,nf}function Du(ld,nf,lf){var uf=ku(ld),Mf=ku(nf),Qh={source:xa,start:{offset:ld,line:uf.line,column:uf.column},end:{offset:nf,line:Mf.line,column:Mf.column}};return Qh}function f0(ld){pu<Tu||(pu>Tu&&(Tu=pu,mu=[]),mu.push(ld))}function Ru(ld,nf,lf){return new peg$SyntaxError(peg$SyntaxError.buildMessage(ld,nf),ld,nf,lf)}function Wc(){var ld,nf,lf,uf,Mf;for(ld=pu,nf=[],lf=Ff();lf!==la;)nf.push(lf),lf=Ff();for(lf=bu(),lf===la&&(lf=null),uf=[],Mf=Ff();Mf!==la;)uf.push(Mf),Mf=Ff();return ld=Wl(lf),ld}function bu(){var ld,nf,lf,uf;if(ld=pu,nf=Mu(),nf!==la){if(lf=[],uf=Dd(),uf!==la)for(;uf!==la;)lf.push(uf),uf=Dd();else lf=la;lf!==la?(uf=bu(),uf!==la?ld=tc(nf,uf):(pu=ld,ld=la)):(pu=ld,ld=la)}else pu=ld,ld=la;return ld===la&&(ld=Mu()),ld}function Mu(){var ld;return ld=vu(),ld===la&&(ld=n0(),ld===la&&(ld=Yu(),ld===la&&(ld=u0(),ld===la&&(ld=ou(),ld===la&&(ld=t0()))))),ld}function vu(){var ld,nf,lf,uf,Mf,Qh,P0,$u,A0,Vu,z0,qh,Rc,Gc,Iu,Xu,_0,B0;if(ld=pu,ua.substr(pu,6)===Sa?(nf=Sa,pu+=6):(nf=la,gu===0&&f0(dl)),nf!==la){for(lf=[],uf=Ff();uf!==la;)lf.push(uf),uf=Ff();if(ua.charCodeAt(pu)===40?(uf=Ma,pu++):(uf=la,gu===0&&f0(gl)),uf!==la){for(Mf=[],Qh=Ff();Qh!==la;)Mf.push(Qh),Qh=Ff();if(Qh=a0(),Qh!==la)if(P0=Dd(),P0!==la)if($u=a0(),$u!==la)if(A0=Dd(),A0!==la)if(Vu=a0(),Vu!==la)if(z0=Dd(),z0!==la)if(qh=a0(),qh!==la)if(Rc=Dd(),Rc!==la)if(Gc=a0(),Gc!==la)if(Iu=Dd(),Iu!==la)if(Xu=a0(),Xu!==la){for(_0=[],B0=Ff();B0!==la;)_0.push(B0),B0=Ff();ua.charCodeAt(pu)===41?(B0=Ra,pu++):(B0=la,gu===0&&f0(_l)),B0!==la?ld=Zl(Qh,$u,Vu,qh,Gc,Xu):(pu=ld,ld=la)}else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la;else pu=ld,ld=la}else pu=ld,ld=la}else pu=ld,ld=la;return ld}function n0(){var ld,nf,lf,uf,Mf,Qh,P0,$u,A0;if(ld=pu,ua.substr(pu,9)===Ia?(nf=Ia,pu+=9):(nf=la,gu===0&&f0(vl)),nf!==la){for(lf=[],uf=Ff();uf!==la;)lf.push(uf),uf=Ff();if(ua.charCodeAt(pu)===40?(uf=Ma,pu++):(uf=la,gu===0&&f0(gl)),uf!==la){for(Mf=[],Qh=Ff();Qh!==la;)Mf.push(Qh),Qh=Ff();if(Qh=a0(),Qh!==la){for(P0=$0(),P0===la&&(P0=null),$u=[],A0=Ff();A0!==la;)$u.push(A0),A0=Ff();ua.charCodeAt(pu)===41?(A0=Ra,pu++):(A0=la,gu===0&&f0(_l)),A0!==la?ld=ac(Qh,P0):(pu=ld,ld=la)}else pu=ld,ld=la}else pu=ld,ld=la}else pu=ld,ld=la;return ld}function Yu(){var ld,nf,lf,uf,Mf,Qh,P0,$u,A0;if(ld=pu,ua.substr(pu,5)===La?(nf=La,pu+=5):(nf=la,gu===0&&f0(Cl)),nf!==la){for(lf=[],uf=Ff();uf!==la;)lf.push(uf),uf=Ff();if(ua.charCodeAt(pu)===40?(uf=Ma,pu++):(uf=la,gu===0&&f0(gl)),uf!==la){for(Mf=[],Qh=Ff();Qh!==la;)Mf.push(Qh),Qh=Ff();if(Qh=a0(),Qh!==la){for(P0=$0(),P0===la&&(P0=null),$u=[],A0=Ff();A0!==la;)$u.push(A0),A0=Ff();ua.charCodeAt(pu)===41?(A0=Ra,pu++):(A0=la,gu===0&&f0(_l)),A0!==la?ld=Cc(Qh,P0):(pu=ld,ld=la)}else pu=ld,ld=la}else pu=ld,ld=la}else pu=ld,ld=la;return ld}function u0(){var ld,nf,lf,uf,Mf,Qh,P0,$u,A0;if(ld=pu,ua.substr(pu,6)===Fa?(nf=Fa,pu+=6):(nf=la,gu===0&&f0(Ll)),nf!==la){for(lf=[],uf=Ff();uf!==la;)lf.push(uf),uf=Ff();if(ua.charCodeAt(pu)===40?(uf=Ma,pu++):(uf=la,gu===0&&f0(gl)),uf!==la){for(Mf=[],Qh=Ff();Qh!==la;)Mf.push(Qh),Qh=Ff();if(Qh=a0(),Qh!==la){for(P0=yd(),P0===la&&(P0=null),$u=[],A0=Ff();A0!==la;)$u.push(A0),A0=Ff();ua.charCodeAt(pu)===41?(A0=Ra,pu++):(A0=la,gu===0&&f0(_l)),A0!==la?ld=_c(Qh,P0):(pu=ld,ld=la)}else pu=ld,ld=la}else pu=ld,ld=la}else pu=ld,ld=la;return ld}function ou(){var ld,nf,lf,uf,Mf,Qh,P0,$u;if(ld=pu,ua.substr(pu,5)===ka?(nf=ka,pu+=5):(nf=la,gu===0&&f0(Il)),nf!==la){for(lf=[],uf=Ff();uf!==la;)lf.push(uf),uf=Ff();if(ua.charCodeAt(pu)===40?(uf=Ma,pu++):(uf=la,gu===0&&f0(gl)),uf!==la){for(Mf=[],Qh=Ff();Qh!==la;)Mf.push(Qh),Qh=Ff();if(Qh=a0(),Qh!==la){for(P0=[],$u=Ff();$u!==la;)P0.push($u),$u=Ff();ua.charCodeAt(pu)===41?($u=Ra,pu++):($u=la,gu===0&&f0(_l)),$u!==la?ld=Dc(Qh):(pu=ld,ld=la)}else pu=ld,ld=la}else pu=ld,ld=la}else pu=ld,ld=la;return ld}function t0(){var ld,nf,lf,uf,Mf,Qh,P0,$u;if(ld=pu,ua.substr(pu,5)===el?(nf=el,pu+=5):(nf=la,gu===0&&f0(Fl)),nf!==la){for(lf=[],uf=Ff();uf!==la;)lf.push(uf),uf=Ff();if(ua.charCodeAt(pu)===40?(uf=Ma,pu++):(uf=la,gu===0&&f0(gl)),uf!==la){for(Mf=[],Qh=Ff();Qh!==la;)Mf.push(Qh),Qh=Ff();if(Qh=a0(),Qh!==la){for(P0=[],$u=Ff();$u!==la;)P0.push($u),$u=Ff();ua.charCodeAt(pu)===41?($u=Ra,pu++):($u=la,gu===0&&f0(_l)),$u!==la?ld=Uc(Qh):(pu=ld,ld=la)}else pu=ld,ld=la}else pu=ld,ld=la}else pu=ld,ld=la;return ld}function a0(){var ld,nf,lf,uf;return ld=pu,nf=pu,lf=Ef(),lf===la&&(lf=null),uf=Pf(),uf!==la?(lf=[lf,uf],nf=lf):(pu=nf,nf=la),nf!==la&&(nf=Oc(nf)),ld=nf,ld===la&&(ld=pu,nf=pu,lf=Ef(),lf===la&&(lf=null),uf=Rd(),uf!==la?(lf=[lf,uf],nf=lf):(pu=nf,nf=la),nf!==la&&(nf=jc(nf)),ld=nf),ld}function $0(){var ld,nf,lf;return ld=pu,nf=Dd(),nf!==la?(lf=a0(),lf!==la?ld=Bc(lf):(pu=ld,ld=la)):(pu=ld,ld=la),ld}function yd(){var ld,nf,lf,uf,Mf;return ld=pu,nf=Dd(),nf!==la?(lf=a0(),lf!==la?(uf=Dd(),uf!==la?(Mf=a0(),Mf!==la?ld=vc(lf,Mf):(pu=ld,ld=la)):(pu=ld,ld=la)):(pu=ld,ld=la)):(pu=ld,ld=la),ld}function Dd(){var ld,nf,lf,uf,Mf;if(ld=pu,nf=[],lf=Ff(),lf!==la)for(;lf!==la;)nf.push(lf),lf=Ff();else nf=la;if(nf!==la){for(lf=gf(),lf===la&&(lf=null),uf=[],Mf=Ff();Mf!==la;)uf.push(Mf),Mf=Ff();nf=[nf,lf,uf],ld=nf}else pu=ld,ld=la;if(ld===la)if(ld=pu,nf=gf(),nf!==la){for(lf=[],uf=Ff();uf!==la;)lf.push(uf),uf=Ff();nf=[nf,lf],ld=nf}else pu=ld,ld=la;return ld}function gf(){var ld;return ua.charCodeAt(pu)===44?(ld=tl,pu++):(ld=la,gu===0&&f0(Ol)),ld}function Rd(){var ld,nf;return ld=pu,nf=Bf(),nf!==la&&(nf=Mc(nf)),ld=nf,ld}function Pf(){var ld,nf,lf;return ld=pu,nf=Q0(),nf!==la?(lf=ff(),lf===la&&(lf=null),ld=kc(nf,lf)):(pu=ld,ld=la),ld===la&&(ld=pu,nf=Bf(),nf!==la?(lf=ff(),lf!==la?ld=Jc(nf,lf):(pu=ld,ld=la)):(pu=ld,ld=la)),ld}function Q0(){var ld,nf,lf,uf;return gu++,ld=pu,nf=Bf(),nf===la&&(nf=null),ua.charCodeAt(pu)===46?(lf=rl,pu++):(lf=la,gu===0&&f0(rc)),lf!==la?(uf=Bf(),uf!==la?ld=fu(nf,uf):(pu=ld,ld=la)):(pu=ld,ld=la),ld===la&&(ld=pu,nf=Bf(),nf!==la?(ua.charCodeAt(pu)===46?(lf=rl,pu++):(lf=la,gu===0&&f0(rc)),lf!==la?ld=hu(nf):(pu=ld,ld=la)):(pu=ld,ld=la)),gu--,ld===la&&(nf=la,gu===0&&f0(ql)),ld}function ff(){var ld,nf,lf,uf;return ld=pu,il.test(ua.charAt(pu))?(nf=ua.charAt(pu),pu++):(nf=la,gu===0&&f0(sc)),nf!==la?(lf=Ef(),lf===la&&(lf=null),uf=Bf(),uf!==la?ld=wu(lf,uf):(pu=ld,ld=la)):(pu=ld,ld=la),ld}function Ef(){var ld;return nl.test(ua.charAt(pu))?(ld=ua.charAt(pu),pu++):(ld=la,gu===0&&f0(Kl)),ld}function Bf(){var ld,nf;if(ld=[],nf=zf(),nf!==la)for(;nf!==la;)ld.push(nf),nf=zf();else ld=la;return ld}function zf(){var ld;return sl.test(ua.charAt(pu))?(ld=ua.charAt(pu),pu++):(ld=la,gu===0&&f0(Gl)),ld}function Ff(){var ld;return ll.test(ua.charAt(pu))?(ld=ua.charAt(pu),pu++):(ld=la,gu===0&&f0(kl)),ld}if(Gu=ba(),Gu!==la&&pu===ua.length)return Gu;throw Gu!==la&&pu<ua.length&&f0(I0()),Ru(mu,Tu<ua.length?ua.charAt(Tu):null,Tu<ua.length?Du(Tu,Tu+1):Du(Tu,Tu))}function fromTransformAttribute(ua){return peg$parse(ua)}function decomposeTSR(ua,J=!1,la=!1){J?la?ua=compose(ua,scale$2(-1,-1)):ua=compose(ua,scale$2(1,-1)):la&&(ua=compose(ua,scale$2(-1,1)));const xa=ua.a,Aa=ua.b,ba=ua.c,Sa=ua.d;let Ma,Ra,Ia;if(xa!==0||ba!==0){const La=Math.hypot(xa,ba);Ma=La,Ra=(xa*Sa-Aa*ba)/La;const Fa=Math.acos(xa/La);Ia=ba>0?-Fa:Fa}else if(Aa!==0||Sa!==0){const La=Math.hypot(Aa,Sa);Ma=(xa*Sa-Aa*ba)/La,Ra=La;const Fa=Math.acos(Aa/La);Ia=Math.PI/2+(Sa>0?-Fa:Fa)}else Ma=0,Ra=0,Ia=0;return la&&(Ma=-Ma),J&&(Ra=-Ra),{translate:{tx:ua.e,ty:ua.f},scale:{sx:Ma,sy:Ra},rotation:{angle:Ia}}}function flipX(){return{a:1,c:0,e:0,b:0,d:-1,f:0}}function flipY(){return{a:-1,c:0,e:0,b:0,d:1,f:0}}function flipOrigin(){return{a:-1,c:0,e:0,b:0,d:-1,f:0}}function fromOneMovingPoint(ua,J){const la=J.x-ua.x,xa=J.y-ua.y;return translate(la,xa)}function fromTwoMovingPoints(ua,J,la,xa){const Aa=fromOneMovingPoint(ua,la),ba=applyToPoint(Aa,J),Sa=la,Ma=xa,Ra=Math.atan2(Ma.y-Sa.y,Ma.x-Sa.x)-Math.atan2(ba.y-Sa.y,ba.x-Sa.x),Ia=rotate(Ra,Sa.x,Sa.y),La=Math.sqrt(Math.pow(ba.x-Sa.x,2)+Math.pow(ba.y-Sa.y,2)),ka=Math.sqrt(Math.pow(Ma.x-Sa.x,2)+Math.pow(Ma.y-Sa.y,2))/La,el=scale$2(ka,ka,Sa.x,Sa.y);return compose([Aa,el,Ia])}const src$2=Object.freeze(Object.defineProperty({__proto__:null,applyToPoint,applyToPoints,compose,decomposeTSR,flipOrigin,flipX,flipY,fromDefinition,fromObject,fromOneMovingPoint,fromString,fromTransformAttribute,fromTriangles,fromTwoMovingPoints,identity:identity$3,inverse,isAffineMatrix,rotate,rotateDEG,scale:scale$2,shear,skew,skewDEG,smoothMatrix,toCSS,toSVG,toString,transform,translate},Symbol.toStringTag,{value:"Module"}));function getBoundsOfPrimitives(ua){if(ua.length===0)return{minX:0,maxX:0,minY:0,maxY:0};let J=1/0,la=-1/0,xa=1/0,Aa=-1/0;const ba=Sa=>{J=Math.min(J,Sa.x),la=Math.max(la,Sa.x),xa=Math.min(xa,Sa.y),Aa=Math.max(Aa,Sa.y)};return ua.forEach(Sa=>{switch(Sa.type){case"path":Sa.points.forEach(ba);break;case"text":ba({x:Sa.x,y:Sa.y});break;case"circle":{const{x:Ma,y:Ra,radius:Ia}=Sa;ba({x:Ma-Ia,y:Ra-Ia}),ba({x:Ma+Ia,y:Ra+Ia});break}case"box":{const{x:Ma,y:Ra,width:Ia,height:La}=Sa,Fa=Ia/2,ka=La/2;ba({x:Ma-Fa,y:Ra-ka}),ba({x:Ma+Fa,y:Ra+ka});break}}}),{minX:J,maxX:la,minY:xa,maxY:Aa}}function defineSymbol$1(ua){let J=ua.size;if(!J){const la=getBoundsOfPrimitives(ua.primitives);J={width:la.maxX-la.minX,height:la.maxY-la.minY}}return{...ua,size:J}}var ac_voltmeter_default$1={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.03018695000000049},{x:-.30105415000000013,y:.03018695000000049}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.03018695000000049},{x:.5339524499999997,y:.03018695000000049}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09765764999999949,y:.12845085000000034},{x:-.0011297500000011507,y:-.06303624999999946},{x:-.10778645000000164,y:.12845085000000034}],color:"primary",fill:!1},path17:{type:"path",points:[{x:-.002934749999999875,y:-.13606674999999946},{x:.06869635000000063,y:-.11019914999999947}],color:"primary",fill:!1},path18:{type:"path",points:[{x:.06869635000000063,y:-.11019914999999947},{x:.1403274500000009,y:-.13606674999999946}],color:"primary",fill:!1},path19:{type:"path",points:[{x:-.1461968499999997,y:-.13606674999999946},{x:-.07456574999999921,y:-.11019914999999947}],color:"primary",fill:!1},path20:{type:"path",points:[{x:-.07456575000000054,y:-.11019914999999947},{x:-.0029346500000002607,y:-.13606674999999946}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17328624999999942,y:.39216264999999995},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.40216264999999995}},refblocks:{left1:{x:-.5413984499999998,y:.029334149999999948},right1:{x:.54139845,y:.030330549999999734}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.5021626499999999,maxY:.39216264999999995,width:1.1391137819999997,height:.5443252999999999,centerX:11102230246251565e-32,centerY:.05499999999999999},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03731525000000002,radius:.28854213,color:"primary",fill:!1}}},{paths:paths$1,bounds:bounds$1,refblocks:refblocks$1,circles:circles$1}=ac_voltmeter_default$1,ac_voltmeter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths$1),...Object.values(circles$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"}],ports:[{...refblocks$1.left1,labels:["1"]},{...refblocks$1.right1,labels:["2"]}],size:{width:bounds$1.width,height:bounds$1.height},center:{x:bounds$1.centerX,y:bounds$1.centerY}}),rotateRightFacingAnchor$1=(ua,J="right")=>{switch(J){case"down":switch(ua){case"middle_top":return"middle_right";case"middle_bottom":return"middle_left";case"middle_left":return"middle_bottom";case"middle_right":return"middle_top"}break;case"up":switch(ua){case"middle_top":return"middle_left";case"middle_bottom":return"middle_right";case"middle_left":return"middle_top";case"middle_right":return"middle_bottom"}break;case"left":switch(ua){case"middle_top":return"middle_bottom";case"middle_bottom":return"middle_top";case"middle_left":return"middle_right";case"middle_right":return"middle_left"}break;case"right":return ua}return ua},flipSymbolOverXAxis$1=(ua,J)=>{const{primitives:la,center:xa,ports:Aa,size:ba}=ua,Sa=transform({a:1,b:0,c:0,d:-1,e:0,f:2*xa.y}),Ma=la.map(Ia=>{switch(Ia={...Ia},Ia.type){case"path":return{...Ia,points:Ia.points.map(el=>applyToPoint(Sa,el))};case"text":const La=applyToPoint(Sa,{x:Ia.x,y:Ia.y}),Fa={top_left:"bottom_left",top_right:"bottom_right",bottom_left:"top_left",bottom_right:"top_right",center:"center",middle_top:"middle_bottom",middle_bottom:"middle_top",middle_left:"middle_left",middle_right:"middle_right"};return{...Ia,x:La.x,y:La.y,anchor:Fa[Ia.anchor]};case"circle":case"box":const ka=applyToPoint(Sa,{x:Ia.x,y:Ia.y});return{...Ia,x:ka.x,y:ka.y}}}),Ra=Aa.map(Ia=>({...Ia,...applyToPoint(Sa,Ia)}));return{primitives:Ma,center:xa,ports:Ra,size:ba,...J}},flipSymbolOverYAxis$1=(ua,J)=>{const{primitives:la,center:xa,ports:Aa,size:ba}=ua,Sa=transform({a:-1,b:0,c:0,d:1,e:0,f:2*xa.x}),Ma=la.map(Ia=>{switch(Ia={...Ia},Ia.type){case"path":return{...Ia,points:Ia.points.map(el=>applyToPoint(Sa,el))};case"text":const La=applyToPoint(Sa,{x:Ia.x,y:Ia.y}),Fa={top_left:"top_right",top_right:"top_left",bottom_left:"bottom_right",bottom_right:"bottom_left",center:"center",middle_top:"middle_top",middle_bottom:"middle_bottom",middle_left:"middle_right",middle_right:"middle_left"};return{...Ia,x:La.x,y:La.y,anchor:Fa[Ia.anchor]};case"circle":case"box":const ka=applyToPoint(Sa,{x:Ia.x,y:Ia.y});return{...Ia,x:ka.x,y:ka.y}}}),Ra=Aa.map(Ia=>({...Ia,...applyToPoint(Sa,Ia)}));return{primitives:Ma,center:xa,ports:Ra,size:ba,...J}},rotateRightFacingSymbol$1=(ua,J)=>{const{newOrientation:la,overrides:xa}=J,Aa={up:Math.PI/2,right:0,down:-Math.PI/2,left:-Math.PI},ba=rotate(la?Aa[la]:Math.PI/2,ua.center.x,ua.center.y),{primitives:Sa,center:Ma,size:Ra,ports:Ia}=ua,La=Sa.map(el=>{switch(el={...el},el.type){case"path":return{...el,points:el.points.map(nl=>applyToPoint(ba,nl))};case"text":const tl=applyToPoint(ba,{x:el.x,y:el.y});return el.anchor=rotateRightFacingAnchor$1(el.anchor,la??"right"),{...el,x:tl.x,y:tl.y};case"circle":const rl=applyToPoint(ba,{x:el.x,y:el.y});return{...el,x:rl.x,y:rl.y};case"box":const il=applyToPoint(ba,{x:el.x,y:el.y});return{...el,x:il.x,y:il.y,width:el.height,height:el.width}}}),Fa=Ia.map(el=>({...el,...applyToPoint(ba,el)})),ka=getBoundsOfPrimitives(La);return{primitives:La,center:Ma,ports:Fa,size:{width:ka.maxX-ka.minX,height:ka.maxY-ka.minY},...xa}},rotateSymbol$1=(ua,J="down",la={})=>rotateRightFacingSymbol$1(ua,{newOrientation:J,overrides:la}),rotatedSymbol$1=rotateRightFacingSymbol$1(ac_voltmeter_horz_default$1,{newOrientation:"up"}),ac_voltmeter_vert_default$1=rotatedSymbol$1,avalanche_diode_default$1={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.0390362999999998},{x:-.1199943999999995,y:-.09325540000000054}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17132800000000015},{x:.14458890000000002,y:.0390362999999998}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.09325539999999921},{x:-.1199943999999995,y:.17132800000000015}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17132800000000015},{x:.14458890000000002,y:-.09325539999999921}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.0390362999999998},{x:-.5168693999999996,y:.0390362999999998}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.03895110000000024},{x:.1496715999999998,y:.03895110000000024}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17181090000000032},{x:.07768859999999966,y:.19542900000000052}],color:"primary",fill:!1},"path43-8-3":{type:"path",points:[{x:.21083259999999981,y:-.1180321000000002},{x:.14512999999999954,y:-.094414}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.26884529999999995},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27884529999999996}},refblocks:{left1:{x:-.5191471000000001,y:.03992070000000081},right1:{x:.5191470999999999,y:.03889609999999988}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.37884529999999994,maxY:.26884529999999995,width:1.094611082,height:.2976905999999999,centerX:-11102230246251565e-32,centerY:.05499999999999999},circles:{}},{paths:paths2$1,texts:texts$1,bounds:bounds2$1,refblocks:refblocks2$1,circles:circles2$1}=avalanche_diode_default$1,avalanche_diode_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths2$1),...Object.values(circles2$1),{...texts$1.top1,anchor:"middle_bottom"},{...texts$1.bottom1,anchor:"middle_top"}],ports:[{...refblocks2$1.left1,labels:["1"]},{...refblocks2$1.right1,labels:["2"]}],size:{width:bounds2$1.width,height:bounds2$1.height},center:{x:bounds2$1.centerX,y:bounds2$1.centerY}}),rotated$1=rotateRightFacingSymbol$1(avalanche_diode_horz_default$1,{newOrientation:"down"}),avalanche_diode_vert_default$1=rotated$1,battery_default$1={paths:{path43:{type:"path",points:[{x:-.05901489999999909,y:.18831315000000015},{x:-.05869489999999833,y:-.11814524999999954}],color:"primary",fill:!1},"path43-6":{type:"path",points:[{x:.015375000000000805,y:.12533125000000034},{x:.016669000000000933,y:-.05562075000000033}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.06443049999999961,y:.032673549999999496},{x:-.4368029,y:.032673549999999496}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.4350822999999997,y:.03438825000000034},{x:.028285099999999952,y:.03438825000000034}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.027835099999999446,y:.26564474999999943},bottom1:{type:"text",text:"{VAL}",x:-.028373699999999502,y:-.27564474999999966}},refblocks:{left1:{x:-.4458008,y:.033557849999999334},right1:{x:.4458008,y:.03343344999999931}},bounds:{minX:-.473959241,maxX:.473959241,minY:-.37564474999999964,maxY:.26564474999999943,width:.947918482,height:.2912894999999991,centerX:0,centerY:.055000000000000104},circles:{}},{paths:paths3$1,texts:texts2$1,bounds:bounds3$1,refblocks:refblocks3$1,circles:circles3$1}=battery_default$1,battery_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths3$1),...Object.values(circles3$1),{...texts2$1.top1,anchor:"middle_bottom"},{...texts2$1.bottom1,anchor:"middle_top"}],ports:[{...refblocks3$1.left1,labels:["1"]},{...refblocks3$1.right1,labels:["2"]}],size:{width:bounds3$1.width,height:bounds3$1.height},center:{x:bounds3$1.centerX,y:bounds3$1.centerY}}),battery_vert_default$1=rotateRightFacingSymbol$1(battery_horz_default$1,{newOrientation:"up"}),boxresistor_default$1={paths:{path1:{type:"path",points:[{x:-.511850799999999,y:.04616140000000257},{x:-.24726749999999953,y:.04616140000000257}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.2818991000000013,y:.04616140000000257},{x:.5464825000000006,y:.04616140000000257}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.0173157000000006,y:.17845310000000225},{x:.2818990000000001,y:.17845310000000225},{x:.2818990000000001,y:-.0861302999999971},{x:-.24726770000000053,y:-.0861302999999971},{x:-.24726770000000053,y:.17845310000000225},{x:.017315699999998824,y:.17845310000000225}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0014247999999992267,y:.2499980000000015},bottom1:{type:"text",text:"{VAL}",x:-.0004627999999997634,y:-.24999799999999972}},refblocks:{left1:{x:-.5337907000000002,y:.04580520000000021},right1:{x:.5337907000000004,y:.04525870000000154}},bounds:{minX:-.5619491410000002,maxX:.5619491410000004,minY:-.24999799999999972,maxY:.2499980000000015,width:1.1238982820000005,height:.4999960000000012,centerX:11102230246251565e-32,centerY:8881784197001252e-31},circles:{}},SymbolModifier$1=class{constructor(J){jp(this,"symbol");this.symbol=JSON.parse(JSON.stringify(J)),this.symbol.size=this.computeSize()}changeTextAnchor(J,la){return this.symbol={...this.symbol,primitives:this.symbol.primitives.map(xa=>xa.type==="text"&&xa.text===J?{...xa,anchor:la}:xa)},this}labelPort(J,la){return this.symbol={...this.symbol,ports:this.symbol.ports.map(xa=>xa.labels.includes(J)?{...xa,labels:la}:xa)},this}rotateRightFacingSymbol(J){return this.symbol=rotateRightFacingSymbol$1(this.symbol,{newOrientation:J}),this}computeSize(){const J=getBoundsOfPrimitives(this.symbol.primitives);return{width:J.maxX-J.minX,height:J.maxY-J.minY}}build(){return{...this.symbol,size:this.computeSize()}}},modifySymbol$1=ua=>new SymbolModifier$1({...ua,primitives:ua.primitives??[...Object.values(ua.paths??{}),...Object.values(ua.texts??{}),...Object.values(ua.circles??{}),...Object.values(ua.rects??{})],ports:ua.ports??Object.entries(ua.refblocks).flatMap(([J,la])=>[{...la,labels:[J]}]),center:ua.center??{x:ua.bounds.centerX,y:ua.bounds.centerY}}),{paths:paths4$1,texts:texts3$1,bounds:bounds4$1,refblocks:refblocks4$1,circles:circles4$1}=boxresistor_default$1,boxresistor_down_default$1=modifySymbol$1({primitives:[...Object.values(paths4$1),...Object.values(circles4$1),{type:"text",text:"{REF}",x:-.16,y:.2294553499999995},{type:"text",text:"{VAL}",x:.16,y:.2294553499999995}],ports:[{...refblocks4$1.left1,labels:["1"]},{...refblocks4$1.right1,labels:["2"]}],center:{x:bounds4$1.centerX,y:bounds4$1.centerY}}).changeTextAnchor("{VAL}","middle_bottom").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),{paths:paths5$1,texts:texts4$1,bounds:bounds5$1,refblocks:refblocks5$1,circles:circles5$1}=boxresistor_default$1,boxresistor_left_default$1=modifySymbol$1({primitives:[...Object.values(paths5$1),...Object.values(circles5$1),{type:"text",text:"{REF}",x:0,y:.2294553499999995},{type:"text",text:"{VAL}",x:0,y:-.1594553499999995}],ports:[{...refblocks5$1.left1,labels:["1"]},{...refblocks5$1.right1,labels:["2"]}],center:{x:bounds5$1.centerX,y:bounds5$1.centerY}}).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),{paths:paths6$1,texts:texts5$1,bounds:bounds6$1,refblocks:refblocks6$1,circles:circles6$1}=boxresistor_default$1,boxresistor_right_default$1=modifySymbol$1({primitives:[...Object.values(paths6$1),...Object.values(circles6$1),{type:"text",text:"{REF}",x:0,y:.2294553499999995},{type:"text",text:"{VAL}",x:0,y:-.1594553499999995}],ports:[{...refblocks6$1.left1,labels:["1"]},{...refblocks6$1.right1,labels:["2"]}],center:{x:bounds6$1.centerX,y:bounds6$1.centerY}}).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),{paths:paths7$1,texts:texts6$1,bounds:bounds7$1,refblocks:refblocks7$1,circles:circles7$1}=boxresistor_default$1,boxresistor_up_default$1=modifySymbol$1({primitives:[...Object.values(paths7$1),...Object.values(circles7$1),{type:"text",text:"{REF}",x:-.16,y:.2294553499999995},{type:"text",text:"{VAL}",x:.16,y:.2294553499999995}],ports:[{...refblocks7$1.left1,labels:["1"]},{...refblocks7$1.right1,labels:["2"]}],center:{x:bounds7$1.centerX,y:bounds7$1.centerY}}).changeTextAnchor("{VAL}","middle_bottom").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),capacitor_default$1={paths:{path27:{type:"path",points:[{x:.5229378000000002,y:.017283050000003186},{x:.07314620000000005,y:.017283050000003186}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.0856037999999999,y:.017283050000003186},{x:-.5353954999999999,y:.017283050000003186}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.0731461999999996,y:.2818663500000014},{x:.07314620000000005,y:-.24730024999999856}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.0856037999999999,y:.2818663500000014},{x:-.0856037999999999,y:-.24730024999999856}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.012864500000000056,y:.4200086500000033},bottom1:{type:"text",text:"{VAL}",x:-.003850500000000423,y:-.42000864999999976}},refblocks:{left1:{x:-.5512093000000005,y:.01638025000000276},right1:{x:.5512093,y:.016926950000001995}},bounds:{minX:-.5793677410000004,maxX:.579367741,minY:-.42000864999999976,maxY:.4200086500000033,width:1.1587354820000004,height:.8400173000000031,centerX:-2220446049250313e-31,centerY:17763568394002505e-31},circles:{}},{paths:paths8$1,texts:texts7$1,bounds:bounds8$1,refblocks:refblocks8$1,circles:circles8$1}=capacitor_default$1,capacitor_down_default$1=modifySymbol$1({primitives:[...Object.values(paths8$1),...Object.values(circles8$1),{type:"text",text:"{REF}",x:-.2,y:.2094553499999995},{type:"text",text:"{VAL}",x:.2,y:.2094553499999995}],ports:[{...refblocks8$1.left1,labels:["1"]},{...refblocks8$1.right1,labels:["2"]}],size:{width:bounds8$1.width,height:bounds8$1.height},center:{x:bounds8$1.centerX,y:bounds8$1.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),capacitor_right_default$1=modifySymbol$1(capacitor_default$1).rotateRightFacingSymbol("right").changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),capacitor_left_default$1=modifySymbol$1(capacitor_right_default$1).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),capacitor_polarized_default$1={paths:{"path27-5":{type:"path",points:[{x:.5229378000000007,y:.017283050000003186},{x:.001333100000000531,y:.017283050000003186}],color:"primary",fill:!1},"path28-5":{type:"path",points:[{x:-.08560379999999945,y:.017283050000003186},{x:-.5353954999999995,y:.017283050000003186}],color:"primary",fill:!1},"path30-7":{type:"path",points:[{x:-.0024798999999995353,y:.28420285000000334},{x:-.0024798999999995353,y:-.247479349999999}],color:"primary",fill:!1},path8704:{type:"path",points:[{x:-.1433630999999993,y:-.24400714999999806},{x:-.1433630999999993,y:-.24400714999999806},{x:-.14262848833929928,y:-.24277205092349807},{x:-.1418975396743993,y:-.2415360290679981},{x:-.14117026348109932,y:-.24029908349449816},{x:-.14044666923519933,y:-.23906121326399818},{x:-.13972676641249931,y:-.2378224174374982},{x:-.1390105644887993,y:-.23658269507599822},{x:-.13829807293989932,y:-.2353420452404983},{x:-.13758930124159935,y:-.23410046699199832},{x:-.13688425886969938,y:-.23285795939149836},{x:-.13618295529999938,y:-.23161452149999842},{x:-.13548540000829937,y:-.23037015237849842},{x:-.13479160247039934,y:-.22912485108799843},{x:-.13410157216209936,y:-.22787861668949844},{x:-.1334153185591994,y:-.22663144824399842},{x:-.13273285113749936,y:-.22538334481249844},{x:-.13205417937279937,y:-.22413430545599844},{x:-.1313793127408994,y:-.2228843292354985},{x:-.1307082607175994,y:-.22163341521199847},{x:-.13004103277869938,y:-.2203815624464985},{x:-.1293776383999994,y:-.21912876999999853},{x:-.12871808705729942,y:-.21787503693349855},{x:-.12806238822639943,y:-.21662036230799855},{x:-.12741055138309942,y:-.21536474518449858},{x:-.12676258600319942,y:-.21410818462399858},{x:-.12611850156249946,y:-.21285067968749863},{x:-.12547830753679945,y:-.21159222943599865},{x:-.12484201340189946,y:-.21033283293049862},{x:-.12420962863359947,y:-.20907248923199864},{x:-.12358116270769948,y:-.20781119740149864},{x:-.12295662509999947,y:-.20654895649999866},{x:-.12233602528629947,y:-.20528576558849868},{x:-.12171937274239948,y:-.20402162372799865},{x:-.12110667694409948,y:-.20275652997949864},{x:-.12049794736719947,y:-.2014904834039986},{x:-.11989319348749948,y:-.20022348306249865},{x:-.11929242478079949,y:-.19895552801599864},{x:-.11869565072289952,y:-.19768661732549864},{x:-.11810288078959952,y:-.19641675005199866},{x:-.11751412445669952,y:-.19514592525649863},{x:-.1169293911999995,y:-.1938741419999986},{x:-.11634869049529953,y:-.19260139934349865},{x:-.11577203181839951,y:-.1913276963479986},{x:-.11519942464509951,y:-.1900530320744986},{x:-.11463087845119951,y:-.18877740558399858},{x:-.11406640271249952,y:-.1875008159374986},{x:-.11350600690479953,y:-.18622326219599858},{x:-.11294970050389953,y:-.18494474342049858},{x:-.11239749298559953,y:-.1836652586719986},{x:-.11184939382569953,y:-.18238480701149856},{x:-.11130541249999952,y:-.18110338749999852},{x:-.11076555848429954,y:-.17982099919849853},{x:-.11022984125439952,y:-.1785376411679985},{x:-.10969827028609953,y:-.1772533124694985},{x:-.10917085505519954,y:-.17596801216399852},{x:-.10864760503749954,y:-.17468173931249847},{x:-.10812852970879953,y:-.17339449297599843},{x:-.10761363854489954,y:-.17210627221549843},{x:-.10710294102159955,y:-.17081707609199845},{x:-.10659644661469955,y:-.16952690366649845},{x:-.10609416479999954,y:-.1682357539999984},{x:-.10559610505329955,y:-.1669436261534984},{x:-.10510227685039954,y:-.1656505191879984},{x:-.10461268966709955,y:-.16435643216449838},{x:-.10412735297919956,y:-.16306136414399838},{x:-.10364627626249956,y:-.16176531418749837},{x:-.10316946899279957,y:-.16046828135599833},{x:-.10269694064589956,y:-.15917026471049833},{x:-.10222870069759955,y:-.1578712633119983},{x:-.10176475862369955,y:-.1565712762214983},{x:-.10130512389999956,y:-.1552703024999983},{x:-.10084980600229956,y:-.15396834120849828},{x:-.10039881440639958,y:-.15266539140799829},{x:-.09995215858809957,y:-.15136145215949826},{x:-.09950984802319957,y:-.15005652252399826},{x:-.09907189218749957,y:-.14875060156249825},{x:-.09863830055679956,y:-.14744368833599825},{x:-.09820908260689958,y:-.14613578190549825},{x:-.09778424781359957,y:-.14482688133199823},{x:-.09736380565269957,y:-.1435169856764982},{x:-.09694776559999957,y:-.1422060939999982},{x:-.09653613713129958,y:-.1408942053634982},{x:-.09612892972239956,y:-.13958131882799818},{x:-.09572615284909958,y:-.13826743345449818},{x:-.09532781598719958,y:-.13695254830399817},{x:-.09493392861249958,y:-.13563666243749817},{x:-.09454450020079957,y:-.13431977491599817},{x:-.09415954022789956,y:-.13300188480049818},{x:-.09377905816959958,y:-.13168299115199816},{x:-.09340306350169958,y:-.13036309303149818},{x:-.09303156569999958,y:-.12904218949999818},{x:-.09266457424029959,y:-.12772027961849816},{x:-.09230209859839958,y:-.12639736244799815},{x:-.09194414825009957,y:-.12507343704949817},{x:-.09159073267119958,y:-.12374850248399819},{x:-.09124186133749958,y:-.12242255781249818},{x:-.09089754372479958,y:-.12109560209599818},{x:-.09055778930889957,y:-.11976763439549819},{x:-.09022260756559956,y:-.11843865377199818},{x:-.08989200797069956,y:-.11710865928649819},{x:-.08956599999999959,y:-.11577764999999829},{x:-.08956599999999959,y:-.11577764999999829},{x:-.08916166532269958,y:-.1141015840276983},{x:-.08876332646159957,y:-.11242441110159831},{x:-.08837097017289958,y:-.11074614170789834},{x:-.08798458321279957,y:-.10906678633279836},{x:-.08760415233749957,y:-.10738635546249836},{x:-.08722966430319957,y:-.10570485958319836},{x:-.08686110586609956,y:-.10402230918109837},{x:-.08649846378239957,y:-.10233871474239843},{x:-.0861417248082996,y:-.10065408675329846},{x:-.08579087569999959,y:-.09896843569999846},{x:-.08544590321369959,y:-.09728177206869845},{x:-.08510679410559958,y:-.09559410634559845},{x:-.08477353513189957,y:-.09390544901689848},{x:-.08444611304879956,y:-.09221581056879849},{x:-.08412451461249956,y:-.0905252014874985},{x:-.08380872657919955,y:-.0888336322591985},{x:-.08349873570509957,y:-.08714111337009853},{x:-.08319452874639957,y:-.08544765530639854},{x:-.08289609245929955,y:-.08375326855429854},{x:-.08260341359999955,y:-.08205796359999856},{x:-.08231647892469955,y:-.08036175092969856},{x:-.08203527518959956,y:-.07866464102959857},{x:-.08175978915089956,y:-.07696664438589859},{x:-.08149000756479956,y:-.07526777148479862},{x:-.08122591718749958,y:-.07356803281249863},{x:-.08096750477519957,y:-.07186743885519864},{x:-.08071475708409956,y:-.07016600009909864},{x:-.08046766087039958,y:-.06846372703039866},{x:-.08022620289029957,y:-.06676063013529866},{x:-.07999036989999955,y:-.06505671989999867},{x:-.07976014865569958,y:-.06335200681069868},{x:-.07953552591359955,y:-.061646501353598705},{x:-.07931648842989956,y:-.0599402140148987},{x:-.07910302296079955,y:-.0582331552807987},{x:-.07889511626249955,y:-.05652533563749871},{x:-.07869275509119955,y:-.05481676557119872},{x:-.07849592620309954,y:-.053107455568098726},{x:-.07830461635439954,y:-.05139741611439873},{x:-.07811881230129955,y:-.049686657696298736},{x:-.07793850079999953,y:-.04797519079999873},{x:-.07776366860669955,y:-.04626302591169874},{x:-.07759430247759955,y:-.04455017351759874},{x:-.07743038916889955,y:-.042836644103898744},{x:-.07727191543679954,y:-.04112244815679875},{x:-.07711886803749955,y:-.039407596162498754},{x:-.07697123372719955,y:-.03769209860719875},{x:-.07682899926209953,y:-.035975965977098755},{x:-.07669215139839955,y:-.03425920875839876},{x:-.07656067689229953,y:-.032541837437298764},{x:-.07643456249999953,y:-.03082386249999876},{x:-.07631379497769952,y:-.029105294432698766},{x:-.07619836108159952,y:-.02738614372159877},{x:-.07608824756789952,y:-.02566642085289876},{x:-.07598344119279953,y:-.023946136312798766},{x:-.07588392871249951,y:-.02222530058749876},{x:-.0757896968831995,y:-.020503924163198756},{x:-.07570073246109951,y:-.01878201752609876},{x:-.07561702220239952,y:-.017059591162398753},{x:-.07553855286329951,y:-.015336655558298754},{x:-.07546531119999951,y:-.01361322119999875},{x:-.07539728396869952,y:-.011889298573698748},{x:-.07533445792559951,y:-.010164898165598747},{x:-.07527681982689952,y:-.008440030461898743},{x:-.07522435642879952,y:-.006714705948798734},{x:-.07517705448749952,y:-.004988935112498731},{x:-.07513490075919951,y:-.0032627284391987255},{x:-.07509788200009951,y:-.0015360964150987165},{x:-.07506598496639952,y:.0001909504736012889},{x:-.0750391964142995,y:.0019184017407012956},{x:-.07501750309999951,y:.003646246900001303},{x:-.07500089177969951,y:.00537447546530131},{x:-.07498934920959952,y:.00710307695040132},{x:-.0749828621458995,y:.00883204086910133},{x:-.0749814173447995,y:.010561356735201338},{x:-.07498500156249951,y:.012291014062501347},{x:-.0749936015551995,y:.014021002364801359},{x:-.07500720407909953,y:.015751311155901372},{x:-.07502579589039951,y:.017481929949601384},{x:-.0750493637452995,y:.01921284825970139},{x:-.07507789439999951,y:.0209440556000014},{x:-.0751113746106995,y:.022675541484301412},{x:-.0751497911335995,y:.024407295426401427},{x:-.07519313072489951,y:.02613930694010145},{x:-.07524138014079951,y:.027871565539201462},{x:-.07529452613749951,y:.029604060737501478},{x:-.07535255547119951,y:.031336782048801484},{x:-.0754154548980995,y:.0330697189869015},{x:-.07548321117439952,y:.03480286106560152},{x:-.07555581105629952,y:.03653619779870154},{x:-.07563324129999952,y:.038269718700001565},{x:-.07571548866169951,y:.04000341328330158},{x:-.07580253989759951,y:.04173727106240159},{x:-.07589438176389952,y:.043471281551101616},{x:-.07599100101679952,y:.04520543426320164},{x:-.07609238441249952,y:.04693971871250166},{x:-.07619851870719953,y:.048674124412801674},{x:-.07630939065709953,y:.0504086408779017},{x:-.07642498701839952,y:.05214325762160172},{x:-.07654529454729952,y:.05387796415770175},{x:-.07667029999999952,y:.055612750000001654},{x:-.07667029999999952,y:.055612750000001654},{x:-.07680210846969952,y:.05708314936460168},{x:-.07693595411759954,y:.05855396299680169},{x:-.07707186730189955,y:.06002517220420173},{x:-.07720987838079954,y:.06149675829440175},{x:-.07735001771249954,y:.06296870257500178},{x:-.07749231565519954,y:.06444098635360178},{x:-.07763680256709955,y:.0659135909378018},{x:-.07778350880639956,y:.06738649763520185},{x:-.07793246473129956,y:.06885968775340187},{x:-.07808370069999958,y:.07033314260000188},{x:-.07823724707069958,y:.07180684348260188},{x:-.07839313420159956,y:.07328077170880191},{x:-.07855139245089958,y:.07475490858620194},{x:-.07871205217679958,y:.07622923542240194},{x:-.07887514373749958,y:.07770373352500196},{x:-.07904069749119959,y:.07917838420160196},{x:-.07920874379609959,y:.080653168759802},{x:-.07937931301039959,y:.082128068507202},{x:-.07955243549229958,y:.08360306475140203},{x:-.0797281415999996,y:.085078138800002},{x:-.0799064616916996,y:.08655327196060203},{x:-.08008742612559962,y:.08802844554080204},{x:-.08027106525989962,y:.08950364084820207},{x:-.08045740945279962,y:.09097883919040207},{x:-.08064648906249965,y:.0924540218750021},{x:-.08083833444719964,y:.0939291702096021},{x:-.08103297596509963,y:.09540426550180209},{x:-.08123044397439966,y:.09687928905920212},{x:-.08143076883329967,y:.09835422218940212},{x:-.08163398089999965,y:.09982904620000212},{x:-.08184011053269966,y:.10130374239860213},{x:-.08204918808959966,y:.10277829209280215},{x:-.08226124392889968,y:.10425267659020215},{x:-.08247630840879966,y:.10572687719840214},{x:-.08269441188749967,y:.10720087522500214},{x:-.08291558472319968,y:.10867465197760214},{x:-.0831398572740997,y:.11014818876380215},{x:-.08336725989839969,y:.11162146689120216},{x:-.0835978229542997,y:.11309446766740217},{x:-.0838315767999997,y:.11456717240000215},{x:-.08406855179369971,y:.11603956239660215},{x:-.0843087782935997,y:.11751161896480215},{x:-.08455228665789971,y:.11898332341220215},{x:-.0847991072447997,y:.12045465704640215},{x:-.08504927041249971,y:.12192560117500215},{x:-.0853028065191997,y:.12339613710560214},{x:-.08555974592309973,y:.12486624614580213},{x:-.08582011898239973,y:.12633590960320215},{x:-.08608395605529973,y:.12780510878540213},{x:-.08635128749999971,y:.1292738250000021},{x:-.08662214367469973,y:.1307420395546021},{x:-.08689655493759973,y:.1322097337568021},{x:-.08717455164689972,y:.13367688891420207},{x:-.08745616416079972,y:.13514348633440207},{x:-.08774142283749972,y:.13660950732500204},{x:-.08803035803519974,y:.13807493319360203},{x:-.08832300011209973,y:.13953974524780205},{x:-.08861937942639975,y:.14100392479520202},{x:-.08891952633629974,y:.14246745314340203},{x:-.08922347119999974,y:.14393031160000203},{x:-.08953124437569973,y:.145392481472602},{x:-.08984287622159975,y:.14685394406880198},{x:-.09015839709589976,y:.148314680696202},{x:-.09047783735679976,y:.149774672662402},{x:-.09080122736249976,y:.15123390127500197},{x:-.09112859747119977,y:.15269234784160193},{x:-.09145997804109976,y:.15414999366980195},{x:-.09179539943039977,y:.15560682006720195},{x:-.09213489199729977,y:.1570628083414019},{x:-.09247848609999976,y:.1585179398000019},{x:-.09282621209669975,y:.1599721957506019},{x:-.09317810034559978,y:.1614255575008019},{x:-.09353418120489977,y:.16287800635820185},{x:-.09389448503279976,y:.16432952363040182},{x:-.09425904218749978,y:.16578009062500182},{x:-.09462788302719977,y:.1672296886496018},{x:-.09500103791009978,y:.1686782990118018},{x:-.09537853719439979,y:.17012590301920177},{x:-.09576041123829979,y:.17157248197940175},{x:-.09614669039999979,y:.17301801720000176},{x:-.09653740503769978,y:.17446248998860173},{x:-.0969325855095998,y:.17590588165280172},{x:-.09733226217389979,y:.17734817350020168},{x:-.09773646538879979,y:.1787893468384017},{x:-.0981452255124998,y:.18022938297500168},{x:-.0985585729031998,y:.18166826321760166},{x:-.09897653791909979,y:.1831059688738016},{x:-.09939915091839979,y:.1845424812512016},{x:-.0998264422592998,y:.1859777816574016},{x:-.1002584422999998,y:.1874118514000016},{x:-.1006951813986998,y:.18884467178660155},{x:-.1011366899135998,y:.19027622412480152},{x:-.10158299820289979,y:.19170648972220153},{x:-.1020341366247998,y:.1931354498864015},{x:-.1024901355374998,y:.1945630859250015},{x:-.1029510252991998,y:.19598937914560147},{x:-.10341683626809982,y:.19741431085580147},{x:-.1038875988023998,y:.19883786236320142},{x:-.1043633432602998,y:.20026001497540138},{x:-.10484409999999977,y:.2016807500000013},{x:-.10484409999999977,y:.2016807500000013},{x:-.10512829034499978,y:.20251255364660126},{x:-.10541452131999979,y:.2033439212528012},{x:-.10570279283499981,y:.2041748478182012},{x:-.10599310479999982,y:.20500532834240115},{x:-.10628545712499982,y:.20583535782500112},{x:-.10657984971999983,y:.20666493126560112},{x:-.10687628249499985,y:.2074940436638011},{x:-.10717475535999986,y:.20832269001920106},{x:-.10747526822499989,y:.2091508653314011},{x:-.1077778209999999,y:.20997856460000103},{x:-.10808241359499988,y:.21080578282460102},{x:-.10838904591999989,y:.21163251500480096},{x:-.10869771788499989,y:.212458756140201},{x:-.10900842939999988,y:.21328450123040094},{x:-.10932118037499987,y:.21410974527500093},{x:-.10963597071999989,y:.21493448327360093},{x:-.10995280034499992,y:.21575871022580093},{x:-.1102716691599999,y:.2165824211312009},{x:-.1105925770749999,y:.21740561098940095},{x:-.11091552399999992,y:.21822827480000093},{x:-.1112405098449999,y:.2190504075626009},{x:-.11156753451999993,y:.21987200427680093},{x:-.11189659793499994,y:.22069305994220095},{x:-.11222769999999993,y:.22151356955840096},{x:-.11256084062499995,y:.222333528125001},{x:-.11289601971999996,y:.223152930641601},{x:-.11323323719499996,y:.223971772107801},{x:-.11357249295999995,y:.22479004752320103},{x:-.11391378692499997,y:.22560775188740104},{x:-.11425711899999995,y:.22642488020000104},{x:-.11460248909499995,y:.22724142746060105},{x:-.11494989711999995,y:.2280573886688011},{x:-.11529934298499996,y:.22887275882420108},{x:-.11565082659999995,y:.22968753292640107},{x:-.11600434787499994,y:.23050170597500114},{x:-.11635990671999996,y:.23131527296960114},{x:-.11671750304499996,y:.23212822890980117},{x:-.11707713675999995,y:.23294056879520117},{x:-.11743880777499995,y:.2337522876254012},{x:-.11780251599999993,y:.2345633804000012},{x:-.11816826134499994,y:.23537384211860124},{x:-.11853604371999993,y:.23618366778080127},{x:-.11890586303499992,y:.2369928523862013},{x:-.11927771919999992,y:.23780139093440128},{x:-.11965161212499995,y:.23860927842500138},{x:-.12002754171999992,y:.23941650985760138},{x:-.12040550789499993,y:.24022308023180142},{x:-.12078551055999992,y:.24102898454720142},{x:-.12116754962499991,y:.24183421780340145},{x:-.12155162499999989,y:.24263877500000142},{x:-.1219377365949999,y:.2434426511366015},{x:-.1223258843199999,y:.2442458412128015},{x:-.1227160680849999,y:.24504834022820154},{x:-.12310828779999988,y:.24585014318240156},{x:-.12350254337499987,y:.24665124507500158},{x:-.12389883471999988,y:.24745164090560162},{x:-.12429716174499987,y:.24825132567380165},{x:-.12469752435999987,y:.2490502943792017},{x:-.12509992247499988,y:.2498485420214017},{x:-.12550435599999984,y:.25064606360000175},{x:-.12591082484499985,y:.25144285411460177},{x:-.12631932891999986,y:.2522389085648018},{x:-.12672986813499987,y:.25303422195020187},{x:-.12714244239999986,y:.25382878927040187},{x:-.12755705162499986,y:.25462260552500193},{x:-.12797369571999986,y:.25541566571360197},{x:-.12839237459499983,y:.256207964835802},{x:-.12881308815999984,y:.256999497891202},{x:-.12923583632499985,y:.2577902598794021},{x:-.12966061899999984,y:.2585802458000021},{x:-.13008743609499984,y:.25936945065260214},{x:-.13051628751999986,y:.2601578694368022},{x:-.13094717318499982,y:.26094549715220217},{x:-.13138009299999984,y:.26173232879840225},{x:-.13181504687499984,y:.2625183593750023},{x:-.13225203471999986,y:.2633035838816023},{x:-.13269105644499984,y:.26408799731780236},{x:-.13313211195999985,y:.26487159468320237},{x:-.13357520117499982,y:.2656543709774024},{x:-.13402032399999986,y:.26643632120000244},{x:-.13446748034499983,y:.26721744035060246},{x:-.13491667011999983,y:.26799772342880246},{x:-.13536789323499984,y:.2687771654342025},{x:-.13582114959999986,y:.2695557613664026},{x:-.13627643912499987,y:.27033350622500263},{x:-.13673376171999985,y:.27111039500960266},{x:-.13719311729499983,y:.2718864227198026},{x:-.13765450575999985,y:.2726615843552027},{x:-.13811792702499986,y:.2734358749154028},{x:-.1385833809999999,y:.2742092894000028},{x:-.13905086759499988,y:.2749818228086028},{x:-.1395203867199999,y:.2757534701408028},{x:-.1399919382849999,y:.27652422639620283},{x:-.14046552219999991,y:.27729408657440285},{x:-.1409411383749999,y:.2780630456750029},{x:-.1414187867199999,y:.2788310986976029},{x:-.14189846714499993,y:.27959824064180294},{x:-.14238017955999993,y:.2803644665072029},{x:-.1428639238749999,y:.28112977129340294},{x:-.1433496999999999,y:.28189415000000295}],color:"primary",fill:!1},"rect1577-4":{type:"path",points:[{x:.26345180000000035,y:.2455934500000012},{x:.12298460000000011,y:.2455934500000012},{x:.12298460000000011,y:.2505664500000009},{x:.26345180000000035,y:.2505664500000009}],color:"primary",fill:!0},"rect1577-4-7":{type:"path",points:[{x:.19576130000000003,y:.31834525000000014},{x:.19576130000000003,y:.17787805000000034},{x:.1907882999999999,y:.17787805000000034},{x:.1907882999999999,y:.31834525000000014}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.012864499999999612,y:.4200086500000033},bottom1:{type:"text",text:"{VAL}",x:-.003850499999999979,y:-.42000864999999976}},refblocks:{left1:{x:-.5512093,y:.016380250000000984},right1:{x:.5512093,y:.016926950000001995}},bounds:{minX:-.579367741,maxX:.579367741,minY:-.42000864999999976,maxY:.4200086500000033,width:1.158735482,height:.8400173000000031,centerX:0,centerY:17763568394002505e-31},circles:{}},{paths:paths9$1,texts:texts8$1,bounds:bounds9$1,refblocks:refblocks9$1,circles:circles9$1}=capacitor_polarized_default$1,capacitor_polarized_down_default$1=modifySymbol$1({primitives:[...Object.values(paths9$1),...Object.values(circles9$1),{type:"text",text:"{REF}",x:-.2,y:.2094553499999995},{type:"text",text:"{VAL}",x:.3,y:.2094553499999995}],ports:[{...refblocks9$1.left1,labels:["1"]},{...refblocks9$1.right1,labels:["2"]}],size:{width:bounds9$1.width,height:bounds9$1.height},center:{x:bounds9$1.centerX,y:bounds9$1.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("down").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),capacitor_polarized_right_default$1=modifySymbol$1(capacitor_polarized_default$1).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),capacitor_polarized_left_default$1=modifySymbol$1(capacitor_polarized_right_default$1).changeTextAnchor("{VAL}","middle_top").rotateRightFacingSymbol("left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),{paths:paths10$1,texts:texts9$1,bounds:bounds10$1,refblocks:refblocks10$1,circles:circles10$1}=capacitor_polarized_default$1,capacitor_polarized_up_default$1=modifySymbol$1({primitives:[...Object.values(paths10$1),...Object.values(circles10$1),{type:"text",text:"{REF}",x:.1,y:-.2094553499999995},{type:"text",text:"{VAL}",x:-.2,y:-.2094553499999995}],ports:[{...refblocks10$1.left1,labels:["1"]},{...refblocks10$1.right1,labels:["2"]}],size:{width:bounds10$1.width,height:bounds10$1.height},center:{x:bounds10$1.centerX,y:bounds10$1.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("up").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),{paths:paths11$1,texts:texts10$1,bounds:bounds11$1,refblocks:refblocks11$1,circles:circles11$1}=capacitor_default$1,capacitor_up_default$1=modifySymbol$1({primitives:[...Object.values(paths11$1),...Object.values(circles11$1),{type:"text",text:"{REF}",x:.2,y:-.2094553499999995},{type:"text",text:"{VAL}",x:-.2,y:-.2094553499999995}],ports:[{...refblocks11$1.left1,labels:["1"]},{...refblocks11$1.right1,labels:["2"]}],size:{width:bounds11$1.width,height:bounds11$1.height},center:{x:bounds11$1.centerX,y:bounds11$1.centerY}}).changeTextAnchor("{VAL}","top_left").rotateRightFacingSymbol("up").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","bottom_left").build(),constant_current_diode_default$1={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.02897970000000072},{x:-.30105415000000013,y:.02897970000000072}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.02897970000000072},{x:.5339524499999997,y:.02897970000000072}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.2932119499999999,y:.2923763000000008},{x:.2932119499999999,y:-.23441689999999937}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.021208049999999812,y:.3692298999999999},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.3692298999999999}},refblocks:{left1:{x:-.5413984499999998,y:.028126900000000177},right1:{x:.54139845,y:.029123299999999963}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.3692298999999999,maxY:.3692298999999999,width:1.1391137819999997,height:.7384597999999998,centerX:11102230246251565e-32,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03610800000000025,radius:.28854213,color:"primary",fill:!1}}},constant_current_diode_horz_default$1=modifySymbol$1(constant_current_diode_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),constant_current_diode_vert_default$1=modifySymbol$1(constant_current_diode_default$1).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),crystal_4pin_default$1={paths:{path27:{type:"path",points:[{x:.52188525,y:-.010083950000000286},{x:.1314137500000001,y:-.010083950000000286}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.12501034999999971,y:.25449935000000146},{x:.12501035000000016,y:-.2746672499999985}],color:"primary",fill:!1},"path29-2":{type:"path",points:[{x:.07157854999999946,y:.253778650000001},{x:.07157854999999991,y:-.27538794999999716}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.13957305000000053,y:.25449935000000146},{x:-.1395730500000001,y:-.2746672499999985}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.08349325000000052,y:.25541165000000277},{x:-.08349325000000007,y:-.27375494999999894}],color:"primary",fill:!1},"path29-2-7":{type:"path",points:[{x:.07147894999999993,y:.2552525499999998},{x:-.0829032500000002,y:.2552525499999998}],color:"primary",fill:!1},"path29-2-7-6":{type:"path",points:[{x:.07107315000000014,y:-.27817384999999817},{x:-.08330905,y:-.27817384999999817}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.21327535000000042,y:.31803495000000304},{x:.19712464999999968,y:.31807695}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.003324649999999707,y:.694594949999999},{x:.003324649999999707,y:.3310069500000008},{x:.003324649999999707,y:.3209089500000015}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:-.21327535000000042,y:.3180639499999991},{x:-.21327535000000042,y:.2498769499999991}],color:"primary",fill:!1},"path43-8-8":{type:"path",points:[{x:.19712464999999968,y:.31807695},{x:.19712464999999968,y:.24987695000000443}],color:"primary",fill:!1},"path43-9":{type:"path",points:[{x:.19226054999999942,y:-.3468980499999983},{x:-.21813945000000068,y:-.3469400500000006}],color:"primary",fill:!1},"path44-0-5":{type:"path",points:[{x:-.024339450000000262,y:-.7234580499999996},{x:-.024339450000000262,y:-.3598700499999996},{x:-.024339450000000262,y:-.34977205000000033}],color:"primary",fill:!1},"path43-8-1":{type:"path",points:[{x:.19226054999999942,y:-.3469270499999997},{x:.19226054999999942,y:-.2787400499999979}],color:"primary",fill:!1},"path43-8-8-9":{type:"path",points:[{x:-.21813955000000096,y:-.34694015},{x:-.21813955000000096,y:-.27874015000000085}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.14368304999999992,y:-.010083950000000286},{x:-.5364480500000002,y:-.010083950000000286}],color:"primary",fill:!1}},texts:{left1:{type:"text",text:"{REF}",x:-.38155925000000046,y:.09576035000000083},right1:{type:"text",text:"{VAL}",x:.3369813499999994,y:-.17868404999999754}},refblocks:{top1:{x:.0032092499999998303,y:.7114137500000002},bottom1:{x:-.02355145000000025,y:-.7114137500000002},left1:{x:-.5415391500000004,y:-.00607074999999746},right1:{x:.5415391499999997,y:-.012221549999997805}},bounds:{minX:-.5696975910000004,maxX:.5696975909999997,minY:-.7395721910000002,maxY:.7395721910000002,width:1.1393951820000001,height:1.4791443820000003,centerX:-33306690738754696e-32,centerY:0},circles:{}},crystal_4pin_horz_default$1=modifySymbol$1(crystal_4pin_default$1).labelPort("top1",["2","gnd1"]).labelPort("bottom1",["4","gnd2"]).labelPort("left1",["1"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","bottom_right").changeTextAnchor("{VAL}","top_left").build(),crystal_4pin_vert_default$1=modifySymbol$1(crystal_4pin_horz_default$1).rotateRightFacingSymbol("up").changeTextAnchor("{REF}","top_right").changeTextAnchor("{VAL}","bottom_left").build(),crystal_default$1={paths:{path27:{type:"path",points:[{x:.5229378000000002,y:-.012283099999995883},{x:.13246630000000037,y:-.012283099999995883}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.14263049999999966,y:-.012283099999995883},{x:-.5353954999999999,y:-.012283099999995883}],color:"primary",fill:!1},path29:{type:"path",points:[{x:.12606289999999998,y:-.2768663999999976},{x:.12606290000000042,y:.2523002000000023}],color:"primary",fill:!1},"path29-2":{type:"path",points:[{x:.07263109999999973,y:-.27614569999999716},{x:.07263110000000017,y:.253020900000001}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.13852050000000027,y:-.2768663999999976},{x:-.13852049999999982,y:.2523002000000023}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.08244070000000026,y:-.27777869999999893},{x:-.08244069999999981,y:.2513879000000028}],color:"primary",fill:!1},"path29-2-7":{type:"path",points:[{x:.07253150000000019,y:-.27761959999999597},{x:-.08185069999999994,y:-.27761959999999597}],color:"primary",fill:!1},"path29-2-7-6":{type:"path",points:[{x:.0721257000000004,y:.255806800000002},{x:-.08225649999999973,y:.255806800000002}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.012864500000000056,y:-.4150086999999978},bottom1:{type:"text",text:"{VAL}",x:-.003850500000000423,y:.4250087000000011}},refblocks:{left1:{x:-.5512093000000002,y:-.011380399999998403},right1:{x:.5512093,y:-.011926899999997076}},bounds:{minX:-.5793677410000002,maxX:.579367741,minY:-.5150086999999978,maxY:.4250087000000011,width:1.1587354820000002,height:1,centerX:-11102230246251565e-32,centerY:-.04499999999999832},circles:{}},crystal_horz_default$1=modifySymbol$1(crystal_default$1).changeTextAnchor("{VAL}","middle_bottom").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_top").build(),crystal_vert_default$1=modifySymbol$1(crystal_default$1).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_left").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_right").build(),darlington_pair_transistor_default$1={paths:{path11:{type:"path",points:[{x:1.9942486145,y:-1.6422072295000003},{x:2.0984258145,y:-1.6428272295000004}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:2.1030704145000003,y:-1.4809259295000001},{x:2.1026604145,y:-1.8041042295}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:2.2218770145,y:-1.4969414295},{x:2.1063461145,y:-1.5757354295000003}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:2.2286252145,y:-1.7819395295000002},{x:2.1136540145000002,y:-1.7033263295}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:2.2273251145,y:-1.4948802295},{x:2.2284101145,y:-1.1518438295000002}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:2.2276017145,y:-1.9567437295},{x:2.2281317145,y:-1.7888340295000003}],color:"primary",fill:!1},"arrow-2":{type:"path",points:[{x:2.1704797145,y:-1.6991380295000003},{x:2.1275815145,y:-1.7604028295000003},{x:2.1917009144999997,y:-1.7601828295000004}],color:"primary",fill:!1},path1:{type:"path",points:[{x:1.5978828145000001,y:-1.5020091295000002},{x:1.8597023145000002,y:-1.5035561295000002}],color:"primary",fill:!1},path2:{type:"path",points:[{x:1.8686937145000002,y:-1.3411936295000002},{x:1.8682837145,y:-1.6643719295000001}],color:"primary",fill:!1},path3:{type:"path",points:[{x:1.9875004145000004,y:-1.3572092295000002},{x:1.8719693145,y:-1.4360031295000002}],color:"primary",fill:!1},path4:{type:"path",points:[{x:1.9942486145,y:-1.6422072295000003},{x:1.8792773145000001,y:-1.5635940295000004}],color:"primary",fill:!1},"arrow-1":{type:"path",points:[{x:1.9361028144999999,y:-1.5594057295000003},{x:1.8932048145,y:-1.6206705295000003},{x:1.9573242144999998,y:-1.6204505295000005}],color:"primary",fill:!1},path9:{type:"path",points:[{x:1.9943087144999998,y:-1.3539494295000003},{x:2.2269582145,y:-1.3556534295000002}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{VAL}",x:1.8805772145,y:-1.9423669295000003},right1:{type:"text",text:"{REF}",x:1.8845380145,y:-1.1387692295000003}},refblocks:{right1:{x:2.2278617145000004,y:-1.9651412295000004},right2:{x:1.5977076145000002,y:-1.5027827295000002},right3:{x:2.2278680145,y:-1.1403971295000002}},bounds:{minX:1.5810976555000003,maxX:2.3461148445,minY:-1.9817511885000003,maxY:-1.1237871705000002,width:.7650171889999999,height:.8579640180000001,centerX:1.9636062500000002,centerY:-1.5527691795000003},circles:{"path1-0":{type:"circle",x:2.0463372145000003,y:-1.5363384295000002,radius:.29977763,color:"primary",fill:!1}}},darlington_pair_transistor_horz_default$1=modifySymbol$1(darlington_pair_transistor_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("right2",["1"]).labelPort("right3",["2"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","middle_bottom").build();darlington_pair_transistor_default$1.bounds.width+=.3;var darlington_pair_transistor_vert_default$1=modifySymbol$1(darlington_pair_transistor_default$1).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("right2",["1"]).labelPort("right3",["2"]).labelPort("right1",["3"]).changeTextAnchor("{REF}","middle_left").build(),dc_ammeter_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.12447409999999959,y:.0852510999999998},{x:.11626639999999999,y:.0852510999999998}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.4472267999999995},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.3470985000000004},left1:{type:"text",text:"A",x:0,y:-.1}},refblocks:{left1:{x:-.5446330999999993,y:0},right1:{x:.5381638000000004,y:0}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:-.08525110000000002,maxY:.0852510999999998,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:-11102230246251565e-32},circles:{path1:{type:"circle",x:0,y:0,radius:.28854213,color:"primary",fill:!1}}},{paths:paths12$1,texts:texts11$1,bounds:bounds12$1,refblocks:refblocks12$1,circles:circles12$1}=dc_ammeter_default$1,dc_ammeter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths12$1),...Object.values(circles12$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts11$1.left1,x:0,y:.01,anchor:"center",fontSize:.3}],ports:[{...refblocks12$1.left1,labels:["1"]},{...refblocks12$1.right1,labels:["2"]}],size:{width:bounds12$1.width,height:bounds12$1.height},center:{x:bounds12$1.centerX,y:bounds12$1.centerY}});function isPathPrimitive$1(ua){return typeof ua=="object"&&ua!==null&&ua.type==="path"&&Array.isArray(ua.points)&&typeof ua.color=="string"}function isTextPrimitive$1(ua){return typeof ua=="object"&&ua!==null&&ua.type==="text"&&typeof ua.text=="string"&&typeof ua.x=="number"&&typeof ua.y=="number"&&typeof ua.anchor=="string"}var{6:letter$1,2:underline$1,...rest$1}=dc_ammeter_horz_default$1.primitives;isPathPrimitive$1(underline$1)&&underline$1.points.map(ua=>{ua.y+=.05}),isTextPrimitive$1(letter$1)&&(letter$1.y+=.025);function isPrimitive$1(ua){return typeof ua=="object"}var rotatedSymbol2$1=rotateSymbol$1({...dc_ammeter_horz_default$1,primitives:Object.values(rest$1).filter(isPrimitive$1)}),dc_ammeter_vert_default$1={...rotatedSymbol2$1,primitives:[...rotatedSymbol2$1.primitives,letter$1,underline$1]},dc_voltmeter_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09442299999999992,y:-.13438304999999984},{x:-.004364400000000712,y:.05710404999999996},{x:-.1110211000000012,y:-.13438304999999984}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.12447409999999959,y:.13438304999999984},{x:.11626639999999999,y:.13438304999999984}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.39809484999999944},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.39623045000000046}},refblocks:{left1:{x:-.5446330999999993,y:0},right1:{x:.5381638000000004,y:0}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:-.13438304999999984,maxY:.13438304999999984,width:1.0614356000000003,height:1,centerX:0,centerY:0},circles:{path1:{type:"circle",x:0,y:0,radius:.28854213,color:"primary",fill:!1}}},{paths:paths13$1,texts:texts12$1,bounds:bounds13$1,refblocks:refblocks13$1,circles:circles13$1}=dc_voltmeter_default$1,dc_voltmeter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths13$1),...Object.values(circles13$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"}],ports:[{...refblocks13$1.left1,labels:["1"]},{...refblocks13$1.right1,labels:["2"]}],size:{width:bounds13$1.width,height:bounds13$1.height},center:{x:bounds13$1.centerX,y:bounds13$1.centerY}}),{2:letter2$1,3:underline2$1,...rest2$1}=dc_voltmeter_horz_default$1.primitives;function isPrimitive2$1(ua){return typeof ua=="object"}var rotatedSymbol3$1=rotateSymbol$1({...dc_voltmeter_horz_default$1,primitives:Object.values(rest2$1).filter(isPrimitive2$1)}),dc_voltmeter_vert_default$1={...rotatedSymbol3$1,primitives:[...rotatedSymbol3$1.primitives,letter2$1,underline2$1]},diac_default$1={paths:{path11:{type:"path",points:[{x:-.5176700499999997,y:.041745050000000505},{x:-.10888805000000024,y:.041745050000000505}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1031184499999993,y:.041745050000000505},{x:.5246894499999994,y:.041745050000000505}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.09343985000000021,y:-.14620634999999882},{x:-.0930998500000002,y:.2583405500000009}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.08519034999999908,y:-.14503384999999902},{x:.08553034999999909,y:.2595130500000007}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.08315755000000014,y:.055934450000000524},{x:-.08415755000000047,y:-.14678124999999964},{x:.08653524999999984,y:-.05104664999999953},{x:-.08126175000000035,y:.05647715000000031}],color:"primary",fill:!0},"path11-0-9-0":{type:"path",points:[{x:.07661224999999927,y:.256654450000001},{x:.07761224999999983,y:.05393885000000109},{x:-.0930805500000007,y:.1496734500000012},{x:.07471644999999949,y:.25719715000000143}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.0316381500000007,y:.41683614999999996},bottom1:{type:"text",text:"{VAL}",x:-.03022294999999975,y:-.41683614999999996}},refblocks:{left1:{x:-.54139845,y:.04089205000000051},right1:{x:.5413984499999995,y:.04188845000000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.41683614999999996,maxY:.41683614999999996,width:1.1391137819999995,height:.8336722999999999,centerX:-2220446049250313e-31,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000003116,y:.048873150000000365,radius:.28854213,color:"primary",fill:!1}}},diac_horz_default$1=modifySymbol$1(diac_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol4$1=rotateSymbol$1(diac_horz_default$1),texts13$1=rotatedSymbol4$1.primitives.filter(ua=>ua.type==="text"),ref$1=texts13$1.find(ua=>ua.text==="{REF}"),val$1=texts13$1.find(ua=>ua.text==="{VAL}");ref$1.y=0,val$1.y=0;var diac_vert_default$1=rotatedSymbol4$1,diode_default$1={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999836},{x:-.1199943999999995,y:-.08825540000000132}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.1763280000000016},{x:.14458890000000002,y:.04403629999999836}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.08825539999999776},{x:-.1199943999999995,y:.1763280000000016}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.1763280000000016},{x:.14458890000000002,y:-.08825539999999776}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999836},{x:-.5168693999999996,y:.04403629999999836}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797,y:.04395110000000102},{x:.14967160000000002,y:.04395110000000102}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384529999999785},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999999524,y:-.2738453000000014}},refblocks:{left1:{x:-.5191471000000001,y:.0449206999999987},right1:{x:.5191471000000001,y:.043896100000001326}},bounds:{minX:-.5473055410000001,maxX:.5473055410000001,minY:-.2738453000000014,maxY:.27384529999999785,width:1.0946110820000001,height:.5476905999999993,centerX:0,centerY:-17763568394002505e-31},circles:{}},diode_right_default$1=modifySymbol$1(diode_default$1).labelPort("left1",["1","pos"]).labelPort("right1",["2","neg"]).changeTextAnchor("{REF}","middle_bottom").changeTextAnchor("{VAL}","middle_top").build(),diode_down_default$1=rotateSymbol$1(diode_right_default$1,"down"),diode_left_default$1=rotateSymbol$1(diode_right_default$1,"left"),diode_up_default$1=rotateSymbol$1(diode_right_default$1,"up"),dpdt_switch_default$1={paths:{path1:{type:"path",points:[{x:-.3543580999999998,y:.22373490000000018},{x:-.1279290999999998,y:.22373490000000018}],color:"primary",fill:!1},"path-1-3":{type:"path",points:[{x:-.11341659999999987,y:.2240546000000001},{x:.1031012,y:.354}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.10434800000000011,y:.127178},{x:.345089,y:.127178}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.12008600000000014,y:.36383770000000015},{x:.360827,y:.36383770000000015}],color:"primary",fill:!1},path4:{type:"path",points:[{x:-.3543580999999998,y:-.17811849999999985},{x:-.1279290999999998,y:-.17811849999999985}],color:"primary",fill:!1},"path4-6":{type:"path",points:[{x:-.11341659999999987,y:-.1777987999999997},{x:.1031012,y:-.04780299999999982}],color:"primary",fill:!1},path5:{type:"path",points:[{x:.10434800000000011,y:-.2746754},{x:.345089,y:-.2746754}],color:"primary",fill:!1},path6:{type:"path",points:[{x:.12008600000000014,y:-.038015699999999875},{x:.360827,y:-.038015699999999875}],color:"primary",fill:!1},"path1-4-join":{type:"path",points:[{x:-.020896399999999815,y:-.10273049999999984},{x:-.025476399999999844,y:.2768100000000002}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0862317999999998,y:.46447740000000026},bottom1:{type:"text",text:"{VAL}",x:-.0862317999999998,y:-.4244773999999998}},refblocks:{top1:{x:-.11569089999999993,y:.22373490000000018},top2:{x:.10744680000000018,y:.36383770000000015},top3:{x:.10744750000000014,y:.12717810000000007},bottom1:{x:-.11569089999999993,y:-.17811849999999985},bottom2:{x:.10744750000000014,y:-.2746754},left1:{x:-.3682734999999999,y:.22373490000000018},left2:{x:-.3682734999999999,y:-.17811849999999985},right1:{x:.36827350000000014,y:.36383770000000015},right2:{x:.36827350000000014,y:.12717810000000007},right3:{x:.36827350000000014,y:-.038015699999999875},right4:{x:.10744680000000018,y:-.038015699999999875},right5:{x:.36827350000000014,y:-.2746754}},bounds:{minX:-.3964319409999999,maxX:.3964319410000001,minY:-.4744773999999998,maxY:.5644774000000002,width:1,height:1.0389548,centerX:-11102230246251565e-32,centerY:.045000000000000207},circles:{}},{paths:paths14$1,texts:texts14$1,bounds:bounds14$1,refblocks:refblocks14$1,circles:circles14$1}=dpdt_switch_default$1,dpdt_switch_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths14$1),...Object.values(circles14$1),{...texts14$1.top1,anchor:"middle_bottom"},{...texts14$1.bottom1,anchor:"middle_top"}],ports:[{...refblocks14$1.left1,labels:["1"]},{...refblocks14$1.left2,labels:["4"]},{...refblocks14$1.right1,labels:["3"]},{...refblocks14$1.right2,labels:["2"]},{...refblocks14$1.right3,labels:["6"]},{...refblocks14$1.right5,labels:["5"]}],size:{width:bounds14$1.width,height:bounds14$1.height},center:{x:bounds14$1.centerX,y:bounds14$1.centerY}}),rotatedSymbol5$1=rotateSymbol$1(dpdt_switch_horz_default$1),texts15$1=rotatedSymbol5$1.primitives.filter(ua=>ua.type==="text"),val2$1=texts15$1.find(ua=>ua.text==="{VAL}");val2$1.anchor="middle_right",val2$1.x=-.37,val2$1.y=.12;var ref2$1=texts15$1.find(ua=>ua.text==="{REF}");ref2$1.anchor="middle_left",ref2$1.x=.37,ref2$1.y=.12;var dpdt_switch_vert_default$1=rotatedSymbol5$1,dpst_switch_default$1={paths:{path11:{type:"path",points:[{x:-.3622268000000006,y:.06287995000000057},{x:-.1357978000000004,y:.06287995000000057}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.12009950000000069,y:.061349450000000916},{x:.10307889999999986,y:.2010388500000011}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.12795640000000064,y:.06287995000000057},{x:.36869780000000096,y:.06287995000000057}],color:"primary",fill:!1},"path11-5":{type:"path",points:[{x:-.3622270999999999,y:-.16866424999999907},{x:-.1357980999999997,y:-.16866424999999907}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:-.12009979999999998,y:-.17019474999999962},{x:.10307860000000058,y:-.03050534999999921}],color:"primary",fill:!1},"path12-0":{type:"path",points:[{x:.12795610000000002,y:-.16866424999999907},{x:.3686968000000006,y:-.16866424999999907}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.1958158999999995,y:.39716265000000006},bottom1:{type:"text",text:"{VAL}",x:-.029144200000000398,y:-.39716264999999984}},refblocks:{bottom1:{x:-.12356020000000001,y:-.17345394999999963},bottom2:{x:.1153169000000005,y:-.17345394999999963},left1:{x:-.37614279999999956,y:-.16951715000000012},left2:{x:-.12356020000000001,y:.05809054999999996},left3:{x:-.37614279999999956,y:.06202735000000037},right1:{x:.37614279999999933,y:-.16852074999999966},right2:{x:.1153169000000005,y:.05809054999999996},right3:{x:.37614279999999933,y:.06302374999999993}},bounds:{minX:-.40430124099999953,maxX:.4043012409999993,minY:-.39716264999999984,maxY:.39716265000000006,width:.8086024819999988,height:.7943252999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}};dpst_switch_default$1.bounds.width+=.2;var{paths:paths15$1,texts:texts16$1,bounds:bounds15$1,refblocks:refblocks15$1,circles:circles15$1}=dpst_switch_default$1,dpst_switch_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths15$1),...Object.values(circles15$1),{...texts16$1.top1,anchor:"middle_bottom",x:0},{...texts16$1.bottom1,anchor:"middle_top",x:0}],ports:[{...refblocks15$1.left1,labels:["1","left1"]},{...refblocks15$1.left3,labels:["3","left3"]},{...refblocks15$1.right1,labels:["2","right1"]},{...refblocks15$1.right3,labels:["4","right3"]}],size:{width:bounds15$1.width,height:bounds15$1.height},center:{x:bounds15$1.centerX,y:bounds15$1.centerY}}),rotatedSymbol6$1=rotateSymbol$1(dpst_switch_horz_default$1),texts17$1=rotatedSymbol6$1.primitives.filter(ua=>ua.type==="text"),val3$1=texts17$1.find(ua=>ua.text==="{VAL}");val3$1.anchor="middle_right",val3$1.x=-.35,val3$1.y=0;var ref3$1=texts17$1.find(ua=>ua.text==="{REF}");ref3$1.anchor="middle_left",ref3$1.x=.3,ref3$1.y=0;var dpst_switch_vert_default$1=rotatedSymbol6$1,filled_diode_default$1={paths:{path11:{type:"path",points:[{x:-.541495829500001,y:.044368009536419395},{x:-.21998262950000114,y:.044368009536419395}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.14450697049999905,y:.052237309536419474},{x:.46379767049999976,y:.052237309536419474}],color:"primary",fill:!1},"path12-6":{type:"path",points:[{x:.13965347050000032,y:-.14937819046358025},{x:.13854747050000027,y:.2538388095364199}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.212703829500001,y:.2732984095364195},{x:-.2147708295000006,y:-.1493854904635803},{x:.13782137049999887,y:.050231709536419755},{x:-.2087893295000005,y:.27442980953642016}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.08906882950000083,y:.38011220953641867},bottom1:{type:"text",text:"{VAL}",x:-.0685314901614209,y:-.38011220953641844},right1:{type:"text",text:"",x:.5884896704999998,y:-.3288545904635811}},refblocks:{left1:{x:-.5603312294999999,y:.04351520953641885},right1:{x:.47524967049999955,y:.05238090953641872}},bounds:{minX:-.5884896704999999,maxX:.5884896704999998,minY:-.38011220953641844,maxY:.38011220953641867,width:1.1769793409999996,height:.7602244190728371,centerX:-5551115123125783e-32,centerY:11102230246251565e-32},circles:{}},filled_diode_horz_default$1=modifySymbol$1(filled_diode_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),filled_diode_vert_default$1=rotateSymbol$1(filled_diode_horz_default$1),frequency_meter_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Hz",x:0,y:-.035}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths16$1,texts:texts18$1,bounds:bounds16$1,refblocks:refblocks16$1,circles:circles16$1}=frequency_meter_default$1,frequency_meter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths16$1),...Object.values(circles16$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts18$1.left1,x:0,y:.01,anchor:"center",fontSize:.2}],ports:[{...refblocks16$1.left1,labels:["1"]},{...refblocks16$1.right1,labels:["2"]}],size:{width:bounds16$1.width,height:bounds16$1.height},center:{x:bounds16$1.centerX,y:bounds16$1.centerY}}),{5:letter3$1,...rest3$1}=frequency_meter_horz_default$1.primitives;function isPrimitive3$1(ua){return typeof ua=="object"}var rotatedSymbol7$1=rotateSymbol$1({...frequency_meter_horz_default$1,primitives:Object.values(rest3$1).filter(isPrimitive3$1)}),frequency_meter_vert_default$1={...rotatedSymbol7$1,primitives:[...rotatedSymbol7$1.primitives,letter3$1]},fuse_default$1={paths:{path10:{type:"path",points:[{x:-.5283037500000001,y:.036413650000000075},{x:.5300302500000003,y:.036413650000000075}],color:"primary",fill:!1},path14:{type:"path",points:[{x:.0008652499999994845,y:.16870534999999975},{x:.2654482499999995,y:.16870534999999975},{x:.2654482499999995,y:-.0958780499999996},{x:-.2637187499999998,y:-.0958780499999996},{x:-.2637187499999998,y:.16870534999999975},{x:.0008652499999994845,y:.16870534999999975}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.008263949999999909,y:.23591724999999997},bottom1:{type:"text",text:"{VAL}",x:-.1716539500000005,y:-.23591724999999997}},refblocks:{left1:{x:-.5345548500000001,y:.03946054999999937},right1:{x:.5345548500000001,y:.0352561499999986}},bounds:{minX:-.5627132910000001,maxX:.5627132910000001,minY:-.23591724999999997,maxY:.23591724999999997,width:1.1254265820000002,height:.47183449999999993,centerX:0,centerY:0},circles:{}},{paths:paths17$1,texts:texts19$1,bounds:bounds17$1,refblocks:refblocks17$1}=fuse_default$1,fuse_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths17$1),{...texts19$1.top1,anchor:"middle_bottom"},{type:"text",text:"{VAL}",x:0,y:-.2,anchor:"middle_top"}],ports:[{...refblocks17$1.left1,labels:["1"]},{...refblocks17$1.right1,labels:["2"]}],size:{width:bounds17$1.width,height:bounds17$1.height},center:{x:bounds17$1.centerX,y:bounds17$1.centerY}}),fuse_vert_default$1=rotateSymbol$1(fuse_horz_default$1),ground_default$1={paths:{path1:{type:"path",points:[{x:-.33997010000000016,y:.4545300000000001},{x:-.03997010000000012,y:.4545300000000001}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.02032289999999981,y:.25053000000000014},{x:-.020322900000000033,y:.65053}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.050000000000000044,y:.3005300000000002},{x:.050000000000000044,y:.60053}],color:"primary",fill:!1},path4:{type:"path",points:[{x:.1499999999999997,y:.40053000000000005},{x:.1499999999999997,y:.5005300000000001}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{REF}",x:-.44999999999999996,y:-.6505299999999998},right1:{type:"text",text:"{VAL}",x:.44999999999999973,y:.35053}},refblocks:{top1:{x:-.33997010000000016,y:.4545300000000001},top2:{x:.17000000000000015,y:.4535300000000002}},bounds:{minX:-.44999999999999996,maxX:.44999999999999973,minY:-.6505299999999998,maxY:.65053,width:.8999999999999997,height:1.3010599999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:paths18$1,circles:circles17$1,bounds:bounds18$1,refblocks:refblocks18$1}=ground_default$1,horizontalSymbol$1=defineSymbol$1({primitives:[...Object.values(paths18$1),...Object.values(circles17$1),{type:"text",text:"{REF}",x:-.1,y:.8,anchor:"middle_bottom"},{type:"text",text:"{VAL}",x:-.1,y:.1,anchor:"middle_top"}],ports:[{...refblocks18$1.top1,labels:["1"]}],size:{width:1,height:1},center:{x:0,y:.4}}),ground_horz_default$1=horizontalSymbol$1,ground_vert_default$1=modifySymbol$1(ground_horz_default$1).rotateRightFacingSymbol("down").build(),gunn_diode_default$1={paths:{path11:{type:"path",points:[{x:-.49895505000000084,y:.035186950000000605},{x:-.177441850000001,y:.035186950000000605}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.18704774999999918,y:.043056250000000684},{x:.5063384499999999,y:.043056250000000684}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.3067105499999998,y:.19836805000000046},{x:-.3084575500000002,y:-.10569684999999973},{x:-.01040014999999972,y:.03790115000000038},{x:-.3034011499999991,y:.1991819500000005}],color:"primary",fill:!0},"path11-0-9-5":{type:"path",points:[{x:.3324594500000002,y:.19920585000000046},{x:.33420945000000013,y:-.10485904999999973},{x:.03615254999999973,y:.03873895000000038},{x:.32915344999999974,y:.2000197500000005}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.042716749999999415,y:.3158462499999999},bottom1:{type:"text",text:"{VAL}",x:.035355149999999336,y:-.3158462499999999}},refblocks:{left1:{x:-.5177904499999998,y:.03433415000000006},right1:{x:.5177904499999997,y:.04319984999999993}},bounds:{minX:-.5459488909999998,maxX:.5459488909999997,minY:-.3158462499999999,maxY:.3158462499999999,width:1.0918977819999993,height:.6316924999999998,centerX:-5551115123125783e-32,centerY:0},circles:{}},gunn_diode_horz_default$1=modifySymbol$1(gunn_diode_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),gunn_diode_vert_default$1=modifySymbol$1(gunn_diode_default$1).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_left").build(),igbt_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.3850944445000005,y:.0010025000000009054},{x:-.006525044499999799,y:-.0016204999999989145}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:.19027400000000116},{x:.07322065550000101,y:-.17787549999999852}],color:"primary",fill:!1},path42:{type:"path",points:[{x:.01002445549999953,y:-.12022799999999911},{x:.01002445549999953,y:.1443554000000009}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.28374995550000004,y:-.2462579999999992},{x:.2831499554999999,y:-.5425888999999995}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:.5370061000000012},{x:.2836366555000003,y:.2678117000000011}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.1731829554999995,y:-.2153930999999989},{x:.2780310554999992,y:-.23045039999999894},{x:.2324710554999987,y:-.14155709999999888}],color:"primary",fill:!0},path17:{type:"path",points:[{x:.07704605550000054,y:-.08544359999999895},{x:.2325688555000005,y:-.19774119999999895}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:.11255990000000127},{x:.28369465549999884,y:.2606293000000013}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.006566644499999885,y:.35624680000000075},bottom1:{type:"text",text:"{VAL}",x:.020614555499999687,y:-.4202180999999998}},refblocks:{top1:{x:.2843894554999997,y:.5566011000000001},bottom1:{x:.2823318555000005,y:-.5566010999999997},left1:{x:-.3990097444999998,y:.00014970000000036343}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5847595409999997,maxY:.584759541,width:.8543363709999996,height:1.1695190819999999,centerX:27755575615628914e-33,centerY:16653345369377348e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:.008130800000000438,radius:.28854213,color:"primary",fill:!1}}},igbt_transistor_horz_default$1=modifySymbol$1(igbt_transistor_default$1).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_right").build(),rotated2$1=rotateSymbol$1(igbt_transistor_horz_default$1),ref4$1=rotated2$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val4$1=rotated2$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref4$1.anchor="middle_left",val4$1.anchor="middle_right",ref4$1.x=.45,ref4$1.y+=.065,val4$1.y+=.065;var igbt_transistor_vert_default$1=rotated2$1,illuminated_push_button_normally_open_default$1={paths:{"path12-1-8-6-9":{type:"path",points:[{x:.023137150000000162,y:-.022408499999999165},{x:.023137150000000162,y:-.10240850000000101}],color:"primary",fill:!1},"path12-1-5-6":{type:"path",points:[{x:-.48740694999999956,y:-.18547949999999958},{x:-.1731006500000003,y:-.18547949999999958}],color:"primary",fill:!1},"path12-1-5-6-8":{type:"path",points:[{x:.023792949999999813,y:.17183650000000128},{x:.023792949999999813,y:.10518850000000057}],color:"primary",fill:!1},"path12-1-8-0":{type:"path",points:[{x:-.14922445000000018,y:-.032671500000001075},{x:.19549865000000022,y:-.18509050000000116}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.19549885000000078,y:-.18509050000000116},{x:.4881437499999999,y:-.18509050000000116}],color:"primary",fill:!1},"path12-1-8-6-9-4":{type:"path",points:[{x:.023137150000000162,y:.11939749999999982},{x:.023137150000000162,y:.017597499999999044}],color:"primary",fill:!1},"path12-1-8-6-9-4-3":{type:"path",points:[{x:.08312335000000015,y:.10724749999999972},{x:.08312335000000015,y:.050463500000001105}],color:"primary",fill:!1},"path12-1-8-6-9-4-3-1":{type:"path",points:[{x:-.03684904999999983,y:.10724749999999972},{x:-.03684904999999983,y:.050463500000001105}],color:"primary",fill:!1},"path12-1-8-6-9-4-4":{type:"path",points:[{x:.08312335000000015,y:.10724749999999972},{x:-.03684904999999983,y:.10724749999999972}],color:"primary",fill:!1},"path14-5":{type:"path",points:[{x:-.011640198644880861,y:.2824489119921765},{x:.01182744133211866,y:.25421423950368016},{x:.035295081309120846,y:.22597956701517674},{x:.05876272128612037,y:.19774489452667865}],color:"primary",fill:!0},"path14-5-3":{type:"path",points:[{x:-.011818241440559873,y:.19775449269853418},{x:.01171692178543804,y:.22592735480803405},{x:.03525208501144128,y:.25410021691753926},{x:.058787248237439194,y:.2822730790270338}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.010987250000000337,y:.3808714999999978},bottom1:{type:"text",text:"{VAL}",x:.05578094999999994,y:-.3808714999999996}},refblocks:{left1:{x:-.4717985499999999,y:-.1854504999999982},right1:{x:.4717985499999999,y:-.18547650000000182}},bounds:{minX:-.4999569909999999,maxX:.4999569909999999,minY:-.3808714999999996,maxY:.3808714999999978,width:.9999139819999998,height:.7617429999999974,centerX:0,centerY:-8881784197001252e-31},circles:{path9:{type:"circle",x:.02379285000000042,y:.24000550000000054,radius:.059920847,color:"primary",fill:!1}}},illuminated_push_button_normally_open_horz_default$1=modifySymbol$1(illuminated_push_button_normally_open_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol8$1=rotateSymbol$1(illuminated_push_button_normally_open_horz_default$1),texts21$1=rotatedSymbol8$1.primitives.filter(ua=>ua.type==="text"),val5$1=texts21$1.find(ua=>ua.text==="{VAL}");val5$1.x=-.35,val5$1.y=0,val5$1.anchor="middle_right";var ref5$1=texts21$1.find(ua=>ua.text==="{REF}");ref5$1.y=0,ref5$1.x=.35,ref5$1.anchor="middle_left";var illuminated_push_button_normally_open_vert_default$1=rotatedSymbol8$1,inductor_default$1={paths:{path8698:{type:"path",points:[{x:-.20003504999999944,y:-.023826854587889912},{x:-.20252458999999945,y:-.018993393814014044},{x:-.20501412999999943,y:-.014174384106555204},{x:-.2075036699999995,y:-.009384187436300498},{x:-.20999320999999949,y:-.004636988132081332},{x:-.2124827499999995,y:5329457033053167e-20},{x:-.2149722899999995,y:.004673092344940186},{x:-.2174618299999995,y:.009209271428771242},{x:-.21995136999999956,y:.013649213595881985},{x:-.22244090999999955,y:.01798089395292432},{x:-.22493044999999956,y:.022192955076609913},{x:-.22741998999999957,y:.02627477703600152},{x:-.22990952999999958,y:.030216542867918667},{x:-.2323990699999996,y:.03400929910178016},{x:-.2348886099999996,y:.03764501096072756},{x:-.23737814999999962,y:.04111661189869628},{x:-.23986768999999963,y:.04441804716802203},{x:-.24235722999999965,y:.04754431114897349},{x:-.24484676999999966,y:.05049147821106258},{x:-.24733630999999967,y:.053256726915861724},{x:-.24982584999999968,y:.05583835741211009},{x:-.2523153899999997,y:.05823580191586174},{x:-.2548049299999997,y:.060449628211062575},{x:-.2572944699999997,y:.0624815361489735},{x:-.25978400999999973,y:.06433434716802203},{x:-.26227354999999974,y:.06601198689869628},{x:-.26476308999999976,y:.06751946096072757},{x:-.26725262999999977,y:.06886282410178016},{x:-.2697421699999998,y:.07004914286791866},{x:-.2722317099999998,y:.0710864520360015},{x:-.2747212499999998,y:.07198370507660991},{x:-.2772107899999998,y:.07275071895292433},{x:-.27970032999999983,y:.07339811359588198},{x:-.28218986999999984,y:.07393724642877124},{x:-.28467940999999986,y:.07438014234494018},{x:-.28716894999999987,y:.07473941957033053},{x:-.2896584899999999,y:.07502821186791866},{x:-.2921480299999999,y:.07526008756369952},{x:-.2946375699999999,y:.07544896589344477},{x:-.2971271099999999,y:.07560903118598594},{x:-.29961664999999993,y:.07575464541211008},{x:-.3021061874999999,y:.07560903118598594},{x:-.30459572499999993,y:.07544896589344477},{x:-.3070852624999999,y:.07526008756369951},{x:-.30957479999999993,y:.07502821186791866},{x:-.31206433749999984,y:.07473941957033052},{x:-.3145538749999998,y:.07438014234494018},{x:-.31704341249999984,y:.07393724642877124},{x:-.31953294999999987,y:.07339811359588198},{x:-.32202248749999984,y:.07275071895292431},{x:-.3245120249999998,y:.07198370507660991},{x:-.3270015624999998,y:.0710864520360015},{x:-.32949109999999976,y:.07004914286791866},{x:-.33198063749999984,y:.06886282410178016},{x:-.33447017499999976,y:.06751946096072757},{x:-.3369597124999998,y:.06601198689869628},{x:-.33944924999999976,y:.06433434716802203},{x:-.34193878749999973,y:.06248153614897349},{x:-.34442832499999976,y:.06044962821106258},{x:-.3469178624999997,y:.05823580191586174},{x:-.3494073999999997,y:.05583835741211009},{x:-.35189693749999973,y:.053256726915861724},{x:-.35438647499999965,y:.050491478211062576},{x:-.3568760124999997,y:.0475443111489735},{x:-.35936554999999964,y:.04441804716802203},{x:-.3618550874999996,y:.04111661189869628},{x:-.36434462499999964,y:.03764501096072756},{x:-.36683416249999967,y:.03400929910178016},{x:-.3693236999999996,y:.030216542867918673},{x:-.3718132374999996,y:.02627477703600152},{x:-.3743027749999996,y:.022192955076609917},{x:-.37679231249999956,y:.017980893952924324},{x:-.3792818499999996,y:.013649213595881985},{x:-.3817713874999995,y:.00920927142877125},{x:-.38426092499999953,y:.004673092344940191},{x:-.38675046249999956,y:5329457033053514e-20},{x:-.38923999999999953,y:-.004636988132081328},{x:-.39172953749999956,y:-.009384187436300498},{x:-.3942190749999995,y:-.014174384106555197},{x:-.3967086124999995,y:-.01899339381401404},{x:-.3991981499999995,y:-.023826854587889912}],color:"primary",fill:!1},path8700:{type:"path",points:[{x:-.000872049999999458,y:-.02382615458789039},{x:-.0033615874999994412,y:-.01899269131401453},{x:-.0058511249999994245,y:-.014173679106555696},{x:-.008340662499999407,y:-.009383479936300985},{x:-.010830199999999391,y:-.004636278132081827},{x:-.013319737499999373,y:5400707033003174e-20},{x:-.015809274999999356,y:.004673807344939683},{x:-.018298812499999338,y:.009209988928770731},{x:-.020788349999999324,y:.013649933595881476},{x:-.023277887499999306,y:.017981616452923805},{x:-.02576742499999929,y:.022193680076609393},{x:-.02825696249999927,y:.026275504536001},{x:-.030746499999999254,y:.030217272867918137},{x:-.03323603749999924,y:.034010031601779636},{x:-.03572557499999922,y:.03764574596072702},{x:-.038215112499999204,y:.04111734939869574},{x:-.04070464999999919,y:.04441878716802149},{x:-.04319418749999917,y:.04754505364897295},{x:-.045683724999999155,y:.05049222321106203},{x:-.048173262499999134,y:.05325747441586117},{x:-.05066279999999912,y:.055839107412109526},{x:-.053152337499999106,y:.05823655441586117},{x:-.055641874999999084,y:.06045038321106201},{x:-.05813141249999907,y:.06248229364897292},{x:-.06062094999999905,y:.06433510716802145},{x:-.06311048749999904,y:.0660127493986957},{x:-.06560002499999902,y:.06752022596072697},{x:-.068089562499999,y:.06886359160177957},{x:-.07057909999999898,y:.07004991286791806},{x:-.07306863749999896,y:.07108722453600091},{x:-.07555817499999895,y:.0719844800766093},{x:-.07804771249999894,y:.07275149645292371},{x:-.08053724999999892,y:.07339889359588138},{x:-.0830267874999989,y:.07393802892877062},{x:-.08551632499999888,y:.07438092734493956},{x:-.08800586249999887,y:.07474020707032991},{x:-.09049539999999885,y:.07502900186791804},{x:-.09298493749999884,y:.07526088006369888},{x:-.09547447499999881,y:.07544976089344414},{x:-.0979640124999988,y:.0756098286859853},{x:-.10045354999999878,y:.07575544541210943},{x:-.1029430899999988,y:.0756098286859853},{x:-.1054326299999988,y:.07544976089344414},{x:-.10792216999999882,y:.07526088006369887},{x:-.11041170999999883,y:.07502900186791804},{x:-.11290124999999884,y:.0747402070703299},{x:-.11539078999999886,y:.07438092734493956},{x:-.11788032999999885,y:.07393802892877062},{x:-.1203698699999989,y:.07339889359588138},{x:-.12285940999999889,y:.07275149645292371},{x:-.1253489499999989,y:.0719844800766093},{x:-.12783848999999892,y:.07108722453600091},{x:-.13032802999999893,y:.07004991286791806},{x:-.13281756999999894,y:.06886359160177957},{x:-.13530710999999895,y:.06752022596072697},{x:-.13779664999999897,y:.0660127493986957},{x:-.14028618999999898,y:.06433510716802145},{x:-.142775729999999,y:.06248229364897291},{x:-.145265269999999,y:.06045038321106202},{x:-.14775480999999901,y:.05823655441586117},{x:-.15024434999999903,y:.055839107412109526},{x:-.15273388999999904,y:.05325747441586117},{x:-.15522342999999905,y:.05049222321106202},{x:-.15771296999999906,y:.047545053648972956},{x:-.16020250999999908,y:.04441878716802149},{x:-.1626920499999991,y:.04111734939869574},{x:-.1651815899999991,y:.03764574596072702},{x:-.16767112999999914,y:.034010031601779636},{x:-.1701606699999991,y:.03021727286791814},{x:-.17265020999999914,y:.026275504536001},{x:-.17513974999999915,y:.022193680076609396},{x:-.17762928999999916,y:.017981616452923805},{x:-.1801188299999992,y:.013649933595881474},{x:-.18260836999999916,y:.00920998892877074},{x:-.1850979099999992,y:.0046738073449396865},{x:-.1875874499999992,y:5400707033003521e-20},{x:-.19007698999999922,y:-.004636278132081827},{x:-.19256652999999926,y:-.009383479936300985},{x:-.19505606999999922,y:-.01417367910655569},{x:-.19754560999999926,y:-.018992691314014522},{x:-.20003514999999927,y:-.02382615458789039}],color:"primary",fill:!1},path8702:{type:"path",points:[{x:.19829105000000036,y:-.02382615458789039},{x:.19580151000000035,y:-.01899269131401453},{x:.1933119700000003,y:-.014173679106555696},{x:.19082243000000035,y:-.009383479936300985},{x:.1883328900000003,y:-.004636278132081827},{x:.1858433500000003,y:5400707033003174e-20},{x:.18335381000000028,y:.004673807344939683},{x:.18086427000000024,y:.009209988928770731},{x:.1783747300000003,y:.013649933595881476},{x:.17588519000000025,y:.017981616452923805},{x:.17339565000000023,y:.022193680076609393},{x:.17090611000000022,y:.026275504536001},{x:.16841657000000018,y:.030217272867918137},{x:.16592703000000023,y:.034010031601779636},{x:.16343749000000019,y:.03764574596072702},{x:.16094795000000017,y:.04111734939869574},{x:.15845841000000016,y:.04441878716802149},{x:.15596887000000015,y:.04754505364897295},{x:.15347933000000014,y:.05049222321106203},{x:.15098979000000012,y:.05325747441586117},{x:.1485002500000001,y:.055839107412109526},{x:.1460107100000001,y:.05823655441586117},{x:.1435211700000001,y:.06045038321106201},{x:.14103163000000007,y:.06248229364897292},{x:.13854209000000006,y:.06433510716802145},{x:.13605255000000005,y:.0660127493986957},{x:.13356301000000004,y:.06752022596072697},{x:.13107347000000003,y:.06886359160177957},{x:.12858393,y:.07004991286791806},{x:.12609439,y:.07108722453600091},{x:.12360484999999999,y:.0719844800766093},{x:.12111530999999998,y:.07275149645292371},{x:.11862576999999996,y:.07339889359588138},{x:.11613622999999995,y:.07393802892877062},{x:.11364668999999994,y:.07438092734493956},{x:.11115714999999993,y:.07474020707032991},{x:.10866760999999991,y:.07502900186791804},{x:.1061780699999999,y:.07526088006369888},{x:.10368852999999989,y:.07544976089344414},{x:.10119898999999988,y:.0756098286859853},{x:.09870944999999987,y:.07575544541210943},{x:.09621991249999988,y:.0756098286859853},{x:.0937303749999999,y:.07544976089344414},{x:.09124083749999992,y:.07526088006369887},{x:.08875129999999994,y:.07502900186791804},{x:.08626176249999995,y:.0747402070703299},{x:.08377222499999996,y:.07438092734493956},{x:.08128268749999998,y:.07393802892877062},{x:.07879315,y:.07339889359588138},{x:.07630361250000002,y:.07275149645292371},{x:.07381407500000003,y:.0719844800766093},{x:.07132453750000005,y:.07108722453600091},{x:.06883500000000006,y:.07004991286791806},{x:.06634546250000009,y:.06886359160177957},{x:.0638559250000001,y:.06752022596072697},{x:.06136638750000012,y:.0660127493986957},{x:.05887685000000013,y:.06433510716802145},{x:.05638731250000015,y:.06248229364897291},{x:.053897775000000175,y:.06045038321106202},{x:.05140823750000019,y:.05823655441586117},{x:.048918700000000204,y:.055839107412109526},{x:.04642916250000022,y:.05325747441586117},{x:.04393962500000023,y:.05049222321106202},{x:.04145008750000026,y:.047545053648972956},{x:.038960550000000274,y:.04441878716802149},{x:.03647101250000029,y:.04111734939869574},{x:.0339814750000003,y:.03764574596072702},{x:.03149193750000032,y:.034010031601779636},{x:.02900240000000034,y:.03021727286791814},{x:.02651286250000036,y:.026275504536001},{x:.024023325000000373,y:.022193680076609396},{x:.021533787500000387,y:.017981616452923805},{x:.019044250000000405,y:.013649933595881474},{x:.016554712500000426,y:.00920998892877074},{x:.014065175000000442,y:.0046738073449396865},{x:.011575637500000457,y:5400707033003521e-20},{x:.009086100000000473,y:-.004636278132081827},{x:.006596562500000487,y:-.009383479936300985},{x:.004107025000000513,y:-.01417367910655569},{x:.0016174875000005274,y:-.018992691314014522},{x:-.000872049999999458,y:-.02382615458789039}],color:"primary",fill:!1},path8704:{type:"path",points:[{x:.39745405000000034,y:-.02382615458789039},{x:.3949645125000003,y:-.01899269131401453},{x:.39247497500000034,y:-.014173679106555696},{x:.3899854375000004,y:-.009383479936300985},{x:.38749590000000045,y:-.004636278132081827},{x:.3850063625000004,y:5400707033003174e-20},{x:.3825168250000004,y:.004673807344939683},{x:.3800272875000004,y:.009209988928770731},{x:.3775377500000005,y:.013649933595881476},{x:.37504821250000053,y:.017981616452923805},{x:.3725586750000005,y:.022193680076609393},{x:.3700691375000005,y:.026275504536001},{x:.3675796000000005,y:.030217272867918137},{x:.3650900625000006,y:.034010031601779636},{x:.3626005250000006,y:.03764574596072702},{x:.3601109875000006,y:.04111734939869574},{x:.35762145000000056,y:.04441878716802149},{x:.3551319125000006,y:.04754505364897295},{x:.3526423750000007,y:.05049222321106203},{x:.3501528375000007,y:.05325747441586117},{x:.3476633000000007,y:.055839107412109526},{x:.34517376250000065,y:.05823655441586117},{x:.34268422500000073,y:.06045038321106201},{x:.3401946875000007,y:.06248229364897292},{x:.3377051500000008,y:.06433510716802145},{x:.33521561250000076,y:.0660127493986957},{x:.33272607500000073,y:.06752022596072697},{x:.3302365375000008,y:.06886359160177957},{x:.3277470000000008,y:.07004991286791806},{x:.3252574625000008,y:.07108722453600091},{x:.32276792500000084,y:.0719844800766093},{x:.32027838750000087,y:.07275149645292371},{x:.3177888500000009,y:.07339889359588138},{x:.3152993125000009,y:.07393802892877062},{x:.3128097750000009,y:.07438092734493956},{x:.31032023750000093,y:.07474020707032991},{x:.30783070000000096,y:.07502900186791804},{x:.305341162500001,y:.07526088006369888},{x:.30285162500000096,y:.07544976089344414},{x:.300362087500001,y:.0756098286859853},{x:.297872550000001,y:.07575544541210943},{x:.29538301000000095,y:.0756098286859853},{x:.292893470000001,y:.07544976089344414},{x:.290403930000001,y:.07526088006369887},{x:.287914390000001,y:.07502900186791804},{x:.28542485000000095,y:.0747402070703299},{x:.2829353100000009,y:.07438092734493956},{x:.2804457700000009,y:.07393802892877062},{x:.2779562300000009,y:.07339889359588138},{x:.2754666900000009,y:.07275149645292371},{x:.2729771500000009,y:.0719844800766093},{x:.2704876100000009,y:.07108722453600091},{x:.26799807000000087,y:.07004991286791806},{x:.26550853000000085,y:.06886359160177957},{x:.26301899000000084,y:.06752022596072697},{x:.26052945000000083,y:.0660127493986957},{x:.2580399100000008,y:.06433510716802145},{x:.2555503700000008,y:.06248229364897291},{x:.2530608300000008,y:.06045038321106202},{x:.2505712900000008,y:.05823655441586117},{x:.24808175000000077,y:.055839107412109526},{x:.24559221000000075,y:.05325747441586117},{x:.24310267000000074,y:.05049222321106202},{x:.24061313000000073,y:.047545053648972956},{x:.23812359000000072,y:.04441878716802149},{x:.2356340500000007,y:.04111734939869574},{x:.2331445100000007,y:.03764574596072702},{x:.23065497000000068,y:.034010031601779636},{x:.22816543000000067,y:.03021727286791814},{x:.22567589000000066,y:.026275504536001},{x:.22318635000000064,y:.022193680076609396},{x:.22069681000000063,y:.017981616452923805},{x:.21820727000000062,y:.013649933595881474},{x:.2157177300000006,y:.00920998892877074},{x:.2132281900000006,y:.0046738073449396865},{x:.21073865000000058,y:5400707033003521e-20},{x:.20824911000000057,y:-.004636278132081827},{x:.20575957000000056,y:-.009383479936300985},{x:.20327003000000055,y:-.01417367910655569},{x:.20078049000000053,y:-.018992691314014522},{x:.19829095000000052,y:-.02382615458789039}],color:"primary",fill:!1},path8706:{type:"path",points:[{x:-.4023286499999996,y:-.022544054587890106},{x:-.5293590499999994,y:-.022544054587890106}],color:"primary",fill:!1},"path8706-5":{type:"path",points:[{x:.5261604500000003,y:-.027111054587890093},{x:.39913004999999946,y:-.027111054587890093}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0040821499999992295,y:.22997364541210996},bottom1:{type:"text",text:"{VAL}",x:-.004252755294839927,y:-.22997364541210996}},refblocks:{left1:{x:-.5504428500000003,y:-.021272154587890446},right1:{x:.5504428500000005,y:-.026521254587889898}},bounds:{minX:-.5786012910000002,maxX:.5786012910000005,minY:-.22997364541210996,maxY:.22997364541210996,width:1.1572025820000007,height:.4599472908242199,centerX:11102230246251565e-32,centerY:0},circles:{}},{paths:paths20$1,texts:texts22$1,bounds:bounds20$1,refblocks:refblocks20$1,circles:circles19$1}=inductor_default$1,inductor_right_default$1=defineSymbol$1({primitives:[...Object.values(paths20$1),...Object.values(circles19$1),{...texts22$1.top1,anchor:"middle_bottom"},{...texts22$1.bottom1,anchor:"middle_top"}],ports:[{...refblocks20$1.left1,labels:["1"]},{...refblocks20$1.right1,labels:["2"]}],size:{width:bounds20$1.width,height:bounds20$1.height},center:{x:bounds20$1.centerX,y:bounds20$1.centerY}}),inductor_up_default$1=rotateSymbol$1(inductor_right_default$1,"up"),inductor_down_default$1=flipSymbolOverXAxis$1(inductor_up_default$1),inductor_left_default$1=flipSymbolOverYAxis$1(inductor_right_default$1),laser_diode_default$1={paths:{path11:{type:"path",points:[{x:-.5274831500000006,y:-.05991764999999982},{x:-.14891374999999996,y:-.06254064999999964}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.13221874999999983,y:-.048856449999999496},{x:-.13236425000000063,y:-.18114814999999918}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.13236425000000063,y:.08343525000000018},{x:.13221874999999983,y:-.048856449999999496}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.13236425000000063,y:-.18114814999999984},{x:-.13236425000000063,y:.08343525000000018}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.13221874999999983,y:.08343525000000018},{x:.13221874999999983,y:-.18114814999999984}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.13582535000000018,y:-.04942524999999942},{x:.533952450000001,y:-.059917649999999156}],color:"primary",fill:!1},"path25-0-9-8":{type:"path",points:[{x:-.02944535000000048,y:.39378525000000053},{x:-.05325954999999993,y:.4660362500000006},{x:-.07725114999999949,y:.39386225000000086}],color:"primary",fill:!0},"path78-6-5-5":{type:"path",points:[{x:-.05361965000000035,y:.27387525000000035},{x:-.053592050000000446,y:.2865022500000003},{x:-.05330205000000077,y:.41436425000000066},{x:-.05311205000000019,y:.4152642500000008}],color:"primary",fill:!1},"path25-0-9-8-2":{type:"path",points:[{x:.06865195000000024,y:.39378525000000053},{x:.044837750000000565,y:.4660362500000006},{x:.02084615000000123,y:.39386225000000086}],color:"primary",fill:!0},"path78-6-5-5-7":{type:"path",points:[{x:.044477650000000146,y:.27387525000000035},{x:.044505250000000274,y:.2865022500000003},{x:.04479524999999995,y:.41436425000000066},{x:.04498525000000053,y:.4152642500000008}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:.03124844999999965,y:.05895145000000013},{x:.03124844999999965,y:-.16452955000000036}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.25206924999999947,y:.3769550499999994},bottom1:{type:"text",text:"{VAL}",x:-.006614550000000552,y:-.4660362500000004}},refblocks:{left1:{x:-.54139845,y:-.060770450000000364},right1:{x:.5413984499999995,y:-.0597740500000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.4660362500000004,maxY:.4660362500000006,width:1.1391137819999995,height:.932072500000001,centerX:-2220446049250313e-31,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000003116,y:-.05278935000000051,radius:.28854213,color:"primary",fill:!1}}};laser_diode_default$1.bounds.width+=.2;var laser_diode_horz_default$1=modifySymbol$1(laser_diode_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol9$1=rotateSymbol$1(laser_diode_horz_default$1),texts23$1=rotatedSymbol9$1.primitives.filter(ua=>ua.type==="text"),ref6$1=texts23$1.find(ua=>ua.text==="{VAL}");ref6$1.x=-.52,ref6$1.anchor="middle_right";var laser_diode_vert_default$1=rotatedSymbol9$1,led_default$1={paths:{path45:{type:"path",points:[{x:.13585750000000063,y:-.003696399999999045},{x:-.12872579999999934,y:-.13598810000000228}],color:"primary",fill:!1},"path1-8":{type:"path",points:[{x:.12763670000000094,y:-.003920199999999596},{x:.5265564000000009,y:-.003920199999999596}],color:"primary",fill:!1},path46:{type:"path",points:[{x:-.12872579999999934,y:.12859530000000063},{x:.13585750000000063,y:-.003696399999999045}],color:"primary",fill:!1},path47:{type:"path",points:[{x:-.12872579999999934,y:-.13598810000000228},{x:-.12872579999999934,y:.12859530000000063}],color:"primary",fill:!1},path48:{type:"path",points:[{x:.13585750000000063,y:.12859530000000063},{x:.13585750000000063,y:-.13598810000000228}],color:"primary",fill:!1},path49:{type:"path",points:[{x:-.13076959999999938,y:-.003696399999999045},{x:-.5256007999999994,y:-.003696399999999045}],color:"primary",fill:!1},path25:{type:"path",points:[{x:-.1557438999999996,y:.28545279999999806},{x:-.2530861999999994,y:.3023319999999998},{x:-.21878339999999952,y:.20956920000000068}],color:"primary",fill:!0},path78:{type:"path",points:[{x:-.08000449999999937,y:.16590799999999817},{x:-.09202799999999911,y:.1748410000000007},{x:-.2137844999999996,y:.26529680000000155},{x:-.2144144999999993,y:.2662468000000011}],color:"primary",fill:!1},"path25-0":{type:"path",points:[{x:.021722400000000697,y:.30658939999999646},{x:-.07561989999999952,y:.3234685999999982},{x:-.04131709999999922,y:.23070579999999907}],color:"primary",fill:!0},"path78-6":{type:"path",points:[{x:.09746180000000093,y:.18704459999999656},{x:.08543830000000074,y:.19597759999999909},{x:-.0363181999999993,y:.28643339999999995},{x:-.03694819999999943,y:.2873833999999995}],color:"primary",fill:!1}},texts:{bottom1:{type:"text",text:"{VAL}",x:-.009561699999999451,y:-.3234685999999982},right1:{type:"text",text:"{REF}",x:.31464070000000044,y:.22386570000000106}},refblocks:{left1:{x:-.5362092999999997,y:-.004432900000001183},right1:{x:.5362093000000003,y:-.004886400000003732}},bounds:{minX:-.5643677409999996,maxX:.5643677410000003,minY:-.3234685999999982,maxY:.3234685999999982,width:1.128735482,height:.6469371999999964,centerX:33306690738754696e-32,centerY:0},circles:{}},{paths:paths21$1,texts:texts24$1,bounds:bounds21$1,refblocks:refblocks21$1,circles:circles20$1}=led_default$1,led_right_default$1=defineSymbol$1({primitives:[...Object.values(paths21$1),...Object.values(circles20$1),{...texts24$1.bottom1,anchor:"middle_top"},{...texts24$1.right1,anchor:"middle_bottom"}],ports:[{...refblocks21$1.left1,labels:["1"]},{...refblocks21$1.right1,labels:["2"]}],size:{width:bounds21$1.width,height:bounds21$1.height},center:{x:bounds21$1.centerX,y:bounds21$1.centerY}}),led_down_default$1=rotateSymbol$1(led_right_default$1,"down"),led_left_default$1=flipSymbolOverYAxis$1(led_right_default$1),baseSymbol$1=rotateSymbol$1(led_right_default$1,"up"),modifiedSymbol$1={...baseSymbol$1,primitives:baseSymbol$1.primitives.map(ua=>ua.type==="path"&&(ua.points.length===3||ua.points.length===4)?{...ua,points:ua.points.map(J=>({x:J.x,y:-J.y+2*baseSymbol$1.center.y}))}:ua)},led_up_default$1=modifiedSymbol$1,light_dependent_resistor_default$1={paths:{path11:{type:"path",points:[{x:-.5053201665812097,y:-.010839730805804138},{x:-.1829962316128657,y:-.010839730805804138}],color:"primary",fill:!1},"path11-2":{type:"path",points:[{x:-.1674747072814866,y:-.11471502212593476},{x:-.1674747072814866,y:.07736981415388478}],color:"primary",fill:!1},"path11-5":{type:"path",points:[{x:-.1674747072814866,y:-.11632056223474518},{x:.16018133830019532,y:-.11632056223474518}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:-.1674747072814866,y:.07736981415388478},{x:.16018133830019532,y:.07736981415388478}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.17205869804197382,y:-.010839950577224311},{x:.5116721586832798,y:-.010839950577224311}],color:"primary",fill:!1},"path11-2-1":{type:"path",points:[{x:.16064490317338742,y:-.11622177498145403},{x:.16064490317338742,y:.07727135655772521}],color:"primary",fill:!1},"path25-0-9":{type:"path",points:[{x:-.40391896081308554,y:-.2111951150487743},{x:-.32538818309991635,y:-.1776462385858042},{x:-.33843942905204627,y:-.26928059146906413}],color:"primary",fill:!0},"path78-6-5":{type:"path",points:[{x:-.4470989190253618,y:-.3351265263866847},{x:-.4385525777085817,y:-.32468848279378437},{x:-.3520048317368336,y:-.21897414423109507},{x:-.3516268465799328,y:-.21798517284109487}],color:"primary",fill:!1},"path25-0-9-0":{type:"path",points:[{x:-.30220674110432255,y:-.3403193953841548},{x:-.22367596339115314,y:-.30677051892118534},{x:-.23672720934328306,y:-.3984048718044453}],color:"primary",fill:!0},"path78-6-5-9":{type:"path",points:[{x:-.3453866993165988,y:-.464250806722065},{x:-.3368403579998187,y:-.45381276312916397},{x:-.2502926120280704,y:-.34809842456647466},{x:-.24991462687116983,y:-.34710945317647446}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.1679477702432366,y:-.40859918889256375},bottom1:{type:"text",text:"{VAL}",x:-.006410773639930811,y:.464250806722065}},refblocks:{left1:{x:-.5247194309452994,y:-.009902515585214156},right1:{x:.5247194309452992,y:-.010997416799653603}},bounds:{minX:-.5520103866874645,maxX:.5520103866874643,minY:-.5085991888925637,maxY:.464250806722065,width:1.1040207733749288,height:.6228499956146287,centerX:-11102230246251565e-32,centerY:-.022174191085249373},circles:{path1:{type:"circle",x:-.003646732950281173,y:-.018672603986024328,radius:.2796529289238723,color:"primary",fill:!1}}},{paths:paths22$1,texts:texts25$1,bounds:bounds22$1,refblocks:refblocks22$1,circles:circles21$1}=light_dependent_resistor_default$1,light_dependent_resistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths22$1),...Object.values(circles21$1),{...texts25$1.top1,anchor:"middle_left",x:0},{...texts25$1.bottom1,anchor:"middle_left",x:0}],ports:[{...refblocks22$1.left1,labels:["1"]},{...refblocks22$1.right1,labels:["2"]}],size:{width:bounds22$1.width,height:bounds22$1.height},center:{x:bounds22$1.centerX,y:bounds22$1.centerY}}),rotatedSymbol10$1=rotateSymbol$1(light_dependent_resistor_horz_default$1),texts26$1=rotatedSymbol10$1.primitives.filter(ua=>ua.type==="text"),val6$1=texts26$1.find(ua=>ua.text==="{VAL}");val6$1.x=-.35,val6$1.y=0,val6$1.anchor="middle_right";var ref7$1=texts26$1.find(ua=>ua.text==="{REF}");ref7$1.y=0,ref7$1.x=.35,ref7$1.anchor="middle_left";var light_dependent_resistor_vert_default$1=rotatedSymbol10$1,mosfet_depletion_normally_on_default$1={paths:{path208:{type:"path",points:[{x:.3843021704999998,y:.13154093999999894},{x:.5165938705000004,y:-.13304206000000107}],color:"primary",fill:!1},path209:{type:"path",points:[{x:.25201047050000014,y:-.13304206000000107},{x:.3843021704999998,y:.13154093999999894}],color:"primary",fill:!1},path210:{type:"path",points:[{x:.5165938705000004,y:-.13304206000000107},{x:.25201047050000014,y:-.13304206000000107}],color:"primary",fill:!1},path211:{type:"path",points:[{x:.25201047050000014,y:.13154093999999894},{x:.5165938705000004,y:.13154093999999894}],color:"primary",fill:!1},path212:{type:"path",points:[{x:.11971887050000074,y:-.39762406000000006},{x:.3843021704999998,y:-.39762406000000006}],color:"primary",fill:!1},path213:{type:"path",points:[{x:.3843021704999998,y:.39612494},{x:.11971887050000074,y:.39612494}],color:"primary",fill:!1},path214:{type:"path",points:[{x:.11971887050000074,y:.5284169399999996},{x:.11971887050000074,y:.18445994}],color:"primary",fill:!1},path215:{type:"path",points:[{x:.11971887050000074,y:-.5299150600000004},{x:.11971887050000074,y:-.0007480600000011606}],color:"primary",fill:!1},path216:{type:"path",points:[{x:.3843021704999998,y:-.39762469000000067},{x:.3843021704999998,y:.3961256399999993}],color:"primary",fill:!1},path217:{type:"path",points:[{x:-.1448644295000001,y:.2638359399999999},{x:-.1448644295000001,y:-.26533006000000015}],color:"primary",fill:!1},path218:{type:"path",points:[{x:-.22423942949999898,y:-.2653310599999994},{x:-.22423942949999898,y:.26383493999999885}],color:"primary",fill:!1},path219:{type:"path",points:[{x:-.5417394294999998,y:-.26533006000000015},{x:-.22423942949999898,y:-.2653320600000004}],color:"primary",fill:!1},path220:{type:"path",points:[{x:-.1448644295000001,y:-.18595506000000128},{x:.11971897050000013,y:-.18595506000000128}],color:"primary",fill:!1},path221:{type:"path",points:[{x:-.1448644295000001,y:.18446093999999924},{x:.11971897050000013,y:.18446093999999924}],color:"primary",fill:!1},path222:{type:"path",points:[{x:-.06548942950000036,y:-.0007480600000011606},{x:.11971887050000074,y:-.0007480600000011606}],color:"primary",fill:!1}},texts:{right1:{type:"text",text:"{VAL}",x:.5715500704999998,y:.02044358999999929},right2:{type:"text",text:"{REF}",x:.5701646705000005,y:.2085436499999993}},refblocks:{top1:{x:.12018067049999992,y:.5432738300000004},bottom1:{x:.11982247050000083,y:-.5432738300000004},left1:{x:-.5433916295000003,y:-.2663988600000007}},bounds:{minX:-.5715500705000003,maxX:.5715500704999998,minY:-.5714322710000004,maxY:.5714322710000004,width:1.1431001410000001,height:1.1428645420000008,centerX:-2220446049250313e-31,centerY:0},circles:{}},{paths:paths23$1,texts:texts27$1,bounds:bounds23$1,refblocks:refblocks23$1}=mosfet_depletion_normally_on_default$1,mosfet_depletion_normally_on_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths23$1),{...texts27$1.right1,anchor:"middle_left"},{...texts27$1.right2,anchor:"middle_left"}],ports:[{...refblocks23$1.top1,labels:["1"]},{...refblocks23$1.bottom1,labels:["2"]},{...refblocks23$1.left1,labels:["3"]}],size:{width:bounds23$1.width+.4,height:bounds23$1.height},center:{x:bounds23$1.centerX+.2,y:bounds23$1.centerY}}),rotated3$1=rotateSymbol$1(mosfet_depletion_normally_on_horz_default$1),ref8$1=rotated3$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val7$1=rotated3$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref8$1.anchor="middle_top",val7$1.anchor="middle_top",ref8$1.x=val7$1.x,val7$1.y+=.15;var mosfet_depletion_normally_on_vert_default$1=rotated3$1,mushroom_head_normally_open_momentary_default$1={paths:{"path12-1-8-6-9":{type:"path",points:[{x:.005962250000000502,y:.06921149999999976},{x:.005962250000000502,y:-.005086499999999106}],color:"primary",fill:!1},"path12-1-5-6":{type:"path",points:[{x:-.48740705000000073,y:-.09299450000000142},{x:-.17310075000000058,y:-.09299450000000142}],color:"primary",fill:!1},"path12-1-8-0":{type:"path",points:[{x:-.16008695000000017,y:-.010660500000000184},{x:.1719709499999995,y:-.010660500000000184}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.1954987499999996,y:-.09260549999999945},{x:.4881436499999996,y:-.09260549999999945}],color:"primary",fill:!1},path2:{type:"path",points:[{x:-.09950044999999985,y:.05839450000000035},{x:-.09950104999999976,y:.06197449999999982},{x:-.09932044999999956,y:.06550449999999941},{x:-.09896044999999987,y:.0690104999999992},{x:-.09860045000000017,y:.07250049999999852},{x:-.09806045000000019,y:.07593049999999835},{x:-.09735344999999995,y:.07929949999999941},{x:-.09663345000000056,y:.08265950000000011},{x:-.09578045000000035,y:.08599949999999978},{x:-.09475245000000054,y:.08924949999999932},{x:-.09379245000000047,y:.09255949999999835},{x:-.09254545000000025,y:.09567949999999925},{x:-.09120844999999989,y:.09877950000000091},{x:-.08986644999999971,y:.10186950000000117},{x:-.08839545000000015,y:.10492949999999901},{x:-.08675845000000049,y:.10783949999999898},{x:-.08506245000000057,y:.11069950000000084},{x:-.08334244999999996,y:.11360950000000081},{x:-.08146945000000017,y:.11638949999999859},{x:-.0795824500000002,y:.11916949999999993},{x:-.07752845000000086,y:.12180949999999946},{x:-.07546944999999994,y:.12442949999999975},{x:-.07325945000000011,y:.12693950000000065},{x:-.07104145000000006,y:.129449499999998},{x:-.06867544999999975,y:.13182950000000027},{x:-.06628845000000005,y:.1341695000000005},{x:-.06379544999999975,y:.1364194999999988},{x:-.06114145000000004,y:.13848950000000038},{x:-.05848745000000033,y:.1405694999999998},{x:-.05584345000000024,y:.14261950000000034},{x:-.05306845000000049,y:.14449950000000022},{x:-.05029345000000074,y:.14639950000000113},{x:-.04738844999999969,y:.14811950000000174},{x:-.04437445000000029,y:.14969949999999876},{x:-.04134744999999995,y:.1513194999999996},{x:-.038316449999999946,y:.15275949999999838},{x:-.03515645000000056,y:.15407949999999992},{x:-.03204444999999989,y:.15536950000000083},{x:-.028770450000000558,y:.15655950000000018},{x:-.025468450000000864,y:.15757949999999887},{x:-.02213745000000067,y:.15863950000000138},{x:-.018790450000000014,y:.15942949999999811},{x:-.01536325000000005,y:.16012949999999826},{x:-.011980249999999693,y:.16082950000000018},{x:-.008442250000000762,y:.16141949999999916},{x:-.004890650000000107,y:.1617494999999991},{x:-.0013406500000003874,y:.16204949999999663},{x:.002252350000000014,y:.16214949999999817},{x:.005893849999999645,y:.16214949999999817},{x:.009534849999998762,y:.16214949999999817},{x:.013136849999999534,y:.16204949999999663},{x:.016683149999999536,y:.1617494999999991},{x:.020231149999998976,y:.1614494999999998},{x:.023727149999999142,y:.16104949999999896},{x:.02715474999999934,y:.16012949999999826},{x:.03057874999999921,y:.15952949999999966},{x:.03395574999999962,y:.15867949999999986},{x:.03725995000000015,y:.15758950000000027},{x:.0405679499999998,y:.15652949999999954},{x:.04379994999999948,y:.15541949999999893},{x:.04695294999999966,y:.15409950000000094},{x:.050101949999999285,y:.15280950000000004},{x:.053191949999999544,y:.1513194999999996},{x:.05617794999999948,y:.1497395000000008},{x:.05916694999999983,y:.14811950000000174},{x:.06206694999999929,y:.14639950000000113},{x:.06487294999999982,y:.1445595000000015},{x:.06767095000000012,y:.14269950000000264},{x:.07038294999999994,y:.14069950000000198},{x:.07299194999999958,y:.1385795000000023},{x:.07560095000000011,y:.13645950000000262},{x:.07809294999999938,y:.13420950000000254},{x:.08047994999999997,y:.13187950000000193},{x:.08287894999999956,y:.1295395000000017},{x:.08515495000000062,y:.12706950000000106},{x:.08729294999999926,y:.12451950000000167},{x:.08944594999999911,y:.12192950000000202},{x:.0914679499999993,y:.11930950000000173},{x:.09337295000000001,y:.1165295000000004},{x:.0971669499999992,y:.11101949999999938},{x:.10043494999999947,y:.10512450000000229},{x:.10311494999999926,y:.09890950000000132},{x:.10444094999999987,y:.09581950000000106},{x:.10564094999999973,y:.09262950000000103},{x:.10667494999999949,y:.08935950000000226},{x:.10769994999999977,y:.08610950000000273},{x:.1085699499999997,y:.08279950000000369},{x:.10927795000000007,y:.07942950000000337},{x:.10999794999999946,y:.07605950000000128},{x:.11051994999999959,y:.07262950000000146},{x:.11088394999999984,y:.06913950000000213},{x:.11124394999999954,y:.0656495000000028},{x:.11142394999999983,y:.062099500000002195},{x:.11142394999999983,y:.05854350000000075},{x:.10483595000000001,y:.05853049999999982},{x:.0982479500000002,y:.058516500000001415},{x:.09164495000000006,y:.058518500000001694},{x:.08505695000000024,y:.05850850000000207},{x:.078453950000001,y:.058509500000001324},{x:.07186595000000029,y:.058496500000000395},{x:.06526295000000104,y:.05849750000000142},{x:.058674950000001225,y:.058485499999999746},{x:.05208695000000052,y:.058473499999999845},{x:.04548395000000127,y:.058475500000000125},{x:.038895950000001456,y:.05846150000000172},{x:.03230795000000075,y:.058448499999999015},{x:.025704950000001503,y:.058453499999998826},{x:.019101950000001366,y:.05845449999999808},{x:.01251395000000155,y:.05844149999999715},{x:.005925950000001734,y:.058427499999998744},{x:-.0006560499999990199,y:.05842149999999968},{x:-.007240049999999165,y:.05841449999999959},{x:-.01382404999999931,y:.05840850000000053},{x:-.020406049999999176,y:.05840250000000147},{x:-.02699004999999932,y:.058394500000002125},{x:-.03357404999999947,y:.05838950000000409},{x:-.04015604999999933,y:.05838350000000503},{x:-.04674004999999948,y:.05837450000000466},{x:-.05332205000000023,y:.058368500000005596},{x:-.05990605000000038,y:.058360500000006255},{x:-.06649005000000052,y:.058355500000006444},{x:-.07307205000000039,y:.05834950000000738},{x:-.07965605000000053,y:.05834150000000804},{x:-.08624005000000068,y:.05833550000000898},{x:-.09282205000000143,y:.05833050000001094}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.01254745000000046,y:.26612850000000243},bottom1:{type:"text",text:"{VAL}",x:-.16130964999999975,y:-.2661284999999989}},refblocks:{left1:{x:-.4717985499999999,y:-.09296750000000031},right1:{x:.4717985499999999,y:-.09299249999999937}},bounds:{minX:-.4999569909999999,maxX:.4999569909999999,minY:-.2661284999999989,maxY:.26612850000000243,width:.9999139819999998,height:.5322570000000013,centerX:0,centerY:17763568394002505e-31},circles:{}},{paths:paths24$1,texts:texts28$1,bounds:bounds24$1,refblocks:refblocks24$1,circles:circles22$1}=mushroom_head_normally_open_momentary_default$1,mushroom_head_normally_open_momentary_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths24$1),...Object.values(circles22$1),{...texts28$1.top1,anchor:"middle_bottom",x:0},{...texts28$1.bottom1,anchor:"middle_top",x:0}],ports:[{...refblocks24$1.left1,labels:["1"]},{...refblocks24$1.right1,labels:["2"]}],size:{width:bounds24$1.width,height:bounds24$1.height},center:{x:bounds24$1.centerX+.006,y:bounds24$1.centerY+.06}}),rotated4$1=rotateSymbol$1(mushroom_head_normally_open_momentary_horz_default$1),ref9$1=rotated4$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val8$1=rotated4$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref9$1.anchor="middle_left",val8$1.anchor="middle_right",ref9$1.x=ref9$1.x-.03,ref9$1.y=ref9$1.y,val8$1.x=val8$1.x,val8$1.y=0;var mushroom_head_normally_open_momentary_vert_default$1=rotated4$1,n_channel_d_mosfet_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.09373835550000087,y:-.18559775000000034},{x:.09280835550000122,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.27419885550000034,y:.04077644999999963},{x:.27419885550000034,y:-.030615650000000327},{x:.2024438555000001,y:.004662050000000084}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.16715385000000005},{x:.05111245550000065,y:.10592255000000006}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths25$1,texts:texts29$1,bounds:bounds25$1,refblocks:refblocks25$1,circles:circles23$1}=n_channel_d_mosfet_transistor_default$1,n_channel_d_mosfet_transistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths25$1),...Object.values(circles23$1),{...texts29$1.top1,anchor:"middle_right",x:0},{...texts29$1.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks25$1.top1,labels:["1","drain"]},{...refblocks25$1.bottom1,labels:["2","source"]},{...refblocks25$1.left1,labels:["3","gate"]}],size:{width:bounds25$1.width,height:bounds25$1.height},center:{x:bounds25$1.centerX,y:bounds25$1.centerY}}),rotatedSymbol11$1=rotateSymbol$1(n_channel_d_mosfet_transistor_horz_default$1),texts30$1=rotatedSymbol11$1.primitives.filter(ua=>ua.type==="text"),val9$1=texts30$1.find(ua=>ua.text==="{VAL}");val9$1.x=-.35,val9$1.y=0,val9$1.anchor="middle_right";var ref10$1=texts30$1.find(ua=>ua.text==="{REF}");ref10$1.y=0,ref10$1.x=.35,ref10$1.anchor="middle_left";var n_channel_d_mosfet_transistor_vert_default$1=rotatedSymbol11$1,n_channel_e_mosfet_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-8-3-7":{type:"path",points:[{x:.09448295549999952,y:-.14677165000000048},{x:.09319295549999951,y:-.06899565000000041}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},"path2-8-3":{type:"path",points:[{x:.09440455549999993,y:.07703174999999951},{x:.09311455549999992,y:.15480774999999958}],color:"primary",fill:!1},"path2-8-3-2":{type:"path",points:[{x:.09448295549999952,y:-.03486995000000048},{x:.09319295549999951,y:.042906049999999585}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.2741991554999996,y:.040776550000000134},{x:.2741991554999996,y:-.030615549999999825},{x:.2024441554999994,y:.004662350000000037}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.10847375000000059},{x:.05111245550000065,y:.1059225499999994}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths26$1,texts:texts31$1,bounds:bounds26$1,refblocks:refblocks26$1,circles:circles24$1}=n_channel_e_mosfet_transistor_default$1,n_channel_e_mosfet_transistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths26$1),...Object.values(circles24$1),{...texts31$1.top1,anchor:"middle_right",x:0},{...texts31$1.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks26$1.top1,labels:["1","drain"]},{...refblocks26$1.bottom1,labels:["2","source"]},{...refblocks26$1.left1,labels:["3","gate"]}],size:{width:bounds26$1.width,height:bounds26$1.height},center:{x:bounds26$1.centerX,y:bounds26$1.centerY}}),rotatedSymbol12$1=rotateSymbol$1(n_channel_e_mosfet_transistor_horz_default$1),texts32$1=rotatedSymbol12$1.primitives.filter(ua=>ua.type==="text"),val10$1=texts32$1.find(ua=>ua.text==="{VAL}");val10$1.x=-.35,val10$1.y=0,val10$1.anchor="middle_right";var ref11$1=texts32$1.find(ua=>ua.text==="{REF}");ref11$1.y=0,ref11$1.x=.35,ref11$1.anchor="middle_left";var n_channel_e_mosfet_transistor_vert_default$1=rotatedSymbol12$1,njfet_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.38509374449999945,y:.00367374999999992},{x:.05876225550000025,y:.00629674999999974}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:-.18559775000000034},{x:.07322065550000101,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:-.53233025},{x:.2836366555000003,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2912404555000001,y:.5298821500000002},{x:.29184045550000004,y:.10355795000000012}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:-.10788365000000044},{x:.29146205549999915,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.07425025549999931,y:.10232114999999986},{x:.29146205549999915,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:-.0829488445000004,y:-.06153284999999986},{x:-.0829488445000004,y:.06535114999999969},{x:.005945155500000077,y:.0026521499999998532}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.15156024449999927,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.0393233555000001,y:.42489435000000064}},refblocks:{top1:{x:.2843894554999997,y:-.5519248499999992},bottom1:{x:.29108805550000105,y:.5519248499999994},left1:{x:-.3990097444999998,y:.004526550000000462}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:27755575615628914e-33,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths27$1,texts:texts33$1,bounds:bounds27$1,refblocks:refblocks27$1,circles:circles25$1}=njfet_transistor_default$1,njfet_transistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths27$1),...Object.values(circles25$1),{...texts33$1.top1,anchor:"middle_right",x:0},{...texts33$1.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks27$1.top1,labels:["1","drain"]},{...refblocks27$1.bottom1,labels:["2","source"]},{...refblocks27$1.left1,labels:["3","gate"]}],size:{width:bounds27$1.width,height:bounds27$1.height},center:{x:bounds27$1.centerX,y:bounds27$1.centerY}}),rotatedSymbol13$1=rotateSymbol$1(njfet_transistor_horz_default$1),texts34$1=rotatedSymbol13$1.primitives.filter(ua=>ua.type==="text"),val11$1=texts34$1.find(ua=>ua.text==="{VAL}");val11$1.x=-.35,val11$1.y=0,val11$1.anchor="middle_right";var ref12$1=texts34$1.find(ua=>ua.text==="{REF}");ref12$1.y=0,ref12$1.x=.35,ref12$1.anchor="middle_left";var njfet_transistor_vert_default$1=rotatedSymbol13$1,npn_bipolar_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.3850939444999988,y:-.0036735999999999436},{x:.0587620555000008,y:-.0062965999999997635}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:.07400475550000118,y:.2689528999999997},{x:.07335475550000092,y:-.2789230000000007}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:.2754149555000005,y:.24180210000000013},{x:.07955815550000045,y:.10822479999999968}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:.2868554555000009,y:-.24134789999999984},{x:.09194705550000082,y:-.10807689999999992}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2851204555,y:.25311099999999964},{x:.2860204555000001,y:.5377640999999995}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:.2851204555,y:-.5376890000000012},{x:.2860204555000001,y:-.25303590000000065}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.1882816555000013,y:-.10097660000000008},{x:.11555775550000158,y:-.20483720000000027},{x:.22425775550000182,y:-.20446720000000007}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.07802354449999971,y:.3596647999999991},bottom1:{type:"text",text:"{VAL}",x:-.0679100444999996,y:-.4129789000000006}},refblocks:{top1:{x:.28556045550000064,y:.5519250999999994},bottom1:{x:.285560455500002,y:-.5519250999999992},left1:{x:-.3990097444999998,y:-.004526300000000871}},bounds:{minX:-.4271681854999998,maxX:.4271681855000001,minY:-.5800835409999991,maxY:.5800835409999994,width:.8543363709999998,height:1.1601670819999985,centerX:13877787807814457e-32,centerY:11102230246251565e-32},circles:{"path1-0":{type:"circle",x:.13862605550000007,y:.003454799999999203,radius:.28854213,color:"primary",fill:!1}}},npn_bipolar_transistor_horz_default$1=modifySymbol$1(npn_bipolar_transistor_default$1).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_right").build(),rotatedSymbol14$1=rotateSymbol$1(npn_bipolar_transistor_horz_default$1),texts36$1=rotatedSymbol14$1.primitives.filter(ua=>ua.type==="text"),ref13$1=texts36$1.find(ua=>ua.text==="{REF}");ref13$1.anchor="middle_left";var npn_bipolar_transistor_vert_default$1=modifySymbol$1(npn_bipolar_transistor_default$1).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("top1",["2"]).labelPort("bottom1",["1"]).changeTextAnchor("{REF}","middle_left").build(),opamp_no_power_default={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.0390362999999998},{x:-.3199943999999995,y:-.21132800000000015}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.3199943999999995,y:.31132800000000016},{x:.14458890000000002,y:.0390362999999998}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.3199943999999995,y:-.21132800000000015},{x:-.3199943999999995,y:.31132800000000016}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199943999999995,y:.1790362999999998},{x:-.58168694,y:.1790362999999998}],color:"primary",fill:!1},path45:{type:"path",points:[{x:-.3199943999999995,y:-.0890362999999998},{x:-.58168694,y:-.0890362999999998}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.4233797000000002,y:.03895110000000024},{x:.1496715999999998,y:.03895110000000024}],color:"primary",fill:!1},"rect1577-3":{type:"path",points:[{x:-.19898460000000012,y:.1790362999999998},{x:-.26995180000000035,y:.1790362999999998}],color:"primary",fill:!0},"rect1577-4":{type:"path",points:[{x:-.19898460000000012,y:-.0890362999999998},{x:-.26995180000000035,y:-.0890362999999998}],color:"primary",fill:!0},"rect1577-4-7":{type:"path",points:[{x:-.23480170000000036,y:-.05337805000000034},{x:-.23480170000000036,y:-.12434525000000014}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.4188453},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.29994529999999997}},refblocks:{left1:{x:-.56868694,y:.1790362999999998},left2:{x:-.56868694,y:-.0890362999999998},right1:{x:.4291470999999999,y:.03889609999999988}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.37884529999999994,maxY:.26884529999999995,width:1.094611082,height:.2976905999999999,centerX:-11102230246251565e-32,centerY:.05499999999999999},circles:{}},opamp_no_power_right_default=modifySymbol$1(opamp_no_power_default).labelPort("left1",["1","inp1"]).labelPort("left2",["2","inp2"]).labelPort("right1",["3","out"]).changeTextAnchor("{REF}","middle_bottom").changeTextAnchor("{VAL}","middle_top").build(),opamp_no_power_down_default=rotateSymbol$1(opamp_no_power_right_default,"down"),opamp_no_power_left_default=rotateSymbol$1(opamp_no_power_right_default,"left"),opamp_no_power_up_default=rotateSymbol$1(opamp_no_power_right_default,"up"),opamp_with_power_default={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.0390362999999998},{x:-.3199943999999995,y:-.21132800000000015}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.3199943999999995,y:.31132800000000016},{x:.14458890000000002,y:.0390362999999998}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.3199943999999995,y:-.21132800000000015},{x:-.3199943999999995,y:.31132800000000016}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199943999999995,y:.1790362999999998},{x:-.58168694,y:.1790362999999998}],color:"primary",fill:!1},path45:{type:"path",points:[{x:-.3199943999999995,y:-.0890362999999998},{x:-.58168694,y:-.0890362999999998}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.4233797000000002,y:.03895110000000024},{x:.1496715999999998,y:.03895110000000024}],color:"primary",fill:!1},"path44-1":{type:"path",points:[{x:-.09945180000000035,y:.43895110000000026},{x:-.09945180000000035,y:.1790362999999998}],color:"primary",fill:!1},"path44-2":{type:"path",points:[{x:-.09345180000000035,y:-.3389511000000002},{x:-.09345180000000035,y:-.0890362999999998}],color:"primary",fill:!1},"rect1577-3":{type:"path",points:[{x:-.19898460000000012,y:.1790362999999998},{x:-.26995180000000035,y:.1790362999999998}],color:"primary",fill:!0},"rect1577-4":{type:"path",points:[{x:-.19898460000000012,y:-.0890362999999998},{x:-.26995180000000035,y:-.0890362999999998}],color:"primary",fill:!0},"rect1577-4-7":{type:"path",points:[{x:-.23485180000000036,y:.14405005000000035},{x:-.23485180000000036,y:.2150405000000014}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:.2502509999999967,y:.31884529999999994},bottom1:{type:"text",text:"{VAL}",x:.2502509999999967,y:-.23599529999999996}},refblocks:{left1:{x:-.56868694,y:.1790362999999998},left2:{x:-.56868694,y:-.0890362999999998},right1:{x:.4291470999999999,y:.03889609999999988},top2:{x:-.09945180000000035,y:.43895110000000026},bottom1:{x:-.09345180000000035,y:-.3389511000000002}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.37884529999999994,maxY:.26884529999999995,width:1.094611082,height:.2976905999999999,centerX:-11102230246251565e-32,centerY:.05499999999999999},circles:{}},opamp_with_power_right_default=modifySymbol$1(opamp_with_power_default).labelPort("left1",["1","inp1"]).labelPort("left2",["2","inp2"]).labelPort("right1",["3","out"]).labelPort("top2",["4","V+"]).labelPort("bottom1",["5","V-"]).changeTextAnchor("{REF}","middle_bottom").changeTextAnchor("{VAL}","middle_top").build(),opamp_with_power_down_default=rotateSymbol$1(opamp_with_power_right_default,"down"),opamp_with_power_left_default=rotateSymbol$1(opamp_with_power_right_default,"left"),opamp_with_power_up_default=rotateSymbol$1(opamp_with_power_right_default,"up"),p_channel_d_mosfet_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.09373835550000087,y:-.18559775000000034},{x:.09280835550000122,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.20244405549999955,y:-.03061555000000049},{x:.20244405549999955,y:.04077654999999947},{x:.2741990554999998,y:.0054987499999992195}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.16715385000000005},{x:.05111245550000065,y:.10592255000000006}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths29$1,texts:texts37$1,bounds:bounds29$1,refblocks:refblocks29$1,circles:circles27$1}=p_channel_d_mosfet_transistor_default$1,p_channel_d_mosfet_transistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths29$1),...Object.values(circles27$1),{...texts37$1.top1,anchor:"middle_right",x:0},{...texts37$1.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks29$1.top1,labels:["1","drain"]},{...refblocks29$1.bottom1,labels:["2","source"]},{...refblocks29$1.left1,labels:["3","gate"]}],size:{width:bounds29$1.width,height:bounds29$1.height},center:{x:bounds29$1.centerX,y:bounds29$1.centerY}}),rotatedSymbol15$1=rotateSymbol$1(p_channel_d_mosfet_transistor_horz_default$1),texts38$1=rotatedSymbol15$1.primitives.filter(ua=>ua.type==="text"),val12$1=texts38$1.find(ua=>ua.text==="{VAL}");val12$1.x=-.35,val12$1.y=0,val12$1.anchor="middle_right";var ref14$1=texts38$1.find(ua=>ua.text==="{REF}");ref14$1.y=0,ref14$1.x=.35,ref14$1.anchor="middle_left";var p_channel_d_mosfet_transistor_vert_default$1=rotatedSymbol15$1,p_channel_e_mosfet_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.39274354450000026,y:.10329954999999957},{x:.05111245549999932,y:.1059225499999994}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.30382435550000064,y:-.53233025},{x:.3032243555000005,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.3108281555000003,y:.5323308500000001},{x:.31142815550000025,y:.005876249999999805}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.09383795549999951,y:-.10788365000000044},{x:.31104975549999936,y:-.10659565000000004}],color:"primary",fill:!1},"path2-8-3-7":{type:"path",points:[{x:.09448295549999952,y:-.14677165000000048},{x:.09319295549999951,y:-.06899565000000041}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.09383795549999951,y:.10232114999999986},{x:.31104975549999936,y:.10360915000000026}],color:"primary",fill:!1},"path2-8-3":{type:"path",points:[{x:.09440455549999993,y:.07703174999999951},{x:.09311455549999992,y:.15480774999999958}],color:"primary",fill:!1},"path2-8-3-2":{type:"path",points:[{x:.09448295549999952,y:-.03486995000000048},{x:.09319295549999951,y:.042906049999999585}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.20244405549999955,y:-.03061555000000049},{x:.20244405549999955,y:.04077654999999947},{x:.2741990554999998,y:.0054987499999992195}],color:"primary",fill:!0},"path2-0":{type:"path",points:[{x:.09383795549999951,y:.004018049999999551},{x:.31104975549999936,y:.005306049999999729}],color:"primary",fill:!1},"path12-1-0":{type:"path",points:[{x:.05171245550000081,y:-.10847375000000059},{x:.05111245550000065,y:.1059225499999994}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.13197254449999907,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.05891105550000031,y:.42489435000000064}},refblocks:{top1:{x:.30397715549999993,y:-.5519248499999992},bottom1:{x:.31067575550000126,y:.5519248499999994},left1:{x:-.41859744450000025,y:.10250625000000024}},bounds:{minX:-.4467558855000002,maxX:.44675588550000006,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:-8326672684688674e-32,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.15821375550000005,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths30$1,texts:texts39$1,bounds:bounds30$1,refblocks:refblocks30$1,circles:circles28$1}=p_channel_e_mosfet_transistor_default$1,p_channel_e_mosfet_transistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths30$1),...Object.values(circles28$1),{...texts39$1.top1,anchor:"middle_right",x:0},{...texts39$1.bottom1,anchor:"middle_right",x:0}],ports:[{...refblocks30$1.top1,labels:["1","drain"]},{...refblocks30$1.bottom1,labels:["2","source"]},{...refblocks30$1.left1,labels:["3","gate"]}],size:{width:bounds30$1.width,height:bounds30$1.height},center:{x:bounds30$1.centerX,y:bounds30$1.centerY}}),rotatedSymbol16$1=rotateSymbol$1(p_channel_e_mosfet_transistor_horz_default$1),texts40$1=rotatedSymbol16$1.primitives.filter(ua=>ua.type==="text"),val13$1=texts40$1.find(ua=>ua.text==="{VAL}");val13$1.x=-.35,val13$1.y=0,val13$1.anchor="middle_right";var ref15$1=texts40$1.find(ua=>ua.text==="{REF}");ref15$1.y=0,ref15$1.x=.35,ref15$1.anchor="middle_left";var p_channel_e_mosfet_transistor_vert_default$1=rotatedSymbol16$1,photodiode_default$1={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:-.012413549999999773},{x:-.14891374999999973,y:-.015036549999999593}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.13221874999999983,y:-.001352349999999447},{x:-.1323642500000004,y:-.13364404999999913}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1323642500000004,y:.13093935000000023},{x:.13221874999999983,y:-.001352349999999447}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1323642500000004,y:-.1336440499999998},{x:-.1323642500000004,y:.13093935000000023}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.13221874999999983,y:.13093935000000023},{x:.13221874999999983,y:-.1336440499999998}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1358253500000004,y:-.001921149999999372},{x:.533952450000001,y:-.012413549999999107}],color:"primary",fill:!1},"path25-0":{type:"path",points:[{x:.19839785000000076,y:.37576625000000075},{x:.16262485000000027,y:.28367475000000053},{x:.26033484999999956,y:.2989800500000006}],color:"primary",fill:!0},"path78-6":{type:"path",points:[{x:.3305468500000004,y:.4264014500000006},{x:.31941585000000017,y:.4163797500000006},{x:.20669285000000048,y:.3148875500000008},{x:.20564285000000115,y:.31448755000000084}],color:"primary",fill:!1},"path25-0-9":{type:"path",points:[{x:.34573984999999974,y:.3493283500000002},{x:.30996684999999946,y:.25723684999999996},{x:.40767644999999963,y:.27254215000000004}],color:"primary",fill:!0},"path78-6-5":{type:"path",points:[{x:.47788845000000046,y:.39996355000000006},{x:.46675745000000024,y:.38994185000000003},{x:.35403445000000033,y:.2884496500000002},{x:.352984450000001,y:.2880496500000005}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.10246254999999982,y:.34693914999999986},bottom1:{type:"text",text:"{VAL}",x:.0012544500000004621,y:-.4264014500000004}},refblocks:{left1:{x:-.5413984499999998,y:-.013266350000000315},right1:{x:.54139845,y:-.012269950000000529}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.4264014500000004,maxY:.4264014500000006,width:1.1391137819999997,height:.852802900000001,centerX:11102230246251565e-32,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000000895,y:-.005285250000000241,radius:.28854213,color:"primary",fill:!1}}},photodiode_horz_default$1=modifySymbol$1(photodiode_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol17$1=rotateSymbol$1(photodiode_horz_default$1),texts41$1=rotatedSymbol17$1.primitives.filter(ua=>ua.type==="text"),ref16$1=texts41$1.find(ua=>ua.text==="{REF}");ref16$1.y=0,ref16$1.anchor="middle_left";var photodiode_vert_default$1=rotatedSymbol17$1,pjfet_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.38509374449999945,y:.00367374999999992},{x:.05876225550000025,y:.00629674999999974}],color:"primary",fill:!1},path40:{type:"path",points:[{x:.07415065550000066,y:-.18559775000000034},{x:.07322065550000101,y:.18255174999999935}],color:"primary",fill:!1},"path12-1":{type:"path",points:[{x:.28423665550000043,y:-.53233025},{x:.2836366555000003,y:-.10600584999999985}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2912404555000001,y:.5298821500000002},{x:.29184045550000004,y:.10355795000000012}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.07425025549999931,y:-.10788365000000044},{x:.29146205549999915,y:-.10659565000000004}],color:"primary",fill:!1},"path2-5":{type:"path",points:[{x:.07425025549999931,y:.10232114999999986},{x:.29146205549999915,y:.10360915000000026}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.005945155500000077,y:.06535114999999969},{x:.005945155500000077,y:-.06153284999999986},{x:-.0829488445000004,y:.001166149999999977}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.15156024449999927,y:-.36092494999999936},bottom1:{type:"text",text:"{VAL}",x:.0393233555000001,y:.42489435000000064}},refblocks:{top1:{x:.2843894554999997,y:-.5519248499999992},bottom1:{x:.29108805550000105,y:.5519248499999994},left1:{x:-.3990097444999998,y:.004526550000000462}},bounds:{minX:-.4271681854999998,maxX:.42716818549999985,minY:-.5800832909999992,maxY:.5800832909999993,width:1,height:1.1601665819999987,centerX:27755575615628914e-33,centerY:5551115123125783e-32},circles:{path1:{type:"circle",x:.13862605549999985,y:-.003454549999999612,radius:.28854213,color:"primary",fill:!1}}},{paths:paths31$1,texts:texts42$1,bounds:bounds31$1,refblocks:refblocks31$1,circles:circles29$1}=pjfet_transistor_default$1,pjfet_transistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths31$1),...Object.values(circles29$1),{...texts42$1.top1,anchor:"middle_right",x:0},{...texts42$1.bottom1,anchor:"middle_right"}],ports:[{...refblocks31$1.top1,labels:["1","drain"]},{...refblocks31$1.bottom1,labels:["2","source"]},{...refblocks31$1.left1,labels:["3","gate"]}],size:{width:bounds31$1.width,height:bounds31$1.height},center:{x:bounds31$1.centerX,y:bounds31$1.centerY}}),rotatedSymbol18$1=rotateSymbol$1(pjfet_transistor_horz_default$1),texts43$1=rotatedSymbol18$1.primitives.filter(ua=>ua.type==="text"),val14$1=texts43$1.find(ua=>ua.text==="{VAL}");val14$1.x=-.35,val14$1.y=0,val14$1.anchor="middle_right";var ref17$1=texts43$1.find(ua=>ua.text==="{REF}");ref17$1.y=0,ref17$1.x=.35,ref17$1.anchor="middle_left";var pjfet_transistor_vert_default$1=rotatedSymbol18$1,pnp_bipolar_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.3850939444999988,y:-.0036735999999999436},{x:.0587620555000008,y:-.0062965999999997635}],color:"primary",fill:!1},"path40-0":{type:"path",points:[{x:.07400475550000118,y:.2689528999999997},{x:.07335475550000092,y:-.2789230000000007}],color:"primary",fill:!1},"path40-0-5":{type:"path",points:[{x:.2754149555000005,y:.24180210000000013},{x:.07955815550000045,y:.10822479999999968}],color:"primary",fill:!1},"path40-0-5-0":{type:"path",points:[{x:.2868554555000009,y:-.24134789999999984},{x:.09194705550000082,y:-.10807689999999992}],color:"primary",fill:!1},"path12-1-5":{type:"path",points:[{x:.2851204555,y:.25311099999999964},{x:.2860204555000001,y:.5377640999999995}],color:"primary",fill:!1},"path12-1-5-3":{type:"path",points:[{x:.2851204555,y:-.5376890000000012},{x:.2860204555000001,y:-.25303590000000065}],color:"primary",fill:!1},path15:{type:"path",points:[{x:.15155145550000038,y:-.2268796000000004},{x:.2242753555000001,y:-.12301900000000021},{x:.11557535549999942,y:-.12338900000000042}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.08351674449999891,y:.37335419999999897},bottom1:{type:"text",text:"{VAL}",x:-.0679100444999996,y:-.4129789000000006}},refblocks:{top1:{x:.28556045550000064,y:.5519250999999994},bottom1:{x:.285560455500002,y:-.5519250999999992},left1:{x:-.3990097444999998,y:-.004526300000000871}},bounds:{minX:-.4271681854999998,maxX:.4271681855000001,minY:-.5800835409999991,maxY:.5800835409999994,width:.8543363709999998,height:1.1601670819999985,centerX:13877787807814457e-32,centerY:11102230246251565e-32},circles:{"path1-0":{type:"circle",x:.13862605550000007,y:.003454799999999203,radius:.28854213,color:"primary",fill:!1}}},pnp_bipolar_transistor_horz_default$1=modifySymbol$1(pnp_bipolar_transistor_default$1).changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("bottom1",["2"]).labelPort("top1",["1"]).changeTextAnchor("{REF}","middle_right").build(),rotatedSymbol19$1=rotateSymbol$1(pnp_bipolar_transistor_horz_default$1),texts44$1=rotatedSymbol19$1.primitives.filter(ua=>ua.type==="text"),ref18$1=texts44$1.find(ua=>ua.text==="{REF}");ref18$1.anchor="middle_left";var pnp_bipolar_transistor_vert_default$1=modifySymbol$1(pnp_bipolar_transistor_default$1).rotateRightFacingSymbol("down").changeTextAnchor("{VAL}","middle_right").labelPort("left1",["3"]).labelPort("bottom1",["2"]).labelPort("top1",["1"]).changeTextAnchor("{REF}","middle_left").build(),potentiometer_default$1={paths:{path40:{type:"path",points:[{x:-.19250837381256392,y:.32749349347032286},{x:-.25568957329611974,y:.13794979950157282}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.38205206778131373,y:.26431229398676837},{x:-.19250837381256392,y:.32749349347032286}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.2556895732961204,y:.13794979950157416},{x:-.38205206778131373,y:.26431229398676837}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.2556896210551609,y:.39067474071292196},{x:-.12932712656996737,y:.26431224622772653}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199237641156438,y:.2000781031672434},{x:-.5084145145074668,y:.011587352775420667}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:-.011560829633404435,y:.5083596562436202},{x:-.19004023433272543,y:.3298802515442989}],color:"primary",fill:!1},"path40-4":{type:"path",points:[{x:-.19250813152967883,y:-.3220463011874377},{x:-.38205182549842887,y:-.2588651017038819}],color:"primary",fill:!1},"path41-1":{type:"path",points:[{x:-.2556893310132333,y:-.13250260721868767},{x:-.19250813152967883,y:-.3220463011874377}],color:"primary",fill:!1},"path42-7":{type:"path",points:[{x:-.38205182549842753,y:-.258865101703881},{x:-.2556893310132333,y:-.13250260721868767}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:-.12932688428707984,y:-.2588650539448407},{x:-.25568937877227516,y:-.38522754843003404}],color:"primary",fill:!1},"path44-8":{type:"path",points:[{x:-.3199235218327583,y:-.19463091088435758},{x:-.508414272224581,y:-.006140160492534852}],color:"primary",fill:!1},"path44-0-7":{type:"path",points:[{x:-.011641968756381349,y:-.5029938453665972},{x:-.1901213734557028,y:-.3245144406672762}],color:"primary",fill:!1},"path40-4-0":{type:"path",points:[{x:.322578868470321,y:.19315369881256328},{x:.13303517450157099,y:.2563348982961191}],color:"primary",fill:!1},"path41-1-2":{type:"path",points:[{x:.2593976689867663,y:.3826973927813131},{x:.322578868470321,y:.19315369881256328}],color:"primary",fill:!1},"path42-7-1":{type:"path",points:[{x:.13303517450157232,y:.2563348982961198},{x:.2593976689867663,y:.3826973927813131}],color:"primary",fill:!1},"path43-1-8":{type:"path",points:[{x:.38576011571292,y:.2563349460551603},{x:.2593976212277247,y:.12997245156996673}],color:"primary",fill:!1},"path44-8-7":{type:"path",points:[{x:.19516347816724133,y:.3205690891156432},{x:.006672727775418608,y:.509059839507466}],color:"primary",fill:!1},"path44-0-7-1":{type:"path",points:[{x:.5034450312436185,y:.012206154633403798},{x:.32496562654429706,y:.19068555933272457}],color:"primary",fill:!1},"path40-4-8":{type:"path",points:[{x:.3220220261874358,y:-.19326390652967795},{x:.25884082670387976,y:-.382807600498428}],color:"primary",fill:!1},"path41-1-4":{type:"path",points:[{x:.13247833221868577,y:-.25644510601323245},{x:.3220220261874358,y:-.19326390652967795}],color:"primary",fill:!1},"path42-7-0":{type:"path",points:[{x:.2588408267038793,y:-.38280760049842666},{x:.13247833221868577,y:-.25644510601323245}],color:"primary",fill:!1},"path43-1-0":{type:"path",points:[{x:.2588407789448386,y:-.13008265928707896},{x:.38520327343003213,y:-.2564451537722743}],color:"primary",fill:!1},"path44-8-9":{type:"path",points:[{x:.19460663588435567,y:-.3206792968327574},{x:.0061158854925329464,y:-.5091700472245801}],color:"primary",fill:!1},"path44-0-7-3":{type:"path",points:[{x:.5029695703665951,y:-.012397743756380697},{x:.3244901656672745,y:-.19087714845570192}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.2872803000000015,y:.4564494249999992},bottom1:{type:"text",text:"{VAL}",x:-.2872803000000015,y:-.4960514750000007}},refblocks:{top1:{x:.0005126999999993664,y:.5191475},bottom1:{x:-.0005123000000009093,y:-.5191475000000001},left1:{x:-.5191472999999998,y:.0005123250000014234},right1:{x:.5191473000000002,y:-.0005123749999977889}},bounds:{minX:-.5473057409999997,maxX:.5473057410000002,minY:-.5473059410000001,maxY:.547305941,width:1.094611482,height:1.0946118820000001,centerX:2220446049250313e-31,centerY:-5551115123125783e-32},circles:{}},{paths:paths32$1,texts:texts45$1,bounds:bounds32$1,refblocks:refblocks32$1}=potentiometer_default$1,potentiometer_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths32$1),{...texts45$1.bottom1,y:.35,anchor:"middle_top"},{...texts45$1.top1,anchor:"middle_left"}],ports:[{...refblocks32$1.left1,labels:["1"]},{...refblocks32$1.right1,labels:["2"]}],size:{width:bounds32$1.width+.05,height:bounds32$1.height},center:{x:bounds32$1.centerX,y:bounds32$1.centerY}}),rotated5$1=rotateSymbol$1(potentiometer_horz_default$1),potentiometer_vert_default$1=rotated5$1,potentiometer2_default$1={paths:{path18:{type:"path",points:[{x:-.53224045,y:-.0008545000000008685},{x:-.26765715000000023,y:-.0008545000000008685}],color:"primary",fill:!1},path19:{type:"path",points:[{x:.2615098499999995,y:-.0008545000000008685},{x:.5260934499999994,y:-.0008545000000008685}],color:"primary",fill:!1},path20:{type:"path",points:[{x:-.0030722500000006647,y:.1314371999999988},{x:.2615107499999998,y:.1314371999999988},{x:.2615107499999998,y:-.13314619999999877},{x:-.26765624999999993,y:-.13314619999999877},{x:-.26765624999999993,y:.1314371999999988},{x:-.0030722499999988884,y:.1314371999999988}],color:"primary",fill:!1},path23:{type:"path",points:[{x:.2782993499999993,y:-.2822274},{x:.17598844999999885,y:-.25486950000000164},{x:.25094144999999823,y:-.1799165000000027}],color:"primary",fill:!0},path24:{type:"path",points:[{x:.2882692499999995,y:-.2921307000000013},{x:.25467554999999953,y:-.16634940000000142},{x:.16229264999999948,y:-.25853690000000284}],color:"primary",fill:!0},path26:{type:"path",points:[{x:-.2985911500000009,y:.2921307000000013},{x:.22988164999999938,y:-.2328032000000011}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.055041669999999154,y:.2009376800000009},bottom1:{type:"text",text:"{VAL}",x:-.10019643000000089,y:-.27857531999999985}},refblocks:{left1:{x:-.5346914500000006,y:-.0013439000000019519},right1:{x:.5346914500000004,y:-.001956599999999753}},bounds:{minX:-.5628498910000006,maxX:.5628498910000004,minY:-.2921307000000013,maxY:.2921307000000013,width:1.125699782000001,height:.5842614000000026,centerX:-11102230246251565e-32,centerY:0},circles:{}},{paths:paths33$1,texts:texts46$1,bounds:bounds33$1,refblocks:refblocks33$1}=potentiometer2_default$1,potentiometer2_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths33$1),{...texts46$1.bottom1,anchor:"middle_top"},{...texts46$1.top1,anchor:"middle_bottom"}],ports:[{...refblocks33$1.left1,labels:["1"]},{...refblocks33$1.right1,labels:["2"]}],size:{width:bounds33$1.width,height:bounds33$1.height},center:{x:bounds33$1.centerX,y:bounds33$1.centerY}}),rotated6$1=rotateSymbol$1(potentiometer2_horz_default$1),texts47$1=rotated6$1.primitives.filter(ua=>ua.type==="text"),val15$1=texts47$1.find(ua=>ua.text==="{VAL}");val15$1.anchor="middle_right";var ref19$1=texts47$1.find(ua=>ua.text==="{REF}");ref19$1.anchor="middle_left";var potentiometer2_vert_default$1=rotated6$1,power_factor_meter_default$1={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.02812460000000061},{x:-.30105415000000013,y:.02812460000000061}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.02812460000000061},{x:.5339524499999997,y:.02812460000000061}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.16215344999999948,y:.39517610000000025},bottom1:{type:"text",text:"{VAL}",x:-.003375049999999602,y:-.39517610000000003},left1:{type:"text",text:"COS φ",x:-.1453603499999998,y:.013845600000000235}},refblocks:{left1:{x:-.5413984499999998,y:.027271800000000068},right1:{x:.54139845,y:.028268199999999855}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.39517610000000003,maxY:.39517610000000025,width:1.1391137819999997,height:.7903522000000003,centerX:11102230246251565e-32,centerY:11102230246251565e-32},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03525290000000014,radius:.28854213,color:"primary",fill:!1}}},{paths:paths34$1,texts:texts48$1,bounds:bounds34$1,refblocks:refblocks34$1,circles:circles30$1}=power_factor_meter_default$1,power_factor_meter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths34$1),...Object.values(circles30$1),{type:"text",text:"{REF}",x:-.15,y:-.42330070000000064,anchor:"middle_top"},{type:"text",text:"{VAL}",x:-.15,y:.42330070000000064,anchor:"middle_bottom"},{type:"text",text:"COS φ",x:0,y:.014279000000000375,anchor:"center"}],ports:[{...refblocks34$1.left1,labels:["1"]},{...refblocks34$1.right1,labels:["2"]}],size:{width:bounds34$1.width,height:bounds34$1.height},center:{x:bounds34$1.centerX,y:bounds34$1.centerY}}),rotatedSymbol20$1=rotateSymbol$1(power_factor_meter_horz_default$1),texts49$1=rotatedSymbol20$1.primitives.filter(ua=>ua.type==="text"),ref20$1=texts49$1.find(ua=>ua.text==="{REF}"),val16$1=texts49$1.find(ua=>ua.text==="{VAL}"),text_cos$1=texts49$1.find(ua=>ua.text==="COS φ");ref20$1.x=.35,ref20$1.y=0,ref20$1.anchor="middle_left",val16$1.anchor="middle_right",val16$1.x=-.35,val16$1.y=0,text_cos$1.x=0,text_cos$1.y=0,text_cos$1.anchor="center";var power_factor_meter_vert_default$1=rotatedSymbol20$1,push_button_normally_closed_momentary_default$1={paths:{"path12-1-8-6-9-9":{type:"path",points:[{x:.013196749999999646,y:.030446500000000043},{x:.013196749999999646,y:-.0859464999999986}],color:"primary",fill:!1},"path12-1-5-6-4":{type:"path",points:[{x:-.4867871500000014,y:-.0510704999999998},{x:-.17248085000000124,y:-.0510704999999998}],color:"primary",fill:!1},"path12-1-8-0-0":{type:"path",points:[{x:-.15916995000000078,y:-.0915204999999979},{x:.1810634499999999,y:-.0915204999999979}],color:"primary",fill:!1},"path12-1-0-1":{type:"path",points:[{x:.19611864999999984,y:-.05109549999999885},{x:.48876354999999894,y:-.05109549999999885}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.007320949999999549,y:.22461850000000005},bottom1:{type:"text",text:"{VAL}",x:-.1606897500000004,y:-.22461849999999828}},refblocks:{left1:{x:-.47241845000000104,y:-.05104349999999869},right1:{x:.47241845000000016,y:-.051482499999998765}},bounds:{minX:-.500576891000001,maxX:.5005768910000001,minY:-.22461849999999828,maxY:.22461850000000005,width:1.0011537820000012,height:.44923699999999833,centerX:-4440892098500626e-31,centerY:8881784197001252e-31},circles:{"circle-2":{type:"circle",x:-.14387115000000072,y:-.05130149999999922,radius:.023193523,color:"primary",fill:!1},circle:{type:"circle",x:.16803074999999978,y:-.05007949999999717,radius:.023193523,color:"primary",fill:!1}}},{paths:paths35$1,texts:texts50$1,bounds:bounds35$1,refblocks:refblocks35$1,circles:circles31$1}=push_button_normally_closed_momentary_default$1,push_button_normally_closed_momentary_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths35$1),...Object.values(circles31$1),{...texts50$1.top1,anchor:"middle_left"},{...texts50$1.bottom1,anchor:"middle_left"}],ports:[{...refblocks35$1.left1,labels:["1"]},{...refblocks35$1.right1,labels:["2"]}],size:{width:bounds35$1.width,height:bounds35$1.height},center:{x:bounds35$1.centerX,y:bounds35$1.centerY}}),push_button_normally_closed_momentary_vert_default$1=rotateSymbol$1(push_button_normally_closed_momentary_horz_default$1,"up"),push_button_normally_open_momentary_default$1={paths:{"path12-1-8-6-9-9":{type:"path",points:[{x:.013196749999999646,y:.15281650000000013},{x:.013196749999999646,y:.036423500000001496}],color:"primary",fill:!1},"path12-1-5-6-4":{type:"path",points:[{x:-.4867871500000014,y:-.0510704999999998},{x:-.17248085000000124,y:-.0510704999999998}],color:"primary",fill:!1},"path12-1-8-0-0":{type:"path",points:[{x:-.15916995000000078,y:.030849500000000418},{x:.1810634499999999,y:.030849500000000418}],color:"primary",fill:!1},"path12-1-0-1":{type:"path",points:[{x:.19611864999999984,y:-.05109549999999885},{x:.48876354999999894,y:-.05109549999999885}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.007320949999999549,y:.22461850000000005},bottom1:{type:"text",text:"{VAL}",x:-.1606897500000004,y:-.22461849999999828}},refblocks:{left1:{x:-.47241845000000104,y:-.05104349999999869},right1:{x:.47241845000000016,y:-.051482499999998765}},bounds:{minX:-.500576891000001,maxX:.5005768910000001,minY:-.22461849999999828,maxY:.22461850000000005,width:1.0011537820000012,height:.44923699999999833,centerX:-4440892098500626e-31,centerY:8881784197001252e-31},circles:{"circle-2":{type:"circle",x:-.14387115000000072,y:-.05130149999999922,radius:.023193523,color:"primary",fill:!1},circle:{type:"circle",x:.16803074999999978,y:-.05007949999999717,radius:.023193523,color:"primary",fill:!1}}},{paths:paths36$1,texts:texts51$1,bounds:bounds36$1,refblocks:refblocks36$1,circles:circles32$1}=push_button_normally_open_momentary_default$1,push_button_normally_open_momentary_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths36$1),...Object.values(circles32$1),{...texts51$1.top1,anchor:"middle_left"},{...texts51$1.bottom1,anchor:"middle_left"}],ports:[{...refblocks36$1.left1,labels:["1"]},{...refblocks36$1.right1,labels:["2"]}],size:{width:bounds36$1.width,height:bounds36$1.height},center:{x:bounds36$1.centerX,y:bounds36$1.centerY}}),push_button_normally_open_momentary_vert_default$1=rotateSymbol$1(push_button_normally_open_momentary_horz_default$1,"up"),rectifier_diode_default$1={paths:{path40:{type:"path",points:[{x:-.19250837381256392,y:-.32749349347032286},{x:-.25568957329611974,y:-.13794979950157282}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.38205206778131373,y:-.26431229398676837},{x:-.19250837381256392,y:-.32749349347032286}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.2556895732961204,y:-.13794979950157416},{x:-.38205206778131373,y:-.26431229398676837}],color:"primary",fill:!1},path43:{type:"path",points:[{x:-.2556896210551609,y:-.39067474071292196},{x:-.12932712656996737,y:-.26431224622772653}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.3199237641156438,y:-.2000781031672434},{x:-.5084145145074668,y:-.011587352775420667}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:-.011560829633404435,y:-.5083596562436202},{x:-.19004023433272543,y:-.3298802515442989}],color:"primary",fill:!1},"path40-4":{type:"path",points:[{x:-.19250813152967883,y:.3220463011874377},{x:-.38205182549842887,y:.2588651017038819}],color:"primary",fill:!1},"path41-1":{type:"path",points:[{x:-.2556893310132333,y:.13250260721868767},{x:-.19250813152967883,y:.3220463011874377}],color:"primary",fill:!1},"path42-7":{type:"path",points:[{x:-.38205182549842753,y:.258865101703881},{x:-.2556893310132333,y:.13250260721868767}],color:"primary",fill:!1},"path43-1":{type:"path",points:[{x:-.12932688428707984,y:.2588650539448407},{x:-.25568937877227516,y:.38522754843003404}],color:"primary",fill:!1},"path44-8":{type:"path",points:[{x:-.3199235218327583,y:.19463091088435758},{x:-.508414272224581,y:.006140160492534852}],color:"primary",fill:!1},"path44-0-7":{type:"path",points:[{x:-.011641968756381349,y:.5029938453665972},{x:-.1901213734557028,y:.3245144406672762}],color:"primary",fill:!1},"path40-4-0":{type:"path",points:[{x:.322578868470321,y:-.19315369881256328},{x:.13303517450157099,y:-.2563348982961191}],color:"primary",fill:!1},"path41-1-2":{type:"path",points:[{x:.2593976689867663,y:-.3826973927813131},{x:.322578868470321,y:-.19315369881256328}],color:"primary",fill:!1},"path42-7-1":{type:"path",points:[{x:.13303517450157232,y:-.2563348982961198},{x:.2593976689867663,y:-.3826973927813131}],color:"primary",fill:!1},"path43-1-8":{type:"path",points:[{x:.38576011571292,y:-.2563349460551603},{x:.2593976212277247,y:-.12997245156996673}],color:"primary",fill:!1},"path44-8-7":{type:"path",points:[{x:.19516347816724133,y:-.3205690891156432},{x:.006672727775418608,y:-.509059839507466}],color:"primary",fill:!1},"path44-0-7-1":{type:"path",points:[{x:.5034450312436185,y:-.012206154633403798},{x:.32496562654429706,y:-.19068555933272457}],color:"primary",fill:!1},"path40-4-8":{type:"path",points:[{x:.3220220261874358,y:.19326390652967795},{x:.25884082670387976,y:.382807600498428}],color:"primary",fill:!1},"path41-1-4":{type:"path",points:[{x:.13247833221868577,y:.25644510601323245},{x:.3220220261874358,y:.19326390652967795}],color:"primary",fill:!1},"path42-7-0":{type:"path",points:[{x:.2588408267038793,y:.38280760049842666},{x:.13247833221868577,y:.25644510601323245}],color:"primary",fill:!1},"path43-1-0":{type:"path",points:[{x:.2588407789448386,y:.13008265928707896},{x:.38520327343003213,y:.2564451537722743}],color:"primary",fill:!1},"path44-8-9":{type:"path",points:[{x:.19460663588435567,y:.3206792968327574},{x:.0061158854925329464,y:.5091700472245801}],color:"primary",fill:!1},"path44-0-7-3":{type:"path",points:[{x:.5029695703665951,y:.012397743756380697},{x:.3244901656672745,y:.19087714845570192}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.2872803000000015,y:-.4564494249999992},bottom1:{type:"text",text:"{VAL}",x:-.2872803000000015,y:.4960514750000007}},refblocks:{top1:{x:.0005126999999993664,y:-.5191475},bottom1:{x:-.0005123000000009093,y:.5191475000000001},left1:{x:-.5191472999999998,y:-.0005123250000014234},right1:{x:.5191473000000002,y:.0005123749999977889}},bounds:{minX:-.5473057409999997,maxX:.5473057410000002,minY:-.5564494249999992,maxY:.5473059410000001,width:1.094611482,height:1.1037553659999992,centerX:2220446049250313e-31,centerY:-.004571741999999546},circles:{}},{paths:paths37$1,texts:texts52$1,bounds:bounds37$1,refblocks:refblocks37$1,circles:circles33$1}=rectifier_diode_default$1,rectifier_diode_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths37$1),...Object.values(circles33$1),{...texts52$1.top1,anchor:"middle_right"},{...texts52$1.bottom1,anchor:"middle_right"}],ports:[{...refblocks37$1.top1,labels:["1"]},{...refblocks37$1.bottom1,labels:["2"]},{...refblocks37$1.left1,labels:["3"]},{...refblocks37$1.right1,labels:["4"]}],size:{width:bounds37$1.width,height:bounds37$1.height},center:{x:bounds37$1.centerX,y:bounds37$1.centerY}}),rotated7$1=rotateSymbol$1(rectifier_diode_horz_default$1),ref21$1=rotated7$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val17$1=rotated7$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref21$1.anchor="middle_left",val17$1.anchor="middle_right";var rectifier_diode_vert_default$1=rotated7$1,resonator_default$1={paths:{path27:{type:"path",points:[{x:.7635944500000007,y:-.2799544500000035},{x:.3138028500000005,y:-.2799544500000035}],color:"primary",fill:!1},path28:{type:"path",points:[{x:-.301017949999999,y:-.01524775000000389},{x:-.7508096499999994,y:-.01524775000000389}],color:"primary",fill:!1},path30:{type:"path",points:[{x:-.3010179499999994,y:.3480486499999973},{x:-.301017949999999,y:-.2798310500000021}],color:"primary",fill:!1},"path27-3":{type:"path",points:[{x:.7729788499999999,y:.3512451499999969},{x:.32318725000000015,y:.3512451499999969}],color:"primary",fill:!1},"path29-5":{type:"path",points:[{x:-.07279374999999932,y:-.27981925000000274},{x:-.2983350499999995,y:-.27981925000000274}],color:"primary",fill:!1},"path29-5-7":{type:"path",points:[{x:.33114835000000076,y:-.2798404500000018},{x:.10560705000000059,y:-.2798404500000018}],color:"primary",fill:!1},"path29-5-7-6":{type:"path",points:[{x:-.055820049999999455,y:-.1676584500000029},{x:-.055820049999999455,y:-.3931997500000026}],color:"primary",fill:!1},"path29-5-7-6-6":{type:"path",points:[{x:.09396265000000081,y:-.16768285000000382},{x:.09396265000000081,y:-.39322415000000355}],color:"primary",fill:!1},"path29-5-9":{type:"path",points:[{x:-.07296184999999955,y:.3513701499999957},{x:-.2985031499999997,y:.3513701499999957}],color:"primary",fill:!1},"path29-5-7-2":{type:"path",points:[{x:.33098025000000053,y:.35134894999999844},{x:.10543895000000036,y:.35134894999999844}],color:"primary",fill:!1},"path29-5-7-6-0":{type:"path",points:[{x:-.05598814999999968,y:.46353094999999733},{x:-.05598814999999968,y:.23798964999999583}],color:"primary",fill:!1},"path29-5-7-6-6-2":{type:"path",points:[{x:.09379455000000014,y:.4635065499999982},{x:.09379455000000014,y:.23796524999999846}],color:"primary",fill:!1},"path29-5-92":{type:"path",points:[{x:.3315317500000008,y:.12563884999999786},{x:.33153175000000035,y:.3511801499999976}],color:"primary",fill:!1},"path29-5-7-28":{type:"path",points:[{x:.3315105500000004,y:-.2783032500000022},{x:.3315105500000004,y:-.0527619500000025}],color:"primary",fill:!1},"path29-5-7-6-9":{type:"path",points:[{x:.44369255000000063,y:.10866514999999843},{x:.21815125000000046,y:.10866514999999843}],color:"primary",fill:!1},"path29-5-7-6-6-7":{type:"path",points:[{x:.4436681500000006,y:-.04111755000000272},{x:.21812685000000043,y:-.04111755000000272}],color:"primary",fill:!1},"path29-5-7-6-9-2":{type:"path",points:[{x:.44235445000000073,y:.07167004999999627},{x:.21681315000000057,y:.07167004999999627}],color:"primary",fill:!1},"path29-5-7-6-9-2-4":{type:"path",points:[{x:.4429695500000004,y:-.0025598500000008073},{x:.4430214500000007,y:.07134914999999609}],color:"primary",fill:!1},"path29-5-7-6-9-2-4-6":{type:"path",points:[{x:.21634305000000031,y:-.0035468500000046532},{x:.21639495000000064,y:.07036214999999935}],color:"primary",fill:!1},"path29-5-7-6-9-2-9":{type:"path",points:[{x:.4429537500000005,y:-.004130850000002795},{x:.21741245000000076,y:-.004130850000002795}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.01596175000000022,y:.5358501499999981},bottom1:{type:"text",text:"{VAL}",x:.013116750000000454,y:-.5358501500000017}},refblocks:{left1:{x:-.7666234499999998,y:-.01615045000000137},right1:{x:.7572390499999999,y:-.28185235000000297},right2:{x:.7666234500000004,y:.3493472499999992}},bounds:{minX:-.7947818909999997,maxX:.7947818910000004,minY:-.5358501500000017,maxY:.5358501499999981,width:1.5895637820000001,height:1.0717002999999998,centerX:33306690738754696e-32,centerY:-17763568394002505e-31},circles:{}},{paths:paths38$1,texts:texts53$1,bounds:bounds38$1,refblocks:refblocks38$1,circles:circles34$1}=resonator_default$1,resonator_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths38$1),...Object.values(circles34$1),{type:"text",text:"{REF}",x:.01596175000000022,y:-.5308501500000009,anchor:"middle_top"},{type:"text",text:"{VAL}",x:.013116750000000454,y:.5408501499999989,anchor:"middle_bottom"}],ports:[{...refblocks38$1.left1,labels:["1"]},{...refblocks38$1.right1,labels:["2"]},{...refblocks38$1.right2,labels:["3"]}],size:{width:bounds38$1.width,height:bounds38$1.height},center:{x:bounds38$1.centerX,y:bounds38$1.centerY}}),resonator_vert_default$1=rotateSymbol$1(resonator_horz_default$1),schottky_diode_default$1={paths:{path40:{type:"path",points:[{x:.14458930000000048,y:.04403649999999937},{x:-.11999399999999905,y:-.0882552000000012}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.11999400000000038,y:.1763281999999997},{x:.14458929999999914,y:.04403649999999937}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.11999400000000038,y:-.0882552000000012},{x:-.11999400000000038,y:.17632819999999816}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.1435300000000006,y:.17844679999999968},{x:.14458899999999986,y:-.08825519999999965}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219870000000044,y:.04403649999999937},{x:-.5168690000000005,y:.04403649999999937}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233800999999991,y:.043951299999999804},{x:.14967199999999892,y:.043951299999999804}],color:"primary",fill:!1},"path43-7":{type:"path",points:[{x:.2075533999999999,y:.17973149999999904},{x:.14341080000000028,y:.17864949999999946}],color:"primary",fill:!1},"path43-7-9":{type:"path",points:[{x:.2093444999999996,y:.1301679},{x:.20797049999999984,y:.17950350000000048}],color:"primary",fill:!1},"path43-7-2":{type:"path",points:[{x:.07978989999999953,y:-.09023340000000024},{x:.14313979999999948,y:-.09001340000000013}],color:"primary",fill:!1},"path43-7-9-3":{type:"path",points:[{x:.07764390000000043,y:-.04104850000000004},{x:.0790179000000002,y:-.09038410000000074}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999994495,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384530000000007}},refblocks:{left1:{x:-.5191471,y:.044920799999999206},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.547305541,maxX:.5473055409999998,minY:-.27384530000000007,maxY:.27384530000000007,width:1.0946110819999997,height:.5476906000000001,centerX:-5551115123125783e-32,centerY:0},circles:{}},schottky_diode_horz_default$1=modifySymbol$1(schottky_diode_default$1).labelPort("left1",["1","pos"]).labelPort("right1",["2","neg"]).changeTextAnchor("{VAL}","middle_top").changeTextAnchor("{REF}","middle_bottom").build(),rotated8$1=rotateSymbol$1(schottky_diode_horz_default$1),ref22$1=rotated8$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val18$1=rotated8$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref22$1.anchor="middle_left",val18$1.anchor="middle_right";var schottky_diode_vert_default$1=rotated8$1,silicon_controlled_rectifier_default$1={paths:{path11:{type:"path",points:[{x:-.49895505000000084,y:.04174485000000061},{x:-.177441850000001,y:.04174485000000061}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.18704774999999918,y:.04961415000000069},{x:.5063384499999999,y:.04961415000000069}],color:"primary",fill:!1},"path12-6":{type:"path",points:[{x:.18219425000000045,y:-.15200134999999904},{x:.1810882500000004,y:.2512156500000011}],color:"primary",fill:!1},"path12-2":{type:"path",points:[{x:.18646324999999986,y:.0047866500000004475},{x:.34602244999999954,y:-.13539324999999924}],color:"primary",fill:!1},"path12-2-9":{type:"path",points:[{x:.3463884499999992,y:-.14077354999999936},{x:.3447284499999994,y:-.3343437499999993}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.17016305000000087,y:.2706752500000007},{x:-.17223005000000047,y:-.15200864999999908},{x:.180362149999999,y:.04760855000000097},{x:-.16624855000000038,y:.27180665000000137}],color:"primary",fill:!0}},texts:{top1:{type:"text",text:"{REF}",x:-.22312565000000006,y:.38273545},bottom1:{type:"text",text:"{VAL}",x:.11142554999999987,y:-.38273544999999976}},refblocks:{bottom1:{x:.3445824499999999,y:-.34953845000000006},left1:{x:-.5177904499999998,y:.04089205000000007},right1:{x:.5177904499999997,y:.049757749999999934}},bounds:{minX:-.5459488909999998,maxX:.5459488909999997,minY:-.38273544999999976,maxY:.38273545,width:1.0918977819999993,height:.7654708999999997,centerX:-5551115123125783e-32,centerY:11102230246251565e-32},circles:{}},silicon_controlled_rectifier_horz_default$1=modifySymbol$1(silicon_controlled_rectifier_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).labelPort("bottom1",["3"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol21$1=rotateSymbol$1(silicon_controlled_rectifier_horz_default$1),texts55$1=rotatedSymbol21$1.primitives.filter(ua=>ua.type==="text"),ref23$1=texts55$1.find(ua=>ua.text==="{REF}");ref23$1.y=0,ref23$1.anchor="middle_left";var silicon_controlled_rectifier_vert_default$1=rotatedSymbol21$1,SPDT_switch_default$1={paths:{path1:{type:"path",points:[{x:-.3543583500000005,y:.03204385000000087},{x:-.12792935000000005,y:.03204385000000087}],color:"primary",fill:!1},"path-1-3":{type:"path",points:[{x:-.1133669500000003,y:.0321987500000005},{x:.11208324999999997,y:.14600155000000048}],color:"primary",fill:!1},path2:{type:"path",points:[{x:.1043477500000003,y:-.0645130499999993},{x:.34508875000000017,y:-.0645130499999993}],color:"primary",fill:!1},path3:{type:"path",points:[{x:.12008575000000055,y:.17214665000000062},{x:.3608267500000004,y:.17214665000000062}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17853294999999947,y:.39716265000000006},bottom1:{type:"text",text:"{VAL}",x:-.011861250000000378,y:-.39716264999999984}},refblocks:{top1:{x:.10744654999999947,y:.17214664999999973},left1:{x:-.3682737499999995,y:.03204385000000021},left2:{x:-.11569114999999996,y:.03204385000000021},right1:{x:.3682737499999995,y:-.06451304999999996},right2:{x:.10744725000000055,y:-.06451304999999996},right3:{x:.3682737499999995,y:.17214664999999973}},bounds:{minX:-.3964321909999995,maxX:.3964321909999995,minY:-.39716264999999984,maxY:.39716265000000006,width:.792864381999999,height:.7943252999999999,centerX:0,centerY:11102230246251565e-32},circles:{}};SPDT_switch_default$1.bounds.width+=.2;var{paths:paths40$1,texts:texts56$1,bounds:bounds40$1,refblocks:refblocks40$1,circles:circles36$1}=SPDT_switch_default$1,SPDT_switch_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths40$1),...Object.values(circles36$1),{...texts56$1.top1,anchor:"middle_bottom",x:-.01},{...texts56$1.bottom1,anchor:"middle_top",x:-.01}],ports:[{...refblocks40$1.left1,labels:["1"]},{...refblocks40$1.right1,labels:["3"]},{...refblocks40$1.right2,labels:["2"]}],size:{width:bounds40$1.width,height:bounds40$1.height},center:{x:bounds40$1.centerX,y:bounds40$1.centerY}}),rotatedSymbol22$1=rotateSymbol$1(SPDT_switch_horz_default$1),texts57$1=rotatedSymbol22$1.primitives.filter(ua=>ua.type==="text"),val19$1=texts57$1.find(ua=>ua.text==="{VAL}");val19$1.anchor="middle_right",val19$1.x=-.3,val19$1.y=0;var ref24$1=texts57$1.find(ua=>ua.text==="{REF}");ref24$1.anchor="middle_left",ref24$1.x=.3,ref24$1.y=0;var SPDT_switch_vert_default$1=rotatedSymbol22$1,SPST_switch_default$1={paths:{path11:{type:"path",points:[{x:-.3622273500000006,y:-.0018583499999986763},{x:-.13579835000000018,y:-.0018583499999986763}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.12010005000000046,y:-.0033888499999992217},{x:.10307834999999987,y:.13630055000000119}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.12795584999999932,y:-.0018583499999986763},{x:.3686967499999996,y:-.0018583499999986763}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.03688484999999986,y:.25026835000000003},bottom1:{type:"text",text:"{VAL}",x:-.02235315000000071,y:-.25026835000000003}},refblocks:{left1:{x:-.12356015000000009,y:-.006648049999999239},left2:{x:-.37614274999999964,y:-.002711249999999721},right1:{x:.11531695000000042,y:-.006648049999999239},right2:{x:.37614274999999964,y:-.0017148499999992683}},bounds:{minX:-.4043011909999996,maxX:.4043011909999996,minY:-.25026835000000003,maxY:.25026835000000003,width:.8086023819999992,height:.5005367000000001,centerX:0,centerY:0},circles:{}};delete SPST_switch_default$1.refblocks.left1,delete SPST_switch_default$1.refblocks.right1,SPST_switch_default$1.bounds.width+=.2;var SPST_switch_horz_default$1=modifySymbol$1(SPST_switch_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left2",["1"]).labelPort("right2",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol23$1=rotateSymbol$1(SPST_switch_horz_default$1),texts58$1=rotatedSymbol23$1.primitives.filter(ua=>ua.type==="text"),val20$1=texts58$1.find(ua=>ua.text==="{VAL}");val20$1.anchor="middle_right",val20$1.x=-.3,val20$1.y=0;var ref25$1=texts58$1.find(ua=>ua.text==="{REF}");ref25$1.anchor="middle_left",ref25$1.x=.3,ref25$1.y=0;var SPST_switch_vert_default$1=rotatedSymbol23$1,step_recovery_diode_default$1={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999836},{x:-.1199943999999995,y:-.08825540000000132}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.1763280000000016},{x:.14458890000000002,y:.04403629999999836}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.08825539999999776},{x:-.1199943999999995,y:.1763280000000016}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.1763280000000016},{x:.14458890000000002,y:-.08825539999999776}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999836},{x:-.5168693999999996,y:.04403629999999836}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797,y:.04395110000000102},{x:.14967160000000002,y:.04395110000000102}],color:"primary",fill:!1},"path43-5":{type:"path",points:[{x:.19156529999999972,y:-.0884020999999997},{x:.14591529999999908,y:-.08876210000000029}],color:"primary",fill:!1},"path43-5-2":{type:"path",points:[{x:.19233440000000046,y:-.1355493999999986},{x:.19197439999999988,y:-.08989940000000018}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384529999999785},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999999524,y:-.2738453000000014}},refblocks:{left1:{x:-.5191471000000001,y:.0449206999999987},right1:{x:.5191471000000001,y:.043896100000001326}},bounds:{minX:-.5473055410000001,maxX:.5473055410000001,minY:-.2738453000000014,maxY:.27384529999999785,width:1.0946110820000001,height:.5476905999999993,centerX:0,centerY:-17763568394002505e-31},circles:{}},step_recovery_diode_horz_default$1=modifySymbol$1(step_recovery_diode_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),step_recovery_diode_vert_default$1=rotateSymbol$1(step_recovery_diode_horz_default$1),tachometer_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"RPM",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths42$1,texts:texts60$1,bounds:bounds42$1,refblocks:refblocks42$1,circles:circles38$1}=tachometer_default$1,tachometer_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths42$1),...Object.values(circles38$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts60$1.left1,y:.01,anchor:"center",fontSize:.2}],ports:[{...refblocks42$1.left1,labels:["1"]},{...refblocks42$1.right1,labels:["2"]}],size:{width:bounds42$1.width,height:bounds42$1.height},center:{x:bounds42$1.centerX,y:bounds42$1.centerY}}),{5:letter4$1,...rest4$1}=tachometer_horz_default$1.primitives;function isPrimitive4$1(ua){return typeof ua=="object"}var rotatedSymbol24$1=rotateSymbol$1({...tachometer_horz_default$1,primitives:Object.values(rest4$1).filter(isPrimitive4$1)}),tachometer_vert_default$1={...rotatedSymbol24$1,primitives:[...rotatedSymbol24$1.primitives,letter4$1]},triac_default$1={paths:{path11:{type:"path",points:[{x:-.5176700499999997,y:.041745050000000505},{x:-.10888805000000024,y:.041745050000000505}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.1031184499999993,y:.041745050000000505},{x:.5246894499999994,y:.041745050000000505}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.09343985000000021,y:-.14620634999999882},{x:-.0930998500000002,y:.2583405500000009}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.08519034999999908,y:-.14503384999999902},{x:.08553034999999909,y:.2595130500000007}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.08315755000000014,y:.055934450000000524},{x:-.08415755000000047,y:-.14678124999999964},{x:.08653524999999984,y:-.05104664999999953},{x:-.08126175000000035,y:.05647715000000031}],color:"primary",fill:!0},"path11-0-9-0":{type:"path",points:[{x:.07661224999999927,y:.256654450000001},{x:.07761224999999983,y:.05393885000000109},{x:-.0930805500000007,y:.1496734500000012},{x:.07471644999999949,y:.25719715000000143}],color:"primary",fill:!0},"path12-2":{type:"path",points:[{x:.09001085000000009,y:-.05964874999999914},{x:.2707999499999998,y:-.1711147499999992}],color:"primary",fill:!1},"path12-2-9":{type:"path",points:[{x:.27291134999999955,y:-.17591894999999935},{x:.27124034999999935,y:-.30168314999999923}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:.0077081499999991365,y:.41683614999999996},bottom1:{type:"text",text:"{VAL}",x:-.03022294999999975,y:-.41683614999999996}},refblocks:{bottom1:{x:.27223905000000026,y:-.3087962499999999},left1:{x:-.54139845,y:.04089205000000051},right1:{x:.5413984499999995,y:.04188845000000008}},bounds:{minX:-.569556891,maxX:.5695568909999995,minY:-.41683614999999996,maxY:.41683614999999996,width:1.1391137819999995,height:.8336722999999999,centerX:-2220446049250313e-31,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000003116,y:.048873150000000365,radius:.28854213,color:"primary",fill:!1}}},triac_horz_default$1=modifySymbol$1(triac_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).labelPort("bottom1",["3"]).changeTextAnchor("{REF}","middle_bottom").build(),rotatedSymbol25$1=rotateSymbol$1(triac_horz_default$1),texts62$1=rotatedSymbol25$1.primitives.filter(ua=>ua.type==="text"),ref26$1=texts62$1.find(ua=>ua.text==="{REF}"),val21$1=texts62$1.find(ua=>ua.text==="{VAL}");ref26$1.y=0,val21$1.y=0;var triac_vert_default$1=rotatedSymbol25$1,tunnel_diode_default$1={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999992},{x:-.1199943999999995,y:-.08825540000000043}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17632800000000026},{x:.14458890000000002,y:.04403629999999992}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.0882553999999991},{x:-.1199943999999995,y:.17632800000000026}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17632800000000026},{x:.14458890000000002,y:-.0882553999999991}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999992},{x:-.5168693999999996,y:.04403629999999992}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.043951100000000354},{x:.1496715999999998,y:.043951100000000354}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17681090000000044},{x:.07728679999999954,y:.17632089999999967}],color:"primary",fill:!1},"path43-8-8":{type:"path",points:[{x:.1446069000000001,y:-.08908179999999888},{x:.0785024999999997,y:-.08957179999999942}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384529999999985}},refblocks:{left1:{x:-.5191471000000001,y:.044920700000000924},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.27384529999999985,maxY:.27384530000000007,width:1.094611082,height:.5476905999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:paths44$1,texts:texts63$1,bounds:bounds44$1,refblocks:refblocks44$1,circles:circles40$1}=tunnel_diode_default$1,tunnel_diode_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths44$1),...Object.values(circles40$1),{...texts63$1.top1,anchor:"middle_bottom"},{...texts63$1.bottom1,anchor:"middle_top"}],ports:[{...refblocks44$1.left1,labels:["1"]},{...refblocks44$1.right1,labels:["2"]}],size:{width:bounds44$1.width,height:bounds44$1.height},center:{x:bounds44$1.centerX,y:bounds44$1.centerY}}),rotated9$1=rotateSymbol$1(tunnel_diode_horz_default$1),ref27$1=rotated9$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val22$1=rotated9$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref27$1.anchor="middle_left",val22$1.anchor="middle_right";var tunnel_diode_vert_default$1=rotated9$1,unijunction_transistor_default$1={paths:{path11:{type:"path",points:[{x:-.3274461945,y:.20527883627037657},{x:-.021085194500000348,y:.007570136270376837}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2331163055000003,y:.1251673362703769},{x:.2320633055000001,y:.3759855362703768}],color:"primary",fill:!1},"path12-2":{type:"path",points:[{x:.23221610549999938,y:-.0818845637296235},{x:.2311631054999992,y:-.33270276372962315}],color:"primary",fill:!1},"path11-0":{type:"path",points:[{x:-.013263894499999873,y:-.1792007637296229},{x:-.012923894499999866,y:.2253461362703768}],color:"primary",fill:!1},"path11-0-3":{type:"path",points:[{x:.23222970550000066,y:.12047013627037662},{x:-.011307094499999115,y:.11996013627037683}],color:"primary",fill:!1},"path11-0-9":{type:"path",points:[{x:-.1124341944999998,y:.131359936270377},{x:-.16993279449999954,y:.039004036270377185},{x:-.05822649449999928,y:.03212003627037707},{x:-.11133889449999979,y:.13104553627037707}],color:"primary",fill:!0},"path11-0-3-8":{type:"path",points:[{x:.23230320549999983,y:-.08329316372962325},{x:-.011233594499999944,y:-.07900616372962332}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.19541139450000045,y:.389088136270376},bottom1:{type:"text",text:"{VAL}",x:-.031363394499999364,y:-.42359956372962415}},refblocks:{top1:{x:.2317438004035266,y:.3954411227296242},bottom1:{x:.2308431668082036,y:-.35215823360635445},left1:{x:-.34055979449999985,y:.21512343627037622}},bounds:{minX:-.3687182354999998,maxX:.3687182354999999,minY:-.42359956372962415,maxY:.42359956372962415,width:.7374364709999996,height:.8471991274592483,centerX:27755575615628914e-33,centerY:0},circles:{path1:{type:"circle",x:.08017610549999987,y:.006746336270376352,radius:.28854213,color:"primary",fill:!1}}},{paths:paths45$1,texts:texts64$1,bounds:bounds45$1,refblocks:refblocks45$1,circles:circles41$1}=unijunction_transistor_default$1,unijunction_transistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths45$1),...Object.values(circles41$1),{...texts64$1.top1,anchor:"middle_left"},{...texts64$1.bottom1,anchor:"middle_right"}],ports:[{...refblocks45$1.top1,labels:["1"]},{...refblocks45$1.bottom1,labels:["2"]},{...refblocks45$1.left1,labels:["3"]}],size:{width:bounds45$1.width,height:bounds45$1.height},center:{x:bounds45$1.centerX,y:bounds45$1.centerY}}),rotatedSymbol26$1=rotateSymbol$1(unijunction_transistor_horz_default$1),texts65$1=rotatedSymbol26$1.primitives.filter(ua=>ua.type==="text"),ref28$1=texts65$1.find(ua=>ua.text==="{REF}");ref28$1.y=.1;var val23$1=texts65$1.find(ua=>ua.text==="{VAL}");val23$1.y=.1,val23$1.x=-.4;var unijunction_transistor_vert_default$1=rotatedSymbol26$1,var_meter_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Var",x:-.19436529999999896,y:.07249430000000023}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths46$1,texts:texts66$1,bounds:bounds46$1,refblocks:refblocks46$1,circles:circles42$1}=var_meter_default$1,var_meter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths46$1),...Object.values(circles42$1),{...texts66$1.top1,x:0,y:-.3594553499999995,anchor:"middle_top"},{...texts66$1.bottom1,x:0,y:.35,anchor:"middle_bottom"},{...texts66$1.left1,x:-.02,y:.01,fontSize:.2,anchor:"center"}],ports:[{...refblocks46$1.left1,labels:["1"]},{...refblocks46$1.right1,labels:["2"]}],size:{width:bounds46$1.width,height:bounds46$1.height},center:{x:bounds46$1.centerX,y:bounds46$1.centerY}}),var_meter_vert_default$1=rotateSymbol$1(var_meter_horz_default$1),varactor_diode_default$1={paths:{path40:{type:"path",points:[{x:.08342510000000014,y:.04403649999999937},{x:-.18115819999999938,y:-.0882552000000012}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1811582000000007,y:.1763281999999997},{x:.08342509999999881,y:.04403649999999937}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1811582000000007,y:-.0882552000000012},{x:-.1811582000000007,y:.17632819999999816}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.0949504999999995,y:.17485119999999976},{x:.09600949999999897,y:-.09185079999999957}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.1954338999999996,y:.04403649999999937},{x:-.5191807000000004,y:.04403649999999937}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5253116,y:.043951299999999804},{x:.20527070000000047,y:.043951299999999804}],color:"primary",fill:!1},"path43-6":{type:"path",points:[{x:.1854899999999995,y:.1748848999999999},{x:.18654899999999874,y:-.09181709999999943}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999994495,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384530000000007}},refblocks:{left1:{x:-.5191471,y:.044920799999999206},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.547305541,maxX:.5473055409999998,minY:-.27384530000000007,maxY:.27384530000000007,width:1.0946110819999997,height:.5476906000000001,centerX:-5551115123125783e-32,centerY:0},circles:{}},{paths:paths47$1,texts:texts67$1,bounds:bounds47$1,refblocks:refblocks47$1,circles:circles43$1}=varactor_diode_default$1,varactor_diode_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths47$1),...Object.values(circles43$1),{...texts67$1.top1,anchor:"middle_bottom"},{...texts67$1.bottom1,anchor:"middle_top"}],ports:[{...refblocks47$1.left1,labels:["1"]},{...refblocks47$1.right1,labels:["2"]}],size:{width:bounds47$1.width,height:bounds47$1.height},center:{x:bounds47$1.centerX,y:bounds47$1.centerY}}),rotated10$1=rotateSymbol$1(varactor_diode_horz_default$1),ref29$1=rotated10$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val24$1=rotated10$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref29$1.anchor="middle_left",val24$1.anchor="middle_right";var varactor_diode_vert_default$1=rotated10$1,varistor_default$1={paths:{path5:{type:"path",points:[{x:-.5245830500000004,y:.004659100000001359},{x:-.25999975000000086,y:.004659100000001359}],color:"primary",fill:!1},path6:{type:"path",points:[{x:.2691672500000002,y:.004659100000001359},{x:.5337505499999997,y:.004659100000001359}],color:"primary",fill:!1},path7:{type:"path",points:[{x:.2691672500000002,y:-.23346590000000056},{x:-.25999974999999953,y:.2427841000000015}],color:"primary",fill:!1},path8:{type:"path",points:[{x:.37500025000000026,y:-.23346590000000056},{x:.2691672500000002,y:-.23346590000000056}],color:"primary",fill:!1},path9:{type:"path",points:[{x:.004585150000000482,y:.13695090000000043},{x:.26916815000000094,y:.13695090000000043},{x:.26916815000000094,y:-.1276325000000007},{x:-.2599988499999988,y:-.1276325000000007},{x:-.2599988499999988,y:.13695090000000043},{x:.004585150000001814,y:.13695090000000043}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.05849044999999986,y:.25166549999999965},bottom1:{type:"text",text:"{VAL}",x:.008507150000000685,y:-.25166549999999965}},refblocks:{left1:{x:-.5392315500000002,y:.002969399999999567},right1:{x:.5392315500000002,y:.005339799999999784}},bounds:{minX:-.5673899910000002,maxX:.5673899910000002,minY:-.25166549999999965,maxY:.25166549999999965,width:1.1347799820000004,height:.5033309999999993,centerX:0,centerY:0},circles:{}},{paths:paths48$1,texts:texts68$1,bounds:bounds48$1,refblocks:refblocks48$1}=varistor_default$1,varistor_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths48$1),{...texts68$1.top1,anchor:"middle_left"},{...texts68$1.bottom1,anchor:"middle_right"}],ports:[{...refblocks48$1.left1,labels:["1","-"]},{...refblocks48$1.right1,labels:["2","+"]}],size:{width:bounds48$1.width,height:bounds48$1.height},center:{x:bounds48$1.centerX,y:bounds48$1.centerY}}),varistor_vert_default$1=rotateSymbol$1(varistor_horz_default$1),varmeter_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Var",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths49$1,texts:texts69$1,bounds:bounds49$1,refblocks:refblocks49$1,circles:circles44$1}=varmeter_default$1,varmeter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths49$1),...Object.values(circles44$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts69$1.left1,anchor:"center",y:.02,fontSize:.2}],ports:[{...refblocks49$1.left1,labels:["1"]},{...refblocks49$1.right1,labels:["2"]}],size:{width:bounds49$1.width,height:bounds49$1.height},center:{x:bounds49$1.centerX,y:bounds49$1.centerY}}),{5:letter5$1,...rest5$1}=varmeter_horz_default$1.primitives;function isPrimitive5$1(ua){return typeof ua=="object"}var rotatedSymbol27$1=rotateSymbol$1({...varmeter_horz_default$1,primitives:Object.values(rest5$1).filter(isPrimitive5$1)}),varmeter_vert_default$1={...rotatedSymbol27$1,primitives:[...rotatedSymbol27$1.primitives,letter5$1]},volt_meter_default$1={paths:{path11:{type:"path",points:[{x:-.5274831500000005,y:.031252300000000455},{x:-.30105415000000013,y:.031252300000000455}],color:"primary",fill:!1},"path11-5-5":{type:"path",points:[{x:.09765764999999949,y:.1295162000000003},{x:-.0011297500000011507,y:-.061970899999999496},{x:-.10778645000000164,y:.1295162000000003}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2932119499999999,y:.031252300000000455},{x:.5339524499999997,y:.031252300000000455}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.021146249999999478,y:.4010973},bottom1:{type:"text",text:"{VAL}",x:-.00661455000000033,y:-.4010973}},refblocks:{left1:{x:-.5413984499999998,y:.030399499999999913},right1:{x:.54139845,y:.0313958999999997}},bounds:{minX:-.5695568909999997,maxX:.569556891,minY:-.4010973,maxY:.4010973,width:1.1391137819999997,height:.8021946,centerX:11102230246251565e-32,centerY:0},circles:{path1:{type:"circle",x:-.0037626500000000895,y:.03838059999999999,radius:.28854213,color:"primary",fill:!1}}},volt_meter_horz_default$1=modifySymbol$1(volt_meter_default$1).changeTextAnchor("{VAL}","middle_top").labelPort("left1",["1"]).labelPort("right1",["2"]).changeTextAnchor("{REF}","middle_bottom").build(),volt_meter_vert_default$1=rotateSymbol$1(volt_meter_horz_default$1),watt_hour_meter_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"Wh",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths51$1,texts:texts71$1,bounds:bounds51$1,refblocks:refblocks51$1,circles:circles46$1}=watt_hour_meter_default$1,watt_hour_meter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths51$1),...Object.values(circles46$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts71$1.left1,anchor:"center",y:.01,fontSize:.2}],ports:[{...refblocks51$1.left1,labels:["1"]},{...refblocks51$1.right1,labels:["2"]}],size:{width:bounds51$1.width,height:bounds51$1.height},center:{x:bounds51$1.centerX,y:bounds51$1.centerY}}),{5:letter6$1,...rest6$1}=watt_hour_meter_horz_default$1.primitives;function isPrimitive6$1(ua){return typeof ua=="object"}var rotatedSymbol28$1=rotateSymbol$1({...watt_hour_meter_horz_default$1,primitives:Object.values(rest6$1).filter(isPrimitive6$1)}),watt_hour_meter_vert_default$1={...rotatedSymbol28$1,primitives:[...rotatedSymbol28$1.primitives,letter6$1]},wattmeter_default$1={paths:{path11:{type:"path",points:[{x:-.5307178,y:0},{x:-.3042887999999997,y:0}],color:"primary",fill:!1},path12:{type:"path",points:[{x:.2899773000000003,y:0},{x:.5307178000000001,y:0}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.17652089999999898,y:-.36197569999999946},bottom1:{type:"text",text:"{VAL}",x:-.009849199999999891,y:.43234960000000044},left1:{type:"text",text:"W",x:0,y:-.025}},refblocks:{left1:{x:-.5446330999999993,y:.000852800000000542},right1:{x:.5381638000000004,y:-.00014359999999924433}},bounds:{minX:-.5307178,maxX:.5307178000000001,minY:0,maxY:0,width:1.0614356000000003,height:1,centerX:5551115123125783e-32,centerY:0},circles:{path1:{type:"circle",x:-.006997299999999651,y:-.007128299999999532,radius:.28854213,color:"primary",fill:!1}}},{paths:paths52$1,texts:texts72$1,bounds:bounds52$1,refblocks:refblocks52$1,circles:circles47$1}=wattmeter_default$1,wattmeter_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths52$1),...Object.values(circles47$1),{type:"text",text:"{REF}",x:0,y:-.3594553499999995,anchor:"middle_top"},{type:"text",text:"{VAL}",x:0,y:.35,anchor:"middle_bottom"},{...texts72$1.left1,anchor:"center",y:.01,fontSize:.3}],ports:[{...refblocks52$1.left1,labels:["1"]},{...refblocks52$1.right1,labels:["2"]}],size:{width:bounds52$1.width,height:bounds52$1.height},center:{x:bounds52$1.centerX,y:bounds52$1.centerY}}),{5:letter7$1,...rest7$1}=wattmeter_horz_default$1.primitives;function isPrimitive7$1(ua){return typeof ua=="object"}var rotatedSymbol29$1=rotateSymbol$1({...wattmeter_horz_default$1,primitives:Object.values(rest7$1).filter(isPrimitive7$1)}),wattmeter_vert_default$1={...rotatedSymbol29$1,primitives:[...rotatedSymbol29$1.primitives,letter7$1]},zener_diode_default$1={paths:{path40:{type:"path",points:[{x:.14458890000000002,y:.04403629999999992},{x:-.1199943999999995,y:-.08825540000000043}],color:"primary",fill:!1},path41:{type:"path",points:[{x:-.1199943999999995,y:.17632800000000026},{x:.14458890000000002,y:.04403629999999992}],color:"primary",fill:!1},path42:{type:"path",points:[{x:-.1199943999999995,y:-.0882553999999991},{x:-.1199943999999995,y:.17632800000000026}],color:"primary",fill:!1},path43:{type:"path",points:[{x:.14458890000000002,y:.17632800000000026},{x:.14458890000000002,y:-.0882553999999991}],color:"primary",fill:!1},path44:{type:"path",points:[{x:-.12219909999999956,y:.04403629999999992},{x:-.5168693999999996,y:.04403629999999992}],color:"primary",fill:!1},"path44-0":{type:"path",points:[{x:.5233797000000002,y:.043951100000000354},{x:.1496715999999998,y:.043951100000000354}],color:"primary",fill:!1},"path43-8":{type:"path",points:[{x:.14339119999999994,y:.17681090000000044},{x:.07728679999999954,y:.17632089999999967}],color:"primary",fill:!1}},texts:{top1:{type:"text",text:"{REF}",x:-.0050250999999996715,y:.27384530000000007},bottom1:{type:"text",text:"{VAL}",x:-.00011179999999977319,y:-.27384529999999985}},refblocks:{left1:{x:-.5191471000000001,y:.044920700000000924},right1:{x:.5191470999999999,y:.04389609999999999}},bounds:{minX:-.5473055410000001,maxX:.5473055409999998,minY:-.27384529999999985,maxY:.27384530000000007,width:1.094611082,height:.5476905999999999,centerX:-11102230246251565e-32,centerY:11102230246251565e-32},circles:{}},{paths:paths53$1,texts:texts73$1,bounds:bounds53$1,refblocks:refblocks53$1,circles:circles48$1}=zener_diode_default$1,zener_diode_horz_default$1=defineSymbol$1({primitives:[...Object.values(paths53$1),...Object.values(circles48$1),{...texts73$1.top1,anchor:"middle_bottom"},{...texts73$1.bottom1,anchor:"middle_top"}],ports:[{...refblocks53$1.left1,labels:["1"]},{...refblocks53$1.right1,labels:["2"]}],size:{width:bounds53$1.width,height:bounds53$1.height},center:{x:bounds53$1.centerX,y:bounds53$1.centerY}}),rotated11$1=rotateSymbol$1(zener_diode_horz_default$1),ref30$1=rotated11$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{REF}"),val25$1=rotated11$1.primitives.find(ua=>ua.type==="text"&&ua.text==="{VAL}");ref30$1.anchor="middle_left",val25$1.anchor="middle_right";var zener_diode_vert_default$1=rotated11$1,symbols_index_default$1={ac_voltmeter_horz:ac_voltmeter_horz_default$1,ac_voltmeter_vert:ac_voltmeter_vert_default$1,avalanche_diode_horz:avalanche_diode_horz_default$1,avalanche_diode_vert:avalanche_diode_vert_default$1,battery_horz:battery_horz_default$1,battery_vert:battery_vert_default$1,boxresistor_down:boxresistor_down_default$1,boxresistor_left:boxresistor_left_default$1,boxresistor_right:boxresistor_right_default$1,boxresistor_up:boxresistor_up_default$1,capacitor_down:capacitor_down_default$1,capacitor_left:capacitor_left_default$1,capacitor_polarized_down:capacitor_polarized_down_default$1,capacitor_polarized_left:capacitor_polarized_left_default$1,capacitor_polarized_right:capacitor_polarized_right_default$1,capacitor_polarized_up:capacitor_polarized_up_default$1,capacitor_right:capacitor_right_default$1,capacitor_up:capacitor_up_default$1,constant_current_diode_horz:constant_current_diode_horz_default$1,constant_current_diode_vert:constant_current_diode_vert_default$1,crystal_4pin_horz:crystal_4pin_horz_default$1,crystal_4pin_vert:crystal_4pin_vert_default$1,crystal_horz:crystal_horz_default$1,crystal_vert:crystal_vert_default$1,darlington_pair_transistor_horz:darlington_pair_transistor_horz_default$1,darlington_pair_transistor_vert:darlington_pair_transistor_vert_default$1,dc_ammeter_horz:dc_ammeter_horz_default$1,dc_ammeter_vert:dc_ammeter_vert_default$1,dc_voltmeter_horz:dc_voltmeter_horz_default$1,dc_voltmeter_vert:dc_voltmeter_vert_default$1,diac_horz:diac_horz_default$1,diac_vert:diac_vert_default$1,diode_down:diode_down_default$1,diode_left:diode_left_default$1,diode_right:diode_right_default$1,diode_up:diode_up_default$1,dpdt_switch_horz:dpdt_switch_horz_default$1,dpdt_switch_vert:dpdt_switch_vert_default$1,dpst_switch_horz:dpst_switch_horz_default$1,dpst_switch_vert:dpst_switch_vert_default$1,filled_diode_horz:filled_diode_horz_default$1,filled_diode_vert:filled_diode_vert_default$1,frequency_meter_horz:frequency_meter_horz_default$1,frequency_meter_vert:frequency_meter_vert_default$1,fuse_horz:fuse_horz_default$1,fuse_vert:fuse_vert_default$1,ground_horz:ground_horz_default$1,ground_vert:ground_vert_default$1,gunn_diode_horz:gunn_diode_horz_default$1,gunn_diode_vert:gunn_diode_vert_default$1,igbt_transistor_horz:igbt_transistor_horz_default$1,igbt_transistor_vert:igbt_transistor_vert_default$1,illuminated_push_button_normally_open_horz:illuminated_push_button_normally_open_horz_default$1,illuminated_push_button_normally_open_vert:illuminated_push_button_normally_open_vert_default$1,inductor_down:inductor_down_default$1,inductor_left:inductor_left_default$1,inductor_right:inductor_right_default$1,inductor_up:inductor_up_default$1,laser_diode_horz:laser_diode_horz_default$1,laser_diode_vert:laser_diode_vert_default$1,led_down:led_down_default$1,led_left:led_left_default$1,led_right:led_right_default$1,led_up:led_up_default$1,light_dependent_resistor_horz:light_dependent_resistor_horz_default$1,light_dependent_resistor_vert:light_dependent_resistor_vert_default$1,mosfet_depletion_normally_on_horz:mosfet_depletion_normally_on_horz_default$1,mosfet_depletion_normally_on_vert:mosfet_depletion_normally_on_vert_default$1,mushroom_head_normally_open_momentary_horz:mushroom_head_normally_open_momentary_horz_default$1,mushroom_head_normally_open_momentary_vert:mushroom_head_normally_open_momentary_vert_default$1,n_channel_d_mosfet_transistor_horz:n_channel_d_mosfet_transistor_horz_default$1,n_channel_d_mosfet_transistor_vert:n_channel_d_mosfet_transistor_vert_default$1,n_channel_e_mosfet_transistor_horz:n_channel_e_mosfet_transistor_horz_default$1,n_channel_e_mosfet_transistor_vert:n_channel_e_mosfet_transistor_vert_default$1,njfet_transistor_horz:njfet_transistor_horz_default$1,njfet_transistor_vert:njfet_transistor_vert_default$1,npn_bipolar_transistor_horz:npn_bipolar_transistor_horz_default$1,npn_bipolar_transistor_vert:npn_bipolar_transistor_vert_default$1,opamp_no_power_down:opamp_no_power_down_default,opamp_no_power_left:opamp_no_power_left_default,opamp_no_power_right:opamp_no_power_right_default,opamp_no_power_up:opamp_no_power_up_default,opamp_with_power_down:opamp_with_power_down_default,opamp_with_power_left:opamp_with_power_left_default,opamp_with_power_right:opamp_with_power_right_default,opamp_with_power_up:opamp_with_power_up_default,p_channel_d_mosfet_transistor_horz:p_channel_d_mosfet_transistor_horz_default$1,p_channel_d_mosfet_transistor_vert:p_channel_d_mosfet_transistor_vert_default$1,p_channel_e_mosfet_transistor_horz:p_channel_e_mosfet_transistor_horz_default$1,p_channel_e_mosfet_transistor_vert:p_channel_e_mosfet_transistor_vert_default$1,photodiode_horz:photodiode_horz_default$1,photodiode_vert:photodiode_vert_default$1,pjfet_transistor_horz:pjfet_transistor_horz_default$1,pjfet_transistor_vert:pjfet_transistor_vert_default$1,pnp_bipolar_transistor_horz:pnp_bipolar_transistor_horz_default$1,pnp_bipolar_transistor_vert:pnp_bipolar_transistor_vert_default$1,potentiometer_horz:potentiometer_horz_default$1,potentiometer_vert:potentiometer_vert_default$1,potentiometer2_horz:potentiometer2_horz_default$1,potentiometer2_vert:potentiometer2_vert_default$1,power_factor_meter_horz:power_factor_meter_horz_default$1,power_factor_meter_vert:power_factor_meter_vert_default$1,push_button_normally_closed_momentary_horz:push_button_normally_closed_momentary_horz_default$1,push_button_normally_closed_momentary_vert:push_button_normally_closed_momentary_vert_default$1,push_button_normally_open_momentary_horz:push_button_normally_open_momentary_horz_default$1,push_button_normally_open_momentary_vert:push_button_normally_open_momentary_vert_default$1,rectifier_diode_horz:rectifier_diode_horz_default$1,rectifier_diode_vert:rectifier_diode_vert_default$1,resonator_horz:resonator_horz_default$1,resonator_vert:resonator_vert_default$1,schottky_diode_horz:schottky_diode_horz_default$1,schottky_diode_vert:schottky_diode_vert_default$1,silicon_controlled_rectifier_horz:silicon_controlled_rectifier_horz_default$1,silicon_controlled_rectifier_vert:silicon_controlled_rectifier_vert_default$1,SPDT_switch_horz:SPDT_switch_horz_default$1,SPDT_switch_vert:SPDT_switch_vert_default$1,SPST_switch_horz:SPST_switch_horz_default$1,SPST_switch_vert:SPST_switch_vert_default$1,step_recovery_diode_horz:step_recovery_diode_horz_default$1,step_recovery_diode_vert:step_recovery_diode_vert_default$1,tachometer_horz:tachometer_horz_default$1,tachometer_vert:tachometer_vert_default$1,triac_horz:triac_horz_default$1,triac_vert:triac_vert_default$1,tunnel_diode_horz:tunnel_diode_horz_default$1,tunnel_diode_vert:tunnel_diode_vert_default$1,unijunction_transistor_horz:unijunction_transistor_horz_default$1,unijunction_transistor_vert:unijunction_transistor_vert_default$1,var_meter_horz:var_meter_horz_default$1,var_meter_vert:var_meter_vert_default$1,varactor_diode_horz:varactor_diode_horz_default$1,varactor_diode_vert:varactor_diode_vert_default$1,varistor_horz:varistor_horz_default$1,varistor_vert:varistor_vert_default$1,varmeter_horz:varmeter_horz_default$1,varmeter_vert:varmeter_vert_default$1,volt_meter_horz:volt_meter_horz_default$1,volt_meter_vert:volt_meter_vert_default$1,watt_hour_meter_horz:watt_hour_meter_horz_default$1,watt_hour_meter_vert:watt_hour_meter_vert_default$1,wattmeter_horz:wattmeter_horz_default$1,wattmeter_vert:wattmeter_vert_default$1,zener_diode_horz:zener_diode_horz_default$1,zener_diode_vert:zener_diode_vert_default$1};Object.fromEntries(Object.keys(symbols_index_default$1).map(ua=>[ua,ua]));var lodash__objecttypes,hasRequiredLodash__objecttypes;function requireLodash__objecttypes(){if(hasRequiredLodash__objecttypes)return lodash__objecttypes;hasRequiredLodash__objecttypes=1;var ua={boolean:!1,function:!0,object:!0,number:!1,string:!1,undefined:!1};return lodash__objecttypes=ua,lodash__objecttypes}var lodash_isobject,hasRequiredLodash_isobject;function requireLodash_isobject(){if(hasRequiredLodash_isobject)return lodash_isobject;hasRequiredLodash_isobject=1;var ua=requireLodash__objecttypes();function J(la){return!!(la&&ua[typeof la])}return lodash_isobject=J,lodash_isobject}var lodash__renative,hasRequiredLodash__renative;function requireLodash__renative(){if(hasRequiredLodash__renative)return lodash__renative;hasRequiredLodash__renative=1;var ua=Object.prototype,J=ua.toString,la=RegExp("^"+String(J).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$");return lodash__renative=la,lodash__renative}var lodash__shimkeys,hasRequiredLodash__shimkeys;function requireLodash__shimkeys(){if(hasRequiredLodash__shimkeys)return lodash__shimkeys;hasRequiredLodash__shimkeys=1;var ua=requireLodash__objecttypes(),J=Object.prototype,la=J.hasOwnProperty,xa=function(Aa){var ba,Sa=Aa,Ma=[];if(!Sa||!ua[typeof Aa])return Ma;for(ba in Sa)la.call(Sa,ba)&&Ma.push(ba);return Ma};return lodash__shimkeys=xa,lodash__shimkeys}var lodash_keys,hasRequiredLodash_keys;function requireLodash_keys(){if(hasRequiredLodash_keys)return lodash_keys;hasRequiredLodash_keys=1;var ua=requireLodash_isobject(),J=requireLodash__renative(),la=requireLodash__shimkeys(),xa=J.test(xa=Object.keys)&&xa,Aa=xa?function(ba){return ua(ba)?xa(ba):[]}:la;return lodash_keys=Aa,lodash_keys}var lodash_noop,hasRequiredLodash_noop;function requireLodash_noop(){if(hasRequiredLodash_noop)return lodash_noop;hasRequiredLodash_noop=1;function ua(){}return lodash_noop=ua,lodash_noop}var lodash__basecreate,hasRequiredLodash__basecreate;function requireLodash__basecreate(){if(hasRequiredLodash__basecreate)return lodash__basecreate;hasRequiredLodash__basecreate=1;var ua={process:{env:{}}},J=requireLodash_isobject();requireLodash_noop();var la=requireLodash__renative(),xa=la.test(xa=Object.create)&&xa;function Aa(ba,Sa){return J(ba)?xa(ba):{}}return xa||(Aa=function(){function ba(){}return function(Sa){if(J(Sa)){ba.prototype=Sa;var Ma=new ba;ba.prototype=null}return Ma||ua.Object()}}()),lodash__basecreate=Aa,lodash__basecreate}var lodash__setbinddata,hasRequiredLodash__setbinddata;function requireLodash__setbinddata(){if(hasRequiredLodash__setbinddata)return lodash__setbinddata;hasRequiredLodash__setbinddata=1;var ua=requireLodash_noop(),J=requireLodash__renative(),la={configurable:!1,enumerable:!1,value:null,writable:!1},xa=function(){try{var ba={},Sa=J.test(Sa=Object.defineProperty)&&Sa,Ma=Sa(ba,ba,ba)&&Sa}catch{}return Ma}(),Aa=xa?function(ba,Sa){la.value=Sa,xa(ba,"__bindData__",la)}:ua;return lodash__setbinddata=Aa,lodash__setbinddata}var lodash__basebind,hasRequiredLodash__basebind;function requireLodash__basebind(){if(hasRequiredLodash__basebind)return lodash__basebind;hasRequiredLodash__basebind=1;var ua=requireLodash__basecreate(),J=requireLodash_isobject(),la=requireLodash__setbinddata(),xa=[],Aa=xa.push;function ba(Sa){var Ma=Sa[0],Ra=Sa[2],Ia=Sa[4];function La(){if(Ra){var Fa=Ra.slice();Aa.apply(Fa,arguments)}if(this instanceof La){var ka=ua(Ma.prototype),el=Ma.apply(ka,Fa||arguments);return J(el)?el:ka}return Ma.apply(Ia,Fa||arguments)}return la(La,Sa),La}return lodash__basebind=ba,lodash__basebind}var lodash__slice,hasRequiredLodash__slice;function requireLodash__slice(){if(hasRequiredLodash__slice)return lodash__slice;hasRequiredLodash__slice=1;function ua(J,la,xa){la||(la=0),typeof xa>"u"&&(xa=J?J.length:0);for(var Aa=-1,ba=xa-la||0,Sa=Array(ba<0?0:ba);++Aa<ba;)Sa[Aa]=J[la+Aa];return Sa}return lodash__slice=ua,lodash__slice}var lodash__basecreatewrapper,hasRequiredLodash__basecreatewrapper;function requireLodash__basecreatewrapper(){if(hasRequiredLodash__basecreatewrapper)return lodash__basecreatewrapper;hasRequiredLodash__basecreatewrapper=1;var ua=requireLodash__basecreate(),J=requireLodash_isobject(),la=requireLodash__setbinddata(),xa=requireLodash__slice(),Aa=[],ba=Aa.push;function Sa(Ma){var Ra=Ma[0],Ia=Ma[1],La=Ma[2],Fa=Ma[3],ka=Ma[4],el=Ma[5],tl=Ia&1,rl=Ia&2,il=Ia&4,nl=Ia&8,sl=Ra;function ll(){var dl=tl?ka:this;if(La){var gl=La.slice();ba.apply(gl,arguments)}if((Fa||il)&&(gl||(gl=xa(arguments)),Fa&&ba.apply(gl,Fa),il&&gl.length<el))return Ia|=16,Sa([Ra,nl?Ia:Ia&-4,gl,null,ka,el]);if(gl||(gl=arguments),rl&&(Ra=dl[sl]),this instanceof ll){dl=ua(Ra.prototype);var _l=Ra.apply(dl,gl);return J(_l)?_l:dl}return Ra.apply(dl,gl)}return la(ll,Ma),ll}return lodash__basecreatewrapper=Sa,lodash__basecreatewrapper}var lodash_isfunction,hasRequiredLodash_isfunction;function requireLodash_isfunction(){if(hasRequiredLodash_isfunction)return lodash_isfunction;hasRequiredLodash_isfunction=1;function ua(J){return typeof J=="function"}return lodash_isfunction=ua,lodash_isfunction}var lodash__createwrapper,hasRequiredLodash__createwrapper;function requireLodash__createwrapper(){if(hasRequiredLodash__createwrapper)return lodash__createwrapper;hasRequiredLodash__createwrapper=1;var ua=requireLodash__basebind(),J=requireLodash__basecreatewrapper(),la=requireLodash_isfunction(),xa=[],Aa=xa.push;function ba(Sa,Ma,Ra,Ia,La,Fa){var ka=Ma&1,el=Ma&2,tl=Ma&4,rl=Ma&16,il=Ma&32;if(!el&&!la(Sa))throw new TypeError;rl&&!Ra.length&&(Ma&=-17,rl=Ra=!1),il&&!Ia.length&&(Ma&=-33,il=Ia=!1);var nl=Sa&&Sa.__bindData__;if(nl&&nl!==!0)return nl=nl.slice(),ka&&!(nl[1]&1)&&(nl[4]=La),!ka&&nl[1]&1&&(Ma|=8),tl&&!(nl[1]&4)&&(nl[5]=Fa),rl&&Aa.apply(nl[2]||(nl[2]=[]),Ra),il&&Aa.apply(nl[3]||(nl[3]=[]),Ia),nl[1]|=Ma,ba.apply(null,nl);var sl=Ma==1||Ma===17?ua:J;return sl([Sa,Ma,Ra,Ia,La,Fa])}return lodash__createwrapper=ba,lodash__createwrapper}var lodash_bind,hasRequiredLodash_bind;function requireLodash_bind(){if(hasRequiredLodash_bind)return lodash_bind;hasRequiredLodash_bind=1;var ua=requireLodash__createwrapper();requireLodash__renative();var J=requireLodash__slice();function la(xa,Aa){return arguments.length>2?ua(xa,17,J(arguments,2),null,Aa):ua(xa,1,null,null,Aa)}return lodash_bind=la,lodash_bind}var lodash_identity,hasRequiredLodash_identity;function requireLodash_identity(){if(hasRequiredLodash_identity)return lodash_identity;hasRequiredLodash_identity=1;function ua(J){return J}return lodash_identity=ua,lodash_identity}var lodash_support,hasRequiredLodash_support;function requireLodash_support(){if(hasRequiredLodash_support)return lodash_support;hasRequiredLodash_support=1;var ua={process:{env:{}}},J=requireLodash__renative(),la=/\bthis\b/,xa={};return xa.funcDecomp=!J.test(ua.WinRTError)&&la.test(function(){return this}),xa.funcNames=typeof Function.name=="string",lodash_support=xa,lodash_support}var lodash__basecreatecallback,hasRequiredLodash__basecreatecallback;function requireLodash__basecreatecallback(){if(hasRequiredLodash__basecreatecallback)return lodash__basecreatecallback;hasRequiredLodash__basecreatecallback=1;var ua=requireLodash_bind(),J=requireLodash_identity(),la=requireLodash__setbinddata(),xa=requireLodash_support(),Aa=/^\s*function[ \n\r\t]+\w/,ba=/\bthis\b/,Sa=Function.prototype.toString;function Ma(Ra,Ia,La){if(typeof Ra!="function")return J;if(typeof Ia>"u"||!("prototype"in Ra))return Ra;var Fa=Ra.__bindData__;if(typeof Fa>"u"&&(xa.funcNames&&(Fa=!Ra.name),Fa=Fa||!xa.funcDecomp,!Fa)){var ka=Sa.call(Ra);xa.funcNames||(Fa=!Aa.test(ka)),Fa||(Fa=ba.test(ka),la(Ra,Fa))}if(Fa===!1||Fa!==!0&&Fa[1]&1)return Ra;switch(La){case 1:return function(el){return Ra.call(Ia,el)};case 2:return function(el,tl){return Ra.call(Ia,el,tl)};case 3:return function(el,tl,rl){return Ra.call(Ia,el,tl,rl)};case 4:return function(el,tl,rl,il){return Ra.call(Ia,el,tl,rl,il)}}return ua(Ra,Ia)}return lodash__basecreatecallback=Ma,lodash__basecreatecallback}var lodash_forown,hasRequiredLodash_forown;function requireLodash_forown(){if(hasRequiredLodash_forown)return lodash_forown;hasRequiredLodash_forown=1;var ua=requireLodash__basecreatecallback(),J=requireLodash_keys(),la=requireLodash__objecttypes(),xa=function(Aa,ba,Sa){var Ma,Ra=Aa,Ia=Ra;if(!Ra||!la[typeof Ra])return Ia;ba=ba&&typeof Sa>"u"?ba:ua(ba,Sa,3);for(var La=-1,Fa=la[typeof Ra]&&J(Ra),ka=Fa?Fa.length:0;++La<ka;)if(Ma=Fa[La],ba(Ra[Ma],Ma,Aa)===!1)return Ia;return Ia};return lodash_forown=xa,lodash_forown}var lodash_foreach,hasRequiredLodash_foreach;function requireLodash_foreach(){if(hasRequiredLodash_foreach)return lodash_foreach;hasRequiredLodash_foreach=1;var ua=requireLodash__basecreatecallback(),J=requireLodash_forown();function la(xa,Aa,ba){var Sa=-1,Ma=xa?xa.length:0;if(Aa=Aa&&typeof ba>"u"?Aa:ua(Aa,ba,3),typeof Ma=="number")for(;++Sa<Ma&&Aa(xa[Sa],Sa,xa)!==!1;);else J(xa,Aa);return xa}return lodash_foreach=la,lodash_foreach}var length$2,hasRequiredLength$3;function requireLength$3(){if(hasRequiredLength$3)return length$2;hasRequiredLength$3=1;var ua,J;return ua={mm:{name:{singular:"Millimeter",plural:"Millimeters"},to_anchor:1/1e3},cm:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/100},m:{name:{singular:"Meter",plural:"Meters"},to_anchor:1},km:{name:{singular:"Kilometer",plural:"Kilometers"},to_anchor:1e3}},J={in:{name:{singular:"Inch",plural:"Inches"},to_anchor:1/12},yd:{name:{singular:"Yard",plural:"Yards"},to_anchor:3},"ft-us":{name:{singular:"US Survey Foot",plural:"US Survey Feet"},to_anchor:1.000002},ft:{name:{singular:"Foot",plural:"Feet"},to_anchor:1},mi:{name:{singular:"Mile",plural:"Miles"},to_anchor:5280}},length$2={metric:ua,imperial:J,_anchors:{metric:{unit:"m",ratio:3.28084},imperial:{unit:"ft",ratio:1/3.28084}}},length$2}var area$1,hasRequiredArea$1;function requireArea$1(){if(hasRequiredArea$1)return area$1;hasRequiredArea$1=1;var ua,J;return ua={mm2:{name:{singular:"Square Millimeter",plural:"Square Millimeters"},to_anchor:1/1e6},cm2:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/1e4},m2:{name:{singular:"Square Meter",plural:"Square Meters"},to_anchor:1},ha:{name:{singular:"Hectare",plural:"Hectares"},to_anchor:1e4},km2:{name:{singular:"Square Kilometer",plural:"Square Kilometers"},to_anchor:1e6}},J={in2:{name:{singular:"Square Inch",plural:"Square Inches"},to_anchor:1/144},yd2:{name:{singular:"Square Yard",plural:"Square Yards"},to_anchor:9},ft2:{name:{singular:"Square Foot",plural:"Square Feet"},to_anchor:1},ac:{name:{singular:"Acre",plural:"Acres"},to_anchor:43560},mi2:{name:{singular:"Square Mile",plural:"Square Miles"},to_anchor:27878400}},area$1={metric:ua,imperial:J,_anchors:{metric:{unit:"m2",ratio:10.7639},imperial:{unit:"ft2",ratio:1/10.7639}}},area$1}var mass,hasRequiredMass;function requireMass(){if(hasRequiredMass)return mass;hasRequiredMass=1;var ua,J;return ua={mcg:{name:{singular:"Microgram",plural:"Micrograms"},to_anchor:1/1e6},mg:{name:{singular:"Milligram",plural:"Milligrams"},to_anchor:1/1e3},g:{name:{singular:"Gram",plural:"Grams"},to_anchor:1},kg:{name:{singular:"Kilogram",plural:"Kilograms"},to_anchor:1e3},mt:{name:{singular:"Metric Tonne",plural:"Metric Tonnes"},to_anchor:1e6}},J={oz:{name:{singular:"Ounce",plural:"Ounces"},to_anchor:1/16},lb:{name:{singular:"Pound",plural:"Pounds"},to_anchor:1},t:{name:{singular:"Ton",plural:"Tons"},to_anchor:2e3}},mass={metric:ua,imperial:J,_anchors:{metric:{unit:"g",ratio:1/453.592},imperial:{unit:"lb",ratio:453.592}}},mass}var volume,hasRequiredVolume;function requireVolume(){if(hasRequiredVolume)return volume;hasRequiredVolume=1;var ua,J;return ua={mm3:{name:{singular:"Cubic Millimeter",plural:"Cubic Millimeters"},to_anchor:1/1e6},cm3:{name:{singular:"Cubic Centimeter",plural:"Cubic Centimeters"},to_anchor:1/1e3},ml:{name:{singular:"Millilitre",plural:"Millilitres"},to_anchor:1/1e3},cl:{name:{singular:"Centilitre",plural:"Centilitres"},to_anchor:1/100},dl:{name:{singular:"Decilitre",plural:"Decilitres"},to_anchor:1/10},l:{name:{singular:"Litre",plural:"Litres"},to_anchor:1},kl:{name:{singular:"Kilolitre",plural:"Kilolitres"},to_anchor:1e3},m3:{name:{singular:"Cubic meter",plural:"Cubic meters"},to_anchor:1e3},km3:{name:{singular:"Cubic kilometer",plural:"Cubic kilometers"},to_anchor:1e12},krm:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:1/1e3},tsk:{name:{singular:"Tesked",plural:"Teskedar"},to_anchor:5/1e3},msk:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:15/1e3},kkp:{name:{singular:"Kaffekopp",plural:"Kaffekoppar"},to_anchor:150/1e3},glas:{name:{singular:"Glas",plural:"Glas"},to_anchor:200/1e3},kanna:{name:{singular:"Kanna",plural:"Kannor"},to_anchor:2.617}},J={tsp:{name:{singular:"Teaspoon",plural:"Teaspoons"},to_anchor:1/6},Tbs:{name:{singular:"Tablespoon",plural:"Tablespoons"},to_anchor:1/2},in3:{name:{singular:"Cubic inch",plural:"Cubic inches"},to_anchor:.55411},"fl-oz":{name:{singular:"Fluid Ounce",plural:"Fluid Ounces"},to_anchor:1},cup:{name:{singular:"Cup",plural:"Cups"},to_anchor:8},pnt:{name:{singular:"Pint",plural:"Pints"},to_anchor:16},qt:{name:{singular:"Quart",plural:"Quarts"},to_anchor:32},gal:{name:{singular:"Gallon",plural:"Gallons"},to_anchor:128},ft3:{name:{singular:"Cubic foot",plural:"Cubic feet"},to_anchor:957.506},yd3:{name:{singular:"Cubic yard",plural:"Cubic yards"},to_anchor:25852.7}},volume={metric:ua,imperial:J,_anchors:{metric:{unit:"l",ratio:33.8140226},imperial:{unit:"fl-oz",ratio:1/33.8140226}}},volume}var each$1,hasRequiredEach;function requireEach(){if(hasRequiredEach)return each$1;hasRequiredEach=1;var ua;return ua={ea:{name:{singular:"Each",plural:"Each"},to_anchor:1},dz:{name:{singular:"Dozen",plural:"Dozens"},to_anchor:12}},each$1={metric:ua,imperial:{},_anchors:{metric:{unit:"ea",ratio:1}}},each$1}var temperature,hasRequiredTemperature;function requireTemperature(){if(hasRequiredTemperature)return temperature;hasRequiredTemperature=1;var ua,J;return ua={C:{name:{singular:"degree Celsius",plural:"degrees Celsius"},to_anchor:1,anchor_shift:0},K:{name:{singular:"degree Kelvin",plural:"degrees Kelvin"},to_anchor:1,anchor_shift:273.15}},J={F:{name:{singular:"degree Fahrenheit",plural:"degrees Fahrenheit"},to_anchor:1},R:{name:{singular:"degree Rankine",plural:"degrees Rankine"},to_anchor:1,anchor_shift:459.67}},temperature={metric:ua,imperial:J,_anchors:{metric:{unit:"C",transform:function(la){return la/(5/9)+32}},imperial:{unit:"F",transform:function(la){return(la-32)*(5/9)}}}},temperature}var time_1,hasRequiredTime;function requireTime(){if(hasRequiredTime)return time_1;hasRequiredTime=1;var ua,J=365.25;return ua={ns:{name:{singular:"Nanosecond",plural:"Nanoseconds"},to_anchor:1/1e9},mu:{name:{singular:"Microsecond",plural:"Microseconds"},to_anchor:1/1e6},ms:{name:{singular:"Millisecond",plural:"Milliseconds"},to_anchor:1/1e3},s:{name:{singular:"Second",plural:"Seconds"},to_anchor:1},min:{name:{singular:"Minute",plural:"Minutes"},to_anchor:60},h:{name:{singular:"Hour",plural:"Hours"},to_anchor:60*60},d:{name:{singular:"Day",plural:"Days"},to_anchor:60*60*24},week:{name:{singular:"Week",plural:"Weeks"},to_anchor:60*60*24*7},month:{name:{singular:"Month",plural:"Months"},to_anchor:60*60*24*J/12},year:{name:{singular:"Year",plural:"Years"},to_anchor:60*60*24*J}},time_1={metric:ua,_anchors:{metric:{unit:"s",ratio:1}}},time_1}var digital,hasRequiredDigital;function requireDigital(){if(hasRequiredDigital)return digital;hasRequiredDigital=1;var ua,J;return ua={b:{name:{singular:"Bit",plural:"Bits"},to_anchor:1},Kb:{name:{singular:"Kilobit",plural:"Kilobits"},to_anchor:1024},Mb:{name:{singular:"Megabit",plural:"Megabits"},to_anchor:1048576},Gb:{name:{singular:"Gigabit",plural:"Gigabits"},to_anchor:1073741824},Tb:{name:{singular:"Terabit",plural:"Terabits"},to_anchor:1099511627776}},J={B:{name:{singular:"Byte",plural:"Bytes"},to_anchor:1},KB:{name:{singular:"Kilobyte",plural:"Kilobytes"},to_anchor:1024},MB:{name:{singular:"Megabyte",plural:"Megabytes"},to_anchor:1048576},GB:{name:{singular:"Gigabyte",plural:"Gigabytes"},to_anchor:1073741824},TB:{name:{singular:"Terabyte",plural:"Terabytes"},to_anchor:1099511627776}},digital={bits:ua,bytes:J,_anchors:{bits:{unit:"b",ratio:1/8},bytes:{unit:"B",ratio:8}}},digital}var partsPer,hasRequiredPartsPer;function requirePartsPer(){if(hasRequiredPartsPer)return partsPer;hasRequiredPartsPer=1;var ua;return ua={ppm:{name:{singular:"Part-per Million",plural:"Parts-per Million"},to_anchor:1},ppb:{name:{singular:"Part-per Billion",plural:"Parts-per Billion"},to_anchor:.001},ppt:{name:{singular:"Part-per Trillion",plural:"Parts-per Trillion"},to_anchor:1e-6},ppq:{name:{singular:"Part-per Quadrillion",plural:"Parts-per Quadrillion"},to_anchor:1e-9}},partsPer={metric:ua,imperial:{},_anchors:{metric:{unit:"ppm",ratio:1e-6}}},partsPer}var speed,hasRequiredSpeed;function requireSpeed(){if(hasRequiredSpeed)return speed;hasRequiredSpeed=1;var ua,J;return ua={"m/s":{name:{singular:"Metre per second",plural:"Metres per second"},to_anchor:3.6},"km/h":{name:{singular:"Kilometre per hour",plural:"Kilometres per hour"},to_anchor:1}},J={"m/h":{name:{singular:"Mile per hour",plural:"Miles per hour"},to_anchor:1},knot:{name:{singular:"Knot",plural:"Knots"},to_anchor:1.150779},"ft/s":{name:{singular:"Foot per second",plural:"Feet per second"},to_anchor:.681818}},speed={metric:ua,imperial:J,_anchors:{metric:{unit:"km/h",ratio:1/1.609344},imperial:{unit:"m/h",ratio:1.609344}}},speed}var pace,hasRequiredPace;function requirePace(){if(hasRequiredPace)return pace;hasRequiredPace=1;var ua,J;return ua={"min/km":{name:{singular:"Minute per kilometre",plural:"Minutes per kilometre"},to_anchor:.06},"s/m":{name:{singular:"Second per metre",plural:"Seconds per metre"},to_anchor:1}},J={"min/mi":{name:{singular:"Minute per mile",plural:"Minutes per mile"},to_anchor:.0113636},"s/ft":{name:{singular:"Second per foot",plural:"Seconds per foot"},to_anchor:1}},pace={metric:ua,imperial:J,_anchors:{metric:{unit:"s/m",ratio:.3048},imperial:{unit:"s/ft",ratio:1/.3048}}},pace}var pressure,hasRequiredPressure;function requirePressure(){if(hasRequiredPressure)return pressure;hasRequiredPressure=1;var ua,J;return ua={Pa:{name:{singular:"pascal",plural:"pascals"},to_anchor:1/1e3},kPa:{name:{singular:"kilopascal",plural:"kilopascals"},to_anchor:1},MPa:{name:{singular:"megapascal",plural:"megapascals"},to_anchor:1e3},hPa:{name:{singular:"hectopascal",plural:"hectopascals"},to_anchor:1/10},bar:{name:{singular:"bar",plural:"bar"},to_anchor:100},torr:{name:{singular:"torr",plural:"torr"},to_anchor:101325/76e4}},J={psi:{name:{singular:"pound per square inch",plural:"pounds per square inch"},to_anchor:1/1e3},ksi:{name:{singular:"kilopound per square inch",plural:"kilopound per square inch"},to_anchor:1}},pressure={metric:ua,imperial:J,_anchors:{metric:{unit:"kPa",ratio:.00014503768078},imperial:{unit:"psi",ratio:1/.00014503768078}}},pressure}var current_1,hasRequiredCurrent;function requireCurrent(){if(hasRequiredCurrent)return current_1;hasRequiredCurrent=1;var ua;return ua={A:{name:{singular:"Ampere",plural:"Amperes"},to_anchor:1},mA:{name:{singular:"Milliampere",plural:"Milliamperes"},to_anchor:.001},kA:{name:{singular:"Kiloampere",plural:"Kiloamperes"},to_anchor:1e3}},current_1={metric:ua,_anchors:{metric:{unit:"A",ratio:1}}},current_1}var voltage_1,hasRequiredVoltage;function requireVoltage(){if(hasRequiredVoltage)return voltage_1;hasRequiredVoltage=1;var ua;return ua={V:{name:{singular:"Volt",plural:"Volts"},to_anchor:1},mV:{name:{singular:"Millivolt",plural:"Millivolts"},to_anchor:.001},kV:{name:{singular:"Kilovolt",plural:"Kilovolts"},to_anchor:1e3}},voltage_1={metric:ua,_anchors:{metric:{unit:"V",ratio:1}}},voltage_1}var power_1,hasRequiredPower;function requirePower(){if(hasRequiredPower)return power_1;hasRequiredPower=1;var ua;return ua={W:{name:{singular:"Watt",plural:"Watts"},to_anchor:1},mW:{name:{singular:"Milliwatt",plural:"Milliwatts"},to_anchor:.001},kW:{name:{singular:"Kilowatt",plural:"Kilowatts"},to_anchor:1e3},MW:{name:{singular:"Megawatt",plural:"Megawatts"},to_anchor:1e6},GW:{name:{singular:"Gigawatt",plural:"Gigawatts"},to_anchor:1e9}},power_1={metric:ua,_anchors:{metric:{unit:"W",ratio:1}}},power_1}var reactivePower_1,hasRequiredReactivePower;function requireReactivePower(){if(hasRequiredReactivePower)return reactivePower_1;hasRequiredReactivePower=1;var ua;return ua={VAR:{name:{singular:"Volt-Ampere Reactive",plural:"Volt-Amperes Reactive"},to_anchor:1},mVAR:{name:{singular:"Millivolt-Ampere Reactive",plural:"Millivolt-Amperes Reactive"},to_anchor:.001},kVAR:{name:{singular:"Kilovolt-Ampere Reactive",plural:"Kilovolt-Amperes Reactive"},to_anchor:1e3},MVAR:{name:{singular:"Megavolt-Ampere Reactive",plural:"Megavolt-Amperes Reactive"},to_anchor:1e6},GVAR:{name:{singular:"Gigavolt-Ampere Reactive",plural:"Gigavolt-Amperes Reactive"},to_anchor:1e9}},reactivePower_1={metric:ua,_anchors:{metric:{unit:"VAR",ratio:1}}},reactivePower_1}var apparentPower_1,hasRequiredApparentPower;function requireApparentPower(){if(hasRequiredApparentPower)return apparentPower_1;hasRequiredApparentPower=1;var ua;return ua={VA:{name:{singular:"Volt-Ampere",plural:"Volt-Amperes"},to_anchor:1},mVA:{name:{singular:"Millivolt-Ampere",plural:"Millivolt-Amperes"},to_anchor:.001},kVA:{name:{singular:"Kilovolt-Ampere",plural:"Kilovolt-Amperes"},to_anchor:1e3},MVA:{name:{singular:"Megavolt-Ampere",plural:"Megavolt-Amperes"},to_anchor:1e6},GVA:{name:{singular:"Gigavolt-Ampere",plural:"Gigavolt-Amperes"},to_anchor:1e9}},apparentPower_1={metric:ua,_anchors:{metric:{unit:"VA",ratio:1}}},apparentPower_1}var energy_1,hasRequiredEnergy;function requireEnergy(){if(hasRequiredEnergy)return energy_1;hasRequiredEnergy=1;var ua;return ua={Wh:{name:{singular:"Watt-hour",plural:"Watt-hours"},to_anchor:3600},mWh:{name:{singular:"Milliwatt-hour",plural:"Milliwatt-hours"},to_anchor:3.6},kWh:{name:{singular:"Kilowatt-hour",plural:"Kilowatt-hours"},to_anchor:36e5},MWh:{name:{singular:"Megawatt-hour",plural:"Megawatt-hours"},to_anchor:36e8},GWh:{name:{singular:"Gigawatt-hour",plural:"Gigawatt-hours"},to_anchor:36e11},J:{name:{singular:"Joule",plural:"Joules"},to_anchor:1},kJ:{name:{singular:"Kilojoule",plural:"Kilojoules"},to_anchor:1e3}},energy_1={metric:ua,_anchors:{metric:{unit:"J",ratio:1}}},energy_1}var reactiveEnergy_1,hasRequiredReactiveEnergy;function requireReactiveEnergy(){if(hasRequiredReactiveEnergy)return reactiveEnergy_1;hasRequiredReactiveEnergy=1;var ua;return ua={VARh:{name:{singular:"Volt-Ampere Reactive Hour",plural:"Volt-Amperes Reactive Hour"},to_anchor:1},mVARh:{name:{singular:"Millivolt-Ampere Reactive Hour",plural:"Millivolt-Amperes Reactive Hour"},to_anchor:.001},kVARh:{name:{singular:"Kilovolt-Ampere Reactive Hour",plural:"Kilovolt-Amperes Reactive Hour"},to_anchor:1e3},MVARh:{name:{singular:"Megavolt-Ampere Reactive Hour",plural:"Megavolt-Amperes Reactive Hour"},to_anchor:1e6},GVARh:{name:{singular:"Gigavolt-Ampere Reactive Hour",plural:"Gigavolt-Amperes Reactive Hour"},to_anchor:1e9}},reactiveEnergy_1={metric:ua,_anchors:{metric:{unit:"VARh",ratio:1}}},reactiveEnergy_1}var volumeFlowRate,hasRequiredVolumeFlowRate;function requireVolumeFlowRate(){if(hasRequiredVolumeFlowRate)return volumeFlowRate;hasRequiredVolumeFlowRate=1;var ua,J;return ua={"mm3/s":{name:{singular:"Cubic Millimeter per second",plural:"Cubic Millimeters per second"},to_anchor:1/1e6},"cm3/s":{name:{singular:"Cubic Centimeter per second",plural:"Cubic Centimeters per second"},to_anchor:1/1e3},"ml/s":{name:{singular:"Millilitre per second",plural:"Millilitres per second"},to_anchor:1/1e3},"cl/s":{name:{singular:"Centilitre per second",plural:"Centilitres per second"},to_anchor:1/100},"dl/s":{name:{singular:"Decilitre per second",plural:"Decilitres per second"},to_anchor:1/10},"l/s":{name:{singular:"Litre per second",plural:"Litres per second"},to_anchor:1},"l/min":{name:{singular:"Litre per minute",plural:"Litres per minute"},to_anchor:1/60},"l/h":{name:{singular:"Litre per hour",plural:"Litres per hour"},to_anchor:1/3600},"kl/s":{name:{singular:"Kilolitre per second",plural:"Kilolitres per second"},to_anchor:1e3},"kl/min":{name:{singular:"Kilolitre per minute",plural:"Kilolitres per minute"},to_anchor:50/3},"kl/h":{name:{singular:"Kilolitre per hour",plural:"Kilolitres per hour"},to_anchor:5/18},"m3/s":{name:{singular:"Cubic meter per second",plural:"Cubic meters per second"},to_anchor:1e3},"m3/min":{name:{singular:"Cubic meter per minute",plural:"Cubic meters per minute"},to_anchor:50/3},"m3/h":{name:{singular:"Cubic meter per hour",plural:"Cubic meters per hour"},to_anchor:5/18},"km3/s":{name:{singular:"Cubic kilometer per second",plural:"Cubic kilometers per second"},to_anchor:1e12}},J={"tsp/s":{name:{singular:"Teaspoon per second",plural:"Teaspoons per second"},to_anchor:1/6},"Tbs/s":{name:{singular:"Tablespoon per second",plural:"Tablespoons per second"},to_anchor:1/2},"in3/s":{name:{singular:"Cubic inch per second",plural:"Cubic inches per second"},to_anchor:.55411},"in3/min":{name:{singular:"Cubic inch per minute",plural:"Cubic inches per minute"},to_anchor:.55411/60},"in3/h":{name:{singular:"Cubic inch per hour",plural:"Cubic inches per hour"},to_anchor:.55411/3600},"fl-oz/s":{name:{singular:"Fluid Ounce per second",plural:"Fluid Ounces per second"},to_anchor:1},"fl-oz/min":{name:{singular:"Fluid Ounce per minute",plural:"Fluid Ounces per minute"},to_anchor:1/60},"fl-oz/h":{name:{singular:"Fluid Ounce per hour",plural:"Fluid Ounces per hour"},to_anchor:1/3600},"cup/s":{name:{singular:"Cup per second",plural:"Cups per second"},to_anchor:8},"pnt/s":{name:{singular:"Pint per second",plural:"Pints per second"},to_anchor:16},"pnt/min":{name:{singular:"Pint per minute",plural:"Pints per minute"},to_anchor:4/15},"pnt/h":{name:{singular:"Pint per hour",plural:"Pints per hour"},to_anchor:1/225},"qt/s":{name:{singular:"Quart per second",plural:"Quarts per second"},to_anchor:32},"gal/s":{name:{singular:"Gallon per second",plural:"Gallons per second"},to_anchor:128},"gal/min":{name:{singular:"Gallon per minute",plural:"Gallons per minute"},to_anchor:32/15},"gal/h":{name:{singular:"Gallon per hour",plural:"Gallons per hour"},to_anchor:8/225},"ft3/s":{name:{singular:"Cubic foot per second",plural:"Cubic feet per second"},to_anchor:957.506},"ft3/min":{name:{singular:"Cubic foot per minute",plural:"Cubic feet per minute"},to_anchor:957.506/60},"ft3/h":{name:{singular:"Cubic foot per hour",plural:"Cubic feet per hour"},to_anchor:957.506/3600},"yd3/s":{name:{singular:"Cubic yard per second",plural:"Cubic yards per second"},to_anchor:25852.7},"yd3/min":{name:{singular:"Cubic yard per minute",plural:"Cubic yards per minute"},to_anchor:25852.7/60},"yd3/h":{name:{singular:"Cubic yard per hour",plural:"Cubic yards per hour"},to_anchor:25852.7/3600}},volumeFlowRate={metric:ua,imperial:J,_anchors:{metric:{unit:"l/s",ratio:33.8140227},imperial:{unit:"fl-oz/s",ratio:1/33.8140227}}},volumeFlowRate}var illuminance,hasRequiredIlluminance;function requireIlluminance(){if(hasRequiredIlluminance)return illuminance;hasRequiredIlluminance=1;var ua,J;return ua={lx:{name:{singular:"Lux",plural:"Lux"},to_anchor:1}},J={"ft-cd":{name:{singular:"Foot-candle",plural:"Foot-candles"},to_anchor:1}},illuminance={metric:ua,imperial:J,_anchors:{metric:{unit:"lx",ratio:1/10.76391},imperial:{unit:"ft-cd",ratio:10.76391}}},illuminance}var frequency_1,hasRequiredFrequency;function requireFrequency(){if(hasRequiredFrequency)return frequency_1;hasRequiredFrequency=1;var ua;return ua={mHz:{name:{singular:"millihertz",plural:"millihertz"},to_anchor:1/1e3},Hz:{name:{singular:"hertz",plural:"hertz"},to_anchor:1},kHz:{name:{singular:"kilohertz",plural:"kilohertz"},to_anchor:1e3},MHz:{name:{singular:"megahertz",plural:"megahertz"},to_anchor:1e3*1e3},GHz:{name:{singular:"gigahertz",plural:"gigahertz"},to_anchor:1e3*1e3*1e3},THz:{name:{singular:"terahertz",plural:"terahertz"},to_anchor:1e3*1e3*1e3*1e3},rpm:{name:{singular:"rotation per minute",plural:"rotations per minute"},to_anchor:1/60},"deg/s":{name:{singular:"degree per second",plural:"degrees per second"},to_anchor:1/360},"rad/s":{name:{singular:"radian per second",plural:"radians per second"},to_anchor:1/(Math.PI*2)}},frequency_1={metric:ua,_anchors:{frequency:{unit:"hz",ratio:1}}},frequency_1}var angle_1$1,hasRequiredAngle$2;function requireAngle$2(){if(hasRequiredAngle$2)return angle_1$1;hasRequiredAngle$2=1;var ua;return ua={rad:{name:{singular:"radian",plural:"radians"},to_anchor:180/Math.PI},deg:{name:{singular:"degree",plural:"degrees"},to_anchor:1},grad:{name:{singular:"gradian",plural:"gradians"},to_anchor:9/10},arcmin:{name:{singular:"arcminute",plural:"arcminutes"},to_anchor:1/60},arcsec:{name:{singular:"arcsecond",plural:"arcseconds"},to_anchor:1/3600}},angle_1$1={metric:ua,_anchors:{metric:{unit:"deg",ratio:1}}},angle_1$1}var lib$1,hasRequiredLib$1;function requireLib$1(){if(hasRequiredLib$1)return lib$1;hasRequiredLib$1=1;var ua,J=requireLodash_keys(),la=requireLodash_foreach(),xa={length:requireLength$3(),area:requireArea$1(),mass:requireMass(),volume:requireVolume(),each:requireEach(),temperature:requireTemperature(),time:requireTime(),digital:requireDigital(),partsPer:requirePartsPer(),speed:requireSpeed(),pace:requirePace(),pressure:requirePressure(),current:requireCurrent(),voltage:requireVoltage(),power:requirePower(),reactivePower:requireReactivePower(),apparentPower:requireApparentPower(),energy:requireEnergy(),reactiveEnergy:requireReactiveEnergy(),volumeFlowRate:requireVolumeFlowRate(),illuminance:requireIlluminance(),frequency:requireFrequency(),angle:requireAngle$2()},Aa;Aa=function(Sa,Ma){Ma?this.val=Sa/Ma:this.val=Sa},Aa.prototype.from=function(Sa){if(this.destination)throw new Error(".from must be called before .to");return this.origin=this.getUnit(Sa),this.origin||this.throwUnsupportedUnitError(Sa),this},Aa.prototype.to=function(Sa){if(!this.origin)throw new Error(".to must be called after .from");this.destination=this.getUnit(Sa);var Ma,Ra;if(this.destination||this.throwUnsupportedUnitError(Sa),this.origin.abbr===this.destination.abbr)return this.val;if(this.destination.measure!=this.origin.measure)throw new Error("Cannot convert incompatible measures of "+this.destination.measure+" and "+this.origin.measure);return Ma=this.val*this.origin.unit.to_anchor,this.origin.unit.anchor_shift&&(Ma-=this.origin.unit.anchor_shift),this.origin.system!=this.destination.system&&(Ra=xa[this.origin.measure]._anchors[this.origin.system].transform,typeof Ra=="function"?Ma=Ra(Ma):Ma*=xa[this.origin.measure]._anchors[this.origin.system].ratio),this.destination.unit.anchor_shift&&(Ma+=this.destination.unit.anchor_shift),Ma/this.destination.unit.to_anchor},Aa.prototype.toBest=function(Ma){if(!this.origin)throw new Error(".toBest must be called after .from");var Ma=Object.assign({exclude:[],cutOffNumber:1},Ma),Ra;return la(this.possibilities(),(function(Ia){var La=this.describe(Ia),Fa=Ma.exclude.indexOf(Ia)===-1;if(Fa&&La.system===this.origin.system){var ka=this.to(Ia);(!Ra||ka>=Ma.cutOffNumber&&ka<Ra.val)&&(Ra={val:ka,unit:Ia,singular:La.singular,plural:La.plural})}}).bind(this)),Ra},Aa.prototype.getUnit=function(Sa){var Ma;return la(xa,function(Ra,Ia){if(la(Ra,function(La,Fa){if(Fa=="_anchors"||(la(La,function(ka,el){if(el==Sa)return Ma={abbr:Sa,measure:Ia,system:Fa,unit:ka},!1}),Ma))return!1}),Ma)return!1}),Ma};var ba=function(Sa){return{abbr:Sa.abbr,measure:Sa.measure,system:Sa.system,singular:Sa.unit.name.singular,plural:Sa.unit.name.plural}};return Aa.prototype.describe=function(Sa){var Ma=Aa.prototype.getUnit(Sa),Ra=null;try{Ra=ba(Ma)}catch{this.throwUnsupportedUnitError(Sa)}return Ra},Aa.prototype.list=function(Sa){var Ma=[];return la(xa,function(Ra,Ia){Sa&&Sa!==Ia||la(Ra,function(La,Fa){if(Fa=="_anchors")return!1;la(La,function(ka,el){Ma=Ma.concat(ba({abbr:el,measure:Ia,system:Fa,unit:ka}))})})}),Ma},Aa.prototype.throwUnsupportedUnitError=function(Sa){var Ma=[];throw la(xa,function(Ra,Ia){la(Ra,function(La,Fa){if(Fa=="_anchors")return!1;Ma=Ma.concat(J(La))})}),new Error("Unsupported unit "+Sa+", use one of: "+Ma.join(", "))},Aa.prototype.possibilities=function(Sa){var Ma=[];return!this.origin&&!Sa?la(J(xa),function(Ra){la(xa[Ra],function(Ia,La){if(La=="_anchors")return!1;Ma=Ma.concat(J(Ia))})}):(Sa=Sa||this.origin.measure,la(xa[Sa],function(Ra,Ia){if(Ia=="_anchors")return!1;Ma=Ma.concat(J(Ra))})),Ma},Aa.prototype.measures=function(){return J(xa)},ua=function(Sa){return new Aa(Sa)},lib$1=ua,lib$1}var lib={},external={},errors={},en$1={},util$1={},hasRequiredUtil;function requireUtil(){return hasRequiredUtil||(hasRequiredUtil=1,function(ua){Object.defineProperty(ua,"__esModule",{value:!0}),ua.getParsedType=ua.ZodParsedType=ua.objectUtil=ua.util=void 0;var J;(function(xa){xa.assertEqual=Ma=>Ma;function Aa(Ma){}xa.assertIs=Aa;function ba(Ma){throw new Error}xa.assertNever=ba,xa.arrayToEnum=Ma=>{const Ra={};for(const Ia of Ma)Ra[Ia]=Ia;return Ra},xa.getValidEnumValues=Ma=>{const Ra=xa.objectKeys(Ma).filter(La=>typeof Ma[Ma[La]]!="number"),Ia={};for(const La of Ra)Ia[La]=Ma[La];return xa.objectValues(Ia)},xa.objectValues=Ma=>xa.objectKeys(Ma).map(function(Ra){return Ma[Ra]}),xa.objectKeys=typeof Object.keys=="function"?Ma=>Object.keys(Ma):Ma=>{const Ra=[];for(const Ia in Ma)Object.prototype.hasOwnProperty.call(Ma,Ia)&&Ra.push(Ia);return Ra},xa.find=(Ma,Ra)=>{for(const Ia of Ma)if(Ra(Ia))return Ia},xa.isInteger=typeof Number.isInteger=="function"?Ma=>Number.isInteger(Ma):Ma=>typeof Ma=="number"&&isFinite(Ma)&&Math.floor(Ma)===Ma;function Sa(Ma,Ra=" | "){return Ma.map(Ia=>typeof Ia=="string"?`'${Ia}'`:Ia).join(Ra)}xa.joinValues=Sa,xa.jsonStringifyReplacer=(Ma,Ra)=>typeof Ra=="bigint"?Ra.toString():Ra})(J=ua.util||(ua.util={})),function(xa){xa.mergeShapes=(Aa,ba)=>({...Aa,...ba})}(ua.objectUtil||(ua.objectUtil={})),ua.ZodParsedType=J.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);const la=xa=>{switch(typeof xa){case"undefined":return ua.ZodParsedType.undefined;case"string":return ua.ZodParsedType.string;case"number":return isNaN(xa)?ua.ZodParsedType.nan:ua.ZodParsedType.number;case"boolean":return ua.ZodParsedType.boolean;case"function":return ua.ZodParsedType.function;case"bigint":return ua.ZodParsedType.bigint;case"symbol":return ua.ZodParsedType.symbol;case"object":return Array.isArray(xa)?ua.ZodParsedType.array:xa===null?ua.ZodParsedType.null:xa.then&&typeof xa.then=="function"&&xa.catch&&typeof xa.catch=="function"?ua.ZodParsedType.promise:typeof Map<"u"&&xa instanceof Map?ua.ZodParsedType.map:typeof Set<"u"&&xa instanceof Set?ua.ZodParsedType.set:typeof Date<"u"&&xa instanceof Date?ua.ZodParsedType.date:ua.ZodParsedType.object;default:return ua.ZodParsedType.unknown}};ua.getParsedType=la}(util$1)),util$1}var ZodError$1={},hasRequiredZodError;function requireZodError(){if(hasRequiredZodError)return ZodError$1;hasRequiredZodError=1,Object.defineProperty(ZodError$1,"__esModule",{value:!0}),ZodError$1.ZodError=ZodError$1.quotelessJson=ZodError$1.ZodIssueCode=void 0;const ua=requireUtil();ZodError$1.ZodIssueCode=ua.util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);const J=xa=>JSON.stringify(xa,null,2).replace(/"([^"]+)":/g,"$1:");ZodError$1.quotelessJson=J;class la extends Error{constructor(Aa){super(),this.issues=[],this.addIssue=Sa=>{this.issues=[...this.issues,Sa]},this.addIssues=(Sa=[])=>{this.issues=[...this.issues,...Sa]};const ba=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,ba):this.__proto__=ba,this.name="ZodError",this.issues=Aa}get errors(){return this.issues}format(Aa){const ba=Aa||function(Ra){return Ra.message},Sa={_errors:[]},Ma=Ra=>{for(const Ia of Ra.issues)if(Ia.code==="invalid_union")Ia.unionErrors.map(Ma);else if(Ia.code==="invalid_return_type")Ma(Ia.returnTypeError);else if(Ia.code==="invalid_arguments")Ma(Ia.argumentsError);else if(Ia.path.length===0)Sa._errors.push(ba(Ia));else{let La=Sa,Fa=0;for(;Fa<Ia.path.length;){const ka=Ia.path[Fa];Fa===Ia.path.length-1?(La[ka]=La[ka]||{_errors:[]},La[ka]._errors.push(ba(Ia))):La[ka]=La[ka]||{_errors:[]},La=La[ka],Fa++}}};return Ma(this),Sa}static assert(Aa){if(!(Aa instanceof la))throw new Error(`Not a ZodError: ${Aa}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ua.util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(Aa=ba=>ba.message){const ba={},Sa=[];for(const Ma of this.issues)Ma.path.length>0?(ba[Ma.path[0]]=ba[Ma.path[0]]||[],ba[Ma.path[0]].push(Aa(Ma))):Sa.push(Aa(Ma));return{formErrors:Sa,fieldErrors:ba}}get formErrors(){return this.flatten()}}return ZodError$1.ZodError=la,la.create=xa=>new la(xa),ZodError$1}var hasRequiredEn;function requireEn(){if(hasRequiredEn)return en$1;hasRequiredEn=1,Object.defineProperty(en$1,"__esModule",{value:!0});const ua=requireUtil(),J=requireZodError(),la=(xa,Aa)=>{let ba;switch(xa.code){case J.ZodIssueCode.invalid_type:xa.received===ua.ZodParsedType.undefined?ba="Required":ba=`Expected ${xa.expected}, received ${xa.received}`;break;case J.ZodIssueCode.invalid_literal:ba=`Invalid literal value, expected ${JSON.stringify(xa.expected,ua.util.jsonStringifyReplacer)}`;break;case J.ZodIssueCode.unrecognized_keys:ba=`Unrecognized key(s) in object: ${ua.util.joinValues(xa.keys,", ")}`;break;case J.ZodIssueCode.invalid_union:ba="Invalid input";break;case J.ZodIssueCode.invalid_union_discriminator:ba=`Invalid discriminator value. Expected ${ua.util.joinValues(xa.options)}`;break;case J.ZodIssueCode.invalid_enum_value:ba=`Invalid enum value. Expected ${ua.util.joinValues(xa.options)}, received '${xa.received}'`;break;case J.ZodIssueCode.invalid_arguments:ba="Invalid function arguments";break;case J.ZodIssueCode.invalid_return_type:ba="Invalid function return type";break;case J.ZodIssueCode.invalid_date:ba="Invalid date";break;case J.ZodIssueCode.invalid_string:typeof xa.validation=="object"?"includes"in xa.validation?(ba=`Invalid input: must include "${xa.validation.includes}"`,typeof xa.validation.position=="number"&&(ba=`${ba} at one or more positions greater than or equal to ${xa.validation.position}`)):"startsWith"in xa.validation?ba=`Invalid input: must start with "${xa.validation.startsWith}"`:"endsWith"in xa.validation?ba=`Invalid input: must end with "${xa.validation.endsWith}"`:ua.util.assertNever(xa.validation):xa.validation!=="regex"?ba=`Invalid ${xa.validation}`:ba="Invalid";break;case J.ZodIssueCode.too_small:xa.type==="array"?ba=`Array must contain ${xa.exact?"exactly":xa.inclusive?"at least":"more than"} ${xa.minimum} element(s)`:xa.type==="string"?ba=`String must contain ${xa.exact?"exactly":xa.inclusive?"at least":"over"} ${xa.minimum} character(s)`:xa.type==="number"?ba=`Number must be ${xa.exact?"exactly equal to ":xa.inclusive?"greater than or equal to ":"greater than "}${xa.minimum}`:xa.type==="date"?ba=`Date must be ${xa.exact?"exactly equal to ":xa.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(xa.minimum))}`:ba="Invalid input";break;case J.ZodIssueCode.too_big:xa.type==="array"?ba=`Array must contain ${xa.exact?"exactly":xa.inclusive?"at most":"less than"} ${xa.maximum} element(s)`:xa.type==="string"?ba=`String must contain ${xa.exact?"exactly":xa.inclusive?"at most":"under"} ${xa.maximum} character(s)`:xa.type==="number"?ba=`Number must be ${xa.exact?"exactly":xa.inclusive?"less than or equal to":"less than"} ${xa.maximum}`:xa.type==="bigint"?ba=`BigInt must be ${xa.exact?"exactly":xa.inclusive?"less than or equal to":"less than"} ${xa.maximum}`:xa.type==="date"?ba=`Date must be ${xa.exact?"exactly":xa.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(xa.maximum))}`:ba="Invalid input";break;case J.ZodIssueCode.custom:ba="Invalid input";break;case J.ZodIssueCode.invalid_intersection_types:ba="Intersection results could not be merged";break;case J.ZodIssueCode.not_multiple_of:ba=`Number must be a multiple of ${xa.multipleOf}`;break;case J.ZodIssueCode.not_finite:ba="Number must be finite";break;default:ba=Aa.defaultError,ua.util.assertNever(xa)}return{message:ba}};return en$1.default=la,en$1}var hasRequiredErrors;function requireErrors(){if(hasRequiredErrors)return errors;hasRequiredErrors=1;var ua=errors&&errors.__importDefault||function(ba){return ba&&ba.__esModule?ba:{default:ba}};Object.defineProperty(errors,"__esModule",{value:!0}),errors.getErrorMap=errors.setErrorMap=errors.defaultErrorMap=void 0;const J=ua(requireEn());errors.defaultErrorMap=J.default;let la=J.default;function xa(ba){la=ba}errors.setErrorMap=xa;function Aa(){return la}return errors.getErrorMap=Aa,errors}var parseUtil={},hasRequiredParseUtil;function requireParseUtil(){return hasRequiredParseUtil||(hasRequiredParseUtil=1,function(ua){var J=parseUtil&&parseUtil.__importDefault||function(el){return el&&el.__esModule?el:{default:el}};Object.defineProperty(ua,"__esModule",{value:!0}),ua.isAsync=ua.isValid=ua.isDirty=ua.isAborted=ua.OK=ua.DIRTY=ua.INVALID=ua.ParseStatus=ua.addIssueToContext=ua.EMPTY_PATH=ua.makeIssue=void 0;const la=requireErrors(),xa=J(requireEn()),Aa=el=>{const{data:tl,path:rl,errorMaps:il,issueData:nl}=el,sl=[...rl,...nl.path||[]],ll={...nl,path:sl};if(nl.message!==void 0)return{...nl,path:sl,message:nl.message};let dl="";const gl=il.filter(_l=>!!_l).slice().reverse();for(const _l of gl)dl=_l(ll,{data:tl,defaultError:dl}).message;return{...nl,path:sl,message:dl}};ua.makeIssue=Aa,ua.EMPTY_PATH=[];function ba(el,tl){const rl=(0,la.getErrorMap)(),il=(0,ua.makeIssue)({issueData:tl,data:el.data,path:el.path,errorMaps:[el.common.contextualErrorMap,el.schemaErrorMap,rl,rl===xa.default?void 0:xa.default].filter(nl=>!!nl)});el.common.issues.push(il)}ua.addIssueToContext=ba;class Sa{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(tl,rl){const il=[];for(const nl of rl){if(nl.status==="aborted")return ua.INVALID;nl.status==="dirty"&&tl.dirty(),il.push(nl.value)}return{status:tl.value,value:il}}static async mergeObjectAsync(tl,rl){const il=[];for(const nl of rl){const sl=await nl.key,ll=await nl.value;il.push({key:sl,value:ll})}return Sa.mergeObjectSync(tl,il)}static mergeObjectSync(tl,rl){const il={};for(const nl of rl){const{key:sl,value:ll}=nl;if(sl.status==="aborted"||ll.status==="aborted")return ua.INVALID;sl.status==="dirty"&&tl.dirty(),ll.status==="dirty"&&tl.dirty(),sl.value!=="__proto__"&&(typeof ll.value<"u"||nl.alwaysSet)&&(il[sl.value]=ll.value)}return{status:tl.value,value:il}}}ua.ParseStatus=Sa,ua.INVALID=Object.freeze({status:"aborted"});const Ma=el=>({status:"dirty",value:el});ua.DIRTY=Ma;const Ra=el=>({status:"valid",value:el});ua.OK=Ra;const Ia=el=>el.status==="aborted";ua.isAborted=Ia;const La=el=>el.status==="dirty";ua.isDirty=La;const Fa=el=>el.status==="valid";ua.isValid=Fa;const ka=el=>typeof Promise<"u"&&el instanceof Promise;ua.isAsync=ka}(parseUtil)),parseUtil}var typeAliases={},hasRequiredTypeAliases;function requireTypeAliases(){return hasRequiredTypeAliases||(hasRequiredTypeAliases=1,Object.defineProperty(typeAliases,"__esModule",{value:!0})),typeAliases}var types$1={},errorUtil$1={},hasRequiredErrorUtil;function requireErrorUtil(){return hasRequiredErrorUtil||(hasRequiredErrorUtil=1,function(ua){Object.defineProperty(ua,"__esModule",{value:!0}),ua.errorUtil=void 0,function(J){J.errToObj=la=>typeof la=="string"?{message:la}:la||{},J.toString=la=>typeof la=="string"?la:la==null?void 0:la.message}(ua.errorUtil||(ua.errorUtil={}))}(errorUtil$1)),errorUtil$1}var hasRequiredTypes;function requireTypes(){return hasRequiredTypes||(hasRequiredTypes=1,function(ua){var J=types$1&&types$1.__classPrivateFieldGet||function(nd,Su,Ju,y0){if(Ju==="a"&&!y0)throw new TypeError("Private accessor was defined without a getter");if(typeof Su=="function"?nd!==Su||!y0:!Su.has(nd))throw new TypeError("Cannot read private member from an object whose class did not declare it");return Ju==="m"?y0:Ju==="a"?y0.call(nd):y0?y0.value:Su.get(nd)},la=types$1&&types$1.__classPrivateFieldSet||function(nd,Su,Ju,y0,j0){if(y0==="m")throw new TypeError("Private method is not writable");if(y0==="a"&&!j0)throw new TypeError("Private accessor was defined without a setter");if(typeof Su=="function"?nd!==Su||!j0:!Su.has(nd))throw new TypeError("Cannot write private member to an object whose class did not declare it");return y0==="a"?j0.call(nd,Ju):j0?j0.value=Ju:Su.set(nd,Ju),Ju},xa,Aa;Object.defineProperty(ua,"__esModule",{value:!0}),ua.boolean=ua.bigint=ua.array=ua.any=ua.coerce=ua.ZodFirstPartyTypeKind=ua.late=ua.ZodSchema=ua.Schema=ua.custom=ua.ZodReadonly=ua.ZodPipeline=ua.ZodBranded=ua.BRAND=ua.ZodNaN=ua.ZodCatch=ua.ZodDefault=ua.ZodNullable=ua.ZodOptional=ua.ZodTransformer=ua.ZodEffects=ua.ZodPromise=ua.ZodNativeEnum=ua.ZodEnum=ua.ZodLiteral=ua.ZodLazy=ua.ZodFunction=ua.ZodSet=ua.ZodMap=ua.ZodRecord=ua.ZodTuple=ua.ZodIntersection=ua.ZodDiscriminatedUnion=ua.ZodUnion=ua.ZodObject=ua.ZodArray=ua.ZodVoid=ua.ZodNever=ua.ZodUnknown=ua.ZodAny=ua.ZodNull=ua.ZodUndefined=ua.ZodSymbol=ua.ZodDate=ua.ZodBoolean=ua.ZodBigInt=ua.ZodNumber=ua.ZodString=ua.datetimeRegex=ua.ZodType=void 0,ua.NEVER=ua.void=ua.unknown=ua.union=ua.undefined=ua.tuple=ua.transformer=ua.symbol=ua.string=ua.strictObject=ua.set=ua.record=ua.promise=ua.preprocess=ua.pipeline=ua.ostring=ua.optional=ua.onumber=ua.oboolean=ua.object=ua.number=ua.nullable=ua.null=ua.never=ua.nativeEnum=ua.nan=ua.map=ua.literal=ua.lazy=ua.intersection=ua.instanceof=ua.function=ua.enum=ua.effect=ua.discriminatedUnion=ua.date=void 0;const ba=requireErrors(),Sa=requireErrorUtil(),Ma=requireParseUtil(),Ra=requireUtil(),Ia=requireZodError();class La{constructor(Su,Ju,y0,j0){this._cachedPath=[],this.parent=Su,this.data=Ju,this._path=y0,this._key=j0}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const Fa=(nd,Su)=>{if((0,Ma.isValid)(Su))return{success:!0,data:Su.value};if(!nd.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const Ju=new Ia.ZodError(nd.common.issues);return this._error=Ju,this._error}}};function ka(nd){if(!nd)return{};const{errorMap:Su,invalid_type_error:Ju,required_error:y0,description:j0}=nd;if(Su&&(Ju||y0))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return Su?{errorMap:Su,description:j0}:{errorMap:(qd,df)=>{var Ad,q0;const{message:Bd}=nd;return qd.code==="invalid_enum_value"?{message:Bd??df.defaultError}:typeof df.data>"u"?{message:(Ad=Bd??y0)!==null&&Ad!==void 0?Ad:df.defaultError}:qd.code!=="invalid_type"?{message:df.defaultError}:{message:(q0=Bd??Ju)!==null&&q0!==void 0?q0:df.defaultError}},description:j0}}class el{constructor(Su){this.spa=this.safeParseAsync,this._def=Su,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(Su){return(0,Ra.getParsedType)(Su.data)}_getOrReturnCtx(Su,Ju){return Ju||{common:Su.parent.common,data:Su.data,parsedType:(0,Ra.getParsedType)(Su.data),schemaErrorMap:this._def.errorMap,path:Su.path,parent:Su.parent}}_processInputParams(Su){return{status:new Ma.ParseStatus,ctx:{common:Su.parent.common,data:Su.data,parsedType:(0,Ra.getParsedType)(Su.data),schemaErrorMap:this._def.errorMap,path:Su.path,parent:Su.parent}}}_parseSync(Su){const Ju=this._parse(Su);if((0,Ma.isAsync)(Ju))throw new Error("Synchronous parse encountered promise.");return Ju}_parseAsync(Su){const Ju=this._parse(Su);return Promise.resolve(Ju)}parse(Su,Ju){const y0=this.safeParse(Su,Ju);if(y0.success)return y0.data;throw y0.error}safeParse(Su,Ju){var y0;const j0={common:{issues:[],async:(y0=Ju==null?void 0:Ju.async)!==null&&y0!==void 0?y0:!1,contextualErrorMap:Ju==null?void 0:Ju.errorMap},path:(Ju==null?void 0:Ju.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:Su,parsedType:(0,Ra.getParsedType)(Su)},hd=this._parseSync({data:Su,path:j0.path,parent:j0});return Fa(j0,hd)}async parseAsync(Su,Ju){const y0=await this.safeParseAsync(Su,Ju);if(y0.success)return y0.data;throw y0.error}async safeParseAsync(Su,Ju){const y0={common:{issues:[],contextualErrorMap:Ju==null?void 0:Ju.errorMap,async:!0},path:(Ju==null?void 0:Ju.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:Su,parsedType:(0,Ra.getParsedType)(Su)},j0=this._parse({data:Su,path:y0.path,parent:y0}),hd=await((0,Ma.isAsync)(j0)?j0:Promise.resolve(j0));return Fa(y0,hd)}refine(Su,Ju){const y0=j0=>typeof Ju=="string"||typeof Ju>"u"?{message:Ju}:typeof Ju=="function"?Ju(j0):Ju;return this._refinement((j0,hd)=>{const qd=Su(j0),df=()=>hd.addIssue({code:Ia.ZodIssueCode.custom,...y0(j0)});return typeof Promise<"u"&&qd instanceof Promise?qd.then(Ad=>Ad?!0:(df(),!1)):qd?!0:(df(),!1)})}refinement(Su,Ju){return this._refinement((y0,j0)=>Su(y0)?!0:(j0.addIssue(typeof Ju=="function"?Ju(y0,j0):Ju),!1))}_refinement(Su){return new Du({schema:this,typeName:ou.ZodEffects,effect:{type:"refinement",refinement:Su}})}superRefine(Su){return this._refinement(Su)}optional(){return f0.create(this,this._def)}nullable(){return Ru.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Bc.create(this,this._def)}promise(){return ku.create(this,this._def)}or(Su){return kc.create([this,Su],this._def)}and(Su){return wu.create(this,Su,this._def)}transform(Su){return new Du({...ka(this._def),schema:this,typeName:ou.ZodEffects,effect:{type:"transform",transform:Su}})}default(Su){const Ju=typeof Su=="function"?Su:()=>Su;return new Wc({...ka(this._def),innerType:this,defaultValue:Ju,typeName:ou.ZodDefault})}brand(){return new vu({typeName:ou.ZodBranded,type:this,...ka(this._def)})}catch(Su){const Ju=typeof Su=="function"?Su:()=>Su;return new bu({...ka(this._def),innerType:this,catchValue:Ju,typeName:ou.ZodCatch})}describe(Su){const Ju=this.constructor;return new Ju({...this._def,description:Su})}pipe(Su){return n0.create(this,Su)}readonly(){return Yu.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}ua.ZodType=el,ua.Schema=el,ua.ZodSchema=el;const tl=/^c[^\s-]{8,}$/i,rl=/^[0-9a-z]+$/,il=/^[0-9A-HJKMNP-TV-Z]{26}$/,nl=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,sl=/^[a-z0-9_-]{21}$/i,ll=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,dl=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,gl="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let _l;const vl=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Cl=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,Ll=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Il="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Fl=new RegExp(`^${Il}$`);function Ol(nd){let Su="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return nd.precision?Su=`${Su}\\.\\d{${nd.precision}}`:nd.precision==null&&(Su=`${Su}(\\.\\d+)?`),Su}function ql(nd){return new RegExp(`^${Ol(nd)}$`)}function rc(nd){let Su=`${Il}T${Ol(nd)}`;const Ju=[];return Ju.push(nd.local?"Z?":"Z"),nd.offset&&Ju.push("([+-]\\d{2}:?\\d{2})"),Su=`${Su}(${Ju.join("|")})`,new RegExp(`^${Su}$`)}ua.datetimeRegex=rc;function sc(nd,Su){return!!((Su==="v4"||!Su)&&vl.test(nd)||(Su==="v6"||!Su)&&Cl.test(nd))}class Kl extends el{_parse(Su){if(this._def.coerce&&(Su.data=String(Su.data)),this._getType(Su)!==Ra.ZodParsedType.string){const hd=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(hd,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.string,received:hd.parsedType}),Ma.INVALID}const y0=new Ma.ParseStatus;let j0;for(const hd of this._def.checks)if(hd.kind==="min")Su.data.length<hd.value&&(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.too_small,minimum:hd.value,type:"string",inclusive:!0,exact:!1,message:hd.message}),y0.dirty());else if(hd.kind==="max")Su.data.length>hd.value&&(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.too_big,maximum:hd.value,type:"string",inclusive:!0,exact:!1,message:hd.message}),y0.dirty());else if(hd.kind==="length"){const qd=Su.data.length>hd.value,df=Su.data.length<hd.value;(qd||df)&&(j0=this._getOrReturnCtx(Su,j0),qd?(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.too_big,maximum:hd.value,type:"string",inclusive:!0,exact:!0,message:hd.message}):df&&(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.too_small,minimum:hd.value,type:"string",inclusive:!0,exact:!0,message:hd.message}),y0.dirty())}else if(hd.kind==="email")dl.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"email",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty());else if(hd.kind==="emoji")_l||(_l=new RegExp(gl,"u")),_l.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"emoji",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty());else if(hd.kind==="uuid")nl.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"uuid",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty());else if(hd.kind==="nanoid")sl.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"nanoid",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty());else if(hd.kind==="cuid")tl.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"cuid",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty());else if(hd.kind==="cuid2")rl.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"cuid2",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty());else if(hd.kind==="ulid")il.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"ulid",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty());else if(hd.kind==="url")try{new URL(Su.data)}catch{j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"url",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty()}else hd.kind==="regex"?(hd.regex.lastIndex=0,hd.regex.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"regex",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty())):hd.kind==="trim"?Su.data=Su.data.trim():hd.kind==="includes"?Su.data.includes(hd.value,hd.position)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.invalid_string,validation:{includes:hd.value,position:hd.position},message:hd.message}),y0.dirty()):hd.kind==="toLowerCase"?Su.data=Su.data.toLowerCase():hd.kind==="toUpperCase"?Su.data=Su.data.toUpperCase():hd.kind==="startsWith"?Su.data.startsWith(hd.value)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.invalid_string,validation:{startsWith:hd.value},message:hd.message}),y0.dirty()):hd.kind==="endsWith"?Su.data.endsWith(hd.value)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.invalid_string,validation:{endsWith:hd.value},message:hd.message}),y0.dirty()):hd.kind==="datetime"?rc(hd).test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.invalid_string,validation:"datetime",message:hd.message}),y0.dirty()):hd.kind==="date"?Fl.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.invalid_string,validation:"date",message:hd.message}),y0.dirty()):hd.kind==="time"?ql(hd).test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.invalid_string,validation:"time",message:hd.message}),y0.dirty()):hd.kind==="duration"?ll.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"duration",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty()):hd.kind==="ip"?sc(Su.data,hd.version)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"ip",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty()):hd.kind==="base64"?Ll.test(Su.data)||(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{validation:"base64",code:Ia.ZodIssueCode.invalid_string,message:hd.message}),y0.dirty()):Ra.util.assertNever(hd);return{status:y0.value,value:Su.data}}_regex(Su,Ju,y0){return this.refinement(j0=>Su.test(j0),{validation:Ju,code:Ia.ZodIssueCode.invalid_string,...Sa.errorUtil.errToObj(y0)})}_addCheck(Su){return new Kl({...this._def,checks:[...this._def.checks,Su]})}email(Su){return this._addCheck({kind:"email",...Sa.errorUtil.errToObj(Su)})}url(Su){return this._addCheck({kind:"url",...Sa.errorUtil.errToObj(Su)})}emoji(Su){return this._addCheck({kind:"emoji",...Sa.errorUtil.errToObj(Su)})}uuid(Su){return this._addCheck({kind:"uuid",...Sa.errorUtil.errToObj(Su)})}nanoid(Su){return this._addCheck({kind:"nanoid",...Sa.errorUtil.errToObj(Su)})}cuid(Su){return this._addCheck({kind:"cuid",...Sa.errorUtil.errToObj(Su)})}cuid2(Su){return this._addCheck({kind:"cuid2",...Sa.errorUtil.errToObj(Su)})}ulid(Su){return this._addCheck({kind:"ulid",...Sa.errorUtil.errToObj(Su)})}base64(Su){return this._addCheck({kind:"base64",...Sa.errorUtil.errToObj(Su)})}ip(Su){return this._addCheck({kind:"ip",...Sa.errorUtil.errToObj(Su)})}datetime(Su){var Ju,y0;return typeof Su=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:Su}):this._addCheck({kind:"datetime",precision:typeof(Su==null?void 0:Su.precision)>"u"?null:Su==null?void 0:Su.precision,offset:(Ju=Su==null?void 0:Su.offset)!==null&&Ju!==void 0?Ju:!1,local:(y0=Su==null?void 0:Su.local)!==null&&y0!==void 0?y0:!1,...Sa.errorUtil.errToObj(Su==null?void 0:Su.message)})}date(Su){return this._addCheck({kind:"date",message:Su})}time(Su){return typeof Su=="string"?this._addCheck({kind:"time",precision:null,message:Su}):this._addCheck({kind:"time",precision:typeof(Su==null?void 0:Su.precision)>"u"?null:Su==null?void 0:Su.precision,...Sa.errorUtil.errToObj(Su==null?void 0:Su.message)})}duration(Su){return this._addCheck({kind:"duration",...Sa.errorUtil.errToObj(Su)})}regex(Su,Ju){return this._addCheck({kind:"regex",regex:Su,...Sa.errorUtil.errToObj(Ju)})}includes(Su,Ju){return this._addCheck({kind:"includes",value:Su,position:Ju==null?void 0:Ju.position,...Sa.errorUtil.errToObj(Ju==null?void 0:Ju.message)})}startsWith(Su,Ju){return this._addCheck({kind:"startsWith",value:Su,...Sa.errorUtil.errToObj(Ju)})}endsWith(Su,Ju){return this._addCheck({kind:"endsWith",value:Su,...Sa.errorUtil.errToObj(Ju)})}min(Su,Ju){return this._addCheck({kind:"min",value:Su,...Sa.errorUtil.errToObj(Ju)})}max(Su,Ju){return this._addCheck({kind:"max",value:Su,...Sa.errorUtil.errToObj(Ju)})}length(Su,Ju){return this._addCheck({kind:"length",value:Su,...Sa.errorUtil.errToObj(Ju)})}nonempty(Su){return this.min(1,Sa.errorUtil.errToObj(Su))}trim(){return new Kl({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Kl({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Kl({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(Su=>Su.kind==="datetime")}get isDate(){return!!this._def.checks.find(Su=>Su.kind==="date")}get isTime(){return!!this._def.checks.find(Su=>Su.kind==="time")}get isDuration(){return!!this._def.checks.find(Su=>Su.kind==="duration")}get isEmail(){return!!this._def.checks.find(Su=>Su.kind==="email")}get isURL(){return!!this._def.checks.find(Su=>Su.kind==="url")}get isEmoji(){return!!this._def.checks.find(Su=>Su.kind==="emoji")}get isUUID(){return!!this._def.checks.find(Su=>Su.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(Su=>Su.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(Su=>Su.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(Su=>Su.kind==="cuid2")}get isULID(){return!!this._def.checks.find(Su=>Su.kind==="ulid")}get isIP(){return!!this._def.checks.find(Su=>Su.kind==="ip")}get isBase64(){return!!this._def.checks.find(Su=>Su.kind==="base64")}get minLength(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="min"&&(Su===null||Ju.value>Su)&&(Su=Ju.value);return Su}get maxLength(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="max"&&(Su===null||Ju.value<Su)&&(Su=Ju.value);return Su}}ua.ZodString=Kl,Kl.create=nd=>{var Su;return new Kl({checks:[],typeName:ou.ZodString,coerce:(Su=nd==null?void 0:nd.coerce)!==null&&Su!==void 0?Su:!1,...ka(nd)})};function Gl(nd,Su){const Ju=(nd.toString().split(".")[1]||"").length,y0=(Su.toString().split(".")[1]||"").length,j0=Ju>y0?Ju:y0,hd=parseInt(nd.toFixed(j0).replace(".","")),qd=parseInt(Su.toFixed(j0).replace(".",""));return hd%qd/Math.pow(10,j0)}class kl extends el{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(Su){if(this._def.coerce&&(Su.data=Number(Su.data)),this._getType(Su)!==Ra.ZodParsedType.number){const hd=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(hd,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.number,received:hd.parsedType}),Ma.INVALID}let y0;const j0=new Ma.ParseStatus;for(const hd of this._def.checks)hd.kind==="int"?Ra.util.isInteger(Su.data)||(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:hd.message}),j0.dirty()):hd.kind==="min"?(hd.inclusive?Su.data<hd.value:Su.data<=hd.value)&&(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_small,minimum:hd.value,type:"number",inclusive:hd.inclusive,exact:!1,message:hd.message}),j0.dirty()):hd.kind==="max"?(hd.inclusive?Su.data>hd.value:Su.data>=hd.value)&&(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_big,maximum:hd.value,type:"number",inclusive:hd.inclusive,exact:!1,message:hd.message}),j0.dirty()):hd.kind==="multipleOf"?Gl(Su.data,hd.value)!==0&&(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.not_multiple_of,multipleOf:hd.value,message:hd.message}),j0.dirty()):hd.kind==="finite"?Number.isFinite(Su.data)||(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.not_finite,message:hd.message}),j0.dirty()):Ra.util.assertNever(hd);return{status:j0.value,value:Su.data}}gte(Su,Ju){return this.setLimit("min",Su,!0,Sa.errorUtil.toString(Ju))}gt(Su,Ju){return this.setLimit("min",Su,!1,Sa.errorUtil.toString(Ju))}lte(Su,Ju){return this.setLimit("max",Su,!0,Sa.errorUtil.toString(Ju))}lt(Su,Ju){return this.setLimit("max",Su,!1,Sa.errorUtil.toString(Ju))}setLimit(Su,Ju,y0,j0){return new kl({...this._def,checks:[...this._def.checks,{kind:Su,value:Ju,inclusive:y0,message:Sa.errorUtil.toString(j0)}]})}_addCheck(Su){return new kl({...this._def,checks:[...this._def.checks,Su]})}int(Su){return this._addCheck({kind:"int",message:Sa.errorUtil.toString(Su)})}positive(Su){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Sa.errorUtil.toString(Su)})}negative(Su){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Sa.errorUtil.toString(Su)})}nonpositive(Su){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Sa.errorUtil.toString(Su)})}nonnegative(Su){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Sa.errorUtil.toString(Su)})}multipleOf(Su,Ju){return this._addCheck({kind:"multipleOf",value:Su,message:Sa.errorUtil.toString(Ju)})}finite(Su){return this._addCheck({kind:"finite",message:Sa.errorUtil.toString(Su)})}safe(Su){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Sa.errorUtil.toString(Su)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Sa.errorUtil.toString(Su)})}get minValue(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="min"&&(Su===null||Ju.value>Su)&&(Su=Ju.value);return Su}get maxValue(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="max"&&(Su===null||Ju.value<Su)&&(Su=Ju.value);return Su}get isInt(){return!!this._def.checks.find(Su=>Su.kind==="int"||Su.kind==="multipleOf"&&Ra.util.isInteger(Su.value))}get isFinite(){let Su=null,Ju=null;for(const y0 of this._def.checks){if(y0.kind==="finite"||y0.kind==="int"||y0.kind==="multipleOf")return!0;y0.kind==="min"?(Ju===null||y0.value>Ju)&&(Ju=y0.value):y0.kind==="max"&&(Su===null||y0.value<Su)&&(Su=y0.value)}return Number.isFinite(Ju)&&Number.isFinite(Su)}}ua.ZodNumber=kl,kl.create=nd=>new kl({checks:[],typeName:ou.ZodNumber,coerce:(nd==null?void 0:nd.coerce)||!1,...ka(nd)});class Wl extends el{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(Su){if(this._def.coerce&&(Su.data=BigInt(Su.data)),this._getType(Su)!==Ra.ZodParsedType.bigint){const hd=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(hd,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.bigint,received:hd.parsedType}),Ma.INVALID}let y0;const j0=new Ma.ParseStatus;for(const hd of this._def.checks)hd.kind==="min"?(hd.inclusive?Su.data<hd.value:Su.data<=hd.value)&&(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_small,type:"bigint",minimum:hd.value,inclusive:hd.inclusive,message:hd.message}),j0.dirty()):hd.kind==="max"?(hd.inclusive?Su.data>hd.value:Su.data>=hd.value)&&(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_big,type:"bigint",maximum:hd.value,inclusive:hd.inclusive,message:hd.message}),j0.dirty()):hd.kind==="multipleOf"?Su.data%hd.value!==BigInt(0)&&(y0=this._getOrReturnCtx(Su,y0),(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.not_multiple_of,multipleOf:hd.value,message:hd.message}),j0.dirty()):Ra.util.assertNever(hd);return{status:j0.value,value:Su.data}}gte(Su,Ju){return this.setLimit("min",Su,!0,Sa.errorUtil.toString(Ju))}gt(Su,Ju){return this.setLimit("min",Su,!1,Sa.errorUtil.toString(Ju))}lte(Su,Ju){return this.setLimit("max",Su,!0,Sa.errorUtil.toString(Ju))}lt(Su,Ju){return this.setLimit("max",Su,!1,Sa.errorUtil.toString(Ju))}setLimit(Su,Ju,y0,j0){return new Wl({...this._def,checks:[...this._def.checks,{kind:Su,value:Ju,inclusive:y0,message:Sa.errorUtil.toString(j0)}]})}_addCheck(Su){return new Wl({...this._def,checks:[...this._def.checks,Su]})}positive(Su){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Sa.errorUtil.toString(Su)})}negative(Su){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Sa.errorUtil.toString(Su)})}nonpositive(Su){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Sa.errorUtil.toString(Su)})}nonnegative(Su){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Sa.errorUtil.toString(Su)})}multipleOf(Su,Ju){return this._addCheck({kind:"multipleOf",value:Su,message:Sa.errorUtil.toString(Ju)})}get minValue(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="min"&&(Su===null||Ju.value>Su)&&(Su=Ju.value);return Su}get maxValue(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="max"&&(Su===null||Ju.value<Su)&&(Su=Ju.value);return Su}}ua.ZodBigInt=Wl,Wl.create=nd=>{var Su;return new Wl({checks:[],typeName:ou.ZodBigInt,coerce:(Su=nd==null?void 0:nd.coerce)!==null&&Su!==void 0?Su:!1,...ka(nd)})};class tc extends el{_parse(Su){if(this._def.coerce&&(Su.data=!!Su.data),this._getType(Su)!==Ra.ZodParsedType.boolean){const y0=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.boolean,received:y0.parsedType}),Ma.INVALID}return(0,Ma.OK)(Su.data)}}ua.ZodBoolean=tc,tc.create=nd=>new tc({typeName:ou.ZodBoolean,coerce:(nd==null?void 0:nd.coerce)||!1,...ka(nd)});class Zl extends el{_parse(Su){if(this._def.coerce&&(Su.data=new Date(Su.data)),this._getType(Su)!==Ra.ZodParsedType.date){const hd=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(hd,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.date,received:hd.parsedType}),Ma.INVALID}if(isNaN(Su.data.getTime())){const hd=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(hd,{code:Ia.ZodIssueCode.invalid_date}),Ma.INVALID}const y0=new Ma.ParseStatus;let j0;for(const hd of this._def.checks)hd.kind==="min"?Su.data.getTime()<hd.value&&(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.too_small,message:hd.message,inclusive:!0,exact:!1,minimum:hd.value,type:"date"}),y0.dirty()):hd.kind==="max"?Su.data.getTime()>hd.value&&(j0=this._getOrReturnCtx(Su,j0),(0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.too_big,message:hd.message,inclusive:!0,exact:!1,maximum:hd.value,type:"date"}),y0.dirty()):Ra.util.assertNever(hd);return{status:y0.value,value:new Date(Su.data.getTime())}}_addCheck(Su){return new Zl({...this._def,checks:[...this._def.checks,Su]})}min(Su,Ju){return this._addCheck({kind:"min",value:Su.getTime(),message:Sa.errorUtil.toString(Ju)})}max(Su,Ju){return this._addCheck({kind:"max",value:Su.getTime(),message:Sa.errorUtil.toString(Ju)})}get minDate(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="min"&&(Su===null||Ju.value>Su)&&(Su=Ju.value);return Su!=null?new Date(Su):null}get maxDate(){let Su=null;for(const Ju of this._def.checks)Ju.kind==="max"&&(Su===null||Ju.value<Su)&&(Su=Ju.value);return Su!=null?new Date(Su):null}}ua.ZodDate=Zl,Zl.create=nd=>new Zl({checks:[],coerce:(nd==null?void 0:nd.coerce)||!1,typeName:ou.ZodDate,...ka(nd)});class ac extends el{_parse(Su){if(this._getType(Su)!==Ra.ZodParsedType.symbol){const y0=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.symbol,received:y0.parsedType}),Ma.INVALID}return(0,Ma.OK)(Su.data)}}ua.ZodSymbol=ac,ac.create=nd=>new ac({typeName:ou.ZodSymbol,...ka(nd)});class Cc extends el{_parse(Su){if(this._getType(Su)!==Ra.ZodParsedType.undefined){const y0=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.undefined,received:y0.parsedType}),Ma.INVALID}return(0,Ma.OK)(Su.data)}}ua.ZodUndefined=Cc,Cc.create=nd=>new Cc({typeName:ou.ZodUndefined,...ka(nd)});class _c extends el{_parse(Su){if(this._getType(Su)!==Ra.ZodParsedType.null){const y0=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.null,received:y0.parsedType}),Ma.INVALID}return(0,Ma.OK)(Su.data)}}ua.ZodNull=_c,_c.create=nd=>new _c({typeName:ou.ZodNull,...ka(nd)});class Dc extends el{constructor(){super(...arguments),this._any=!0}_parse(Su){return(0,Ma.OK)(Su.data)}}ua.ZodAny=Dc,Dc.create=nd=>new Dc({typeName:ou.ZodAny,...ka(nd)});class Uc extends el{constructor(){super(...arguments),this._unknown=!0}_parse(Su){return(0,Ma.OK)(Su.data)}}ua.ZodUnknown=Uc,Uc.create=nd=>new Uc({typeName:ou.ZodUnknown,...ka(nd)});class Oc extends el{_parse(Su){const Ju=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.never,received:Ju.parsedType}),Ma.INVALID}}ua.ZodNever=Oc,Oc.create=nd=>new Oc({typeName:ou.ZodNever,...ka(nd)});class jc extends el{_parse(Su){if(this._getType(Su)!==Ra.ZodParsedType.undefined){const y0=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.void,received:y0.parsedType}),Ma.INVALID}return(0,Ma.OK)(Su.data)}}ua.ZodVoid=jc,jc.create=nd=>new jc({typeName:ou.ZodVoid,...ka(nd)});class Bc extends el{_parse(Su){const{ctx:Ju,status:y0}=this._processInputParams(Su),j0=this._def;if(Ju.parsedType!==Ra.ZodParsedType.array)return(0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.array,received:Ju.parsedType}),Ma.INVALID;if(j0.exactLength!==null){const qd=Ju.data.length>j0.exactLength.value,df=Ju.data.length<j0.exactLength.value;(qd||df)&&((0,Ma.addIssueToContext)(Ju,{code:qd?Ia.ZodIssueCode.too_big:Ia.ZodIssueCode.too_small,minimum:df?j0.exactLength.value:void 0,maximum:qd?j0.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:j0.exactLength.message}),y0.dirty())}if(j0.minLength!==null&&Ju.data.length<j0.minLength.value&&((0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.too_small,minimum:j0.minLength.value,type:"array",inclusive:!0,exact:!1,message:j0.minLength.message}),y0.dirty()),j0.maxLength!==null&&Ju.data.length>j0.maxLength.value&&((0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.too_big,maximum:j0.maxLength.value,type:"array",inclusive:!0,exact:!1,message:j0.maxLength.message}),y0.dirty()),Ju.common.async)return Promise.all([...Ju.data].map((qd,df)=>j0.type._parseAsync(new La(Ju,qd,Ju.path,df)))).then(qd=>Ma.ParseStatus.mergeArray(y0,qd));const hd=[...Ju.data].map((qd,df)=>j0.type._parseSync(new La(Ju,qd,Ju.path,df)));return Ma.ParseStatus.mergeArray(y0,hd)}get element(){return this._def.type}min(Su,Ju){return new Bc({...this._def,minLength:{value:Su,message:Sa.errorUtil.toString(Ju)}})}max(Su,Ju){return new Bc({...this._def,maxLength:{value:Su,message:Sa.errorUtil.toString(Ju)}})}length(Su,Ju){return new Bc({...this._def,exactLength:{value:Su,message:Sa.errorUtil.toString(Ju)}})}nonempty(Su){return this.min(1,Su)}}ua.ZodArray=Bc,Bc.create=(nd,Su)=>new Bc({type:nd,minLength:null,maxLength:null,exactLength:null,typeName:ou.ZodArray,...ka(Su)});function vc(nd){if(nd instanceof Mc){const Su={};for(const Ju in nd.shape){const y0=nd.shape[Ju];Su[Ju]=f0.create(vc(y0))}return new Mc({...nd._def,shape:()=>Su})}else return nd instanceof Bc?new Bc({...nd._def,type:vc(nd.element)}):nd instanceof f0?f0.create(vc(nd.unwrap())):nd instanceof Ru?Ru.create(vc(nd.unwrap())):nd instanceof pu?pu.create(nd.items.map(Su=>vc(Su))):nd}class Mc extends el{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const Su=this._def.shape(),Ju=Ra.util.objectKeys(Su);return this._cached={shape:Su,keys:Ju}}_parse(Su){if(this._getType(Su)!==Ra.ZodParsedType.object){const q0=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(q0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.object,received:q0.parsedType}),Ma.INVALID}const{status:y0,ctx:j0}=this._processInputParams(Su),{shape:hd,keys:qd}=this._getCached(),df=[];if(!(this._def.catchall instanceof Oc&&this._def.unknownKeys==="strip"))for(const q0 in j0.data)qd.includes(q0)||df.push(q0);const Ad=[];for(const q0 of qd){const Bd=hd[q0],af=j0.data[q0];Ad.push({key:{status:"valid",value:q0},value:Bd._parse(new La(j0,af,j0.path,q0)),alwaysSet:q0 in j0.data})}if(this._def.catchall instanceof Oc){const q0=this._def.unknownKeys;if(q0==="passthrough")for(const Bd of df)Ad.push({key:{status:"valid",value:Bd},value:{status:"valid",value:j0.data[Bd]}});else if(q0==="strict")df.length>0&&((0,Ma.addIssueToContext)(j0,{code:Ia.ZodIssueCode.unrecognized_keys,keys:df}),y0.dirty());else if(q0!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const q0=this._def.catchall;for(const Bd of df){const af=j0.data[Bd];Ad.push({key:{status:"valid",value:Bd},value:q0._parse(new La(j0,af,j0.path,Bd)),alwaysSet:Bd in j0.data})}}return j0.common.async?Promise.resolve().then(async()=>{const q0=[];for(const Bd of Ad){const af=await Bd.key,Gd=await Bd.value;q0.push({key:af,value:Gd,alwaysSet:Bd.alwaysSet})}return q0}).then(q0=>Ma.ParseStatus.mergeObjectSync(y0,q0)):Ma.ParseStatus.mergeObjectSync(y0,Ad)}get shape(){return this._def.shape()}strict(Su){return Sa.errorUtil.errToObj,new Mc({...this._def,unknownKeys:"strict",...Su!==void 0?{errorMap:(Ju,y0)=>{var j0,hd,qd,df;const Ad=(qd=(hd=(j0=this._def).errorMap)===null||hd===void 0?void 0:hd.call(j0,Ju,y0).message)!==null&&qd!==void 0?qd:y0.defaultError;return Ju.code==="unrecognized_keys"?{message:(df=Sa.errorUtil.errToObj(Su).message)!==null&&df!==void 0?df:Ad}:{message:Ad}}}:{}})}strip(){return new Mc({...this._def,unknownKeys:"strip"})}passthrough(){return new Mc({...this._def,unknownKeys:"passthrough"})}extend(Su){return new Mc({...this._def,shape:()=>({...this._def.shape(),...Su})})}merge(Su){return new Mc({unknownKeys:Su._def.unknownKeys,catchall:Su._def.catchall,shape:()=>({...this._def.shape(),...Su._def.shape()}),typeName:ou.ZodObject})}setKey(Su,Ju){return this.augment({[Su]:Ju})}catchall(Su){return new Mc({...this._def,catchall:Su})}pick(Su){const Ju={};return Ra.util.objectKeys(Su).forEach(y0=>{Su[y0]&&this.shape[y0]&&(Ju[y0]=this.shape[y0])}),new Mc({...this._def,shape:()=>Ju})}omit(Su){const Ju={};return Ra.util.objectKeys(this.shape).forEach(y0=>{Su[y0]||(Ju[y0]=this.shape[y0])}),new Mc({...this._def,shape:()=>Ju})}deepPartial(){return vc(this)}partial(Su){const Ju={};return Ra.util.objectKeys(this.shape).forEach(y0=>{const j0=this.shape[y0];Su&&!Su[y0]?Ju[y0]=j0:Ju[y0]=j0.optional()}),new Mc({...this._def,shape:()=>Ju})}required(Su){const Ju={};return Ra.util.objectKeys(this.shape).forEach(y0=>{if(Su&&!Su[y0])Ju[y0]=this.shape[y0];else{let hd=this.shape[y0];for(;hd instanceof f0;)hd=hd._def.innerType;Ju[y0]=hd}}),new Mc({...this._def,shape:()=>Ju})}keyof(){return x0(Ra.util.objectKeys(this.shape))}}ua.ZodObject=Mc,Mc.create=(nd,Su)=>new Mc({shape:()=>nd,unknownKeys:"strip",catchall:Oc.create(),typeName:ou.ZodObject,...ka(Su)}),Mc.strictCreate=(nd,Su)=>new Mc({shape:()=>nd,unknownKeys:"strict",catchall:Oc.create(),typeName:ou.ZodObject,...ka(Su)}),Mc.lazycreate=(nd,Su)=>new Mc({shape:nd,unknownKeys:"strip",catchall:Oc.create(),typeName:ou.ZodObject,...ka(Su)});class kc extends el{_parse(Su){const{ctx:Ju}=this._processInputParams(Su),y0=this._def.options;function j0(hd){for(const df of hd)if(df.result.status==="valid")return df.result;for(const df of hd)if(df.result.status==="dirty")return Ju.common.issues.push(...df.ctx.common.issues),df.result;const qd=hd.map(df=>new Ia.ZodError(df.ctx.common.issues));return(0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_union,unionErrors:qd}),Ma.INVALID}if(Ju.common.async)return Promise.all(y0.map(async hd=>{const qd={...Ju,common:{...Ju.common,issues:[]},parent:null};return{result:await hd._parseAsync({data:Ju.data,path:Ju.path,parent:qd}),ctx:qd}})).then(j0);{let hd;const qd=[];for(const Ad of y0){const q0={...Ju,common:{...Ju.common,issues:[]},parent:null},Bd=Ad._parseSync({data:Ju.data,path:Ju.path,parent:q0});if(Bd.status==="valid")return Bd;Bd.status==="dirty"&&!hd&&(hd={result:Bd,ctx:q0}),q0.common.issues.length&&qd.push(q0.common.issues)}if(hd)return Ju.common.issues.push(...hd.ctx.common.issues),hd.result;const df=qd.map(Ad=>new Ia.ZodError(Ad));return(0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_union,unionErrors:df}),Ma.INVALID}}get options(){return this._def.options}}ua.ZodUnion=kc,kc.create=(nd,Su)=>new kc({options:nd,typeName:ou.ZodUnion,...ka(Su)});const Jc=nd=>nd instanceof Gu?Jc(nd.schema):nd instanceof Du?Jc(nd.innerType()):nd instanceof Ou?[nd.value]:nd instanceof I0?nd.options:nd instanceof k0?Ra.util.objectValues(nd.enum):nd instanceof Wc?Jc(nd._def.innerType):nd instanceof Cc?[void 0]:nd instanceof _c?[null]:nd instanceof f0?[void 0,...Jc(nd.unwrap())]:nd instanceof Ru?[null,...Jc(nd.unwrap())]:nd instanceof vu||nd instanceof Yu?Jc(nd.unwrap()):nd instanceof bu?Jc(nd._def.innerType):[];class fu extends el{_parse(Su){const{ctx:Ju}=this._processInputParams(Su);if(Ju.parsedType!==Ra.ZodParsedType.object)return(0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.object,received:Ju.parsedType}),Ma.INVALID;const y0=this.discriminator,j0=Ju.data[y0],hd=this.optionsMap.get(j0);return hd?Ju.common.async?hd._parseAsync({data:Ju.data,path:Ju.path,parent:Ju}):hd._parseSync({data:Ju.data,path:Ju.path,parent:Ju}):((0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[y0]}),Ma.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(Su,Ju,y0){const j0=new Map;for(const hd of Ju){const qd=Jc(hd.shape[Su]);if(!qd.length)throw new Error(`A discriminator value for key \`${Su}\` could not be extracted from all schema options`);for(const df of qd){if(j0.has(df))throw new Error(`Discriminator property ${String(Su)} has duplicate value ${String(df)}`);j0.set(df,hd)}}return new fu({typeName:ou.ZodDiscriminatedUnion,discriminator:Su,options:Ju,optionsMap:j0,...ka(y0)})}}ua.ZodDiscriminatedUnion=fu;function hu(nd,Su){const Ju=(0,Ra.getParsedType)(nd),y0=(0,Ra.getParsedType)(Su);if(nd===Su)return{valid:!0,data:nd};if(Ju===Ra.ZodParsedType.object&&y0===Ra.ZodParsedType.object){const j0=Ra.util.objectKeys(Su),hd=Ra.util.objectKeys(nd).filter(df=>j0.indexOf(df)!==-1),qd={...nd,...Su};for(const df of hd){const Ad=hu(nd[df],Su[df]);if(!Ad.valid)return{valid:!1};qd[df]=Ad.data}return{valid:!0,data:qd}}else if(Ju===Ra.ZodParsedType.array&&y0===Ra.ZodParsedType.array){if(nd.length!==Su.length)return{valid:!1};const j0=[];for(let hd=0;hd<nd.length;hd++){const qd=nd[hd],df=Su[hd],Ad=hu(qd,df);if(!Ad.valid)return{valid:!1};j0.push(Ad.data)}return{valid:!0,data:j0}}else return Ju===Ra.ZodParsedType.date&&y0===Ra.ZodParsedType.date&&+nd==+Su?{valid:!0,data:nd}:{valid:!1}}class wu extends el{_parse(Su){const{status:Ju,ctx:y0}=this._processInputParams(Su),j0=(hd,qd)=>{if((0,Ma.isAborted)(hd)||(0,Ma.isAborted)(qd))return Ma.INVALID;const df=hu(hd.value,qd.value);return df.valid?(((0,Ma.isDirty)(hd)||(0,Ma.isDirty)(qd))&&Ju.dirty(),{status:Ju.value,value:df.data}):((0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_intersection_types}),Ma.INVALID)};return y0.common.async?Promise.all([this._def.left._parseAsync({data:y0.data,path:y0.path,parent:y0}),this._def.right._parseAsync({data:y0.data,path:y0.path,parent:y0})]).then(([hd,qd])=>j0(hd,qd)):j0(this._def.left._parseSync({data:y0.data,path:y0.path,parent:y0}),this._def.right._parseSync({data:y0.data,path:y0.path,parent:y0}))}}ua.ZodIntersection=wu,wu.create=(nd,Su,Ju)=>new wu({left:nd,right:Su,typeName:ou.ZodIntersection,...ka(Ju)});class pu extends el{_parse(Su){const{status:Ju,ctx:y0}=this._processInputParams(Su);if(y0.parsedType!==Ra.ZodParsedType.array)return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.array,received:y0.parsedType}),Ma.INVALID;if(y0.data.length<this._def.items.length)return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ma.INVALID;!this._def.rest&&y0.data.length>this._def.items.length&&((0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Ju.dirty());const hd=[...y0.data].map((qd,df)=>{const Ad=this._def.items[df]||this._def.rest;return Ad?Ad._parse(new La(y0,qd,y0.path,df)):null}).filter(qd=>!!qd);return y0.common.async?Promise.all(hd).then(qd=>Ma.ParseStatus.mergeArray(Ju,qd)):Ma.ParseStatus.mergeArray(Ju,hd)}get items(){return this._def.items}rest(Su){return new pu({...this._def,rest:Su})}}ua.ZodTuple=pu,pu.create=(nd,Su)=>{if(!Array.isArray(nd))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new pu({items:nd,typeName:ou.ZodTuple,rest:null,...ka(Su)})};class Eu extends el{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(Su){const{status:Ju,ctx:y0}=this._processInputParams(Su);if(y0.parsedType!==Ra.ZodParsedType.object)return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.object,received:y0.parsedType}),Ma.INVALID;const j0=[],hd=this._def.keyType,qd=this._def.valueType;for(const df in y0.data)j0.push({key:hd._parse(new La(y0,df,y0.path,df)),value:qd._parse(new La(y0,y0.data[df],y0.path,df)),alwaysSet:df in y0.data});return y0.common.async?Ma.ParseStatus.mergeObjectAsync(Ju,j0):Ma.ParseStatus.mergeObjectSync(Ju,j0)}get element(){return this._def.valueType}static create(Su,Ju,y0){return Ju instanceof el?new Eu({keyType:Su,valueType:Ju,typeName:ou.ZodRecord,...ka(y0)}):new Eu({keyType:Kl.create(),valueType:Su,typeName:ou.ZodRecord,...ka(Ju)})}}ua.ZodRecord=Eu;class Tu extends el{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(Su){const{status:Ju,ctx:y0}=this._processInputParams(Su);if(y0.parsedType!==Ra.ZodParsedType.map)return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.map,received:y0.parsedType}),Ma.INVALID;const j0=this._def.keyType,hd=this._def.valueType,qd=[...y0.data.entries()].map(([df,Ad],q0)=>({key:j0._parse(new La(y0,df,y0.path,[q0,"key"])),value:hd._parse(new La(y0,Ad,y0.path,[q0,"value"]))}));if(y0.common.async){const df=new Map;return Promise.resolve().then(async()=>{for(const Ad of qd){const q0=await Ad.key,Bd=await Ad.value;if(q0.status==="aborted"||Bd.status==="aborted")return Ma.INVALID;(q0.status==="dirty"||Bd.status==="dirty")&&Ju.dirty(),df.set(q0.value,Bd.value)}return{status:Ju.value,value:df}})}else{const df=new Map;for(const Ad of qd){const q0=Ad.key,Bd=Ad.value;if(q0.status==="aborted"||Bd.status==="aborted")return Ma.INVALID;(q0.status==="dirty"||Bd.status==="dirty")&&Ju.dirty(),df.set(q0.value,Bd.value)}return{status:Ju.value,value:df}}}}ua.ZodMap=Tu,Tu.create=(nd,Su,Ju)=>new Tu({valueType:Su,keyType:nd,typeName:ou.ZodMap,...ka(Ju)});class mu extends el{_parse(Su){const{status:Ju,ctx:y0}=this._processInputParams(Su);if(y0.parsedType!==Ra.ZodParsedType.set)return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.set,received:y0.parsedType}),Ma.INVALID;const j0=this._def;j0.minSize!==null&&y0.data.size<j0.minSize.value&&((0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_small,minimum:j0.minSize.value,type:"set",inclusive:!0,exact:!1,message:j0.minSize.message}),Ju.dirty()),j0.maxSize!==null&&y0.data.size>j0.maxSize.value&&((0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.too_big,maximum:j0.maxSize.value,type:"set",inclusive:!0,exact:!1,message:j0.maxSize.message}),Ju.dirty());const hd=this._def.valueType;function qd(Ad){const q0=new Set;for(const Bd of Ad){if(Bd.status==="aborted")return Ma.INVALID;Bd.status==="dirty"&&Ju.dirty(),q0.add(Bd.value)}return{status:Ju.value,value:q0}}const df=[...y0.data.values()].map((Ad,q0)=>hd._parse(new La(y0,Ad,y0.path,q0)));return y0.common.async?Promise.all(df).then(Ad=>qd(Ad)):qd(df)}min(Su,Ju){return new mu({...this._def,minSize:{value:Su,message:Sa.errorUtil.toString(Ju)}})}max(Su,Ju){return new mu({...this._def,maxSize:{value:Su,message:Sa.errorUtil.toString(Ju)}})}size(Su,Ju){return this.min(Su,Ju).max(Su,Ju)}nonempty(Su){return this.min(1,Su)}}ua.ZodSet=mu,mu.create=(nd,Su)=>new mu({valueType:nd,minSize:null,maxSize:null,typeName:ou.ZodSet,...ka(Su)});class gu extends el{constructor(){super(...arguments),this.validate=this.implement}_parse(Su){const{ctx:Ju}=this._processInputParams(Su);if(Ju.parsedType!==Ra.ZodParsedType.function)return(0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.function,received:Ju.parsedType}),Ma.INVALID;function y0(df,Ad){return(0,Ma.makeIssue)({data:df,path:Ju.path,errorMaps:[Ju.common.contextualErrorMap,Ju.schemaErrorMap,(0,ba.getErrorMap)(),ba.defaultErrorMap].filter(q0=>!!q0),issueData:{code:Ia.ZodIssueCode.invalid_arguments,argumentsError:Ad}})}function j0(df,Ad){return(0,Ma.makeIssue)({data:df,path:Ju.path,errorMaps:[Ju.common.contextualErrorMap,Ju.schemaErrorMap,(0,ba.getErrorMap)(),ba.defaultErrorMap].filter(q0=>!!q0),issueData:{code:Ia.ZodIssueCode.invalid_return_type,returnTypeError:Ad}})}const hd={errorMap:Ju.common.contextualErrorMap},qd=Ju.data;if(this._def.returns instanceof ku){const df=this;return(0,Ma.OK)(async function(...Ad){const q0=new Ia.ZodError([]),Bd=await df._def.args.parseAsync(Ad,hd).catch(bf=>{throw q0.addIssue(y0(Ad,bf)),q0}),af=await Reflect.apply(qd,this,Bd);return await df._def.returns._def.type.parseAsync(af,hd).catch(bf=>{throw q0.addIssue(j0(af,bf)),q0})})}else{const df=this;return(0,Ma.OK)(function(...Ad){const q0=df._def.args.safeParse(Ad,hd);if(!q0.success)throw new Ia.ZodError([y0(Ad,q0.error)]);const Bd=Reflect.apply(qd,this,q0.data),af=df._def.returns.safeParse(Bd,hd);if(!af.success)throw new Ia.ZodError([j0(Bd,af.error)]);return af.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...Su){return new gu({...this._def,args:pu.create(Su).rest(Uc.create())})}returns(Su){return new gu({...this._def,returns:Su})}implement(Su){return this.parse(Su)}strictImplement(Su){return this.parse(Su)}static create(Su,Ju,y0){return new gu({args:Su||pu.create([]).rest(Uc.create()),returns:Ju||Uc.create(),typeName:ou.ZodFunction,...ka(y0)})}}ua.ZodFunction=gu;class Gu extends el{get schema(){return this._def.getter()}_parse(Su){const{ctx:Ju}=this._processInputParams(Su);return this._def.getter()._parse({data:Ju.data,path:Ju.path,parent:Ju})}}ua.ZodLazy=Gu,Gu.create=(nd,Su)=>new Gu({getter:nd,typeName:ou.ZodLazy,...ka(Su)});class Ou extends el{_parse(Su){if(Su.data!==this._def.value){const Ju=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(Ju,{received:Ju.data,code:Ia.ZodIssueCode.invalid_literal,expected:this._def.value}),Ma.INVALID}return{status:"valid",value:Su.data}}get value(){return this._def.value}}ua.ZodLiteral=Ou,Ou.create=(nd,Su)=>new Ou({value:nd,typeName:ou.ZodLiteral,...ka(Su)});function x0(nd,Su){return new I0({values:nd,typeName:ou.ZodEnum,...ka(Su)})}class I0 extends el{constructor(){super(...arguments),xa.set(this,void 0)}_parse(Su){if(typeof Su.data!="string"){const Ju=this._getOrReturnCtx(Su),y0=this._def.values;return(0,Ma.addIssueToContext)(Ju,{expected:Ra.util.joinValues(y0),received:Ju.parsedType,code:Ia.ZodIssueCode.invalid_type}),Ma.INVALID}if(J(this,xa,"f")||la(this,xa,new Set(this._def.values),"f"),!J(this,xa,"f").has(Su.data)){const Ju=this._getOrReturnCtx(Su),y0=this._def.values;return(0,Ma.addIssueToContext)(Ju,{received:Ju.data,code:Ia.ZodIssueCode.invalid_enum_value,options:y0}),Ma.INVALID}return(0,Ma.OK)(Su.data)}get options(){return this._def.values}get enum(){const Su={};for(const Ju of this._def.values)Su[Ju]=Ju;return Su}get Values(){const Su={};for(const Ju of this._def.values)Su[Ju]=Ju;return Su}get Enum(){const Su={};for(const Ju of this._def.values)Su[Ju]=Ju;return Su}extract(Su,Ju=this._def){return I0.create(Su,{...this._def,...Ju})}exclude(Su,Ju=this._def){return I0.create(this.options.filter(y0=>!Su.includes(y0)),{...this._def,...Ju})}}ua.ZodEnum=I0,xa=new WeakMap,I0.create=x0;class k0 extends el{constructor(){super(...arguments),Aa.set(this,void 0)}_parse(Su){const Ju=Ra.util.getValidEnumValues(this._def.values),y0=this._getOrReturnCtx(Su);if(y0.parsedType!==Ra.ZodParsedType.string&&y0.parsedType!==Ra.ZodParsedType.number){const j0=Ra.util.objectValues(Ju);return(0,Ma.addIssueToContext)(y0,{expected:Ra.util.joinValues(j0),received:y0.parsedType,code:Ia.ZodIssueCode.invalid_type}),Ma.INVALID}if(J(this,Aa,"f")||la(this,Aa,new Set(Ra.util.getValidEnumValues(this._def.values)),"f"),!J(this,Aa,"f").has(Su.data)){const j0=Ra.util.objectValues(Ju);return(0,Ma.addIssueToContext)(y0,{received:y0.data,code:Ia.ZodIssueCode.invalid_enum_value,options:j0}),Ma.INVALID}return(0,Ma.OK)(Su.data)}get enum(){return this._def.values}}ua.ZodNativeEnum=k0,Aa=new WeakMap,k0.create=(nd,Su)=>new k0({values:nd,typeName:ou.ZodNativeEnum,...ka(Su)});class ku extends el{unwrap(){return this._def.type}_parse(Su){const{ctx:Ju}=this._processInputParams(Su);if(Ju.parsedType!==Ra.ZodParsedType.promise&&Ju.common.async===!1)return(0,Ma.addIssueToContext)(Ju,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.promise,received:Ju.parsedType}),Ma.INVALID;const y0=Ju.parsedType===Ra.ZodParsedType.promise?Ju.data:Promise.resolve(Ju.data);return(0,Ma.OK)(y0.then(j0=>this._def.type.parseAsync(j0,{path:Ju.path,errorMap:Ju.common.contextualErrorMap})))}}ua.ZodPromise=ku,ku.create=(nd,Su)=>new ku({type:nd,typeName:ou.ZodPromise,...ka(Su)});class Du extends el{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ou.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(Su){const{status:Ju,ctx:y0}=this._processInputParams(Su),j0=this._def.effect||null,hd={addIssue:qd=>{(0,Ma.addIssueToContext)(y0,qd),qd.fatal?Ju.abort():Ju.dirty()},get path(){return y0.path}};if(hd.addIssue=hd.addIssue.bind(hd),j0.type==="preprocess"){const qd=j0.transform(y0.data,hd);if(y0.common.async)return Promise.resolve(qd).then(async df=>{if(Ju.value==="aborted")return Ma.INVALID;const Ad=await this._def.schema._parseAsync({data:df,path:y0.path,parent:y0});return Ad.status==="aborted"?Ma.INVALID:Ad.status==="dirty"||Ju.value==="dirty"?(0,Ma.DIRTY)(Ad.value):Ad});{if(Ju.value==="aborted")return Ma.INVALID;const df=this._def.schema._parseSync({data:qd,path:y0.path,parent:y0});return df.status==="aborted"?Ma.INVALID:df.status==="dirty"||Ju.value==="dirty"?(0,Ma.DIRTY)(df.value):df}}if(j0.type==="refinement"){const qd=df=>{const Ad=j0.refinement(df,hd);if(y0.common.async)return Promise.resolve(Ad);if(Ad instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return df};if(y0.common.async===!1){const df=this._def.schema._parseSync({data:y0.data,path:y0.path,parent:y0});return df.status==="aborted"?Ma.INVALID:(df.status==="dirty"&&Ju.dirty(),qd(df.value),{status:Ju.value,value:df.value})}else return this._def.schema._parseAsync({data:y0.data,path:y0.path,parent:y0}).then(df=>df.status==="aborted"?Ma.INVALID:(df.status==="dirty"&&Ju.dirty(),qd(df.value).then(()=>({status:Ju.value,value:df.value}))))}if(j0.type==="transform")if(y0.common.async===!1){const qd=this._def.schema._parseSync({data:y0.data,path:y0.path,parent:y0});if(!(0,Ma.isValid)(qd))return qd;const df=j0.transform(qd.value,hd);if(df instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:Ju.value,value:df}}else return this._def.schema._parseAsync({data:y0.data,path:y0.path,parent:y0}).then(qd=>(0,Ma.isValid)(qd)?Promise.resolve(j0.transform(qd.value,hd)).then(df=>({status:Ju.value,value:df})):qd);Ra.util.assertNever(j0)}}ua.ZodEffects=Du,ua.ZodTransformer=Du,Du.create=(nd,Su,Ju)=>new Du({schema:nd,typeName:ou.ZodEffects,effect:Su,...ka(Ju)}),Du.createWithPreprocess=(nd,Su,Ju)=>new Du({schema:Su,effect:{type:"preprocess",transform:nd},typeName:ou.ZodEffects,...ka(Ju)});class f0 extends el{_parse(Su){return this._getType(Su)===Ra.ZodParsedType.undefined?(0,Ma.OK)(void 0):this._def.innerType._parse(Su)}unwrap(){return this._def.innerType}}ua.ZodOptional=f0,f0.create=(nd,Su)=>new f0({innerType:nd,typeName:ou.ZodOptional,...ka(Su)});class Ru extends el{_parse(Su){return this._getType(Su)===Ra.ZodParsedType.null?(0,Ma.OK)(null):this._def.innerType._parse(Su)}unwrap(){return this._def.innerType}}ua.ZodNullable=Ru,Ru.create=(nd,Su)=>new Ru({innerType:nd,typeName:ou.ZodNullable,...ka(Su)});class Wc extends el{_parse(Su){const{ctx:Ju}=this._processInputParams(Su);let y0=Ju.data;return Ju.parsedType===Ra.ZodParsedType.undefined&&(y0=this._def.defaultValue()),this._def.innerType._parse({data:y0,path:Ju.path,parent:Ju})}removeDefault(){return this._def.innerType}}ua.ZodDefault=Wc,Wc.create=(nd,Su)=>new Wc({innerType:nd,typeName:ou.ZodDefault,defaultValue:typeof Su.default=="function"?Su.default:()=>Su.default,...ka(Su)});class bu extends el{_parse(Su){const{ctx:Ju}=this._processInputParams(Su),y0={...Ju,common:{...Ju.common,issues:[]}},j0=this._def.innerType._parse({data:y0.data,path:y0.path,parent:{...y0}});return(0,Ma.isAsync)(j0)?j0.then(hd=>({status:"valid",value:hd.status==="valid"?hd.value:this._def.catchValue({get error(){return new Ia.ZodError(y0.common.issues)},input:y0.data})})):{status:"valid",value:j0.status==="valid"?j0.value:this._def.catchValue({get error(){return new Ia.ZodError(y0.common.issues)},input:y0.data})}}removeCatch(){return this._def.innerType}}ua.ZodCatch=bu,bu.create=(nd,Su)=>new bu({innerType:nd,typeName:ou.ZodCatch,catchValue:typeof Su.catch=="function"?Su.catch:()=>Su.catch,...ka(Su)});class Mu extends el{_parse(Su){if(this._getType(Su)!==Ra.ZodParsedType.nan){const y0=this._getOrReturnCtx(Su);return(0,Ma.addIssueToContext)(y0,{code:Ia.ZodIssueCode.invalid_type,expected:Ra.ZodParsedType.nan,received:y0.parsedType}),Ma.INVALID}return{status:"valid",value:Su.data}}}ua.ZodNaN=Mu,Mu.create=nd=>new Mu({typeName:ou.ZodNaN,...ka(nd)}),ua.BRAND=Symbol("zod_brand");class vu extends el{_parse(Su){const{ctx:Ju}=this._processInputParams(Su),y0=Ju.data;return this._def.type._parse({data:y0,path:Ju.path,parent:Ju})}unwrap(){return this._def.type}}ua.ZodBranded=vu;class n0 extends el{_parse(Su){const{status:Ju,ctx:y0}=this._processInputParams(Su);if(y0.common.async)return(async()=>{const hd=await this._def.in._parseAsync({data:y0.data,path:y0.path,parent:y0});return hd.status==="aborted"?Ma.INVALID:hd.status==="dirty"?(Ju.dirty(),(0,Ma.DIRTY)(hd.value)):this._def.out._parseAsync({data:hd.value,path:y0.path,parent:y0})})();{const j0=this._def.in._parseSync({data:y0.data,path:y0.path,parent:y0});return j0.status==="aborted"?Ma.INVALID:j0.status==="dirty"?(Ju.dirty(),{status:"dirty",value:j0.value}):this._def.out._parseSync({data:j0.value,path:y0.path,parent:y0})}}static create(Su,Ju){return new n0({in:Su,out:Ju,typeName:ou.ZodPipeline})}}ua.ZodPipeline=n0;class Yu extends el{_parse(Su){const Ju=this._def.innerType._parse(Su),y0=j0=>((0,Ma.isValid)(j0)&&(j0.value=Object.freeze(j0.value)),j0);return(0,Ma.isAsync)(Ju)?Ju.then(j0=>y0(j0)):y0(Ju)}unwrap(){return this._def.innerType}}ua.ZodReadonly=Yu,Yu.create=(nd,Su)=>new Yu({innerType:nd,typeName:ou.ZodReadonly,...ka(Su)});function u0(nd,Su={},Ju){return nd?Dc.create().superRefine((y0,j0)=>{var hd,qd;if(!nd(y0)){const df=typeof Su=="function"?Su(y0):typeof Su=="string"?{message:Su}:Su,Ad=(qd=(hd=df.fatal)!==null&&hd!==void 0?hd:Ju)!==null&&qd!==void 0?qd:!0,q0=typeof df=="string"?{message:df}:df;j0.addIssue({code:"custom",...q0,fatal:Ad})}}):Dc.create()}ua.custom=u0,ua.late={object:Mc.lazycreate};var ou;(function(nd){nd.ZodString="ZodString",nd.ZodNumber="ZodNumber",nd.ZodNaN="ZodNaN",nd.ZodBigInt="ZodBigInt",nd.ZodBoolean="ZodBoolean",nd.ZodDate="ZodDate",nd.ZodSymbol="ZodSymbol",nd.ZodUndefined="ZodUndefined",nd.ZodNull="ZodNull",nd.ZodAny="ZodAny",nd.ZodUnknown="ZodUnknown",nd.ZodNever="ZodNever",nd.ZodVoid="ZodVoid",nd.ZodArray="ZodArray",nd.ZodObject="ZodObject",nd.ZodUnion="ZodUnion",nd.ZodDiscriminatedUnion="ZodDiscriminatedUnion",nd.ZodIntersection="ZodIntersection",nd.ZodTuple="ZodTuple",nd.ZodRecord="ZodRecord",nd.ZodMap="ZodMap",nd.ZodSet="ZodSet",nd.ZodFunction="ZodFunction",nd.ZodLazy="ZodLazy",nd.ZodLiteral="ZodLiteral",nd.ZodEnum="ZodEnum",nd.ZodEffects="ZodEffects",nd.ZodNativeEnum="ZodNativeEnum",nd.ZodOptional="ZodOptional",nd.ZodNullable="ZodNullable",nd.ZodDefault="ZodDefault",nd.ZodCatch="ZodCatch",nd.ZodPromise="ZodPromise",nd.ZodBranded="ZodBranded",nd.ZodPipeline="ZodPipeline",nd.ZodReadonly="ZodReadonly"})(ou=ua.ZodFirstPartyTypeKind||(ua.ZodFirstPartyTypeKind={}));const t0=(nd,Su={message:`Input not instance of ${nd.name}`})=>u0(Ju=>Ju instanceof nd,Su);ua.instanceof=t0;const a0=Kl.create;ua.string=a0;const $0=kl.create;ua.number=$0;const yd=Mu.create;ua.nan=yd;const Dd=Wl.create;ua.bigint=Dd;const gf=tc.create;ua.boolean=gf;const Rd=Zl.create;ua.date=Rd;const Pf=ac.create;ua.symbol=Pf;const Q0=Cc.create;ua.undefined=Q0;const ff=_c.create;ua.null=ff;const Ef=Dc.create;ua.any=Ef;const Bf=Uc.create;ua.unknown=Bf;const zf=Oc.create;ua.never=zf;const Ff=jc.create;ua.void=Ff;const ld=Bc.create;ua.array=ld;const nf=Mc.create;ua.object=nf;const lf=Mc.strictCreate;ua.strictObject=lf;const uf=kc.create;ua.union=uf;const Mf=fu.create;ua.discriminatedUnion=Mf;const Qh=wu.create;ua.intersection=Qh;const P0=pu.create;ua.tuple=P0;const $u=Eu.create;ua.record=$u;const A0=Tu.create;ua.map=A0;const Vu=mu.create;ua.set=Vu;const z0=gu.create;ua.function=z0;const qh=Gu.create;ua.lazy=qh;const Rc=Ou.create;ua.literal=Rc;const Gc=I0.create;ua.enum=Gc;const Iu=k0.create;ua.nativeEnum=Iu;const Xu=ku.create;ua.promise=Xu;const _0=Du.create;ua.effect=_0,ua.transformer=_0;const B0=f0.create;ua.optional=B0;const G0=Ru.create;ua.nullable=G0;const wd=Du.createWithPreprocess;ua.preprocess=wd;const _d=n0.create;ua.pipeline=_d;const Cd=()=>a0().optional();ua.ostring=Cd;const Jd=()=>$0().optional();ua.onumber=Jd;const pf=()=>gf().optional();ua.oboolean=pf,ua.coerce={string:nd=>Kl.create({...nd,coerce:!0}),number:nd=>kl.create({...nd,coerce:!0}),boolean:nd=>tc.create({...nd,coerce:!0}),bigint:nd=>Wl.create({...nd,coerce:!0}),date:nd=>Zl.create({...nd,coerce:!0})},ua.NEVER=Ma.INVALID}(types$1)),types$1}var hasRequiredExternal;function requireExternal(){return hasRequiredExternal||(hasRequiredExternal=1,function(ua){var J=external&&external.__createBinding||(Object.create?function(xa,Aa,ba,Sa){Sa===void 0&&(Sa=ba),Object.defineProperty(xa,Sa,{enumerable:!0,get:function(){return Aa[ba]}})}:function(xa,Aa,ba,Sa){Sa===void 0&&(Sa=ba),xa[Sa]=Aa[ba]}),la=external&&external.__exportStar||function(xa,Aa){for(var ba in xa)ba!=="default"&&!Object.prototype.hasOwnProperty.call(Aa,ba)&&J(Aa,xa,ba)};Object.defineProperty(ua,"__esModule",{value:!0}),la(requireErrors(),ua),la(requireParseUtil(),ua),la(requireTypeAliases(),ua),la(requireUtil(),ua),la(requireTypes(),ua),la(requireZodError(),ua)}(external)),external}var hasRequiredLib;function requireLib(){return hasRequiredLib||(hasRequiredLib=1,function(ua){var J=lib&&lib.__createBinding||(Object.create?function(Sa,Ma,Ra,Ia){Ia===void 0&&(Ia=Ra),Object.defineProperty(Sa,Ia,{enumerable:!0,get:function(){return Ma[Ra]}})}:function(Sa,Ma,Ra,Ia){Ia===void 0&&(Ia=Ra),Sa[Ia]=Ma[Ra]}),la=lib&&lib.__setModuleDefault||(Object.create?function(Sa,Ma){Object.defineProperty(Sa,"default",{enumerable:!0,value:Ma})}:function(Sa,Ma){Sa.default=Ma}),xa=lib&&lib.__importStar||function(Sa){if(Sa&&Sa.__esModule)return Sa;var Ma={};if(Sa!=null)for(var Ra in Sa)Ra!=="default"&&Object.prototype.hasOwnProperty.call(Sa,Ra)&&J(Ma,Sa,Ra);return la(Ma,Sa),Ma},Aa=lib&&lib.__exportStar||function(Sa,Ma){for(var Ra in Sa)Ra!=="default"&&!Object.prototype.hasOwnProperty.call(Ma,Ra)&&J(Ma,Sa,Ra)};Object.defineProperty(ua,"__esModule",{value:!0}),ua.z=void 0;const ba=xa(requireExternal());ua.z=ba,Aa(requireExternal(),ua),ua.default=ba}(lib)),lib}const require$$2$2=getAugmentedNamespace(index_browser);var dist$8,hasRequiredDist$6;function requireDist$6(){if(hasRequiredDist$6)return dist$8;hasRequiredDist$6=1;var ua=Object.create,J=Object.defineProperty,la=Object.getOwnPropertyDescriptor,xa=Object.getOwnPropertyNames,Aa=Object.getPrototypeOf,ba=Object.prototype.hasOwnProperty,Sa=(kd,gp)=>{for(var _p in gp)J(kd,_p,{get:gp[_p],enumerable:!0})},Ma=(kd,gp,_p,$p)=>{if(gp&&typeof gp=="object"||typeof gp=="function")for(let rp of xa(gp))!ba.call(kd,rp)&&rp!==_p&&J(kd,rp,{get:()=>gp[rp],enumerable:!($p=la(gp,rp))||$p.enumerable});return kd},Ra=(kd,gp,_p)=>(_p=kd!=null?ua(Aa(kd)):{},Ma(!kd||!kd.__esModule?J(_p,"default",{value:kd,enumerable:!0}):_p,kd)),Ia=kd=>Ma(J({},"__esModule",{value:!0}),kd),La={};Sa(La,{all_layers:()=>Bf,any_circuit_element:()=>H0,any_soup_element:()=>vf,any_source_component:()=>gu,cad_component:()=>N0,capacitance:()=>ll,current:()=>Cl,distance:()=>vl,inductance:()=>dl,layer_ref:()=>Ff,layer_string:()=>zf,length:()=>_l,pcb_board:()=>qd,pcb_component:()=>z0,pcb_fabrication_note_path:()=>yp,pcb_fabrication_note_text:()=>Rf,pcb_hole:()=>Rc,pcb_keepout:()=>L0,pcb_placement_error:()=>Ad,pcb_plated_hole:()=>Iu,pcb_port:()=>_0,pcb_port_not_matched_error:()=>Ju,pcb_route_hint:()=>lf,pcb_route_hints:()=>uf,pcb_silkscreen_circle:()=>Ld,pcb_silkscreen_line:()=>Gd,pcb_silkscreen_oval:()=>Sf,pcb_silkscreen_path:()=>dp,pcb_silkscreen_rect:()=>Y0,pcb_silkscreen_text:()=>s0,pcb_smtpad:()=>G0,pcb_text:()=>_d,pcb_trace:()=>Jd,pcb_trace_error:()=>nd,pcb_trace_hint:()=>Bd,pcb_via:()=>j0,point:()=>Ol,point3:()=>sc,position:()=>ql,position3:()=>Kl,resistance:()=>sl,rotation:()=>Il,route_hint_point:()=>Qh,schematic_box:()=>Wc,schematic_component:()=>Yu,schematic_error:()=>ff,schematic_line:()=>ou,schematic_net_label:()=>Pf,schematic_path:()=>Mu,schematic_pin_styles:()=>n0,schematic_port:()=>gf,schematic_text:()=>yd,schematic_trace:()=>a0,size:()=>kl,source_component_base:()=>Cc,source_group:()=>ku,source_led:()=>pu,source_net:()=>f0,source_port:()=>Ou,source_simple_bug:()=>kc,source_simple_capacitor:()=>_c,source_simple_chip:()=>fu,source_simple_diode:()=>jc,source_simple_ground:()=>vc,source_simple_power_source:()=>Tu,source_simple_resistor:()=>Uc,source_trace:()=>I0,supplier_name:()=>Zl,time:()=>Ll,visible_layer:()=>ld,voltage:()=>gl}),dist$8=Ia(La);var Fa=Ra(requireLib$1()),ka={tera:1e13,T:1e13,giga:1e10,G:1e10,mega:1e7,M:1e7,kilo:1e4,k:1e4,deci:1,d:1,centi:.1,c:.1,milli:.01,m:.01,micro:1e-5,u:1e-5,µ:1e-5,nano:1e-8,n:1e-8,pico:1e-11,p:1e-11},el=Object.keys(ka),tl={mass:"g",length:"mm",time:"ms",volume:"ml",angle:"deg"};function rl(kd){for(const gp of el)if(kd.startsWith(gp))return ka[gp];return 1}var il=kd=>{var ap,qm;if(typeof kd>"u")return{unit:null,value:null};if(typeof kd=="string"&&kd.match(/^[\d\.]+$/))return{value:parseFloat(kd),unit:null};if(typeof kd=="number")return{value:kd,unit:null};if(typeof kd=="object"&&"x"in kd&&"y"in kd)return{unit:il(kd.x).unit,value:{x:il(kd.x).value,y:il(kd.y).value}};const gp=(ap=kd.split("").reverse().join("").match(/[a-zA-Z]+/))==null?void 0:ap[0];if(!gp)throw new Error(`Could not determine unit: "${kd}"`);const _p=gp.split("").reverse().join(""),$p=kd.slice(0,-_p.length);let rp;try{rp=(qm=(0,Fa.default)().describe(_p))==null?void 0:qm.measure}catch{}if(rp){const hm=tl[rp];if(!hm)throw new Error(`Could not determine target unit for measure: "${rp}"`);return{unit:_p,value:(0,Fa.default)(parseFloat($p)).from(_p).to(hm)}}else return{unit:_p,value:rl(_p)*parseFloat($p)}},nl=requireLib(),sl=nl.z.string().or(nl.z.number()).transform(kd=>il(kd).value),ll=nl.z.string().or(nl.z.number()).transform(kd=>il(kd).value),dl=nl.z.string().or(nl.z.number()).transform(kd=>il(kd).value),gl=nl.z.string().or(nl.z.number()).transform(kd=>il(kd).value),_l=nl.z.string().or(nl.z.number()).transform(kd=>il(kd).value),vl=_l,Cl=nl.z.string().or(nl.z.number()).transform(kd=>il(kd).value),Ll=nl.z.string().or(nl.z.number()).transform(kd=>il(kd).value),Il=nl.z.string().or(nl.z.number()).transform(kd=>typeof kd=="number"?kd:kd.endsWith("deg")?Number.parseFloat(kd.split("deg")[0]):kd.endsWith("rad")?Number.parseFloat(kd.split("rad")[0])*180/Math.PI:Number.parseFloat(kd)),Fl=requireLib(),Ol=Fl.z.object({x:vl,y:vl}),ql=Ol,rc=requireLib(),sc=rc.z.object({x:vl,y:vl,z:vl}),Kl=sc,Gl=requireLib(),kl=Gl.z.object({width:Gl.z.number(),height:Gl.z.number()}),Wl=requireLib(),tc=requireLib(),Zl=tc.z.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),ac=requireLib(),Cc=ac.z.object({type:ac.z.literal("source_component"),ftype:ac.z.string().optional(),source_component_id:ac.z.string(),name:ac.z.string(),manufacturer_part_number:ac.z.string().optional(),supplier_part_numbers:ac.z.record(Zl,ac.z.array(ac.z.string())).optional()}),_c=Cc.extend({ftype:Wl.z.literal("simple_capacitor"),capacitance:ll}),Dc=requireLib(),Uc=Cc.extend({ftype:Dc.z.literal("simple_resistor"),resistance:sl}),Oc=requireLib(),jc=Cc.extend({ftype:Oc.z.literal("simple_diode")}),Bc=requireLib(),vc=Cc.extend({ftype:Bc.z.literal("simple_ground")}),Mc=requireLib(),kc=Cc.extend({ftype:Mc.z.literal("simple_bug")}).describe("@deprecated"),Jc=requireLib(),fu=Cc.extend({ftype:Jc.z.literal("simple_chip")}),hu=requireLib();Cc.extend({ftype:hu.z.literal("simple_inductor"),inductance:dl});var wu=requireLib(),pu=jc.extend({ftype:wu.z.literal("led")}),Eu=requireLib(),Tu=Cc.extend({ftype:Eu.z.literal("simple_power_source"),voltage:gl}),mu=requireLib(),gu=mu.z.union([Uc,_c,jc,vc,fu,kc,pu,Tu]),Gu=requireLib(),Ou=Gu.z.object({type:Gu.z.literal("source_port"),pin_number:Gu.z.number().optional(),port_hints:Gu.z.array(Gu.z.string()).optional(),name:Gu.z.string(),source_port_id:Gu.z.string(),source_component_id:Gu.z.string()}),x0=requireLib(),I0=x0.z.object({type:x0.z.literal("source_trace"),source_trace_id:x0.z.string(),connected_source_port_ids:x0.z.array(x0.z.string()),connected_source_net_ids:x0.z.array(x0.z.string())}),k0=requireLib(),ku=k0.z.object({type:k0.z.literal("source_group"),source_group_id:k0.z.string(),name:k0.z.string().optional()}),Du=requireLib(),f0=Du.z.object({type:Du.z.literal("source_net"),source_net_id:Du.z.string(),name:Du.z.string(),member_source_group_ids:Du.z.array(Du.z.string()),is_power:Du.z.boolean().optional(),is_ground:Du.z.boolean().optional(),is_digital_signal:Du.z.boolean().optional(),is_analog_signal:Du.z.boolean().optional(),trace_width:Du.z.number().optional()}),Ru=requireLib(),Wc=Ru.z.object({type:Ru.z.literal("schematic_box"),schematic_component_id:Ru.z.string(),width:vl,height:vl,x:vl,y:vl}).describe("Draws a box on the schematic"),bu=requireLib(),Mu=bu.z.object({type:bu.z.literal("schematic_path"),schematic_component_id:bu.z.string(),fill_color:bu.z.enum(["red","blue"]).optional(),is_filled:bu.z.boolean().optional(),points:bu.z.array(Ol)}),vu=requireLib(),n0=vu.z.record(vu.z.object({left_margin:_l.optional(),right_margin:_l.optional(),top_margin:_l.optional(),bottom_margin:_l.optional()})),Yu=vu.z.object({type:vu.z.literal("schematic_component"),rotation:Il.default(0),size:kl,center:Ol,source_component_id:vu.z.string(),schematic_component_id:vu.z.string(),pin_spacing:_l.optional(),pin_styles:n0.optional(),box_width:_l.optional(),symbol_name:vu.z.string().optional(),port_arrangement:vu.z.union([vu.z.object({left_size:vu.z.number(),right_size:vu.z.number(),top_size:vu.z.number().optional(),bottom_size:vu.z.number().optional()}),vu.z.object({left_side:vu.z.object({pins:vu.z.array(vu.z.number()),direction:vu.z.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:vu.z.object({pins:vu.z.array(vu.z.number()),direction:vu.z.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:vu.z.object({pins:vu.z.array(vu.z.number()),direction:vu.z.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:vu.z.object({pins:vu.z.array(vu.z.number()),direction:vu.z.enum(["left-to-right","right-to-left"]).optional()}).optional()})]).optional(),port_labels:vu.z.record(vu.z.string()).optional()}),u0=requireLib(),ou=u0.z.object({type:u0.z.literal("schematic_line"),schematic_component_id:u0.z.string(),x1:vl,x2:vl,y1:vl,y2:vl}),t0=requireLib(),a0=t0.z.object({type:t0.z.literal("schematic_trace"),schematic_trace_id:t0.z.string(),source_trace_id:t0.z.string(),edges:t0.z.array(t0.z.object({from:t0.z.object({x:t0.z.number(),y:t0.z.number()}),to:t0.z.object({x:t0.z.number(),y:t0.z.number()}),from_schematic_port_id:t0.z.string().optional(),to_schematic_port_id:t0.z.string().optional()}))}),$0=requireLib(),yd=$0.z.object({type:$0.z.literal("schematic_text"),schematic_component_id:$0.z.string(),schematic_text_id:$0.z.string(),text:$0.z.string(),position:$0.z.object({x:vl,y:vl}),rotation:$0.z.number().default(0),anchor:$0.z.enum(["center","left","right","top","bottom"]).default("center")}),Dd=requireLib(),gf=Dd.z.object({type:Dd.z.literal("schematic_port"),schematic_port_id:Dd.z.string(),source_port_id:Dd.z.string(),schematic_component_id:Dd.z.string().optional(),center:Ol,facing_direction:Dd.z.enum(["up","down","left","right"]).optional()}).describe("Defines a port on a schematic component"),Rd=requireLib(),Pf=Rd.z.object({type:Rd.z.literal("schematic_net_label"),source_net_id:Rd.z.string(),center:Ol,anchor_side:Rd.z.enum(["top","bottom","left","right"]),text:Rd.z.string()}),Q0=requireLib(),ff=Q0.z.object({schematic_error_id:Q0.z.string(),type:Q0.z.literal("schematic_error"),error_type:Q0.z.literal("schematic_port_not_found"),message:Q0.z.string()}).describe("Defines a schematic error on the schematic"),Ef=requireLib(),Bf=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],zf=Ef.z.enum(Bf),Ff=zf.or(Ef.z.object({name:zf})).transform(kd=>typeof kd=="string"?kd:kd.name),ld=Ef.z.enum(["top","bottom"]),nf=requireLib(),lf=nf.z.object({x:vl,y:vl,via:nf.z.boolean().optional(),via_to_layer:Ff.optional()}),uf=nf.z.array(lf),Mf=requireLib(),Qh=Mf.z.object({x:vl,y:vl,via:Mf.z.boolean().optional(),to_layer:Ff.optional(),trace_width:vl.optional()}),P0=requireLib(),$u=requireLib(),A0=require$$2$2,Vu=kd=>$u.z.string().optional().default(()=>`${kd}_${(0,A0.nanoid)(10)}`),z0=P0.z.object({type:P0.z.literal("pcb_component"),pcb_component_id:Vu("pcb_component"),source_component_id:P0.z.string(),center:Ol,layer:Ff,rotation:Il,width:_l,height:_l}).describe("Defines a component on the PCB"),qh=requireLib(),Rc=qh.z.object({pcb_hole_id:qh.z.string(),type:qh.z.literal("pcb_hole"),hole_shape:qh.z.enum(["circle","square","round"]).default("circle").transform(kd=>kd==="round"?"circle":kd),hole_diameter:qh.z.number(),x:vl,y:vl}).or(qh.z.object({pcb_hole_id:qh.z.string(),type:qh.z.literal("pcb_hole"),hole_shape:qh.z.literal("oval"),hole_width:qh.z.number(),hole_height:qh.z.number(),x:vl,y:vl})).describe("Defines a hole on the PCB"),Gc=requireLib(),Iu=Gc.z.object({type:Gc.z.literal("pcb_plated_hole"),shape:Gc.z.literal("circle"),outer_diameter:Gc.z.number(),hole_diameter:Gc.z.number(),x:vl,y:vl,layers:Gc.z.array(Ff),port_hints:Gc.z.array(Gc.z.string()).optional(),pcb_component_id:Gc.z.string().optional(),pcb_port_id:Gc.z.string().optional(),pcb_plated_hole_id:Gc.z.string()}).or(Gc.z.object({type:Gc.z.literal("pcb_plated_hole"),shape:Gc.z.enum(["oval","pill"]),outer_width:Gc.z.number(),outer_height:Gc.z.number(),hole_width:Gc.z.number(),hole_height:Gc.z.number(),x:vl,y:vl,layers:Gc.z.array(Ff),port_hints:Gc.z.array(Gc.z.string()).optional(),pcb_component_id:Gc.z.string().optional(),pcb_port_id:Gc.z.string().optional(),pcb_plated_hole_id:Gc.z.string()})).describe("Defines a plated hole on the PCB"),Xu=requireLib(),_0=Xu.z.object({type:Xu.z.literal("pcb_port"),pcb_port_id:Xu.z.string(),source_port_id:Xu.z.string(),pcb_component_id:Xu.z.string(),x:vl,y:vl,layers:Xu.z.array(Ff)}).describe("Defines a port on the PCB"),B0=requireLib(),G0=B0.z.union([B0.z.object({pcb_smtpad_id:B0.z.string(),type:B0.z.literal("pcb_smtpad"),shape:B0.z.literal("circle"),x:vl,y:vl,radius:B0.z.number(),layer:Ff,port_hints:B0.z.array(B0.z.string()).optional(),pcb_component_id:B0.z.string().optional(),pcb_port_id:B0.z.string().optional()}),B0.z.object({pcb_smtpad_id:B0.z.string(),type:B0.z.literal("pcb_smtpad"),shape:B0.z.literal("rect"),x:vl,y:vl,width:B0.z.number(),height:B0.z.number(),layer:Ff,port_hints:B0.z.array(B0.z.string()).optional(),pcb_component_id:B0.z.string().optional(),pcb_port_id:B0.z.string().optional()})]).describe("Defines an SMT pad on the PCB"),wd=requireLib(),_d=wd.z.object({type:wd.z.literal("pcb_text"),text:wd.z.string(),x:vl,y:vl,align:wd.z.enum(["bottom-left"]),width:vl,height:vl,lines:wd.z.number()}).describe("Defines text on the PCB"),Cd=requireLib(),Jd=Cd.z.object({type:Cd.z.literal("pcb_trace"),source_trace_id:Cd.z.string().optional(),pcb_component_id:Cd.z.string().optional(),pcb_trace_id:Cd.z.string(),route_thickness_mode:Cd.z.enum(["constant","interpolated"]).default("constant").optional(),should_round_corners:Cd.z.boolean().optional(),route:Cd.z.array(Cd.z.union([Cd.z.object({route_type:Cd.z.literal("wire"),x:vl,y:vl,width:vl,start_pcb_port_id:Cd.z.string().optional(),end_pcb_port_id:Cd.z.string().optional(),layer:Ff}),Cd.z.object({route_type:Cd.z.literal("via"),x:vl,y:vl,from_layer:Cd.z.string(),to_layer:Cd.z.string()})]))}),pf=requireLib(),nd=pf.z.object({pcb_error_id:pf.z.string(),type:pf.z.literal("pcb_error"),error_type:pf.z.literal("pcb_trace_error"),message:pf.z.string(),center:Ol.optional(),pcb_trace_id:pf.z.string(),source_trace_id:pf.z.string(),pcb_component_ids:pf.z.array(pf.z.string()),pcb_port_ids:pf.z.array(pf.z.string())}).describe("Defines a trace error on the PCB"),Su=requireLib(),Ju=Su.z.object({pcb_error_id:Su.z.string(),type:Su.z.literal("pcb_error"),error_type:Su.z.literal("pcb_port_not_matched_error"),message:Su.z.string(),pcb_component_ids:Su.z.array(Su.z.string())}).describe("Defines a trace error on the PCB"),y0=requireLib(),j0=y0.z.object({type:y0.z.literal("pcb_via"),x:vl,y:vl,outer_diameter:vl.default("0.6mm"),hole_diameter:vl.default("0.25mm"),from_layer:Ff.optional(),to_layer:Ff.optional(),layers:y0.z.array(Ff)}).describe("Defines a via on the PCB"),hd=requireLib(),qd=hd.z.object({type:hd.z.literal("pcb_board"),pcb_board_id:hd.z.string().default("pcb_board_0").optional(),width:_l,height:_l,center:Ol,outline:hd.z.array(Ol).optional()}).describe("Defines the board outline of the PCB"),df=requireLib(),Ad=df.z.object({pcb_error_id:df.z.string(),type:df.z.literal("pcb_error"),error_type:df.z.literal("pcb_placement_error"),message:df.z.string()}).describe("Defines a placement error on the PCB"),q0=requireLib(),Bd=q0.z.object({pcb_trace_hint_id:q0.z.string(),type:q0.z.literal("pcb_trace_hint"),pcb_port_id:q0.z.string(),pcb_component_id:q0.z.string(),route:q0.z.array(Qh.optional())}).describe("A hint that can be used to generate a PCB trace"),af=requireLib(),Gd=af.z.object({type:af.z.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:af.z.string(),pcb_component_id:af.z.string(),stroke_width:vl.default("0.1mm"),x1:vl,y1:vl,x2:vl,y2:vl,layer:ld}).describe("Defines a silkscreen line on the PCB"),bf=requireLib(),dp=bf.z.object({type:bf.z.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:bf.z.string(),pcb_component_id:bf.z.string(),layer:ld,route:bf.z.array(Ol),stroke_width:_l}).describe("Defines a silkscreen path on the PCB"),m0=requireLib(),s0=m0.z.object({type:m0.z.literal("pcb_silkscreen_text"),font:m0.z.literal("tscircuit2024").default("tscircuit2024"),font_size:vl.default("0.2mm"),pcb_component_id:m0.z.string(),text:m0.z.string(),layer:ld,anchor_position:Ol.default({x:0,y:0}),anchor_alignment:m0.z.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),v0=requireLib(),Y0=v0.z.object({type:v0.z.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:v0.z.string(),pcb_component_id:v0.z.string(),center:Ol,width:vl,height:vl,layer:ld}).describe("Defines a silkscreen rect on the PCB"),Id=requireLib(),Ld=Id.z.object({type:Id.z.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:Id.z.string(),pcb_component_id:Id.z.string(),center:Ol,radius:vl,layer:ld}).describe("Defines a silkscreen circle on the PCB"),Lf=requireLib(),Sf=Lf.z.object({type:Lf.z.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:Lf.z.string(),pcb_component_id:Lf.z.string(),center:Ol,radius_x:vl,radius_y:vl,layer:ld}).describe("Defines a silkscreen oval on the PCB"),tp=requireLib(),Rf=tp.z.object({type:tp.z.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:Vu("pcb_fabrication_note_text"),font:tp.z.literal("tscircuit2024").default("tscircuit2024"),font_size:vl.default("1mm"),pcb_component_id:tp.z.string(),text:tp.z.string(),layer:ld,anchor_position:Ol.default({x:0,y:0}),anchor_alignment:tp.z.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:tp.z.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),Pp=requireLib(),yp=Pp.z.object({type:Pp.z.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:Vu("pcb_fabrication_note_path"),pcb_component_id:Pp.z.string(),layer:ld,route:Pp.z.array(Ol),stroke_width:_l,color:Pp.z.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),Np=requireLib(),L0=Np.z.object({type:Np.z.literal("pcb_keepout"),shape:Np.z.literal("rect"),center:Ol,width:vl,height:vl,pcb_keepout_id:Np.z.string(),layers:Np.z.array(Np.z.string()),description:Np.z.string().optional()}).or(Np.z.object({type:Np.z.literal("pcb_keepout"),shape:Np.z.literal("circle"),center:Ol,radius:vl,pcb_keepout_id:Np.z.string(),layers:Np.z.array(Np.z.string()),description:Np.z.string().optional()})),b0=requireLib(),N0=b0.z.object({type:b0.z.literal("cad_component"),cad_component_id:b0.z.string(),pcb_component_id:b0.z.string(),source_component_id:b0.z.string(),position:sc,rotation:sc.optional(),size:sc.optional(),layer:Ff.optional(),footprinter_string:b0.z.string().optional(),model_obj_url:b0.z.string().optional(),model_stl_url:b0.z.string().optional(),model_3mf_url:b0.z.string().optional(),model_jscad:b0.z.any().optional()}).describe("Defines a component on the PCB"),X0=requireLib(),H0=X0.z.union([I0,Ou,gu,pu,f0,ku,kc,fu,_c,jc,Uc,Tu,z0,Rc,Iu,L0,_0,_d,Jd,j0,G0,qd,Bd,Gd,dp,s0,Y0,Ld,Sf,nd,Ad,Ju,yp,Rf,Wc,yd,ou,Yu,gf,a0,Mu,ff,Pf,N0]),vf=H0;return dist$8}const require$$0=getAugmentedNamespace(src$2),TOKENS={attribute:/\[\s*(?:(?<namespace>\*|[-\w\P{ASCII}]*)\|)?(?<name>[-\w\P{ASCII}]+)\s*(?:(?<operator>\W?=)\s*(?<value>.+?)\s*(\s(?<caseSensitive>[iIsS]))?\s*)?\]/gu,id:/#(?<name>[-\w\P{ASCII}]+)/gu,class:/\.(?<name>[-\w\P{ASCII}]+)/gu,comma:/\s*,\s*/g,combinator:/\s*[\s>+~]\s*/g,"pseudo-element":/::(?<name>[-\w\P{ASCII}]+)(?:\((?<argument>¶*)\))?/gu,"pseudo-class":/:(?<name>[-\w\P{ASCII}]+)(?:\((?<argument>¶*)\))?/gu,universal:/(?:(?<namespace>\*|[-\w\P{ASCII}]*)\|)?\*/gu,type:/(?:(?<namespace>\*|[-\w\P{ASCII}]*)\|)?(?<name>[-\w\P{ASCII}]+)/gu},TRIM_TOKENS=new Set(["combinator","comma"]),RECURSIVE_PSEUDO_CLASSES=new Set(["not","is","where","has","matches","-moz-any","-webkit-any","nth-child","nth-last-child"]),nthChildRegExp=/(?<index>[\dn+-]+)\s+of\s+(?<subtree>.+)/,RECURSIVE_PSEUDO_CLASSES_ARGS={"nth-child":nthChildRegExp,"nth-last-child":nthChildRegExp},getArgumentPatternByType=ua=>{switch(ua){case"pseudo-element":case"pseudo-class":return new RegExp(TOKENS[ua].source.replace("(?<argument>¶*)","(?<argument>.*)"),"gu");default:return TOKENS[ua]}};function gobbleParens(ua,J){let la=0,xa="";for(;J<ua.length;J++){const Aa=ua[J];switch(Aa){case"(":++la;break;case")":--la;break}if(xa+=Aa,la===0)return xa}return xa}function tokenizeBy(ua,J=TOKENS){if(!ua)return[];const la=[ua];for(const[Aa,ba]of Object.entries(J))for(let Sa=0;Sa<la.length;Sa++){const Ma=la[Sa];if(typeof Ma!="string")continue;ba.lastIndex=0;const Ra=ba.exec(Ma);if(!Ra)continue;const Ia=Ra.index-1,La=[],Fa=Ra[0],ka=Ma.slice(0,Ia+1);ka&&La.push(ka),La.push({...Ra.groups,type:Aa,content:Fa});const el=Ma.slice(Ia+Fa.length+1);el&&La.push(el),la.splice(Sa,1,...La)}let xa=0;for(const Aa of la)switch(typeof Aa){case"string":throw new Error(`Unexpected sequence ${Aa} found at index ${xa}`);case"object":xa+=Aa.content.length,Aa.pos=[xa-Aa.content.length,xa],TRIM_TOKENS.has(Aa.type)&&(Aa.content=Aa.content.trim()||" ");break}return la}const STRING_PATTERN=/(['"])([^\\\n]+?)\1/g,ESCAPE_PATTERN=/\\./g;function tokenize(ua,J=TOKENS){if(ua=ua.trim(),ua==="")return[];const la=[];ua=ua.replace(ESCAPE_PATTERN,(ba,Sa)=>(la.push({value:ba,offset:Sa}),"".repeat(ba.length))),ua=ua.replace(STRING_PATTERN,(ba,Sa,Ma,Ra)=>(la.push({value:ba,offset:Ra}),`${Sa}${"".repeat(Ma.length)}${Sa}`));{let ba=0,Sa;for(;(Sa=ua.indexOf("(",ba))>-1;){const Ma=gobbleParens(ua,Sa);la.push({value:Ma,offset:Sa}),ua=`${ua.substring(0,Sa)}(${"¶".repeat(Ma.length-2)})${ua.substring(Sa+Ma.length)}`,ba=Sa+Ma.length}}const xa=tokenizeBy(ua,J),Aa=new Set;for(const ba of la.reverse())for(const Sa of xa){const{offset:Ma,value:Ra}=ba;if(!(Sa.pos[0]<=Ma&&Ma+Ra.length<=Sa.pos[1]))continue;const{content:Ia}=Sa,La=Ma-Sa.pos[0];Sa.content=Ia.slice(0,La)+Ra+Ia.slice(La+Ra.length),Sa.content!==Ia&&Aa.add(Sa)}for(const ba of Aa){const Sa=getArgumentPatternByType(ba.type);if(!Sa)throw new Error(`Unknown token type: ${ba.type}`);Sa.lastIndex=0;const Ma=Sa.exec(ba.content);if(!Ma)throw new Error(`Unable to parse content for ${ba.type}: ${ba.content}`);Object.assign(ba,Ma.groups)}return xa}function nestTokens(ua,{list:J=!0}={}){if(J&&ua.find(la=>la.type==="comma")){const la=[],xa=[];for(let Aa=0;Aa<ua.length;Aa++)if(ua[Aa].type==="comma"){if(xa.length===0)throw new Error("Incorrect comma at "+Aa);la.push(nestTokens(xa,{list:!1})),xa.length=0}else xa.push(ua[Aa]);if(xa.length===0)throw new Error("Trailing comma");return la.push(nestTokens(xa,{list:!1})),{type:"list",list:la}}for(let la=ua.length-1;la>=0;la--){let xa=ua[la];if(xa.type==="combinator"){let Aa=ua.slice(0,la),ba=ua.slice(la+1);return Aa.length===0?{type:"relative",combinator:xa.content,right:nestTokens(ba)}:{type:"complex",combinator:xa.content,left:nestTokens(Aa),right:nestTokens(ba)}}}switch(ua.length){case 0:throw new Error("Could not build AST.");case 1:return ua[0];default:return{type:"compound",list:[...ua]}}}function*flatten$1(ua,J){switch(ua.type){case"list":for(let la of ua.list)yield*flatten$1(la,ua);break;case"complex":yield*flatten$1(ua.left,ua),yield*flatten$1(ua.right,ua);break;case"relative":yield*flatten$1(ua.right,ua);break;case"compound":yield*ua.list.map(la=>[la,ua]);break;default:yield[ua,J]}}function walk(ua,J,la){if(ua)for(const[xa,Aa]of flatten$1(ua,la))J(xa,Aa)}function parse$3(ua,{recursive:J=!0,list:la=!0}={}){const xa=tokenize(ua);if(!xa)return;const Aa=nestTokens(xa,{list:la});if(!J)return Aa;for(const[ba]of flatten$1(Aa)){if(ba.type!=="pseudo-class"||!ba.argument||!RECURSIVE_PSEUDO_CLASSES.has(ba.name))continue;let Sa=ba.argument;const Ma=RECURSIVE_PSEUDO_CLASSES_ARGS[ba.name];if(Ma){const Ra=Ma.exec(Sa);if(!Ra)continue;Object.assign(ba,Ra.groups),Sa=Ra.groups.subtree}Sa&&Object.assign(ba,{subtree:parse$3(Sa,{recursive:!0,list:!0})})}return Aa}function stringify$2(ua){if(Array.isArray(ua))return ua.map(J=>J.content).join("");switch(ua.type){case"list":return ua.list.map(stringify$2).join(",");case"relative":return ua.combinator+stringify$2(ua.right);case"complex":return stringify$2(ua.left)+ua.combinator+stringify$2(ua.right);case"compound":return ua.list.map(stringify$2).join("");default:return ua.content}}function specificityToNumber(ua,J){return J=J||Math.max(...ua)+1,ua[0]*(J<<1)+ua[1]*J+ua[2]}function specificity(ua){let J=ua;if(typeof J=="string"&&(J=parse$3(J,{recursive:!0})),!J)return[];if(J.type==="list"&&"list"in J){let xa=10;const Aa=J.list.map(Sa=>{const Ma=specificity(Sa);return xa=Math.max(xa,...specificity(Sa)),Ma}),ba=Aa.map(Sa=>specificityToNumber(Sa,xa));return Aa[ba.indexOf(Math.max(...ba))]}const la=[0,0,0];for(const[xa]of flatten$1(J))switch(xa.type){case"id":la[0]++;break;case"class":case"attribute":la[1]++;break;case"pseudo-element":case"type":la[2]++;break;case"pseudo-class":if(xa.name==="where")break;if(!RECURSIVE_PSEUDO_CLASSES.has(xa.name)||!xa.subtree){la[1]++;break}specificity(xa.subtree).forEach((ba,Sa)=>la[Sa]+=ba),(xa.name==="nth-child"||xa.name==="nth-last-child")&&la[1]++}return la}const parsel=Object.freeze(Object.defineProperty({__proto__:null,RECURSIVE_PSEUDO_CLASSES,RECURSIVE_PSEUDO_CLASSES_ARGS,TOKENS,TRIM_TOKENS,flatten:flatten$1,gobbleParens,parse:parse$3,specificity,specificityToNumber,stringify:stringify$2,tokenize,tokenizeBy,walk},Symbol.toStringTag,{value:"Module"})),require$$2$1=getAugmentedNamespace(parsel);var dist$7,hasRequiredDist$5;function requireDist$5(){if(hasRequiredDist$5)return dist$7;hasRequiredDist$5=1;var ua=Object.create,J=Object.defineProperty,la=Object.getOwnPropertyDescriptor,xa=Object.getOwnPropertyNames,Aa=Object.getPrototypeOf,ba=Object.prototype.hasOwnProperty,Sa=(ac,Cc)=>{for(var _c in Cc)J(ac,_c,{get:Cc[_c],enumerable:!0})},Ma=(ac,Cc,_c,Dc)=>{if(Cc&&typeof Cc=="object"||typeof Cc=="function")for(let Uc of xa(Cc))!ba.call(ac,Uc)&&Uc!==_c&&J(ac,Uc,{get:()=>Cc[Uc],enumerable:!(Dc=la(Cc,Uc))||Dc.enumerable});return ac},Ra=(ac,Cc,_c)=>(_c=ac!=null?ua(Aa(ac)):{},Ma(J(_c,"default",{value:ac,enumerable:!0}),ac)),Ia=ac=>Ma(J({},"__esModule",{value:!0}),ac),La={};Sa(La,{applySelector:()=>ql,applySelectorAST:()=>sc,directionToVec:()=>rl,getElementById:()=>Gl,getElementId:()=>Kl,getReadableNameForElement:()=>Zl,getReadableNameForPcbPort:()=>Wl,getReadableNameForPcbSmtpad:()=>tc,getReadableNameForPcbTrace:()=>kl,oppositeDirection:()=>dl,oppositeSide:()=>gl,rotateClockwise:()=>nl,rotateCounterClockwise:()=>sl,rotateDirection:()=>ll,su:()=>el,transformPCBElement:()=>Cl,transformPCBElements:()=>Ll,transformSchematicElement:()=>_l,transformSchematicElements:()=>vl,vecToDirection:()=>il}),dist$7=Ia(La);var Fa=Ra(requireDist$6()),ka=(ac,Cc={})=>{let _c=ac._internal_store;if(!_c){_c={counts:{}},ac._internal_store=_c;for(const Uc of ac){const Oc=Uc.type,jc=Uc[`${Oc}_id`];if(!jc)continue;const Bc=Number.parseInt(jc.split("_").pop());Number.isNaN(Bc)||(_c.counts[Oc]=Math.max(_c.counts[Oc]??0,Bc))}}return new Proxy({},{get:(Uc,Oc)=>Oc==="toArray"?()=>ac:{get:jc=>ac.find(Bc=>Bc.type===Oc&&Bc[`${Oc}_id`]===jc),getUsing:jc=>{const Bc=Object.keys(jc);if(Bc.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const vc=Bc[0],Mc=vc.replace("_id",""),kc=ac.find(Jc=>Jc.type===Mc&&Jc[vc]===jc[vc]);return kc?ac.find(Jc=>Jc.type===Oc&&Jc[`${Oc}_id`]===kc[`${Oc}_id`]):null},getWhere:jc=>{const Bc=Object.keys(jc);return ac.find(vc=>vc.type===Oc&&Bc.every(Mc=>vc[Mc]===jc[Mc]))},list:jc=>{const Bc=jc?Object.keys(jc):[];return ac.filter(vc=>vc.type===Oc&&Bc.every(Mc=>vc[Mc]===jc[Mc]))},insert:jc=>{var Mc;(Mc=_c.counts)[Oc]??(Mc[Oc]=-1),_c.counts[Oc]++;const Bc=_c.counts[Oc],vc={type:Oc,[`${Oc}_id`]:`${Oc}_${Bc}`,...jc};return Cc.validateInserts&&(Fa[Oc]??Fa.any_soup_element).parse(vc),ac.push(vc),vc},delete:jc=>{const Bc=ac.find(vc=>vc[`${Oc}_id`]===jc);Bc&&ac.splice(ac.indexOf(Bc),1)},update:(jc,Bc)=>{const vc=ac.find(Mc=>Mc[`${Oc}_id`]===jc);if(vc)return Object.assign(vc,Bc),vc},select:jc=>{if(Oc==="source_component")return ac.find(Bc=>Bc.type==="source_component"&&Bc.name===jc.replace(/\./g,""));if(Oc==="pcb_port"||Oc==="source_port"||Oc==="schematic_port"){const[Bc,vc]=jc.replace(/\./g,"").split(/[\s\>]+/),Mc=ac.find(Jc=>Jc.type==="source_component"&&Jc.name===Bc);if(!Mc)return null;const kc=ac.find(Jc=>Jc.type==="source_port"&&Jc.source_component_id===Mc.source_component_id&&(Jc.name===vc||(Jc.port_hints??[]).includes(vc)));if(!kc)return null;if(Oc==="source_port")return kc;if(Oc==="pcb_port")return ac.find(Jc=>Jc.type==="pcb_port"&&Jc.source_port_id===kc.source_port_id);if(Oc==="schematic_port")return ac.find(Jc=>Jc.type==="schematic_port"&&Jc.source_port_id===kc.source_port_id)}}}})};ka.unparsed=ka;var el=ka,tl=require$$0,rl=ac=>{if(ac==="up")return{x:0,y:1};if(ac==="down")return{x:0,y:-1};if(ac==="left")return{x:-1,y:0};if(ac==="right")return{x:1,y:0};throw new Error("Invalid direction")},il=({x:ac,y:Cc})=>{if(ac>Cc&&(Cc=0),Cc>ac&&(ac=0),ac>0&&Cc===0)return"right";if(ac<0&&Cc===0)return"left";if(ac===0&&Cc>0)return"up";if(ac===0&&Cc<0)return"down";throw new Error(`Invalid vector for direction conversion (${ac}, ${Cc})`)},nl=ac=>{if(ac==="up")return"right";if(ac==="right")return"down";if(ac==="down")return"left";if(ac==="left")return"up";throw new Error(`Invalid direction: ${ac}`)},sl=ac=>{if(ac==="up")return"left";if(ac==="left")return"down";if(ac==="down")return"right";if(ac==="right")return"up";throw new Error(`Invalid direction: ${ac}`)},ll=(ac,Cc)=>{for(;Cc>0;)ac=nl(ac),Cc--;for(;Cc<0;)ac=sl(ac),Cc++;return ac},dl=ac=>{if(ac==="up")return"down";if(ac==="down")return"up";if(ac==="left")return"right";if(ac==="right")return"left";throw new Error(`Invalid direction: ${ac}`)},gl=ac=>{if(ac==="top"||ac==="up")return"bottom";if(ac==="bottom"||ac==="down")return"top";if(ac==="left")return"right";if(ac==="right")return"left";throw new Error(`Invalid sideOrDir: ${ac}`)},_l=(ac,Cc)=>{if(ac.type==="schematic_component")ac.center=(0,tl.applyToPoint)(Cc,ac.center);else if(ac.type==="schematic_port")ac.center=(0,tl.applyToPoint)(Cc,ac.center),ac.facing_direction&&(ac.facing_direction=ll(ac.facing_direction,-(Math.atan2(Cc.b,Cc.a)/Math.PI)*2));else if(ac.type==="schematic_text")ac.position=(0,tl.applyToPoint)(Cc,ac.position);else if(ac.type!=="schematic_trace"){if(ac.type==="schematic_box"){const{x:_c,y:Dc}=(0,tl.applyToPoint)(Cc,{x:ac.x,y:ac.y});ac.x=_c,ac.y=Dc}else if(ac.type==="schematic_line"){const{x:_c,y:Dc}=(0,tl.applyToPoint)(Cc,{x:ac.x1,y:ac.y1}),{x:Uc,y:Oc}=(0,tl.applyToPoint)(Cc,{x:ac.x2,y:ac.y2});ac.x1=_c,ac.y1=Dc,ac.x2=Uc,ac.y2=Oc}}return ac},vl=(ac,Cc)=>ac.map(_c=>_l(_c,Cc)),Cl=(ac,Cc)=>{if(ac.type==="pcb_plated_hole"||ac.type==="pcb_hole"||ac.type==="pcb_via"||ac.type==="pcb_smtpad"||ac.type==="pcb_port"){const{x:_c,y:Dc}=(0,tl.applyToPoint)(Cc,{x:ac.x,y:ac.y});ac.x=_c,ac.y=Dc}else if(ac.type==="pcb_keepout")ac.center=(0,tl.applyToPoint)(Cc,ac.center);else if(ac.type==="pcb_silkscreen_text"||ac.type==="pcb_fabrication_note_text")ac.anchor_position=(0,tl.applyToPoint)(Cc,ac.anchor_position);else if(ac.type==="pcb_silkscreen_circle"||ac.type==="pcb_silkscreen_rect"||ac.type==="pcb_component")ac.center=(0,tl.applyToPoint)(Cc,ac.center);else if(ac.type==="pcb_silkscreen_path"||ac.type==="pcb_trace"||ac.type==="pcb_fabrication_note_path")ac.route=ac.route.map(_c=>{const Dc=(0,tl.applyToPoint)(Cc,_c);return _c.x=Dc.x,_c.y=Dc.y,_c});else if(ac.type==="pcb_silkscreen_line"){const _c={x:ac.x1,y:ac.y1},Dc={x:ac.x2,y:ac.y2},Uc=(0,tl.applyToPoint)(Cc,_c),Oc=(0,tl.applyToPoint)(Cc,Dc);ac.x1=Uc.x,ac.y1=Uc.y,ac.x2=Oc.x,ac.y2=Oc.y}else if(ac.type==="cad_component"){const _c=(0,tl.applyToPoint)(Cc,{x:ac.position.x,y:ac.position.y});ac.position.x=_c.x,ac.position.y=_c.y}return ac},Ll=(ac,Cc)=>{const _c=(0,tl.decomposeTSR)(Cc),Dc=Math.round(_c.rotation.angle/(Math.PI/2))%2===1;let Uc=ac.map(Oc=>Cl(Oc,Cc));return Dc&&(Uc=Uc.map(Oc=>(Oc.type==="pcb_smtpad"&&Oc.shape==="rect"&&([Oc.width,Oc.height]=[Oc.height,Oc.width]),Oc))),Uc},Il=Ra(require$$2$1),Fl=ac=>{switch(ac){case"port":return"source_port";case"net":return"source_net";case"power":return"simple_power_source"}return ac},Ol=(ac,Cc)=>(Cc=Fl(Cc),ac.filter(_c=>"ftype"in _c&&_c.ftype===Cc||_c.type===Cc)),ql=(ac,Cc)=>{const _c=Il.parse(Cc);return sc(ac,_c)},rc=(ac,Cc)=>{var _c;return"name"in ac&&ac.name===Cc||"port_hints"in ac&&((_c=ac.port_hints)==null?void 0:_c.includes(Cc))},sc=(ac,Cc)=>{switch(Cc.type){case"complex":{switch(Cc.combinator){case" ":case">":{const{left:_c,right:Dc}=Cc;if(_c.type==="class"||_c.type==="type"){let Uc;_c.type==="class"?Uc=ac.filter(jc=>rc(jc,_c.name)):_c.type==="type"?Uc=Ol(ac,_c.name):Uc=[];const Oc=Uc.flatMap(jc=>ac.filter(Bc=>Bc[`${jc.type}_id`]===jc[`${jc.type}_id`]&&Bc!==jc));return sc(Oc,Dc)}else throw new Error(`unsupported selector type "${_c.type}" `)}default:throw new Error(`Couldn't apply selector AST for complex combinator "${Cc.combinator}"`)}return[]}case"compound":{const _c=Cc.list.map(Dc=>{switch(Dc.type){case"class":return Uc=>rc(Uc,Dc.name);case"type":{const Uc=Fl(Dc.name);return Oc=>Oc.type===Uc}}});return ac.filter(Dc=>_c.every(Uc=>Uc==null?void 0:Uc(Dc)))}case"type":return Ol(ac,Cc.name);case"class":return ac.filter(_c=>rc(_c,Cc.name));default:throw new Error(`Couldn't apply selector AST for type: "${Cc.type}" ${JSON.stringify(Cc,null," ")}`)}},Kl=ac=>{const Cc=ac.type;return ac[`${Cc}_id`]},Gl=(ac,Cc)=>ac.find(_c=>Kl(_c)===Cc)??null;function kl(ac,Cc){const _c=ka(ac).pcb_trace.get(Cc);if(!_c)return`trace[${Cc}]`;const Dc=_c.route.flatMap(jc=>[jc.start_pcb_port_id,jc.end_pcb_port_id]).filter(Boolean);if(Dc.length===0)return`trace[${Cc}]`;function Uc(jc){const Bc=ka(ac).pcb_port.get(jc);if(!Bc)return null;const vc=ka(ac).pcb_component.get(Bc.pcb_component_id);if(!vc)return null;const Mc=ka(ac).source_component.get(vc.source_component_id);if(!Mc)return null;const kc=ka(ac).source_port.get(Bc.source_port_id),Jc=kc!=null&&kc.port_hints?kc.port_hints[1]:"";return{componentName:Mc.name,portHint:Jc}}return`trace[${Dc.map(jc=>{const Bc=Uc(jc);return Bc?`.${Bc.componentName} > port.${Bc.portHint}`:`port[${jc}]`}).join(", ")}]`}var Wl=(ac,Cc)=>{const _c=ka(ac).pcb_port.get(Cc);if(!_c)return`pcb_port[#${Cc}]`;const Dc=ka(ac).pcb_component.get(_c==null?void 0:_c.pcb_component_id);if(!Dc)return`pcb_port[#${Cc}]`;const Uc=ka(ac).source_component.get(Dc.source_component_id);if(!Uc)return`pcb_port[#${Cc}]`;const Oc=ka(ac).source_port.get(_c.source_port_id);if(!Oc)return`pcb_port[#${Cc}]`;let jc;return Oc!=null&&Oc.port_hints&&Oc.port_hints.length>0||Oc.port_hints&&Oc.port_hints.length>0?jc=Oc.port_hints[0]:jc=Cc,`pcb_port[.${Uc.name} > .${jc}]`};function tc(ac,Cc){const _c=ka(ac).pcb_smtpad.get(Cc);return!_c||!_c.pcb_port_id?`smtpad[${Cc}]`:Wl(ac,_c.pcb_port_id)}var Zl=(ac,Cc)=>{if(typeof Cc=="string"){const _c=Gl(ac,Cc);return Zl(ac,_c)}switch(Cc.type){case"pcb_port":return Wl(ac,Cc.pcb_port_id);case"pcb_smtpad":return tc(ac,Cc.pcb_smtpad_id);case"pcb_trace":return kl(ac,Cc.pcb_trace_id);case"source_component":return`source_component[${Cc.name}]`;default:return`${Cc.type}[#${Kl(Cc)}]`}};return dist$7}var distExports$3=requireDist$5(),performanceNow$1={exports:{}},performanceNow=performanceNow$1.exports,hasRequiredPerformanceNow;function requirePerformanceNow(){return hasRequiredPerformanceNow||(hasRequiredPerformanceNow=1,(function(){var ua,J,la,xa,Aa,ba;typeof performance<"u"&&performance!==null&&performance.now?performanceNow$1.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(performanceNow$1.exports=function(){return(ua()-Aa)/1e6},J=process.hrtime,ua=function(){var Sa;return Sa=J(),Sa[0]*1e9+Sa[1]},xa=ua(),ba=process.uptime()*1e9,Aa=xa-ba):Date.now?(performanceNow$1.exports=function(){return Date.now()-la},la=Date.now()):(performanceNow$1.exports=function(){return new Date().getTime()-la},la=new Date().getTime())}).call(performanceNow)),performanceNow$1.exports}requirePerformanceNow();function doesLineIntersectLine$1([ua,J],[la,xa],{lineThickness:Aa=0}={}){return Aa===0?doSegmentsIntersect$1(ua,J,la,xa):segmentsDistance$1(ua,J,la,xa)<=Aa}function doSegmentsIntersect$1(ua,J,la,xa){const Aa=orientation$1(ua,J,la),ba=orientation$1(ua,J,xa),Sa=orientation$1(la,xa,ua),Ma=orientation$1(la,xa,J);return!!(Aa!==ba&&Sa!==Ma||Aa===0&&onSegment$2(ua,la,J)||ba===0&&onSegment$2(ua,xa,J)||Sa===0&&onSegment$2(la,ua,xa)||Ma===0&&onSegment$2(la,J,xa))}function orientation$1(ua,J,la){const xa=(J.y-ua.y)*(la.x-J.x)-(J.x-ua.x)*(la.y-J.y);return xa===0?0:xa>0?1:2}function onSegment$2(ua,J,la){return J.x<=Math.max(ua.x,la.x)&&J.x>=Math.min(ua.x,la.x)&&J.y<=Math.max(ua.y,la.y)&&J.y>=Math.min(ua.y,la.y)}function segmentsDistance$1(ua,J,la,xa){if(ua.x===J.x&&ua.y===J.y)return pointToSegmentDistance$2(ua,la,xa);if(la.x===xa.x&&la.y===xa.y)return pointToSegmentDistance$2(la,ua,J);if(doSegmentsIntersect$1(ua,J,la,xa))return 0;const Aa=[pointToSegmentDistance$2(ua,la,xa),pointToSegmentDistance$2(J,la,xa),pointToSegmentDistance$2(la,ua,J),pointToSegmentDistance$2(xa,ua,J)];return Math.min(...Aa)}function pointToSegmentDistance$2(ua,J,la){const xa=(la.x-J.x)**2+(la.y-J.y)**2;if(xa===0)return distance$4(ua,J);let Aa=((ua.x-J.x)*(la.x-J.x)+(ua.y-J.y)*(la.y-J.y))/xa;Aa=Math.max(0,Math.min(1,Aa));const ba={x:J.x+Aa*(la.x-J.x),y:J.y+Aa*(la.y-J.y)};return distance$4(ua,ba)}function distance$4(ua,J){const la=ua.x-J.x,xa=ua.y-J.y;return Math.sqrt(la*la+xa*xa)}function findConnectedNetworks$1(ua){const J=new Map;let la=0;function xa(Aa){for(const[,Sa]of J)if(Sa.has(Aa))return Sa;const ba=new Set;return J.set(`connectivity_net${la++}`,ba),ba}for(const Aa of ua){let ba=null;for(const Sa of Aa){if(!ba)ba=xa(Sa);else if(!ba.has(Sa)){const Ma=xa(Sa);if(Ma!==ba){for(const Ra of Ma)ba.add(Ra);J.delete(Array.from(J.entries()).find(([,Ra])=>Ra===Ma)[0])}}ba.add(Sa)}}return Object.fromEntries(Array.from(J.entries()).map(([Aa,ba])=>[Aa,Array.from(ba)]))}var ConnectivityMap$1=class{constructor(J){jp(this,"netMap");jp(this,"idToNetMap");this.netMap=J,this.idToNetMap={};for(const[la,xa]of Object.entries(J))for(const Aa of xa)this.idToNetMap[Aa]=la}addConnections(J){for(const la of J){const xa=new Set;for(const ba of la){const Sa=this.idToNetMap[ba];Sa&&xa.add(Sa)}let Aa;if(xa.size===0)Aa=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[Aa]=[];else if(xa.size===1)Aa=xa.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{Aa=xa.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const ba of xa)if(ba!==Aa){this.netMap[Aa].push(...this.netMap[ba]),this.netMap[ba]=this.netMap[Aa];for(const Sa of this.netMap[Aa])this.idToNetMap[Sa]=Aa}}for(const ba of la)this.netMap[Aa].includes(ba)||this.netMap[Aa].push(ba),this.idToNetMap[ba]=Aa}}getIdsConnectedToNet(J){return this.netMap[J]||[]}getNetConnectedToId(J){return this.idToNetMap[J]}areIdsConnected(J,la){const xa=this.getNetConnectedToId(J),Aa=this.getNetConnectedToId(la);return xa===Aa||Aa===J||Aa===J}areAllIdsConnected(J){const la=this.getNetConnectedToId(J[0]);for(const xa of J){const Aa=this.getNetConnectedToId(xa);if(Aa===void 0||Aa!==la)return!1}return!0}},getFullConnectivityMapFromCircuitJson$1=ua=>{const J=[];for(const xa of ua)if(xa.type==="source_trace")J.push([xa.source_trace_id,...xa.connected_source_port_ids??[],...xa.connected_source_net_ids??[]].filter(Boolean));else if(xa.type==="pcb_port"){const{pcb_port_id:Aa,source_port_id:ba}=xa;ba&&Aa&&J.push([ba,Aa])}else if(xa.type==="pcb_smtpad"){const{pcb_smtpad_id:Aa,pcb_port_id:ba}=xa;ba&&Aa&&J.push([Aa,ba])}else if(xa.type==="pcb_plated_hole"){const{pcb_plated_hole_id:Aa,pcb_port_id:ba}=xa;ba&&Aa&&J.push([Aa,ba])}else if(xa.type==="pcb_trace"){const{pcb_trace_id:Aa,source_trace_id:ba}=xa;ba&&Aa&&J.push([Aa,ba])}const la=findConnectedNetworks$1(J);return new ConnectivityMap$1(la)},PcbConnectivityMap=class{constructor(ua){jp(this,"circuitJson");jp(this,"traceIdToElm");jp(this,"portIdToElm");jp(this,"connMap");this.circuitJson=ua||[],this.traceIdToElm=new Map,this.portIdToElm=new Map,ua?(this._buildTraceMap(),this._buildPortMap(),this.connMap=this._buildTraceConnectivityMap()):this.connMap=new ConnectivityMap$1({})}_buildPortMap(){for(const ua of this.circuitJson)ua.type==="pcb_port"&&this.portIdToElm.set(ua.pcb_port_id,ua)}_buildTraceMap(){for(const ua of this.circuitJson)ua.type==="pcb_trace"&&this.traceIdToElm.set(ua.pcb_trace_id,ua)}_buildTraceConnectivityMap(){const ua=[],J=Array.from(this.traceIdToElm.keys());for(let la=0;la<J.length;la++)for(let xa=la+1;xa<J.length;xa++){const Aa=this.traceIdToElm.get(J[la]),ba=this.traceIdToElm.get(J[xa]);this._arePcbTracesConnected(Aa,ba)&&ua.push([J[la],J[xa]])}for(const la of this.portIdToElm.values())for(const xa of this.traceIdToElm.values())for(const Aa of xa.route)Aa.route_type==="wire"&&(Aa.start_pcb_port_id===la.pcb_port_id?ua.push([la.pcb_port_id,xa.pcb_trace_id]):Aa.end_pcb_port_id===la.pcb_port_id&&ua.push([xa.pcb_trace_id,la.pcb_port_id]));return new ConnectivityMap$1(findConnectedNetworks$1(ua))}addTrace(ua){this.traceIdToElm.set(ua.pcb_trace_id,ua);const J=[];for(const la of ua.route)la.route_type==="wire"&&(la.start_pcb_port_id&&J.push([la.start_pcb_port_id,ua.pcb_trace_id]),la.end_pcb_port_id&&J.push([la.end_pcb_port_id,ua.pcb_trace_id]));this.connMap.addConnections(J)}_arePcbTracesConnected(ua,J){for(let la=0;la<ua.route.length-1;la++){const xa=ua.route[la],Aa=ua.route[la+1];if(xa.route_type==="wire"&&Aa.route_type==="wire")for(let ba=0;ba<J.route.length-1;ba++){const Sa=J.route[ba],Ma=J.route[ba+1];if(Sa.route_type!=="wire"||Ma.route_type!=="wire")continue;if(doesLineIntersectLine$1([xa,Aa],[Sa,Ma],{lineThickness:(xa.width+Sa.width)/2}))return!0}}return!1}areTracesConnected(ua,J){return this.connMap.areIdsConnected(ua,J)}getAllTracesConnectedToTrace(ua){const J=this.connMap.getNetConnectedToId(ua);return J?this.connMap.getIdsConnectedToNet(J).filter(la=>this.traceIdToElm.has(la)).map(la=>this.traceIdToElm.get(la)):[]}getAllTracesConnectedToPort(ua){const J=this.connMap.getNetConnectedToId(ua);return J?this.connMap.getIdsConnectedToNet(J).filter(la=>this.traceIdToElm.has(la)).map(la=>this.traceIdToElm.get(la)):[]}};function getBoundingBox(ua){const J=ua.width/2,la=ua.height/2;return{minX:ua.center.x-J,maxX:ua.center.x+J,minY:ua.center.y-la,maxY:ua.center.y+la}}function computeDistanceBetweenBoxes(ua,J){const la=getBoundingBox(ua),xa=getBoundingBox(J),Aa=Math.max(la.minX-xa.maxX,xa.minX-la.maxX,0),ba=Math.max(la.minY-xa.maxY,xa.minY-la.maxY,0),Sa={x:0,y:0},Ma={x:0,y:0};return Aa===0&&ba===0?{distance:0,pointA:ua.center,pointB:J.center}:(Sa.x=clamp$7(ua.center.x,xa.minX,xa.maxX),Sa.y=clamp$7(ua.center.y,xa.minY,xa.maxY),Ma.x=clamp$7(J.center.x,la.minX,la.maxX),Ma.y=clamp$7(J.center.y,la.minY,la.maxY),{distance:Math.hypot(Sa.x-Ma.x,Sa.y-Ma.y),pointA:Sa,pointB:Ma})}function clamp$7(ua,J,la){return Math.max(J,Math.min(la,ua))}function findNearestPointsBetweenBoxSets(ua,J){let la=Number.POSITIVE_INFINITY,xa={x:0,y:0},Aa={x:0,y:0};for(const ba of ua)for(const Sa of J){const{distance:Ma,pointA:Ra,pointB:Ia}=computeDistanceBetweenBoxes(ba,Sa);Ma<la&&(la=Ma,xa=Ra,Aa=Ia)}return{pointA:xa,pointB:Aa,distance:la}}var manDist=(ua,J)=>Math.abs(ua.x-J.x)+Math.abs(ua.y-J.y),dirFromAToB=(ua,J)=>{const la=J.x-ua.x,xa=J.y-ua.y;return Math.abs(la)>Math.abs(xa)?{dx:Math.sign(la),dy:0}:{dx:0,dy:Math.sign(xa)}},distAlongDir=(ua,J,la)=>Math.abs(ua.x-J.x)*Math.abs(la.dx)+Math.abs(ua.y-J.y)*Math.abs(la.dy),nodeName=(ua,J=.1)=>`${Math.round(ua.x/J)},${Math.round(ua.y/J)}`,isCloseTo=(ua,J)=>Math.abs(ua-J)<1e-4,getObstaclesFromRoute=(ua,J,{viaDiameter:la=.5}={})=>{const xa=[];for(let Aa=0;Aa<ua.length-1;Aa++){const[ba,Sa]=[ua[Aa],ua[Aa+1]],Ma=Aa-1>=0?ua[Aa-1]:null,Ra=isCloseTo(ba.y,Sa.y),Ia=isCloseTo(ba.x,Sa.x);if(!Ra&&!Ia)throw new Error(`getObstaclesFromTrace currently only supports horizontal and vertical traces (not diagonals) Conflicting trace: ${J}, start: (${ba.x}, ${ba.y}), end: (${Sa.x}, ${Sa.y})`);const La={type:"rect",layers:[ba.layer],center:{x:(ba.x+Sa.x)/2,y:(ba.y+Sa.y)/2},width:Ra?Math.abs(ba.x-Sa.x):.1,height:Ia?Math.abs(ba.y-Sa.y):.1,connectedTo:[J]};if(xa.push(La),Ma&&Ma.layer===ba.layer&&ba.layer!==Sa.layer){const Fa={type:"rect",layers:[ba.layer,Sa.layer],center:{x:ba.x,y:ba.y},connectedTo:[J],width:la,height:la};xa.push(Fa)}}return xa},ObstacleList=class{constructor(ua){jp(this,"obstacles");jp(this,"GRID_STEP",.1);this.obstacles=ua.map(J=>({...J,left:J.center.x-J.width/2,right:J.center.x+J.width/2,top:J.center.y+J.height/2,bottom:J.center.y-J.height/2}))}getObstacleAt(ua,J,la){la??(la=this.GRID_STEP);for(const xa of this.obstacles){const Aa=xa.width/2+la,ba=xa.height/2+la;if(ua>=xa.center.x-Aa&&ua<=xa.center.x+Aa&&J>=xa.center.y-ba&&J<=xa.center.y+ba)return xa}return null}isObstacleAt(ua,J,la){return this.getObstacleAt(ua,J,la)!==null}getDirectionDistancesToNearestObstacle(ua,J){const{GRID_STEP:la}=this,xa={left:1/0,top:1/0,bottom:1/0,right:1/0};for(const Aa of this.obstacles)if(Aa.type==="rect"){const ba=Aa.center.x-Aa.width/2-la,Sa=Aa.center.x+Aa.width/2+la,Ma=Aa.center.y+Aa.height/2+la,Ra=Aa.center.y-Aa.height/2-la;J>=Ra&&J<=Ma&&ua>ba&&(xa.left=Math.min(xa.left,ua-Sa)),J>=Ra&&J<=Ma&&ua<Sa&&(xa.right=Math.min(xa.right,ba-ua)),ua>=ba&&ua<=Sa&&J<Ma&&(xa.top=Math.min(xa.top,Ra-J)),ua>=ba&&ua<=Sa&&J>Ra&&(xa.bottom=Math.min(xa.bottom,J-Ma))}return xa}getOrthoDirectionCollisionInfo(ua,J,{margin:la=0}={}){const{x:xa,y:Aa}=ua,{dx:ba,dy:Sa}=J;let Ma=1/0,Ra=null;for(const Ia of this.obstacles){const La=Ia.left-la,Fa=Ia.right+la,ka=Ia.top+la,el=Ia.bottom-la;let tl=null;ba===1&&Sa===0?Aa>el&&Aa<ka&&xa<Ia.left&&(tl=Ia.left-xa):ba===-1&&Sa===0?Aa>el&&Aa<ka&&xa>Ia.right&&(tl=xa-Ia.right):ba===0&&Sa===1?xa>La&&xa<Fa&&Aa<Ia.bottom&&(tl=Ia.bottom-Aa):ba===0&&Sa===-1&&xa>La&&xa<Fa&&Aa>Ia.top&&(tl=Aa-Ia.top),tl!==null&&tl<Ma&&(Ma=tl,Ra=Ia)}return{dx:ba,dy:Sa,wallDistance:Ma,obstacle:Ra}}getObstaclesOverlappingRegion(ua){const J=[];for(const la of this.obstacles){const{left:xa,right:Aa,top:ba,bottom:Sa}=la;xa<=ua.maxX&&Aa>=ua.minX&&ba<=ua.maxY&&Sa>=ua.minY&&J.push(la)}return J}};function removePathLoops(ua){if(ua.length<4)return ua;const J=[{...ua[0]}];let la=ua[0].layer;for(let xa=1;xa<ua.length;xa++){const Aa={start:ua[xa-1],end:ua[xa]},ba=ua[xa].route_type==="via"||ua[xa-1].route_type==="via";if(ua[xa].layer!==la||ba){J.push({...ua[xa]}),la=ua[xa].layer;continue}let Sa=!1,Ma=null,Ra=-1;for(let La=0;La<J.length-1;La++){const Fa={start:J[La],end:J[La+1]};if(Fa.start.layer===Aa.start.layer&&Fa.start.layer===Aa.start.layer){const ka=findIntersection(Fa,Aa);if(ka){Sa=!0,Ma={...ka,layer:la},Ra=La;break}}}Sa&&Ma&&(J.splice(Ra+1),J.push(Ma));const Ia=J[J.length-1];(Ia.x!==ua[xa].x||Ia.y!==ua[xa].y)&&J.push(ua[xa])}return J}function findIntersection(ua,J){if(ua.start.x===ua.end.x&&J.start.x===J.end.x||ua.start.y===ua.end.y&&J.start.y===J.end.y)return null;let la;if(ua.start.x===ua.end.x){const xa=ua.start.x,Aa=J.start.y;la={...ua.start,x:xa,y:Aa}}else{const xa=J.start.x,Aa=ua.start.y;la={...ua.start,x:xa,y:Aa}}return isPointInSegment(la,ua)&&isPointInSegment(la,J)?la:null}function isPointInSegment(ua,J){return ua.x>=Math.min(J.start.x,J.end.x)&&ua.x<=Math.max(J.start.x,J.end.x)&&ua.y>=Math.min(J.start.y,J.end.y)&&ua.y<=Math.max(J.start.y,J.end.y)}function addViasWhenLayerChanges(ua){const J=[ua[0]];for(let la=1;la<ua.length-1;la++){const[xa,Aa,ba]=[ua[la-1],ua[la],ua[la+1]];J.push(Aa),!(Aa.route_type!=="wire"||xa.route_type!=="wire"||ba.route_type!=="wire")&&xa.layer===Aa.layer&&Aa.layer!==ba.layer&&J.push({route_type:"via",from_layer:Aa.layer,to_layer:ba.layer,x:Aa.x,y:Aa.y})}return J.push(ua[ua.length-1]),J}Debug$1("autorouter:shortenPathWithShortcuts");function shortenPathWithShortcuts(ua,J){if(ua.length<=2)return ua;const la=[ua[0]];for(let xa=1;xa<ua.length;xa++){const Aa={start:la[la.length-1],end:ua[xa]};let ba=-1;const Sa=Aa.start.x===Aa.end.x,Ma=Aa.start.y===Aa.end.y;for(let Ra=xa+1;Ra<ua.length;Ra++){if(Ra<=ba)continue;const Ia={start:ua[Ra],end:ua[Ra+1]};if(!Ia.end)continue;const La=Ia.start.x===Ia.end.x,Fa=Ia.start.y===Ia.end.y,ka=Sa&&La,el=Ma&&Fa;if(el&&ka||!(ka||el))continue;let rl=!1;const il=Math.min(Aa.start.x,Aa.end.x),nl=Math.max(Aa.start.x,Aa.end.x),sl=Math.min(Ia.start.x,Ia.end.x),ll=Math.max(Ia.start.x,Ia.end.x),dl=Math.min(Aa.start.y,Aa.end.y),gl=Math.max(Aa.start.y,Aa.end.y),_l=Math.min(Ia.start.y,Ia.end.y),vl=Math.max(Ia.start.y,Ia.end.y);if(el?rl=il<=ll&&nl>=sl:ka&&(rl=dl<=vl&&gl>=_l),!rl)continue;const Cl=[],Ll=la[la.length-1],Il=ua[Ra+2];if(!Il)continue;el&&sl<nl&&Il.x===sl&&Cl.push({x:sl,y:Aa.start.y,layer:Aa.start.layer}),el&&ll>il&&Il.x===ll&&Cl.push({x:ll,y:Aa.start.y,layer:Aa.start.layer}),ka&&_l<gl&&Il.y===_l&&Cl.push({x:Aa.start.x,y:_l,layer:Aa.start.layer}),ka&&vl>dl&&Il.y===vl&&Cl.push({x:Aa.start.x,y:vl,layer:Aa.start.layer});let Fl=null;for(const Ol of Cl)if(!(J(Ll,Ol)||J(Il,Ol))){Fl=Ol;break}if(Fl){la.push(Fl),xa=Ra+1,ba=Ra+1;break}}ba===-1&&la.push(ua[xa])}return la[la.length-1]!==ua[ua.length-1]&&la.push(ua[ua.length-1]),la}var debug2$2=Debug$1("autorouting-dataset:astar"),GeneralizedAstarAutorouter=class{constructor(ua){jp(this,"openSet",[]);jp(this,"closedSet",new Set);jp(this,"debug",!1);jp(this,"debugSolutions");jp(this,"debugMessage",null);jp(this,"debugTraceCount",0);jp(this,"input");jp(this,"obstacles");jp(this,"allObstacles");jp(this,"startNode");jp(this,"goalPoint");jp(this,"GRID_STEP");jp(this,"OBSTACLE_MARGIN");jp(this,"MAX_ITERATIONS");jp(this,"isRemovePathLoopsEnabled");jp(this,"isShortenPathWithShortcutsEnabled");jp(this,"GREEDY_MULTIPLIER",1.1);jp(this,"iterations",-1);this.input=ua.input,this.allObstacles=ua.input.obstacles,this.startNode=ua.startNode,this.goalPoint=ua.goalPoint?{l:0,...ua.goalPoint}:void 0,this.GRID_STEP=ua.GRID_STEP??.1,this.OBSTACLE_MARGIN=ua.OBSTACLE_MARGIN??.15,this.MAX_ITERATIONS=ua.MAX_ITERATIONS??100,this.debug=ua.debug??debug2$2.enabled,this.isRemovePathLoopsEnabled=ua.isRemovePathLoopsEnabled??!1,this.isShortenPathWithShortcutsEnabled=ua.isShortenPathWithShortcutsEnabled??!1,this.debug&&(debug2$2.enabled=!0),debug2$2.enabled&&(this.debugSolutions={},this.debugMessage="")}getNeighbors(ua){return[]}isSameNode(ua,J){return manDist(ua,J)<this.GRID_STEP}computeG(ua,J){return ua.g+manDist(ua,J)}computeH(ua){return manDist(ua,this.goalPoint)}getNodeName(ua){return nodeName(ua,this.GRID_STEP)}solveOneStep(){this.iterations+=1;const{openSet:ua,closedSet:J,GRID_STEP:la,goalPoint:xa}=this;ua.sort((Ma,Ra)=>Ma.f-Ra.f);const Aa=ua.shift();if(this.computeH(Aa)<=la*2)return{solved:!0,current:Aa,newNeighbors:[]};this.closedSet.add(this.getNodeName(Aa));let Sa=[];for(const Ma of this.getNeighbors(Aa)){if(J.has(this.getNodeName(Ma)))continue;const Ra=this.computeG(Aa,Ma),Ia=this.openSet.find(La=>this.isSameNode(La,Ma));if(!Ia||Ra<Ia.g){const La=this.computeH(Ma),Fa=Ra+La*this.GREEDY_MULTIPLIER,ka={...Ma,g:Ra,h:La,f:Fa,obstacleHit:Ma.obstacleHit??void 0,manDistFromParent:manDist(Aa,Ma),nodesInPath:Aa.nodesInPath+1,parent:Aa,enterMarginCost:Ma.enterMarginCost,travelMarginCostFactor:Ma.travelMarginCostFactor};ua.push(ka),Sa.push(ka)}}return debug2$2.enabled&&(ua.sort((Ma,Ra)=>Ma.f-Ra.f),this.drawDebugSolution({current:Aa,newNeighbors:Sa})),{solved:!1,current:Aa,newNeighbors:Sa}}getStartNode(ua){return{x:ua.pointsToConnect[0].x,y:ua.pointsToConnect[0].y,manDistFromParent:0,f:0,g:0,h:0,nodesInPath:0,parent:null}}layerToIndex(ua){return 0}indexToLayer(ua){return"top"}preprocessConnectionBeforeSolving(ua){return ua}solveConnection(ua){if(ua.pointsToConnect.length>2)throw new Error("GeneralizedAstarAutorouter doesn't currently support 2+ points in a connection");ua=this.preprocessConnectionBeforeSolving(ua);const{pointsToConnect:J}=ua;for(this.iterations=0,this.closedSet=new Set,this.startNode=this.getStartNode(ua),this.goalPoint={...J[J.length-1],l:this.layerToIndex(J[J.length-1].layer)},this.openSet=[this.startNode];this.iterations<this.MAX_ITERATIONS;){const{solved:la,current:xa}=this.solveOneStep();if(la){let Aa=[],ba=xa;for(;ba;){const Sa=ba.l;Aa.unshift({x:ba.x,y:ba.y,layer:Sa!==void 0?this.indexToLayer(Sa):J[0].layer}),ba=ba.parent}return debug2$2.enabled&&(this.debugMessage+=`t${this.debugTraceCount}: ${this.iterations} iterations
7535
7535
  `),this.isRemovePathLoopsEnabled&&(Aa=removePathLoops(Aa)),this.isShortenPathWithShortcutsEnabled&&(Aa=shortenPathWithShortcuts(Aa,(Sa,Ma)=>{if(Sa.x===Ma.x&&Sa.y===Ma.y)return!1;const Ra=this.obstacles.getOrthoDirectionCollisionInfo({x:Sa.x,y:Sa.y,l:this.layerToIndex(Sa.layer)??0},{dx:Math.sign(Ma.x-Sa.x),dy:Math.sign(Ma.y-Sa.y),dl:0},{margin:.05}),Ia=Math.sqrt((Sa.x-Ma.x)**2+(Sa.y-Ma.y)**2);return Ra.wallDistance<Ia})),{solved:!0,route:Aa,connectionName:ua.name}}if(this.openSet.length===0)break}return debug2$2.enabled&&(this.debugMessage+=`t${this.debugTraceCount}: ${this.iterations} iterations (failed)
7536
- `),{solved:!1,connectionName:ua.name}}createObstacleList({dominantLayer:ua,connection:J,obstaclesFromTraces:la}){return new ObstacleList(this.allObstacles.filter(xa=>!xa.connectedTo.includes(J.name)).filter(xa=>xa.layers.includes(ua)).concat(la??[]))}postprocessConnectionSolveResult(ua,J){return J}solve(){const ua=[],J=[];this.debugTraceCount=0;for(const la of this.input.connections){const xa=la.pointsToConnect[0].layer??"top";this.debugTraceCount+=1,this.obstacles=this.createObstacleList({dominantLayer:xa,connection:la,obstaclesFromTraces:J});let Aa=this.solveConnection(la);Aa=this.postprocessConnectionSolveResult(la,Aa),ua.push(Aa),debug2$2.enabled&&this.drawDebugTraceObstacles(J),Aa.solved&&J.push(...getObstaclesFromRoute(Aa.route.map(ba=>({x:ba.x,y:ba.y,layer:ba.layer??xa})),la.name))}return ua}solveAndMapToTraces(){return this.solve().flatMap(J=>J.solved?[{type:"pcb_trace",pcb_trace_id:`pcb_trace_for_${J.connectionName}`,route:addViasWhenLayerChanges(J.route.map(la=>({route_type:"wire",x:la.x,y:la.y,width:this.input.minTraceWidth,layer:la.layer})))}]:[])}getDebugGroup(){const ua=`t${this.debugTraceCount}_iter[${this.iterations-1}]`;return this.iterations<30||this.iterations<100&&this.iterations%10===0||this.iterations<1e3&&this.iterations%100===0||!this.debugSolutions?ua:null}drawDebugTraceObstacles(ua){const{debugTraceCount:J,debugSolutions:la}=this;for(const xa in la)xa.startsWith(`t${J}_`)&&la[xa].push(...ua.map((Aa,ba)=>({type:"pcb_smtpad",pcb_component_id:"",layer:Aa.layers[0],width:Aa.width,shape:"rect",x:Aa.center.x,y:Aa.center.y,pcb_smtpad_id:`trace_obstacle_${ba}`,height:Aa.height})))}drawDebugSolution({current:ua,newNeighbors:J}){const la=this.getDebugGroup();if(!la)return;const{openSet:xa,debugTraceCount:Aa,debugSolutions:ba}=this;ba[la]??(ba[la]=[]);const Sa=ba[la];Sa.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${ua.x}_${ua.y}`,font:"tscircuit2024",font_size:.25,text:"X"+(ua.l!==void 0?ua.l:""),pcb_component_id:"",layer:"top",anchor_position:{x:ua.x,y:ua.y},anchor_alignment:"center"});for(let Ma=0;Ma<xa.length;Ma++){const Ra=xa[Ma];Sa.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${Ra.x}_${Ra.y}`,layer:"top",route:[[0,.05],[.05,0],[0,-.05],[-.05,0],[0,.05]].map(([Ia,La])=>({x:Ra.x+Ia,y:Ra.y+La})),stroke_width:.01}),Sa.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${Ra.x}_${Ra.y}`,font:"tscircuit2024",font_size:.03,text:Ma.toString(),pcb_component_id:"",layer:"top",anchor_position:{x:Ra.x,y:Ra.y},anchor_alignment:"center"})}if(ua.parent){const Ma=[];let Ra=ua;for(;Ra;)Ma.unshift(Ra),Ra=Ra.parent;Sa.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${ua.x}_${ua.y}`,layer:"top",route:Ma,stroke_width:.01})}}},debug3$1=Debug$1("autorouting-dataset:infinite-grid-ijump-astar:get-distance-to-overcome-obstacle");function getDistanceToOvercomeObstacle({node:ua,travelDir:J,wallDir:la,obstacle:xa,obstacles:Aa,obstaclesInRow:ba=0,OBSTACLE_MARGIN:Sa=.15,SHOULD_DETECT_CONJOINED_OBSTACLES:Ma=!1,MAX_CONJOINED_OBSTACLES:Ra=20}){let Ia;if(J.dx===0?J.dy>0?Ia=xa.center.y+xa.height/2-ua.y:Ia=ua.y-(xa.center.y-xa.height/2):J.dx>0?Ia=xa.center.x+xa.width/2-ua.x:Ia=ua.x-(xa.center.x-xa.width/2),Ia+=Sa,Ma&&ba<Ra){const La=Aa.getObstacleAt(ua.x+J.dx*Ia+la.dx*(la.wallDistance+.001),ua.y+J.dy*Ia+la.dy*(la.wallDistance+.001));if(La===xa)return Ia;if(La&&La.type==="rect"){const Fa=J.dy===0,ka=Fa?xa.height:xa.width;if((Fa?La.height:La.width)>ka)return debug3$1("next obstacle on path is bigger, not trying to overcome it"),Ia;const tl=getDistanceToOvercomeObstacle({node:{x:ua.x+J.dx*Ia,y:ua.y+J.dy*Ia},travelDir:J,wallDir:la,obstacle:La,obstacles:Aa,obstaclesInRow:ba+1,SHOULD_DETECT_CONJOINED_OBSTACLES:Ma,MAX_CONJOINED_OBSTACLES:Ra,OBSTACLE_MARGIN:Sa});Ia+=tl}}return Ia}var IJumpAutorouter=class extends GeneralizedAstarAutorouter{constructor(){super(...arguments);jp(this,"MAX_ITERATIONS",200)}getNeighbors(J){const la=this.obstacles,xa=this.goalPoint;let Aa;J.parent?Aa=dirFromAToB(J.parent,J):Aa=dirFromAToB(J,xa);const ba=[{dx:0,dy:1},{dx:1,dy:0},{dx:0,dy:-1},{dx:-1,dy:0}].filter(Ma=>{var Ra;return Ma.dx===Aa.dx*-1&&Ma.dy===Aa.dy*-1?!1:!(Ma.dx===Aa.dx&&Ma.dy===Aa.dy&&((Ra=J.parent)!=null&&Ra.obstacleHit))}).map(Ma=>la.getOrthoDirectionCollisionInfo(J,Ma,{margin:this.OBSTACLE_MARGIN})).filter(Ma=>Ma.wallDistance>=this.OBSTACLE_MARGIN),Sa=[];for(const Ma of ba){let Ra=null;J!=null&&J.obstacleHit&&(Ra=getDistanceToOvercomeObstacle({node:J,travelDir:Ma,wallDir:{...Aa,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:la,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const Ia=distAlongDir(J,xa,Ma),La=(Ma.dx===0||Math.sign(xa.x-J.x)===Ma.dx)&&(Ma.dy===0||Math.sign(xa.y-J.y)===Ma.dy);Ia<Ma.wallDistance&&Ia>0&&La?Sa.push({...Ma,travelDistance:Ia}):Ra!==null&&Ra<Ma.wallDistance?Sa.push({...Ma,travelDistance:Ra}):Ma.wallDistance!==1/0&&Sa.push({...Ma,travelDistance:Ma.wallDistance-this.OBSTACLE_MARGIN})}return Sa.filter(Ma=>!la.isObstacleAt(J.x+Ma.dx*Ma.travelDistance,J.y+Ma.dy*Ma.travelDistance)).map(Ma=>({x:J.x+Ma.dx*Ma.travelDistance,y:J.y+Ma.dy*Ma.travelDistance,obstacleHit:Ma.obstacle}))}};function generateApproximatingRects(ua,J=4){const{center:la,width:xa,height:Aa,rotation:ba}=ua,Sa=[],Ma=ba*Math.PI/180,Ra=Math.cos(Ma),Ia=Math.sin(Ma),La=(ba%360+360)%360;if(Aa<=xa?La>=45&&La<135||La>=225&&La<315:La>=135&&La<225||La>=315||La<45){const ka=xa/J;for(let el=0;el<J;el++){const tl=(el-J/2+.5)*ka,rl=-tl*Ra,il=-tl*Ia,nl=ka*1.1,sl=Math.abs(Aa*Ra)+Math.abs(ka*Ia);Sa.push({center:{x:la.x+rl,y:la.y+il},width:nl,height:sl})}}else{const ka=Aa/J;for(let el=0;el<J;el++){const tl=(el-J/2+.5)*ka,rl=-tl*Ia,il=tl*Ra,nl=Math.abs(xa*Ra)+Math.abs(ka*Ia),sl=ka*1.1;Sa.push({center:{x:la.x+rl,y:la.y+il},width:nl,height:sl})}}return Sa}var EVERY_LAYER=["top","inner1","inner2","bottom"],getObstaclesFromCircuitJson=(ua,J)=>{const la=Aa=>J?Aa.concat(Aa.map(ba=>J==null?void 0:J.getNetConnectedToId(ba)).filter(Boolean)):Aa,xa=[];for(const Aa of ua)if(Aa.type==="pcb_smtpad"){if(Aa.shape==="circle")xa.push({type:"oval",layers:[Aa.layer],center:{x:Aa.x,y:Aa.y},width:Aa.radius*2,height:Aa.radius*2,connectedTo:la([Aa.pcb_smtpad_id])});else if(Aa.shape==="rect")xa.push({type:"rect",layers:[Aa.layer],center:{x:Aa.x,y:Aa.y},width:Aa.width,height:Aa.height,connectedTo:la([Aa.pcb_smtpad_id])});else if(Aa.shape==="rotated_rect"){const ba={center:{x:Aa.x,y:Aa.y},width:Aa.width,height:Aa.height,rotation:Aa.ccw_rotation},Sa=generateApproximatingRects(ba);for(const Ma of Sa)xa.push({type:"rect",layers:[Aa.layer],center:Ma.center,width:Ma.width,height:Ma.height,connectedTo:la([Aa.pcb_smtpad_id])})}}else if(Aa.type==="pcb_keepout")Aa.shape==="circle"?xa.push({type:"oval",layers:Aa.layers,center:{x:Aa.center.x,y:Aa.center.y},width:Aa.radius*2,height:Aa.radius*2,connectedTo:[]}):Aa.shape==="rect"&&xa.push({type:"rect",layers:Aa.layers,center:{x:Aa.center.x,y:Aa.center.y},width:Aa.width,height:Aa.height,connectedTo:[]});else if(Aa.type==="pcb_hole")Aa.hole_shape==="oval"?xa.push({type:"oval",center:{x:Aa.x,y:Aa.y},width:Aa.hole_width,height:Aa.hole_height,connectedTo:[]}):Aa.hole_shape==="square"?xa.push({type:"rect",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.hole_diameter,height:Aa.hole_diameter,connectedTo:[]}):(Aa.hole_shape==="round"||Aa.hole_shape==="circle")&&xa.push({type:"rect",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.hole_diameter,height:Aa.hole_diameter,connectedTo:[]});else if(Aa.type==="pcb_plated_hole")Aa.shape==="circle"?xa.push({type:"oval",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.outer_diameter,height:Aa.outer_diameter,connectedTo:la([Aa.pcb_plated_hole_id])}):(Aa.shape==="oval"||Aa.shape==="pill")&&xa.push({type:"oval",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.outer_width,height:Aa.outer_height,connectedTo:la([Aa.pcb_plated_hole_id])});else if(Aa.type==="pcb_trace"){const ba=getObstaclesFromRoute(Aa.route.map(Sa=>({x:Sa.x,y:Sa.y,layer:"layer"in Sa?Sa.layer:Sa.from_layer})),Aa.source_trace_id);xa.push(...ba)}else Aa.type==="pcb_via"&&xa.push({type:"rect",layers:Aa.layers,center:{x:Aa.x,y:Aa.y},connectedTo:[],width:Aa.outer_diameter,height:Aa.outer_diameter});return xa};function getAlternativeGoalBoxes(ua){const{pcbConnMap:J,goalElementId:la}=ua;if(!la.startsWith("pcb_port_"))throw new Error(`Currently alternative goal boxes must have a goal id with prefix "pcb_port_" (got ${la})`);const xa=J.getAllTracesConnectedToPort(la);return getObstaclesFromCircuitJson(xa).map(Aa=>({...Aa,connectedTo:[la]}))}var getConnectionWithAlternativeGoalBoxes=ua=>{let{connection:J,pcbConnMap:la}=ua;if(J.pointsToConnect.length!==2)throw new Error(`Connection must have exactly 2 points for alternative goal boxes (got ${J.pointsToConnect.length})`);const[xa,Aa]=J.pointsToConnect;if(!xa.pcb_port_id||!Aa.pcb_port_id)throw new Error(`Connection points must have pcb_port_id for alternative goal box calculation (got ${xa.pcb_port_id} and ${Aa.pcb_port_id})`);const ba=getAlternativeGoalBoxes({goalElementId:xa.pcb_port_id,pcbConnMap:la}).concat([{center:xa,width:.01,height:.01,connectedTo:[xa.pcb_port_id],layers:[xa.layer],type:"rect"}]),Sa=getAlternativeGoalBoxes({goalElementId:Aa.pcb_port_id,pcbConnMap:la}).concat([{center:Aa,width:.01,height:.01,connectedTo:[Aa.pcb_port_id],layers:[Aa.layer],type:"rect"}]);if(ba.length<=1&&Sa.length<=1)return{...J,startPoint:xa,endPoint:Aa,goalBoxes:[]};const Ma=findNearestPointsBetweenBoxSets(ba,Sa);let Ra,Ia,La;return ba.length>=Sa.length?(Ra={...Aa,...Ma.pointB},Ia={...xa,...Ma.pointA},La=ba):(Ra={...xa,...Ma.pointA},Ia={...Aa,...Ma.pointB},La=Sa),{startPoint:Ra,endPoint:Ia,goalBoxes:La,name:J.name,pointsToConnect:[Ra,Ia]}},getSimpleRouteJson=(ua,J={})=>{const la={minTraceWidth:.1};la.layerCount=J.layerCount??1,la.obstacles=getObstaclesFromCircuitJson(ua,J.connMap),la.connections=[];for(const Aa of ua)if(Aa.type==="source_trace"){let ba={name:Aa.source_trace_id,pointsToConnect:Aa.connected_source_port_ids.map(Sa=>{var Ra;const Ma=distExports$3.su(ua).pcb_port.getWhere({source_port_id:Sa});if(!Ma)throw new Error(`Could not find pcb_port for source_port_id "${Sa}"`);return{x:Ma.x,y:Ma.y,layer:((Ra=Ma.layers)==null?void 0:Ra[0])??"top",pcb_port_id:Ma.pcb_port_id}})};if(J.optimizeWithGoalBoxes){const Sa=new PcbConnectivityMap(ua);ba=getConnectionWithAlternativeGoalBoxes({connection:ba,pcbConnMap:Sa})}la.connections.push(ba),markObstaclesAsConnected(la.obstacles,ba.pointsToConnect,ba.name)}const xa={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0};for(const Aa of la.obstacles)xa.minX=Math.min(xa.minX,Aa.center.x-Aa.width/2),xa.maxX=Math.max(xa.maxX,Aa.center.x+Aa.width/2),xa.minY=Math.min(xa.minY,Aa.center.y-Aa.height/2),xa.maxY=Math.max(xa.maxY,Aa.center.y+Aa.height/2);for(const Aa of la.connections)for(const ba of Aa.pointsToConnect)xa.minX=Math.min(xa.minX,ba.x),xa.maxX=Math.max(xa.maxX,ba.x),xa.minY=Math.min(xa.minY,ba.y),xa.maxY=Math.max(xa.maxY,ba.y);return la.bounds=xa,la},markObstaclesAsConnected=(ua,J,la)=>{for(const xa of J)for(const Aa of ua)isPointInsideObstacle(xa,Aa)&&Aa.connectedTo.push(la)};function isPointInsideObstacle(ua,J){const la=J.width/2,xa=J.height/2;if(J.type==="rect")return ua.x>=J.center.x-la&&ua.x<=J.center.x+la&&ua.y>=J.center.y-xa&&ua.y<=J.center.y+xa;if(J.type==="oval"){const Aa=(ua.x-J.center.x)/la,ba=(ua.y-J.center.y)/xa;return Aa*Aa+ba*ba<=1}return!1}function dirFromAToB2(ua,J){const la=J.x>ua.x?1:J.x<ua.x?-1:0,xa=J.y>ua.y?1:J.y<ua.y?-1:0,Aa=J.l>ua.l?1:J.l<ua.l?-1:0;return{dx:la,dy:xa,dl:Aa}}var LAYER_COUNT_INDEX_MAP={1:["top"],2:["top","bottom"],4:["top","inner1","inner2","bottom"]},getLayerNamesForLayerCount=ua=>LAYER_COUNT_INDEX_MAP[ua];function getLayerIndex(ua,J){const xa=LAYER_COUNT_INDEX_MAP[ua].indexOf(J);if(xa===-1)throw new Error(`Invalid layer for getLayerIndex (for layerCount === ${ua}): "${J}"`);return xa}function indexToLayer(ua,J){const xa=LAYER_COUNT_INDEX_MAP[ua][J];if(!xa)throw new Error(`Invalid index for indexToLayer (for layerCount === ${ua}): "${J}"`);return xa}var ObstacleList3d=class extends ObstacleList{constructor(J,la){super([]);jp(this,"obstacles");jp(this,"GRID_STEP",.1);jp(this,"layerCount");this.layerCount=J;const xa=getLayerNamesForLayerCount(J);this.obstacles=la.flatMap(Aa=>Aa.layers.filter(ba=>xa.includes(ba)).map(ba=>({...Aa,left:Aa.center.x-Aa.width/2,right:Aa.center.x+Aa.width/2,top:Aa.center.y+Aa.height/2,bottom:Aa.center.y-Aa.height/2,l:getLayerIndex(J,ba)})))}getObstacleAt(J,la,xa,Aa){Aa??(Aa=this.GRID_STEP);for(const ba of this.obstacles){if(ba.l!==xa)continue;const Sa=ba.width/2+Aa,Ma=ba.height/2+Aa;if(J>=ba.center.x-Sa&&J<=ba.center.x+Sa&&la>=ba.center.y-Ma&&la<=ba.center.y+Ma)return ba}return null}isObstacleAt(J,la,xa,Aa){return this.getObstacleAt(J,la,xa,Aa)!==null}getDirectionDistancesToNearestObstacle3d(J,la,xa){const{GRID_STEP:Aa}=this,ba={left:1/0,top:1/0,bottom:1/0,right:1/0};for(const Sa of this.obstacles)if(Sa.l===xa&&Sa.type==="rect"){const Ma=Sa.center.x-Sa.width/2-Aa,Ra=Sa.center.x+Sa.width/2+Aa,Ia=Sa.center.y+Sa.height/2+Aa,La=Sa.center.y-Sa.height/2-Aa;la>=La&&la<=Ia&&J>Ma&&(ba.left=Math.min(ba.left,J-Ra)),la>=La&&la<=Ia&&J<Ra&&(ba.right=Math.min(ba.right,Ma-J)),J>=Ma&&J<=Ra&&la<Ia&&(ba.top=Math.min(ba.top,La-la)),J>=Ma&&J<=Ra&&la>La&&(ba.bottom=Math.min(ba.bottom,la-Ia))}return ba}getOrthoDirectionCollisionInfo(J,la,{margin:xa=0}={}){const{x:Aa,y:ba,l:Sa}=J,{dx:Ma,dy:Ra,dl:Ia}=la;let La=1/0,Fa=null;if(Ia!==0){const ka=Sa+Ia;return this.isObstacleAt(Aa,ba,ka,xa)?(La=1,Fa=this.getObstacleAt(Aa,ba,ka,xa)):La=1,{dx:Ma,dy:Ra,dl:Ia,wallDistance:La,obstacle:Fa}}else{for(const ka of this.obstacles){if(ka.l!==Sa)continue;const el=ka.left-xa,tl=ka.right+xa,rl=ka.top+xa,il=ka.bottom-xa;let nl=null;Ma===1&&Ra===0?ba>il&&ba<rl&&Aa<ka.left&&(nl=ka.left-Aa):Ma===-1&&Ra===0?ba>il&&ba<rl&&Aa>ka.right&&(nl=Aa-ka.right):Ma===0&&Ra===1?Aa>el&&Aa<tl&&ba<ka.bottom&&(nl=ka.bottom-ba):Ma===0&&Ra===-1&&Aa>el&&Aa<tl&&ba>ka.top&&(nl=ba-ka.top),nl!==null&&nl<La&&(La=nl,Fa=ka)}return{dx:Ma,dy:Ra,dl:0,wallDistance:La,obstacle:Fa}}}getObstaclesOverlappingRegion(J){const la=[];for(const xa of this.obstacles){if(xa.l!==J.l)continue;const{left:Aa,right:ba,top:Sa,bottom:Ma}=xa;Aa<=J.maxX&&ba>=J.minX&&Sa>=J.minY&&Ma<=J.maxY&&la.push(xa)}return la}},MultilayerIjump=class extends GeneralizedAstarAutorouter{constructor(J){super(J);jp(this,"MAX_ITERATIONS",500);jp(this,"VIA_COST",4);jp(this,"VIA_DIAMETER",.5);jp(this,"allowLayerChange",!0);jp(this,"layerCount");jp(this,"obstacles");jp(this,"optimizeWithGoalBoxes");jp(this,"connMap");jp(this,"pcbConnMap");jp(this,"GOAL_RUSH_FACTOR",1.1);jp(this,"defaultGoalViaMargin",.5);jp(this,"marginsWithCosts");this.layerCount=J.input.layerCount??2,this.MAX_ITERATIONS=J.MAX_ITERATIONS??this.MAX_ITERATIONS,this.VIA_COST=J.VIA_COST??this.VIA_COST,this.connMap=J.connMap,this.pcbConnMap=J.pcbConnMap??new PcbConnectivityMap,this.optimizeWithGoalBoxes=J.optimizeWithGoalBoxes??!1,this.obstacles=null,this.marginsWithCosts=J.marginsWithCosts??[{margin:1,enterCost:0,travelCostFactor:1},{margin:this.OBSTACLE_MARGIN,enterCost:10,travelCostFactor:2}]}get largestMargin(){return this.marginsWithCosts[0].margin}preprocessConnectionBeforeSolving(J){return this.optimizeWithGoalBoxes?getConnectionWithAlternativeGoalBoxes({connection:J,pcbConnMap:this.pcbConnMap}):J}postprocessConnectionSolveResult(J,la){if(!la.solved)return la;if(this.optimizeWithGoalBoxes){const xa=la.route.map(Aa=>({x:Aa.x,y:Aa.y,route_type:"wire",layer:Aa.layer,width:this.input.minTraceWidth}));xa[0].start_pcb_port_id=J.pointsToConnect[0].pcb_port_id,xa[xa.length-1].end_pcb_port_id=J.pointsToConnect[1].pcb_port_id,this.pcbConnMap.addTrace({type:"pcb_trace",pcb_trace_id:`postprocess_trace_${nanoid$1(8)}`,route:xa})}return la}createObstacleList({dominantLayer:J,connection:la,obstaclesFromTraces:xa}){const Aa=this.connMap?this.connMap.getNetConnectedToId(la.name):la.name;if(!Aa)throw new Error(`The connection.name "${la.name}" wasn't present in the full connectivity map`);return new ObstacleList3d(this.layerCount,this.allObstacles.filter(ba=>!ba.connectedTo.includes(Aa)).concat(xa??[]))}computeG(J,la){let xa=J.g+manDist(J,la)*(J.travelMarginCostFactor??1)+(la.enterMarginCost??0);return(la.l??J.l!==-1??-1)&&(xa+=this.VIA_COST),xa}computeH(J){const la=Math.abs(J.x-this.goalPoint.x),xa=Math.abs(J.y-this.goalPoint.y),Aa=Math.abs(J.l-this.goalPoint.l);return(la+xa)**this.GOAL_RUSH_FACTOR+Aa*this.VIA_COST}getStartNode(J){return{...super.getStartNode(J),l:this.layerToIndex(J.pointsToConnect[0].layer)}}layerToIndex(J){return getLayerIndex(this.layerCount,J)}indexToLayer(J){return indexToLayer(this.layerCount,J)}getNodeName(J){return`${nodeName(J,this.GRID_STEP)}-${J.l??0}`}hasSpaceForVia(J,la){return J.every(xa=>this.obstacles.getObstaclesOverlappingRegion({minX:la.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:la.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:la.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:la.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:xa}).length===0)}getNeighborsSurroundingGoal(J){this.obstacles;const la=this.goalPoint,xa=[],Aa=[{dx:1,dy:0,dl:0},{dx:-1,dy:0,dl:0},{dx:0,dy:1,dl:0},{dx:0,dy:-1,dl:0}],ba=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin;for(const Sa of Aa){const Ma={x:J.x+Sa.dx*ba,y:J.y+Sa.dy*ba,l:J.l+Sa.dl,obstacleHit:null};this.hasSpaceForVia([J.l,la.l],Ma)&&xa.push(Ma)}return xa}getNeighbors(J){const la=this.obstacles,xa=this.goalPoint,Aa=manDist(J,xa);if(Aa<=this.OBSTACLE_MARGIN)return this.getNeighborsSurroundingGoal(J);let ba;J.parent?ba=dirFromAToB2(J.parent,J):ba=dirFromAToB2(J,xa);const Sa=[{dx:0,dy:1,dl:0},{dx:1,dy:0,dl:0},{dx:0,dy:-1,dl:0},{dx:-1,dy:0,dl:0}],Ma=Aa>this.VIA_DIAMETER+this.OBSTACLE_MARGIN,Ra=manDist(J,this.startNode)>this.VIA_DIAMETER+this.OBSTACLE_MARGIN;this.allowLayerChange&&Ma&&Ra&&(J.l<this.layerCount-1&&Sa.push({dx:0,dy:0,dl:1}),J.l>0&&Sa.push({dx:0,dy:0,dl:-1}));const Ia=Sa.filter(Fa=>{var ka;return Fa.dx===ba.dx*-1&&Fa.dy===ba.dy*-1&&Fa.dl===ba.dl*-1?!1:!(Fa.dx===ba.dx&&Fa.dy===ba.dy&&Fa.dl===ba.dl&&((ka=J.parent)!=null&&ka.obstacleHit))}).map(Fa=>la.getOrthoDirectionCollisionInfo(J,Fa,{margin:this.OBSTACLE_MARGIN})).filter(Fa=>!(Fa.wallDistance<this.OBSTACLE_MARGIN)),La=[];for(const Fa of Ia){const ka=Fa.dx===0&&Fa.dy===0&&Fa.dl===1,el=Fa.dx===0&&Fa.dy===0&&Fa.dl===-1;if((ka||el)&&![J.l,J.l+Fa.dl].every(sl=>la.getObstaclesOverlappingRegion({minX:J.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:J.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:J.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:J.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:sl}).length===0))continue;if(ka){J.l<this.layerCount-1&&La.push({...Fa,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}if(el){J.l>0&&La.push({...Fa,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}let tl=null;J!=null&&J.obstacleHit&&(tl=getDistanceToOvercomeObstacle({node:J,travelDir:Fa,wallDir:{...ba,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:la,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const rl=distAlongDir(J,xa,Fa),il=(Fa.dx===0||Math.sign(xa.x-J.x)===Fa.dx)&&(Fa.dy===0||Math.sign(xa.y-J.y)===Fa.dy);if(rl<Fa.wallDistance&&rl>0&&il){const nl=J.l===xa.l;let sl=0;!nl&&Math.abs(rl-Aa)<this.GRID_STEP&&(sl=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin),La.push({...Fa,travelDistance:rl-sl,enterMarginCost:0,travelMarginCostFactor:1})}else if(tl!==null&&tl<Fa.wallDistance){for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)tl-this.OBSTACLE_MARGIN+nl*2<Fa.wallDistance&&La.push({...Fa,travelDistance:tl-this.OBSTACLE_MARGIN+nl,enterMarginCost:sl,travelMarginCostFactor:ll});if(Fa.wallDistance===1/0)La.push({...Fa,travelDistance:rl,enterMarginCost:0,travelMarginCostFactor:1});else if(Fa.wallDistance>this.largestMargin)for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)Fa.wallDistance>this.largestMargin+nl&&La.push({...Fa,travelDistance:Fa.wallDistance-nl,enterMarginCost:sl,travelMarginCostFactor:ll})}else if(Fa.wallDistance!==1/0)for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)Fa.wallDistance>nl&&La.push({...Fa,travelDistance:Fa.wallDistance-nl,enterMarginCost:sl,travelMarginCostFactor:ll})}return La.map(Fa=>({x:J.x+Fa.dx*Fa.travelDistance,y:J.y+Fa.dy*Fa.travelDistance,l:J.l+Fa.dl,obstacleHit:Fa.obstacle,travelMarginCostFactor:Fa.travelMarginCostFactor,enterMarginCost:Fa.enterMarginCost}))}};function autoroute2(ua){const J=getSimpleRouteJson(ua),la=new IJumpAutorouter({input:J});return{solution:la.solveAndMapToTraces(),debugSolutions:la.debugSolutions,debugMessage:la.debugMessage}}var getObstaclesFromSoup=getObstaclesFromCircuitJson,direction$1=z$3.enum(["up","down","left","right"]);z$3.enum(["top-to-bottom","left-to-right","bottom-to-top","right-to-left"]);var portHints=z$3.array(z$3.string().or(z$3.number())),point3$2=z$3.object({x:distance$6,y:distance$6,z:distance$6}),rotationPoint3=z$3.object({x:z$3.union([z$3.number(),z$3.string()]),y:z$3.union([z$3.number(),z$3.string()]),z:z$3.union([z$3.number(),z$3.string()])}),cadModelBase=z$3.object({rotationOffset:z$3.number().or(rotationPoint3).optional(),positionOffset:point3$2.optional(),size:point3$2.optional()}),cadModelStl=cadModelBase.extend({stlUrl:z$3.string()}),cadModelObj=cadModelBase.extend({objUrl:z$3.string(),mtlUrl:z$3.string().optional()}),cadModelJscad=cadModelBase.extend({jscad:z$3.record(z$3.any())}),cadModelProp=z$3.union([z$3.string(),cadModelStl,cadModelObj,cadModelJscad]),footprintProp=z$3.custom(ua=>!0),pcbLayoutProps=z$3.object({pcbX:distance$6.optional(),pcbY:distance$6.optional(),pcbRotation:rotation$5.optional(),layer:layer_ref$3.optional()}),commonLayoutProps=z$3.object({pcbX:distance$6.optional(),pcbY:distance$6.optional(),pcbRotation:rotation$5.optional(),schX:distance$6.optional(),schY:distance$6.optional(),schRotation:rotation$5.optional(),layer:layer_ref$3.optional(),footprint:footprintProp.optional()}),supplierProps=z$3.object({supplierPartNumbers:z$3.record(supplier_name$3,z$3.array(z$3.string())).optional()}),commonComponentProps=commonLayoutProps.merge(supplierProps).extend({key:z$3.any().optional(),name:z$3.string(),cadModel:cadModelProp.optional(),children:z$3.any().optional(),symbolName:z$3.string().optional()}),lrPins=["pin1","left","pin2","right"],lrPolarPins=["pin1","left","anode","pos","pin2","right","cathode","neg"];distance$6.or(z$3.enum(["2x","3x","4x"]));var explicitPinSideDefinition=z$3.object({pins:z$3.array(z$3.union([z$3.number(),z$3.string()])),direction:z$3.union([z$3.literal("top-to-bottom"),z$3.literal("left-to-right"),z$3.literal("bottom-to-top"),z$3.literal("right-to-left")])}),schematicPortArrangement=z$3.object({leftSize:z$3.number().optional().describe("@deprecated, use leftPinCount"),topSize:z$3.number().optional().describe("@deprecated, use topPinCount"),rightSize:z$3.number().optional().describe("@deprecated, use rightPinCount"),bottomSize:z$3.number().optional().describe("@deprecated, use bottomPinCount"),leftPinCount:z$3.number().optional(),rightPinCount:z$3.number().optional(),topPinCount:z$3.number().optional(),bottomPinCount:z$3.number().optional(),leftSide:explicitPinSideDefinition.optional(),rightSide:explicitPinSideDefinition.optional(),topSide:explicitPinSideDefinition.optional(),bottomSide:explicitPinSideDefinition.optional()}),schematicPinStyle=z$3.record(z$3.object({marginLeft:distance$6.optional(),marginRight:distance$6.optional(),marginTop:distance$6.optional(),marginBottom:distance$6.optional(),leftMargin:distance$6.optional(),rightMargin:distance$6.optional(),topMargin:distance$6.optional(),bottomMargin:distance$6.optional()})),point$2=z$3.object({x:distance$6,y:distance$6}),base_manual_edit_event=z$3.object({edit_event_id:z$3.string(),in_progress:z$3.boolean().optional(),created_at:z$3.number()}),edit_pcb_component_location_event=base_manual_edit_event.extend({pcb_edit_event_type:z$3.literal("edit_component_location").describe("deprecated"),edit_event_type:z$3.literal("edit_pcb_component_location"),pcb_component_id:z$3.string(),original_center:z$3.object({x:z$3.number(),y:z$3.number()}),new_center:z$3.object({x:z$3.number(),y:z$3.number()})}),edit_trace_hint_event=base_manual_edit_event.extend({pcb_edit_event_type:z$3.literal("edit_trace_hint").describe("deprecated"),edit_event_type:z$3.literal("edit_pcb_trace_hint").optional(),pcb_port_id:z$3.string(),pcb_trace_hint_id:z$3.string().optional(),route:z$3.array(z$3.object({x:z$3.number(),y:z$3.number(),via:z$3.boolean().optional()}))}),edit_schematic_component_location_event=base_manual_edit_event.extend({edit_event_type:z$3.literal("edit_schematic_component_location"),schematic_component_id:z$3.string(),original_center:z$3.object({x:z$3.number(),y:z$3.number()}),new_center:z$3.object({x:z$3.number(),y:z$3.number()})});z$3.union([edit_pcb_component_location_event,edit_trace_hint_event,edit_schematic_component_location_event]);var manual_pcb_placement=z$3.object({selector:z$3.string(),relative_to:z$3.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$4}),manual_trace_hint=z$3.object({pcb_port_selector:z$3.string(),offsets:z$3.array(route_hint_point$3)}),manual_schematic_placement=z$3.object({selector:z$3.string(),relative_to:z$3.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$4}),manual_edits_file=z$3.object({pcb_placements:z$3.array(manual_pcb_placement).optional(),manual_trace_hints:z$3.array(manual_trace_hint).optional(),schematic_placements:z$3.array(manual_schematic_placement).optional()}),autorouterConfig=z$3.object({serverUrl:z$3.string().optional(),inputFormat:z$3.enum(["simplified","circuit-json"]).optional(),serverMode:z$3.enum(["job","solve-endpoint"]).optional(),cache:z$3.custom(ua=>!0).optional()}),autorouterProp=z$3.union([autorouterConfig,z$3.literal("sequential-trace"),z$3.literal("subcircuit"),z$3.literal("auto"),z$3.literal("auto-local"),z$3.literal("auto-cloud")]),baseGroupProps=commonLayoutProps.extend({name:z$3.string().optional(),children:z$3.any().optional(),key:z$3.any().optional()}),subcircuitGroupProps=baseGroupProps.extend({layout:z$3.custom(ua=>!0).optional(),manualEdits:manual_edits_file.optional(),schAutoLayoutEnabled:z$3.boolean().optional(),schTraceAutoLabelEnabled:z$3.boolean().optional(),routingDisabled:z$3.boolean().optional(),defaultTraceWidth:length$4.optional(),minTraceWidth:length$4.optional(),partsEngine:z$3.custom(ua=>"findPart"in ua).optional(),pcbRouteCache:z$3.custom(ua=>!0).optional(),autorouter:autorouterProp.optional()}),subcircuitGroupPropsWithBool=subcircuitGroupProps.extend({subcircuit:z$3.literal(!0)}),groupProps=z$3.discriminatedUnion("subcircuit",[baseGroupProps.extend({subcircuit:z$3.literal(!1).optional()}),subcircuitGroupPropsWithBool]),boardProps=subcircuitGroupProps.extend({width:distance$6.optional(),height:distance$6.optional(),outline:z$3.array(point$2).optional(),outlineOffsetX:distance$6.optional(),outlineOffsetY:distance$6.optional()});z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()).readonly()).or(z$3.array(z$3.string())));var chipProps=commonComponentProps.extend({manufacturerPartNumber:z$3.string().optional(),pinLabels:z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()).readonly())).optional(),internallyConnectedPins:z$3.array(z$3.array(z$3.string())).optional(),externallyConnectedPins:z$3.array(z$3.array(z$3.string())).optional(),schPinArrangement:schematicPortArrangement.optional(),schPortArrangement:schematicPortArrangement.optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$6.optional(),schWidth:distance$6.optional(),schHeight:distance$6.optional(),noSchematicRepresentation:z$3.boolean().optional()}),jumperProps=commonComponentProps.extend({manufacturerPartNumber:z$3.string().optional(),pinLabels:z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()))).optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$6.optional(),schWidth:distance$6.optional(),schHeight:distance$6.optional(),schDirection:z$3.enum(["left","right"]).optional(),schPortArrangement:schematicPortArrangement.optional()}),platedHoleProps=z$3.discriminatedUnion("shape",[pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("circle"),holeDiameter:distance$6,outerDiameter:distance$6,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("oval"),outerWidth:distance$6,outerHeight:distance$6,innerWidth:distance$6,innerHeight:distance$6,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("pill"),outerWidth:distance$6,outerHeight:distance$6,innerWidth:distance$6,innerHeight:distance$6,portHints:portHints.optional()})]),resistorProps=commonComponentProps.extend({resistance:resistance$3,pullupFor:z$3.string().optional(),pullupTo:z$3.string().optional(),pulldownFor:z$3.string().optional(),pulldownTo:z$3.string().optional()}),resistorPins=lrPins,potentiometerProps=commonComponentProps.extend({maxResistance:resistance$3}),crystalProps=commonComponentProps.extend({frequency:frequency$2,loadCapacitance:capacitance$3,pinVariant:z$3.enum(["2pin","4pin"]).optional()}),resonatorProps=commonComponentProps.extend({frequency:frequency$2,loadCapacitance:capacitance$3,pinVariant:z$3.enum(["no_ground","ground_pin","two_ground_pins"]).optional()}),capacitorProps=commonComponentProps.extend({capacitance:capacitance$3,polarized:z$3.boolean().optional().default(!1),decouplingFor:z$3.string().optional(),decouplingTo:z$3.string().optional(),bypassFor:z$3.string().optional(),bypassTo:z$3.string().optional(),maxDecouplingTraceLength:z$3.number().optional()}),capacitorPins=lrPolarPins;z$3.object({name:z$3.string()}),z$3.object({name:z$3.string().optional(),pcbOnly:z$3.boolean().optional(),schOnly:z$3.boolean().optional()});var pcbXDistConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),xDist:distance$6,left:z$3.string(),right:z$3.string(),edgeToEdge:z$3.literal(!0).optional(),centerToCenter:z$3.literal(!0).optional()}),pcbYDistConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),yDist:distance$6,top:z$3.string(),bottom:z$3.string(),edgeToEdge:z$3.literal(!0).optional(),centerToCenter:z$3.literal(!0).optional()}),pcbSameYConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),sameY:z$3.literal(!0).optional(),for:z$3.array(z$3.string())}),pcbSameXConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),sameX:z$3.literal(!0).optional(),for:z$3.array(z$3.string())}),constraintProps=z$3.union([pcbXDistConstraintProps,pcbYDistConstraintProps,pcbSameYConstraintProps,pcbSameXConstraintProps]),rectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rect"),width:distance$6,height:distance$6,portHints:portHints.optional()}),rotatedRectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rotated_rect"),width:distance$6,height:distance$6,ccwRotation:z$3.number(),portHints:portHints.optional()}),circleSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$6,portHints:portHints.optional()}),pillSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("pill"),width:distance$6,height:distance$6,radius:distance$6,portHints:portHints.optional()}),smtPadProps=z$3.union([circleSmtPadProps,rectSmtPadProps,rotatedRectSmtPadProps,pillSmtPadProps]),rectSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rect"),width:distance$6,height:distance$6}),circleSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$6});z$3.union([circleSolderPasteProps,rectSolderPasteProps]);var holeProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({name:z$3.string().optional(),diameter:distance$6.optional(),radius:distance$6.optional()}).transform(ua=>({...ua,diameter:ua.diameter??2*ua.radius,radius:ua.radius??ua.diameter/2})),portRef=z$3.union([z$3.string(),z$3.custom(ua=>!!ua.getPortSelector)]),baseTraceProps=z$3.object({key:z$3.string().optional(),thickness:distance$6.optional(),schematicRouteHints:z$3.array(point$2).optional(),pcbRouteHints:z$3.array(route_hint_point$3).optional(),schDisplayLabel:z$3.string().optional(),maxLength:z$3.number().optional()}),traceProps=z$3.union([baseTraceProps.extend({path:z$3.array(portRef)}),baseTraceProps.extend({from:portRef,to:portRef})]),footprintProps=z$3.object({originalLayer:layer_ref$3.default("top").optional()}),capacity=z$3.number().or(z$3.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),batteryProps=commonComponentProps.extend({capacity:capacity.optional()}),pinHeaderProps=commonComponentProps.extend({pinCount:z$3.number(),pitch:distance$6.optional(),gender:z$3.enum(["male","female"]).optional().default("male"),showSilkscreenPinLabels:z$3.boolean().optional(),doubleRow:z$3.boolean().optional(),holeDiameter:distance$6.optional(),platedDiameter:distance$6.optional(),pinLabels:z$3.array(z$3.string()).optional(),facingDirection:z$3.enum(["left","right"]).optional()}),netAliasProps=z$3.object({net:z$3.string().optional(),schX:distance$6.optional(),schY:distance$6.optional(),schRotation:rotation$5.optional(),anchorSide:z$3.enum(["left","up","right","down"]).optional()}),pushButtonProps=commonComponentProps.extend({internallyConnectedPins:z$3.array(z$3.array(z$3.string())).optional()}),transistorProps=commonComponentProps.extend({transistorType:z$3.enum(["npn","pnp"])}),mosfetProps=commonComponentProps.extend({channelType:z$3.enum(["n","p"]),mosfetMode:z$3.enum(["enhancement","depletion"])}),inductorProps=commonComponentProps.extend({inductance:inductance$3}),diodeProps=commonComponentProps.extend({}),diodePins=lrPolarPins,ledProps=commonComponentProps.extend({color:z$3.string().optional()}),ledPins=lrPolarPins;commonComponentProps.extend({ftype:z$3.literal("switch"),switchType:z$3.enum(["spst"]).default("spst"),isNormallyClosed:z$3.boolean().default(!1)});var fabricationNoteTextProps=pcbLayoutProps.extend({text:z$3.string(),anchorAlignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$3.enum(["tscircuit2024"]).optional(),fontSize:length$4.optional(),color:z$3.string().optional()}),fabricationNotePathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$3.array(route_hint_point$3),strokeWidth:length$4.optional(),color:z$3.string().optional()});z$3.object({layer:z$3.string().optional(),thickness:distance$6.optional(),route:z$3.array(route_hint_point$3)});var viaProps=commonLayoutProps.extend({fromLayer:layer_ref$3,toLayer:layer_ref$3,holeDiameter:distance$6,outerDiameter:distance$6}),pcbKeepoutProps=z$3.union([pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$6}),pcbLayoutProps.extend({shape:z$3.literal("rect"),width:distance$6,height:distance$6})]),powerSourceProps=commonComponentProps.extend({voltage:voltage$3});z$3.object({schX:distance$6,schY:distance$6,width:distance$6,height:distance$6}),z$3.object({x1:distance$6,y1:distance$6,x2:distance$6,y2:distance$6}),z$3.object({schX:distance$6,schY:distance$6,text:z$3.string()}),z$3.object({points:z$3.array(point$4),isFilled:z$3.boolean().optional().default(!1),fillColor:z$3.enum(["red","blue"]).optional()});var silkscreenTextProps=pcbLayoutProps.extend({text:z$3.string(),anchorAlignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$3.enum(["tscircuit2024"]).optional(),fontSize:length$4.optional()}),silkscreenPathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$3.array(route_hint_point$3),strokeWidth:length$4.optional()}),silkscreenLineProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({strokeWidth:distance$6,x1:distance$6,y1:distance$6,x2:distance$6,y2:distance$6}),silkscreenRectProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$3.boolean().optional(),isOutline:z$3.boolean().optional(),strokeWidth:distance$6.optional(),width:distance$6,height:distance$6}),silkscreenCircleProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$3.boolean().optional(),isOutline:z$3.boolean().optional(),strokeWidth:distance$6.optional(),radius:distance$6}),routeHintPointProps=z$3.object({x:distance$6,y:distance$6,via:z$3.boolean().optional(),toLayer:layer_ref$3.optional()}),traceHintProps=z$3.object({for:z$3.string().optional().describe("Selector for the port you're targeting, not required if you're inside a trace"),order:z$3.number().optional(),offset:route_hint_point$3.or(routeHintPointProps).optional(),offsets:z$3.array(route_hint_point$3).or(z$3.array(routeHintPointProps)).optional(),traceWidth:z$3.number().optional()});commonLayoutProps.extend({name:z$3.string(),pinNumber:z$3.number().optional(),aliases:z$3.array(z$3.string()).optional(),direction:direction$1});function createMap(){return new IndexedMap}class IndexedMap{constructor(){jp(this,"index",{});jp(this,"array",[])}size(){return this.array.length}empty(){return this.array.length===0}itemAt(J){return this.array[J]}contains(J){return this.index[J.id()]!==void 0}find(J){const la=this.index[J.id()];return la===void 0?void 0:this.array[la]}setDefault(J,la){const xa=this.index[J.id()];if(xa===void 0){const Aa=new Pair(J,la());return this.index[J.id()]=this.array.length,this.array.push(Aa),Aa}else return this.array[xa]}insert(J,la){const xa=new Pair(J,la),Aa=this.index[J.id()];return Aa===void 0?(this.index[J.id()]=this.array.length,this.array.push(xa)):this.array[Aa]=xa,xa}erase(J){const la=this.index[J.id()];if(la===void 0)return;this.index[J.id()]=void 0;const xa=this.array[la],Aa=this.array.pop();return xa!==Aa&&(this.array[la]=Aa,this.index[Aa.first.id()]=la),xa}copy(){const J=new IndexedMap;for(let la=0;la<this.array.length;la++){const xa=this.array[la].copy();J.array[la]=xa,J.index[xa.first.id()]=la}return J}}class Pair{constructor(J,la){jp(this,"first");jp(this,"second");this.first=J,this.second=la}copy(){return new Pair(this.first,this.second)}}class Variable{constructor(J=""){jp(this,"_name");jp(this,"_value",0);jp(this,"_context",null);jp(this,"_id",VarId++);this._name=J}id(){return this._id}name(){return this._name}setName(J){this._name=J}context(){return this._context}setContext(J){this._context=J}value(){return this._value}setValue(J){this._value=J}plus(J){return new Expression(this,J)}minus(J){return new Expression(this,typeof J=="number"?-J:[-1,J])}multiply(J){return new Expression([J,this])}divide(J){return new Expression([1/J,this])}toJSON(){return{name:this._name,value:this._value}}toString(){return this._context+"["+this._name+":"+this._value+"]"}}let VarId=0;class Expression{constructor(){jp(this,"_terms");jp(this,"_constant");let J=parseArgs(arguments);this._terms=J.terms,this._constant=J.constant}terms(){return this._terms}constant(){return this._constant}value(){let J=this._constant;for(let la=0,xa=this._terms.size();la<xa;la++){let Aa=this._terms.itemAt(la);J+=Aa.first.value()*Aa.second}return J}plus(J){return new Expression(this,J)}minus(J){return new Expression(this,typeof J=="number"?-J:[-1,J])}multiply(J){return new Expression([J,this])}divide(J){return new Expression([1/J,this])}isConstant(){return this._terms.size()==0}toString(){let J=this._terms.array.map(function(la){return la.second+"*"+la.first.toString()}).join(" + ");return!this.isConstant()&&this._constant!==0&&(J+=" + "),J+=this._constant,J}}function parseArgs(ua){let J=0,la=()=>0,xa=createMap();for(let Aa=0,ba=ua.length;Aa<ba;++Aa){let Sa=ua[Aa];if(typeof Sa=="number")J+=Sa;else if(Sa instanceof Variable)xa.setDefault(Sa,la).second+=1;else if(Sa instanceof Expression){J+=Sa.constant();let Ma=Sa.terms();for(let Ra=0,Ia=Ma.size();Ra<Ia;Ra++){let La=Ma.itemAt(Ra);xa.setDefault(La.first,la).second+=La.second}}else if(Sa instanceof Array){if(Sa.length!==2)throw new Error("array must have length 2");let Ma=Sa[0],Ra=Sa[1];if(typeof Ma!="number")throw new Error("array item 0 must be a number");if(Ra instanceof Variable)xa.setDefault(Ra,la).second+=Ma;else if(Ra instanceof Expression){J+=Ra.constant()*Ma;let Ia=Ra.terms();for(let La=0,Fa=Ia.size();La<Fa;La++){let ka=Ia.itemAt(La);xa.setDefault(ka.first,la).second+=ka.second*Ma}}else throw new Error("array item 1 must be a variable or expression")}else throw new Error("invalid Expression argument: "+Sa)}return{terms:xa,constant:J}}const Wb=class Wb{static create(J,la,xa,Aa=1){let ba=0;return ba+=Math.max(0,Math.min(1e3,J*Aa))*1e6,ba+=Math.max(0,Math.min(1e3,la*Aa))*1e3,ba+=Math.max(0,Math.min(1e3,xa*Aa)),ba}static clip(J){return Math.max(0,Math.min(Wb.required,J))}};jp(Wb,"required",Wb.create(1e3,1e3,1e3)),jp(Wb,"strong",Wb.create(1,0,0)),jp(Wb,"medium",Wb.create(0,1,0)),jp(Wb,"weak",Wb.create(0,0,1));let Strength=Wb;var Operator;(function(ua){ua[ua.Le=0]="Le",ua[ua.Ge=1]="Ge",ua[ua.Eq=2]="Eq"})(Operator||(Operator={}));class Constraint{constructor(J,la,xa,Aa=Strength.required){jp(this,"_expression");jp(this,"_operator");jp(this,"_strength");jp(this,"_id",CnId++);this._operator=la,this._strength=Strength.clip(Aa),xa===void 0&&J instanceof Expression?this._expression=J:this._expression=J.minus(xa)}id(){return this._id}expression(){return this._expression}op(){return this._operator}strength(){return this._strength}toString(){return this._expression.toString()+" "+["<=",">=","="][this._operator]+" 0 ("+this._strength.toString()+")"}}let CnId=0;class Solver{constructor(){jp(this,"maxIterations",1e3);jp(this,"_cnMap",createCnMap());jp(this,"_rowMap",createRowMap());jp(this,"_varMap",createVarMap());jp(this,"_editMap",createEditMap());jp(this,"_infeasibleRows",[]);jp(this,"_objective",new Row$1);jp(this,"_artificial",null);jp(this,"_idTick",0)}createConstraint(J,la,xa,Aa=Strength.required){let ba=new Constraint(J,la,xa,Aa);return this.addConstraint(ba),ba}addConstraint(J){if(this._cnMap.find(J)!==void 0)throw new Error("duplicate constraint");let xa=this._createRow(J),Aa=xa.row,ba=xa.tag,Sa=this._chooseSubject(Aa,ba);if(Sa.type()===SymbolType.Invalid&&Aa.allDummies())if(nearZero(Aa.constant()))Sa=ba.marker;else throw new Error("unsatisfiable constraint");if(Sa.type()===SymbolType.Invalid){if(!this._addWithArtificialVariable(Aa))throw new Error("unsatisfiable constraint")}else Aa.solveFor(Sa),this._substitute(Sa,Aa),this._rowMap.insert(Sa,Aa);this._cnMap.insert(J,ba),this._optimize(this._objective)}removeConstraint(J){let la=this._cnMap.erase(J);if(la===void 0)throw new Error("unknown constraint");this._removeConstraintEffects(J,la.second);let xa=la.second.marker,Aa=this._rowMap.erase(xa);if(Aa===void 0){let ba=this._getMarkerLeavingSymbol(xa);if(ba.type()===SymbolType.Invalid)throw new Error("failed to find leaving row");Aa=this._rowMap.erase(ba),Aa.second.solveForEx(ba,xa),this._substitute(xa,Aa.second)}this._optimize(this._objective)}hasConstraint(J){return this._cnMap.contains(J)}getConstraints(){return this._cnMap.array.map(({first:J})=>J)}addEditVariable(J,la){if(this._editMap.find(J)!==void 0)throw new Error("duplicate edit variable");if(la=Strength.clip(la),la===Strength.required)throw new Error("bad required strength");let Aa=new Expression(J),ba=new Constraint(Aa,Operator.Eq,void 0,la);this.addConstraint(ba);let Ma={tag:this._cnMap.find(ba).second,constraint:ba,constant:0};this._editMap.insert(J,Ma)}removeEditVariable(J){let la=this._editMap.erase(J);if(la===void 0)throw new Error("unknown edit variable");this.removeConstraint(la.second.constraint)}hasEditVariable(J){return this._editMap.contains(J)}suggestValue(J,la){let xa=this._editMap.find(J);if(xa===void 0)throw new Error("unknown edit variable");let Aa=this._rowMap,ba=xa.second,Sa=la-ba.constant;ba.constant=la;let Ma=ba.tag.marker,Ra=Aa.find(Ma);if(Ra!==void 0){Ra.second.add(-Sa)<0&&this._infeasibleRows.push(Ma),this._dualOptimize();return}let Ia=ba.tag.other;if(Ra=Aa.find(Ia),Ra!==void 0){Ra.second.add(Sa)<0&&this._infeasibleRows.push(Ia),this._dualOptimize();return}for(let La=0,Fa=Aa.size();La<Fa;++La){let ka=Aa.itemAt(La),el=ka.second,tl=el.coefficientFor(Ma);tl!==0&&el.add(Sa*tl)<0&&ka.first.type()!==SymbolType.External&&this._infeasibleRows.push(ka.first)}this._dualOptimize()}updateVariables(){let J=this._varMap,la=this._rowMap;for(let xa=0,Aa=J.size();xa<Aa;++xa){let ba=J.itemAt(xa),Sa=la.find(ba.second);Sa!==void 0?ba.first.setValue(Sa.second.constant()):ba.first.setValue(0)}}_getVarSymbol(J){let la=()=>this._makeSymbol(SymbolType.External);return this._varMap.setDefault(J,la).second}_createRow(J){let la=J.expression(),xa=new Row$1(la.constant()),Aa=la.terms();for(let Ra=0,Ia=Aa.size();Ra<Ia;++Ra){let La=Aa.itemAt(Ra);if(!nearZero(La.second)){let Fa=this._getVarSymbol(La.first),ka=this._rowMap.find(Fa);ka!==void 0?xa.insertRow(ka.second,La.second):xa.insertSymbol(Fa,La.second)}}let ba=this._objective,Sa=J.strength(),Ma={marker:INVALID_SYMBOL,other:INVALID_SYMBOL};switch(J.op()){case Operator.Le:case Operator.Ge:{let Ra=J.op()===Operator.Le?1:-1,Ia=this._makeSymbol(SymbolType.Slack);if(Ma.marker=Ia,xa.insertSymbol(Ia,Ra),Sa<Strength.required){let La=this._makeSymbol(SymbolType.Error);Ma.other=La,xa.insertSymbol(La,-Ra),ba.insertSymbol(La,Sa)}break}case Operator.Eq:{if(Sa<Strength.required){let Ra=this._makeSymbol(SymbolType.Error),Ia=this._makeSymbol(SymbolType.Error);Ma.marker=Ra,Ma.other=Ia,xa.insertSymbol(Ra,-1),xa.insertSymbol(Ia,1),ba.insertSymbol(Ra,Sa),ba.insertSymbol(Ia,Sa)}else{let Ra=this._makeSymbol(SymbolType.Dummy);Ma.marker=Ra,xa.insertSymbol(Ra)}break}}return xa.constant()<0&&xa.reverseSign(),{row:xa,tag:Ma}}_chooseSubject(J,la){let xa=J.cells();for(let ba=0,Sa=xa.size();ba<Sa;++ba){let Ma=xa.itemAt(ba);if(Ma.first.type()===SymbolType.External)return Ma.first}let Aa=la.marker.type();return(Aa===SymbolType.Slack||Aa===SymbolType.Error)&&J.coefficientFor(la.marker)<0?la.marker:(Aa=la.other.type(),(Aa===SymbolType.Slack||Aa===SymbolType.Error)&&J.coefficientFor(la.other)<0?la.other:INVALID_SYMBOL)}_addWithArtificialVariable(J){let la=this._makeSymbol(SymbolType.Slack);this._rowMap.insert(la,J.copy()),this._artificial=J.copy(),this._optimize(this._artificial);let xa=nearZero(this._artificial.constant());this._artificial=null;let Aa=this._rowMap.erase(la);if(Aa!==void 0){let Sa=Aa.second;if(Sa.isConstant())return xa;let Ma=this._anyPivotableSymbol(Sa);if(Ma.type()===SymbolType.Invalid)return!1;Sa.solveForEx(la,Ma),this._substitute(Ma,Sa),this._rowMap.insert(Ma,Sa)}let ba=this._rowMap;for(let Sa=0,Ma=ba.size();Sa<Ma;++Sa)ba.itemAt(Sa).second.removeSymbol(la);return this._objective.removeSymbol(la),xa}_substitute(J,la){let xa=this._rowMap;for(let Aa=0,ba=xa.size();Aa<ba;++Aa){let Sa=xa.itemAt(Aa);Sa.second.substitute(J,la),Sa.second.constant()<0&&Sa.first.type()!==SymbolType.External&&this._infeasibleRows.push(Sa.first)}this._objective.substitute(J,la),this._artificial&&this._artificial.substitute(J,la)}_optimize(J){let la=0;for(;la<this.maxIterations;){let xa=this._getEnteringSymbol(J);if(xa.type()===SymbolType.Invalid)return;let Aa=this._getLeavingSymbol(xa);if(Aa.type()===SymbolType.Invalid)throw new Error("the objective is unbounded");let ba=this._rowMap.erase(Aa).second;ba.solveForEx(Aa,xa),this._substitute(xa,ba),this._rowMap.insert(xa,ba),la++}throw new Error("solver iterations exceeded")}_dualOptimize(){let J=this._rowMap,la=this._infeasibleRows;for(;la.length!==0;){let xa=la.pop(),Aa=J.find(xa);if(Aa!==void 0&&Aa.second.constant()<0){let ba=this._getDualEnteringSymbol(Aa.second);if(ba.type()===SymbolType.Invalid)throw new Error("dual optimize failed");let Sa=Aa.second;J.erase(xa),Sa.solveForEx(xa,ba),this._substitute(ba,Sa),J.insert(ba,Sa)}}}_getEnteringSymbol(J){let la=J.cells();for(let xa=0,Aa=la.size();xa<Aa;++xa){let ba=la.itemAt(xa),Sa=ba.first;if(ba.second<0&&Sa.type()!==SymbolType.Dummy)return Sa}return INVALID_SYMBOL}_getDualEnteringSymbol(J){let la=Number.MAX_VALUE,xa=INVALID_SYMBOL,Aa=J.cells();for(let ba=0,Sa=Aa.size();ba<Sa;++ba){let Ma=Aa.itemAt(ba),Ra=Ma.first,Ia=Ma.second;if(Ia>0&&Ra.type()!==SymbolType.Dummy){let Fa=this._objective.coefficientFor(Ra)/Ia;Fa<la&&(la=Fa,xa=Ra)}}return xa}_getLeavingSymbol(J){let la=Number.MAX_VALUE,xa=INVALID_SYMBOL,Aa=this._rowMap;for(let ba=0,Sa=Aa.size();ba<Sa;++ba){let Ma=Aa.itemAt(ba),Ra=Ma.first;if(Ra.type()!==SymbolType.External){let Ia=Ma.second,La=Ia.coefficientFor(J);if(La<0){let Fa=-Ia.constant()/La;Fa<la&&(la=Fa,xa=Ra)}}}return xa}_getMarkerLeavingSymbol(J){let la=Number.MAX_VALUE,xa=la,Aa=la,ba=INVALID_SYMBOL,Sa=ba,Ma=ba,Ra=ba,Ia=this._rowMap;for(let La=0,Fa=Ia.size();La<Fa;++La){let ka=Ia.itemAt(La),el=ka.second,tl=el.coefficientFor(J);if(tl===0)continue;let rl=ka.first;if(rl.type()===SymbolType.External)Ra=rl;else if(tl<0){let il=-el.constant()/tl;il<xa&&(xa=il,Sa=rl)}else{let il=el.constant()/tl;il<Aa&&(Aa=il,Ma=rl)}}return Sa!==ba?Sa:Ma!==ba?Ma:Ra}_removeConstraintEffects(J,la){la.marker.type()===SymbolType.Error&&this._removeMarkerEffects(la.marker,J.strength()),la.other.type()===SymbolType.Error&&this._removeMarkerEffects(la.other,J.strength())}_removeMarkerEffects(J,la){let xa=this._rowMap.find(J);xa!==void 0?this._objective.insertRow(xa.second,-la):this._objective.insertSymbol(J,-la)}_anyPivotableSymbol(J){let la=J.cells();for(let xa=0,Aa=la.size();xa<Aa;++xa){let ba=la.itemAt(xa),Sa=ba.first.type();if(Sa===SymbolType.Slack||Sa===SymbolType.Error)return ba.first}return INVALID_SYMBOL}_makeSymbol(J){return new Symbol$1(J,this._idTick++)}}function nearZero(ua){let J=1e-8;return ua<0?-ua<J:ua<J}function createCnMap(){return createMap()}function createRowMap(){return createMap()}function createVarMap(){return createMap()}function createEditMap(){return createMap()}var SymbolType;(function(ua){ua[ua.Invalid=0]="Invalid",ua[ua.External=1]="External",ua[ua.Slack=2]="Slack",ua[ua.Error=3]="Error",ua[ua.Dummy=4]="Dummy"})(SymbolType||(SymbolType={}));let Symbol$1=class{constructor(J,la){jp(this,"_id");jp(this,"_type");this._id=la,this._type=J}id(){return this._id}type(){return this._type}},INVALID_SYMBOL=new Symbol$1(SymbolType.Invalid,-1),Row$1=class YM{constructor(J=0){jp(this,"_cellMap",createMap());jp(this,"_constant");this._constant=J}cells(){return this._cellMap}constant(){return this._constant}isConstant(){return this._cellMap.empty()}allDummies(){let J=this._cellMap;for(let la=0,xa=J.size();la<xa;++la)if(J.itemAt(la).first.type()!==SymbolType.Dummy)return!1;return!0}copy(){let J=new YM(this._constant);return J._cellMap=this._cellMap.copy(),J}add(J){return this._constant+=J}insertSymbol(J,la=1){let xa=this._cellMap.setDefault(J,()=>0);nearZero(xa.second+=la)&&this._cellMap.erase(J)}insertRow(J,la=1){this._constant+=J._constant*la;let xa=J._cellMap;for(let Aa=0,ba=xa.size();Aa<ba;++Aa){let Sa=xa.itemAt(Aa);this.insertSymbol(Sa.first,Sa.second*la)}}removeSymbol(J){this._cellMap.erase(J)}reverseSign(){this._constant=-this._constant;let J=this._cellMap;for(let la=0,xa=J.size();la<xa;++la){let Aa=J.itemAt(la);Aa.second=-Aa.second}}solveFor(J){let la=this._cellMap,Aa=-1/la.erase(J).second;this._constant*=Aa;for(let ba=0,Sa=la.size();ba<Sa;++ba)la.itemAt(ba).second*=Aa}solveForEx(J,la){this.insertSymbol(J,-1),this.solveFor(la)}coefficientFor(J){let la=this._cellMap.find(J);return la!==void 0?la.second:0}substitute(J,la){let xa=this._cellMap.erase(J);xa!==void 0&&this.insertRow(la,xa.second)}};var su$3=(ua,J={})=>{let la=ua._internal_store;if(!la){la={counts:{}},ua._internal_store=la;for(const Aa of ua){const ba=Aa.type,Sa=Aa[`${ba}_id`];if(!Sa)continue;const Ma=Number.parseInt(Sa.split("_").pop());Number.isNaN(Ma)||(la.counts[ba]=Math.max(la.counts[ba]??0,Ma))}}return new Proxy({},{get:(Aa,ba)=>ba==="toArray"?()=>ua:{get:Sa=>ua.find(Ma=>Ma.type===ba&&Ma[`${ba}_id`]===Sa),getUsing:Sa=>{const Ma=Object.keys(Sa);if(Ma.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Ra=Ma[0],Ia=Ra.replace("_id",""),La=ua.find(Fa=>Fa.type===Ia&&Fa[Ra]===Sa[Ra]);return La?ua.find(Fa=>Fa.type===ba&&Fa[`${ba}_id`]===La[`${ba}_id`]):null},getWhere:Sa=>{const Ma=Object.keys(Sa);return ua.find(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},list:Sa=>{const Ma=Sa?Object.keys(Sa):[];return ua.filter(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},insert:Sa=>{var Ia;(Ia=la.counts)[ba]??(Ia[ba]=-1),la.counts[ba]++;const Ma=la.counts[ba],Ra={type:ba,[`${ba}_id`]:`${ba}_${Ma}`,...Sa};return J.validateInserts&&(Soup$1[ba]??any_soup_element$2).parse(Ra),ua.push(Ra),Ra},delete:Sa=>{const Ma=ua.find(Ra=>Ra[`${ba}_id`]===Sa);Ma&&ua.splice(ua.indexOf(Ma),1)},update:(Sa,Ma)=>{const Ra=ua.find(Ia=>Ia[`${ba}_id`]===Sa);if(Ra)return Object.assign(Ra,Ma),Ra},select:Sa=>{if(ba==="source_component")return ua.find(Ma=>Ma.type==="source_component"&&Ma.name===Sa.replace(/\./g,""));if(ba==="pcb_port"||ba==="source_port"||ba==="schematic_port"){const[Ma,Ra]=Sa.replace(/\./g,"").split(/[\s\>]+/),Ia=ua.find(Fa=>Fa.type==="source_component"&&Fa.name===Ma);if(!Ia)return null;const La=ua.find(Fa=>Fa.type==="source_port"&&Fa.source_component_id===Ia.source_component_id&&(Fa.name===Ra||(Fa.port_hints??[]).includes(Ra)));if(!La)return null;if(ba==="source_port")return La;if(ba==="pcb_port")return ua.find(Fa=>Fa.type==="pcb_port"&&Fa.source_port_id===La.source_port_id);if(ba==="schematic_port")return ua.find(Fa=>Fa.type==="schematic_port"&&Fa.source_port_id===La.source_port_id)}}}})};su$3.unparsed=su$3;var rotateClockwise=ua=>{if(ua==="up")return"right";if(ua==="right")return"down";if(ua==="down")return"left";if(ua==="left")return"up";throw new Error(`Invalid direction: ${ua}`)},rotateCounterClockwise=ua=>{if(ua==="up")return"left";if(ua==="left")return"down";if(ua==="down")return"right";if(ua==="right")return"up";throw new Error(`Invalid direction: ${ua}`)},rotateDirection=(ua,J)=>{for(;J>0;)ua=rotateClockwise(ua),J--;for(;J<0;)ua=rotateCounterClockwise(ua),J++;return ua},transformSchematicElement=(ua,J)=>{if(ua.type==="schematic_component")ua.center=applyToPoint(J,ua.center);else if(ua.type==="schematic_port")ua.center=applyToPoint(J,ua.center),ua.facing_direction&&(ua.facing_direction=rotateDirection(ua.facing_direction,-(Math.atan2(J.b,J.a)/Math.PI)*2));else if(ua.type==="schematic_text")ua.position=applyToPoint(J,ua.position);else if(ua.type!=="schematic_trace"){if(ua.type==="schematic_box"){const{x:la,y:xa}=applyToPoint(J,{x:ua.x,y:ua.y});ua.x=la,ua.y=xa}else if(ua.type==="schematic_line"){const{x:la,y:xa}=applyToPoint(J,{x:ua.x1,y:ua.y1}),{x:Aa,y:ba}=applyToPoint(J,{x:ua.x2,y:ua.y2});ua.x1=la,ua.y1=xa,ua.x2=Aa,ua.y2=ba}}return ua},mutateSoupForScene=(ua,J)=>{const la=ua;for(const xa of J.boxes){const Aa=la.find(Sa=>Sa.type==="schematic_component"&&Sa.schematic_component_id===xa.box_id),ba=translate(xa.x-Aa.center.x,xa.y-Aa.center.y);for(const Sa of la)Sa.schematic_component_id===xa.box_id&&transformSchematicElement(Sa,ba)}return la},convertSoupToScene=ua=>{const J=[],la=[],xa=[],Aa={schematic_component:ua.filter(ba=>ba.type==="schematic_component"),schematic_port:ua.filter(ba=>ba.type==="schematic_port"),source_port:ua.filter(ba=>ba.type==="source_port"),schematic_trace:ua.filter(ba=>ba.type==="schematic_trace"),source_trace:ua.filter(ba=>ba.type==="source_trace")};for(const ba of Aa.schematic_component){const Sa=[],Ma=ba.schematic_component_id;for(const Ia of Aa.schematic_port)Ia.schematic_component_id===ba.schematic_component_id&&Sa.push({port_id:`${Ma}.${Ia.schematic_port_id}`,rx:Ia.center.x-ba.center.x,ry:Ia.center.y-ba.center.y});const Ra={box_id:Ma,x:ba.center.x,y:ba.center.y,ports:Sa};J.push(Ra)}for(const ba of Aa.source_trace){const[Sa,Ma]=ba.connected_source_port_ids,Ra=Aa.schematic_port.find(el=>el.source_port_id===Sa),Ia=Aa.schematic_port.find(el=>el.source_port_id===Ma);if(!Ra||!Ia)continue;const La=Aa.schematic_component.find(el=>el.schematic_component_id===Ra.schematic_component_id),Fa=Aa.schematic_component.find(el=>el.schematic_component_id===Ia.schematic_component_id);if(!La||!Fa)continue;const ka={from:`${La.schematic_component_id}.${Ra.schematic_port_id}`,to:`${Fa.schematic_component_id}.${Ia.schematic_port_id}`};la.push(ka)}return{boxes:J,connections:la,nets:xa}};function getConnectionMap(ua){return ua.connections.reduce((J,la)=>(J[la.from]=la.to,J[la.to]=la.from,J),{})}function centerSides(ua,J){for(const la of["left","right"]){const xa=ua.filter(Sa=>Sa.side===la),Aa=xa.map(Sa=>Sa.ascending_box_index).filter(Sa=>!isNaN(Sa)),ba=Math.max(...Aa);for(const Sa of xa)Sa.box_id!==J.box_id&&(Sa.y-=ba/2*1.25)}}var findBoxWithMostPorts=ua=>{let J=ua[0];for(const la of ua)la.ports.length>J.ports.length&&(J=la);return J};function slideBoxesConnectedToSameNet(ua,J,la,xa){for(const Aa of["left","right"]){const ba=ua.filter(Sa=>Sa.side===Aa).sort((Sa,Ma)=>Sa.ascending_box_index-Ma.ascending_box_index);for(let Sa=0;Sa<ba.length-1;Sa++){const[Ma,Ra]=[ba[Sa],ba[Sa+1]];if(Ma.ports.length===2&&Ra.ports.length===2){const[Ia,La]=Ma.ports,[Fa,ka]=Ra.ports,[el,tl]=[Ia,La].map(ll=>J[ll.port_id]),[rl,il]=[Fa,ka].map(ll=>J[ll.port_id]);let nl=null;if((el===rl||el===il)&&la.has(el)?nl=el:(tl===rl||tl===il)&&la.has(tl)&&(nl=tl),!nl)continue;const sl=xa.nets.find(ll=>ll.net_id===nl);if(!sl.is_ground&&!sl.is_power)continue;sl.is_ground&&ba.slice(Sa+1).forEach(ll=>{ll.ascending_box_index-=1,ll.y-=1}),sl.is_power&&ba.slice(Sa+1).forEach(ll=>{ll.ascending_box_index-=1,ll.y-=1})}}}}function removeAscendingBoxIndexGaps(ua,J){for(let la=0;la<ua;la++){let xa=0;for(const Aa of J)Aa.ascending_box_index===la&&(xa+=1);if(xa===0){ua-=1;for(const Aa of J)Aa.ascending_box_index>la&&(Aa.ascending_box_index-=1)}}return ua}function addBoxesForNetsRewriteNetsToPlacedAliases(ua,J,la,xa){const Aa=Math.max(...ua.map(ba=>ba.ascending_box_index).filter(ba=>!isNaN(ba)));for(const ba of["left","right"])for(let Sa=0;Sa<=Aa;Sa++){const Ma=ua.filter(tl=>tl.side===ba).filter(tl=>tl.ascending_box_index===Sa);if(Ma.length===0)continue;const Ia=Ma.map(tl=>J.connections.filter(rl=>rl.from.startsWith(tl.box_id+".")||rl.to.startsWith(tl.box_id+".")).map(rl=>rl.from.startsWith(tl.box_id+".")?rl.to:rl.from)).map(tl=>tl.filter(rl=>la.has(rl))),La=Ia.reduce((tl,rl)=>tl.filter(il=>rl.includes(il)),Ia[0]),Fa=La.map(tl=>J.nets.find(rl=>rl.net_id===tl)),el=(ba==="left"?Math.max:Math.min)(...Ma.map(tl=>tl.x));for(const tl of Fa){const rl=Sa+(tl!=null&&tl.is_ground?-1:1),il=`${tl==null?void 0:tl.net_id}_${ba==="left"?"L":"R"}_${Sa}`,nl=tl!=null&&tl.is_ground?`${il}.top`:`${il}.bottom`,sl={box_id:il,x:el,y:rl,side:ba,ascending_port_index:0,ascending_box_index:Sa,width:0,ports:[{port_id:nl,rx:0,ry:tl!=null&&tl.is_ground?.1:-.1}]};ua.push(sl);for(const ll of Ma){const dl=xa.filter(gl=>gl.from.startsWith(ll.box_id+".")||gl.to.startsWith(ll.box_id+"."));for(const gl of dl)gl.from===tl.net_id&&(gl.from=nl),gl.to===tl.net_id&&(gl.to=nl)}}for(let tl=0;tl<Ma.length;tl++){const rl=Ma[tl],il=Ia[tl].filter(nl=>!La.includes(nl));for(const nl of il){const sl=J.nets.find(vl=>vl.net_id===nl),ll=`${nl}_${rl.ascending_box_index}_${ba==="left"?"L":"R"}_${tl}`,dl=`${ll}.${sl.is_ground?"top":"bottom"}`,gl={x:rl.x,y:rl.y+(sl.is_ground?-1:1),side:ba,ascending_port_index:0,ascending_box_index:rl.ascending_box_index,box_id:ll,ports:[{port_id:dl,rx:0,ry:sl.is_ground?.1:-.1}]};ua.push(gl);const _l=xa.find(vl=>vl.from===nl&&vl.to.startsWith(rl.box_id)||vl.to===nl&&vl.from.startsWith(rl.box_id));_l.from===nl&&(_l.from=dl),_l.to===nl&&(_l.to=dl)}}}return Aa}var rotateBox=(ua,J)=>{const la=rotate(J*(Math.PI/180));ua.ports.forEach(xa=>{const Aa=applyToPoint(la,{x:xa.rx,y:xa.ry});xa.rx=Aa.x,xa.ry=Aa.y})},normalizeVec=ua=>{const J=Math.sqrt(ua.x**2+ua.y**2);return{x:ua.x/J,y:ua.y/J}},getAllPossibleBoxRotations=ua=>[0,90,180,270].map(la=>{const xa={...ua,ports:ua.ports.map(Aa=>({...Aa}))};return rotateBox(xa,la),xa.applied_rotation_deg=la,xa}),autoRotateTwoPortBoxes=ua=>{const J=ua.boxes.sort((la,xa)=>la.y-xa.y);for(const la of J)if(la.ports.length===2){const xa=la.ports.map(Sa=>{var La;const Ma=ua.connections.filter(Fa=>Fa.from===Sa.port_id||Fa.to===Sa.port_id).map(Fa=>Fa.from===Sa.port_id?Fa.to:Fa.from);if(Ma.length===0)return null;const Ra=J.filter(Fa=>Ma.some(ka=>ka.startsWith(Fa.box_id+"."))),Ia=(La=Ra.flatMap(Fa=>Fa.ports))==null?void 0:La.filter(Fa=>Ma.includes(Fa.port_id));for(const Fa of Ia){const ka=Ra.find(el=>el.box_id===Fa.port_id.split(".")[0]);Fa.x=ka.x+Fa.rx,Fa.y=ka.y+Fa.ry}return{...Sa,connected_port:Ia[0],connected_ports:Ia}}).filter(Boolean);if(xa.length===0)continue;const Aa=getAllPossibleBoxRotations({...la,ports:xa});for(const Sa of Aa){Sa.natural_offset_sum_deg=0;for(const Ma of Sa.ports)for(const Ra of Ma.connected_ports){const Ia=normalizeVec({x:Ra.x-(Sa.x+Ma.rx),y:Ra.y-(Sa.y+Ma.ry)}),La=normalizeVec({x:Ma.rx,y:Ma.ry}),Fa=Math.sqrt((Ia.x-La.x)**2+(Ia.y-La.y)**2),ka=Ia.x*La.x+Ia.y*La.y,el=Ia.x*La.y-Ia.y*La.x,tl=Math.atan2(el,ka)*(180/Math.PI);Sa.natural_offset_sum_deg+=Math.abs(tl)/Fa}}const ba=Aa.reduce((Sa,Ma)=>Sa.natural_offset_sum_deg<Ma.natural_offset_sum_deg?Sa:Ma);rotateBox(la,ba.applied_rotation_deg)}return ua},ascendingCentralLrBug1=ua=>{const J=new Set(ua.nets.map(Ra=>Ra.net_id)),la=getConnectionMap(ua),xa=JSON.parse(JSON.stringify(ua.boxes)),Aa=JSON.parse(JSON.stringify(ua.connections));for(const Ra of xa){Ra.x=0,Ra.y=0;let Ia=0,La=0;for(const Fa of Ra.ports)Fa.rx<Ia?Ia=Fa.rx:Fa.rx>La&&(La=Fa.rx);Ra.width=La-Ia}const ba=findBoxWithMostPorts(xa);for(const Ra of ba.ports)Ra.rx>0?Ra.side="right":Ra.rx<0&&(Ra.side="left");for(const Ra of xa){if(Ra.box_id===ba.box_id)continue;const Ia=ba.ports.filter(ka=>Aa.some(el=>el.from.startsWith(Ra.box_id)&&el.to===ka.port_id||el.to.startsWith(Ra.box_id)&&el.from===ka.port_id));if(Ia.length===0){Ra.side="left";continue}let La=0,Fa=0;for(const ka of Ia)ka.rx>0?Fa+=1:ka.rx<0&&(La+=1);La>=Fa?Ra.side="left":Ra.side="right"}for(const Ra of["left","right"]){const Ia=ba.ports.filter(La=>La.side===Ra);Ia.sort((La,Fa)=>La.ry-Fa.ry);for(const La of Ia)La.ascending_port_index=Ia.indexOf(La)}for(const Ra of xa){if(Ra.box_id===ba.box_id)continue;const Ia=ua.connections.filter(Fa=>Fa.from.startsWith(Ra.box_id+".")||Fa.to.startsWith(Ra.box_id+".")).map(Fa=>Fa.from.startsWith(Ra.box_id+".")?Fa.to:Fa.from),La=ba.ports.filter(Fa=>Ia.includes(Fa.port_id));La.length!==0&&(Ra.ascending_port_index=Math.min(...La.map(Fa=>Fa.ascending_port_index)),Ra.ascending_box_index=Ra.ascending_port_index)}let Sa=Math.max(0,...xa.map(Ra=>Ra.ascending_box_index).filter(Ra=>!isNaN(Ra)));for(const Ra of xa)Ra.box_id!==ba.box_id&&Ra.ascending_box_index===void 0&&(Sa+=1,Ra.ascending_box_index=Sa);for(const Ra of["left","right"])removeAscendingBoxIndexGaps(Sa,xa.filter(Ia=>Ia.side===Ra));for(const Ra of["left","right"]){let Ia=ba.width*.75*(Ra==="left"?-1:1);for(let La=0;La<=Sa;La++){const Fa=xa.filter(tl=>tl.side===Ra&&tl.ascending_box_index===La),ka=Math.max(...Fa.map(tl=>tl.width)),el=Math.max(.5,ka)*(Ra==="left"?-1:1);Ia+=el;for(const tl of Fa)tl.box_id!==ba.box_id&&(tl.y=tl.ascending_box_index*1.25,tl.x=Ia);Ia+=el/2}}slideBoxesConnectedToSameNet(xa,la,J,ua),addBoxesForNetsRewriteNetsToPlacedAliases(xa,ua,J,Aa),centerSides(xa,ba);const Ma={...ua,connections:Aa,boxes:xa};return autoRotateTwoPortBoxes(Ma),Ma},getUnitVectorFromPointAToB=(ua,J)=>{const la={x:J.x-ua.x,y:J.y-ua.y},xa=Math.sqrt(la.x**2+la.y**2);return{x:la.x/xa,y:la.y/xa}},getUnitVectorFromDirection=ua=>{switch(ua){case"up":return{x:0,y:1};case"down":return{x:0,y:-1};case"left":return{x:-1,y:0};case"right":return{x:1,y:0}}};function doesLineIntersectLine([ua,J],[la,xa],{lineThickness:Aa=0}={}){return Aa===0?doSegmentsIntersect(ua,J,la,xa):segmentsDistance(ua,J,la,xa)<=Aa}function doSegmentsIntersect(ua,J,la,xa){const Aa=orientation(ua,J,la),ba=orientation(ua,J,xa),Sa=orientation(la,xa,ua),Ma=orientation(la,xa,J);return!!(Aa!==ba&&Sa!==Ma||Aa===0&&onSegment$1(ua,la,J)||ba===0&&onSegment$1(ua,xa,J)||Sa===0&&onSegment$1(la,ua,xa)||Ma===0&&onSegment$1(la,J,xa))}function orientation(ua,J,la){const xa=(J.y-ua.y)*(la.x-J.x)-(J.x-ua.x)*(la.y-J.y);return xa===0?0:xa>0?1:2}function onSegment$1(ua,J,la){return J.x<=Math.max(ua.x,la.x)&&J.x>=Math.min(ua.x,la.x)&&J.y<=Math.max(ua.y,la.y)&&J.y>=Math.min(ua.y,la.y)}function segmentsDistance(ua,J,la,xa){if(ua.x===J.x&&ua.y===J.y)return pointToSegmentDistance$1(ua,la,xa);if(la.x===xa.x&&la.y===xa.y)return pointToSegmentDistance$1(la,ua,J);if(doSegmentsIntersect(ua,J,la,xa))return 0;const Aa=[pointToSegmentDistance$1(ua,la,xa),pointToSegmentDistance$1(J,la,xa),pointToSegmentDistance$1(la,ua,J),pointToSegmentDistance$1(xa,ua,J)];return Math.min(...Aa)}function pointToSegmentDistance$1(ua,J,la){const xa=(la.x-J.x)**2+(la.y-J.y)**2;if(xa===0)return distance$3(ua,J);let Aa=((ua.x-J.x)*(la.x-J.x)+(ua.y-J.y)*(la.y-J.y))/xa;Aa=Math.max(0,Math.min(1,Aa));const ba={x:J.x+Aa*(la.x-J.x),y:J.y+Aa*(la.y-J.y)};return distance$3(ua,ba)}function distance$3(ua,J){const la=ua.x-J.x,xa=ua.y-J.y;return Math.sqrt(la*la+xa*xa)}var SI_PREFIXES=[{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"},{value:1,symbol:""},{value:.001,symbol:"m"},{value:1e-6,symbol:"µ"},{value:1e-9,symbol:"n"},{value:1e-12,symbol:"p"}];function formatSiUnit(ua){if(ua==null)return"";if(ua===0)return"0";const J=SI_PREFIXES.find(Aa=>Math.abs(ua)>=Aa.value)||SI_PREFIXES[SI_PREFIXES.length-1];return`${(ua/J.value).toPrecision(3).replace(/\.?0+$/,"")}${J.symbol}`}var su$2=(ua,J={})=>{let la=ua._internal_store;if(!la){la={counts:{}},ua._internal_store=la;for(const Aa of ua){const ba=Aa.type,Sa=Aa[`${ba}_id`];if(!Sa)continue;const Ma=Number.parseInt(Sa.split("_").pop());Number.isNaN(Ma)||(la.counts[ba]=Math.max(la.counts[ba]??0,Ma))}}return new Proxy({},{get:(Aa,ba)=>ba==="toArray"?()=>ua:{get:Sa=>ua.find(Ma=>Ma.type===ba&&Ma[`${ba}_id`]===Sa),getUsing:Sa=>{const Ma=Object.keys(Sa);if(Ma.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Ra=Ma[0],Ia=Ra.replace("_id",""),La=ua.find(Fa=>Fa.type===Ia&&Fa[Ra]===Sa[Ra]);return La?ua.find(Fa=>Fa.type===ba&&Fa[`${ba}_id`]===La[`${ba}_id`]):null},getWhere:Sa=>{const Ma=Object.keys(Sa);return ua.find(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},list:Sa=>{const Ma=Sa?Object.keys(Sa):[];return ua.filter(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},insert:Sa=>{var Ia;(Ia=la.counts)[ba]??(Ia[ba]=-1),la.counts[ba]++;const Ma=la.counts[ba],Ra={type:ba,[`${ba}_id`]:`${ba}_${Ma}`,...Sa};return J.validateInserts&&(Soup[ba]??any_soup_element$1).parse(Ra),ua.push(Ra),Ra},delete:Sa=>{const Ma=ua.find(Ra=>Ra[`${ba}_id`]===Sa);Ma&&ua.splice(ua.indexOf(Ma),1)},update:(Sa,Ma)=>{const Ra=ua.find(Ia=>Ia.type===ba&&Ia[`${ba}_id`]===Sa);if(Ra)return Object.assign(Ra,Ma),Ra},select:Sa=>{if(ba==="source_component")return ua.find(Ma=>Ma.type==="source_component"&&Ma.name===Sa.replace(/\./g,""));if(ba==="pcb_port"||ba==="source_port"||ba==="schematic_port"){const[Ma,Ra]=Sa.replace(/\./g,"").split(/[\s\>]+/),Ia=ua.find(Fa=>Fa.type==="source_component"&&Fa.name===Ma);if(!Ia)return null;const La=ua.find(Fa=>Fa.type==="source_port"&&Fa.source_component_id===Ia.source_component_id&&(Fa.name===Ra||(Fa.port_hints??[]).includes(Ra)));if(!La)return null;if(ba==="source_port")return La;if(ba==="pcb_port")return ua.find(Fa=>Fa.type==="pcb_port"&&Fa.source_port_id===La.source_port_id);if(ba==="schematic_port")return ua.find(Fa=>Fa.type==="schematic_port"&&Fa.source_port_id===La.source_port_id)}}}})};su$2.unparsed=su$2;var su_default$2=su$2,__defProp$o=Object.defineProperty,__export$4=(ua,J)=>{for(var la in J)__defProp$o(ua,la,{get:J[la],enumerable:!0})},components_exports={};__export$4(components_exports,{Battery:()=>Battery,Board:()=>Board,Capacitor:()=>Capacitor,Chip:()=>Chip,Constraint:()=>Constraint2,Crystal:()=>Crystal,Diode:()=>Diode,FabricationNotePath:()=>FabricationNotePath,FabricationNoteText:()=>FabricationNoteText,Footprint:()=>Footprint,Group:()=>Group$2,Hole:()=>Hole,Inductor:()=>Inductor,Jumper:()=>Jumper,Keepout:()=>Keepout,Led:()=>Led,Mosfet:()=>Mosfet,Net:()=>Net,NetAlias:()=>NetAlias,NormalComponent:()=>NormalComponent,PinHeader:()=>PinHeader,PlatedHole:()=>PlatedHole,Port:()=>Port,Potentiometer:()=>Potentiometer,PowerSource:()=>PowerSource,PrimitiveComponent:()=>PrimitiveComponent,PushButton:()=>PushButton,Renderable:()=>Renderable,Resistor:()=>Resistor,Resonator:()=>Resonator,SilkscreenCircle:()=>SilkscreenCircle,SilkscreenLine:()=>SilkscreenLine,SilkscreenPath:()=>SilkscreenPath,SilkscreenRect:()=>SilkscreenRect,SilkscreenText:()=>SilkscreenText,SmtPad:()=>SmtPad,Subcircuit:()=>Subcircuit,Trace:()=>Trace2,TraceHint:()=>TraceHint,Transistor:()=>Transistor,Via:()=>Via});var debug$4=Debug$1("tscircuit:renderable"),orderedRenderPhases=["ReactSubtreesRender","InitializePortsFromChildren","CreateNetsFromProps","CreateTracesFromProps","CreateTraceHintsFromProps","SourceRender","SourceParentAttachment","PortMatching","SourceTraceRender","SourceAddConnectivityMapKey","SchematicComponentRender","SchematicPortRender","SchematicLayout","SchematicTraceRender","PcbComponentRender","PcbPrimitiveRender","PcbFootprintLayout","PcbPortRender","PcbPortAttachment","PcbLayout","PcbComponentSizeCalculation","PcbTraceRender","PcbTraceHintRender","PcbRouteNetIslands","CadModelRender","PartsEngineRender"],globalRenderCounter=0,Renderable=class{constructor(ua){jp(this,"renderPhaseStates");jp(this,"shouldBeRemoved",!1);jp(this,"children");jp(this,"isPcbPrimitive",!1);jp(this,"isSchematicPrimitive",!1);jp(this,"_renderId");jp(this,"_currentRenderPhase",null);jp(this,"_asyncEffects",[]);jp(this,"parent",null);this._renderId=`${globalRenderCounter++}`,this.children=[],this.renderPhaseStates={};for(const J of orderedRenderPhases)this.renderPhaseStates[J]={initialized:!1,dirty:!1}}_markDirty(ua){var la;this.renderPhaseStates[ua].dirty=!0;const J=orderedRenderPhases.indexOf(ua);for(let xa=J+1;xa<orderedRenderPhases.length;xa++)this.renderPhaseStates[orderedRenderPhases[xa]].dirty=!0;(la=this.parent)!=null&&la._markDirty&&this.parent._markDirty(ua)}_queueAsyncEffect(ua,J){const la={promise:J(),phase:this._currentRenderPhase,effectName:ua,complete:!1};this._asyncEffects.push(la),"root"in this&&this.root&&this.root.emit("asyncEffect:start",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase}),la.promise.then(()=>{la.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase})}).catch(xa=>{console.error(`Async effect error in ${la.phase} "${ua}":
7536
+ `),{solved:!1,connectionName:ua.name}}createObstacleList({dominantLayer:ua,connection:J,obstaclesFromTraces:la}){return new ObstacleList(this.allObstacles.filter(xa=>!xa.connectedTo.includes(J.name)).filter(xa=>xa.layers.includes(ua)).concat(la??[]))}postprocessConnectionSolveResult(ua,J){return J}solve(){const ua=[],J=[];this.debugTraceCount=0;for(const la of this.input.connections){const xa=la.pointsToConnect[0].layer??"top";this.debugTraceCount+=1,this.obstacles=this.createObstacleList({dominantLayer:xa,connection:la,obstaclesFromTraces:J});let Aa=this.solveConnection(la);Aa=this.postprocessConnectionSolveResult(la,Aa),ua.push(Aa),debug2$2.enabled&&this.drawDebugTraceObstacles(J),Aa.solved&&J.push(...getObstaclesFromRoute(Aa.route.map(ba=>({x:ba.x,y:ba.y,layer:ba.layer??xa})),la.name))}return ua}solveAndMapToTraces(){return this.solve().flatMap(J=>J.solved?[{type:"pcb_trace",pcb_trace_id:`pcb_trace_for_${J.connectionName}`,route:addViasWhenLayerChanges(J.route.map(la=>({route_type:"wire",x:la.x,y:la.y,width:this.input.minTraceWidth,layer:la.layer})))}]:[])}getDebugGroup(){const ua=`t${this.debugTraceCount}_iter[${this.iterations-1}]`;return this.iterations<30||this.iterations<100&&this.iterations%10===0||this.iterations<1e3&&this.iterations%100===0||!this.debugSolutions?ua:null}drawDebugTraceObstacles(ua){const{debugTraceCount:J,debugSolutions:la}=this;for(const xa in la)xa.startsWith(`t${J}_`)&&la[xa].push(...ua.map((Aa,ba)=>({type:"pcb_smtpad",pcb_component_id:"",layer:Aa.layers[0],width:Aa.width,shape:"rect",x:Aa.center.x,y:Aa.center.y,pcb_smtpad_id:`trace_obstacle_${ba}`,height:Aa.height})))}drawDebugSolution({current:ua,newNeighbors:J}){const la=this.getDebugGroup();if(!la)return;const{openSet:xa,debugTraceCount:Aa,debugSolutions:ba}=this;ba[la]??(ba[la]=[]);const Sa=ba[la];Sa.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${ua.x}_${ua.y}`,font:"tscircuit2024",font_size:.25,text:"X"+(ua.l!==void 0?ua.l:""),pcb_component_id:"",layer:"top",anchor_position:{x:ua.x,y:ua.y},anchor_alignment:"center"});for(let Ma=0;Ma<xa.length;Ma++){const Ra=xa[Ma];Sa.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${Ra.x}_${Ra.y}`,layer:"top",route:[[0,.05],[.05,0],[0,-.05],[-.05,0],[0,.05]].map(([Ia,La])=>({x:Ra.x+Ia,y:Ra.y+La})),stroke_width:.01}),Sa.push({type:"pcb_fabrication_note_text",pcb_fabrication_note_text_id:`debug_note_${Ra.x}_${Ra.y}`,font:"tscircuit2024",font_size:.03,text:Ma.toString(),pcb_component_id:"",layer:"top",anchor_position:{x:Ra.x,y:Ra.y},anchor_alignment:"center"})}if(ua.parent){const Ma=[];let Ra=ua;for(;Ra;)Ma.unshift(Ra),Ra=Ra.parent;Sa.push({type:"pcb_fabrication_note_path",pcb_component_id:"",pcb_fabrication_note_path_id:`note_path_${ua.x}_${ua.y}`,layer:"top",route:Ma,stroke_width:.01})}}},debug3$1=Debug$1("autorouting-dataset:infinite-grid-ijump-astar:get-distance-to-overcome-obstacle");function getDistanceToOvercomeObstacle({node:ua,travelDir:J,wallDir:la,obstacle:xa,obstacles:Aa,obstaclesInRow:ba=0,OBSTACLE_MARGIN:Sa=.15,SHOULD_DETECT_CONJOINED_OBSTACLES:Ma=!1,MAX_CONJOINED_OBSTACLES:Ra=20}){let Ia;if(J.dx===0?J.dy>0?Ia=xa.center.y+xa.height/2-ua.y:Ia=ua.y-(xa.center.y-xa.height/2):J.dx>0?Ia=xa.center.x+xa.width/2-ua.x:Ia=ua.x-(xa.center.x-xa.width/2),Ia+=Sa,Ma&&ba<Ra){const La=Aa.getObstacleAt(ua.x+J.dx*Ia+la.dx*(la.wallDistance+.001),ua.y+J.dy*Ia+la.dy*(la.wallDistance+.001));if(La===xa)return Ia;if(La&&La.type==="rect"){const Fa=J.dy===0,ka=Fa?xa.height:xa.width;if((Fa?La.height:La.width)>ka)return debug3$1("next obstacle on path is bigger, not trying to overcome it"),Ia;const tl=getDistanceToOvercomeObstacle({node:{x:ua.x+J.dx*Ia,y:ua.y+J.dy*Ia},travelDir:J,wallDir:la,obstacle:La,obstacles:Aa,obstaclesInRow:ba+1,SHOULD_DETECT_CONJOINED_OBSTACLES:Ma,MAX_CONJOINED_OBSTACLES:Ra,OBSTACLE_MARGIN:Sa});Ia+=tl}}return Ia}var IJumpAutorouter=class extends GeneralizedAstarAutorouter{constructor(){super(...arguments);jp(this,"MAX_ITERATIONS",200)}getNeighbors(J){const la=this.obstacles,xa=this.goalPoint;let Aa;J.parent?Aa=dirFromAToB(J.parent,J):Aa=dirFromAToB(J,xa);const ba=[{dx:0,dy:1},{dx:1,dy:0},{dx:0,dy:-1},{dx:-1,dy:0}].filter(Ma=>{var Ra;return Ma.dx===Aa.dx*-1&&Ma.dy===Aa.dy*-1?!1:!(Ma.dx===Aa.dx&&Ma.dy===Aa.dy&&((Ra=J.parent)!=null&&Ra.obstacleHit))}).map(Ma=>la.getOrthoDirectionCollisionInfo(J,Ma,{margin:this.OBSTACLE_MARGIN})).filter(Ma=>Ma.wallDistance>=this.OBSTACLE_MARGIN),Sa=[];for(const Ma of ba){let Ra=null;J!=null&&J.obstacleHit&&(Ra=getDistanceToOvercomeObstacle({node:J,travelDir:Ma,wallDir:{...Aa,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:la,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const Ia=distAlongDir(J,xa,Ma),La=(Ma.dx===0||Math.sign(xa.x-J.x)===Ma.dx)&&(Ma.dy===0||Math.sign(xa.y-J.y)===Ma.dy);Ia<Ma.wallDistance&&Ia>0&&La?Sa.push({...Ma,travelDistance:Ia}):Ra!==null&&Ra<Ma.wallDistance?Sa.push({...Ma,travelDistance:Ra}):Ma.wallDistance!==1/0&&Sa.push({...Ma,travelDistance:Ma.wallDistance-this.OBSTACLE_MARGIN})}return Sa.filter(Ma=>!la.isObstacleAt(J.x+Ma.dx*Ma.travelDistance,J.y+Ma.dy*Ma.travelDistance)).map(Ma=>({x:J.x+Ma.dx*Ma.travelDistance,y:J.y+Ma.dy*Ma.travelDistance,obstacleHit:Ma.obstacle}))}};function generateApproximatingRects(ua,J=4){const{center:la,width:xa,height:Aa,rotation:ba}=ua,Sa=[],Ma=ba*Math.PI/180,Ra=Math.cos(Ma),Ia=Math.sin(Ma),La=(ba%360+360)%360;if(Aa<=xa?La>=45&&La<135||La>=225&&La<315:La>=135&&La<225||La>=315||La<45){const ka=xa/J;for(let el=0;el<J;el++){const tl=(el-J/2+.5)*ka,rl=-tl*Ra,il=-tl*Ia,nl=ka*1.1,sl=Math.abs(Aa*Ra)+Math.abs(ka*Ia);Sa.push({center:{x:la.x+rl,y:la.y+il},width:nl,height:sl})}}else{const ka=Aa/J;for(let el=0;el<J;el++){const tl=(el-J/2+.5)*ka,rl=-tl*Ia,il=tl*Ra,nl=Math.abs(xa*Ra)+Math.abs(ka*Ia),sl=ka*1.1;Sa.push({center:{x:la.x+rl,y:la.y+il},width:nl,height:sl})}}return Sa}var EVERY_LAYER=["top","inner1","inner2","bottom"],getObstaclesFromCircuitJson=(ua,J)=>{const la=Aa=>J?Aa.concat(Aa.map(ba=>J==null?void 0:J.getNetConnectedToId(ba)).filter(Boolean)):Aa,xa=[];for(const Aa of ua)if(Aa.type==="pcb_smtpad"){if(Aa.shape==="circle")xa.push({type:"oval",layers:[Aa.layer],center:{x:Aa.x,y:Aa.y},width:Aa.radius*2,height:Aa.radius*2,connectedTo:la([Aa.pcb_smtpad_id])});else if(Aa.shape==="rect")xa.push({type:"rect",layers:[Aa.layer],center:{x:Aa.x,y:Aa.y},width:Aa.width,height:Aa.height,connectedTo:la([Aa.pcb_smtpad_id])});else if(Aa.shape==="rotated_rect"){const ba={center:{x:Aa.x,y:Aa.y},width:Aa.width,height:Aa.height,rotation:Aa.ccw_rotation},Sa=generateApproximatingRects(ba);for(const Ma of Sa)xa.push({type:"rect",layers:[Aa.layer],center:Ma.center,width:Ma.width,height:Ma.height,connectedTo:la([Aa.pcb_smtpad_id])})}}else if(Aa.type==="pcb_keepout")Aa.shape==="circle"?xa.push({type:"oval",layers:Aa.layers,center:{x:Aa.center.x,y:Aa.center.y},width:Aa.radius*2,height:Aa.radius*2,connectedTo:[]}):Aa.shape==="rect"&&xa.push({type:"rect",layers:Aa.layers,center:{x:Aa.center.x,y:Aa.center.y},width:Aa.width,height:Aa.height,connectedTo:[]});else if(Aa.type==="pcb_hole")Aa.hole_shape==="oval"?xa.push({type:"oval",center:{x:Aa.x,y:Aa.y},width:Aa.hole_width,height:Aa.hole_height,connectedTo:[]}):Aa.hole_shape==="square"?xa.push({type:"rect",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.hole_diameter,height:Aa.hole_diameter,connectedTo:[]}):(Aa.hole_shape==="round"||Aa.hole_shape==="circle")&&xa.push({type:"rect",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.hole_diameter,height:Aa.hole_diameter,connectedTo:[]});else if(Aa.type==="pcb_plated_hole")Aa.shape==="circle"?xa.push({type:"oval",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.outer_diameter,height:Aa.outer_diameter,connectedTo:la([Aa.pcb_plated_hole_id])}):(Aa.shape==="oval"||Aa.shape==="pill")&&xa.push({type:"oval",layers:EVERY_LAYER,center:{x:Aa.x,y:Aa.y},width:Aa.outer_width,height:Aa.outer_height,connectedTo:la([Aa.pcb_plated_hole_id])});else if(Aa.type==="pcb_trace"){const ba=getObstaclesFromRoute(Aa.route.map(Sa=>({x:Sa.x,y:Sa.y,layer:"layer"in Sa?Sa.layer:Sa.from_layer})),Aa.source_trace_id);xa.push(...ba)}else Aa.type==="pcb_via"&&xa.push({type:"rect",layers:Aa.layers,center:{x:Aa.x,y:Aa.y},connectedTo:[],width:Aa.outer_diameter,height:Aa.outer_diameter});return xa};function getAlternativeGoalBoxes(ua){const{pcbConnMap:J,goalElementId:la}=ua;if(!la.startsWith("pcb_port_"))throw new Error(`Currently alternative goal boxes must have a goal id with prefix "pcb_port_" (got ${la})`);const xa=J.getAllTracesConnectedToPort(la);return getObstaclesFromCircuitJson(xa).map(Aa=>({...Aa,connectedTo:[la]}))}var getConnectionWithAlternativeGoalBoxes=ua=>{let{connection:J,pcbConnMap:la}=ua;if(J.pointsToConnect.length!==2)throw new Error(`Connection must have exactly 2 points for alternative goal boxes (got ${J.pointsToConnect.length})`);const[xa,Aa]=J.pointsToConnect;if(!xa.pcb_port_id||!Aa.pcb_port_id)throw new Error(`Connection points must have pcb_port_id for alternative goal box calculation (got ${xa.pcb_port_id} and ${Aa.pcb_port_id})`);const ba=getAlternativeGoalBoxes({goalElementId:xa.pcb_port_id,pcbConnMap:la}).concat([{center:xa,width:.01,height:.01,connectedTo:[xa.pcb_port_id],layers:[xa.layer],type:"rect"}]),Sa=getAlternativeGoalBoxes({goalElementId:Aa.pcb_port_id,pcbConnMap:la}).concat([{center:Aa,width:.01,height:.01,connectedTo:[Aa.pcb_port_id],layers:[Aa.layer],type:"rect"}]);if(ba.length<=1&&Sa.length<=1)return{...J,startPoint:xa,endPoint:Aa,goalBoxes:[]};const Ma=findNearestPointsBetweenBoxSets(ba,Sa);let Ra,Ia,La;return ba.length>=Sa.length?(Ra={...Aa,...Ma.pointB},Ia={...xa,...Ma.pointA},La=ba):(Ra={...xa,...Ma.pointA},Ia={...Aa,...Ma.pointB},La=Sa),{startPoint:Ra,endPoint:Ia,goalBoxes:La,name:J.name,pointsToConnect:[Ra,Ia]}},getSimpleRouteJson=(ua,J={})=>{const la={minTraceWidth:.1};la.layerCount=J.layerCount??1,la.obstacles=getObstaclesFromCircuitJson(ua,J.connMap),la.connections=[];for(const Aa of ua)if(Aa.type==="source_trace"){let ba={name:Aa.source_trace_id,pointsToConnect:Aa.connected_source_port_ids.map(Sa=>{var Ra;const Ma=distExports$3.su(ua).pcb_port.getWhere({source_port_id:Sa});if(!Ma)throw new Error(`Could not find pcb_port for source_port_id "${Sa}"`);return{x:Ma.x,y:Ma.y,layer:((Ra=Ma.layers)==null?void 0:Ra[0])??"top",pcb_port_id:Ma.pcb_port_id}})};if(J.optimizeWithGoalBoxes){const Sa=new PcbConnectivityMap(ua);ba=getConnectionWithAlternativeGoalBoxes({connection:ba,pcbConnMap:Sa})}la.connections.push(ba),markObstaclesAsConnected(la.obstacles,ba.pointsToConnect,ba.name)}const xa={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0};for(const Aa of la.obstacles)xa.minX=Math.min(xa.minX,Aa.center.x-Aa.width/2),xa.maxX=Math.max(xa.maxX,Aa.center.x+Aa.width/2),xa.minY=Math.min(xa.minY,Aa.center.y-Aa.height/2),xa.maxY=Math.max(xa.maxY,Aa.center.y+Aa.height/2);for(const Aa of la.connections)for(const ba of Aa.pointsToConnect)xa.minX=Math.min(xa.minX,ba.x),xa.maxX=Math.max(xa.maxX,ba.x),xa.minY=Math.min(xa.minY,ba.y),xa.maxY=Math.max(xa.maxY,ba.y);return la.bounds=xa,la},markObstaclesAsConnected=(ua,J,la)=>{for(const xa of J)for(const Aa of ua)isPointInsideObstacle(xa,Aa)&&Aa.connectedTo.push(la)};function isPointInsideObstacle(ua,J){const la=J.width/2,xa=J.height/2;if(J.type==="rect")return ua.x>=J.center.x-la&&ua.x<=J.center.x+la&&ua.y>=J.center.y-xa&&ua.y<=J.center.y+xa;if(J.type==="oval"){const Aa=(ua.x-J.center.x)/la,ba=(ua.y-J.center.y)/xa;return Aa*Aa+ba*ba<=1}return!1}function dirFromAToB2(ua,J){const la=J.x>ua.x?1:J.x<ua.x?-1:0,xa=J.y>ua.y?1:J.y<ua.y?-1:0,Aa=J.l>ua.l?1:J.l<ua.l?-1:0;return{dx:la,dy:xa,dl:Aa}}var LAYER_COUNT_INDEX_MAP={1:["top"],2:["top","bottom"],4:["top","inner1","inner2","bottom"]},getLayerNamesForLayerCount=ua=>LAYER_COUNT_INDEX_MAP[ua];function getLayerIndex(ua,J){const xa=LAYER_COUNT_INDEX_MAP[ua].indexOf(J);if(xa===-1)throw new Error(`Invalid layer for getLayerIndex (for layerCount === ${ua}): "${J}"`);return xa}function indexToLayer(ua,J){const xa=LAYER_COUNT_INDEX_MAP[ua][J];if(!xa)throw new Error(`Invalid index for indexToLayer (for layerCount === ${ua}): "${J}"`);return xa}var ObstacleList3d=class extends ObstacleList{constructor(J,la){super([]);jp(this,"obstacles");jp(this,"GRID_STEP",.1);jp(this,"layerCount");this.layerCount=J;const xa=getLayerNamesForLayerCount(J);this.obstacles=la.flatMap(Aa=>Aa.layers.filter(ba=>xa.includes(ba)).map(ba=>({...Aa,left:Aa.center.x-Aa.width/2,right:Aa.center.x+Aa.width/2,top:Aa.center.y+Aa.height/2,bottom:Aa.center.y-Aa.height/2,l:getLayerIndex(J,ba)})))}getObstacleAt(J,la,xa,Aa){Aa??(Aa=this.GRID_STEP);for(const ba of this.obstacles){if(ba.l!==xa)continue;const Sa=ba.width/2+Aa,Ma=ba.height/2+Aa;if(J>=ba.center.x-Sa&&J<=ba.center.x+Sa&&la>=ba.center.y-Ma&&la<=ba.center.y+Ma)return ba}return null}isObstacleAt(J,la,xa,Aa){return this.getObstacleAt(J,la,xa,Aa)!==null}getDirectionDistancesToNearestObstacle3d(J,la,xa){const{GRID_STEP:Aa}=this,ba={left:1/0,top:1/0,bottom:1/0,right:1/0};for(const Sa of this.obstacles)if(Sa.l===xa&&Sa.type==="rect"){const Ma=Sa.center.x-Sa.width/2-Aa,Ra=Sa.center.x+Sa.width/2+Aa,Ia=Sa.center.y+Sa.height/2+Aa,La=Sa.center.y-Sa.height/2-Aa;la>=La&&la<=Ia&&J>Ma&&(ba.left=Math.min(ba.left,J-Ra)),la>=La&&la<=Ia&&J<Ra&&(ba.right=Math.min(ba.right,Ma-J)),J>=Ma&&J<=Ra&&la<Ia&&(ba.top=Math.min(ba.top,La-la)),J>=Ma&&J<=Ra&&la>La&&(ba.bottom=Math.min(ba.bottom,la-Ia))}return ba}getOrthoDirectionCollisionInfo(J,la,{margin:xa=0}={}){const{x:Aa,y:ba,l:Sa}=J,{dx:Ma,dy:Ra,dl:Ia}=la;let La=1/0,Fa=null;if(Ia!==0){const ka=Sa+Ia;return this.isObstacleAt(Aa,ba,ka,xa)?(La=1,Fa=this.getObstacleAt(Aa,ba,ka,xa)):La=1,{dx:Ma,dy:Ra,dl:Ia,wallDistance:La,obstacle:Fa}}else{for(const ka of this.obstacles){if(ka.l!==Sa)continue;const el=ka.left-xa,tl=ka.right+xa,rl=ka.top+xa,il=ka.bottom-xa;let nl=null;Ma===1&&Ra===0?ba>il&&ba<rl&&Aa<ka.left&&(nl=ka.left-Aa):Ma===-1&&Ra===0?ba>il&&ba<rl&&Aa>ka.right&&(nl=Aa-ka.right):Ma===0&&Ra===1?Aa>el&&Aa<tl&&ba<ka.bottom&&(nl=ka.bottom-ba):Ma===0&&Ra===-1&&Aa>el&&Aa<tl&&ba>ka.top&&(nl=ba-ka.top),nl!==null&&nl<La&&(La=nl,Fa=ka)}return{dx:Ma,dy:Ra,dl:0,wallDistance:La,obstacle:Fa}}}getObstaclesOverlappingRegion(J){const la=[];for(const xa of this.obstacles){if(xa.l!==J.l)continue;const{left:Aa,right:ba,top:Sa,bottom:Ma}=xa;Aa<=J.maxX&&ba>=J.minX&&Sa>=J.minY&&Ma<=J.maxY&&la.push(xa)}return la}},MultilayerIjump=class extends GeneralizedAstarAutorouter{constructor(J){super(J);jp(this,"MAX_ITERATIONS",500);jp(this,"VIA_COST",4);jp(this,"VIA_DIAMETER",.5);jp(this,"allowLayerChange",!0);jp(this,"layerCount");jp(this,"obstacles");jp(this,"optimizeWithGoalBoxes");jp(this,"connMap");jp(this,"pcbConnMap");jp(this,"GOAL_RUSH_FACTOR",1.1);jp(this,"defaultGoalViaMargin",.5);jp(this,"marginsWithCosts");this.layerCount=J.input.layerCount??2,this.MAX_ITERATIONS=J.MAX_ITERATIONS??this.MAX_ITERATIONS,this.VIA_COST=J.VIA_COST??this.VIA_COST,this.connMap=J.connMap,this.pcbConnMap=J.pcbConnMap??new PcbConnectivityMap,this.optimizeWithGoalBoxes=J.optimizeWithGoalBoxes??!1,this.obstacles=null,this.marginsWithCosts=J.marginsWithCosts??[{margin:1,enterCost:0,travelCostFactor:1},{margin:this.OBSTACLE_MARGIN,enterCost:10,travelCostFactor:2}]}get largestMargin(){return this.marginsWithCosts[0].margin}preprocessConnectionBeforeSolving(J){return this.optimizeWithGoalBoxes?getConnectionWithAlternativeGoalBoxes({connection:J,pcbConnMap:this.pcbConnMap}):J}postprocessConnectionSolveResult(J,la){if(!la.solved)return la;if(this.optimizeWithGoalBoxes){const xa=la.route.map(Aa=>({x:Aa.x,y:Aa.y,route_type:"wire",layer:Aa.layer,width:this.input.minTraceWidth}));xa[0].start_pcb_port_id=J.pointsToConnect[0].pcb_port_id,xa[xa.length-1].end_pcb_port_id=J.pointsToConnect[1].pcb_port_id,this.pcbConnMap.addTrace({type:"pcb_trace",pcb_trace_id:`postprocess_trace_${nanoid$1(8)}`,route:xa})}return la}createObstacleList({dominantLayer:J,connection:la,obstaclesFromTraces:xa}){const Aa=this.connMap?this.connMap.getNetConnectedToId(la.name):la.name;if(!Aa)throw new Error(`The connection.name "${la.name}" wasn't present in the full connectivity map`);return new ObstacleList3d(this.layerCount,this.allObstacles.filter(ba=>!ba.connectedTo.includes(Aa)).concat(xa??[]))}computeG(J,la){let xa=J.g+manDist(J,la)*(J.travelMarginCostFactor??1)+(la.enterMarginCost??0);return(la.l??J.l!==-1??-1)&&(xa+=this.VIA_COST),xa}computeH(J){const la=Math.abs(J.x-this.goalPoint.x),xa=Math.abs(J.y-this.goalPoint.y),Aa=Math.abs(J.l-this.goalPoint.l);return(la+xa)**this.GOAL_RUSH_FACTOR+Aa*this.VIA_COST}getStartNode(J){return{...super.getStartNode(J),l:this.layerToIndex(J.pointsToConnect[0].layer)}}layerToIndex(J){return getLayerIndex(this.layerCount,J)}indexToLayer(J){return indexToLayer(this.layerCount,J)}getNodeName(J){return`${nodeName(J,this.GRID_STEP)}-${J.l??0}`}hasSpaceForVia(J,la){return J.every(xa=>this.obstacles.getObstaclesOverlappingRegion({minX:la.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:la.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:la.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:la.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:xa}).length===0)}getNeighborsSurroundingGoal(J){this.obstacles;const la=this.goalPoint,xa=[],Aa=[{dx:1,dy:0,dl:0},{dx:-1,dy:0,dl:0},{dx:0,dy:1,dl:0},{dx:0,dy:-1,dl:0}],ba=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin;for(const Sa of Aa){const Ma={x:J.x+Sa.dx*ba,y:J.y+Sa.dy*ba,l:J.l+Sa.dl,obstacleHit:null};this.hasSpaceForVia([J.l,la.l],Ma)&&xa.push(Ma)}return xa}getNeighbors(J){const la=this.obstacles,xa=this.goalPoint,Aa=manDist(J,xa);if(Aa<=this.OBSTACLE_MARGIN)return this.getNeighborsSurroundingGoal(J);let ba;J.parent?ba=dirFromAToB2(J.parent,J):ba=dirFromAToB2(J,xa);const Sa=[{dx:0,dy:1,dl:0},{dx:1,dy:0,dl:0},{dx:0,dy:-1,dl:0},{dx:-1,dy:0,dl:0}],Ma=Aa>this.VIA_DIAMETER+this.OBSTACLE_MARGIN,Ra=manDist(J,this.startNode)>this.VIA_DIAMETER+this.OBSTACLE_MARGIN;this.allowLayerChange&&Ma&&Ra&&(J.l<this.layerCount-1&&Sa.push({dx:0,dy:0,dl:1}),J.l>0&&Sa.push({dx:0,dy:0,dl:-1}));const Ia=Sa.filter(Fa=>{var ka;return Fa.dx===ba.dx*-1&&Fa.dy===ba.dy*-1&&Fa.dl===ba.dl*-1?!1:!(Fa.dx===ba.dx&&Fa.dy===ba.dy&&Fa.dl===ba.dl&&((ka=J.parent)!=null&&ka.obstacleHit))}).map(Fa=>la.getOrthoDirectionCollisionInfo(J,Fa,{margin:this.OBSTACLE_MARGIN})).filter(Fa=>!(Fa.wallDistance<this.OBSTACLE_MARGIN)),La=[];for(const Fa of Ia){const ka=Fa.dx===0&&Fa.dy===0&&Fa.dl===1,el=Fa.dx===0&&Fa.dy===0&&Fa.dl===-1;if((ka||el)&&![J.l,J.l+Fa.dl].every(sl=>la.getObstaclesOverlappingRegion({minX:J.x-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,minY:J.y-this.VIA_DIAMETER/2-this.OBSTACLE_MARGIN,maxX:J.x+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,maxY:J.y+this.VIA_DIAMETER/2+this.OBSTACLE_MARGIN,l:sl}).length===0))continue;if(ka){J.l<this.layerCount-1&&La.push({...Fa,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}if(el){J.l>0&&La.push({...Fa,travelDistance:0,enterMarginCost:0,travelMarginCostFactor:1});continue}let tl=null;J!=null&&J.obstacleHit&&(tl=getDistanceToOvercomeObstacle({node:J,travelDir:Fa,wallDir:{...ba,wallDistance:this.OBSTACLE_MARGIN},obstacle:J.obstacleHit,obstacles:la,OBSTACLE_MARGIN:this.OBSTACLE_MARGIN,SHOULD_DETECT_CONJOINED_OBSTACLES:!0}));const rl=distAlongDir(J,xa,Fa),il=(Fa.dx===0||Math.sign(xa.x-J.x)===Fa.dx)&&(Fa.dy===0||Math.sign(xa.y-J.y)===Fa.dy);if(rl<Fa.wallDistance&&rl>0&&il){const nl=J.l===xa.l;let sl=0;!nl&&Math.abs(rl-Aa)<this.GRID_STEP&&(sl=this.VIA_DIAMETER+this.OBSTACLE_MARGIN+this.defaultGoalViaMargin),La.push({...Fa,travelDistance:rl-sl,enterMarginCost:0,travelMarginCostFactor:1})}else if(tl!==null&&tl<Fa.wallDistance){for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)tl-this.OBSTACLE_MARGIN+nl*2<Fa.wallDistance&&La.push({...Fa,travelDistance:tl-this.OBSTACLE_MARGIN+nl,enterMarginCost:sl,travelMarginCostFactor:ll});if(Fa.wallDistance===1/0)La.push({...Fa,travelDistance:rl,enterMarginCost:0,travelMarginCostFactor:1});else if(Fa.wallDistance>this.largestMargin)for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)Fa.wallDistance>this.largestMargin+nl&&La.push({...Fa,travelDistance:Fa.wallDistance-nl,enterMarginCost:sl,travelMarginCostFactor:ll})}else if(Fa.wallDistance!==1/0)for(const{margin:nl,enterCost:sl,travelCostFactor:ll}of this.marginsWithCosts)Fa.wallDistance>nl&&La.push({...Fa,travelDistance:Fa.wallDistance-nl,enterMarginCost:sl,travelMarginCostFactor:ll})}return La.map(Fa=>({x:J.x+Fa.dx*Fa.travelDistance,y:J.y+Fa.dy*Fa.travelDistance,l:J.l+Fa.dl,obstacleHit:Fa.obstacle,travelMarginCostFactor:Fa.travelMarginCostFactor,enterMarginCost:Fa.enterMarginCost}))}};function autoroute2(ua){const J=getSimpleRouteJson(ua),la=new IJumpAutorouter({input:J});return{solution:la.solveAndMapToTraces(),debugSolutions:la.debugSolutions,debugMessage:la.debugMessage}}var getObstaclesFromSoup=getObstaclesFromCircuitJson,direction$1=z$3.enum(["up","down","left","right"]);z$3.enum(["top-to-bottom","left-to-right","bottom-to-top","right-to-left"]);var portHints=z$3.array(z$3.string().or(z$3.number())),point3$2=z$3.object({x:distance$5,y:distance$5,z:distance$5}),rotationPoint3=z$3.object({x:z$3.union([z$3.number(),z$3.string()]),y:z$3.union([z$3.number(),z$3.string()]),z:z$3.union([z$3.number(),z$3.string()])}),cadModelBase=z$3.object({rotationOffset:z$3.number().or(rotationPoint3).optional(),positionOffset:point3$2.optional(),size:point3$2.optional()}),cadModelStl=cadModelBase.extend({stlUrl:z$3.string()}),cadModelObj=cadModelBase.extend({objUrl:z$3.string(),mtlUrl:z$3.string().optional()}),cadModelJscad=cadModelBase.extend({jscad:z$3.record(z$3.any())}),cadModelProp=z$3.union([z$3.string(),cadModelStl,cadModelObj,cadModelJscad]),footprintProp=z$3.custom(ua=>!0),pcbLayoutProps=z$3.object({pcbX:distance$5.optional(),pcbY:distance$5.optional(),pcbRotation:rotation$4.optional(),layer:layer_ref$2.optional()}),commonLayoutProps=z$3.object({pcbX:distance$5.optional(),pcbY:distance$5.optional(),pcbRotation:rotation$4.optional(),schX:distance$5.optional(),schY:distance$5.optional(),schRotation:rotation$4.optional(),layer:layer_ref$2.optional(),footprint:footprintProp.optional()}),supplierProps=z$3.object({supplierPartNumbers:z$3.record(supplier_name$2,z$3.array(z$3.string())).optional()}),commonComponentProps=commonLayoutProps.merge(supplierProps).extend({key:z$3.any().optional(),name:z$3.string(),cadModel:cadModelProp.optional(),children:z$3.any().optional(),symbolName:z$3.string().optional()}),lrPins=["pin1","left","pin2","right"],lrPolarPins=["pin1","left","anode","pos","pin2","right","cathode","neg"];distance$5.or(z$3.enum(["2x","3x","4x"]));var explicitPinSideDefinition=z$3.object({pins:z$3.array(z$3.union([z$3.number(),z$3.string()])),direction:z$3.union([z$3.literal("top-to-bottom"),z$3.literal("left-to-right"),z$3.literal("bottom-to-top"),z$3.literal("right-to-left")])}),schematicPortArrangement=z$3.object({leftSize:z$3.number().optional().describe("@deprecated, use leftPinCount"),topSize:z$3.number().optional().describe("@deprecated, use topPinCount"),rightSize:z$3.number().optional().describe("@deprecated, use rightPinCount"),bottomSize:z$3.number().optional().describe("@deprecated, use bottomPinCount"),leftPinCount:z$3.number().optional(),rightPinCount:z$3.number().optional(),topPinCount:z$3.number().optional(),bottomPinCount:z$3.number().optional(),leftSide:explicitPinSideDefinition.optional(),rightSide:explicitPinSideDefinition.optional(),topSide:explicitPinSideDefinition.optional(),bottomSide:explicitPinSideDefinition.optional()}),schematicPinStyle=z$3.record(z$3.object({marginLeft:distance$5.optional(),marginRight:distance$5.optional(),marginTop:distance$5.optional(),marginBottom:distance$5.optional(),leftMargin:distance$5.optional(),rightMargin:distance$5.optional(),topMargin:distance$5.optional(),bottomMargin:distance$5.optional()})),point$2=z$3.object({x:distance$5,y:distance$5}),base_manual_edit_event=z$3.object({edit_event_id:z$3.string(),in_progress:z$3.boolean().optional(),created_at:z$3.number()}),edit_pcb_component_location_event=base_manual_edit_event.extend({pcb_edit_event_type:z$3.literal("edit_component_location").describe("deprecated"),edit_event_type:z$3.literal("edit_pcb_component_location"),pcb_component_id:z$3.string(),original_center:z$3.object({x:z$3.number(),y:z$3.number()}),new_center:z$3.object({x:z$3.number(),y:z$3.number()})}),edit_trace_hint_event=base_manual_edit_event.extend({pcb_edit_event_type:z$3.literal("edit_trace_hint").describe("deprecated"),edit_event_type:z$3.literal("edit_pcb_trace_hint").optional(),pcb_port_id:z$3.string(),pcb_trace_hint_id:z$3.string().optional(),route:z$3.array(z$3.object({x:z$3.number(),y:z$3.number(),via:z$3.boolean().optional()}))}),edit_schematic_component_location_event=base_manual_edit_event.extend({edit_event_type:z$3.literal("edit_schematic_component_location"),schematic_component_id:z$3.string(),original_center:z$3.object({x:z$3.number(),y:z$3.number()}),new_center:z$3.object({x:z$3.number(),y:z$3.number()})});z$3.union([edit_pcb_component_location_event,edit_trace_hint_event,edit_schematic_component_location_event]);var manual_pcb_placement=z$3.object({selector:z$3.string(),relative_to:z$3.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$3}),manual_trace_hint=z$3.object({pcb_port_selector:z$3.string(),offsets:z$3.array(route_hint_point$2)}),manual_schematic_placement=z$3.object({selector:z$3.string(),relative_to:z$3.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),center:point$3}),manual_edits_file=z$3.object({pcb_placements:z$3.array(manual_pcb_placement).optional(),manual_trace_hints:z$3.array(manual_trace_hint).optional(),schematic_placements:z$3.array(manual_schematic_placement).optional()}),autorouterConfig=z$3.object({serverUrl:z$3.string().optional(),inputFormat:z$3.enum(["simplified","circuit-json"]).optional(),serverMode:z$3.enum(["job","solve-endpoint"]).optional(),cache:z$3.custom(ua=>!0).optional()}),autorouterProp=z$3.union([autorouterConfig,z$3.literal("sequential-trace"),z$3.literal("subcircuit"),z$3.literal("auto"),z$3.literal("auto-local"),z$3.literal("auto-cloud")]),baseGroupProps=commonLayoutProps.extend({name:z$3.string().optional(),children:z$3.any().optional(),key:z$3.any().optional()}),subcircuitGroupProps=baseGroupProps.extend({layout:z$3.custom(ua=>!0).optional(),manualEdits:manual_edits_file.optional(),schAutoLayoutEnabled:z$3.boolean().optional(),schTraceAutoLabelEnabled:z$3.boolean().optional(),routingDisabled:z$3.boolean().optional(),defaultTraceWidth:length$3.optional(),minTraceWidth:length$3.optional(),partsEngine:z$3.custom(ua=>"findPart"in ua).optional(),pcbRouteCache:z$3.custom(ua=>!0).optional(),autorouter:autorouterProp.optional()}),subcircuitGroupPropsWithBool=subcircuitGroupProps.extend({subcircuit:z$3.literal(!0)}),groupProps=z$3.discriminatedUnion("subcircuit",[baseGroupProps.extend({subcircuit:z$3.literal(!1).optional()}),subcircuitGroupPropsWithBool]),boardProps=subcircuitGroupProps.extend({width:distance$5.optional(),height:distance$5.optional(),outline:z$3.array(point$2).optional(),outlineOffsetX:distance$5.optional(),outlineOffsetY:distance$5.optional()});z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()).readonly()).or(z$3.array(z$3.string())));var chipProps=commonComponentProps.extend({manufacturerPartNumber:z$3.string().optional(),pinLabels:z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()).readonly())).optional(),internallyConnectedPins:z$3.array(z$3.array(z$3.string())).optional(),externallyConnectedPins:z$3.array(z$3.array(z$3.string())).optional(),schPinArrangement:schematicPortArrangement.optional(),schPortArrangement:schematicPortArrangement.optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$5.optional(),schWidth:distance$5.optional(),schHeight:distance$5.optional(),noSchematicRepresentation:z$3.boolean().optional()}),jumperProps=commonComponentProps.extend({manufacturerPartNumber:z$3.string().optional(),pinLabels:z$3.record(z$3.number().or(z$3.string()),z$3.string().or(z$3.array(z$3.string()))).optional(),schPinStyle:schematicPinStyle.optional(),schPinSpacing:distance$5.optional(),schWidth:distance$5.optional(),schHeight:distance$5.optional(),schDirection:z$3.enum(["left","right"]).optional(),schPortArrangement:schematicPortArrangement.optional()}),platedHoleProps=z$3.discriminatedUnion("shape",[pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("circle"),holeDiameter:distance$5,outerDiameter:distance$5,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("oval"),outerWidth:distance$5,outerHeight:distance$5,innerWidth:distance$5,innerHeight:distance$5,portHints:portHints.optional()}),pcbLayoutProps.omit({pcbRotation:!0,layer:!0}).extend({name:z$3.string().optional(),shape:z$3.literal("pill"),outerWidth:distance$5,outerHeight:distance$5,innerWidth:distance$5,innerHeight:distance$5,portHints:portHints.optional()})]),resistorProps=commonComponentProps.extend({resistance:resistance$2,pullupFor:z$3.string().optional(),pullupTo:z$3.string().optional(),pulldownFor:z$3.string().optional(),pulldownTo:z$3.string().optional()}),resistorPins=lrPins,potentiometerProps=commonComponentProps.extend({maxResistance:resistance$2}),crystalProps=commonComponentProps.extend({frequency:frequency$1,loadCapacitance:capacitance$2,pinVariant:z$3.enum(["2pin","4pin"]).optional()}),resonatorProps=commonComponentProps.extend({frequency:frequency$1,loadCapacitance:capacitance$2,pinVariant:z$3.enum(["no_ground","ground_pin","two_ground_pins"]).optional()}),capacitorProps=commonComponentProps.extend({capacitance:capacitance$2,polarized:z$3.boolean().optional().default(!1),decouplingFor:z$3.string().optional(),decouplingTo:z$3.string().optional(),bypassFor:z$3.string().optional(),bypassTo:z$3.string().optional(),maxDecouplingTraceLength:z$3.number().optional()}),capacitorPins=lrPolarPins;z$3.object({name:z$3.string()}),z$3.object({name:z$3.string().optional(),pcbOnly:z$3.boolean().optional(),schOnly:z$3.boolean().optional()});var pcbXDistConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),xDist:distance$5,left:z$3.string(),right:z$3.string(),edgeToEdge:z$3.literal(!0).optional(),centerToCenter:z$3.literal(!0).optional()}),pcbYDistConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),yDist:distance$5,top:z$3.string(),bottom:z$3.string(),edgeToEdge:z$3.literal(!0).optional(),centerToCenter:z$3.literal(!0).optional()}),pcbSameYConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),sameY:z$3.literal(!0).optional(),for:z$3.array(z$3.string())}),pcbSameXConstraintProps=z$3.object({pcb:z$3.literal(!0).optional(),sameX:z$3.literal(!0).optional(),for:z$3.array(z$3.string())}),constraintProps=z$3.union([pcbXDistConstraintProps,pcbYDistConstraintProps,pcbSameYConstraintProps,pcbSameXConstraintProps]),rectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rect"),width:distance$5,height:distance$5,portHints:portHints.optional()}),rotatedRectSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rotated_rect"),width:distance$5,height:distance$5,ccwRotation:z$3.number(),portHints:portHints.optional()}),circleSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$5,portHints:portHints.optional()}),pillSmtPadProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("pill"),width:distance$5,height:distance$5,radius:distance$5,portHints:portHints.optional()}),smtPadProps=z$3.union([circleSmtPadProps,rectSmtPadProps,rotatedRectSmtPadProps,pillSmtPadProps]),rectSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("rect"),width:distance$5,height:distance$5}),circleSolderPasteProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$5});z$3.union([circleSolderPasteProps,rectSolderPasteProps]);var holeProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({name:z$3.string().optional(),diameter:distance$5.optional(),radius:distance$5.optional()}).transform(ua=>({...ua,diameter:ua.diameter??2*ua.radius,radius:ua.radius??ua.diameter/2})),portRef=z$3.union([z$3.string(),z$3.custom(ua=>!!ua.getPortSelector)]),baseTraceProps=z$3.object({key:z$3.string().optional(),thickness:distance$5.optional(),schematicRouteHints:z$3.array(point$2).optional(),pcbRouteHints:z$3.array(route_hint_point$2).optional(),schDisplayLabel:z$3.string().optional(),maxLength:z$3.number().optional()}),traceProps=z$3.union([baseTraceProps.extend({path:z$3.array(portRef)}),baseTraceProps.extend({from:portRef,to:portRef})]),footprintProps=z$3.object({originalLayer:layer_ref$2.default("top").optional()}),capacity=z$3.number().or(z$3.string().endsWith("mAh")).transform(ua=>{if(typeof ua=="string"){const J=ua.replace("mAh",""),la=Number.parseFloat(J);if(Number.isNaN(la))throw new Error("Invalid capacity");return la}return ua}).describe("Battery capacity in mAh"),batteryProps=commonComponentProps.extend({capacity:capacity.optional()}),pinHeaderProps=commonComponentProps.extend({pinCount:z$3.number(),pitch:distance$5.optional(),gender:z$3.enum(["male","female"]).optional().default("male"),showSilkscreenPinLabels:z$3.boolean().optional(),doubleRow:z$3.boolean().optional(),holeDiameter:distance$5.optional(),platedDiameter:distance$5.optional(),pinLabels:z$3.array(z$3.string()).optional(),facingDirection:z$3.enum(["left","right"]).optional()}),netAliasProps=z$3.object({net:z$3.string().optional(),schX:distance$5.optional(),schY:distance$5.optional(),schRotation:rotation$4.optional(),anchorSide:z$3.enum(["left","up","right","down"]).optional()}),pushButtonProps=commonComponentProps.extend({internallyConnectedPins:z$3.array(z$3.array(z$3.string())).optional()}),transistorProps=commonComponentProps.extend({transistorType:z$3.enum(["npn","pnp"])}),mosfetProps=commonComponentProps.extend({channelType:z$3.enum(["n","p"]),mosfetMode:z$3.enum(["enhancement","depletion"])}),inductorProps=commonComponentProps.extend({inductance:inductance$2}),diodeProps=commonComponentProps.extend({}),diodePins=lrPolarPins,ledProps=commonComponentProps.extend({color:z$3.string().optional()}),ledPins=lrPolarPins;commonComponentProps.extend({ftype:z$3.literal("switch"),switchType:z$3.enum(["spst"]).default("spst"),isNormallyClosed:z$3.boolean().default(!1)});var fabricationNoteTextProps=pcbLayoutProps.extend({text:z$3.string(),anchorAlignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$3.enum(["tscircuit2024"]).optional(),fontSize:length$3.optional(),color:z$3.string().optional()}),fabricationNotePathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$3.array(route_hint_point$2),strokeWidth:length$3.optional(),color:z$3.string().optional()});z$3.object({layer:z$3.string().optional(),thickness:distance$5.optional(),route:z$3.array(route_hint_point$2)});var viaProps=commonLayoutProps.extend({fromLayer:layer_ref$2,toLayer:layer_ref$2,holeDiameter:distance$5,outerDiameter:distance$5}),pcbKeepoutProps=z$3.union([pcbLayoutProps.omit({pcbRotation:!0}).extend({shape:z$3.literal("circle"),radius:distance$5}),pcbLayoutProps.extend({shape:z$3.literal("rect"),width:distance$5,height:distance$5})]),powerSourceProps=commonComponentProps.extend({voltage:voltage$2});z$3.object({schX:distance$5,schY:distance$5,width:distance$5,height:distance$5}),z$3.object({x1:distance$5,y1:distance$5,x2:distance$5,y2:distance$5}),z$3.object({schX:distance$5,schY:distance$5,text:z$3.string()}),z$3.object({points:z$3.array(point$3),isFilled:z$3.boolean().optional().default(!1),fillColor:z$3.enum(["red","blue"]).optional()});var silkscreenTextProps=pcbLayoutProps.extend({text:z$3.string(),anchorAlignment:z$3.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),font:z$3.enum(["tscircuit2024"]).optional(),fontSize:length$3.optional()}),silkscreenPathProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({route:z$3.array(route_hint_point$2),strokeWidth:length$3.optional()}),silkscreenLineProps=pcbLayoutProps.omit({pcbX:!0,pcbY:!0,pcbRotation:!0}).extend({strokeWidth:distance$5,x1:distance$5,y1:distance$5,x2:distance$5,y2:distance$5}),silkscreenRectProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$3.boolean().optional(),isOutline:z$3.boolean().optional(),strokeWidth:distance$5.optional(),width:distance$5,height:distance$5}),silkscreenCircleProps=pcbLayoutProps.omit({pcbRotation:!0}).extend({isFilled:z$3.boolean().optional(),isOutline:z$3.boolean().optional(),strokeWidth:distance$5.optional(),radius:distance$5}),routeHintPointProps=z$3.object({x:distance$5,y:distance$5,via:z$3.boolean().optional(),toLayer:layer_ref$2.optional()}),traceHintProps=z$3.object({for:z$3.string().optional().describe("Selector for the port you're targeting, not required if you're inside a trace"),order:z$3.number().optional(),offset:route_hint_point$2.or(routeHintPointProps).optional(),offsets:z$3.array(route_hint_point$2).or(z$3.array(routeHintPointProps)).optional(),traceWidth:z$3.number().optional()});commonLayoutProps.extend({name:z$3.string(),pinNumber:z$3.number().optional(),aliases:z$3.array(z$3.string()).optional(),direction:direction$1});function createMap(){return new IndexedMap}class IndexedMap{constructor(){jp(this,"index",{});jp(this,"array",[])}size(){return this.array.length}empty(){return this.array.length===0}itemAt(J){return this.array[J]}contains(J){return this.index[J.id()]!==void 0}find(J){const la=this.index[J.id()];return la===void 0?void 0:this.array[la]}setDefault(J,la){const xa=this.index[J.id()];if(xa===void 0){const Aa=new Pair(J,la());return this.index[J.id()]=this.array.length,this.array.push(Aa),Aa}else return this.array[xa]}insert(J,la){const xa=new Pair(J,la),Aa=this.index[J.id()];return Aa===void 0?(this.index[J.id()]=this.array.length,this.array.push(xa)):this.array[Aa]=xa,xa}erase(J){const la=this.index[J.id()];if(la===void 0)return;this.index[J.id()]=void 0;const xa=this.array[la],Aa=this.array.pop();return xa!==Aa&&(this.array[la]=Aa,this.index[Aa.first.id()]=la),xa}copy(){const J=new IndexedMap;for(let la=0;la<this.array.length;la++){const xa=this.array[la].copy();J.array[la]=xa,J.index[xa.first.id()]=la}return J}}class Pair{constructor(J,la){jp(this,"first");jp(this,"second");this.first=J,this.second=la}copy(){return new Pair(this.first,this.second)}}class Variable{constructor(J=""){jp(this,"_name");jp(this,"_value",0);jp(this,"_context",null);jp(this,"_id",VarId++);this._name=J}id(){return this._id}name(){return this._name}setName(J){this._name=J}context(){return this._context}setContext(J){this._context=J}value(){return this._value}setValue(J){this._value=J}plus(J){return new Expression(this,J)}minus(J){return new Expression(this,typeof J=="number"?-J:[-1,J])}multiply(J){return new Expression([J,this])}divide(J){return new Expression([1/J,this])}toJSON(){return{name:this._name,value:this._value}}toString(){return this._context+"["+this._name+":"+this._value+"]"}}let VarId=0;class Expression{constructor(){jp(this,"_terms");jp(this,"_constant");let J=parseArgs(arguments);this._terms=J.terms,this._constant=J.constant}terms(){return this._terms}constant(){return this._constant}value(){let J=this._constant;for(let la=0,xa=this._terms.size();la<xa;la++){let Aa=this._terms.itemAt(la);J+=Aa.first.value()*Aa.second}return J}plus(J){return new Expression(this,J)}minus(J){return new Expression(this,typeof J=="number"?-J:[-1,J])}multiply(J){return new Expression([J,this])}divide(J){return new Expression([1/J,this])}isConstant(){return this._terms.size()==0}toString(){let J=this._terms.array.map(function(la){return la.second+"*"+la.first.toString()}).join(" + ");return!this.isConstant()&&this._constant!==0&&(J+=" + "),J+=this._constant,J}}function parseArgs(ua){let J=0,la=()=>0,xa=createMap();for(let Aa=0,ba=ua.length;Aa<ba;++Aa){let Sa=ua[Aa];if(typeof Sa=="number")J+=Sa;else if(Sa instanceof Variable)xa.setDefault(Sa,la).second+=1;else if(Sa instanceof Expression){J+=Sa.constant();let Ma=Sa.terms();for(let Ra=0,Ia=Ma.size();Ra<Ia;Ra++){let La=Ma.itemAt(Ra);xa.setDefault(La.first,la).second+=La.second}}else if(Sa instanceof Array){if(Sa.length!==2)throw new Error("array must have length 2");let Ma=Sa[0],Ra=Sa[1];if(typeof Ma!="number")throw new Error("array item 0 must be a number");if(Ra instanceof Variable)xa.setDefault(Ra,la).second+=Ma;else if(Ra instanceof Expression){J+=Ra.constant()*Ma;let Ia=Ra.terms();for(let La=0,Fa=Ia.size();La<Fa;La++){let ka=Ia.itemAt(La);xa.setDefault(ka.first,la).second+=ka.second*Ma}}else throw new Error("array item 1 must be a variable or expression")}else throw new Error("invalid Expression argument: "+Sa)}return{terms:xa,constant:J}}const Wb=class Wb{static create(J,la,xa,Aa=1){let ba=0;return ba+=Math.max(0,Math.min(1e3,J*Aa))*1e6,ba+=Math.max(0,Math.min(1e3,la*Aa))*1e3,ba+=Math.max(0,Math.min(1e3,xa*Aa)),ba}static clip(J){return Math.max(0,Math.min(Wb.required,J))}};jp(Wb,"required",Wb.create(1e3,1e3,1e3)),jp(Wb,"strong",Wb.create(1,0,0)),jp(Wb,"medium",Wb.create(0,1,0)),jp(Wb,"weak",Wb.create(0,0,1));let Strength=Wb;var Operator;(function(ua){ua[ua.Le=0]="Le",ua[ua.Ge=1]="Ge",ua[ua.Eq=2]="Eq"})(Operator||(Operator={}));class Constraint{constructor(J,la,xa,Aa=Strength.required){jp(this,"_expression");jp(this,"_operator");jp(this,"_strength");jp(this,"_id",CnId++);this._operator=la,this._strength=Strength.clip(Aa),xa===void 0&&J instanceof Expression?this._expression=J:this._expression=J.minus(xa)}id(){return this._id}expression(){return this._expression}op(){return this._operator}strength(){return this._strength}toString(){return this._expression.toString()+" "+["<=",">=","="][this._operator]+" 0 ("+this._strength.toString()+")"}}let CnId=0;class Solver{constructor(){jp(this,"maxIterations",1e3);jp(this,"_cnMap",createCnMap());jp(this,"_rowMap",createRowMap());jp(this,"_varMap",createVarMap());jp(this,"_editMap",createEditMap());jp(this,"_infeasibleRows",[]);jp(this,"_objective",new Row$1);jp(this,"_artificial",null);jp(this,"_idTick",0)}createConstraint(J,la,xa,Aa=Strength.required){let ba=new Constraint(J,la,xa,Aa);return this.addConstraint(ba),ba}addConstraint(J){if(this._cnMap.find(J)!==void 0)throw new Error("duplicate constraint");let xa=this._createRow(J),Aa=xa.row,ba=xa.tag,Sa=this._chooseSubject(Aa,ba);if(Sa.type()===SymbolType.Invalid&&Aa.allDummies())if(nearZero(Aa.constant()))Sa=ba.marker;else throw new Error("unsatisfiable constraint");if(Sa.type()===SymbolType.Invalid){if(!this._addWithArtificialVariable(Aa))throw new Error("unsatisfiable constraint")}else Aa.solveFor(Sa),this._substitute(Sa,Aa),this._rowMap.insert(Sa,Aa);this._cnMap.insert(J,ba),this._optimize(this._objective)}removeConstraint(J){let la=this._cnMap.erase(J);if(la===void 0)throw new Error("unknown constraint");this._removeConstraintEffects(J,la.second);let xa=la.second.marker,Aa=this._rowMap.erase(xa);if(Aa===void 0){let ba=this._getMarkerLeavingSymbol(xa);if(ba.type()===SymbolType.Invalid)throw new Error("failed to find leaving row");Aa=this._rowMap.erase(ba),Aa.second.solveForEx(ba,xa),this._substitute(xa,Aa.second)}this._optimize(this._objective)}hasConstraint(J){return this._cnMap.contains(J)}getConstraints(){return this._cnMap.array.map(({first:J})=>J)}addEditVariable(J,la){if(this._editMap.find(J)!==void 0)throw new Error("duplicate edit variable");if(la=Strength.clip(la),la===Strength.required)throw new Error("bad required strength");let Aa=new Expression(J),ba=new Constraint(Aa,Operator.Eq,void 0,la);this.addConstraint(ba);let Ma={tag:this._cnMap.find(ba).second,constraint:ba,constant:0};this._editMap.insert(J,Ma)}removeEditVariable(J){let la=this._editMap.erase(J);if(la===void 0)throw new Error("unknown edit variable");this.removeConstraint(la.second.constraint)}hasEditVariable(J){return this._editMap.contains(J)}suggestValue(J,la){let xa=this._editMap.find(J);if(xa===void 0)throw new Error("unknown edit variable");let Aa=this._rowMap,ba=xa.second,Sa=la-ba.constant;ba.constant=la;let Ma=ba.tag.marker,Ra=Aa.find(Ma);if(Ra!==void 0){Ra.second.add(-Sa)<0&&this._infeasibleRows.push(Ma),this._dualOptimize();return}let Ia=ba.tag.other;if(Ra=Aa.find(Ia),Ra!==void 0){Ra.second.add(Sa)<0&&this._infeasibleRows.push(Ia),this._dualOptimize();return}for(let La=0,Fa=Aa.size();La<Fa;++La){let ka=Aa.itemAt(La),el=ka.second,tl=el.coefficientFor(Ma);tl!==0&&el.add(Sa*tl)<0&&ka.first.type()!==SymbolType.External&&this._infeasibleRows.push(ka.first)}this._dualOptimize()}updateVariables(){let J=this._varMap,la=this._rowMap;for(let xa=0,Aa=J.size();xa<Aa;++xa){let ba=J.itemAt(xa),Sa=la.find(ba.second);Sa!==void 0?ba.first.setValue(Sa.second.constant()):ba.first.setValue(0)}}_getVarSymbol(J){let la=()=>this._makeSymbol(SymbolType.External);return this._varMap.setDefault(J,la).second}_createRow(J){let la=J.expression(),xa=new Row$1(la.constant()),Aa=la.terms();for(let Ra=0,Ia=Aa.size();Ra<Ia;++Ra){let La=Aa.itemAt(Ra);if(!nearZero(La.second)){let Fa=this._getVarSymbol(La.first),ka=this._rowMap.find(Fa);ka!==void 0?xa.insertRow(ka.second,La.second):xa.insertSymbol(Fa,La.second)}}let ba=this._objective,Sa=J.strength(),Ma={marker:INVALID_SYMBOL,other:INVALID_SYMBOL};switch(J.op()){case Operator.Le:case Operator.Ge:{let Ra=J.op()===Operator.Le?1:-1,Ia=this._makeSymbol(SymbolType.Slack);if(Ma.marker=Ia,xa.insertSymbol(Ia,Ra),Sa<Strength.required){let La=this._makeSymbol(SymbolType.Error);Ma.other=La,xa.insertSymbol(La,-Ra),ba.insertSymbol(La,Sa)}break}case Operator.Eq:{if(Sa<Strength.required){let Ra=this._makeSymbol(SymbolType.Error),Ia=this._makeSymbol(SymbolType.Error);Ma.marker=Ra,Ma.other=Ia,xa.insertSymbol(Ra,-1),xa.insertSymbol(Ia,1),ba.insertSymbol(Ra,Sa),ba.insertSymbol(Ia,Sa)}else{let Ra=this._makeSymbol(SymbolType.Dummy);Ma.marker=Ra,xa.insertSymbol(Ra)}break}}return xa.constant()<0&&xa.reverseSign(),{row:xa,tag:Ma}}_chooseSubject(J,la){let xa=J.cells();for(let ba=0,Sa=xa.size();ba<Sa;++ba){let Ma=xa.itemAt(ba);if(Ma.first.type()===SymbolType.External)return Ma.first}let Aa=la.marker.type();return(Aa===SymbolType.Slack||Aa===SymbolType.Error)&&J.coefficientFor(la.marker)<0?la.marker:(Aa=la.other.type(),(Aa===SymbolType.Slack||Aa===SymbolType.Error)&&J.coefficientFor(la.other)<0?la.other:INVALID_SYMBOL)}_addWithArtificialVariable(J){let la=this._makeSymbol(SymbolType.Slack);this._rowMap.insert(la,J.copy()),this._artificial=J.copy(),this._optimize(this._artificial);let xa=nearZero(this._artificial.constant());this._artificial=null;let Aa=this._rowMap.erase(la);if(Aa!==void 0){let Sa=Aa.second;if(Sa.isConstant())return xa;let Ma=this._anyPivotableSymbol(Sa);if(Ma.type()===SymbolType.Invalid)return!1;Sa.solveForEx(la,Ma),this._substitute(Ma,Sa),this._rowMap.insert(Ma,Sa)}let ba=this._rowMap;for(let Sa=0,Ma=ba.size();Sa<Ma;++Sa)ba.itemAt(Sa).second.removeSymbol(la);return this._objective.removeSymbol(la),xa}_substitute(J,la){let xa=this._rowMap;for(let Aa=0,ba=xa.size();Aa<ba;++Aa){let Sa=xa.itemAt(Aa);Sa.second.substitute(J,la),Sa.second.constant()<0&&Sa.first.type()!==SymbolType.External&&this._infeasibleRows.push(Sa.first)}this._objective.substitute(J,la),this._artificial&&this._artificial.substitute(J,la)}_optimize(J){let la=0;for(;la<this.maxIterations;){let xa=this._getEnteringSymbol(J);if(xa.type()===SymbolType.Invalid)return;let Aa=this._getLeavingSymbol(xa);if(Aa.type()===SymbolType.Invalid)throw new Error("the objective is unbounded");let ba=this._rowMap.erase(Aa).second;ba.solveForEx(Aa,xa),this._substitute(xa,ba),this._rowMap.insert(xa,ba),la++}throw new Error("solver iterations exceeded")}_dualOptimize(){let J=this._rowMap,la=this._infeasibleRows;for(;la.length!==0;){let xa=la.pop(),Aa=J.find(xa);if(Aa!==void 0&&Aa.second.constant()<0){let ba=this._getDualEnteringSymbol(Aa.second);if(ba.type()===SymbolType.Invalid)throw new Error("dual optimize failed");let Sa=Aa.second;J.erase(xa),Sa.solveForEx(xa,ba),this._substitute(ba,Sa),J.insert(ba,Sa)}}}_getEnteringSymbol(J){let la=J.cells();for(let xa=0,Aa=la.size();xa<Aa;++xa){let ba=la.itemAt(xa),Sa=ba.first;if(ba.second<0&&Sa.type()!==SymbolType.Dummy)return Sa}return INVALID_SYMBOL}_getDualEnteringSymbol(J){let la=Number.MAX_VALUE,xa=INVALID_SYMBOL,Aa=J.cells();for(let ba=0,Sa=Aa.size();ba<Sa;++ba){let Ma=Aa.itemAt(ba),Ra=Ma.first,Ia=Ma.second;if(Ia>0&&Ra.type()!==SymbolType.Dummy){let Fa=this._objective.coefficientFor(Ra)/Ia;Fa<la&&(la=Fa,xa=Ra)}}return xa}_getLeavingSymbol(J){let la=Number.MAX_VALUE,xa=INVALID_SYMBOL,Aa=this._rowMap;for(let ba=0,Sa=Aa.size();ba<Sa;++ba){let Ma=Aa.itemAt(ba),Ra=Ma.first;if(Ra.type()!==SymbolType.External){let Ia=Ma.second,La=Ia.coefficientFor(J);if(La<0){let Fa=-Ia.constant()/La;Fa<la&&(la=Fa,xa=Ra)}}}return xa}_getMarkerLeavingSymbol(J){let la=Number.MAX_VALUE,xa=la,Aa=la,ba=INVALID_SYMBOL,Sa=ba,Ma=ba,Ra=ba,Ia=this._rowMap;for(let La=0,Fa=Ia.size();La<Fa;++La){let ka=Ia.itemAt(La),el=ka.second,tl=el.coefficientFor(J);if(tl===0)continue;let rl=ka.first;if(rl.type()===SymbolType.External)Ra=rl;else if(tl<0){let il=-el.constant()/tl;il<xa&&(xa=il,Sa=rl)}else{let il=el.constant()/tl;il<Aa&&(Aa=il,Ma=rl)}}return Sa!==ba?Sa:Ma!==ba?Ma:Ra}_removeConstraintEffects(J,la){la.marker.type()===SymbolType.Error&&this._removeMarkerEffects(la.marker,J.strength()),la.other.type()===SymbolType.Error&&this._removeMarkerEffects(la.other,J.strength())}_removeMarkerEffects(J,la){let xa=this._rowMap.find(J);xa!==void 0?this._objective.insertRow(xa.second,-la):this._objective.insertSymbol(J,-la)}_anyPivotableSymbol(J){let la=J.cells();for(let xa=0,Aa=la.size();xa<Aa;++xa){let ba=la.itemAt(xa),Sa=ba.first.type();if(Sa===SymbolType.Slack||Sa===SymbolType.Error)return ba.first}return INVALID_SYMBOL}_makeSymbol(J){return new Symbol$1(J,this._idTick++)}}function nearZero(ua){let J=1e-8;return ua<0?-ua<J:ua<J}function createCnMap(){return createMap()}function createRowMap(){return createMap()}function createVarMap(){return createMap()}function createEditMap(){return createMap()}var SymbolType;(function(ua){ua[ua.Invalid=0]="Invalid",ua[ua.External=1]="External",ua[ua.Slack=2]="Slack",ua[ua.Error=3]="Error",ua[ua.Dummy=4]="Dummy"})(SymbolType||(SymbolType={}));let Symbol$1=class{constructor(J,la){jp(this,"_id");jp(this,"_type");this._id=la,this._type=J}id(){return this._id}type(){return this._type}},INVALID_SYMBOL=new Symbol$1(SymbolType.Invalid,-1),Row$1=class YM{constructor(J=0){jp(this,"_cellMap",createMap());jp(this,"_constant");this._constant=J}cells(){return this._cellMap}constant(){return this._constant}isConstant(){return this._cellMap.empty()}allDummies(){let J=this._cellMap;for(let la=0,xa=J.size();la<xa;++la)if(J.itemAt(la).first.type()!==SymbolType.Dummy)return!1;return!0}copy(){let J=new YM(this._constant);return J._cellMap=this._cellMap.copy(),J}add(J){return this._constant+=J}insertSymbol(J,la=1){let xa=this._cellMap.setDefault(J,()=>0);nearZero(xa.second+=la)&&this._cellMap.erase(J)}insertRow(J,la=1){this._constant+=J._constant*la;let xa=J._cellMap;for(let Aa=0,ba=xa.size();Aa<ba;++Aa){let Sa=xa.itemAt(Aa);this.insertSymbol(Sa.first,Sa.second*la)}}removeSymbol(J){this._cellMap.erase(J)}reverseSign(){this._constant=-this._constant;let J=this._cellMap;for(let la=0,xa=J.size();la<xa;++la){let Aa=J.itemAt(la);Aa.second=-Aa.second}}solveFor(J){let la=this._cellMap,Aa=-1/la.erase(J).second;this._constant*=Aa;for(let ba=0,Sa=la.size();ba<Sa;++ba)la.itemAt(ba).second*=Aa}solveForEx(J,la){this.insertSymbol(J,-1),this.solveFor(la)}coefficientFor(J){let la=this._cellMap.find(J);return la!==void 0?la.second:0}substitute(J,la){let xa=this._cellMap.erase(J);xa!==void 0&&this.insertRow(la,xa.second)}};var su$3=(ua,J={})=>{let la=ua._internal_store;if(!la){la={counts:{}},ua._internal_store=la;for(const Aa of ua){const ba=Aa.type,Sa=Aa[`${ba}_id`];if(!Sa)continue;const Ma=Number.parseInt(Sa.split("_").pop());Number.isNaN(Ma)||(la.counts[ba]=Math.max(la.counts[ba]??0,Ma))}}return new Proxy({},{get:(Aa,ba)=>ba==="toArray"?()=>ua:{get:Sa=>ua.find(Ma=>Ma.type===ba&&Ma[`${ba}_id`]===Sa),getUsing:Sa=>{const Ma=Object.keys(Sa);if(Ma.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Ra=Ma[0],Ia=Ra.replace("_id",""),La=ua.find(Fa=>Fa.type===Ia&&Fa[Ra]===Sa[Ra]);return La?ua.find(Fa=>Fa.type===ba&&Fa[`${ba}_id`]===La[`${ba}_id`]):null},getWhere:Sa=>{const Ma=Object.keys(Sa);return ua.find(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},list:Sa=>{const Ma=Sa?Object.keys(Sa):[];return ua.filter(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},insert:Sa=>{var Ia;(Ia=la.counts)[ba]??(Ia[ba]=-1),la.counts[ba]++;const Ma=la.counts[ba],Ra={type:ba,[`${ba}_id`]:`${ba}_${Ma}`,...Sa};return J.validateInserts&&(Soup$1[ba]??any_soup_element$2).parse(Ra),ua.push(Ra),Ra},delete:Sa=>{const Ma=ua.find(Ra=>Ra[`${ba}_id`]===Sa);Ma&&ua.splice(ua.indexOf(Ma),1)},update:(Sa,Ma)=>{const Ra=ua.find(Ia=>Ia[`${ba}_id`]===Sa);if(Ra)return Object.assign(Ra,Ma),Ra},select:Sa=>{if(ba==="source_component")return ua.find(Ma=>Ma.type==="source_component"&&Ma.name===Sa.replace(/\./g,""));if(ba==="pcb_port"||ba==="source_port"||ba==="schematic_port"){const[Ma,Ra]=Sa.replace(/\./g,"").split(/[\s\>]+/),Ia=ua.find(Fa=>Fa.type==="source_component"&&Fa.name===Ma);if(!Ia)return null;const La=ua.find(Fa=>Fa.type==="source_port"&&Fa.source_component_id===Ia.source_component_id&&(Fa.name===Ra||(Fa.port_hints??[]).includes(Ra)));if(!La)return null;if(ba==="source_port")return La;if(ba==="pcb_port")return ua.find(Fa=>Fa.type==="pcb_port"&&Fa.source_port_id===La.source_port_id);if(ba==="schematic_port")return ua.find(Fa=>Fa.type==="schematic_port"&&Fa.source_port_id===La.source_port_id)}}}})};su$3.unparsed=su$3;var rotateClockwise=ua=>{if(ua==="up")return"right";if(ua==="right")return"down";if(ua==="down")return"left";if(ua==="left")return"up";throw new Error(`Invalid direction: ${ua}`)},rotateCounterClockwise=ua=>{if(ua==="up")return"left";if(ua==="left")return"down";if(ua==="down")return"right";if(ua==="right")return"up";throw new Error(`Invalid direction: ${ua}`)},rotateDirection=(ua,J)=>{for(;J>0;)ua=rotateClockwise(ua),J--;for(;J<0;)ua=rotateCounterClockwise(ua),J++;return ua},transformSchematicElement=(ua,J)=>{if(ua.type==="schematic_component")ua.center=applyToPoint(J,ua.center);else if(ua.type==="schematic_port")ua.center=applyToPoint(J,ua.center),ua.facing_direction&&(ua.facing_direction=rotateDirection(ua.facing_direction,-(Math.atan2(J.b,J.a)/Math.PI)*2));else if(ua.type==="schematic_text")ua.position=applyToPoint(J,ua.position);else if(ua.type!=="schematic_trace"){if(ua.type==="schematic_box"){const{x:la,y:xa}=applyToPoint(J,{x:ua.x,y:ua.y});ua.x=la,ua.y=xa}else if(ua.type==="schematic_line"){const{x:la,y:xa}=applyToPoint(J,{x:ua.x1,y:ua.y1}),{x:Aa,y:ba}=applyToPoint(J,{x:ua.x2,y:ua.y2});ua.x1=la,ua.y1=xa,ua.x2=Aa,ua.y2=ba}}return ua},mutateSoupForScene=(ua,J)=>{const la=ua;for(const xa of J.boxes){const Aa=la.find(Sa=>Sa.type==="schematic_component"&&Sa.schematic_component_id===xa.box_id),ba=translate(xa.x-Aa.center.x,xa.y-Aa.center.y);for(const Sa of la)Sa.schematic_component_id===xa.box_id&&transformSchematicElement(Sa,ba)}return la},convertSoupToScene=ua=>{const J=[],la=[],xa=[],Aa={schematic_component:ua.filter(ba=>ba.type==="schematic_component"),schematic_port:ua.filter(ba=>ba.type==="schematic_port"),source_port:ua.filter(ba=>ba.type==="source_port"),schematic_trace:ua.filter(ba=>ba.type==="schematic_trace"),source_trace:ua.filter(ba=>ba.type==="source_trace")};for(const ba of Aa.schematic_component){const Sa=[],Ma=ba.schematic_component_id;for(const Ia of Aa.schematic_port)Ia.schematic_component_id===ba.schematic_component_id&&Sa.push({port_id:`${Ma}.${Ia.schematic_port_id}`,rx:Ia.center.x-ba.center.x,ry:Ia.center.y-ba.center.y});const Ra={box_id:Ma,x:ba.center.x,y:ba.center.y,ports:Sa};J.push(Ra)}for(const ba of Aa.source_trace){const[Sa,Ma]=ba.connected_source_port_ids,Ra=Aa.schematic_port.find(el=>el.source_port_id===Sa),Ia=Aa.schematic_port.find(el=>el.source_port_id===Ma);if(!Ra||!Ia)continue;const La=Aa.schematic_component.find(el=>el.schematic_component_id===Ra.schematic_component_id),Fa=Aa.schematic_component.find(el=>el.schematic_component_id===Ia.schematic_component_id);if(!La||!Fa)continue;const ka={from:`${La.schematic_component_id}.${Ra.schematic_port_id}`,to:`${Fa.schematic_component_id}.${Ia.schematic_port_id}`};la.push(ka)}return{boxes:J,connections:la,nets:xa}};function getConnectionMap(ua){return ua.connections.reduce((J,la)=>(J[la.from]=la.to,J[la.to]=la.from,J),{})}function centerSides(ua,J){for(const la of["left","right"]){const xa=ua.filter(Sa=>Sa.side===la),Aa=xa.map(Sa=>Sa.ascending_box_index).filter(Sa=>!isNaN(Sa)),ba=Math.max(...Aa);for(const Sa of xa)Sa.box_id!==J.box_id&&(Sa.y-=ba/2*1.25)}}var findBoxWithMostPorts=ua=>{let J=ua[0];for(const la of ua)la.ports.length>J.ports.length&&(J=la);return J};function slideBoxesConnectedToSameNet(ua,J,la,xa){for(const Aa of["left","right"]){const ba=ua.filter(Sa=>Sa.side===Aa).sort((Sa,Ma)=>Sa.ascending_box_index-Ma.ascending_box_index);for(let Sa=0;Sa<ba.length-1;Sa++){const[Ma,Ra]=[ba[Sa],ba[Sa+1]];if(Ma.ports.length===2&&Ra.ports.length===2){const[Ia,La]=Ma.ports,[Fa,ka]=Ra.ports,[el,tl]=[Ia,La].map(ll=>J[ll.port_id]),[rl,il]=[Fa,ka].map(ll=>J[ll.port_id]);let nl=null;if((el===rl||el===il)&&la.has(el)?nl=el:(tl===rl||tl===il)&&la.has(tl)&&(nl=tl),!nl)continue;const sl=xa.nets.find(ll=>ll.net_id===nl);if(!sl.is_ground&&!sl.is_power)continue;sl.is_ground&&ba.slice(Sa+1).forEach(ll=>{ll.ascending_box_index-=1,ll.y-=1}),sl.is_power&&ba.slice(Sa+1).forEach(ll=>{ll.ascending_box_index-=1,ll.y-=1})}}}}function removeAscendingBoxIndexGaps(ua,J){for(let la=0;la<ua;la++){let xa=0;for(const Aa of J)Aa.ascending_box_index===la&&(xa+=1);if(xa===0){ua-=1;for(const Aa of J)Aa.ascending_box_index>la&&(Aa.ascending_box_index-=1)}}return ua}function addBoxesForNetsRewriteNetsToPlacedAliases(ua,J,la,xa){const Aa=Math.max(...ua.map(ba=>ba.ascending_box_index).filter(ba=>!isNaN(ba)));for(const ba of["left","right"])for(let Sa=0;Sa<=Aa;Sa++){const Ma=ua.filter(tl=>tl.side===ba).filter(tl=>tl.ascending_box_index===Sa);if(Ma.length===0)continue;const Ia=Ma.map(tl=>J.connections.filter(rl=>rl.from.startsWith(tl.box_id+".")||rl.to.startsWith(tl.box_id+".")).map(rl=>rl.from.startsWith(tl.box_id+".")?rl.to:rl.from)).map(tl=>tl.filter(rl=>la.has(rl))),La=Ia.reduce((tl,rl)=>tl.filter(il=>rl.includes(il)),Ia[0]),Fa=La.map(tl=>J.nets.find(rl=>rl.net_id===tl)),el=(ba==="left"?Math.max:Math.min)(...Ma.map(tl=>tl.x));for(const tl of Fa){const rl=Sa+(tl!=null&&tl.is_ground?-1:1),il=`${tl==null?void 0:tl.net_id}_${ba==="left"?"L":"R"}_${Sa}`,nl=tl!=null&&tl.is_ground?`${il}.top`:`${il}.bottom`,sl={box_id:il,x:el,y:rl,side:ba,ascending_port_index:0,ascending_box_index:Sa,width:0,ports:[{port_id:nl,rx:0,ry:tl!=null&&tl.is_ground?.1:-.1}]};ua.push(sl);for(const ll of Ma){const dl=xa.filter(gl=>gl.from.startsWith(ll.box_id+".")||gl.to.startsWith(ll.box_id+"."));for(const gl of dl)gl.from===tl.net_id&&(gl.from=nl),gl.to===tl.net_id&&(gl.to=nl)}}for(let tl=0;tl<Ma.length;tl++){const rl=Ma[tl],il=Ia[tl].filter(nl=>!La.includes(nl));for(const nl of il){const sl=J.nets.find(vl=>vl.net_id===nl),ll=`${nl}_${rl.ascending_box_index}_${ba==="left"?"L":"R"}_${tl}`,dl=`${ll}.${sl.is_ground?"top":"bottom"}`,gl={x:rl.x,y:rl.y+(sl.is_ground?-1:1),side:ba,ascending_port_index:0,ascending_box_index:rl.ascending_box_index,box_id:ll,ports:[{port_id:dl,rx:0,ry:sl.is_ground?.1:-.1}]};ua.push(gl);const _l=xa.find(vl=>vl.from===nl&&vl.to.startsWith(rl.box_id)||vl.to===nl&&vl.from.startsWith(rl.box_id));_l.from===nl&&(_l.from=dl),_l.to===nl&&(_l.to=dl)}}}return Aa}var rotateBox=(ua,J)=>{const la=rotate(J*(Math.PI/180));ua.ports.forEach(xa=>{const Aa=applyToPoint(la,{x:xa.rx,y:xa.ry});xa.rx=Aa.x,xa.ry=Aa.y})},normalizeVec=ua=>{const J=Math.sqrt(ua.x**2+ua.y**2);return{x:ua.x/J,y:ua.y/J}},getAllPossibleBoxRotations=ua=>[0,90,180,270].map(la=>{const xa={...ua,ports:ua.ports.map(Aa=>({...Aa}))};return rotateBox(xa,la),xa.applied_rotation_deg=la,xa}),autoRotateTwoPortBoxes=ua=>{const J=ua.boxes.sort((la,xa)=>la.y-xa.y);for(const la of J)if(la.ports.length===2){const xa=la.ports.map(Sa=>{var La;const Ma=ua.connections.filter(Fa=>Fa.from===Sa.port_id||Fa.to===Sa.port_id).map(Fa=>Fa.from===Sa.port_id?Fa.to:Fa.from);if(Ma.length===0)return null;const Ra=J.filter(Fa=>Ma.some(ka=>ka.startsWith(Fa.box_id+"."))),Ia=(La=Ra.flatMap(Fa=>Fa.ports))==null?void 0:La.filter(Fa=>Ma.includes(Fa.port_id));for(const Fa of Ia){const ka=Ra.find(el=>el.box_id===Fa.port_id.split(".")[0]);Fa.x=ka.x+Fa.rx,Fa.y=ka.y+Fa.ry}return{...Sa,connected_port:Ia[0],connected_ports:Ia}}).filter(Boolean);if(xa.length===0)continue;const Aa=getAllPossibleBoxRotations({...la,ports:xa});for(const Sa of Aa){Sa.natural_offset_sum_deg=0;for(const Ma of Sa.ports)for(const Ra of Ma.connected_ports){const Ia=normalizeVec({x:Ra.x-(Sa.x+Ma.rx),y:Ra.y-(Sa.y+Ma.ry)}),La=normalizeVec({x:Ma.rx,y:Ma.ry}),Fa=Math.sqrt((Ia.x-La.x)**2+(Ia.y-La.y)**2),ka=Ia.x*La.x+Ia.y*La.y,el=Ia.x*La.y-Ia.y*La.x,tl=Math.atan2(el,ka)*(180/Math.PI);Sa.natural_offset_sum_deg+=Math.abs(tl)/Fa}}const ba=Aa.reduce((Sa,Ma)=>Sa.natural_offset_sum_deg<Ma.natural_offset_sum_deg?Sa:Ma);rotateBox(la,ba.applied_rotation_deg)}return ua},ascendingCentralLrBug1=ua=>{const J=new Set(ua.nets.map(Ra=>Ra.net_id)),la=getConnectionMap(ua),xa=JSON.parse(JSON.stringify(ua.boxes)),Aa=JSON.parse(JSON.stringify(ua.connections));for(const Ra of xa){Ra.x=0,Ra.y=0;let Ia=0,La=0;for(const Fa of Ra.ports)Fa.rx<Ia?Ia=Fa.rx:Fa.rx>La&&(La=Fa.rx);Ra.width=La-Ia}const ba=findBoxWithMostPorts(xa);for(const Ra of ba.ports)Ra.rx>0?Ra.side="right":Ra.rx<0&&(Ra.side="left");for(const Ra of xa){if(Ra.box_id===ba.box_id)continue;const Ia=ba.ports.filter(ka=>Aa.some(el=>el.from.startsWith(Ra.box_id)&&el.to===ka.port_id||el.to.startsWith(Ra.box_id)&&el.from===ka.port_id));if(Ia.length===0){Ra.side="left";continue}let La=0,Fa=0;for(const ka of Ia)ka.rx>0?Fa+=1:ka.rx<0&&(La+=1);La>=Fa?Ra.side="left":Ra.side="right"}for(const Ra of["left","right"]){const Ia=ba.ports.filter(La=>La.side===Ra);Ia.sort((La,Fa)=>La.ry-Fa.ry);for(const La of Ia)La.ascending_port_index=Ia.indexOf(La)}for(const Ra of xa){if(Ra.box_id===ba.box_id)continue;const Ia=ua.connections.filter(Fa=>Fa.from.startsWith(Ra.box_id+".")||Fa.to.startsWith(Ra.box_id+".")).map(Fa=>Fa.from.startsWith(Ra.box_id+".")?Fa.to:Fa.from),La=ba.ports.filter(Fa=>Ia.includes(Fa.port_id));La.length!==0&&(Ra.ascending_port_index=Math.min(...La.map(Fa=>Fa.ascending_port_index)),Ra.ascending_box_index=Ra.ascending_port_index)}let Sa=Math.max(0,...xa.map(Ra=>Ra.ascending_box_index).filter(Ra=>!isNaN(Ra)));for(const Ra of xa)Ra.box_id!==ba.box_id&&Ra.ascending_box_index===void 0&&(Sa+=1,Ra.ascending_box_index=Sa);for(const Ra of["left","right"])removeAscendingBoxIndexGaps(Sa,xa.filter(Ia=>Ia.side===Ra));for(const Ra of["left","right"]){let Ia=ba.width*.75*(Ra==="left"?-1:1);for(let La=0;La<=Sa;La++){const Fa=xa.filter(tl=>tl.side===Ra&&tl.ascending_box_index===La),ka=Math.max(...Fa.map(tl=>tl.width)),el=Math.max(.5,ka)*(Ra==="left"?-1:1);Ia+=el;for(const tl of Fa)tl.box_id!==ba.box_id&&(tl.y=tl.ascending_box_index*1.25,tl.x=Ia);Ia+=el/2}}slideBoxesConnectedToSameNet(xa,la,J,ua),addBoxesForNetsRewriteNetsToPlacedAliases(xa,ua,J,Aa),centerSides(xa,ba);const Ma={...ua,connections:Aa,boxes:xa};return autoRotateTwoPortBoxes(Ma),Ma},getUnitVectorFromPointAToB=(ua,J)=>{const la={x:J.x-ua.x,y:J.y-ua.y},xa=Math.sqrt(la.x**2+la.y**2);return{x:la.x/xa,y:la.y/xa}},getUnitVectorFromDirection=ua=>{switch(ua){case"up":return{x:0,y:1};case"down":return{x:0,y:-1};case"left":return{x:-1,y:0};case"right":return{x:1,y:0}}};function doesLineIntersectLine([ua,J],[la,xa],{lineThickness:Aa=0}={}){return Aa===0?doSegmentsIntersect(ua,J,la,xa):segmentsDistance(ua,J,la,xa)<=Aa}function doSegmentsIntersect(ua,J,la,xa){const Aa=orientation(ua,J,la),ba=orientation(ua,J,xa),Sa=orientation(la,xa,ua),Ma=orientation(la,xa,J);return!!(Aa!==ba&&Sa!==Ma||Aa===0&&onSegment$1(ua,la,J)||ba===0&&onSegment$1(ua,xa,J)||Sa===0&&onSegment$1(la,ua,xa)||Ma===0&&onSegment$1(la,J,xa))}function orientation(ua,J,la){const xa=(J.y-ua.y)*(la.x-J.x)-(J.x-ua.x)*(la.y-J.y);return xa===0?0:xa>0?1:2}function onSegment$1(ua,J,la){return J.x<=Math.max(ua.x,la.x)&&J.x>=Math.min(ua.x,la.x)&&J.y<=Math.max(ua.y,la.y)&&J.y>=Math.min(ua.y,la.y)}function segmentsDistance(ua,J,la,xa){if(ua.x===J.x&&ua.y===J.y)return pointToSegmentDistance$1(ua,la,xa);if(la.x===xa.x&&la.y===xa.y)return pointToSegmentDistance$1(la,ua,J);if(doSegmentsIntersect(ua,J,la,xa))return 0;const Aa=[pointToSegmentDistance$1(ua,la,xa),pointToSegmentDistance$1(J,la,xa),pointToSegmentDistance$1(la,ua,J),pointToSegmentDistance$1(xa,ua,J)];return Math.min(...Aa)}function pointToSegmentDistance$1(ua,J,la){const xa=(la.x-J.x)**2+(la.y-J.y)**2;if(xa===0)return distance$3(ua,J);let Aa=((ua.x-J.x)*(la.x-J.x)+(ua.y-J.y)*(la.y-J.y))/xa;Aa=Math.max(0,Math.min(1,Aa));const ba={x:J.x+Aa*(la.x-J.x),y:J.y+Aa*(la.y-J.y)};return distance$3(ua,ba)}function distance$3(ua,J){const la=ua.x-J.x,xa=ua.y-J.y;return Math.sqrt(la*la+xa*xa)}var SI_PREFIXES=[{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"},{value:1,symbol:""},{value:.001,symbol:"m"},{value:1e-6,symbol:"µ"},{value:1e-9,symbol:"n"},{value:1e-12,symbol:"p"}];function formatSiUnit(ua){if(ua==null)return"";if(ua===0)return"0";const J=SI_PREFIXES.find(Aa=>Math.abs(ua)>=Aa.value)||SI_PREFIXES[SI_PREFIXES.length-1];return`${(ua/J.value).toPrecision(3).replace(/\.?0+$/,"")}${J.symbol}`}var su$2=(ua,J={})=>{let la=ua._internal_store;if(!la){la={counts:{}},ua._internal_store=la;for(const Aa of ua){const ba=Aa.type,Sa=Aa[`${ba}_id`];if(!Sa)continue;const Ma=Number.parseInt(Sa.split("_").pop());Number.isNaN(Ma)||(la.counts[ba]=Math.max(la.counts[ba]??0,Ma))}}return new Proxy({},{get:(Aa,ba)=>ba==="toArray"?()=>ua:{get:Sa=>ua.find(Ma=>Ma.type===ba&&Ma[`${ba}_id`]===Sa),getUsing:Sa=>{const Ma=Object.keys(Sa);if(Ma.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const Ra=Ma[0],Ia=Ra.replace("_id",""),La=ua.find(Fa=>Fa.type===Ia&&Fa[Ra]===Sa[Ra]);return La?ua.find(Fa=>Fa.type===ba&&Fa[`${ba}_id`]===La[`${ba}_id`]):null},getWhere:Sa=>{const Ma=Object.keys(Sa);return ua.find(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},list:Sa=>{const Ma=Sa?Object.keys(Sa):[];return ua.filter(Ra=>Ra.type===ba&&Ma.every(Ia=>Ra[Ia]===Sa[Ia]))},insert:Sa=>{var Ia;(Ia=la.counts)[ba]??(Ia[ba]=-1),la.counts[ba]++;const Ma=la.counts[ba],Ra={type:ba,[`${ba}_id`]:`${ba}_${Ma}`,...Sa};return J.validateInserts&&(Soup[ba]??any_soup_element$1).parse(Ra),ua.push(Ra),Ra},delete:Sa=>{const Ma=ua.find(Ra=>Ra[`${ba}_id`]===Sa);Ma&&ua.splice(ua.indexOf(Ma),1)},update:(Sa,Ma)=>{const Ra=ua.find(Ia=>Ia.type===ba&&Ia[`${ba}_id`]===Sa);if(Ra)return Object.assign(Ra,Ma),Ra},select:Sa=>{if(ba==="source_component")return ua.find(Ma=>Ma.type==="source_component"&&Ma.name===Sa.replace(/\./g,""));if(ba==="pcb_port"||ba==="source_port"||ba==="schematic_port"){const[Ma,Ra]=Sa.replace(/\./g,"").split(/[\s\>]+/),Ia=ua.find(Fa=>Fa.type==="source_component"&&Fa.name===Ma);if(!Ia)return null;const La=ua.find(Fa=>Fa.type==="source_port"&&Fa.source_component_id===Ia.source_component_id&&(Fa.name===Ra||(Fa.port_hints??[]).includes(Ra)));if(!La)return null;if(ba==="source_port")return La;if(ba==="pcb_port")return ua.find(Fa=>Fa.type==="pcb_port"&&Fa.source_port_id===La.source_port_id);if(ba==="schematic_port")return ua.find(Fa=>Fa.type==="schematic_port"&&Fa.source_port_id===La.source_port_id)}}}})};su$2.unparsed=su$2;var su_default$2=su$2,__defProp$o=Object.defineProperty,__export$4=(ua,J)=>{for(var la in J)__defProp$o(ua,la,{get:J[la],enumerable:!0})},components_exports={};__export$4(components_exports,{Battery:()=>Battery,Board:()=>Board,Capacitor:()=>Capacitor,Chip:()=>Chip,Constraint:()=>Constraint2,Crystal:()=>Crystal,Diode:()=>Diode,FabricationNotePath:()=>FabricationNotePath,FabricationNoteText:()=>FabricationNoteText,Footprint:()=>Footprint,Group:()=>Group$2,Hole:()=>Hole,Inductor:()=>Inductor,Jumper:()=>Jumper,Keepout:()=>Keepout,Led:()=>Led,Mosfet:()=>Mosfet,Net:()=>Net,NetAlias:()=>NetAlias,NormalComponent:()=>NormalComponent,PinHeader:()=>PinHeader,PlatedHole:()=>PlatedHole,Port:()=>Port,Potentiometer:()=>Potentiometer,PowerSource:()=>PowerSource,PrimitiveComponent:()=>PrimitiveComponent,PushButton:()=>PushButton,Renderable:()=>Renderable,Resistor:()=>Resistor,Resonator:()=>Resonator,SilkscreenCircle:()=>SilkscreenCircle,SilkscreenLine:()=>SilkscreenLine,SilkscreenPath:()=>SilkscreenPath,SilkscreenRect:()=>SilkscreenRect,SilkscreenText:()=>SilkscreenText,SmtPad:()=>SmtPad,Subcircuit:()=>Subcircuit,Trace:()=>Trace2,TraceHint:()=>TraceHint,Transistor:()=>Transistor,Via:()=>Via});var debug$4=Debug$1("tscircuit:renderable"),orderedRenderPhases=["ReactSubtreesRender","InitializePortsFromChildren","CreateNetsFromProps","CreateTracesFromProps","CreateTraceHintsFromProps","SourceRender","SourceParentAttachment","PortMatching","SourceTraceRender","SourceAddConnectivityMapKey","SchematicComponentRender","SchematicPortRender","SchematicLayout","SchematicTraceRender","PcbComponentRender","PcbPrimitiveRender","PcbFootprintLayout","PcbPortRender","PcbPortAttachment","PcbLayout","PcbComponentSizeCalculation","PcbTraceRender","PcbTraceHintRender","PcbRouteNetIslands","CadModelRender","PartsEngineRender"],globalRenderCounter=0,Renderable=class{constructor(ua){jp(this,"renderPhaseStates");jp(this,"shouldBeRemoved",!1);jp(this,"children");jp(this,"isPcbPrimitive",!1);jp(this,"isSchematicPrimitive",!1);jp(this,"_renderId");jp(this,"_currentRenderPhase",null);jp(this,"_asyncEffects",[]);jp(this,"parent",null);this._renderId=`${globalRenderCounter++}`,this.children=[],this.renderPhaseStates={};for(const J of orderedRenderPhases)this.renderPhaseStates[J]={initialized:!1,dirty:!1}}_markDirty(ua){var la;this.renderPhaseStates[ua].dirty=!0;const J=orderedRenderPhases.indexOf(ua);for(let xa=J+1;xa<orderedRenderPhases.length;xa++)this.renderPhaseStates[orderedRenderPhases[xa]].dirty=!0;(la=this.parent)!=null&&la._markDirty&&this.parent._markDirty(ua)}_queueAsyncEffect(ua,J){const la={promise:J(),phase:this._currentRenderPhase,effectName:ua,complete:!1};this._asyncEffects.push(la),"root"in this&&this.root&&this.root.emit("asyncEffect:start",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase}),la.promise.then(()=>{la.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase})}).catch(xa=>{console.error(`Async effect error in ${la.phase} "${ua}":
7537
7537
  ${xa.stack}`),la.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:ua,componentDisplayName:this.getString(),phase:la.phase,error:xa.toString()})})}_emitRenderLifecycleEvent(ua,J){debug$4(`${ua}:${J} ${this.getString()}`);const la=`renderable:renderLifecycle:${ua}:${J}`,xa={renderId:this._renderId,componentDisplayName:this.getString(),type:la};"root"in this&&this.root&&(this.root.emit(la,xa),this.root.emit("renderable:renderLifecycle:anyEvent",{...xa,type:la}))}getString(){return this.constructor.name}_hasIncompleteAsyncEffects(){return this._asyncEffects.some(ua=>!ua.complete)}getCurrentRenderPhase(){return this._currentRenderPhase}getRenderGraph(){return{id:this._renderId,currentPhase:this._currentRenderPhase,renderPhaseStates:this.renderPhaseStates,shouldBeRemoved:this.shouldBeRemoved,children:this.children.map(ua=>ua.getRenderGraph())}}runRenderCycle(){for(const ua of orderedRenderPhases)this.runRenderPhaseForChildren(ua),this.runRenderPhase(ua)}runRenderPhase(ua){var ba,Sa,Ma;this._currentRenderPhase=ua;const J=this.renderPhaseStates[ua],la=J.initialized,xa=J.dirty;if(!la&&this.shouldBeRemoved)return;if(this.shouldBeRemoved&&la){this._emitRenderLifecycleEvent(ua,"start"),(ba=this==null?void 0:this[`remove${ua}`])==null||ba.call(this),J.initialized=!1,J.dirty=!1,this._emitRenderLifecycleEvent(ua,"end");return}const Aa=orderedRenderPhases.indexOf(ua)-1;if(Aa>=0){const Ra=orderedRenderPhases[Aa];if(this._asyncEffects.filter(La=>La.phase===Ra).some(La=>!La.complete))return}if(this._emitRenderLifecycleEvent(ua,"start"),la){xa&&((Sa=this==null?void 0:this[`update${ua}`])==null||Sa.call(this),J.dirty=!1),this._emitRenderLifecycleEvent(ua,"end");return}J.dirty=!1,(Ma=this==null?void 0:this[`doInitial${ua}`])==null||Ma.call(this),J.initialized=!0,this._emitRenderLifecycleEvent(ua,"end")}runRenderPhaseForChildren(ua){for(const J of this.children)J.runRenderPhaseForChildren(ua),J.runRenderPhase(ua)}renderError(ua){throw typeof ua=="string"?new Error(ua):new Error(JSON.stringify(ua,null,2))}},catalogue$1={},extendCatalogue=ua=>{const J=Object.fromEntries(Object.entries(ua).map(([la,xa])=>[la.toLowerCase(),xa]));Object.assign(catalogue$1,ua),Object.assign(catalogue$1,J)};function prepare$1(ua,J){const la=ua;return la.__tsci={...J},ua}var hostConfig={supportsMutation:!0,createInstance(ua,J){const la=catalogue$1[ua];if(!la)throw Object.keys(catalogue$1).length===0?new Error("No components registered in catalogue, did you forget to import lib/register-catalogue in your test file?"):new Error(`Unsupported component type (not registered in @tscircuit/core catalogue): "${ua}" See CREATING_NEW_COMPONENTS.md`);return prepare$1(new la(J),{})},createTextInstance(){return{}},appendInitialChild(ua,J){ua.add(J)},appendChild(ua,J){ua.add(J)},appendChildToContainer(ua,J){ua.add(J)},finalizeInitialChildren(){return!1},prepareUpdate(){return null},shouldSetTextContent(){return!1},getRootHostContext(){return{}},getChildHostContext(){return{}},prepareForCommit(){return null},resetAfterCommit(){},commitMount(){},commitUpdate(){},removeChild(){},clearContainer(){},supportsPersistence:!1,getPublicInstance(ua){return ua},preparePortalMount(ua){throw new Error("Function not implemented.")},scheduleTimeout(ua,J){throw new Error("Function not implemented.")},cancelTimeout(ua){throw new Error("Function not implemented.")},noTimeout:void 0,isPrimaryRenderer:!1,getInstanceFromNode(ua){throw new Error("Function not implemented.")},beforeActiveInstanceBlur(){throw new Error("Function not implemented.")},afterActiveInstanceBlur(){throw new Error("Function not implemented.")},prepareScopeUpdate:(ua,J)=>{throw new Error("Function not implemented.")},getInstanceFromScope:ua=>{throw new Error("Function not implemented.")},detachDeletedInstance:ua=>{throw new Error("Function not implemented.")},getCurrentEventPriority:()=>constantsExports$1.DefaultEventPriority,getCurrentUpdatePriority:()=>constantsExports$1.DefaultEventPriority,resolveUpdatePriority:()=>constantsExports$1.DefaultEventPriority,setCurrentUpdatePriority:()=>{},maySuspendCommit:()=>!1,supportsHydration:!1},reconciler$1;React.version.startsWith("19.")?reconciler$1=ReactReconciler(hostConfig):reconciler$1=ReactReconciler18(hostConfig);var createInstanceFromReactElement=ua=>{const J={children:[],props:{name:"$root"},add(ba){ba.parent=this,this.children.push(ba)},computePcbGlobalTransform(){return identity$3()}},la=[],xa=reconciler$1.createContainer(J,0,null,!1,null,"tsci",ba=>{console.log("Error in createContainer"),console.error(ba),la.push(ba)},null);if(React.version.startsWith("19.")?(reconciler$1.updateContainerSync(ua,xa,null,()=>{}),reconciler$1.flushSyncWork()):reconciler$1.updateContainer(ua,xa,null,()=>{}),la.length>0)throw la[0];const Aa=reconciler$1.getPublicRootInstance(xa);return Aa||J.children[0]},parsePinNumberFromLabelsOrThrow=(ua,J)=>{if(typeof ua=="number")return ua;if(ua.startsWith("pin"))return Number(ua.slice(3));if(!J)throw new Error(`No pin labels provided and pin number or label is not a number: "${ua}"`);for(const la in J)if((Array.isArray(J[la])?J[la]:[J[la]]).includes(ua))return Number(la.replace("pin",""));throw new Error(`No pin labels provided and pin number or label is not a number: "${ua}"`)},underscorifyPinStyles=(ua,J)=>{if(!ua)return;const la={},xa={};for(const[Aa,ba]of Object.entries(ua)){const Sa=parsePinNumberFromLabelsOrThrow(Aa,J);xa[Sa]={...xa[Sa],...ba}}for(const[Aa,ba]of Object.entries(xa)){const Sa=`pin${Aa}`;la[Sa]={bottom_margin:ba.bottomMargin,left_margin:ba.leftMargin,right_margin:ba.rightMargin,top_margin:ba.topMargin}}return la},underscorifyPortArrangement=ua=>{if(ua){if("leftSide"in ua||"rightSide"in ua||"topSide"in ua||"bottomSide"in ua)return{left_side:ua.leftSide,right_side:ua.rightSide,top_side:ua.topSide,bottom_side:ua.bottomSide};if("leftPinCount"in ua||"rightPinCount"in ua||"topPinCount"in ua||"bottomPinCount"in ua)return{left_size:ua.leftPinCount,right_size:ua.rightPinCount,top_size:ua.topPinCount,bottom_size:ua.bottomPinCount};if("leftSize"in ua||"rightSize"in ua||"topSize"in ua||"bottomSize"in ua)return{left_size:ua.leftSize,right_size:ua.rightSize,top_size:ua.topSize,bottom_size:ua.bottomSize}}},InvalidProps=class extends Error{constructor(ua,J,la){let xa;const ba=Object.keys(la).filter(Sa=>Sa!=="_errors").map(Sa=>la[Sa]._errors[0]?`${Sa} (${la[Sa]._errors[0]})`:`${Sa} (${JSON.stringify(la[Sa])})`).join(", ");"name"in J?xa=`Invalid props for ${ua} "${J.name}": ${ba}`:"footprint"in J&&typeof J.footprint=="string"?xa=`Invalid props for ${ua} (unnamed ${J.footprint} component): ${ba}`:xa=`Invalid props for ${ua} (unnamed): ${ba}`,super(xa),this.componentName=ua,this.originalProps=J,this.formattedError=la}};function isMatchingSelector(ua,J){const la=J.match(/^#(\w+)/);if(la)return ua.props.id===la[1];const xa=J.match(/^\.(\w+)/);if(xa)return ua.isMatchingNameOrAlias(xa[1]);let[Aa,...ba]=J.split(/(?=[#.[])/);return Aa==="pin"&&(Aa="port"),Aa&&Aa!=="*"&&ua.lowercaseComponentName!==Aa.toLowerCase()?!1:ba.every(Sa=>{if(Sa.startsWith("#"))return ua.props.id===Sa.slice(1);if(Sa.startsWith("."))return ua.isMatchingNameOrAlias(Sa.slice(1));const Ma=Sa.match(/\[(\w+)=['"]?(.+?)['"]?\]/);if(!Ma)return!0;const[,Ra,Ia]=Ma;return ua.props[Ra].toString()===Ia})}var debugSelectAll=Debug$1("tscircuit:primitive-component:selectAll"),PrimitiveComponent=class extends Renderable{constructor(J){super(J);jp(this,"parent",null);jp(this,"children");jp(this,"childrenPendingRemoval");jp(this,"props");jp(this,"_parsedProps");jp(this,"externallyAddedAliases");jp(this,"isPrimitiveContainer",!1);jp(this,"source_group_id",null);jp(this,"source_component_id",null);jp(this,"schematic_component_id",null);jp(this,"pcb_component_id",null);jp(this,"cad_component_id",null);this.children=[],this.childrenPendingRemoval=[],this.props=J??{},this.externallyAddedAliases=[];const la=this.config.zodProps.safeParse(J??{});if(la.success)this._parsedProps=la.data;else throw new InvalidProps(this.lowercaseComponentName,this.props,la.error.format())}get config(){return{componentName:"",zodProps:z$3.object({}).passthrough()}}get componentName(){return this.config.componentName}getInheritedProperty(J){let la=this;for(;la;){if(la._parsedProps&&J in la._parsedProps)return la._parsedProps[J];la=la.parent}}get lowercaseComponentName(){return this.componentName.toLowerCase()}get isSubcircuit(){var J;return!!this.props.subcircuit||this.lowercaseComponentName==="group"&&((J=this==null?void 0:this.parent)==null?void 0:J.isRoot)}get isGroup(){return this.lowercaseComponentName==="group"}setProps(J){var Aa,ba;const la=this.config.zodProps.parse({...this.props,...J}),xa=this.props;this.props=la,this._parsedProps=this.config.zodProps.parse(J),this.onPropsChange({oldProps:xa,newProps:la,changedProps:Object.keys(J)}),(ba=(Aa=this.parent)==null?void 0:Aa.onChildChanged)==null||ba.call(Aa,this)}computePcbPropsTransform(){const{_parsedProps:J}=this;return compose(translate(J.pcbX??0,J.pcbY??0),rotate((J.pcbRotation??0)*Math.PI/180))}_computePcbGlobalTransformBeforeLayout(){var xa,Aa,ba;const{_parsedProps:J}=this,la=this.getSubcircuit()._getPcbManualPlacementForComponent(this);if(la&&this.props.pcbX===void 0&&this.props.pcbY===void 0)return compose(((xa=this.parent)==null?void 0:xa._computePcbGlobalTransformBeforeLayout())??identity$3(),compose(translate(la.x,la.y),rotate((J.pcbRotation??0)*Math.PI/180)));if(this.isPcbPrimitive){const Sa=this.getPrimitiveContainer();if(Sa){const Ma=Sa._parsedProps.layer==="bottom",Ra=Sa._getGlobalPcbPositionBeforeLayout();if(Ma)return compose(translate(Ra.x,Ra.y),flipY(),translate(-Ra.x,-Ra.y)),compose(((Aa=this.parent)==null?void 0:Aa._computePcbGlobalTransformBeforeLayout())??identity$3(),flipY(),this.computePcbPropsTransform())}}return compose(((ba=this.parent)==null?void 0:ba._computePcbGlobalTransformBeforeLayout())??identity$3(),this.computePcbPropsTransform())}getPrimitiveContainer(){var J,la;return this.isPrimitiveContainer?this:((la=(J=this.parent)==null?void 0:J.getPrimitiveContainer)==null?void 0:la.call(J))??null}_getPcbCircuitJsonBounds(){return{center:{x:0,y:0},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getPcbPrimitiveFlippedHelpers(){const J=this.getPrimitiveContainer(),la=J?J._parsedProps.layer==="bottom":!1;return{isFlipped:la,maybeFlipLayer:Aa=>la?Aa==="top"?"bottom":"top":Aa}}_setPositionFromLayout(J){throw new Error(`_setPositionFromLayout not implemented for ${this.componentName}`)}computeSchematicPropsTransform(){return compose(translate(this.props.schX??0,this.props.schY??0))}computeSchematicGlobalTransform(){var la,xa;const J=this._getSchematicGlobalManualPlacementTransform(this);return J||compose(((xa=(la=this.parent)==null?void 0:la.computeSchematicGlobalTransform)==null?void 0:xa.call(la))??identity$3(),this.computeSchematicPropsTransform())}_getSchematicSymbolName(){const{_parsedProps:J}=this,la=this.config.schematicSymbolName;let xa=J.schRotation;if(xa===void 0&&(xa=0),xa=xa%360,xa<0&&(xa+=360),J.schRotation!==void 0&&xa%90!==0)throw new Error(`Schematic rotation ${J.schRotation} is not supported for ${this.componentName}`);const Aa=`${la}_horz`,ba=`${la}_vert`,Sa=`${la}_up`,Ma=`${la}_down`,Ra=`${la}_left`,Ia=`${la}_right`;if(Ia in symbols_index_default$1&&xa===0)return Ia;if(Sa in symbols_index_default$1&&xa===90)return Sa;if(Ra in symbols_index_default$1&&xa===180)return Ra;if(Ma in symbols_index_default$1&&xa===270)return Ma;if(Aa in symbols_index_default$1&&(xa===0||xa===180))return Aa;if(ba in symbols_index_default$1&&(xa===90||xa===270))return ba;if(la in symbols_index_default$1)return la}_getSchematicSymbolNameOrThrow(){const J=this._getSchematicSymbolName();if(!J)throw new Error(`No schematic symbol found (given: "${this.config.schematicSymbolName}")`);return J}getSchematicSymbol(){const J=this._getSchematicSymbolName();return J?symbols_index_default$1[J]??null:null}_getPcbManualPlacementForComponent(J){var ba;if(!this.isSubcircuit)return null;const la=this.props.layout,xa=this.props.manualEdits;if(!la&&!xa)return null;const Aa=((ba=la==null?void 0:la.manual_pcb_placement_config)==null?void 0:ba.positions)||(xa==null?void 0:xa.pcb_placements);if(!Aa)return null;for(const Sa of Aa)if(la&&isMatchingSelector(J,Sa.selector)||J.props.name===Sa.selector)return applyToPoint(this._computePcbGlobalTransformBeforeLayout(),Sa.center);return null}_getSchematicGlobalManualPlacementTransform(J){var xa,Aa;const la=(xa=this.getSubcircuit())==null?void 0:xa._parsedProps.manualEdits;if(!la)return null;for(const ba of la.schematic_placements??[])if((isMatchingSelector(J,ba.selector)||J.props.name===ba.selector)&&ba.relative_to==="group_center")return compose(((Aa=this.parent)==null?void 0:Aa._computePcbGlobalTransformBeforeLayout())??identity$3(),translate(ba.center.x,ba.center.y));return null}_getGlobalPcbPositionBeforeLayout(){return applyToPoint(this._computePcbGlobalTransformBeforeLayout(),{x:0,y:0})}_getGlobalSchematicPositionBeforeLayout(){return applyToPoint(this.computeSchematicGlobalTransform(),{x:0,y:0})}get root(){var J;return((J=this.parent)==null?void 0:J.root)??null}onAddToParent(J){this.parent=J}onPropsChange(J){}onChildChanged(J){var la,xa;(xa=(la=this.parent)==null?void 0:la.onChildChanged)==null||xa.call(la,J)}add(J){J.onAddToParent(this),J.parent=this,this.children.push(J)}addAll(J){for(const la of J)this.add(la)}remove(J){this.children=this.children.filter(la=>la!==J),this.childrenPendingRemoval.push(J),J.shouldBeRemoved=!0}getSubcircuitSelector(){const J=this._parsedProps.name,la=J?`${this.lowercaseComponentName}.${J}`:this.lowercaseComponentName;return!this.parent||this.parent.isSubcircuit?la:`${this.parent.getSubcircuitSelector()} > ${la}`}getFullPathSelector(){var Aa,ba;const J=this._parsedProps.name,la=J?`${this.lowercaseComponentName}.${J}`:this.lowercaseComponentName,xa=(ba=(Aa=this.parent)==null?void 0:Aa.getFullPathSelector)==null?void 0:ba.call(Aa);return xa?`${xa} > ${la}`:la}getNameAndAliases(){return[this._parsedProps.name,...this._parsedProps.portHints??[]].filter(Boolean)}isMatchingNameOrAlias(J){return this.getNameAndAliases().includes(J)}isMatchingAnyOf(J){return this.getNameAndAliases().some(la=>J.map(xa=>xa.toString()).includes(la))}getPcbSize(){throw new Error(`getPcbSize not implemented for ${this.componentName}`)}doesSelectorMatch(J){const la=[this.componentName,this.lowercaseComponentName],xa=[this._parsedProps.name].filter(Boolean),Aa=J.trim().split(/\> /)[0],ba=Aa[0];return Aa.length>1?!1:!!(J==="*"||J[0]==="#"&&J.slice(1)===this.props.id||J[0]==="."&&xa.includes(J.slice(1))||/^[a-zA-Z0-9_]/.test(ba)&&la.includes(ba))}getSubcircuit(){var la,xa;if(this.isSubcircuit)return this;const J=(xa=(la=this.parent)==null?void 0:la.getSubcircuit)==null?void 0:xa.call(la);if(!J)throw new Error("Component is not inside an opaque group (no board?)");return J}getGroup(){var J,la;return this.isGroup?this:((la=(J=this.parent)==null?void 0:J.getGroup)==null?void 0:la.call(J))??null}selectAll(J){debugSelectAll(`selectAll: "${J}"`);const la=J.trim().split(/\s+/);let xa=la[0]===">"?this.children:this.getSelectableDescendants(),Aa=[],ba=!1,Sa=-1;for(const Ma of la)if(Sa++,debugSelectAll(`
7538
7538
 
7539
7539
  iteration: ${Sa}`),debugSelectAll(`part: "${la[Sa]}"`),debugSelectAll(`currentSearch: [${xa.map(Ra=>Ra.getString()).join(",")}]`),debugSelectAll(`currentResults: [${Aa.map(Ra=>Ra.getString()).join(",")}]`),Ma===">")ba=!0;else{const Ra=xa.filter(La=>isMatchingSelector(La,Ma));xa=Ra.flatMap(La=>ba?La.children:La.getSelectableDescendants()),Aa=Ra,ba=!1}return Aa}selectOne(J,la){var Aa;let xa=(Aa=la==null?void 0:la.type)==null?void 0:Aa.toLowerCase();return la!=null&&la.port&&(xa="port"),xa?this.selectAll(J).find(ba=>ba.lowercaseComponentName===xa)??null:la!=null&&la.pcbPrimitive?this.selectAll(J).find(ba=>ba.isPcbPrimitive)??null:la!=null&&la.schematicPrimitive?this.selectAll(J).find(ba=>ba.isSchematicPrimitive)??null:this.selectAll(J)[0]??null}getAvailablePcbLayers(){var J,la;if(this.isPcbPrimitive){const{maybeFlipLayer:xa}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[xa(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((la=(J=this.root)==null?void 0:J._getBoard())==null?void 0:la.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const J=[];for(const la of this.children)J.push(la),J.push(...la.getDescendants());return J}getSelectableDescendants(){const J=[];for(const la of this.children)la.isSubcircuit?J.push(la):(J.push(la),J.push(...la.getSelectableDescendants()));return J}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}renderError(J){var la;if(typeof J=="string")return super.renderError(J);(la=this.root)==null||la.db.pcb_placement_error.insert(J)}getString(){var Aa,ba;const{lowercaseComponentName:J,_parsedProps:la,parent:xa}=this;return(la==null?void 0:la.pinNumber)!==void 0&&((Aa=xa==null?void 0:xa.props)!=null&&Aa.name)&&(la!=null&&la.name)?`<${J}#${this._renderId}(pin:${la.pinNumber} .${xa==null?void 0:xa.props.name}>.${la.name}) />`:(ba=xa==null?void 0:xa.props)!=null&&ba.name&&(la!=null&&la.name)?`<${J}#${this._renderId}(.${xa==null?void 0:xa.props.name}>.${la==null?void 0:la.name}) />`:la!=null&&la.from&&(la!=null&&la.to)?`<${J}#${this._renderId}(from:${la.from} to:${la==null?void 0:la.to}) />`:la!=null&&la.name?`<${J}#${this._renderId} name=".${la==null?void 0:la.name}" />`:la!=null&&la.portHints?`<${J}#${this._renderId}(${la.portHints.map(Sa=>`.${Sa}`).join(", ")}) />`:`<${J}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}};function pairs$1(ua){const J=[];for(let la=0;la<ua.length-1;la++)J.push([ua[la],ua[la+1]]);return J}var netProps=z$3.object({name:z$3.string()}),Net=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:netProps}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:J}=this.root,{_parsedProps:la}=this,xa=J.source_net.insert({name:la.name,member_source_group_ids:[]});this.source_net_id=xa.source_net_id}getAllConnectedPorts(){const J=this.getSubcircuit().selectAll("port"),la=[];for(const xa of J){const Aa=xa._getDirectlyConnectedTraces();for(const ba of Aa)if(ba._isExplicitlyConnectedToNet(this)){la.push(xa);break}}return la}_getAllDirectlyConnectedTraces(){const J=this.getSubcircuit().selectAll("trace"),la=[];for(const xa of J)xa._isExplicitlyConnectedToNet(this)&&la.push(xa);return la}doInitialPcbRouteNetIslands(){var ba;if((ba=this.root)!=null&&ba.pcbDisabled||this.getSubcircuit()._parsedProps.routingDisabled)return;const{db:J}=this.root,la=this._getAllDirectlyConnectedTraces().filter(Sa=>{var Ma;return(((Ma=Sa._portsRoutedOnPcb)==null?void 0:Ma.length)??0)>0}),xa=[];for(const Sa of la){const Ma=Sa._portsRoutedOnPcb,Ra=xa.find(Ia=>Ma.some(La=>Ia.ports.includes(La)));if(!Ra){xa.push({ports:[...Ma],traces:[Sa]});continue}Ra.traces.push(Sa),Ra.ports.push(...Ma)}if(xa.length===0)return;const Aa=pairs$1(xa);for(const[Sa,Ma]of Aa){const Ra=Sa.ports.map(nl=>nl._getGlobalPcbPositionBeforeLayout()),Ia=Ma.ports.map(nl=>nl._getGlobalPcbPositionBeforeLayout());let La=1/0,Fa=[-1,-1];for(let nl=0;nl<Ra.length;nl++){const sl=Ra[nl];for(let ll=0;ll<Ia.length;ll++){const dl=Ia[ll],gl=Math.sqrt((sl.x-dl.x)**2+(sl.y-dl.y)**2);gl<La&&(La=gl,Fa=[nl,ll])}}const ka=Sa.ports[Fa[0]],el=Ma.ports[Fa[1]],tl=J.toArray().filter(nl=>nl.type==="pcb_smtpad"||nl.type==="pcb_trace"||nl.type==="pcb_plated_hole"||nl.type==="pcb_hole"||nl.type==="source_port"||nl.type==="pcb_port"),{solution:rl}=autoroute2(tl.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[ka.source_port_id,el.source_port_id]}])),il=rl[0];if(!il){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[ka.pcb_component_id,el.pcb_component_id].filter(Boolean),pcb_port_ids:[ka.pcb_port_id,el.pcb_port_id].filter(Boolean),type:"pcb_trace_error",error_type:"pcb_trace_error",message:`Failed to route net islands for "${this.getString()}"`,source_trace_id:"__net_trace_tmp"});return}J.pcb_trace.insert(il)}}renderError(J){var la;if(typeof J=="string")return super.renderError(J);(la=this.root)==null||la.db.pcb_trace_error.insert(J)}},createNetsFromProps=(ua,J)=>{for(const la of J)typeof la=="string"&&la.startsWith("net.")&&(ua.getSubcircuit().selectOne(la)||ua.getSubcircuit().add(new Net({name:la.split("net.")[1]})))},SmtPad=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_smtpad_id",null);jp(this,"matchedPort",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SmtPad",zodProps:smtPadProps}}getPcbSize(){const{_parsedProps:J}=this;if(J.shape==="circle")return{width:J.radius*2,height:J.radius*2};if(J.shape==="rect")return{width:J.width,height:J.height};throw new Error(`getPcbSize for shape "${J.shape}" not implemented for ${this.componentName}`)}doInitialPortMatching(){var la;const J=(la=this.getPrimitiveContainer())==null?void 0:la.selectAll("port");if(this.props.portHints){for(const xa of J)if(xa.isMatchingAnyOf(this.props.portHints)){this.matchedPort=xa,xa.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var ka,el,tl,rl,il,nl,sl,ll,dl;if((ka=this.root)!=null&&ka.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this;if(!la.portHints)return;const xa=this.getPrimitiveContainer(),Aa=this.getSubcircuit(),ba=this._getGlobalPcbPositionBeforeLayout();xa==null||xa._getGlobalPcbPositionBeforeLayout();const Sa=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),Ma=Math.abs(Sa.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:Ra}=this._getPcbPrimitiveFlippedHelpers(),Ia=(xa==null?void 0:xa._parsedProps.pcbRotation)??0;let La=null;const Fa=((el=this.parent)==null?void 0:el.pcb_component_id)??((tl=this.getPrimitiveContainer())==null?void 0:tl.pcb_component_id);la.shape==="circle"?(La=J.pcb_smtpad.insert({pcb_component_id:Fa,pcb_port_id:(rl=this.matchedPort)==null?void 0:rl.pcb_port_id,layer:Ra(la.layer??"top"),shape:"circle",radius:la.radius,port_hints:la.portHints.map(gl=>gl.toString()),x:ba.x,y:ba.y,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0}),J.pcb_solder_paste.insert({layer:La.layer,shape:"circle",radius:La.radius*.7,x:La.x,y:La.y,pcb_component_id:La.pcb_component_id,pcb_smtpad_id:La.pcb_smtpad_id,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((il=this.getGroup())==null?void 0:il.pcb_group_id)??void 0})):la.shape==="rect"&&(La=Ia===0||Ma?J.pcb_smtpad.insert({pcb_component_id:Fa,pcb_port_id:(nl=this.matchedPort)==null?void 0:nl.pcb_port_id,layer:Ra(la.layer??"top"),shape:"rect",width:Ma?la.height:la.width,height:Ma?la.width:la.height,port_hints:la.portHints.map(gl=>gl.toString()),x:ba.x,y:ba.y,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((sl=this.getGroup())==null?void 0:sl.pcb_group_id)??void 0}):J.pcb_smtpad.insert({pcb_component_id:Fa,layer:la.layer??"top",shape:"rotated_rect",width:la.width,height:la.height,x:ba.x,y:ba.y,ccw_rotation:Ia,port_hints:la.portHints.map(gl=>gl.toString()),subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((ll=this.getGroup())==null?void 0:ll.pcb_group_id)??void 0}),La.shape==="rect"&&J.pcb_solder_paste.insert({layer:La.layer,shape:"rect",width:La.width*.7,height:La.height*.7,x:La.x,y:La.y,pcb_component_id:La.pcb_component_id,pcb_smtpad_id:La.pcb_smtpad_id,subcircuit_id:(Aa==null?void 0:Aa.subcircuit_id)??void 0,pcb_group_id:((dl=this.getGroup())==null?void 0:dl.pcb_group_id)??void 0})),La&&(this.pcb_smtpad_id=La.pcb_smtpad_id)}doInitialPcbPortAttachment(){var la,xa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(xa=this.matchedPort)==null?void 0:xa.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_smtpad.get(this.pcb_smtpad_id);if(la.shape==="rect")return{center:{x:la.x,y:la.y},bounds:{left:la.x-la.width/2,top:la.y+la.height/2,right:la.x+la.width/2,bottom:la.y-la.height/2},width:la.width,height:la.height};if(la.shape==="rotated_rect"){const xa=la.ccw_rotation*Math.PI/180,Aa=Math.cos(xa),ba=Math.sin(xa),Sa=la.width/2,Ma=la.height/2,Ra=Math.abs(Sa*Aa)+Math.abs(Ma*ba),Ia=Math.abs(Sa*ba)+Math.abs(Ma*Aa);return{center:{x:la.x,y:la.y},bounds:{left:la.x-Ra,right:la.x+Ra,top:la.y-Ia,bottom:la.y+Ia},width:Ra*2,height:Ia*2}}if(la.shape==="circle")return{center:{x:la.x,y:la.y},bounds:{left:la.x-la.radius,top:la.y-la.radius,right:la.x+la.radius,bottom:la.y+la.radius},width:la.radius*2,height:la.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${la.shape}"`)}_setPositionFromLayout(J){var Aa;const{db:la}=this.root;la.pcb_smtpad.update(this.pcb_smtpad_id,{x:J.x,y:J.y});const xa=la.pcb_solder_paste.list().find(ba=>ba.pcb_smtpad_id===this.pcb_smtpad_id);la.pcb_solder_paste.update(xa==null?void 0:xa.pcb_solder_paste_id,{x:J.x,y:J.y}),(Aa=this.matchedPort)==null||Aa._setPositionFromLayout(J)}},SilkscreenPath=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_silkscreen_path_id",null)}get config(){return{componentName:"SilkscreenPath",zodProps:silkscreenPathProps}}doInitialPcbPrimitiveRender(){var Ma,Ra,Ia;if((Ma=this.root)!=null&&Ma.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=la.layer??"top";if(xa!=="top"&&xa!=="bottom")throw new Error(`Invalid layer "${xa}" for SilkscreenPath. Must be "top" or "bottom".`);const Aa=this._computePcbGlobalTransformBeforeLayout(),ba=this.getSubcircuit(),Sa=J.pcb_silkscreen_path.insert({pcb_component_id:(Ra=this.parent)==null?void 0:Ra.pcb_component_id,layer:xa,route:la.route.map(La=>{const Fa=applyToPoint(Aa,{x:La.x,y:La.y});return{...La,x:Fa.x,y:Fa.y}}),stroke_width:la.strokeWidth??.1,subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((Ia=this.getGroup())==null?void 0:Ia.pcb_group_id)??void 0});this.pcb_silkscreen_path_id=Sa.pcb_silkscreen_path_id}},PlatedHole=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_plated_hole_id",null);jp(this,"matchedPort",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PlatedHole",zodProps:platedHoleProps}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:J}=this;if(J.shape==="circle")return{width:J.outerDiameter,height:J.outerDiameter};if(J.shape==="oval"||J.shape==="pill")return{width:J.outerWidth,height:J.outerHeight};throw new Error(`getPcbSize for shape "${J.shape}" not implemented for ${this.componentName}`)}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_plated_hole.get(this.pcb_plated_hole_id),xa=this.getPcbSize();return{center:{x:la.x,y:la.y},bounds:{left:la.x-xa.width/2,top:la.y+xa.height/2,right:la.x+xa.width/2,bottom:la.y-xa.height/2},width:xa.width,height:xa.height}}_setPositionFromLayout(J){var xa;const{db:la}=this.root;la.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:J.x,y:J.y}),(xa=this.matchedPort)==null||xa._setPositionFromLayout(J)}doInitialPortMatching(){var la;const J=(la=this.getPrimitiveContainer())==null?void 0:la.selectAll("port");if(this.props.portHints){for(const xa of J)if(xa.isMatchingAnyOf(this.props.portHints)){this.matchedPort=xa,xa.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var Sa,Ma,Ra,Ia,La,Fa,ka;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getGlobalPcbPositionBeforeLayout(),Aa=((Ma=this.parent)==null?void 0:Ma.pcb_component_id)??((Ra=this.getPrimitiveContainer())==null?void 0:Ra.pcb_component_id),ba=this.getSubcircuit();if(la.shape==="circle"){const el=J.pcb_plated_hole.insert({pcb_component_id:Aa,pcb_port_id:(Ia=this.matchedPort)==null?void 0:Ia.pcb_port_id,outer_diameter:la.outerDiameter,hole_diameter:la.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:xa.x,y:xa.y,layers:["top","bottom"],subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((La=this.getGroup())==null?void 0:La.pcb_group_id)??void 0});this.pcb_plated_hole_id=el.pcb_plated_hole_id}else if(la.shape==="pill"||la.shape==="oval"){const el=J.pcb_plated_hole.insert({pcb_component_id:Aa,pcb_port_id:(Fa=this.matchedPort)==null?void 0:Fa.pcb_port_id,outer_width:la.outerWidth,outer_height:la.outerHeight,hole_width:la.innerWidth,hole_height:la.innerHeight,shape:la.shape,port_hints:this.getNameAndAliases(),x:xa.x,y:xa.y,layers:["top","bottom"],subcircuit_id:(ba==null?void 0:ba.subcircuit_id)??void 0,pcb_group_id:((ka=this.getGroup())==null?void 0:ka.pcb_group_id)??void 0});this.pcb_plated_hole_id=el.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var la,xa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(xa=this.matchedPort)==null?void 0:xa.pcb_port_id})}},Keepout=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_keepout_id",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:pcbKeepoutProps}}doInitialPcbPrimitiveRender(){var Ra,Ia,La;if((Ra=this.root)!=null&&Ra.pcbDisabled)return;const J=this.getSubcircuit(),{db:la}=this.root,{_parsedProps:xa}=this,Aa=this._getGlobalPcbPositionBeforeLayout(),ba=decomposeTSR(this._computePcbGlobalTransformBeforeLayout()),Sa=Math.abs(ba.rotation.angle*(180/Math.PI)-90)%180<.01;let Ma=null;xa.shape==="circle"?Ma=la.pcb_keepout.insert({layers:["top"],shape:"circle",radius:xa.radius,center:{x:Aa.x,y:Aa.y},subcircuit_id:(J==null?void 0:J.subcircuit_id)??void 0,pcb_group_id:((Ia=J==null?void 0:J.getGroup())==null?void 0:Ia.pcb_group_id)??void 0}):xa.shape==="rect"&&(Ma=la.pcb_keepout.insert({layers:["top"],shape:"rect",...Sa?{width:xa.height,height:xa.width}:{width:xa.width,height:xa.height},center:{x:Aa.x,y:Aa.y},subcircuit_id:(J==null?void 0:J.subcircuit_id)??void 0,pcb_group_id:((La=J==null?void 0:J.getGroup())==null?void 0:La.pcb_group_id)??void 0})),Ma&&(this.pcb_keepout_id=Ma.pcb_keepout_id)}},Hole=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"pcb_hole_id",null);jp(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:holeProps}}getPcbSize(){const{_parsedProps:J}=this;return{width:J.diameter,height:J.diameter}}doInitialPcbPrimitiveRender(){var Sa,Ma;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getSubcircuit(),Aa=this._getGlobalPcbPositionBeforeLayout(),ba=J.pcb_hole.insert({hole_shape:"circle",hole_diameter:la.diameter,x:Aa.x,y:Aa.y,subcircuit_id:(xa==null?void 0:xa.subcircuit_id)??void 0,pcb_group_id:((Ma=xa==null?void 0:xa.getGroup())==null?void 0:Ma.pcb_group_id)??void 0});this.pcb_hole_id=ba.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:J}=this.root,la=J.pcb_hole.get(this.pcb_hole_id),xa=this.getPcbSize();return{center:{x:la.x,y:la.y},bounds:{left:la.x-xa.width/2,top:la.y-xa.height/2,right:la.x+xa.width/2,bottom:la.y+xa.height/2},width:xa.width,height:xa.height}}_setPositionFromLayout(J){const{db:la}=this.root;la.pcb_hole.update(this.pcb_hole_id,{x:J.x,y:J.y})}},createComponentsFromSoup=ua=>{const J=[];for(const la of ua)la.type==="pcb_smtpad"&&la.shape==="rect"?J.push(new SmtPad({pcbX:la.x,pcbY:la.y,layer:la.layer,shape:"rect",height:la.height,width:la.width,portHints:la.port_hints})):la.type==="pcb_smtpad"&&la.shape==="circle"?J.push(new SmtPad({pcbX:la.x,pcbY:la.y,layer:la.layer,shape:"circle",radius:la.radius,portHints:la.port_hints})):la.type==="pcb_silkscreen_path"?J.push(new SilkscreenPath({layer:la.layer,route:la.route,strokeWidth:la.stroke_width})):la.type==="pcb_plated_hole"&&la.shape==="circle"?la.shape==="circle"&&J.push(new PlatedHole({pcbX:la.x,pcbY:la.y,shape:"circle",holeDiameter:la.hole_diameter,outerDiameter:la.outer_diameter,portHints:la.port_hints})):la.type==="pcb_keepout"&&la.shape==="circle"?J.push(new Keepout({pcbX:la.center.x,pcbY:la.center.y,shape:"circle",radius:la.radius})):la.type==="pcb_keepout"&&la.shape==="rect"?J.push(new Keepout({pcbX:la.center.x,pcbY:la.center.y,shape:"rect",width:la.width,height:la.height})):la.type==="pcb_hole"&&la.hole_shape==="circle"&&J.push(new Hole({pcbX:la.x,pcbY:la.y,diameter:la.hole_diameter}));return J};function getBoundsOfPcbComponents(ua){let J=1/0,la=1/0,xa=-1/0,Aa=-1/0;for(const Ma of ua)if(Ma.isPcbPrimitive){const{x:Ra,y:Ia}=Ma._getGlobalPcbPositionBeforeLayout(),{width:La,height:Fa}=Ma.getPcbSize();J=Math.min(J,Ra-La/2),la=Math.min(la,Ia-Fa/2),xa=Math.max(xa,Ra+La/2),Aa=Math.max(Aa,Ia+Fa/2)}else if(Ma.componentName==="Footprint"){const Ra=getBoundsOfPcbComponents(Ma.children);J=Math.min(J,Ra.minX),la=Math.min(la,Ra.minY),xa=Math.max(xa,Ra.maxX),Aa=Math.max(Aa,Ra.maxY)}let ba=xa-J,Sa=Aa-la;return ba<0&&(ba=0),Sa<0&&(Sa=0),{minX:J,minY:la,maxX:xa,maxY:Aa,width:ba,height:Sa}}function getRelativeDirection(ua,J){const la=J.x-ua.x,xa=J.y-ua.y;return Math.abs(la)>Math.abs(xa)?la>=0?"right":"left":xa>=0?"up":"down"}var areAllPcbPrimitivesOverlapping=ua=>{if(ua.length<=1)return!0;const J=ua.map(ba=>{const Sa=ba._getPcbCircuitJsonBounds();return{left:Sa.bounds.left,right:Sa.bounds.right,top:Sa.bounds.top,bottom:Sa.bounds.bottom}}),la=Array(J.length).fill(!1).map(()=>Array(J.length).fill(!1));for(let ba=0;ba<J.length;ba++)for(let Sa=ba+1;Sa<J.length;Sa++){const Ma=J[ba],Ra=J[Sa];la[ba][Sa]=la[Sa][ba]=!(Ma.right<Ra.left||Ma.left>Ra.right||Ma.bottom>Ra.top||Ma.top<Ra.bottom)}const xa=new Set,Aa=ba=>{xa.add(ba);for(let Sa=0;Sa<J.length;Sa++)la[ba][Sa]&&!xa.has(Sa)&&Aa(Sa)};return Aa(0),xa.size===J.length},getCenterOfPcbPrimitives=ua=>{if(ua.length===0)throw new Error("Cannot get center of empty PCB primitives array");const J=ua.map(Aa=>Aa._getPcbCircuitJsonBounds().center).filter(Boolean),la=J.reduce((Aa,ba)=>Aa+ba.x,0),xa=J.reduce((Aa,ba)=>Aa+ba.y,0);return{x:la/J.length,y:xa/J.length}},portProps=z$3.object({name:z$3.string().optional(),pinNumber:z$3.number().optional(),aliases:z$3.array(z$3.string()).optional()}),Port=class extends PrimitiveComponent{constructor(J,la={}){if(!J.name&&J.pinNumber!==void 0&&(J.name=`pin${J.pinNumber}`),!J.name)throw new Error("Port must have a name or a pinNumber");super(J);jp(this,"source_port_id",null);jp(this,"pcb_port_id",null);jp(this,"schematic_port_id",null);jp(this,"schematicSymbolPortDef",null);jp(this,"matchedComponents");jp(this,"facingDirection",null);jp(this,"originDescription",null);la.originDescription&&(this.originDescription=la.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:portProps}}_getGlobalPcbPositionBeforeLayout(){const J=this.matchedComponents.find(la=>la.isPcbPrimitive);if(!J)throw new Error(`Port ${this} has no matched pcb component, can't get global pcb position`);return(J==null?void 0:J._getGlobalPcbPositionBeforeLayout())??{x:0,y:0}}_getPcbCircuitJsonBounds(){if(!this.pcb_port_id)return super._getPcbCircuitJsonBounds();const{db:J}=this.root,la=J.pcb_port.get(this.pcb_port_id);return{center:{x:la.x,y:la.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getPortsInternallyConnectedToThisPort(){const J=this.parent;if(!J||!J._getInternallyConnectedPins)return[];const la=J._getInternallyConnectedPins();for(const xa of la)if(xa.some(Aa=>Aa===this))return xa;return[]}_hasSchematicPort(){var xa,Aa;if((xa=this.parent)==null?void 0:xa.getSchematicSymbol())return!!(this.schematicSymbolPortDef||this._getPortsInternallyConnectedToThisPort().some(Sa=>Sa.schematicSymbolPortDef));const la=(Aa=this==null?void 0:this.parent)==null?void 0:Aa._getSchematicBoxDimensions();return!!(la&&this.props.pinNumber!==void 0&&la.getPortPositionByPinNumber(this.props.pinNumber))}_getGlobalSchematicPositionBeforeLayout(){var xa,Aa,ba;const J=(xa=this.parent)==null?void 0:xa.getSchematicSymbol();if(J){let Sa=this.schematicSymbolPortDef;if(!Sa&&(Sa=((Aa=this._getPortsInternallyConnectedToThisPort().find(Ra=>Ra.schematicSymbolPortDef))==null?void 0:Aa.schematicSymbolPortDef)??null,!Sa))throw new Error(`Couldn't find schematicSymbolPortDef for port ${this.getString()}, searched internally connected ports and none had a schematicSymbolPortDef. Why are we trying to get the schematic position of this port?`);const Ma=compose(this.parent.computeSchematicGlobalTransform(),translate(-J.center.x,-J.center.y));return applyToPoint(Ma,Sa)}const la=(ba=this==null?void 0:this.parent)==null?void 0:ba._getSchematicBoxDimensions();if(la&&this.props.pinNumber!==void 0){const Sa=la.getPortPositionByPinNumber(this.props.pinNumber);if(!Sa)throw new Error(`Couldn't find position for schematic_port for port ${this.getString()} inside of the schematic box`);return applyToPoint(this.parent.computeSchematicGlobalTransform(),Sa)}throw new Error(`Couldn't find position for schematic_port for port ${this.getString()}`)}_getGlobalSchematicPositionAfterLayout(){const{db:J}=this.root;if(!this.schematic_port_id)throw new Error("Can't get schematic port position after layout, no schematic_port_id");const la=J.schematic_port.get(this.schematic_port_id);if(!la)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return la.center}registerMatch(J){this.matchedComponents.push(J)}getNameAndAliases(){const{_parsedProps:J}=this;return Array.from(new Set([...J.aliases??[],...J.name?[J.name]:[],...typeof J.pinNumber=="number"?[`pin${J.pinNumber}`,J.pinNumber.toString()]:[],...this.externallyAddedAliases??[]]))}isMatchingPort(J){return this.isMatchingAnyOf(J.getNameAndAliases())}getPortSelector(){var J;return`.${(J=this.parent)==null?void 0:J.props.name} > port.${this.props.name}`}getAvailablePcbLayers(){return Array.from(new Set(this.matchedComponents.flatMap(J=>J.getAvailablePcbLayers())))}_getDirectlyConnectedTraces(){return this.getSubcircuit().selectAll("trace").filter(xa=>xa._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var ba;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getNameAndAliases(),Aa=J.source_port.insert({name:la.name,pin_number:la.pinNumber,port_hints:xa,source_component_id:(ba=this.parent)==null?void 0:ba.source_component_id});this.source_port_id=Aa.source_port_id}doInitialSourceParentAttachment(){var la,xa,Aa,ba;const{db:J}=this.root;if(!((la=this.parent)!=null&&la.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(xa=this.parent)==null?void 0:xa.getString()})`);J.source_port.update(this.source_port_id,{source_component_id:(Aa=this.parent)==null?void 0:Aa.source_component_id}),this.source_component_id=(ba=this.parent)==null?void 0:ba.source_component_id}doInitialPcbPortRender(){var ba,Sa,Ma,Ra,Ia;if((ba=this.root)!=null&&ba.pcbDisabled)return;const{db:J}=this.root,{matchedComponents:la}=this;if(!((Sa=this.parent)!=null&&Sa.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(Ma=this.parent)==null?void 0:Ma.getString()})`);const xa=la.filter(La=>La.isPcbPrimitive);if(xa.length===0)return;let Aa=null;if(xa.length===1&&(Aa=xa[0]._getPcbCircuitJsonBounds().center),xa.length>1){if(!areAllPcbPrimitivesOverlapping(xa))throw new Error(`${this.getString()} has multiple non-overlapping pcb matches, unclear how to place pcb_port: ${xa.map(La=>La.getString()).join(", ")}. (Note: tscircuit core does not currently allow you to specify internally connected pcb primitives with the same port hints, try giving them different port hints and specifying they are connected externally- or file an issue)`);Aa=getCenterOfPcbPrimitives(xa)}if(Aa){const La=this.getSubcircuit(),Fa=J.pcb_port.insert({pcb_component_id:(Ra=this.parent)==null?void 0:Ra.pcb_component_id,layers:this.getAvailablePcbLayers(),subcircuit_id:(La==null?void 0:La.subcircuit_id)??void 0,pcb_group_id:((Ia=this.getGroup())==null?void 0:Ia.pcb_group_id)??void 0,...Aa,source_port_id:this.source_port_id});this.pcb_port_id=Fa.pcb_port_id}else{const La=xa[0];throw new Error(`${La.getString()} does not have a center or _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}}doInitialSchematicPortRender(){var Fa;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getPrimitiveContainer();if(!xa||!this._hasSchematicPort())return;const Aa=xa._getGlobalSchematicPositionBeforeLayout(),ba=this._getGlobalSchematicPositionBeforeLayout();let Sa=null;const Ma=xa._getSchematicBoxDimensions();Ma&&la.pinNumber!==void 0&&(Sa=Ma.getPortPositionByPinNumber(la.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&J.schematic_debug_object.insert({shape:"rect",center:ba,size:{width:.1,height:.1},label:"obstacle"}),Sa!=null&&Sa.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[Sa.side]:this.facingDirection=getRelativeDirection(Aa,ba);const Ra=J.source_port.get(this.source_port_id);let Ia;for(const ka of(Ra==null?void 0:Ra.port_hints)??[])ka.match(/^(pin)?\d+$/)||(Ia=ka);const La=J.schematic_port.insert({schematic_component_id:(Fa=this.parent)==null?void 0:Fa.schematic_component_id,center:ba,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:Sa==null?void 0:Sa.side,pin_number:la.pinNumber,true_ccw_index:Sa==null?void 0:Sa.trueIndex,display_pin_label:Ia});this.schematic_port_id=La.schematic_port_id}_setPositionFromLayout(J){const{db:la}=this.root;this.pcb_port_id&&la.pcb_port.update(this.pcb_port_id,{x:J.x,y:J.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(J=>J.isPcbPrimitive)}},getPinNumberFromLabels=ua=>{const J=ua.find(la=>/^(pin)?\d+$/.test(la));return J?Number.parseInt(J.replace(/^pin/,"")):null};function getPortFromHints(ua,J){var ba;const la=getPinNumberFromLabels(ua);if(!la)return null;const Aa=[...ua.filter(Sa=>Sa.toString()!==la.toString()&&Sa!==`pin${la}`),...((ba=J==null?void 0:J.additionalAliases)==null?void 0:ba[`pin${la}`])??[]];return new Port({pinNumber:la,aliases:Aa})}var hasExplicitPinMapping=ua=>{for(const J of["leftSide","rightSide","topSide","bottomSide"])if(J in ua&&typeof ua[J]=="number")throw new Error(`A number was specified for "${J}", you probably meant to use "size" not "side"`);return"leftSide"in ua||"rightSide"in ua||"topSide"in ua||"bottomSide"in ua},getSizeOfSidesFromPortArrangement=ua=>{var ba,Sa,Ma,Ra;if(hasExplicitPinMapping(ua))return{leftSize:((ba=ua.leftSide)==null?void 0:ba.pins.length)??0,rightSize:((Sa=ua.rightSide)==null?void 0:Sa.pins.length)??0,topSize:((Ma=ua.topSide)==null?void 0:Ma.pins.length)??0,bottomSize:((Ra=ua.bottomSide)==null?void 0:Ra.pins.length)??0};const{leftSize:J=0,rightSize:la=0,topSize:xa=0,bottomSize:Aa=0}=ua;return{leftSize:J,rightSize:la,topSize:xa,bottomSize:Aa}};function isExplicitPinMappingArrangement(ua){return ua.leftSide!==void 0}var getAllDimensionsForSchematicBox=ua=>{var il,nl,sl,ll,dl,gl,_l,vl;const J=ua.portDistanceFromEdge??.4;let la=ua.schPortArrangement?getSizeOfSidesFromPortArrangement(ua.schPortArrangement):null;const xa={left:0,right:0,top:0,bottom:0};let Aa=ua.pinCount??null;if(Aa===null)if(la)Aa=la.leftSize+la.rightSize+la.topSize;else throw new Error("Could not determine pin count for the schematic box");if(Aa&&!la){const Cl=Math.floor(Aa/2);la={leftSize:Aa-Cl,rightSize:Cl,topSize:0,bottomSize:0}}la||(la={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const ba=({side:Cl,sideIndex:Ll,truePinIndex:Il})=>{var sc,Kl,Gl,kl;if(!ua.schPortArrangement||!isExplicitPinMappingArrangement(ua.schPortArrangement))return Il+1;const Fl={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[Cl],Ol=((Kl=(sc=ua.schPortArrangement)==null?void 0:sc[`${Cl}Side`])==null?void 0:Kl.direction)??Fl,ql=(kl=(Gl=ua.schPortArrangement)==null?void 0:Gl[`${Cl}Side`])==null?void 0:kl.pins;let rc=Ll;return Ol!==Fl&&(rc=ql.length-Ll-1),parsePinNumberFromLabelsOrThrow(ql[rc],ua.pinLabels)},Sa=[];let Ma=0,Ra=0;for(let Cl=0;Cl<la.leftSize;Cl++){const Ll=ba({side:"left",sideIndex:Cl,truePinIndex:Ra}),Il=((il=ua.numericSchPinStyle)==null?void 0:il[`pin${Ll}`])??((nl=ua.numericSchPinStyle)==null?void 0:nl[Ll]);Il!=null&&Il.topMargin&&(Ma+=Il.topMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"left",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.bottomMargin&&(Ma+=Il.bottomMargin),Cl===la.leftSize-1?xa.left=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Cl=0;Cl<la.bottomSize;Cl++){const Ll=ba({side:"bottom",sideIndex:Cl,truePinIndex:Ra}),Il=((sl=ua.numericSchPinStyle)==null?void 0:sl[`pin${Ll}`])??((ll=ua.numericSchPinStyle)==null?void 0:ll[Ll]);Il!=null&&Il.leftMargin&&(Ma+=Il.leftMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"bottom",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.rightMargin&&(Ma+=Il.rightMargin),Cl===la.bottomSize-1?xa.bottom=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Cl=0;Cl<la.rightSize;Cl++){const Ll=ba({side:"right",sideIndex:Cl,truePinIndex:Ra}),Il=((dl=ua.numericSchPinStyle)==null?void 0:dl[`pin${Ll}`])??((gl=ua.numericSchPinStyle)==null?void 0:gl[Ll]);Il!=null&&Il.bottomMargin&&(Ma+=Il.bottomMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"right",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.topMargin&&(Ma+=Il.topMargin),Cl===la.rightSize-1?xa.right=Ma:Ma+=ua.schPinSpacing,Ra++}Ma=0;for(let Cl=0;Cl<la.topSize;Cl++){const Ll=ba({side:"top",sideIndex:Cl,truePinIndex:Ra}),Il=((_l=ua.numericSchPinStyle)==null?void 0:_l[`pin${Ll}`])??((vl=ua.numericSchPinStyle)==null?void 0:vl[Ll]);Il!=null&&Il.rightMargin&&(Ma+=Il.rightMargin),Sa.push({trueIndex:Ra,pinNumber:Ll,side:"top",distanceFromOrthogonalEdge:Ma}),Il!=null&&Il.leftMargin&&(Ma+=Il.leftMargin),Cl===la.topSize-1?xa.top=Ma:Ma+=ua.schPinSpacing,Ra++}let Ia=ua.schWidth;Ia||(Ia=Math.max(xa.top+ua.schPinSpacing*2,xa.bottom+ua.schPinSpacing*2));const La=ua.pinLabels?Math.max(...Object.values(ua.pinLabels).map(Cl=>Cl.length*.1)):0,Fa=La>0?1.1:0;Ia=Math.max(Ia,La+Fa);let ka=ua.schHeight;ka||(ka=Math.max(xa.left+ua.schPinSpacing*2,xa.right+ua.schPinSpacing*2));const el={left:{x:-Ia/2-J,y:xa.left/2},bottom:{x:-xa.bottom/2,y:-ka/2-J},right:{x:Ia/2+J,y:-xa.right/2},top:{x:xa.top/2,y:ka/2+J}},tl={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},rl=Sa.map(Cl=>{const{distanceFromOrthogonalEdge:Ll,side:Il}=Cl,Fl=el[Il],Ol=tl[Il];return{x:Fl.x+Ll*Ol.x,y:Fl.y+Ll*Ol.y,...Cl}});return{getPortPositionByPinNumber(Cl){const Ll=rl.find(Il=>Il.pinNumber.toString()===Cl.toString());return Ll||null},getSize(){return{width:Ia,height:ka}},getSizeIncludingPins(){return{width:Ia+(la.leftSize||la.rightSize?.4:0),height:ka+(la.topSize||la.bottomSize?.4:0)}},pinCount:Aa}},debug2$1=Debug$1("tscircuit:core:footprint"),Footprint=class extends PrimitiveComponent{get config(){return{componentName:"Footprint",zodProps:footprintProps}}doInitialPcbFootprintLayout(){var Fa,ka,el,tl,rl;if((Fa=this.root)!=null&&Fa.pcbDisabled)return;const ua=this.children.filter(il=>il.componentName==="Constraint");if(ua.length===0)return;const{isFlipped:J}=this._getPcbPrimitiveFlippedHelpers(),la=il=>J&&"left"in il&&"right"in il?{...il,left:il.right,right:il.left}:il,xa=ua.flatMap(il=>il._getAllReferencedComponents().componentsWithSelectors).map(({component:il,selector:nl,componentSelector:sl,edge:ll})=>({component:il,selector:nl,componentSelector:sl,edge:ll,bounds:il._getPcbCircuitJsonBounds()}));if(xa.some(il=>il.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function Aa(il){return xa.find(({selector:nl})=>nl===il)}const ba=new Solver,Sa={};function Ma(il){return il in Sa||(Sa[il]=new Variable(il),ba.addEditVariable(Sa[il],Strength.weak)),Sa[il]}for(const{selector:il,bounds:nl}of xa){const sl=Ma(`${il}_x`),ll=Ma(`${il}_y`);ba.suggestValue(sl,nl.center.x),ba.suggestValue(ll,nl.center.y)}for(const il of ua){const nl=il._parsedProps;if("xDist"in nl){const{xDist:sl,left:ll,right:dl,edgeToEdge:gl,centerToCenter:_l}=la(nl),vl=Ma(`${ll}_x`),Cl=Ma(`${dl}_x`),Ll=(ka=Aa(ll))==null?void 0:ka.bounds,Il=(el=Aa(dl))==null?void 0:el.bounds;if(_l){const Fl=new Expression(Cl,[-1,vl]);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.xDist,Strength.required))}else if(gl){const Fl=new Expression(Cl,-Il.width/2,[-1,vl],-Ll.width/2);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.xDist,Strength.required))}}else if("yDist"in nl){const{yDist:sl,top:ll,bottom:dl,edgeToEdge:gl,centerToCenter:_l}=nl,vl=Ma(`${ll}_y`),Cl=Ma(`${dl}_y`),Ll=(tl=Aa(ll))==null?void 0:tl.bounds,Il=(rl=Aa(dl))==null?void 0:rl.bounds;if(_l){const Fl=new Expression(vl,[-1,Cl]);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.yDist,Strength.required))}else if(gl){const Fl=new Expression(vl,Ll.height/2,[-1,Cl],-Il.height/2);ba.addConstraint(new Constraint(Fl,Operator.Eq,nl.yDist,Strength.required))}}else if("sameY"in nl){const{for:sl}=nl;if(sl.length<2)continue;const ll=sl.map(gl=>Ma(`${gl}_y`)),dl=new Expression(...ll.slice(1));ba.addConstraint(new Constraint(dl,Operator.Eq,ll[0],Strength.required))}else if("sameX"in nl){const{for:sl}=nl;if(sl.length<2)continue;const ll=sl.map(gl=>Ma(`${gl}_x`)),dl=new Expression(...ll.slice(1));ba.addConstraint(new Constraint(dl,Operator.Eq,ll[0],Strength.required))}}ba.updateVariables(),debug2$1.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(Sa).map(([il,nl])=>({var:il,val:nl.value()}))));const Ra={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:il,bounds:{width:nl,height:sl}}of xa){const ll=Ma(`${il}_x`),dl=Ma(`${il}_y`),gl=ll.value()-nl/2,_l=ll.value()+nl/2,vl=dl.value()+sl/2,Cl=dl.value()-sl/2;Ra.left=Math.min(Ra.left,gl),Ra.right=Math.max(Ra.right,_l),Ra.top=Math.max(Ra.top,vl),Ra.bottom=Math.min(Ra.bottom,Cl)}const Ia={x:-(Ra.right+Ra.left)/2,y:-(Ra.top+Ra.bottom)/2},La=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();Ia.x+=La.x,Ia.y+=La.y;for(const{component:il,selector:nl}of xa){const sl=Ma(`${nl}_x`),ll=Ma(`${nl}_y`);il._setPositionFromLayout({x:sl.value()+Ia.x,y:ll.value()+Ia.y})}}},getNumericSchPinStyle=(ua,J)=>{if(!ua)return;const la={};for(const[xa,Aa]of Object.entries(ua)){const ba=parsePinNumberFromLabelsOrThrow(xa,J),Sa={leftMargin:Aa.marginLeft??Aa.leftMargin,rightMargin:Aa.marginRight??Aa.rightMargin,topMargin:Aa.marginTop??Aa.topMargin,bottomMargin:Aa.marginBottom??Aa.bottomMargin};la[`pin${ba}`]={...la[`pin${ba}`],...Sa}}return la},debug3=Debug$1("tscircuit:core"),rotation3=z$3.object({x:rotation$4,y:rotation$4,z:rotation$4}),NormalComponent=class extends PrimitiveComponent{constructor(J){super(J);jp(this,"reactSubtrees",[]);jp(this,"_impliedFootprint");jp(this,"isPrimitiveContainer",!0);jp(this,"_asyncSupplierPartNumbers");jp(this,"pcb_missing_footprint_error_id");this._addChildrenFromStringFootprint(),this.initPorts()}get defaultInternallyConnectedPinNames(){return[]}get internallyConnectedPinNames(){return this._parsedProps.internallyConnectedPins??this.defaultInternallyConnectedPinNames}initPorts(J={}){var Sa,Ma,Ra,Ia,La,Fa,ka,el,tl,rl;if((Sa=this.root)!=null&&Sa.schematicDisabled)return;const{config:la}=this,xa=[],Aa=this._getSchematicPortArrangement();if(Aa&&!this._parsedProps.pinLabels){for(const sl in Aa){const ll=Aa[sl].pins;if(Array.isArray(ll))for(const dl of ll){const gl=parsePinNumberFromLabelsOrThrow(dl,this._parsedProps.pinLabels);xa.push(new Port({pinNumber:gl,aliases:((Ma=J.additionalAliases)==null?void 0:Ma[`pin${gl}`])??[]},{originDescription:`schPortArrangement:${sl}`}))}}const il=["left","right","top","bottom"];let nl=1;for(const sl of il){const ll=Aa[`${sl}Size`];for(let dl=0;dl<ll;dl++)xa.push(new Port({pinNumber:nl++,aliases:((Ra=J.additionalAliases)==null?void 0:Ra[`pin${nl}`])??[]},{originDescription:`schPortArrangement:${sl}`}))}}const ba=this._parsedProps.pinLabels;if(ba)for(let[il,nl]of Object.entries(ba)){il=il.replace("pin","");let sl=xa.find(gl=>gl._parsedProps.pinNumber===Number(il));const ll=Array.isArray(nl)?nl[0]:nl,dl=Array.isArray(nl)?nl.slice(1):[];sl?(sl.externallyAddedAliases.push(ll,...dl),sl.props.name=ll):(sl=new Port({pinNumber:parseInt(il),name:ll,aliases:[...dl,...((Ia=J.additionalAliases)==null?void 0:Ia[`pin${parseInt(il)}`])??[]]},{originDescription:`pinLabels:pin${il}`}),xa.push(sl))}if(la.schematicSymbolName){const il=symbols_index_default$1[this._getSchematicSymbolNameOrThrow()];if(!il)return;for(const nl of il.ports){const sl=getPinNumberFromLabels(nl.labels);if(!sl)continue;const ll=getPortFromHints(nl.labels.concat(((La=J.additionalAliases)==null?void 0:La[`pin${sl}`])??[]));ll&&(ll.originDescription=`schematicSymbol:labels[0]:${nl.labels[0]}`,ll.schematicSymbolPortDef=nl,xa.push(ll))}this.addAll(xa)}if(!this._getSchematicPortArrangement()){const il=this.getPortsFromFootprint(J);for(const nl of il)xa.some(sl=>sl.isMatchingAnyOf(nl.getNameAndAliases()))||xa.push(nl)}for(let il=1;il<=(J.pinCount??this._getPinCount());il++){if(!Aa||xa.find(sl=>sl._parsedProps.pinNumber===il))continue;let nl=[...((Fa=Aa.leftSide)==null?void 0:Fa.pins)??[],...((ka=Aa.rightSide)==null?void 0:ka.pins)??[],...((el=Aa.topSide)==null?void 0:el.pins)??[],...((tl=Aa.bottomSide)==null?void 0:tl.pins)??[]].map(sl=>parsePinNumberFromLabelsOrThrow(sl,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(sl=>sl in Aa)&&(nl=Array.from({length:this._getPinCount()},(sl,ll)=>ll+1)),nl.includes(il)&&xa.push(new Port({pinNumber:il,aliases:((rl=J.additionalAliases)==null?void 0:rl[`pin${il}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${il}`}))}xa.length>0&&this.addAll(xa)}_getImpliedFootprintString(){return null}_addChildrenFromStringFootprint(){var la;let{footprint:J}=this.props;if(J??(J=(la=this._getImpliedFootprintString)==null?void 0:la.call(this)),!!J&&typeof J=="string"){const xa=fp$1.string(J).soup(),Aa=createComponentsFromSoup(xa);this.addAll(Aa)}}get portMap(){return new Proxy({},{get:(J,la)=>{const xa=this.children.find(Aa=>Aa.componentName==="Port"&&Aa.isMatchingNameOrAlias(la));if(!xa)throw new Error(`There was an issue finding the port "${la.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return xa}})}getInstanceForReactElement(J){for(const la of this.reactSubtrees)if(la.element===J)return la.component;return null}doInitialSourceRender(){const J=this.config.sourceFtype;if(!J)return;const{db:la}=this.root,{_parsedProps:xa}=this,Aa=la.source_component.insert({ftype:J,name:xa.name,manufacturer_part_number:xa.manufacturerPartNumber??xa.mfn,supplier_part_numbers:xa.supplierPartNumbers});this.source_component_id=Aa.source_component_id}doInitialSchematicComponentRender(){var xa;if((xa=this.root)!=null&&xa.schematicDisabled)return;const{schematicSymbolName:J}=this.config;if(J)return this._doInitialSchematicComponentRenderWithSymbol();if(this._getSchematicBoxDimensions())return this._doInitialSchematicComponentRenderWithSchematicBoxDimensions()}_getSchematicSymbolDisplayValue(){}_getInternallyConnectedPins(){if(this.internallyConnectedPinNames.length===0)return[];const J=[];for(const la of this.internallyConnectedPinNames){const xa=[];for(const Aa of la)xa.push(this.portMap[Aa]);J.push(xa)}return J}_doInitialSchematicComponentRenderWithSymbol(){var Sa;if((Sa=this.root)!=null&&Sa.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getSchematicSymbolNameOrThrow(),Aa=symbols_index_default$1[xa],ba=this._getGlobalSchematicPositionBeforeLayout();if(Aa){const Ma=J.schematic_component.insert({center:ba,rotation:la.schRotation??0,size:Aa.size,source_component_id:this.source_component_id,symbol_name:xa,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=Ma.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var Fa;if((Fa=this.root)!=null&&Fa.schematicDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this._getSchematicBoxDimensions(),Aa={};if(Array.isArray(la.pinLabels))la.pinLabels.forEach((ka,el)=>{Aa[String(el+1)]=ka});else for(const[ka,el]of Object.entries(la.pinLabels??{}))Aa[ka]=Array.isArray(el)?el[0]:el;const ba=this._getGlobalSchematicPositionBeforeLayout(),Sa=this._getSchematicPortArrangement(),Ma=J.schematic_component.insert({center:ba,rotation:la.schRotation??0,size:xa.getSize(),port_arrangement:underscorifyPortArrangement(Sa),pin_spacing:la.schPinSpacing??.2,pin_styles:underscorifyPinStyles(la.schPinStyle,la.pinLabels),port_labels:Aa,source_component_id:this.source_component_id}),Ra=(Sa==null?void 0:Sa.topSide)!==void 0||(Sa==null?void 0:Sa.bottomSide)!==void 0,Ia=xa==null?void 0:xa.getSize().width,La=xa==null?void 0:xa.getSize().height;J.schematic_text.insert({text:la.manufacturerPartNumber??"",schematic_component_id:Ma.schematic_component_id,anchor:"left",rotation:0,position:{x:Ra?ba.x+(Ia??0)/2+.1:ba.x-(Ia??0)/2,y:Ra?ba.y+(La??0)/2+.35:ba.y-(La??0)/2-.13},color:"#006464"}),J.schematic_text.insert({text:la.name??"",schematic_component_id:Ma.schematic_component_id,anchor:"left",rotation:0,position:{x:Ra?ba.x+(Ia??0)/2+.1:ba.x-(Ia??0)/2,y:Ra?ba.y+(La??0)/2+.55:ba.y+(La??0)/2+.13},color:"#006464"}),this.schematic_component_id=Ma.schematic_component_id}doInitialPcbComponentRender(){var Sa;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this,xa=this.getSubcircuit(),Aa=J.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:la.layer??"top",rotation:la.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:xa.subcircuit_id??void 0});if(!la.footprint&&!this.isGroup){const Ma=J.pcb_missing_footprint_error.insert({message:`No footprint found for component: ${this.getString()}`,source_component_id:`${this.source_component_id}`,error_type:"pcb_missing_footprint_error"});this.pcb_missing_footprint_error_id=Ma.pcb_missing_footprint_error_id}this.pcb_component_id=Aa.pcb_component_id;const ba=this.getSubcircuit()._getPcbManualPlacementForComponent(this);this.props.pcbX!==void 0&&this.props.pcbY!==void 0&&ba&&this.renderError({type:"pcb_manual_edit_conflict_error",message:`${this.getString()} has both manual placement and explicit coordinates. pcbX and pcbY will be used. Remove pcbX/pcbY or clear the manual placement.`,pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id})}doInitialPcbComponentSizeCalculation(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled||!this.pcb_component_id)return;const{db:J}=this.root,la=getBoundsOfPcbComponents(this.children);if(la.width===0||la.height===0)return;const xa={x:(la.minX+la.maxX)/2,y:(la.minY+la.maxY)/2};J.pcb_component.update(this.pcb_component_id,{center:xa,width:la.width,height:la.height})}_renderReactSubtree(J){return{element:J,component:createInstanceFromReactElement(J)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){if(reactExports.isValidElement(this.props.footprint)){if(this.reactSubtrees.some(la=>la.element===this.props.footprint))return;const J=this._renderReactSubtree(this.props.footprint);this.reactSubtrees.push(J),this.add(J.component)}}_hasExistingPortExactly(J){return this.children.filter(xa=>xa.componentName==="Port").some(xa=>{const Aa=J.getNameAndAliases(),ba=xa.getNameAndAliases();return Aa.length===ba.length&&Aa.every(Sa=>ba.includes(Sa))})}add(J){let la;if(reactExports.isValidElement(J)){const xa=this._renderReactSubtree(J);this.reactSubtrees.push(xa),la=xa.component}else la=J;if(la.componentName==="Port"){if(this._hasExistingPortExactly(la))return;const Aa=this.children.filter(ba=>ba.componentName==="Port").find(ba=>ba.isMatchingAnyOf(la.getNameAndAliases()));Aa&&debug3(`Similar ports added. Port 1: ${Aa}, Port 2: ${la}`)}super.add(la)}getPortsFromFootprint(J){let{footprint:la}=this.props;if((!la||reactExports.isValidElement(la))&&(la=this.children.find(Aa=>Aa.componentName==="Footprint")),typeof la=="string"){const Aa=fp$1.string(la).soup(),ba=[];for(const Sa of Aa)if("port_hints"in Sa&&Sa.port_hints){const Ma=getPortFromHints(Sa.port_hints,J);if(!Ma)continue;Ma.originDescription=`footprint:string:${la}:port_hints[0]:${Sa.port_hints[0]}`,ba.push(Ma)}return ba}if(!reactExports.isValidElement(la)&&la&&la.componentName==="Footprint"){const Aa=la;let ba=1;const Sa=[];for(const Ma of Aa.children){if(!Ma.props.portHints)continue;let Ra=Ma.props.portHints;Ra.some(Fa=>Fa.startsWith("pin"))||(Ra=[...Ra,`pin${ba}`]),ba++;const La=getPortFromHints(Ra);La&&(La.originDescription=`footprint:${la}`,Sa.push(La))}return Sa}const xa=[];if(!la){for(const Aa of this.children)if(Aa.props.portHints&&Aa.isPcbPrimitive){const ba=getPortFromHints(Aa.props.portHints);ba&&xa.push(ba)}}return xa}getPortsFromSchematicSymbol(){var Aa;if((Aa=this.root)!=null&&Aa.schematicDisabled)return[];const{config:J}=this;if(!J.schematicSymbolName)return[];const la=symbols_index_default$1[J.schematicSymbolName];if(!la)return[];const xa=[];for(const ba of la.ports){const Sa=getPortFromHints(ba.labels);Sa&&(Sa.schematicSymbolPortDef=ba,xa.push(Sa))}return xa}_createNetsFromProps(J){createNetsFromProps(this,J)}_getPcbCircuitJsonBounds(){const{db:J}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const la=J.pcb_component.get(this.pcb_component_id);return{center:{x:la.center.x,y:la.center.y},bounds:{left:la.center.x-la.width/2,top:la.center.y-la.height/2,right:la.center.x+la.width/2,bottom:la.center.y+la.height/2},width:la.width,height:la.height}}_getPinCountFromSchematicPortArrangement(){const J=this._getSchematicPortArrangement();if(!J)return 0;if(!isExplicitPinMappingArrangement(J))return(J.leftSize??J.leftPinCount??0)+(J.rightSize??J.rightPinCount??0)+(J.topSize??J.topPinCount??0)+(J.bottomSize??J.bottomPinCount??0);const{leftSide:xa,rightSide:Aa,topSide:ba,bottomSide:Sa}=J;return Math.max(...(xa==null?void 0:xa.pins)??[],...(Aa==null?void 0:Aa.pins)??[],...(ba==null?void 0:ba.pins)??[],...(Sa==null?void 0:Sa.pins)??[])}_getPinCount(){return this._getSchematicPortArrangement()?this._getPinCountFromSchematicPortArrangement():this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPinArrangement??this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:J}=this,la=this._getPinCount(),xa=J.schPinSpacing??.2;return getAllDimensionsForSchematicBox({schWidth:J.schWidth,schHeight:J.schHeight,schPinSpacing:xa,numericSchPinStyle:getNumericSchPinStyle(J.schPinStyle,J.pinLabels),pinCount:la,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:J.pinLabels})}doInitialCadModelRender(){var Ia;const{db:J}=this.root,{boardThickness:la=0}=((Ia=this.root)==null?void 0:Ia._getBoard())??{},xa=this._parsedProps.cadModel;if(!this.pcb_component_id||!xa&&!this.props.footprint)return;const Aa=this._getPcbCircuitJsonBounds(),ba=J.pcb_component.get(this.pcb_component_id);if(typeof xa=="string")throw new Error("String cadModel not yet implemented");const Sa=rotation3.parse({x:0,y:0,z:typeof(xa==null?void 0:xa.rotationOffset)=="number"?xa.rotationOffset:0,...typeof(xa==null?void 0:xa.rotationOffset)=="object"?xa.rotationOffset??{}:{}}),Ma=point3$3.parse({x:0,y:0,z:0,...typeof(xa==null?void 0:xa.positionOffset)=="object"?xa.positionOffset:{}}),Ra=this.props.layer==="bottom"?"bottom":"top";J.cad_component.insert({position:{x:Aa.center.x+Ma.x,y:Aa.center.y+Ma.y,z:(Ra==="bottom"?-la/2:la/2)+Ma.z},rotation:{x:Sa.x,y:(Ra==="top"?0:180)+Sa.y,z:((ba==null?void 0:ba.rotation)??0)+(Ra==="bottom"?180:0)+Sa.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(xa??{})?this._addCachebustToModelUrl(xa.stlUrl):void 0,model_obj_url:"objUrl"in(xa??{})?this._addCachebustToModelUrl(xa.objUrl):void 0,model_jscad:"jscad"in(xa??{})?xa.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!xa?this.props.footprint:void 0})}_addCachebustToModelUrl(J){var xa;if(!J||!J.includes("modelcdn.tscircuit.com"))return J;const la=((xa=this.root)==null?void 0:xa.getClientOrigin())??"";return`${J}${J.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(la)}`}doInitialPartsEngineRender(){const J=this.getInheritedProperty("partsEngine");if(!J)return;const{db:la}=this.root,xa=la.source_component.get(this.source_component_id);if(!xa||xa.supplier_part_numbers)return;let Aa;this.props.footprint&&typeof this.props.footprint=="string"&&(Aa=this.props.footprint);const ba=J.findPart({sourceComponent:xa,footprinterString:Aa});if(!(ba instanceof Promise)){la.source_component.update(this.source_component_id,{supplier_part_numbers:ba});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await ba,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){const{db:J}=this.root,la=J.source_component.get(this.source_component_id);if(la&&!la.supplier_part_numbers&&this._asyncSupplierPartNumbers){J.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}},getSimpleRouteJsonFromTracesAndDb=({db:ua,traces:J,minTraceWidth:la=.1})=>{const Aa=getObstaclesFromSoup([...ua.pcb_component.list(),...ua.pcb_smtpad.list(),...ua.pcb_plated_hole.list()]).flatMap(Ma=>[{x:Ma.center.x-Ma.width/2,y:Ma.center.y-Ma.height/2},{x:Ma.center.x+Ma.width/2,y:Ma.center.y+Ma.height/2}]),ba={minX:Math.min(...Aa.map(Ma=>Ma.x))-1,maxX:Math.max(...Aa.map(Ma=>Ma.x))+1,minY:Math.min(...Aa.map(Ma=>Ma.y))-1,maxY:Math.max(...Aa.map(Ma=>Ma.y))+1},Sa=J.map(Ma=>{const Ra=Ma._findConnectedPorts();return!Ra.allPortsFound||Ra.ports.length<2?null:{name:Ma.source_trace_id??"",pointsToConnect:Ra.ports.map(Ia=>{const La=Ia._getGlobalPcbPositionBeforeLayout();return{x:La.x,y:La.y,layer:Ia.getAvailablePcbLayers()[0]??"top"}})}}).filter(Ma=>Ma!==null);return{bounds:ba,obstacles:[],connections:Sa,layerCount:2,minTraceWidth:la}},TraceHint=class extends PrimitiveComponent{constructor(){super(...arguments);jp(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:traceHintProps}}doInitialPortMatching(){this.root;const{_parsedProps:J,parent:la}=this;if(!la)return;if(la.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!la)throw new Error("TraceHint has no parent");if(!J.for){this.renderError(`TraceHint has no for property (${this})`);return}const xa=la.selectOne(J.for,{type:"port"});xa||this.renderError(`${this} could not find port for selector "${J.for}"`),this.matchedPort=xa,xa.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:J}=this,la=J.offset?[J.offset]:J.offsets;if(!la)return[];const xa=this._computePcbGlobalTransformBeforeLayout();return la.map(Aa=>({...applyToPoint(xa,Aa),via:Aa.via,to_layer:Aa.to_layer,trace_width:Aa.trace_width}))}doInitialPcbTraceHintRender(){var la,xa,Aa;if((la=this.root)!=null&&la.pcbDisabled)return;const{db:J}=this.root;J.pcb_trace_hint.insert({pcb_component_id:(xa=this.matchedPort)==null?void 0:xa.pcb_component_id,pcb_port_id:(Aa=this.matchedPort)==null?void 0:Aa.pcb_port_id,route:this.getPcbRouteHints()})}},Group$2=class extends NormalComponent{constructor(){super(...arguments);jp(this,"pcb_group_id",null);jp(this,"subcircuit_id",null);jp(this,"_hasStartedAsyncAutorouting",!1);jp(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:groupProps,componentName:"Group"}}doInitialSourceRender(){const{db:la}=this.root,xa=la.source_group.insert({name:this._parsedProps.name,is_subcircuit:this.isSubcircuit});this.subcircuit_id=`subcircuit_${xa.source_group_id}`,this.source_group_id=xa.source_group_id,la.source_group.update(xa.source_group_id,{subcircuit_id:this.subcircuit_id})}doInitialSourceParentAttachment(){var Aa,ba,Sa;const{db:la}=this.root;if(!this.isSubcircuit)return;const xa=(Sa=(ba=(Aa=this.parent)==null?void 0:Aa.getSubcircuit)==null?void 0:ba.call(Aa))==null?void 0:Sa.subcircuit_id;xa&&la.source_group.update(this.source_group_id,{parent_subcircuit_id:xa})}doInitialPcbComponentRender(){var Aa;if((Aa=this.root)!=null&&Aa.pcbDisabled)return;const{db:la}=this.root,xa=la.pcb_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this._parsedProps.name,center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,pcb_component_ids:[],source_group_id:this.source_group_id});this.pcb_group_id=xa.pcb_group_id}doInitialCreateTraceHintsFromProps(){var ba;const{_parsedProps:la}=this;this.root;const xa=la;if(!this.isSubcircuit)return;const Aa=(ba=xa.layout)==null?void 0:ba.manual_trace_hints;if(Aa)for(const Sa of Aa)this.add(new TraceHint({for:Sa.pcb_port_selector,offsets:Sa.offsets}))}_getSimpleRouteJsonFromPcbTraces(){const la=this.selectAll("trace"),{db:xa}=this.root;return getSimpleRouteJsonFromTracesAndDb({db:xa,traces:la,minTraceWidth:this._parsedProps.minTraceWidth??.1})}doInitialSourceAddConnectivityMapKey(){if(!this.isSubcircuit)return;const{db:la}=this.root,xa=this.selectAll("trace"),Aa=new ConnectivityMap$1({});Aa.addConnections(xa.map(ba=>{const Sa=la.source_trace.get(ba.source_trace_id);return Sa?[Sa.source_trace_id,...Sa.connected_source_port_ids,...Sa.connected_source_net_ids]:null}).filter(ba=>ba!==null));for(const ba of xa){if(!ba.source_trace_id)continue;const Sa=Aa.getNetConnectedToId(ba.source_trace_id);if(!Sa)continue;const{name:Ma}=this._parsedProps;ba.subcircuit_connectivity_map_key=`${Ma??`unnamedsubcircuit${this._renderId}`}_${Sa}`,la.source_trace.update(ba.source_trace_id,{subcircuit_connectivity_map_key:ba.subcircuit_connectivity_map_key})}}_areChildSubcircuitsRouted(){const la=this.selectAll("group").filter(xa=>xa.isSubcircuit);for(const xa of la)if(xa._shouldRouteAsync()&&!xa._asyncAutoroutingResult)return!1;return!0}_shouldRouteAsync(){const la=this._parsedProps;return la.autorouter==="auto-local"||la.autorouter==="auto-cloud"?!0:la.autorouter==="sequential-trace"?!1:typeof la.autorouter=="object"}async _runEffectMakeHttpAutoroutingRequest(){var Ia,La,Fa,ka;const la=Debug$1("tscircuit:core:_runEffectMakeHttpAutoroutingRequest"),xa=this._parsedProps,Aa=((Ia=xa.autorouter)==null?void 0:Ia.serverUrl)??"https://registry-api.tscircuit.com",ba=((La=xa.autorouter)==null?void 0:La.serverMode)??"job",Sa=(el,tl)=>(la("fetching",el),fetch(el,tl)),Ma=this.root.db.toArray().filter(el=>el.type.startsWith("source_")||el.type.startsWith("pcb_"));if(ba==="solve-endpoint"){if(((Fa=this.props.autorouter)==null?void 0:Fa.inputFormat)==="simplified"){const{autorouting_result:tl}=await Sa(`${Aa}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:this._getSimpleRouteJsonFromPcbTraces(),subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(rl=>rl.json());this._asyncAutoroutingResult=tl,this._markDirty("PcbTraceRender");return}const{autorouting_result:el}=await Sa(`${Aa}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:Ma,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(tl=>tl.json());this._asyncAutoroutingResult=el,this._markDirty("PcbTraceRender");return}const{autorouting_job:Ra}=await Sa(`${Aa}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:Ma,provider:"freerouting",autostart:!0,display_name:(ka=this.root)==null?void 0:ka.name,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(el=>el.json());for(;;){const{autorouting_job:el}=await Sa(`${Aa}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:Ra.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(tl=>tl.json());if(el.is_finished){const{autorouting_job_output:tl}=await Sa(`${Aa}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:Ra.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(rl=>rl.json());this._asyncAutoroutingResult={output_pcb_traces:tl.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(el.has_error)throw new Error(`Autorouting job failed: ${JSON.stringify(el.error)}`);await new Promise(tl=>setTimeout(tl,100))}}_startAsyncAutorouting(){this._hasStartedAsyncAutorouting=!0,this._queueAsyncEffect("make-http-autorouting-request",async()=>this._runEffectMakeHttpAutoroutingRequest())}doInitialPcbTraceRender(){var xa;const la=Debug$1("tscircuit:core:doInitialPcbTraceRender");if(!((xa=this.root)!=null&&xa.pcbDisabled)&&!this._shouldUseTraceByTraceRouting()){if(!this._areChildSubcircuitsRouted()){la(`[${this.getString()}] child subcircuits are not routed, skipping async autorouting until subcircuits routed`);return}la(`[${this.getString()}] no child subcircuits to wait for, initiating async routing`),this._startAsyncAutorouting()}}updatePcbTraceRender(){const la=Debug$1("tscircuit:core:updatePcbTraceRender");if(this._shouldRouteAsync()&&!this._hasStartedAsyncAutorouting){this._areChildSubcircuitsRouted()&&(la(`[${this.getString()}] child subcircuits are now routed, starting async autorouting`),this._startAsyncAutorouting());return}if(this._asyncAutoroutingResult&&!this._shouldUseTraceByTraceRouting()){if(this.root,this._asyncAutoroutingResult.output_simple_route_json){this._updatePcbTraceRenderFromSimpleRouteJson();return}if(this._asyncAutoroutingResult.output_pcb_traces){this._updatePcbTraceRenderFromPcbTraces();return}}}_updatePcbTraceRenderFromSimpleRouteJson(){const{db:la}=this.root,{traces:xa}=this._asyncAutoroutingResult.output_simple_route_json;if(xa){this.selectAll("trace");for(const Aa of xa)la.pcb_trace.insert({route:Aa.route})}}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:la}=this._asyncAutoroutingResult;if(!la)return;const{db:xa}=this.root;for(const Aa of la)xa.pcb_trace.insert(Aa)}doInitialSchematicLayout(){if(!this.isSubcircuit||!this._parsedProps.schAutoLayoutEnabled)return;const{db:xa}=this.root,Aa=this.getDescendants(),ba=[];for(const Ra of Aa)if("schematic_component_id"in Ra){const Ia=xa.schematic_component.get(Ra.schematic_component_id);if(Ia){const La=xa.schematic_port.list().filter(Fa=>Fa.schematic_component_id===Ia.schematic_component_id);ba.push(...La)}}const Sa=convertSoupToScene(xa.toArray()),Ma=ascendingCentralLrBug1(Sa);mutateSoupForScene(xa.toArray(),Ma)}_shouldUseTraceByTraceRouting(){const la=this._parsedProps;return la.autorouter==="auto-local"||la.autorouter==="sequential-trace"?!0:!la.autorouter}},Board=class extends Group$2{constructor(){super(...arguments);jp(this,"pcb_board_id",null)}get isSubcircuit(){return!0}get config(){return{componentName:"Board",zodProps:boardProps}}get boardThickness(){return 1.4}get allLayers(){return["top","bottom","inner1","inner2"]}doInitialPcbComponentRender(){var Sa,Ma;if((Sa=this.root)!=null&&Sa.pcbDisabled)return;const{db:J}=this.root,{_parsedProps:la}=this;if(!la.outline&&(!la.width||!la.height))throw new Error("Board width and height or an outline are required");let xa=la.width,Aa=la.height;if(la.outline){const Ra=la.outline.map(tl=>tl.x),Ia=la.outline.map(tl=>tl.y),La=Math.min(...Ra),Fa=Math.max(...Ra),ka=Math.min(...Ia),el=Math.max(...Ia);xa=Fa-La,Aa=el-ka}const ba=J.pcb_board.insert({center:{x:(la.pcbX??0)+(la.outlineOffsetX??0),y:(la.pcbY??0)+(la.outlineOffsetY??0)},thickness:this.boardThickness,num_layers:this.allLayers.length,width:xa,height:Aa,outline:(Ma=la.outline)==null?void 0:Ma.map(Ra=>({x:Ra.x+(la.outlineOffsetX??0),y:Ra.y+(la.outlineOffsetY??0)}))});this.pcb_board_id=ba.pcb_board_id}removePcbComponentRender(){const{db:J}=this.root;this.pcb_board_id&&(J.pcb_board.delete(this.pcb_board_id),this.pcb_board_id=null)}_computePcbGlobalTransformBeforeLayout(){return identity$3()}},stringProxy=new Proxy({},{get:(ua,J)=>J}),FTYPE=stringProxy,DirectLineRouter=class{constructor({input:ua}){jp(this,"input");this.input=ua}solveAndMapToTraces(){const ua=[];for(const J of this.input.connections){if(J.pointsToConnect.length!==2)continue;const[la,xa]=J.pointsToConnect,Aa={type:"pcb_trace",pcb_trace_id:"",route:[{route_type:"wire",x:la.x,y:la.y,layer:"top",width:.1},{route_type:"wire",x:xa.x,y:xa.y,layer:"top",width:.1}]};ua.push(Aa)}return ua}},computeObstacleBounds=ua=>{const J=Math.min(...ua.map(ba=>ba.center.x)),la=Math.max(...ua.map(ba=>ba.center.x)),xa=Math.min(...ua.map(ba=>ba.center.y)),Aa=Math.max(...ua.map(ba=>ba.center.y));return{minX:J,maxX:la,minY:xa,maxY:Aa}},LAYER_SELECTION_PREFERENCE=["top","bottom","inner1","inner2"],findPossibleTraceLayerCombinations=(ua,J=[])=>{var Ma;const la=[];if(J.length===0){const Ra=ua[0].layers;for(const Ia of Ra)la.push(...findPossibleTraceLayerCombinations(ua.slice(1),[Ia]));return la}if(ua.length===0)return[];const xa=ua[0],Aa=xa.via||xa.optional_via,ba=J[J.length-1];if(ua.length===1){const Ra=xa;return Ra.layers&&Aa?Ra.layers.map(Ia=>({layer_path:[...J,Ia]})):(Ma=Ra.layers)!=null&&Ma.includes(ba)?[{layer_path:[...J,ba]}]:[]}if(!Aa)return xa.layers&&!xa.layers.includes(ba)?[]:findPossibleTraceLayerCombinations(ua.slice(1),J.concat([ba]));const Sa=(xa.optional_via?LAYER_SELECTION_PREFERENCE:LAYER_SELECTION_PREFERENCE.filter(Ra=>Ra!==ba)).filter(Ra=>{var Ia;return!xa.layers||((Ia=xa.layers)==null?void 0:Ia.includes(Ra))});for(const Ra of Sa)la.push(...findPossibleTraceLayerCombinations(ua.slice(1),J.concat(Ra)));return la};function getDominantDirection(ua){const J={x:ua.to.x-ua.from.x,y:ua.to.y-ua.from.y},la=Math.abs(J.x),xa=Math.abs(J.y);return la>xa?J.x>0?"right":"left":J.y>0?"down":"up"}function pdist(ua,J){return Math.hypot(ua.x-J.x,ua.y-J.y)}var mergeRoutes=ua=>{if(ua.length===1)return ua[0];if(ua.some(Ra=>Ra.length===0))throw new Error("Cannot merge routes with zero length");const J=[],la=ua[0][0],xa=ua[0][ua[0].length-1],Aa=ua[1][0],ba=ua[1][ua[1].length-1],Sa=Math.min(pdist(la,Aa),pdist(la,ba)),Ma=Math.min(pdist(xa,Aa),pdist(xa,ba));Sa<Ma?J.push(...ua[0].reverse()):J.push(...ua[0]);for(let Ra=1;Ra<ua.length;Ra++){const Ia=J[J.length-1],La=ua[Ra],Fa=La[0],ka=La[La.length-1],el=pdist(Ia,Fa),tl=pdist(Ia,ka);el<tl?J.push(...La):J.push(...La.reverse())}for(let Ra=1;Ra<J.length-1;Ra++){const Ia=J[Ra-1],La=J[Ra];Ia.route_type==="wire"&&La.route_type==="wire"&&Ia.layer!==La.layer&&J.splice(Ra,0,{x:Ia.x,y:Ia.y,from_layer:Ia.layer,to_layer:La.layer,route_type:"via"})}return J};function getTraceLength(ua){let J=0;for(let la=0;la<ua.length;la++){const xa=ua[la];if(xa.route_type==="wire"){const Aa=ua[la+1];if(Aa){const ba=Aa.x-xa.x,Sa=Aa.y-xa.y;J+=Math.sqrt(ba*ba+Sa*Sa)}}else xa.route_type==="via"&&(J+=1.6)}return J}var getDistance=(ua,J)=>{const la="_getGlobalPcbPositionBeforeLayout"in ua?ua._getGlobalPcbPositionBeforeLayout():ua,xa="_getGlobalPcbPositionBeforeLayout"in J?J._getGlobalPcbPositionBeforeLayout():J;return Math.sqrt((la.x-xa.x)**2+(la.y-xa.y)**2)};function getClosest(ua,J){if(J.length===0)throw new Error("No candidates given to getClosest method");let la=J[0],xa=1/0;for(const Aa of J){const ba=getDistance(ua,Aa);ba<xa&&(la=Aa,xa=ba)}return la}var getEnteringEdgeFromDirection=ua=>({up:"bottom",down:"top",left:"right",right:"left"})[ua]??null,getStubEdges=({firstEdge:ua,firstEdgePort:J,firstDominantDirection:la,lastEdge:xa,lastEdgePort:Aa,lastDominantDirection:ba})=>{if(ua&&J)return getStubEdges({lastEdge:{from:ua.to,to:ua.from},lastEdgePort:J,lastDominantDirection:la}).reverse().map(Ma=>({from:Ma.to,to:Ma.from}));let Sa=[];if(xa&&Aa){const Ma={x:xa.to.x,y:xa.to.y};ba==="left"||ba==="right"?(Ma.x=Aa.position.x,Sa.push({from:xa.to,to:{...Ma}}),Sa.push({from:Ma,to:{...Aa.position}})):(Ma.y=Aa.position.y,Sa.push({from:xa.to,to:{...Ma}}),Sa.push({from:Ma,to:{...Aa.position}}))}return Sa=Sa.filter(Ma=>distance$3(Ma.from,Ma.to)>.01),Sa};function tryNow(ua){try{return[ua(),null]}catch(J){return[null,J]}}var getOtherSchematicTraces=({db:ua,source_trace_id:J,sameNetOnly:la,differentNetOnly:xa})=>{!la&&!xa&&(xa=!0);const Aa=ua.source_trace.get(J),ba=[];for(const Sa of ua.schematic_trace.list()){if(Sa.source_trace_id===J)continue;const Ma=ua.source_trace.get(Sa.source_trace_id),Ra=(Ma==null?void 0:Ma.subcircuit_connectivity_map_key)===Aa.subcircuit_connectivity_map_key;xa&&Ra||la&&!Ra||ba.push(Sa)}return ba},createSchematicTraceCrossingSegments=({edges:ua,otherEdges:J})=>{const la=[...ua];for(let xa=0;xa<la.length;xa++){if(xa>2e3)throw new Error("Over 2000 iterations spent inside createSchematicTraceCrossingSegments, you have triggered an infinite loop, please report this!");const Aa=la[xa],ba=Math.abs(Aa.from.x-Aa.to.x)<.01?"vertical":Aa.from.y===Aa.to.y?"horizontal":"not-orthogonal";if(ba==="not-orthogonal")continue;const Sa=[];for(const rl of J){const il=rl.from.x===rl.to.x?"vertical":rl.from.y===rl.to.y?"horizontal":"not-orthogonal";if(il==="not-orthogonal"||ba===il)continue;if(doesLineIntersectLine([Aa.from,Aa.to],[rl.from,rl.to],{lineThickness:.01})){const sl=ba==="vertical"?Aa.from.x:rl.from.x,ll=ba==="vertical"?rl.from.y:Aa.from.y,dl={x:sl,y:ll};Sa.push({otherEdge:rl,crossingPoint:dl,distanceFromEdgeFrom:distance$3(Aa.from,dl)})}}if(Sa.length===0)continue;let Ma=Sa[0];for(const rl of Sa)rl.distanceFromEdgeFrom<Ma.distanceFromEdgeFrom&&(Ma=rl);const Ra=Ma.crossingPoint,Ia=.075;if(Ra.x===Aa.from.x&&Ra.y===Aa.from.y)continue;const La=getUnitVectorFromPointAToB(Aa.from,Ra),Fa={x:Ra.x-La.x*Ia/2,y:Ra.y-La.y*Ia/2},ka={x:Ra.x+La.x*Ia/2,y:Ra.y+La.y*Ia/2},el=distance$3(ka,Aa.to)<Ia,tl=[{from:Aa.from,to:Fa},{from:Fa,to:ka,is_crossing:!0},{from:ka,to:Aa.to}];la.splice(xa,1,...tl),xa+=tl.length-2,el&&xa++}return la},getIntersectionPoint=(ua,J)=>{if(ua.from.x===ua.to.x&&J.from.x===J.to.x)return null;if(ua.from.x===ua.to.x){const La=ua.from.x,Fa=(J.to.y-J.from.y)/(J.to.x-J.from.x),ka=J.from.y-Fa*J.from.x,el=Fa*La+ka;return La>=Math.min(J.from.x,J.to.x)&&La<=Math.max(J.from.x,J.to.x)&&el>=Math.min(J.from.y,J.to.y)&&el<=Math.max(J.from.y,J.to.y)?{x:La,y:el}:null}if(J.from.x===J.to.x){const La=J.from.x,Fa=(ua.to.y-ua.from.y)/(ua.to.x-ua.from.x),ka=ua.from.y-Fa*ua.from.x,el=Fa*La+ka;return La>=Math.min(ua.from.x,ua.to.x)&&La<=Math.max(ua.from.x,ua.to.x)&&el>=Math.min(ua.from.y,ua.to.y)&&el<=Math.max(ua.from.y,ua.to.y)?{x:La,y:el}:null}const la=(ua.to.y-ua.from.y)/(ua.to.x-ua.from.x),xa=ua.from.y-la*ua.from.x,Aa=(J.to.y-J.from.y)/(J.to.x-J.from.x),ba=J.from.y-Aa*J.from.x;if(la===Aa)return null;const Sa=(ba-xa)/(la-Aa),Ma=la*Sa+xa,Ra=Sa>=Math.min(ua.from.x,ua.to.x)&&Sa<=Math.max(ua.from.x,ua.to.x)&&Ma>=Math.min(ua.from.y,ua.to.y)&&Ma<=Math.max(ua.from.y,ua.to.y),Ia=Sa>=Math.min(J.from.x,J.to.x)&&Sa<=Math.max(J.from.x,J.to.x)&&Ma>=Math.min(J.from.y,J.to.y)&&Ma<=Math.max(J.from.y,J.to.y);return Ra&&Ia?{x:Sa,y:Ma}:null},createSchematicTraceJunctions=({edges:ua,db:J,source_trace_id:la})=>{const xa=getOtherSchematicTraces({db:J,source_trace_id:la,sameNetOnly:!0}).flatMap(Aa=>Aa.edges);for(const Aa of ua)for(const ba of xa){const Sa=getIntersectionPoint(Aa,ba);if(Sa)return`${Sa.x}${Sa.y}`,[{x:Sa.x,y:Sa.y}]}return[]},pushEdgesOfSchematicTraceToPreventOverlap=({edges:ua,db:J,source_trace_id:la})=>{J.source_trace.get(la);const xa=getOtherSchematicTraces({db:J,source_trace_id:la,differentNetOnly:!0}).flatMap(ba=>ba.edges),Aa=ba=>{const{from:Sa,to:Ma}=ba;return Sa.x===Ma.x?"vertical":"horizontal"};for(const ba of ua){const Sa=Aa(ba),Ma=()=>xa.find(Ia=>Aa(Ia)===Sa&&doesLineIntersectLine([ba.from,ba.to],[Ia.from,Ia.to],{lineThickness:.05}));let Ra=Ma();for(;Ra;)Sa==="horizontal"?(ba.from.y+=.1,ba.to.y+=.1):(ba.from.x+=.1,ba.to.x+=.1),Ra=Ma()}},countComplexElements=(ua,J)=>{let la=0;la+=ua.length??0,la+=J.filter(xa=>xa.is_crossing).length;for(let xa=1;xa<J.length;xa++){const Aa=J[xa-1],ba=J[xa],Sa=Math.abs(Aa.from.x-Aa.to.x)<.01,Ma=Math.abs(ba.from.x-ba.to.x)<.01;Sa!==Ma&&la++}return la},calculateOffsets=ua=>{var Ma,Ra;const J={left:{x:-.5,y:0},up:{x:.5,y:.5},right:{x:.5,y:0},down:{x:0,y:-.5}}[ua.facingDirection],la=(Ma=ua.parent)!=null&&Ma.config.shouldRenderAsSchematicBox?3:1,xa=(Ra=ua.parent)!=null&&Ra.config.shouldRenderAsSchematicBox&&(ua.facingDirection==="left"||ua.facingDirection==="right")?3:1,Aa=J.x,ba=J.y,Sa=ua.facingDirection==="up"?.5:0;return{schBoxVertOffset:la,schBoxHorzOffset:xa,horzPortDirection:Aa,vertPortDirectionOffset:ba,handleUp:Sa}},createDownwardNetLabelGroundSymbol=({fromPort:ua,toPort:J,fromAnchorPos:la,toAnchorPos:xa,schDisplayLabel:Aa,source_trace_id:ba},{db:Sa})=>{const Ma=calculateOffsets(ua);Sa.schematic_net_label.insert({anchor_side:"top",center:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset},source_net_id:ua.source_port_id,text:Aa,anchor_position:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset},symbol_name:"ground_horz"}),Sa.schematic_trace.insert({edges:[{from:{x:la.x,y:la.y},to:{x:la.x,y:la.y+Ma.handleUp*Ma.schBoxVertOffset}},{from:{x:la.x,y:la.y},to:{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset}}],junctions:[{x:la.x+Ma.horzPortDirection*Ma.schBoxHorzOffset,y:la.y+Ma.vertPortDirectionOffset*Ma.schBoxVertOffset}],source_trace_id:ba});const Ra=calculateOffsets(J);Sa.schematic_net_label.insert({anchor_side:"top",center:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset},source_net_id:J.source_port_id,text:Aa,anchor_position:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset},symbol_name:"ground_horz"});const Ia=J.facingDirection==="up"?.5:0;Sa.schematic_trace.insert({edges:[{from:{x:xa.x,y:xa.y},to:{x:xa.x,y:xa.y+Ia*Ra.schBoxVertOffset}},{from:{x:xa.x,y:xa.y},to:{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset}}],junctions:[{x:xa.x+Ra.horzPortDirection*Ra.schBoxHorzOffset,y:xa.y+Ra.vertPortDirectionOffset*Ra.schBoxVertOffset}],source_trace_id:ba})},getMaxLengthFromConnectedCapacitors=(ua,{db:J})=>{const la=ua.map(xa=>{const Aa=J.source_port.get(xa.source_port_id);if(!(Aa!=null&&Aa.source_component_id))return null;const ba=J.source_component.get(Aa.source_component_id);return(ba==null?void 0:ba.ftype)==="simple_capacitor"?ba.max_decoupling_trace_length:null}).filter(xa=>xa!==null);if(la.length!==0)return Math.min(...la)};function getTraceDisplayName({ports:ua,nets:J}){var la,xa,Aa;if(ua.length>=2)return`${(la=ua[0])==null?void 0:la.selector} to ${(xa=ua[1])==null?void 0:xa.selector}`;if(ua.length===1&&J.length===1)return`${(Aa=ua[0])==null?void 0:Aa.selector} to net.${J[0]._parsedProps.name}`}var getSchematicObstaclesForTrace=ua=>{var ba;const J=ua.root.db,la=ua._findConnectedPorts().ports??[],xa=new Set(la.map(Sa=>Sa.schematic_port_id)),Aa=[];for(const Sa of J.toArray()){if(Sa.type==="schematic_component"){const Ma=!!Sa.symbol_name,Ra=Sa.size.width>Sa.size.height?"horz":"vert";Aa.push({type:"rect",layers:["top"],center:Sa.center,width:Sa.size.width+(Ma&&Ra==="horz"?-.5:0),height:Sa.size.height+(Ma&&Ra==="vert"?-.5:0),connectedTo:[]})}if(Sa.type==="schematic_port"){if(xa.has(Sa.schematic_port_id))continue;const Ma=Sa.facing_direction?getUnitVectorFromDirection(Sa.facing_direction):{x:0,y:0};Aa.push({type:"rect",layers:["top"],center:{x:Sa.center.x-Ma.x*.1,y:Sa.center.y-Ma.y*.1},width:.1+Math.abs(Ma.x)*.3,height:.1+Math.abs(Ma.y)*.3,connectedTo:[]})}Sa.type==="schematic_text"&&Aa.push({type:"rect",layers:["top"],center:Sa.position,width:(((ba=Sa.text)==null?void 0:ba.length)??0)*.1,height:.2,connectedTo:[]}),Sa.type==="schematic_box"&&Aa.push({type:"rect",layers:["top"],center:{x:Sa.x,y:Sa.y},width:Sa.width,height:Sa.height,connectedTo:[]})}return Aa},portToObjective=ua=>({...ua._getGlobalPcbPositionAfterLayout(),layers:ua.getAvailablePcbLayers()}),Trace2=class extends PrimitiveComponent{constructor(J){super(J);jp(this,"source_trace_id",null);jp(this,"pcb_trace_id",null);jp(this,"schematic_trace_id",null);jp(this,"_portsRoutedOnPcb");jp(this,"subcircuit_connectivity_map_key",null);this._portsRoutedOnPcb=[]}get config(){return{zodProps:traceProps,componentName:"Trace"}}_getTracePortOrNetSelectorListFromProps(){return"from"in this.props&&"to"in this.props?[typeof this.props.from=="string"?this.props.from:this.props.from.getPortSelector(),typeof this.props.to=="string"?this.props.to:this.props.to.getPortSelector()]:"path"in this.props?this.props.path.map(J=>typeof J=="string"?J:J.getPortSelector()):[]}getTracePortPathSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(J=>!J.includes("net."))}getTracePathNetSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(J=>J.includes("net."))}_findConnectedPorts(){this.root;const{_parsedProps:J,parent:la}=this;if(!la)throw new Error("Trace has no parent");const Aa=this.getTracePortPathSelectors().map(ba=>({selector:ba,port:this.getSubcircuit().selectOne(ba,{type:"port"})??null}));for(const{selector:ba,port:Sa}of Aa)if(!Sa){const Ma=ba.replace(/\>.*$/,""),Ra=this.getSubcircuit().selectOne(Ma);Ra?this.renderError(`Could not find port for selector "${ba}" (did you forget to include the pin name?)