UNPKG

@typecad/typecad

Version:

🤖programmatically 💥create 🛰️hardware

1 lines 63.7 kB
var __classPrivateFieldSet=this&&this[a9_0x1a1d7b(-0x297,-0x2cf)]||function(_0x95368c,_0xcc5a3d,_0x192c37,_0x18e7be,_0x28d4f7){if(_0x18e7be==='m')throw new TypeError('Private\x20method\x20is\x20not\x20writable');if(_0x18e7be==='a'&&!_0x28d4f7)throw new TypeError('Private\x20accessor\x20was\x20defined\x20without\x20a\x20setter');if(typeof _0xcc5a3d==='function'?_0x95368c!==_0xcc5a3d||!_0x28d4f7:!_0xcc5a3d['has'](_0x95368c))throw new TypeError('Cannot\x20write\x20private\x20member\x20to\x20an\x20object\x20whose\x20class\x20did\x20not\x20declare\x20it');return _0x18e7be==='a'?_0x28d4f7['call'](_0x95368c,_0x192c37):_0x28d4f7?_0x28d4f7['value']=_0x192c37:_0xcc5a3d['set'](_0x95368c,_0x192c37),_0x192c37;},__classPrivateFieldGet=this&&this[a9_0x1a1d7b(-0x2e7,-0x2ce)]||function(_0x518b1c,_0x3bcee7,_0x47ba2e,_0x48358e){function _0x34cb4f(_0x548670,_0x5a794f){return a9_0x14b2(_0x548670-0x3a1,_0x5a794f);}if(_0x47ba2e==='a'&&!_0x48358e)throw new TypeError(_0x34cb4f(0x3a3,0x3a9));if(typeof _0x3bcee7==='function'?_0x518b1c!==_0x3bcee7||!_0x48358e:!_0x3bcee7['has'](_0x518b1c))throw new TypeError('Cannot\x20read\x20private\x20member\x20from\x20an\x20object\x20whose\x20class\x20did\x20not\x20declare\x20it');return _0x47ba2e==='m'?_0x48358e:_0x47ba2e==='a'?_0x48358e[_0x34cb4f(0x3a4,0x380)](_0x518b1c):_0x48358e?_0x48358e['value']:_0x3bcee7['get'](_0x518b1c);},_PCB_instances,_PCB_pcb,_PCB_components,_PCB_stagedComponents,_PCB_groups,_PCB_outlines,_PCB_stagedOutlines,_PCB_options,_PCB_existingBoardElements,_PCB_grTexts,_PCB_zones,_PCB_keepoutZones,_PCB_grLines,_PCB_grCircles,_PCB_grRects,_PCB_grPolys,_PCB_routerRegistry,_PCB_loadExistingBoardElements,_PCB_resolveNet,_PCB_addComponentToBoard,_PCB_stageComponent,_PCB_unstageComponent,_PCB__update_footprint_node,_PCB__create_footprint_node;function a9_0x5d4f(){const _0x38cca9=['__classPrivateFieldSet','__classPrivateFieldGet','Private\x20accessor\x20was\x20defined\x20without\x20a\x20getter','call','name','isArray','tracks','set','Schematic','registerRouter','createRouter','get','Routing\x20algorithm\x20\x27','getRouterGridConfigurator','grPolys','components','stagedComponents','groups','pcb','resolveNet','_addComponentToBoardPublic','forEach','length','place','push','findIndex','\x22\x20(members\x20','text','height','italic','justify','stack','includes','node_modules','copper_thickness','thickness','stage','zone','outline','_getComponents','_track','line','start','track','_pinsMatch','_pendingAutoroutes','reorder','byDistance','from','getPadCenter','reverse','viaCost','autoroute','calculateBoardBounds','outlines','calculateMinTraceWidth','_getTrackData','elements','Boardname','kicad_pcb','nodes','find','number','reference','code','has','toLowerCase','dnp','splice','uuid\x20`','uuid','footprint','\x22B.Cu\x22','\x22F.Cu\x22','layer','string','rotation','indexOf','replace','Code','property','`Reference`','value','`Footprint`','description','`MPN`','mpn','trim','effects','mirror','side','layers','net','`passive`','match','back','fp_poly','end','fp_text','fp_text_box','hide','`Code`','replaceAll',']\x20Failed\x20to\x20create\x20footprint\x20node.\x20','Parsed\x20footprint\x20is\x20undefined\x20or\x20not\x20an\x20array','Unknown','`Datasheet`','netCode','valueFootprint','fontSize','width','font','size','fab','fp_line','max','show'];a9_0x5d4f=function(){return _0x38cca9;};return a9_0x5d4f();}import{Component}from'../component';import{Schematic}from'../schematic';import a9_0x1242f1 from'node:fs';import a9_0x3af7a3 from'fast-sexpr';import a9_0x2e3397 from's-expression.js';import{TrackBuilder}from'./pcb_track_builder';import{PadResolver}from'../routing/shared/pad_resolver';import{formatSourceInfoForProperty,generateUuid}from'./pcb_utils';import{mapLayerToSide,transformSexprLayers,mirrorChamferDirection}from'./pcb_layer_utils';import{pcbLine,pcbCircle,pcbRect,pcbPoly,pcbOutline}from'./pcb_graphics';import{zone,keepout,_getStagedOutlines,_removeStagedOutlinesByUuid}from'./pcb_zones';function a9_0x1a1d7b(_0x258ccc,_0x50d993){return a9_0x14b2(_0x50d993- -0x2cf,_0x258ccc);}import{calculateViaCurrentCapacity,calculateMinTraceWidth,calculateBoardBounds}from'./pcb_routing_calculations';import{pinToIdentifier,pinsMatch,connectionMatches}from'./pcb_routing_helpers';function a9_0x14b2(_0x5d4f5f,_0x14b2e3){const _0x775948=a9_0x5d4f();return a9_0x14b2=function(_0x4dc36f,_0x25a9dd){_0x4dc36f=_0x4dc36f-0x0;let _0xb47cd=_0x775948[_0x4dc36f];return _0xb47cd;},a9_0x14b2(_0x5d4f5f,_0x14b2e3);}import{prettyPrintSExpr,pointOnLineSegment,routeNet as a9_0x5baff4}from'./pcb_routing_core';import{createBoard}from'./pcb_board_creation';import{autoroute}from'./pcb_autoroute';export{TrackBuilder}from'./pcb_track_builder';const S=new a9_0x2e3397();function isSchematicNetDefinition(_0x23a4b3){function _0xa58c3f(_0x574f54,_0xcccebc){return a9_0x14b2(_0xcccebc- -0x27,_0x574f54);}return Boolean(_0x23a4b3&&typeof _0x23a4b3==='object'&&typeof _0x23a4b3[_0xa58c3f(0x10,-0x23)]==='string'&&Array[_0xa58c3f(-0x2e,-0x22)](_0x23a4b3['pins']));}export class PCB{constructor(_0x298963,_0xc0b4ff){_PCB_instances['add'](this),this['outlines']=[],this[_0x4478b4(0x7d,0x43)]=[],_PCB_pcb['set'](this,''),_PCB_components[_0x4478b4(0x7b,0x44)](this,[]),_PCB_stagedComponents['set'](this,[]),_PCB_groups['set'](this,[]),_PCB_outlines['set'](this,[]),_PCB_stagedOutlines['set'](this,[]),_PCB_options['set'](this,void 0x0),_PCB_existingBoardElements['set'](this,[]),_PCB_grTexts['set'](this,[]);function _0x4478b4(_0x18a0ea,_0x2dae21){return a9_0x14b2(_0x2dae21-0x3d,_0x18a0ea);}_PCB_zones['set'](this,[]),_PCB_keepoutZones['set'](this,[]),_PCB_grLines['set'](this,[]),_PCB_grCircles['set'](this,[]),_PCB_grRects[_0x4478b4(0x29,0x44)](this,[]),_PCB_grPolys[_0x4478b4(0x68,0x44)](this,[]),_PCB_routerRegistry['set'](this,new Map()),this['Boardname']=_0x298963,__classPrivateFieldSet(this,_PCB_options,_0xc0b4ff||{'remove_orphans':!![],'thickness':1.6,'copper_thickness':0x23,'Schematic':new Schematic(_0x298963)},'f'),this['thickness']=__classPrivateFieldGet(this,_PCB_options,'f')['thickness']||1.6,this['copper_thickness']=__classPrivateFieldGet(this,_PCB_options,'f')['copper_thickness']||0x23,this[_0x4478b4(0x74,0x45)]=__classPrivateFieldGet(this,_PCB_options,'f')['Schematic']||new Schematic(_0x298963),__classPrivateFieldGet(this,_PCB_instances,'m',_PCB_loadExistingBoardElements)['call'](this);}[a9_0x1a1d7b(-0x299,-0x2c6)](_0x1bda21){const _0x35afbc={'register':(_0x501406,_0x4564f9,_0x5d62db)=>{function _0x559fb2(_0xaf158c,_0x1aa78e){return a9_0x14b2(_0xaf158c-0x396,_0x1aa78e);}__classPrivateFieldGet(this,_PCB_routerRegistry,'f')[_0x559fb2(0x39d,0x3d2)](_0x501406,{'factory':_0x4564f9,'configureGrid':_0x5d62db?.['configureGrid']});}};_0x1bda21(_0x35afbc);}[a9_0x1a1d7b(-0x29a,-0x2c5)](_0x51a959,_0x2e01df,_0x560e91){const _0x3564b5=__classPrivateFieldGet(this,_PCB_routerRegistry,'f')[_0x29770d(0xdf,0xcf)](_0x51a959);if(!_0x3564b5)throw new Error(_0x29770d(0xe0,0xc5)+_0x51a959+'\x27\x20is\x20not\x20registered\x20with\x20this\x20PCB\x20instance.\x20Use\x20typecad.registerRouter()\x20first.');function _0x29770d(_0x49e46b,_0x134e1e){return a9_0x14b2(_0x49e46b-0xd4,_0x134e1e);}return _0x3564b5['factory'](_0x2e01df,_0x560e91);}[a9_0x1a1d7b(-0x2e4,-0x2c2)](_0x3b63e3){return __classPrivateFieldGet(this,_PCB_routerRegistry,'f')['get'](_0x3b63e3)?.['configureGrid'];}['getRegisteredRouters'](){return Array['from'](__classPrivateFieldGet(this,_PCB_routerRegistry,'f')['keys']());}get['option'](){return __classPrivateFieldGet(this,_PCB_options,'f');}get['grLines'](){return __classPrivateFieldGet(this,_PCB_grLines,'f');}get['grCircles'](){return __classPrivateFieldGet(this,_PCB_grCircles,'f');}get['grRects'](){return __classPrivateFieldGet(this,_PCB_grRects,'f');}get[a9_0x1a1d7b(-0x2e6,-0x2c1)](){return __classPrivateFieldGet(this,_PCB_grPolys,'f');}get['stagedOutlines'](){return __classPrivateFieldGet(this,_PCB_stagedOutlines,'f');}get['zones'](){return __classPrivateFieldGet(this,_PCB_zones,'f');}get['keepoutZones'](){return __classPrivateFieldGet(this,_PCB_keepoutZones,'f');}get[a9_0x1a1d7b(-0x2e2,-0x2c0)](){return __classPrivateFieldGet(this,_PCB_components,'f');}get[a9_0x1a1d7b(-0x2f4,-0x2bf)](){return __classPrivateFieldGet(this,_PCB_stagedComponents,'f');}get[a9_0x1a1d7b(-0x2a6,-0x2be)](){return __classPrivateFieldGet(this,_PCB_groups,'f');}get['groupsAsMap'](){const _0xa1f350=new Map();return __classPrivateFieldGet(this,_PCB_groups,'f')['forEach'](_0x51224a=>{const _0x527e5d=_0x51224a['match'](/^\(group\s+"([^"]+)"/);_0x527e5d&&_0xa1f350['set'](_0x527e5d[0x1],_0x51224a);}),_0xa1f350;}get['existingBoardElements'](){return __classPrivateFieldGet(this,_PCB_existingBoardElements,'f');}get['grTexts'](){return __classPrivateFieldGet(this,_PCB_grTexts,'f');}get[a9_0x1a1d7b(-0x29f,-0x2bd)](){return __classPrivateFieldGet(this,_PCB_pcb,'f');}get['outlines_public'](){return __classPrivateFieldGet(this,_PCB_outlines,'f');}get['options'](){return{...__classPrivateFieldGet(this,_PCB_options,'f'),'remove_orphans':__classPrivateFieldGet(this,_PCB_options,'f')['remove_orphans']??!![]};}[a9_0x1a1d7b(-0x29f,-0x2bc)](_0x26d8e8,_0x417dd8,_0x13cbef,_0x1be568,_0x2c5f63){function _0x47823d(_0x5e23fb,_0x1e0bea){return a9_0x14b2(_0x1e0bea-0x16,_0x5e23fb);}return __classPrivateFieldGet(this,_PCB_instances,'m',_PCB_resolveNet)[_0x47823d(0x2,0x19)](this,_0x26d8e8,_0x417dd8,_0x13cbef,_0x1be568,_0x2c5f63);}[a9_0x1a1d7b(-0x2c2,-0x2bb)](_0x1c3c88){__classPrivateFieldGet(this,_PCB_instances,'m',_PCB_addComponentToBoard)['call'](this,_0x1c3c88);}['_resolveNetPublic'](_0x4e766c,_0x203d5a,_0x584f48,_0x4ee197,_0x530522){function _0x5ac628(_0x59d859,_0x6e1cf0){return a9_0x14b2(_0x6e1cf0- -0x18b,_0x59d859);}return __classPrivateFieldGet(this,_PCB_instances,'m',_PCB_resolveNet)[_0x5ac628(-0x161,-0x188)](this,_0x4e766c,_0x203d5a,_0x584f48,_0x4ee197,_0x530522);}['_createFootprintNodePublic'](_0x566104,_0x8586f0){function _0x2452f6(_0x47c449,_0x1211e9){return a9_0x14b2(_0x47c449-0x1d,_0x1211e9);}return __classPrivateFieldGet(this,_PCB_instances,'m',_PCB__create_footprint_node)[_0x2452f6(0x20,0x2d)](this,_0x566104,_0x8586f0);}['_updateFootprintNodePublic'](_0xb86601,_0xd39af,_0x472818){return __classPrivateFieldGet(this,_PCB_instances,'m',_PCB__update_footprint_node)['call'](this,_0xb86601,_0xd39af,_0x472818);}['_clearComponents'](){__classPrivateFieldSet(this,_PCB_components,[],'f');}['_clearOutlines'](){__classPrivateFieldSet(this,_PCB_outlines,[],'f');}['_clearGroups'](){__classPrivateFieldSet(this,_PCB_groups,[],'f');}['_setPcb'](_0x1dd3c3){__classPrivateFieldSet(this,_PCB_pcb,_0x1dd3c3,'f');}['place'](..._0x3c4803){_0x3c4803['forEach'](_0x1f69bc=>{function _0x3eb400(_0x15c9b9,_0x5ab11e){return a9_0x14b2(_0x15c9b9- -0x109,_0x5ab11e);}__classPrivateFieldGet(this,_PCB_instances,'m',_PCB_unstageComponent)[_0x3eb400(-0x106,-0xd6)](this,_0x1f69bc),__classPrivateFieldGet(this,_PCB_instances,'m',_PCB_addComponentToBoard)['call'](this,_0x1f69bc);});}['stage'](..._0x58f549){function _0x5aaa80(_0x132f61,_0x495c21){return a9_0x14b2(_0x495c21-0x1f5,_0x132f61);}_0x58f549[_0x5aaa80(0x1d6,0x20a)](_0x327bf9=>{__classPrivateFieldGet(this,_PCB_instances,'m',_PCB_stageComponent)['call'](this,_0x327bf9);});}['group'](_0x47f0ef,..._0x406ce7){let _0x40cb3c='';const _0x5c4560=[];_0x406ce7['forEach'](_0x2334f8=>{function _0x468a54(_0x1cbdb2,_0x496be8){return a9_0x14b2(_0x496be8-0x119,_0x1cbdb2);}if(_0x2334f8 instanceof Component)_0x5c4560['push'](_0x2334f8);else{if(_0x2334f8 instanceof TrackBuilder){const _0x5deacb=_0x2334f8['getElements']();_0x5deacb[_0x468a54(0x105,0x12e)](_0x45dc8a=>{_0x40cb3c+='\x22'+_0x45dc8a['uuid']+'\x22\x20';});}}});_0x5c4560[_0x623eb5(-0x1af,-0x1cf)]>0x0&&(this[_0x623eb5(-0x1ae,-0x1e1)](..._0x5c4560),_0x5c4560['forEach'](_0x1b64b9=>{function _0x48e582(_0x540eb1,_0x5799b2){return a9_0x14b2(_0x540eb1- -0x24,_0x5799b2);}if(_0x1b64b9['dnp']===!![])return;_0x40cb3c+='\x22'+_0x1b64b9['uuid']+'\x22\x20',!_0x1b64b9['groups']['includes'](_0x47f0ef)&&_0x1b64b9['groups'][_0x48e582(-0xc,0x0)](_0x47f0ef);}));function _0x623eb5(_0x3c5e3b,_0x839e00){return a9_0x14b2(_0x3c5e3b- -0x1c5,_0x839e00);}const _0xf00710=__classPrivateFieldGet(this,_PCB_groups,'f')[_0x623eb5(-0x1ac,-0x1c8)](_0x581273=>_0x581273['startsWith']('(group\x20\x22'+_0x47f0ef+'\x22')),_0x19c92a='(group\x20\x22'+_0x47f0ef+_0x623eb5(-0x1ab,-0x1c1)+_0x40cb3c+'))';_0xf00710!==-0x1?__classPrivateFieldGet(this,_PCB_groups,'f')[_0xf00710]=_0x19c92a:__classPrivateFieldGet(this,_PCB_groups,'f')['push'](_0x19c92a);}[a9_0x1a1d7b(-0x299,-0x2b4)](_0x3bc0aa){function _0x17aaab(_0x12099a,_0x10221e){return a9_0x14b2(_0x10221e-0x52,_0x12099a);}const _0x3f9747={'text':_0x3bc0aa['text'],'x':_0x3bc0aa['x'],'y':_0x3bc0aa['y'],'layer':_0x3bc0aa['layer'],'width':_0x3bc0aa['width']||1.27,'height':_0x3bc0aa[_0x17aaab(0x79,0x6e)]||1.27,'thickness':_0x3bc0aa['thickness'],'rotation':_0x3bc0aa['rotation']||0x0,'font':_0x3bc0aa['font'],'bold':_0x3bc0aa['bold'],'italic':_0x3bc0aa[_0x17aaab(0x6f,0x6f)],'justify':_0x3bc0aa[_0x17aaab(0x95,0x70)],'hide':_0x3bc0aa['hide'],'uuid':_0x3bc0aa['uuid']||generateUuid()};__classPrivateFieldGet(this,_PCB_grTexts,'f')['push'](_0x3f9747);}async['create'](..._0x2fb27a){return createBoard(this,..._0x2fb27a);}['getCallSite'](){const _0x5a8cb2=new Error()[_0x218fda(0x2b0,0x280)];if(!_0x5a8cb2)return undefined;const _0x91c719=_0x5a8cb2['split']('\x0a');for(let _0x50c734=0x3;_0x50c734<_0x91c719['length'];_0x50c734++){const _0x31a2eb=_0x91c719[_0x50c734];if(_0x31a2eb){const _0x481c9c=_0x31a2eb['match'](/at\s+(?:(.+?)\s+\()?(.+):(\d+):(\d+)\)?/);if(_0x481c9c){const _0x529270=_0x481c9c[0x2];if(!_0x529270['includes']('pcb_track_builder')&&!_0x529270['includes']('pcb.ts')&&!_0x529270['includes']('pcb.js')&&!_0x529270[_0x218fda(0x2b1,0x29a)](_0x218fda(0x2b2,0x298))&&!_0x529270[_0x218fda(0x2b1,0x288)]('\x5cdist\x5c')&&!_0x529270['includes']('/dist/'))return{'file':_0x529270,'line':parseInt(_0x481c9c[0x3],0xa),'column':parseInt(_0x481c9c[0x4],0xa)};}}}function _0x218fda(_0x22c426,_0x1f8103){return a9_0x14b2(_0x22c426-0x291,_0x1f8103);}if(_0x91c719[0x2]){const _0x36dcf6=_0x91c719[0x2]['match'](/at\s+(?:(.+?)\s+\()?(.+):(\d+):(\d+)\)?/);if(_0x36dcf6)return{'file':_0x36dcf6[0x2],'line':parseInt(_0x36dcf6[0x3],0xa),'column':parseInt(_0x36dcf6[0x4],0xa)};}return undefined;}['calculateViaCurrentCapacity'](_0x343011,_0x50ed3d,_0x3da12c,_0x50af42,_0x5d3e6c=0xa){const _0x295711=_0x3da12c??this[_0x5135be(-0x334,-0x33f)];function _0x5135be(_0x4d1a04,_0x290e29){return a9_0x14b2(_0x290e29- -0x361,_0x4d1a04);}const _0x541895=_0x50af42??this[_0x5135be(-0x324,-0x33e)];return calculateViaCurrentCapacity(_0x343011,_0x50ed3d,_0x295711,_0x541895,_0x5d3e6c);}['via']({at:_0x3431fe,size:_0x2e5420,drill:_0x3b730c,net:_0x4a93a1,powerInfo:_0x2eb63f}={}){function _0x2ccf67(_0x3f16c7,_0x35f9f5){return a9_0x14b2(_0x35f9f5- -0x56,_0x3f16c7);}const _0x150f63=_0x3431fe||{'x':0x0,'y':0x0},_0x3b2962=new Component({'via':!![],'pcb':{'x':_0x150f63['x'],'y':_0x150f63['y'],'rotation':0x0,'side':'front'},'viaData':{'uuid':generateUuid(),'at':_0x150f63,'size':_0x2e5420||0.8,'drill':_0x3b730c||0.4,'layers':['F.Cu','B.Cu'],'net':_0x4a93a1,'powerInfo':_0x2eb63f}});return this[_0x2ccf67(-0x45,-0x32)](_0x3b2962),_0x3b2962;}[a9_0x1a1d7b(-0x298,-0x2aa)](_0x26f7e2){zone(this,_0x26f7e2);}['keepout'](_0x584bec){keepout(this,_0x584bec);}['line'](_0x381a35){pcbLine(this,_0x381a35);}['circle'](_0x332873){pcbCircle(this,_0x332873);}['rect'](_0x4a4883){pcbRect(this,_0x4a4883);}['poly'](_0x3a5b1e){pcbPoly(this,_0x3a5b1e);}[a9_0x1a1d7b(-0x2ab,-0x2a9)](_0x2e7928,_0x1e064a,_0x2d7cd2,_0x11eb9b,_0x3fcb2d=0x0,_0x1eb69d){pcbOutline(this,_0x2e7928,_0x1e064a,_0x2d7cd2,_0x11eb9b,_0x3fcb2d,_0x1eb69d);}['_getStagedOutlines'](){return _getStagedOutlines(this);}['_getKeepoutZones'](){return __classPrivateFieldGet(this,_PCB_keepoutZones,'f');}[a9_0x1a1d7b(-0x2d2,-0x2a8)](){return __classPrivateFieldGet(this,_PCB_components,'f');}['_getStagedComponents'](){return __classPrivateFieldGet(this,_PCB_stagedComponents,'f');}['_removeStagedOutlinesByUuid'](_0x505ac5){_removeStagedOutlinesByUuid(this,_0x505ac5);}[a9_0x1a1d7b(-0x283,-0x2a7)](_0x1bbacf,_0x319065,_0xf3f703=0.05,_0x141105='F.Cu',_0x40aa12=![],_0x1e44ef,_0x5bf40e){const _0x20d11c=_0x1e44ef||generateUuid();function _0x2cc794(_0x39fd53,_0x4db2ce){return a9_0x14b2(_0x4db2ce-0x318,_0x39fd53);}const _0xee9d5c={'type':_0x2cc794(0x372,0x341),'uuid':_0x20d11c,'layer':_0x141105,'strokeWidth':_0xf3f703,'start':_0x1bbacf,'end':_0x319065,'locked':_0x40aa12,'net':_0x5bf40e};return __classPrivateFieldGet(this,_PCB_stagedOutlines,'f')['push']({'uuid':_0x20d11c,'x':_0xee9d5c[_0x2cc794(0x354,0x342)]['x'],'y':_0xee9d5c['start']['y'],'width':Math['abs'](_0xee9d5c['end']['x']-_0xee9d5c[_0x2cc794(0x32c,0x342)]['x']),'height':Math['abs'](_0xee9d5c['end']['y']-_0xee9d5c['start']['y']),'filletRadius':0x0,'elements':[_0xee9d5c]}),_0x20d11c;}[a9_0x1a1d7b(-0x2c9,-0x2a4)](_0x297306){return new TrackBuilder(this,_0x297306);}['_pinToIdentifier'](_0x240771){return pinToIdentifier(_0x240771);}[a9_0x1a1d7b(-0x2aa,-0x2a3)](_0x784a5f,_0xd91bc3){return pinsMatch(_0x784a5f,_0xd91bc3);}['_connectionMatches'](_0x4cca41,_0x47b1ae,_0x441dd9,_0xe9d728){return connectionMatches(_0x4cca41,_0x47b1ae,_0x441dd9,_0xe9d728);}async['route'](_0x1dc654,_0x4d8e5d){if(isSchematicNetDefinition(_0x1dc654))return a9_0x5baff4(this,_0x1dc654,_0x4d8e5d);return await this['autoroute'](_0x1dc654);}async['autoroute'](_0x41fd46){!this[_0x28611b(0xf9,0xda)]&&(this[_0x28611b(0xf6,0xda)]=new Set());const _0x29ebfb=this['_pendingAutoroutes'],_0x13ae98=autoroute(this,_0x41fd46);function _0x28611b(_0x2e7a14,_0x3291d0){return a9_0x14b2(_0x3291d0-0xad,_0x2e7a14);}_0x29ebfb['add'](_0x13ae98);try{const _0x3d8304=await _0x13ae98;return _0x3d8304;}finally{_0x29ebfb['delete'](_0x13ae98);}}async['waitForPendingAutoroutes'](){const _0x3ce86f=this['_pendingAutoroutes'];if(!_0x3ce86f||_0x3ce86f['size']===0x0)return;await Promise['all'](Array['from'](_0x3ce86f));}['_pointOnLineSegment'](_0x14e581,_0x4513da,_0x3945ef){return pointOnLineSegment(_0x14e581,_0x4513da,_0x3945ef);}async['autorouteBatch'](_0x28f428,_0x3dff1d){const _0x161880=_0x3dff1d?.['rounds']??0x3,_0x3dd41a=_0x3dff1d?.[_0x1efe39(0x2c9,0x2eb)]??_0x1efe39(0x2ca,0x2f6),_0x4d1482=_0x3dff1d?.['relaxViaCostPerRound']??0x5,_0x167e64=_0x3dff1d?.['increaseIterationsPerRound']??0x61a8;function _0x1efe39(_0x3d66f4,_0x2dc66b){return a9_0x14b2(_0x3d66f4-0x29b,_0x2dc66b);}const _0x110893=this['_getStagedOutlines'](),_0x3e9642=_0x110893?_0x110893['length']:0x0;let _0x1aab5a=_0x3e9642;const _0x3a83db=new Set();let _0x4f6ca5=[],_0x9cf93b=![];for(let _0x28b655=0x0;_0x28b655<_0x161880;_0x28b655++){_0x110893&&_0x110893['splice'](_0x1aab5a);let _0x4e6135=[..._0x28f428];if(_0x3dd41a==='byDistance')_0x4e6135['sort']((_0x1e8c9d,_0x35a401)=>{const _0x44046e=Array['isArray'](_0x1e8c9d['from'])?_0x1e8c9d['from'][0x0]:_0x1e8c9d[_0x4cd714(0x25,0x0)];function _0x4cd714(_0x26a8c0,_0x40f3c5){return a9_0x14b2(_0x26a8c0- -0xb,_0x40f3c5);}const _0x2ff67b=Array['isArray'](_0x1e8c9d['to'])?_0x1e8c9d['to'][0x0]:_0x1e8c9d['to'],_0x3c3b13=Array['isArray'](_0x35a401[_0x4cd714(0x25,0x2d)])?_0x35a401[_0x4cd714(0x25,0x25)][0x0]:_0x35a401['from'],_0xef4d21=Array['isArray'](_0x35a401['to'])?_0x35a401['to'][0x0]:_0x35a401['to'],_0x2c0bbf=PadResolver['getPadCenter'](_0x44046e),_0x4d3ef8=PadResolver['getPadCenter'](_0x2ff67b),_0x571927=PadResolver[_0x4cd714(0x26,0x1e)](_0x3c3b13),_0x4f5d43=PadResolver['getPadCenter'](_0xef4d21),_0x50f518=_0x2c0bbf&&_0x4d3ef8?Math['hypot'](_0x4d3ef8['x']-_0x2c0bbf['x'],_0x4d3ef8['y']-_0x2c0bbf['y']):0x0,_0x100b8d=_0x571927&&_0x4f5d43?Math['hypot'](_0x4f5d43['x']-_0x571927['x'],_0x4f5d43['y']-_0x571927['y']):0x0;return _0x100b8d-_0x50f518;});else _0x3dd41a===_0x1efe39(0x2cd,0x2f4)&&_0x4e6135[_0x1efe39(0x2cd,0x2cf)]();const _0x4e621c=[];let _0x3fae6d=!![];for(let _0x148c78=0x0;_0x148c78<_0x4e6135['length'];_0x148c78++){const _0x4d3537=_0x4e6135[_0x148c78],_0x2b64ce=_0x28f428['indexOf'](_0x4d3537);if(_0x3a83db['has'](_0x2b64ce))continue;const _0x3bcfe2=_0x4d3537['options']||{},_0x32eedc={..._0x3bcfe2,'viaCost':_0x3bcfe2['viaCost']!==undefined?Math['max'](0x0,_0x3bcfe2[_0x1efe39(0x2ce,0x2a0)]-_0x4d1482*_0x28b655):undefined,'maxIterations':_0x3bcfe2['maxIterations']!==undefined?_0x3bcfe2['maxIterations']+_0x167e64*_0x28b655:undefined},_0x21a8b9=await this[_0x1efe39(0x2cf,0x302)]({..._0x32eedc,'from':_0x4d3537['from'],'to':_0x4d3537['to']});_0x4e621c[_0x1efe39(0x2b3,0x2d6)](_0x21a8b9);if(!_0x21a8b9['success']){_0x3fae6d=![];break;}else _0x110893&&(_0x1aab5a=_0x110893[_0x1efe39(0x2b1,0x2d0)]),_0x3a83db['add'](_0x2b64ce);}if(_0x3fae6d){_0x4f6ca5=_0x4e621c,_0x9cf93b=!![];break;}}return{'results':_0x4f6ca5,'success':_0x9cf93b,'rounds':_0x161880};}[a9_0x1a1d7b(-0x274,-0x29a)](_0x13bfca){const _0x46c971=[];function _0x467072(_0x153621,_0x76a18d){return a9_0x14b2(_0x76a18d-0x20c,_0x153621);}return __classPrivateFieldGet(this,_PCB_components,'f')&&_0x46c971['push'](...__classPrivateFieldGet(this,_PCB_components,'f')),__classPrivateFieldGet(this,_PCB_stagedComponents,'f')&&_0x46c971[_0x467072(0x23b,0x224)](...__classPrivateFieldGet(this,_PCB_stagedComponents,'f')),_0x13bfca&&_0x46c971[_0x467072(0x1ef,0x224)](..._0x13bfca),calculateBoardBounds(_0x46c971,this[_0x467072(0x258,0x242)]);}[a9_0x1a1d7b(-0x284,-0x298)](_0x475cf2,_0x402985,_0x585693,_0x397e97){return calculateMinTraceWidth(_0x475cf2,_0x402985,_0x585693,_0x397e97);}['net'](..._0x3cb3c4){return this['Schematic']['net'](..._0x3cb3c4);}['named'](_0x230559){return this['Schematic']['named'](_0x230559),this;}['bom'](_0x179935){this['Schematic']&&this['Schematic']['bom'](_0x179935);}['erc'](){this['Schematic']&&this['Schematic']['erc']();}['add'](..._0x164c6c){function _0xc20eee(_0x2458dc,_0x41fbc9){return a9_0x14b2(_0x2458dc-0x2b,_0x41fbc9);}this['Schematic']&&this[_0xc20eee(0x33,0x28)]['add'](..._0x164c6c);}[a9_0x1a1d7b(-0x2b2,-0x297)](_0x57a95d){function _0x273b42(_0x5a3361,_0x56fbfa){return a9_0x14b2(_0x56fbfa- -0x8b,_0x5a3361);}for(const _0x21cc54 of __classPrivateFieldGet(this,_PCB_stagedOutlines,'f')){if(_0x21cc54['uuid']===_0x57a95d&&_0x21cc54[_0x273b42(-0x7f,-0x52)][_0x273b42(-0x4f,-0x75)]===0x1&&_0x21cc54['elements'][0x0]['type']==='line')return _0x21cc54['elements'][0x0];}return null;}['prettyPrintSExpr'](_0x5e1e63){return prettyPrintSExpr(_0x5e1e63);}}_PCB_pcb=new WeakMap(),_PCB_components=new WeakMap(),_PCB_stagedComponents=new WeakMap(),_PCB_groups=new WeakMap(),_PCB_outlines=new WeakMap(),_PCB_stagedOutlines=new WeakMap(),_PCB_options=new WeakMap(),_PCB_existingBoardElements=new WeakMap(),_PCB_grTexts=new WeakMap(),_PCB_zones=new WeakMap(),_PCB_keepoutZones=new WeakMap(),_PCB_grLines=new WeakMap(),_PCB_grCircles=new WeakMap(),_PCB_grRects=new WeakMap(),_PCB_grPolys=new WeakMap(),_PCB_routerRegistry=new WeakMap(),_PCB_instances=new WeakSet(),_PCB_loadExistingBoardElements=function _PCB_loadExistingBoardElements(){const _0x4ceae5='./build/'+this[_0x2491d9(0x7a,0x4d)]+'.kicad_pcb';function _0x2491d9(_0x3e3c9a,_0x52e5ce){return a9_0x14b2(_0x3e3c9a-0x40,_0x52e5ce);}if(a9_0x1242f1['existsSync'](_0x4ceae5))try{let _0x4c3c39=a9_0x1242f1['readFileSync'](_0x4ceae5,'utf8');_0x4c3c39=_0x4c3c39['replace'](/[±]/g,''),_0x4c3c39=_0x4c3c39['replaceAll']('\x22','`');const _0x11befa=a9_0x3af7a3(_0x4c3c39);if(Array['isArray'](_0x11befa)&&_0x11befa['length']>0x0&&Array[_0x2491d9(0x45,0x19)](_0x11befa[0x0])&&_0x11befa[0x0][0x0]===_0x2491d9(0x7b,0x93)){const _0xdf81c1=_0x11befa[0x0];__classPrivateFieldSet(this,_PCB_existingBoardElements,_0xdf81c1['slice'](0x1),'f');}else __classPrivateFieldSet(this,_PCB_existingBoardElements,[],'f');}catch(_0x471fa5){__classPrivateFieldSet(this,_PCB_existingBoardElements,[],'f');}else __classPrivateFieldSet(this,_PCB_existingBoardElements,[],'f');},_PCB_resolveNet=function _PCB_resolveNet(_0x428f00,_0xc01eb9,_0x244c91,_0x528fc2,_0x32b8fe){function _0x489fc5(_0x1fa21f,_0x14161f){return a9_0x14b2(_0x1fa21f-0x3a8,_0x14161f);}let _0xd4c166=![],_0x17ce18,_0x5059ce;if(this['Schematic']&&this[_0x489fc5(0x3b0,0x376)]['Nodes'])for(const _0x3bac17 of this['Schematic']['Nodes']){if(_0x3bac17[_0x489fc5(0x3e4,0x3f0)]){const _0x455134=_0x3bac17['nodes'][_0x489fc5(0x3e5,0x41d)](_0x2424c6=>{function _0x1cb939(_0x3bcd33,_0x35f161){return a9_0x14b2(_0x35f161-0xfa,_0x3bcd33);}return _0x244c91?_0x2424c6['uuid']===_0x244c91&&String(_0x2424c6[_0x1cb939(0x166,0x138)])===_0xc01eb9:_0x2424c6[_0x1cb939(0x15a,0x139)]===_0x428f00&&String(_0x2424c6['number'])===_0xc01eb9;});if(_0x455134){_0x5059ce=_0x3bac17['name'],_0x17ce18=_0x3bac17[_0x489fc5(0x3e8,0x420)],_0xd4c166=!![];break;}}}if(_0xd4c166&&_0x5059ce!==undefined&&_0x17ce18!==undefined){let _0x5276b2=_0x17ce18,_0x559655=_0x5059ce;if(_0x528fc2){let _0x317207=_0x5059ce['toLowerCase']();_0x317207['startsWith']('/')&&(_0x317207=_0x317207['substring'](0x1)),_0x528fc2[_0x489fc5(0x3e9,0x408)](_0x317207)&&(_0x5276b2=_0x528fc2['get'](_0x317207),_0x559655=_0x5059ce);}return{'found':!![],'netCode':_0x5276b2,'netName':_0x559655,'schematicNetCode':_0x17ce18,'schematicNetName':_0x5059ce};}if(_0x32b8fe&&_0x528fc2){const _0x34aa66=_0x32b8fe[_0x489fc5(0x3ea,0x408)]();if(_0x528fc2['has'](_0x34aa66)){const _0xc2afbe=_0x528fc2[_0x489fc5(0x3b3,0x39f)](_0x34aa66);return{'found':![],'netCode':_0xc2afbe,'netName':_0x32b8fe};}}return{'found':![],'netCode':0x0,'netName':''};},_PCB_addComponentToBoard=function _PCB_addComponentToBoard(_0x2f98b5){if(_0x2f98b5['dnp']===!![])return;function _0x785934(_0x787b14,_0x3184bb){return a9_0x14b2(_0x787b14-0x2fe,_0x3184bb);}__classPrivateFieldGet(this,_PCB_components,'f')[_0x785934(0x316,0x336)](_0x2f98b5);},_PCB_stageComponent=function _PCB_stageComponent(_0x150720){function _0x2024d5(_0x3493bf,_0x354d2e){return a9_0x14b2(_0x354d2e- -0x262,_0x3493bf);}if(!_0x150720||_0x150720[_0x2024d5(-0x239,-0x21f)]===!![])return;const _0x3e7648=_0x150720['uuid'];if(__classPrivateFieldGet(this,_PCB_stagedComponents,'f')['some'](_0x4d6569=>_0x4d6569['uuid']===_0x3e7648))return;__classPrivateFieldGet(this,_PCB_stagedComponents,'f')['push'](_0x150720);},_PCB_unstageComponent=function _PCB_unstageComponent(_0x42bbb5){function _0x1f6ff5(_0x13df40,_0x38931e){return a9_0x14b2(_0x38931e- -0xbd,_0x13df40);}if(!_0x42bbb5)return;const _0x46dcf1=_0x42bbb5['uuid'],_0x32f89f=__classPrivateFieldGet(this,_PCB_stagedComponents,'f')['findIndex'](_0x4025cc=>_0x4025cc['uuid']===_0x46dcf1);_0x32f89f!==-0x1&&__classPrivateFieldGet(this,_PCB_stagedComponents,'f')[_0x1f6ff5(-0xb0,-0x79)](_0x32f89f,0x1);},_PCB__update_footprint_node=function _PCB__update_footprint_node(_0x2b7774,_0x569921,_0x98b0e6){_0x569921['pcb']['rotation']=_0x569921['pcb']['rotation']??0x0;let _0x408b43=![];for(let _0x6c55d6=0x0;_0x6c55d6<_0x2b7774['length'];_0x6c55d6++){if(Array['isArray'](_0x2b7774[_0x6c55d6])&&_0x2b7774[_0x6c55d6][0x0]==='uuid'){_0x2b7774[_0x6c55d6]=['uuid','`'+_0x569921['uuid']+'`'],_0x408b43=!![];break;}}!_0x408b43&&_0x2b7774['splice'](0x2,0x0,[_0x540ba4(0x117,0xed)+_0x569921[_0x540ba4(0x118,0xfe)]+'`']);_0x2b7774[0x1]='`'+_0x569921[_0x540ba4(0x119,0xe8)]+'`';const _0x22aaba=_0x569921['pcb']?.['side']==='back'?_0x540ba4(0x11a,0x147):_0x540ba4(0x11b,0x101);let _0xba9039=![];for(let _0x295b9d=0x0;_0x295b9d<_0x2b7774['length'];_0x295b9d++){if(Array['isArray'](_0x2b7774[_0x295b9d])&&_0x2b7774[_0x295b9d][0x0]===_0x540ba4(0x11c,0x152)){_0x2b7774[_0x295b9d][0x1]=_0x22aaba,_0xba9039=!![];break;}}function _0x540ba4(_0xf57084,_0x38f787){return a9_0x14b2(_0xf57084-0xd2,_0x38f787);}if(!_0xba9039){let _0x44f9a0=0x2;for(let _0x34c958=0x0;_0x34c958<_0x2b7774['length'];++_0x34c958){if(Array[_0x540ba4(0xd7,0x10a)](_0x2b7774[_0x34c958])&&(_0x2b7774[_0x34c958][0x0]===_0x540ba4(0x118,0x128)||_0x2b7774[_0x34c958][0x0]==='at')){_0x44f9a0=_0x34c958;break;}_0x34c958>0x1&&typeof _0x2b7774[_0x34c958-0x1]===_0x540ba4(0x11d,0x14d)&&_0x2b7774[_0x34c958-0x1][_0x540ba4(0xf2,0x104)](_0x569921['footprint'])&&(_0x44f9a0=_0x34c958);}_0x2b7774['splice'](_0x44f9a0,0x0,[_0x540ba4(0x11c,0x129),_0x22aaba]);}let _0xac53b6=![];for(let _0x49aece=0x0;_0x49aece<_0x2b7774['length'];_0x49aece++){if(Array['isArray'](_0x2b7774[_0x49aece])&&_0x2b7774[_0x49aece][0x0]==='at'){_0x2b7774[_0x49aece][0x1]=_0x569921['pcb']['x'],_0x2b7774[_0x49aece][0x2]=_0x569921['pcb']['y'];_0x2b7774[_0x49aece][_0x540ba4(0xe8,0x11d)]>0x3?_0x2b7774[_0x49aece][0x3]=_0x569921[_0x540ba4(0xe4,0x102)]['rotation']:_0x2b7774[_0x49aece]['push'](_0x569921['pcb'][_0x540ba4(0x11e,0x11f)]);_0xac53b6=!![];break;}}if(!_0xac53b6&&typeof _0x569921[_0x540ba4(0xe4,0xb5)]['x']===_0x540ba4(0x110,0xe3)&&typeof _0x569921['pcb']['y']==='number'){let _0x291534=0x2;for(let _0x130e3f=0x0;_0x130e3f<_0x2b7774['length'];++_0x130e3f){if(Array[_0x540ba4(0xd7,0xa2)](_0x2b7774[_0x130e3f])&&_0x2b7774[_0x130e3f][0x0]==='uuid'){_0x291534=_0x130e3f+0x1;break;}else Array[_0x540ba4(0xd7,0xf7)](_0x2b7774[_0x130e3f])&&_0x2b7774[_0x130e3f][0x0]==='layer'&&(_0x291534=_0x130e3f+0x1);}_0x2b7774['splice'](_0x291534,0x0,['at',_0x569921['pcb']['x'],_0x569921['pcb']['y'],_0x569921['pcb']['rotation']]);}for(let _0x33f72b=0x0;_0x33f72b<_0x2b7774[_0x540ba4(0xe8,0xcc)];_0x33f72b++){if(Array['isArray'](_0x2b7774[_0x33f72b])){if(_0x2b7774[_0x33f72b][0x0]==='layer'&&(_0x2b7774[_0x33f72b][0x1]===_0x540ba4(0x11b,0x10c)||_0x2b7774[_0x33f72b][0x1]==='\x22B.Cu\x22')){let _0x56bce3=![];_0x2b7774[_0x540ba4(0x11f,0x14b)](_0x2b7774[_0x33f72b])<0x5&&_0x2b7774[_0x33f72b][0x1]===_0x22aaba&&(_0x56bce3=!![]),!_0x56bce3&&(_0x2b7774[_0x33f72b]=transformSexprLayers(_0x2b7774[_0x33f72b],_0x569921['pcb']?.['side']));}else _0x2b7774[_0x33f72b]=transformSexprLayers(_0x2b7774[_0x33f72b],_0x569921[_0x540ba4(0xe4,0x11c)]?.['side']);}}let _0xcf63a=![];for(let _0x228024=0x0;_0x228024<_0x2b7774[_0x540ba4(0xe8,0x11d)];_0x228024++){const _0x36c677=_0x2b7774[_0x228024];if(Array['isArray'](_0x36c677)&&_0x36c677[0x0]==='property'){const _0xaae6c0=String(_0x36c677[0x1])[_0x540ba4(0x120,0x146)](/[`\"]/g,'');if(_0xaae6c0===_0x540ba4(0x121,0xf6)){_0xcf63a=!![];break;}}}for(let _0x40b2dd=0x0;_0x40b2dd<_0x2b7774['length'];_0x40b2dd++){const _0x15e32a=_0x2b7774[_0x40b2dd];if(!Array[_0x540ba4(0xd7,0xd2)](_0x15e32a))continue;const _0x903232=_0x15e32a[0x0];if(_0x903232===_0x540ba4(0x122,0x158)){const _0x3af467=_0x15e32a[0x1];let _0x3f7d89=undefined;if(_0x3af467===_0x540ba4(0x123,0x14f)&&_0x569921['reference']!==undefined)_0x3f7d89='`'+_0x569921['reference']+'`';else{if(_0x3af467==='`Value`'&&_0x569921[_0x540ba4(0x124,0x114)]!==undefined)_0x3f7d89='`'+_0x569921['value']+'`';else{if(_0x3af467===_0x540ba4(0x125,0x134)&&_0x569921['footprint']!==undefined)_0x3f7d89='`'+_0x569921['footprint']+'`';else{if(_0x3af467==='`Datasheet`'&&_0x569921['datasheet']!==undefined){const _0x365b6f=_0x569921['datasheet']['replace'](/[()"`±]/g,'')['replace'](/\s+/g,'\x20')['trim']();_0x3f7d89='`'+_0x365b6f+'`';}else{if(_0x3af467==='`Description`'&&_0x569921['description']!==undefined){const _0x324d47=_0x569921[_0x540ba4(0x126,0x129)]['replace'](/\([^)]*\)/g,'')['replace'](/[()"`±]/g,'')['replace'](/\s+/g,'\x20')['trim']();_0x3f7d89='`'+_0x324d47+'`';}else{if(_0x3af467===_0x540ba4(0x127,0x103)&&_0x569921['mpn']!==undefined){const _0x5961e0=_0x569921[_0x540ba4(0x128,0x112)][_0x540ba4(0x120,0x13f)](/[()"`±]/g,'')['replace'](/\s+/g,'\x20')[_0x540ba4(0x129,0x14d)]();_0x3f7d89='`'+_0x5961e0+'`';}}}}}}let _0x1a5784=-0x1;for(let _0x661958=0x2;_0x661958<_0x15e32a['length'];_0x661958++){if(Array['isArray'](_0x15e32a[_0x661958])){_0x1a5784=_0x661958;break;}}const _0x358217=_0x1a5784===-0x1?_0x15e32a['length']-0x2:_0x1a5784-0x2;if(_0x358217>0x0){let _0x418bf5='';for(let _0x8e9759=0x2;_0x8e9759<0x2+_0x358217;_0x8e9759++){typeof _0x15e32a[_0x8e9759]==='string'&&(_0x418bf5+=_0x15e32a[_0x8e9759]);}const _0xdc9d18=_0x418bf5['replace'](/\([^)]*\)/g,'')['replace'](/[()"`±]/g,'')['replace'](/\s+/g,'\x20')['trim']();_0x15e32a['splice'](0x2,_0x358217,_0xdc9d18);}if(_0x3f7d89!==undefined){_0x1a5784=-0x1;for(let _0x2468be=0x2;_0x2468be<_0x15e32a['length'];_0x2468be++){if(Array['isArray'](_0x15e32a[_0x2468be])){_0x1a5784=_0x2468be;break;}}const _0x37b768=_0x1a5784===-0x1?_0x15e32a['length']-0x2:_0x1a5784-0x2;_0x37b768>=0x0?_0x15e32a[_0x540ba4(0x116,0xdf)](0x2,Math['max'](0x0,_0x37b768),_0x3f7d89):_0x15e32a['splice'](0x2,0x0,_0x3f7d89);}if(_0x569921['pcb']?.['side']==='back'){for(let _0x4a931c=0x0;_0x4a931c<_0x15e32a['length'];_0x4a931c++){if(Array['isArray'](_0x15e32a[_0x4a931c])&&_0x15e32a[_0x4a931c][0x0]==='at'){const _0x1075fe=_0x15e32a[_0x4a931c];if(_0x1075fe[_0x540ba4(0xe8,0x10e)]>=0x3){_0x1075fe[0x2]=-parseFloat(String(_0x1075fe[0x2]));if(_0x1075fe['length']===0x3)_0x1075fe['push'](0xb4);else _0x1075fe['length']===0x4&&(_0x1075fe[0x3]=(parseFloat(String(_0x1075fe[0x3]))+0xb4)%0x168);}break;}}for(let _0x1c93d8=0x0;_0x1c93d8<_0x15e32a['length'];_0x1c93d8++){if(Array['isArray'](_0x15e32a[_0x1c93d8])&&_0x15e32a[_0x1c93d8][0x0]===_0x540ba4(0x12a,0x12c)){const _0x3dde0f=_0x15e32a[_0x1c93d8];let _0x130728=![];for(let _0x5d8346=0x0;_0x5d8346<_0x3dde0f[_0x540ba4(0xe8,0xdc)];_0x5d8346++){if(Array['isArray'](_0x3dde0f[_0x5d8346])&&_0x3dde0f[_0x5d8346][0x0]==='justify'){!_0x3dde0f[_0x5d8346]['includes']('mirror')&&_0x3dde0f[_0x5d8346][_0x540ba4(0xea,0xd9)]('mirror');_0x130728=!![];break;}}!_0x130728&&_0x3dde0f['push'](['justify','mirror']);break;}}}}else{if(_0x903232==='fp_text'){const _0x22a344=String(_0x15e32a[0x1])['toLowerCase']();if(_0x22a344==='reference'&&_0x569921['reference']!==undefined)_0x15e32a[0x2]='`'+_0x569921['reference']+'`';else _0x22a344===_0x540ba4(0x124,0xef)&&_0x569921['value']!==undefined&&(_0x15e32a[0x2]='`'+_0x569921['value']+'`');if(_0x569921['pcb']?.['side']==='back'){for(let _0x41fd77=0x0;_0x41fd77<_0x15e32a[_0x540ba4(0xe8,0xdd)];_0x41fd77++){if(Array[_0x540ba4(0xd7,0xb4)](_0x15e32a[_0x41fd77])&&_0x15e32a[_0x41fd77][0x0]==='at'){const _0x36de0d=_0x15e32a[_0x41fd77];if(_0x36de0d['length']>=0x3){_0x36de0d[0x2]=-parseFloat(String(_0x36de0d[0x2]));if(_0x36de0d['length']===0x3)_0x36de0d['push'](0xb4);else _0x36de0d['length']===0x4&&(_0x36de0d[0x3]=(parseFloat(String(_0x36de0d[0x3]))+0xb4)%0x168);}break;}}for(let _0x3f1e4d=0x0;_0x3f1e4d<_0x15e32a['length'];_0x3f1e4d++){if(Array['isArray'](_0x15e32a[_0x3f1e4d])&&_0x15e32a[_0x3f1e4d][0x0]==='effects'){const _0x283136=_0x15e32a[_0x3f1e4d];let _0x16f965=![];for(let _0xbdf418=0x0;_0xbdf418<_0x283136['length'];_0xbdf418++){if(Array['isArray'](_0x283136[_0xbdf418])&&_0x283136[_0xbdf418][0x0]==='justify'){!_0x283136[_0xbdf418]['includes'](_0x540ba4(0x12b,0xfa))&&_0x283136[_0xbdf418][_0x540ba4(0xea,0xee)]('mirror');_0x16f965=!![];break;}}!_0x16f965&&_0x283136['push'](['justify',_0x540ba4(0x12b,0x13c)]);break;}}}}else{if(_0x903232==='pad'){const _0x3c4560=_0x15e32a['length']>0x1?String(_0x15e32a[0x1])['replace'](/["`]/g,''):'',_0x22fb8b=__classPrivateFieldGet(this,_PCB_instances,'m',_PCB_resolveNet)['call'](this,_0x569921['reference']||'',_0x3c4560,undefined,_0x98b0e6);for(let _0x29fd59=0x2;_0x29fd59<_0x15e32a['length'];_0x29fd59++){if(Array['isArray'](_0x15e32a[_0x29fd59])&&_0x15e32a[_0x29fd59][0x0]==='at'){const _0x5da515=_0x15e32a[_0x29fd59];_0x569921['pcb']?.['side']==='back'&&_0x5da515['length']>=0x3&&(_0x5da515[0x2]=-parseFloat(String(_0x5da515[0x2])));if(_0x5da515[_0x540ba4(0xe8,0xdd)]===0x3){let _0x58fba2=_0x569921[_0x540ba4(0xe4,0xf3)][_0x540ba4(0x11e,0x150)]||0x0;_0x569921[_0x540ba4(0xe4,0xf5)]?.['side']==='back'&&(_0x58fba2=(0x168-_0x58fba2)%0x168),_0x5da515['push'](_0x58fba2);}else{if(_0x5da515['length']===0x4){let _0x223836=_0x569921['pcb'][_0x540ba4(0x11e,0x125)]||0x0;const _0x39bfb6=parseFloat(String(_0x5da515[0x3]));if(_0x569921['pcb']?.[_0x540ba4(0x12c,0x15b)]==='back'){const _0x134a5e=(0x168-_0x223836)%0x168,_0x49482d=(0x168-_0x39bfb6)%0x168;_0x5da515[0x3]=(_0x134a5e+_0x49482d)%0x168;}else _0x5da515[0x3]=_0x223836-_0x39bfb6;}}break;}}for(let _0x12161c=0x2;_0x12161c<_0x15e32a['length'];_0x12161c++){if(Array['isArray'](_0x15e32a[_0x12161c])&&_0x15e32a[_0x12161c][0x0]===_0x540ba4(0x12d,0x166)){const _0x4ab39d=_0x15e32a[_0x12161c];let _0x439f85=![];for(let _0x38e679=0x1;_0x38e679<_0x4ab39d[_0x540ba4(0xe8,0x123)];_0x38e679++){const _0x20b715=_0x4ab39d[_0x38e679];if(typeof _0x20b715==='string'){const _0x581075=String(_0x20b715)['replace'](/[`\"]/g,''),_0x3a2a14=mapLayerToSide(_0x581075,_0x569921['pcb']?.['side']);if(_0x3a2a14!==_0x581075){const _0x24d96e=_0x20b715['match'](/^[`\"]/)?.[0x0]||'\x22';_0x4ab39d[_0x38e679]=_0x24d96e+_0x3a2a14+(_0x24d96e==='`'?'`':'\x22'),_0x439f85=!![];}}}if(!_0x439f85){}else{}break;}}let _0xed225d=![],_0x194f7d=![];for(let _0x3d0e14=0x2;_0x3d0e14<_0x15e32a['length'];_0x3d0e14++){if(Array['isArray'](_0x15e32a[_0x3d0e14])){if(_0x15e32a[_0x3d0e14][0x0]===_0x540ba4(0x12e,0x143))_0x15e32a[_0x3d0e14][0x1]=_0x22fb8b['netCode'],_0x15e32a[_0x3d0e14][0x2]=_0x22fb8b['netName']?'`'+_0x22fb8b['netName']+'`':'``',_0xed225d=!![];else _0x15e32a[_0x3d0e14][0x0]==='pintype'&&(_0x15e32a[_0x3d0e14][0x1]=_0x540ba4(0x12f,0x141),_0x194f7d=!![]);}}!_0xed225d&&_0x15e32a['push'](['net',_0x22fb8b['netCode'],_0x22fb8b['netName']?'`'+_0x22fb8b['netName']+'`':'``']);!_0x194f7d&&_0x15e32a['push'](['pintype','`passive`']);if(_0x569921[_0x540ba4(0xe4,0x11b)]?.['side']==='back')for(let _0x595669=0x2;_0x595669<_0x15e32a['length'];_0x595669++){if(Array['isArray'](_0x15e32a[_0x595669])&&_0x15e32a[_0x595669][0x0]==='chamfer'&&_0x15e32a[_0x595669][_0x540ba4(0xe8,0x116)]>0x1){const _0x54ed65=_0x15e32a[_0x595669][0x1],_0x18b093=mirrorChamferDirection(_0x54ed65);if(_0x18b093!==_0x54ed65){const _0x75ade0=String(_0x54ed65)[_0x540ba4(0x130,0x14b)](/^[`"]/)?.[0x0]||'',_0x19fac9=_0x18b093['replace'](/[`"]/g,'');_0x15e32a[_0x595669][0x1]=_0x75ade0?_0x75ade0+_0x19fac9+_0x75ade0:_0x19fac9;}}}}else{if(_0x569921['pcb']?.['side']===_0x540ba4(0x131,0x14e)&&(_0x903232==='fp_line'||_0x903232==='fp_circle'||_0x903232==='fp_arc'||_0x903232==='fp_rect'||_0x903232===_0x540ba4(0x132,0x109)||_0x903232==='fp_text'||_0x903232==='fp_text_box'||_0x903232==='fp_curve')){for(let _0x307a56=0x0;_0x307a56<_0x15e32a['length'];_0x307a56++){if(Array[_0x540ba4(0xd7,0xd4)](_0x15e32a[_0x307a56])){const _0x2428bf=_0x15e32a[_0x307a56][0x0];if((_0x2428bf==='start'||_0x2428bf===_0x540ba4(0x133,0x104))&&_0x15e32a[_0x307a56]['length']>=0x3)_0x15e32a[_0x307a56][0x2]=-parseFloat(String(_0x15e32a[_0x307a56][0x2]));else{if(_0x2428bf==='center'&&_0x15e32a[_0x307a56]['length']>=0x3)_0x15e32a[_0x307a56][0x2]=-parseFloat(String(_0x15e32a[_0x307a56][0x2]));else{if(_0x2428bf==='mid'&&_0x15e32a[_0x307a56]['length']>=0x3)_0x15e32a[_0x307a56][0x2]=-parseFloat(String(_0x15e32a[_0x307a56][0x2]));else{if(_0x2428bf==='pts')for(let _0x813e0b=0x1;_0x813e0b<_0x15e32a[_0x307a56]['length'];_0x813e0b++){Array['isArray'](_0x15e32a[_0x307a56][_0x813e0b])&&_0x15e32a[_0x307a56][_0x813e0b][0x0]==='xy'&&_0x15e32a[_0x307a56][_0x813e0b]['length']>=0x3&&(_0x15e32a[_0x307a56][_0x813e0b][0x2]=-parseFloat(String(_0x15e32a[_0x307a56][_0x813e0b][0x2])));}}}}}}if(_0x903232===_0x540ba4(0x134,0x14a)||_0x903232===_0x540ba4(0x135,0x152)){for(let _0x170075=0x0;_0x170075<_0x15e32a['length'];_0x170075++){if(Array['isArray'](_0x15e32a[_0x170075])&&_0x15e32a[_0x170075][0x0]==='at'){const _0x4d9902=_0x15e32a[_0x170075];if(_0x4d9902['length']>=0x3){_0x4d9902[0x2]=-parseFloat(String(_0x4d9902[0x2]));if(_0x4d9902[_0x540ba4(0xe8,0xaf)]===0x3)_0x4d9902['push'](0xb4);else _0x4d9902['length']===0x4&&(_0x4d9902[0x3]=(parseFloat(String(_0x4d9902[0x3]))+0xb4)%0x168);}break;}}for(let _0x47a9c1=0x0;_0x47a9c1<_0x15e32a[_0x540ba4(0xe8,0xf4)];_0x47a9c1++){if(Array[_0x540ba4(0xd7,0xc4)](_0x15e32a[_0x47a9c1])&&_0x15e32a[_0x47a9c1][0x0]==='effects'){const _0x12c5e2=_0x15e32a[_0x47a9c1];let _0x795acb=![];for(let _0xff0c96=0x0;_0xff0c96<_0x12c5e2[_0x540ba4(0xe8,0xe0)];_0xff0c96++){if(Array['isArray'](_0x12c5e2[_0xff0c96])&&_0x12c5e2[_0xff0c96][0x0]==='justify'){!_0x12c5e2[_0xff0c96]['includes']('mirror')&&_0x12c5e2[_0xff0c96]['push']('mirror');_0x795acb=!![];break;}}!_0x795acb&&_0x12c5e2['push'](['justify',_0x540ba4(0x12b,0x154)]);break;}}}}}}}}{const _0x5ca7d9=formatSourceInfoForProperty(_0x569921['sourceInfo']),_0x29bfc0=_0x5ca7d9&&_0x5ca7d9['length']>0x0?'`'+_0x5ca7d9+'`':'``';if(_0xcf63a)for(let _0x2ab7de=0x0;_0x2ab7de<_0x2b7774[_0x540ba4(0xe8,0xc4)];_0x2ab7de++){if(Array['isArray'](_0x2b7774[_0x2ab7de])&&_0x2b7774[_0x2ab7de][0x0]==='property'){const _0x4cfb04=String(_0x2b7774[_0x2ab7de][0x1])['replace'](/[`\"]/g,'');if(_0x4cfb04===_0x540ba4(0x121,0x124)){let _0xe438c4=-0x1;for(let _0x15e0e5=0x2;_0x15e0e5<_0x2b7774[_0x2ab7de]['length'];_0x15e0e5++){if(Array['isArray'](_0x2b7774[_0x2ab7de][_0x15e0e5])){_0xe438c4=_0x15e0e5;break;}}const _0xf004e9=_0xe438c4===-0x1?_0x2b7774[_0x2ab7de]['length']-0x2:_0xe438c4-0x2;_0x2b7774[_0x2ab7de][_0x540ba4(0x116,0x110)](0x2,Math['max'](0x0,_0xf004e9),_0x29bfc0);let _0x37dd3a=![],_0x25c9c7=![],_0x30e975=![],_0x385149=![],_0xe4ad76=![];for(let _0x5155af=0x2;_0x5155af<_0x2b7774[_0x2ab7de]['length'];_0x5155af++){if(Array['isArray'](_0x2b7774[_0x2ab7de][_0x5155af])){const _0x3d2794=_0x2b7774[_0x2ab7de][_0x5155af][0x0];if(_0x3d2794==='hide')_0x37dd3a=!![];if(_0x3d2794==='layer')_0x25c9c7=!![];if(_0x3d2794==='effects')_0x30e975=!![];if(_0x3d2794==='at')_0x385149=!![];if(_0x3d2794==='uuid')_0xe4ad76=!![];}}if(!_0x37dd3a)_0x2b7774[_0x2ab7de]['push']([_0x540ba4(0x136,0x152),'yes']);if(!_0x25c9c7)_0x2b7774[_0x2ab7de]['push']([_0x540ba4(0x11c,0xfb),'\x22F.Fab\x22']);if(!_0x385149)_0x2b7774[_0x2ab7de]['push'](['at',0x0,0x0,0x0]);if(!_0xe4ad76)_0x2b7774[_0x2ab7de][_0x540ba4(0xea,0x111)](['uuid','`'+generateUuid()+'`']);if(!_0x30e975)_0x2b7774[_0x2ab7de]['push'](['effects',['font',['size',0x1,0x1],[_0x540ba4(0xf5,0x111),0.15]]]);break;}}}else{let _0x4e8752=_0x2b7774[_0x540ba4(0xe8,0xd6)];for(let _0x2b6613=0x0;_0x2b6613<_0x2b7774['length'];_0x2b6613++){if(Array['isArray'](_0x2b7774[_0x2b6613])&&_0x2b7774[_0x2b6613][0x0]==='property')_0x4e8752=_0x2b6613+0x1;}const _0x3df3c7=['property',_0x540ba4(0x137,0x11a),_0x29bfc0,['at',0x0,0x0,0x0],['layer','\x22F.Fab\x22'],['hide','yes'],['uuid','`'+generateUuid()+'`'],['effects',['font',['size',0x1,0x1],['thickness',0.15]]]];_0x2b7774['splice'](_0x4e8752,0x0,_0x3df3c7);}}return _0x2b7774;},_PCB__create_footprint_node=function _PCB__create_footprint_node(_0x1c5d60,_0x3adb1e){let _0x46ed4f;try{_0x46ed4f=_0x1c5d60['footprint_lib'](_0x1c5d60[_0x29bd4b(0x24a,0x212)])[_0x29bd4b(0x202,0x231)]('\x22','`');}catch(_0x24a0ff){throw new Error('['+(_0x1c5d60['reference']||'Unknown')+',\x20'+(_0x1c5d60['value']||'Unknown')+',\x20'+_0x1c5d60[_0x29bd4b(0x201,0x212)]+_0x29bd4b(0x25b,0x232)+_0x24a0ff['message']);}let _0x264d21;try{_0x264d21=a9_0x3af7a3(_0x46ed4f)['pop']();if(_0x264d21===undefined||!Array['isArray'](_0x264d21))throw new Error(_0x29bd4b(0x224,0x233));}catch(_0x3ba587){throw new Error('['+(_0x1c5d60['reference']||'Unknown')+',\x20'+(_0x1c5d60[_0x29bd4b(0x231,0x21d)]||_0x29bd4b(0x21d,0x234))+',\x20'+_0x1c5d60['footprint']+']\x20Failed\x20to\x20parse\x20footprint:\x20'+_0x3ba587['message']);}_0x1c5d60['pcb']['rotation']=_0x1c5d60['pcb']['rotation']??0x0,_0x264d21['splice'](0x2,0x0,['at\x20'+_0x1c5d60['pcb']['x']+'\x20'+_0x1c5d60['pcb']['y']+'\x20'+_0x1c5d60['pcb'][_0x29bd4b(0x213,0x217)]]),_0x264d21['splice'](0x2,0x0,['uuid\x20`'+_0x1c5d60['uuid']+'`']);const _0x1db3d4=_0x1c5d60['pcb']?.['side']==='back'?'\x22B.Cu\x22':'\x22F.Cu\x22';let _0x5c2542=![];for(let _0x2c6ac0=0x0;_0x2c6ac0<_0x264d21['length'];_0x2c6ac0++){if(Array[_0x29bd4b(0x19e,0x1d0)](_0x264d21[_0x2c6ac0])&&_0x264d21[_0x2c6ac0][0x0]==='layer'){_0x264d21[_0x2c6ac0][0x1]=_0x1db3d4,_0x5c2542=!![];break;}}!_0x5c2542&&_0x264d21['splice'](0x2,0x0,['layer',_0x1db3d4]);_0x264d21[0x1]='`'+_0x1c5d60['footprint']+'`';function _0x29bd4b(_0x49f46d,_0x43434b){return a9_0x14b2(_0x43434b-0x1cb,_0x49f46d);}for(let _0x13a3c6=0x0;_0x13a3c6<_0x264d21['length'];_0x13a3c6++){if(Array['isArray'](_0x264d21[_0x13a3c6])){if(_0x264d21[_0x13a3c6][0x0]==='layer'&&(_0x264d21[_0x13a3c6][0x1]==='\x22F.Cu\x22'||_0x264d21[_0x13a3c6][0x1]===_0x29bd4b(0x246,0x213))){let _0x264895=![];_0x264d21['indexOf'](_0x264d21[_0x13a3c6])<0x5&&_0x264d21[_0x13a3c6][0x1]===_0x1db3d4&&(_0x264895=!![]),!_0x264895&&(_0x264d21[_0x13a3c6]=transformSexprLayers(_0x264d21[_0x13a3c6],_0x1c5d60['pcb']?.[_0x29bd4b(0x23a,0x225)]));}else _0x264d21[_0x13a3c6]=transformSexprLayers(_0x264d21[_0x13a3c6],_0x1c5d60[_0x29bd4b(0x209,0x1dd)]?.['side']);}}for(var _0x8d59ad in _0x264d21){if(!Array['isArray'](_0x264d21[_0x8d59ad]))continue;const _0x400a60=_0x264d21[_0x8d59ad][0x0];if(_0x400a60==='property'){const _0x1a1149=String(_0x264d21[_0x8d59ad][0x1]);let _0x2f1672=undefined;if(_0x1a1149==='`Reference`'&&_0x1c5d60[_0x29bd4b(0x205,0x20a)]!==undefined)_0x2f1672=_0x1c5d60['reference'];else{if(_0x1a1149==='`Value`'&&_0x1c5d60['value']!==undefined)_0x2f1672=_0x1c5d60[_0x29bd4b(0x1f4,0x21d)];else{if(_0x1a1149==='`Footprint`'&&_0x1c5d60['footprint']!==undefined)_0x2f1672=_0x1c5d60['footprint'];else{if(_0x1a1149===_0x29bd4b(0x22f,0x235)&&_0x1c5d60['datasheet']!==undefined)_0x2f1672=_0x1c5d60['datasheet'][_0x29bd4b(0x1f8,0x219)](/[()"`±]/g,'')['replace'](/\s+/g,'\x20')[_0x29bd4b(0x232,0x222)]();else{if(_0x1a1149==='`Description`'&&_0x1c5d60['description']!==undefined)_0x2f1672=_0x1c5d60['description']['replace'](/\([^)]*\)/g,'')[_0x29bd4b(0x23b,0x219)](/[()"`±]/g,'')['replace'](/\s+/g,'\x20')['trim']();else _0x1a1149==='`MPN`'&&_0x1c5d60['mpn']!==undefined&&(_0x2f1672=_0x1c5d60['mpn']['replace'](/[()"`±]/g,'')['replace'](/\s+/g,'\x20')['trim']());}}}}if(_0x2f1672!==undefined){const _0x758522='`'+_0x2f1672+'`';let _0x1dfd2b=-0x1;for(let _0x2eea2b=0x2;_0x2eea2b<_0x264d21[_0x8d59ad]['length'];_0x2eea2b++){if(Array['isArray'](_0x264d21[_0x8d59ad][_0x2eea2b])){_0x1dfd2b=_0x2eea2b;break;}}const _0x149e64=_0x1dfd2b===-0x1?_0x264d21[_0x8d59ad]['length']-0x2:_0x1dfd2b-0x2;_0x149e64>=0x0?_0x264d21[_0x8d59ad]['splice'](0x2,Math['max'](0x0,_0x149e64),_0x758522):_0x264d21[_0x8d59ad]['splice'](0x2,0x0,_0x758522);}if(_0x1c5d60['pcb']?.['side']==='back'){for(let _0x4a5f2d=0x0;_0x4a5f2d<_0x264d21[_0x8d59ad][_0x29bd4b(0x1aa,0x1e1)];_0x4a5f2d++){if(Array['isArray'](_0x264d21[_0x8d59ad][_0x4a5f2d])&&_0x264d21[_0x8d59ad][_0x4a5f2d][0x0]==='at'){const _0x1f8f28=_0x264d21[_0x8d59ad][_0x4a5f2d];if(_0x1f8f28['length']>=0x3){_0x1f8f28[0x2]=-parseFloat(String(_0x1f8f28[0x2]));if(_0x1f8f28[_0x29bd4b(0x1f3,0x1e1)]===0x3)_0x1f8f28['push'](0xb4);else _0x1f8f28[_0x29bd4b(0x218,0x1e1)]===0x4&&(_0x1f8f28[0x3]=(parseFloat(String(_0x1f8f28[0x3]))+0xb4)%0x168);}break;}}for(let _0xf6b76e=0x0;_0xf6b76e<_0x264d21[_0x8d59ad]['length'];_0xf6b76e++){if(Array['isArray'](_0x264d21[_0x8d59ad][_0xf6b76e])&&_0x264d21[_0x8d59ad][_0xf6b76e][0x0]==='effects'){const _0x5cd040=_0x264d21[_0x8d59ad][_0xf6b76e];let _0x2e34b=![];for(let _0x43581a=0x0;_0x43581a<_0x5cd040['length'];_0x43581a++){if(Array['isArray'](_0x5cd040[_0x43581a])&&_0x5cd040[_0x43581a][0x0]==='justify'){!_0x5cd040[_0x43581a]['includes'](_0x29bd4b(0x1f2,0x224))&&_0x5cd040[_0x43581a]['push']('mirror');_0x2e34b=!![];break;}}!_0x2e34b&&_0x5cd040['push'](['justify','mirror']);break;}}}}if(_0x400a60==='pad'){const _0x3c110d=_0x264d21[_0x8d59ad]['length']>0x1?String(_0x264d21[_0x8d59ad][0x1])['replace'](/["`]/g,''):'',_0x3fbba7=__classPrivateFieldGet(this,_PCB_instances,'m',_PCB_resolveNet)[_0x29bd4b(0x206,0x1ce)](this,_0x1c5d60['reference']||'',_0x3c110d,undefined,_0x3adb1e);for(let _0x3b8949=0x2;_0x3b8949<_0x264d21[_0x8d59ad]['length'];_0x3b8949++){if(Array['isArray'](_0x264d21[_0x8d59ad][_0x3b8949])&&_0x264d21[_0x8d59ad][_0x3b8949][0x0]==='at'){const _0x5d2384=_0x264d21[_0x8d59ad][_0x3b8949];_0x1c5d60[_0x29bd4b(0x1c9,0x1dd)]?.['side']==='back'&&_0x5d2384[_0x29bd4b(0x201,0x1e1)]>=0x3&&(_0x5d2384[0x2]=-parseFloat(String(_0x5d2384[0x2])));if(_0x5d2384['length']===0x3){let _0x1d7529=_0x1c5d60['pcb'][_0x29bd4b(0x1fb,0x217)]||0x0;_0x1c5d60[_0x29bd4b(0x1db,0x1dd)]?.['side']==='back'&&(_0x1d7529=(0x168-_0x1d7529)%0x168),_0x5d2384['push'](_0x1d7529);}else{if(_0x5d2384[_0x29bd4b(0x1c0,0x1e1)]===0x4){let _0x1228ce=_0x1c5d60['pcb']['rotation']||0x0;const _0x382947=parseFloat(String(_0x5d2384[0x3]));if(_0x1c5d60['pcb']?.['side']===_0x29bd4b(0x1f1,0x22a)){const _0x595984=(0x168-_0x1228ce)%0x168,_0x21a8e8=(0x168-_0x382947)%0x168;_0x5d2384[0x3]=(_0x595984+_0x21a8e8)%0x168;}else _0x5d2384[0x3]=_0x1228ce-_0x382947;}}break;}}for(let _0x482189=0x2;_0x482189<_0x264d21[_0x8d59ad]['length'];_0x482189++){if(Array['isArray'](_0x264d21[_0x8d59ad][_0x482189])&&_0x264d21[_0x8d59ad][_0x482189][0x0]==='layers'){const _0xba8b01=_0x264d21[_0x8d59ad][_0x482189];let _0x332047=![];for(let _0x3efd7e=0x1;_0x3efd7e<_0xba8b01['length'];_0x3efd7e++){const _0x24e152=_0xba8b01[_0x3efd7e];if(typeof _0x24e152==='string'){const _0x96e10d=String(_0x24e152)[_0x29bd4b(0x1df,0x219)](/[`\"]/g,''),_0x2bf810=mapLayerToSide(_0x96e10d,_0x1c5d60['pcb']?.['side']);if(_0x2bf810!==_0x96e10d){const _0x2619ad=_0x24e152['match'](/^[`\"]/)?.[0x0]||'\x22';_0xba8b01[_0x3efd7e]=_0x2619ad+_0x2bf810+(_0x2619ad==='`'?'`':'\x22'),_0x332047=!![];}}}if(!_0x332047){}else{}break;}}let _0x286ed9=![],_0x6df6be=![];for(let _0xb0caba=0x2;_0xb0caba<_0x264d21[_0x8d59ad]['length'];_0xb0caba++){if(Array['isArray'](_0x264d21[_0x8d59ad][_0xb0caba])){if(_0x264d21[_0x8d59ad][_0xb0caba][0x0]==='net')_0x264d21[_0x8d59ad][_0xb0caba][0x1]=_0x3fbba7[_0x29bd4b(0x23d,0x236)],_0x264d21[_0x8d59ad][_0xb0caba][0x2]=_0x3fbba7['netName']?'`'+_0x3fbba7['netName']+'`':'``',_0x286ed9=!![];else _0x264d21[_0x8d59ad][_0xb0caba][0x0]==='pintype'&&(_0x264d21[_0x8d59ad][_0xb0caba][0x1]='`passive`',_0x6df6be=!![]);}}!_0x286ed9&&_0x264d21[_0x8d59ad][_0x29bd4b(0x215,0x1e3)](['net',_0x3fbba7[_0x29bd4b(0x214,0x236)],_0x3fbba7['netName']?'`'+_0x3fbba7['netName']+'`':'``']);!_0x6df6be&&_0x264d21[_0x8d59ad]['push'](['pintype','`passive`']);if(_0x1c5d60['pcb']?.['side']==='back')for(let _0x480e57=0x2;_0x480e57<_0x264d21[_0x8d59ad]['length'];_0x480e57++){if(Array['isArray'](_0x264d21[_0x8d59ad][_0x480e57])&&_0x264d21[_0x8d59ad][_0x480e57][0x0]==='chamfer'&&_0x264d21[_0x8d59ad][_0x480e57]['length']>0x1){const _0x1bc7d0=_0x264d21[_0x8d59ad][_0x480e57][0x1],_0x30b666=mirrorChamferDirection(_0x1bc7d0);if(_0x30b666!==_0x1