diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 3c9a7fb..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,13 +0,0 @@ -# These are supported funding model platforms - -github: [mrzealot] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry -custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.gitignore b/.gitignore index e6f3c82..d8034db 100644 --- a/.gitignore +++ b/.gitignore @@ -124,6 +124,3 @@ kicad/45treus/main.kicad_pcb kicad/45treus/gerber_v*/*.gbr kicad/45treus/gerber_v*/*.gbrjob kicad/45treus/gerber_v*/*.drl - -kicad/23creus/23creus-backups -kicad/23creus/fp-info-cache diff --git a/23creus.yaml b/23creus.yaml index 54e288b..b3c3889 100644 --- a/23creus.yaml +++ b/23creus.yaml @@ -1,4 +1,3 @@ -# yaml-language-server: $schema=./meta/schema.json units: kx: cx ky: cy @@ -7,6 +6,26 @@ units: step: .5 points: + key: + footprints: + mx_hotswap: + type: choc + params: + hotswap: true + reverse: false + keycaps: true + nets: + from: =colrow + to: =column_net + diode: + type: diode + nets: + from: =colrow + to: =row_net + anchor: + shift: [0, -5] + rotate: 180 + zones: matrix: columns: @@ -15,39 +34,37 @@ points: column_net: P21 mirror: { column_net: P2 } ring: + spread: kx + step + stagger: 4 key: - stagger: 4 - spread: kx + step column_net: P20 mirror: { column_net: P3 } middle: + spread: kx + step + stagger: 5 key: - stagger: 5 - spread: kx + step column_net: P19 mirror: { column_net: P4 } index: + spread: kx + step + stagger: -5 key: - stagger: -5 - spread: kx + step column_net: P18 mirror: { column_net: P5 } inner: + spread: kx + step + stagger: -6 key: - stagger: -6 - spread: kx + step column_net: P15 mirror: { column_net: P6 } thumb: - rows: + spread: kx + step + stagger: 10 + row_overrides: bottom: - skip: false key: - skip: true - spread: kx + step - stagger: 10 column_net: P14 - mirror: { column_net: P7 } + mirror: { column_net: P7} rows: bottom: row_net: P16 @@ -67,205 +84,187 @@ points: distance: 42 outlines: - # outer border - farouter: - - what: polygon - points: - - ref: matrix_inner_num - shift: [13, 13] - - ref: matrix_middle_num - shift: [13, 13] - - ref: matrix_middle_num - shift: [-13, 13] - - ref: matrix_pinky_num - shift: [-13, 13] - - ref: matrix_pinky_bottom - shift: [-13, -13] - - ref: matrix_pinky_bottom - shift: [13, -13] - - ref: matrix_inner_bottom - shift: [-13, -13] - - ref: matrix_inner_bottom - shift: [13, -13] - - ref: mirror_matrix_inner_bottom - shift: [13, -13] - - ref: mirror_matrix_inner_bottom - shift: [-13, -13] - - ref: mirror_matrix_pinky_bottom - shift: [13, -13] - - ref: mirror_matrix_pinky_bottom - shift: [-13, -13] - - ref: mirror_matrix_pinky_num - shift: [-13, 13] - - ref: mirror_matrix_middle_num - shift: [-13, 13] - - ref: mirror_matrix_middle_num - shift: [13, 13] - - ref: mirror_matrix_inner_num - shift: [13, 13] + exports: + # outer border + outer: + - type: polygon + points: + - ref: matrix_inner_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [10, 10] + - ref: matrix_middle_num + shift: [-10, 10] + - ref: matrix_pinky_num + shift: [-10, 10] + - ref: matrix_pinky_bottom + shift: [-10, -10] + - ref: matrix_pinky_bottom + shift: [10, -10] + - ref: matrix_inner_bottom + shift: [-10, -10] + - ref: matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [10, -10] + - ref: mirror_matrix_inner_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [10, -10] + - ref: mirror_matrix_pinky_bottom + shift: [-10, -10] + - ref: mirror_matrix_pinky_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [-10, 10] + - ref: mirror_matrix_middle_num + shift: [10, 10] + - ref: mirror_matrix_inner_num + shift: [10, 10] - compatouter: - - what: polygon - points: - - ref: matrix_inner_num - shift: [11, 11] - - ref: matrix_middle_num - shift: [11, 11] - - ref: matrix_middle_num - shift: [-11, 11] - - ref: matrix_pinky_num - shift: [-11, 11] - - ref: matrix_pinky_bottom - shift: [-11, -11] - - ref: matrix_pinky_bottom - shift: [11, -11] - - ref: matrix_inner_bottom - shift: [-11, -11] - - ref: matrix_inner_bottom - shift: [11, -11] - - ref: mirror_matrix_inner_bottom - shift: [11, -11] - - ref: mirror_matrix_inner_bottom - shift: [-11, -11] - - ref: mirror_matrix_pinky_bottom - shift: [11, -11] - - ref: mirror_matrix_pinky_bottom - shift: [-11, -11] - - ref: mirror_matrix_pinky_num - shift: [-11, 11] - - ref: mirror_matrix_middle_num - shift: [-11, 11] - - ref: mirror_matrix_middle_num - shift: [11, 11] - - ref: mirror_matrix_inner_num - shift: [11, 11] - - outer: - - what: polygon - points: - - ref: matrix_inner_num - shift: [10, 10] - - ref: matrix_middle_num - shift: [10, 10] - - ref: matrix_middle_num - shift: [-10, 10] - - ref: matrix_pinky_num - shift: [-10, 10] - - ref: matrix_pinky_bottom - shift: [-10, -10] - - ref: matrix_pinky_bottom - shift: [10, -10] - - ref: matrix_inner_bottom - shift: [-10, -10] - - ref: matrix_inner_bottom - shift: [10, -10] - - ref: mirror_matrix_inner_bottom - shift: [10, -10] - - ref: mirror_matrix_inner_bottom - shift: [-10, -10] - - ref: mirror_matrix_pinky_bottom - shift: [10, -10] - - ref: mirror_matrix_pinky_bottom - shift: [-10, -10] - - ref: mirror_matrix_pinky_num - shift: [-10, 10] - - ref: mirror_matrix_middle_num - shift: [-10, 10] - - ref: mirror_matrix_middle_num - shift: [10, 10] - - ref: mirror_matrix_inner_num - shift: [10, 10] - - # chip - chip: - - what: rectangle - size: [18, 50] - where: - ref: - aggregate.parts: - - matrix_inner_bottom - - mirror_matrix_inner_bottom - shift: [0, 40] - - # 14mm holes for cherry switches - keyholes: - - what: rectangle - where: true - asym: source - size: 13.8 - - # keycaps - keycaps: - - what: rectangle - where: true - asym: source - size: [17.95, 17.5] - - # switchplate - switchplate: - - outer - - -keyholes - - -chip - - # far outer switchplate - farouterswitchplate: - - farouter - - -keyholes - - -chip + farinner: + - type: polygon + points: + - ref: matrix_inner_num + shift: [10, 10.3] + - ref: matrix_middle_num + shift: [10.3, 10.3] + - ref: matrix_middle_num + shift: [-10.3, 10.3] + - ref: matrix_pinky_num + shift: [-10.3, 10.3] + - ref: matrix_pinky_bottom + shift: [-10.3, -10.3] + - ref: matrix_pinky_bottom + shift: [10.3, -10.3] + - ref: matrix_inner_bottom + shift: [-10.3, -10.3] + - ref: matrix_inner_bottom + shift: [10.3, -10.3] + - ref: mirror_matrix_inner_bottom + shift: [10.3, -10.3] + - ref: mirror_matrix_inner_bottom + shift: [-10.3, -10.3] + - ref: mirror_matrix_pinky_bottom + shift: [10.3, -10.3] + - ref: mirror_matrix_pinky_bottom + shift: [-10.3, -10.3] + - ref: mirror_matrix_pinky_num + shift: [-10.3, 10.3] + - ref: mirror_matrix_middle_num + shift: [-10.3, 10.3] + - ref: mirror_matrix_middle_num + shift: [10.3, 10.3] + - ref: mirror_matrix_inner_num + shift: [10, 10.3] + farouter: + - type: polygon + points: + - ref: matrix_inner_num + shift: [10, 12] + - ref: matrix_middle_num + shift: [12, 12] + - ref: matrix_middle_num + shift: [-12, 12] + - ref: matrix_pinky_num + shift: [-12, 12] + - ref: matrix_pinky_bottom + shift: [-12, -12] + - ref: matrix_pinky_bottom + shift: [12, -12] + - ref: matrix_inner_bottom + shift: [-12, -12] + - ref: matrix_inner_bottom + shift: [12, -12] + - ref: mirror_matrix_inner_bottom + shift: [12, -12] + - ref: mirror_matrix_inner_bottom + shift: [-12, -12] + - ref: mirror_matrix_pinky_bottom + shift: [12, -12] + - ref: mirror_matrix_pinky_bottom + shift: [-12, -12] + - ref: mirror_matrix_pinky_num + shift: [-12, 12] + - ref: mirror_matrix_middle_num + shift: [-12, 12] + - ref: mirror_matrix_middle_num + shift: [12, 12] + - ref: mirror_matrix_inner_num + shift: [10, 12] + #- type: keys + # side: both + # size: 20 + # corner: 1 + #- type: polygon + # points: + # - ref: matrix_inner_num + # shift: [0, -5] + # - ref: matrix_thumb_bottom + # shift: [-10, -10] + # - ref: mirror_matrix_thumb_bottom + # shift: [-10, -10] + # - ref: mirror_matrix_inner_num + # shift: [0, -5] + chip: + # cutout for the chip itself + - type: rectangle + size: [18, 50] + anchor: + ref: [matrix_inner_top, mirror_matrix_inner_top] + shift: [-9, -24.5] + # 14mm holes for cherry switches + keyholes: + - type: keys + side: both + size: 13.5 + bound: false + # switchplate + switchplate: + - outer + - -keyholes + - -chip cases: - laser: - - name: farouterswitchplate - extrude: 6.5 - - name: compatouter - extrude: 5.2 + switchp: + - type: outline + name: switchplate + extrude: 1.3 + outercase: + - type: outline + name: farouter + extrude: 6.3 + - type: outline + name: farinner + extrude: 5 shift: [0, 0, 1.3] operation: subtract + - type: outline + name: keyholes + extrude: 1.3 + operation: subtract + - type: outline + name: chip + extrude: 6.3 + operation: subtract pcbs: main: outlines: outer: outline: outer - footprints: - keys: - what: choc - where: true - params: - from: "{{colrow}}" - to: "{{column_net}}" - keycaps: true - hotswap: true - - diode: - what: diode - where: true - params: - from: "{{colrow}}" - to: "{{row_net}}" - adjust: - shift: [0, -5] - rotate: 180 - reset: - what: button - params: + type: button + nets: from: RST to: GND - where: - ref: - aggregate.parts: - - matrix_inner_bottom - - mirror_matrix_inner_bottom + anchor: + ref: [matrix_inner_bottom, mirror_matrix_inner_bottom] rotate: 90 - mcu: - what: promicro - where: + type: promicro + anchor: rotate: 270 - ref: - aggregate.parts: - - matrix_inner_bottom - - mirror_matrix_inner_bottom + ref: [matrix_inner_top, mirror_matrix_inner_top] shift: [0, -4] diff --git a/23treus.yaml b/23treus.yaml index 2984107..a0464ae 100644 --- a/23treus.yaml +++ b/23treus.yaml @@ -27,30 +27,30 @@ points: column_net: P21 mirror: { column_net: P2 } ring: + stagger: 4 key: - stagger: 4 column_net: P20 mirror: { column_net: P3 } middle: + stagger: 5 key: - stagger: 5 column_net: P19 mirror: { column_net: P4 } index: + stagger: -5 key: - stagger: -5 column_net: P18 mirror: { column_net: P5 } inner: + stagger: -6 key: - stagger: -6 column_net: P15 mirror: { column_net: P6 } thumb: + stagger: 10 row_overrides: bottom: key: - stagger: 10 column_net: P14 mirror: { column_net: P7} rows: @@ -145,8 +145,6 @@ outlines: - -keyholes - -chip -cases: - pcbs: main: outlines: diff --git a/Makefile b/Makefile index 60e09c0..e732de1 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: node_modules - node src/cli.js 23creus.yaml -d -o output - cp output/pcbs/main.kicad_pcb kicad/23creus/ + node src/cli.js 23creus.yaml -o output + cp output/pcbs/main.kicad_pcb kicad/45treus/ node_modules: npm ci diff --git a/README.md b/README.md deleted file mode 100644 index ae404e1..0000000 --- a/README.md +++ /dev/null @@ -1,111 +0,0 @@ - -# Ergogen - -***Ergonomic Keyboard Generator*** - -
- - - -The project aims to provide a common configuration format to describe ***ergonomic*** 2D layouts and generate automatic plates, cases, as well as un-routed PCBs for them. The project grew out of (and is an integral part of) the [Absolem keyboard], and shares its [Discord] server as well. - - -
-
-
-
- ---- - -[![Button WebUI]][WebUI] -[![Button Documentation]][Documentation] -[![Button Discord]][Discord] -[![Button Donate]][Donate] - ---- - -
- -
-
- -## Getting Started - -Until there's a proper "Getting started" guide, try getting acquainted with **Ergogen** by following these steps in order: - -
- -1. Read the **[Documentation]**. - - D'uuh. - They're not complete by any measure, but should give you a fairly good idea what you're dealing with here. - -
- -2. Try one of the web-based deployments. - - [![Button Official]][WebUI]    - [![Button Unofficial]][Unofficial] - - The unofficial deployment is probably better, tbh, and will soon be replacing the official one. - Choose either one, then click things, look at outputs and see if things start to make sense. - - There is no need for you to download the **CLI** unless you want to do one of the following: - - - Preview in-development features - - Use custom modifications - - Contribute code - -
- -3. Search the [`ergogen`][Topic] topic on GitHub. - - There, you can look at (and reverse engineer) a variety of real life configs using **Ergogen**. - Pop them into the web UI to see what they do, tinker with them and things should start to make more sense. - -
- -4. If a question persists after all of the above, feel free to ask it over on **[Discord]** and we'll do our best to help you out. - -
- -## Contributions - -Feature ideas, documentation improvements, examples, tests, or pull requests welcome! -Get in touch on our **[Discord]**, and we can definitely find something you can help with, if you'd like to. - -
- -## Sponsors - -Huge thanks go to everyone who chooses to support my work! -But even huger thanks are due to the following, *distinguished* sponsors: - -- [perce](https://madebyperce.com/) -- [Cache](https://github.com/MvEerd) -- [Neil Gilmour](https://github.com/neilgilmour) -- [ochief](https://github.com/ochief) -- [Alyx Brett](https://github.com/alyx-brett) - - - -[Absolem keyboard]: https://zealot.hu/absolem -[Documentation]: https://docs.ergogen.xyz -[Discord]: http://discord.ergogen.xyz -[WebUI]: https://ergogen.xyz -[Unofficial]: https://ergogen.cache.works/ -[Topic]: https://github.com/topics/ergogen -[Donate]: https://github.com/sponsors/mrzealot - - - -[Button WebUI]: https://img.shields.io/badge/Deployment-37a779?style=for-the-badge&logoColor=white&logo=AppleArcade -[Button Unofficial]: https://img.shields.io/badge/Unofficial-yellow?style=for-the-badge -[Button Official]: https://img.shields.io/badge/Official-37a779?style=for-the-badge -[Button Documentation]: https://img.shields.io/badge/Documentation-1793D1?style=for-the-badge&logoColor=white&logo=GitBook -[Button Discord]: https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logoColor=white&logo=Discord -[Button Donate]: https://img.shields.io/badge/Donate-EA4AAA?style=for-the-badge&logoColor=white&logo=githubsponsors diff --git a/changelog.md b/changelog.md deleted file mode 100644 index 5a6bc84..0000000 --- a/changelog.md +++ /dev/null @@ -1,195 +0,0 @@ -# 4.0.0 (2022-??-??) - -## :boom: Breaking Changes -## :seedling: Enhancements -## :skull: Bugfixes -## :wrench: Other - -* fdc2adf - Dependency and roadmap housecleaning (2022-02-27) -* e13927d - Make reference dumping easier during testing (2022-02-27) -* b928cbd - Implement a simple autobind (2022-02-27) -* d23bd71 - Support orient/rotate towards other points (2022-02-27) -* 6dc6b5d - Anchor recursivization (2022-02-27) -* b8c71be - Improve readme (2022-01-24) -* cff15dd - Add missing bbox test (2022-01-23) -* d512983 - More flexible semver handling (2022-01-23) -* e0f5c91 - Fix rollup build warning (2022-01-23) -* 06d2ae4 - Switch to handrolled semver implementation (2022-01-23) -* 2b98b50 - Support string templating for key-level attributes (2022-01-22) -* 6225013 - Indicate dev version in package.json (2022-01-20) -* 7f5e5e7 - Roadmap update (2022-01-18) -* 28d076e - Remove accidentally added folder (2022-01-16) -* d6f8323 - Outlines rewrite actually done (2022-01-16) -* 4844a04 - Outlines rewrite theoretically done (2022-01-11) -* df7b76c - Outlines rewrite, part 2 (2022-01-10) -* 6504b2b - Outlines rewrite in progress (2022-01-09) -* bd6b5a0 - Add filter tests (2022-01-08) -* a7f333c - Filter implementation progress (2022-01-03) -* 534ac4b - Filter implementation started (2021-12-26) -* e48631f - Add key-level orient (2021-12-25) -* f2bd0d2 - Roadmap update (2021-12-18) -* 2c18902 - Simplify the names in individual point "zones" (2021-12-18) -* 9ee099b - Minor test adjustments (2021-12-18) -* 0ed29e7 - Place rectangles by their centers (2021-12-18) -* 73045e4 - Move column-level attributes to key-level (2021-12-18) - - - - - - - -# 3.1.2 (2022-01-20) - -* 86c00eb - (tag: v3.1.2, origin/master, backup/master, master) Bump patch version (2022-01-20) -* 3570be2 - Delete old docs (2022-01-20) -* f326594 - De-dupe readme, point usage to docs (2022-01-20) - - - -# 3.1.1 (2022-01-14) - -* 47d15c0 - (tag: v3.1.1) Hotfix parameterization (2022-01-14) - - -# 3.1.0 (2021-12-15) - -* 488fba0 - (tag: v3.1.0) 3.1.0 (2021-12-15) -* f16ccd4 - Refresh roadmap (2021-12-15) -* 21cfc1f - Allow glue opt-out, even when bound (2021-12-15) -* c46a0bc - Add U for 19.05 spacing, closes #48 (2021-12-15) -* 3745cf3 - Parameterize PCB component reference hiding (2021-12-15) -* 13052cd - PCB metadata propagation (2021-12-15) -* 90db02f - Roadmap update (2021-12-15) -* 3e0dc84 - Support semver checks (2021-12-15) - - -# 3.0.3 (2021-12-13) - -* d5ebd70 - (tag: v3.0.3) 3.0.3 (2021-12-13) -* e45e563 - Further dependency restructure (2021-12-13) - - - -# 3.0.2 (2021-12-13) - -* 96c7caa - (tag: v3.0.2) 3.0.2 (2021-12-13) -* 16c9243 - Move custom dependencies to ergogen org + fix metadata (2021-12-13) -* 5046667 - Suppress npm warnings (2021-12-13) -* e2535da - Update dependencies (2021-12-13) -* d193af6 - Add fresh TODO items, change to gitflow (2021-12-12) - -# 3.0.1 (2021-12-12) - -* 9a1f9ec - (tag: v3.0.1) 3.0.1 (2021-12-12) -* 16f6b81 - Fillet all outline chains, closes #34 (2021-12-12) -* 8490f14 - Add const in scrollwheel footprint (2021-08-16) -* 21e173e - Make spread: 0 possible (2021-08-13) -* 38a8fc5 - Anchor affect bugfix, partially fixes #33 (2021-12-12) -* 483f214 - Array unnest bugfix, fixes #50 (2021-12-12) -* e58b80c - Redirect readme links to new domain (2021-11-27) -* e29613d - Dump accumulated TODOs (2021-11-27) -* 0ec16db - Minor fix for mirrored anchor rotations (2021-11-27) -* a593f61 - Fixed rotary encoder footprint (2021-11-07) -* 68102e8 - Fix ReferenceError: *_unit is not defined (2021-09-03) -* bf2dee6 - docs(readme): fix typo in web ui url link (2021-08-08) -* ad5ac9c - Visualization fix (2021-07-25) - -# 3.0.0 (2021-07-21) - -* 0658057 - (tag: v3.0.0) 3.0.0 (2021-07-21) -* fa850a6 - YAML-ification and minor output restructure (2021-07-21) -* 282e117 - Web release prep (2021-07-21) -* 67e01ed - Base key-level defaults around `u` (2021-07-18) -* 9bdcd36 - Some outline testing (2021-07-18) -* 26128f8 - Support full anchors in outline shapes (2021-07-18) -* 677fae0 - Add roadmap (2021-07-18) -* b159cfa - Further testing (2021-07-18) -* 4105718 - Complete CLI testing (2021-07-17) -* 4d88dac - End-to-end CLI tests (2021-07-17) -* 1f3ecb5 - Improved interface testing (2021-07-16) -* 7d841b2 - Dependency updates (2021-07-16) -* 98d7f66 - Make old jscad stuff audit friendly (2021-07-16) -* 58cadde - Minor case fix + test (2021-07-16) -* f955aac - Support KLE to PCB metadata and nets (2021-07-16) -* cd0ae6d - Smarter dump test switch (2021-07-16) -* b43b719 - Auto-debug when output would be empty (2021-07-16) -* bc75781 - Adjust tests for async interface (2021-07-15) -* 1cb9fdc - Basic KLE support (2021-07-15) -* d09b3fd - Smarter dump switch for the test runner, reference adjustments (2021-07-14) -* 42a3e2d - CLI and output restructure, SVG/DXF/STL integration (2021-07-14) -* c49881c - Remove leftover debug statements (2021-07-11) -* c12e8d2 - Update footprints to match new structure (2021-07-11) -* fe30b91 - PCB net and parameter overhaul (2021-07-11) -* 452d7c1 - Units separated to their own block, and properly tested (2021-07-11) -* 71efdbe - Test switch overhaul (2021-07-11) -* ea12df2 - Fix typo (2021-07-11) -* 2425b06 - Package audit (2021-07-06) -* 2f6b9ab - Added new footprints for OLEDs, jumpers, and Omron B3F-4055 switches (2021-07-06) -* a431bc4 - Added documentation for switch footprints (2021-07-06) -* ee43a93 - Added keycaps option to display mx or choc keycaps on Dwgs.User, and fixed mx footprint (2021-06-12) -* 1ff7e07 - Added new switch footprints, updated reversibility functionality, integrated hotswap footprints, added orientation to promicro, alphabetized index, and added net and paramter documentation (2021-05-23) -* 3e78e6e - Add files via upload (2021-04-26) -* 5a8a66b - Add files via upload (2021-04-26) -* 9baae15 - Add unit test for assertions (2021-05-22) -* c7b86c7 - Add unit test for anchors (2021-05-22) -* 76bb071 - Add footprints to coverage, streamline coverage script call (2021-05-22) -* 7f8b1c4 - Add basic interface tests (2021-05-16) -* 5cd8985 - Add unit test for operation parsing (2021-05-16) -* 2cae521 - Add unit test for utils (2021-05-16) -* 2d6ad02 - Add unit test for point class (2021-05-16) -* 806a7ec - Package audit (2021-05-16) -* de0f61b - Filleting, bevel fix, poly mirroring (2021-04-18) -* 18a76e5 - Added p.rot param to pads (#20) (2021-04-18) -* 5754824 - fixed net ref to pad (2021-03-22) -* c0eea2a - Fix makerjs dep and audit (2021-04-01) - - - - - -# 2.0.0 (2021-03-15) - -## :boom: Breaking Changes - -- Change indirection and preprocessing symbols -- Rename `reset` footprint to `button` - -## :seedling: Enhancements - -- Added support for variables and/or units - - String typed math formulas can now be used anywhere numbers are expected - - For example, `spread: 19` is the same as `spread: u` -- Added support for nested (a.k.a. deep) key notations - - So `zones: {columns: {key: {flag: true}}}` can now be simplified to `zones.columns.key.flag: true` -- Added support for parametric declarations - - ... -- Added MX and choc hotswap footprints -- Added rotary encoder footprint - [**@adt**](https://github.com/adt) - -## :skull: Bugfixes - -- Various footprint fixes - [**@adt**](https://github.com/adt) -- Documentation typos, fixes, examples - [**@Albert-IV**](https://github.com/Albert-IV) , [**@FanchGadjo**](https://github.com/FanchGadjo) - -## :wrench: Other - -- Lots and lots of structural refactoring, housecleaning, etc. -- Testing infrastructure improvements -- Better glue-related error messages -- Propagate point visualization to the webui -- Output SVG alongside DXF in debug mode - [**@brow**](https://github.com/brow) -- Added part no. and updated URL for `reset` footprint - [**@brow**](https://github.com/brow) - - - - - - - -# 1.0.0 (2020-10-18) - -## :sunglasses: Initial release! - -- Ergogen declares its independence from the [Absolem](https://github.com/mrzealot/absolem) project -- Thanks to [**Merlin04**](https://github.com/Merlin04) for an initial JSON schema \ No newline at end of file diff --git a/docs/reference.md b/docs/reference.md new file mode 100644 index 0000000..056daeb --- /dev/null +++ b/docs/reference.md @@ -0,0 +1,644 @@ +## Overview + +The whole Ergogen config is a single YAML file. +If you prefer JSON over YAML, feel free to use it, conversion is trivial and the generator will detect the input format. +The important thing is that the data should contain the following keys: + +```yaml +points: +outlines: +cases: +pcbs: +``` + +The `points` section describes the core of the layout: the positions of the keys. +The `outlines` section then uses these points to generate plate, case, and PCB outlines. +The `cases` section details how the case outlines are to be 3D-ized to form a 3D-printable object. +Finally, the `pcbs` section is used to configure KiCAD PCB templates. + +In the following, we'll have an in-depth discussion about each of these. +There's also a completely separate "preprocessing" step to help reduce unnecessary repetition. +Of course, if the declarative nature of the config is still not terse enough (despite the preprocessor, the built-in YAML references, and the Ergogen-based inheritance detailed below), there's nothing stopping you from writing code that generates the config. +It brings the game to yet another abstraction level higher, so that you can use branching, loops, and parametric functions to compose a "drier" keyboard definition. + +
+ + + + + + + + + + + + + + + + + + + + + + + +## Preprocessing + +Ergogen does a separate preprocessor pass on the config before starting to interpret it. +This consists of the following steps: + +- **Unnesting**: any object key containing dots (as in, `.`s) will be unnested. This allows the use of the so called "dot notation". For example, `nested.key.definition: value` will turn into `{nested: {key: {definition: value}}}` in the preprocessed config object. + +- **Inheritance**: the `$extends` key can be used in any declaration to inherit values from another declaration. Extension happens according to the following rules: + - if the new value is `undefined`, the old value will be used as a default; + - if both values are defined (and have the same type), the new one will override the old; + - if both values have different types, the new value will take precedence; + - if the new value is `$unset`, the resulting value will be `undefined`, regardless of previous type; + - for arrays or objects, extension is called for each child element recursively. + + The actual value of the `$extends` key should be the full absolute path of the declaration we wish to inherit from (using the above mentioned, nested "dot notation" if necessary). For example: + + ```yaml + top: + parent: + a: 1 + b: 2 + child: + $extends: top.parent + c: 3 + ``` + + This declaration will lead to `child` containing all three letter keys: `{a: 1, b: 2, c: 3}`. + +- **Parameterization**: allows regex replacements within declarations. Take the following declaration as a starting point: + + ```yaml + top: + value: placeholder + double_value: placeholder * 2 + $params: [placeholder] + $args: [3] + ``` + + In this case, every occurrence of the value "placeholder" will be replaced with "3", which allows us to define it only once and still use it in multiple places (kind of like a pseudo-variable). + +- **Skipping**: the `$skip` key can be used anywhere to, well, skip (or "comment out" entire declarations). It can also be useful when combining inheritance and parameterization. For example: + + ```yaml + grandparent: + a: placeholder1 + b: placeholder2 + $params: [placeholder1, placeholder2] + parent: + $extends: grandparent + $args: [value1] + child: + $extends: parent + $args: [,value2] + ``` + + Here, the grandparent defines two different parameters, but only the child knows both arguments that should be substituted. This would lead to an error at the parent's level, because it has two parameters, and only one argument. But, assuming that this is just an intermediary abstract declaration and we wouldn't want to use it anyway, we can just declare `$skip: true`. + +The result of the preprocessor is *almost* just a plain JSON object. +The only semantic difference is how numbers are handled. For example, the value `3 * 2` would lead to a string type in JSON, but since it's a mathematical formula, it can also be interpreted as a number. +Ergogen tries this interpretation for every string value, and if it succeeds, it calculates the results and converts them to JSON numbers. +This syntax also works with variables, which we can use to define units (see below). + +Otherwise, we can begin with the actual keyboard-related layout... + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Points + +A point in this context refers to a 2D point `[x,y]` with a rotation/orientation `r` added in. +These can be thought of as the middle points of the keycaps in a resulting keyboard layout, with an additional handling of the angle of the keycap. + +What makes this generator "ergo" is the implicit focus on the column-stagger. +Of course we could simulate the traditional row-stagger by defining everything with a 90 degree rotation, but that's really not the goal here. +Since we're focusing on column-stagger, keys are laid out in columns, and a collection of columns is called a "zone". +For example, we can define multiple, independent zones to make it easy to differentiate between the keywell and the thumb fan/cluster. + +Points can be described as follows: + +```yaml +points: + units: + name: val + ... + zones: + my_zone_name: + anchor: + ref: + orient: num # default = 0 + shift: [x, y] # default = [0, 0] + rotate: num # default = 0 + affects: string containing any of x, y, or r # default = xyr + columns: + column_name: + ... + rows: + row_name: + ... + key: + ... +``` + +We start with a `units` clause, where we can define units to use in relative calculations. +The three predefined ones are `u` (=19mm), `cx` (=18mm, named for "Choc X distance"), and `cy` (=17mm, named for "Choc Y distance"). +But we can add any other (or modify these predefined ones), or even use an existing measure in calculating a new value (for example, `double: 2 u`). +Recall how each string that can be interpreted as a math formula will be treated like a number, so this is a great way to add math-level variables to your config. + +Then comes the `zones` key, under which we can define the individual, named zones. +`anchors` are used to, well, anchor the zone to something. +It's the `[0, 0]` origin with a 0 degree orientation by default, but it can be changed to any other pre-existing point. (Consequently, the first zone can't use a ref, because there isn't any yet.) +The `ref` field can also be an array of references, in which case their average is used -- mostly useful for anchoring to the center, by averaging a key and its mirror; see later. +This initial position can then be changed with the `orient`, `shift`, and `rotate` options. +`shift` adds extra translation, while the difference between `orient` and `rotate` is whether they add their rotation before or after the translation. + +Also note that anywhere an anchor can be specified, a list of anchors is also valid. +It would be meaningless, though, if each subsequent anchor would override the previous one, so the `affects` clause helps to affect only certain dimensions of the anchor. +It can be declared using a string containing any of `x`, `y`, or `r`, which stand for the x and y coordinates and the rotation of the anchor, respectively. + +Once we know _where_ to start, we can describe the `columns` of our layout. + +```yaml +columns: + column_name: + stagger: num # default = 0 + spread: num # default = 19 + rotate: num # default = 0 + origin: [x, y] # relative to center of column's first key, default = [0, 0] + rows: + row_name: + ... + key: + ... +``` + +`stagger` means an extra vertical shift to the starting point of the whole column compared to the previous one (initially 0, cumulative afterwards). +The layout of the column then proceeds according to the appropriate key declarations (more on this in a minute). + +Once the column has been laid out, `spread` (the horizontal space between this column and the next) is applied, and an optional (cumulative) rotation is added around the `origin` if `rotate` is specified. +We repeat this until the end of the column definitions, then move on to the next zone. + +
+ +Regarding lower level layout, rows appear both in zones and columns, and keys can be defined in five (!) different places. So what gives? +Don't worry, all this is there just so that we can keep repetition to a minimum. +We could safely remove the `rows` and `key` options from zones, and the `key` option from column definitions, without losing any of the functionality. +But we'd have to repeat ourselves a lot more. + +Let's start with rows. +`zone.rows` can give an overall picture about how many rows we'll have, and set key-related options on a per-row basis. +But what if we want to extend this initial picture with some column-specific details? (More on "extension" in a bit.) +For example, we want an outer pinky column where padding is tighter than it is for the others. +That's where `column.rows` can help, specifying a row "extension" for just that column. + +And what if we want to **override** the zone-level declarations in a certain column? +For example, we don't just want to modify a row's attributes for a given column, but actually override the amount of rows there are. +Like an outer pinky column with just two keys instead of the regular three. +That's where `column.row_overrides` can help, specifying a row-level override that disregards the zone-level defaults. +Easy. + +Now for the trickier part: keys. +There are five ways to set key-related options (again, to minimize the need for repetition): + +1. at the global-level (affecting all zones) +2. at the zone-level +3. at the column-level +4. at the row-level +5. at the key-level + +These "extend" each other in this order so by the time we reach a specific key, every level had an opportunity to modify something. +Note that unlike the overriding for rows, key-related extension is additive. +For example, let's suppose that a key-related attribute is already defined at the column-level. +When we later encounter a key-level extension for this key that specifies a few things but not this exact key, its value will stay the same instead of disappearing. + +When there is a "collision", simple values (like booleans, numbers, or strings) replace the old ones, while composites (arrays or objects) apply this same extension recursively, element-wise. +So when `key = 1` is extended by `key = 2`, the result is `key = 2`. +But if `key = {a: 1}` is extended by `key = {b: 2}`, the result is `key = {a: 1, b: 2}`. + +Lastly, while there are a few key-specific attributes that have special meaning in the context of points (listed below), any key with any data can be specified here. +This can be useful for storing arbitrary meta-info about the keys, or just configuring later stages with key-level parameters. +So, for example, when the outline phase specifies `bind` as a key-level parameter (see below), it means that it can be specified just like any other key-level attribute. + +Now for the "official" key-level attributes: + +```yaml +name: name_override # default = a concatenation of zone, column, and row +shift: [x, y] # default = [0, 0] +rotate: num # default = 0 +padding: num # default = 19 +skip: boolean # default = false +asym: left | right | both # default = both +mirror: +``` + +`name` is the unique identifier of this specific key. +It defaults to a `_` format, but can be overridden if necessary. +`shift` and `rotate` declare an extra, key-level translation or rotation, respectively. +Then we leave `padding` amount of vertical space before moving on to the next key in the column. +`skip` signals that the point is just a "helper" and should not be included in the output. +This can happen when a _real_ point is more easily calculable through a "stepping stone", but then we don't actually want the stepping stone to be a key itself. +Finally, `asym` and `mirror` relate to mirroring, which we'll cover in a second. + +
+ +Since `zones` was only a single key within the `points` section, it's reasonable to expect something more. +Indeed: + +```yaml +points: + units: + zones: + key: + rotate: num # default = 0 + mirror: + axis: num # default = 0 + ref: # and other anchor-level settings + distance: num # default = 0 +``` + +Here, `rotate` can apply a global angle to all the points, which can simulate the inter-half angle of one-piece boards. +Then comes the mirroring step, where the generator automatically copies and mirrors each point. +If there's an `axis` set within the `mirror` key, points will be mirrored according to that. +If not, the axis will be calculated so that there will be exactly `distance` mms between the `ref`erenced point and its duplicate. + +Now if our design is symmetric, we're done. +Otherwise, we need to use the `asym` key-level attribute to indicate which side the key should appear on. +If it's set as `left`, mirroring will simply skip this key. +If it's `right`, mirroring will "move" the point instead of copying it. +The default `both` assumes symmetry. + +Using the _key-level_ `mirror` key (not to be confused with the global `mirror` setting we just discussed above), we can set additional data for the mirrored version of the key. +It will use the same extension mechanism as it did for the 5 levels before. + +And this concludes point definitions. +This should be generic enough to describe any ergo layout, yet easy enough so that you'll appreciate not having to work in raw CAD. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Outlines + +Once the raw points are available, we want to turn them into solid, continuous outlines. +The points are enough to create properly positioned and rotated rectangles (with parametric side lengths), but they won't combine since there won't be any overlap. +So the first part of the outline generation is "binding", where we make the individual holes _bind_ to each other. +We use a key-level declarations for this: + +```yaml +bind: num | [num_x, num_y] | [num_t, num_r, num_b, num_l] # default = 0 +``` + +Again, key-level declaration means that both of these should be specified in the `points` section, benefiting from the same extension process every key-level setting does. +This field declares how much we want to bind in each direction, i.e., the amount of overlap we want to make sure that we can reach the neighbor (`num` applies to all directions, `num_x` horizontally, `num_y` vertically, and the t/r/b/l versions to top/right/bottom/left, respectively). +Note that it might make sense to have negative `bind` values, in case we not only don't want to bind in the given direction, but also don't want to "cover up" a potential corner rounding or bevel (see below). + +If it's a one-piece design, we also need to "glue" the halves together (or we might want to leave some extra space for the controller on the inner side for splits). +This is where the following section comes into play: + +```yaml +glue: + glue_name: + top: + left: + right: | num + bottom: + left: + right: | num + waypoints: + - percent: num + width: num | [num_left, num_right] + - ... + extra: + - + - ... + ... +``` + +...where an `` is the same as it was for points. + +The `top` and `bottom` fields in each glue's section are both formatted the same, and describe the center line's top and bottom intersections, respectively. +In a one-piece case, this means that we project a line from a left-side anchor, another from the right, and converge them to where they meet. +Split designs can specify `right` as a single number to mean the x coordinate where the side should be "cut off". + +This leads to a gluing middle patch that can be used to meld the left and right sides together, given by the counter-clockwise polygon: + +- Top intersection +- Left top point +- Left bottom point +- Bottom intersection +- Right bottom point +- Right top point + +If this is insufficient (maybe because it would leave holes), the `waypoints` can be used to supplement the glue. +Here, `percent` means the y coordinate along the centerline (going from the top intersection to the bottom intersection), and `width` means the offset on the x axis. + +If this is somehow _still_ insufficient (or there were problems with the binding phase), we can specify additional primitive shapes under the `extra` key (similarly to how we would use them in the exports; see below). +These are then added to what we have so far to finish out the glue. +(TODO: while the `extra` key is reserved for this purpose, it hasn't been needed, and therefore is unimplemented for now.) + +
+ +Once we're satisfied with the glue, the outline is generated by the union of the bound left/right halves and the glue polygon. +Note that this outline is still parametric, so that we can specify different width/height values for the rectangles. + +Now we can configure what we want to "export" as outlines from this phase, given by the combination/subtraction of the following primitives: + +- `keys` : the combined outline that we've just created. Its parameters include: + - `side: left | right | middle | both | glue` : the part we want to use + - `left` and `right` are just the appropriate side of the laid out keys, without the glue. + - `middle` means an "ideal" version of the glue (meaning that instead of the `outline.glue` we defined above, we get `both` - `left` - `right`, so the _exact_ middle piece we would have needed to glue everything together + - `both` means both sides, held together by the glue + - `glue` is just the raw glue shape we defined above under `outline.glue` + - `tag: ` : optional tags to filter which points to consider in this step, where tags can be specified as key-level attributes. + - `glue: ` : the name of the glue to use, if applicable + - `size: num | [num_x, num_y]` : the width/height of the rectangles to lay onto the points. Note that these values are added to the evaluation context as the variables `sx` and `sy`. So during a `keys` layout with a size of 18, for example, a relative shift of `[.5 sx, .5 sy]` actually means `[9, 9]` in mms. + - `corner: num # default = 0)` : corner radius of the rectangles + - `bevel: num # default = 0)` : corner bevel of the rectangles, can be combined with rounding + - `bound: boolean # default = true` : whether to use the binding declared previously +- `rectangle` : an independent rectangle primitive. Parameters: + - `ref`, `rotate`, and `shift`, etc. (the usual anchor settings) + - `size`, `corner` and `bevel`, just like for `keys` +- `circle` : an independent circle primitive. Parameters: + - `ref`, `rotate`, and `shift`, etc. (the usual anchor settings) + - `radius: num` : the radius of the circle +- `polygon` : an independent polygon primitive. Parameters: + - `points: [, ...]` : the points of the polygon. Each `` can have its own `ref`, `shift`, etc. (all of which are still the same as above). The only difference here is that if a `ref` is unspecified, the previous point will be assumed (as in a continuous chain). For the first, it's `[0, 0]` by default. +- `outline` : a previously defined outline, see below. + - `name: outline_name` : the name of the referenced outline + +Using these, we define exports as follows: + +```yaml +exports: + my_name: + - operation: add | subtract | intersect | stack # default = add + type: # default = outline + + - ... +``` + +Individual parts can also be specified as an object instead of an array (which could be useful when YAML or built-in inheritance is used), like so: + +```yaml +exports: + my_name: + first_phase: + operation: add | subtract | intersect | stack # default = add + type: # default = outline + + second: + ... +``` + +Operations are performed in order, and the resulting shape is exported as an output. +Additionally, it is going to be available for further export declarations to use (through the `outline` type) under the name specified (`my_name`, in this case). +If we only want to use it as a building block for further exports, we can start the name with an underscore (e.g., `_my_name`) to prevent it from being actually exported. +(By convention, a starting underscore is kind of like a "private" marker.) + +A shorthand version of a part can be given when the elements of the above arrays/objects are simple strings instead of further objects. +The syntax is a symbol from `[+, -, ~, ^]`, followed by a name, and is equivalent to adding/subtracting/intersecting/stacking an outline of that name, respectively. +More specifically, `~something` is equivalent to: + +```yaml +type: outline +name: something +operation: intersect +``` + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Cases + +Cases add a pretty basic and minimal 3D aspect to the generation process. +In this phase, we take different outlines (exported from the above section, even the "private" ones), extrude and position them in space, and combine them into one 3D-printable object. +That's it. +Declarations might look like this: + +```yaml +cases: + case_name: + - type: outline # default option + name: + extrude: num # default = 1 + shift: [x, y, z] # default = [0, 0, 0] + rotate: [ax, ay, az] # default = [0, 0, 0] + operation: add | subtract | intersect # default = add + - type: case + name: + # extrude makes no sense here... + shift: # same as above + rotate: # same as above + operation: # same as above + - ... + ... +``` + +When the `type` is `outline`, `name` specifies which outline to import onto the xy plane, while `extrude` specifies how much it should be extruded along the z axis. +When the `type` is `case`, `name` specifies which case to use. +After having established our base 3D object, it is (relatively!) `rotate`d, `shift`ed, and combined with what we have so far according to `operation`. +If we only want to use an object as a building block for further objects, we can employ the same "start with an underscore" trick we learned at the outlines section to make it "private". + +Individual case parts can again be listed as an object instead of an array, if that's more comfortable for inheritance/reuse (just like for outlines). +And speaking of outline similarities, the `[+, -, ~]` plus name shorthand is available again. +First it will try to look up cases, and then outlines by the name given. +Stacking is omitted as it makes no sense here. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## PCBs + +Everything should be ready for a handwire, but if you'd like the design to be more accessible and easily replicable, you probably want a PCB as well. +To help you get started, the necessary footprints and an edge cut can be automatically positioned so that all you need to do manually is the routing. + +Footprints can be specified at the key-level (under the `points` section, like we discussed above), or here with manually given anchors. +The differences between the two footprint types are: + +- an omitted `ref` in the anchor means the current key for key-level declarations, while here it defaults to `[0, 0]` +- a parameter starting with an equal sign `=` is an indirect reference to an eponymous key-level attribute -- so, for example, `{from: =column_net}` would mean that the key's `column_net` attribute is read there. + +Additionally, the edge cut of the PCB (or other decorative outlines for the silkscreen maybe) can be specified using a previously defined outline name under the `outlines` key. + +```yaml +pcbs: + pcb_name: + outlines: + pcb_outline_name: + outline: + layer: # default = Edge.Cuts + ... + footprints: + - type: + anchor: + nets: + params: + - ... + ... +``` + +Defining both the `outlines` and the `footprints` can be done either as arrays or objects, whichever is more convenient. +The currently supported footprint types can be viewed in [this folder](https://github.com/mrzealot/ergogen/tree/master/src/footprints), where: + +- `nets` represents the available PCB nets the footprint should connect to, and +- `params` represents other, non-net parameters to customize the footprint. + +These can be specified in the eponymous keys within `pcbs.pcb_name.footprints`. + +
+ + + + + + + + + + + + +## Phew, that's it. + +*Theoretically*, you should know everything to start making your own dream keyboard. +*Realistically* though, this might have been a bit dense, to say the least. But hey, this is the full reference, what did you expect? + +If you want to look at an example that leverages the full power of Ergogen, you can find [the Absolem project](https://github.com/mrzealot/absolem/) and its [configuration file here.](https://github.com/mrzealot/absolem/blob/master/absolem.yaml) + +If you'd like to get your feet wet with easier examples, and get gradually more hard-core, let me suggest the other tutorials in the docs folder (as they become available). +Alternatively, if you'd like to talk to a certified Ergogen representative, come join us [on Discord](https://discord.gg/nbKcAZB)! +It's also a great place to get in touch if you are already somewhat familiar with this whole shebang, and would like to contribute examples, tests, features, whatever. +See you there! diff --git a/kicad/23creus/23creus.kicad_pcb b/kicad/23creus/23creus.kicad_pcb deleted file mode 100644 index 8a698a3..0000000 --- a/kicad/23creus/23creus.kicad_pcb +++ /dev/null @@ -1,7254 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title main) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "pinky_bottom") -(net 2 "P21") -(net 3 "pinky_home") -(net 4 "pinky_top") -(net 5 "pinky_num") -(net 6 "ring_bottom") -(net 7 "P20") -(net 8 "ring_home") -(net 9 "ring_top") -(net 10 "ring_num") -(net 11 "middle_bottom") -(net 12 "P19") -(net 13 "middle_home") -(net 14 "middle_top") -(net 15 "middle_num") -(net 16 "index_bottom") -(net 17 "P18") -(net 18 "index_home") -(net 19 "index_top") -(net 20 "index_num") -(net 21 "inner_bottom") -(net 22 "P15") -(net 23 "inner_home") -(net 24 "inner_top") -(net 25 "inner_num") -(net 26 "thumb_bottom") -(net 27 "P14") -(net 28 "mirror_pinky_bottom") -(net 29 "P2") -(net 30 "mirror_pinky_home") -(net 31 "mirror_pinky_top") -(net 32 "mirror_pinky_num") -(net 33 "mirror_ring_bottom") -(net 34 "P3") -(net 35 "mirror_ring_home") -(net 36 "mirror_ring_top") -(net 37 "mirror_ring_num") -(net 38 "mirror_middle_bottom") -(net 39 "P4") -(net 40 "mirror_middle_home") -(net 41 "mirror_middle_top") -(net 42 "mirror_middle_num") -(net 43 "mirror_index_bottom") -(net 44 "P5") -(net 45 "mirror_index_home") -(net 46 "mirror_index_top") -(net 47 "mirror_index_num") -(net 48 "mirror_inner_bottom") -(net 49 "P6") -(net 50 "mirror_inner_home") -(net 51 "mirror_inner_top") -(net 52 "mirror_inner_num") -(net 53 "mirror_thumb_bottom") -(net 54 "P7") -(net 55 "P16") -(net 56 "P10") -(net 57 "P9") -(net 58 "P8") -(net 59 "RST") -(net 60 "GND") -(net 61 "RAW") -(net 62 "VCC") -(net 63 "P1") -(net 64 "P0") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "pinky_bottom") -(add_net "P21") -(add_net "pinky_home") -(add_net "pinky_top") -(add_net "pinky_num") -(add_net "ring_bottom") -(add_net "P20") -(add_net "ring_home") -(add_net "ring_top") -(add_net "ring_num") -(add_net "middle_bottom") -(add_net "P19") -(add_net "middle_home") -(add_net "middle_top") -(add_net "middle_num") -(add_net "index_bottom") -(add_net "P18") -(add_net "index_home") -(add_net "index_top") -(add_net "index_num") -(add_net "inner_bottom") -(add_net "P15") -(add_net "inner_home") -(add_net "inner_top") -(add_net "inner_num") -(add_net "thumb_bottom") -(add_net "P14") -(add_net "mirror_pinky_bottom") -(add_net "P2") -(add_net "mirror_pinky_home") -(add_net "mirror_pinky_top") -(add_net "mirror_pinky_num") -(add_net "mirror_ring_bottom") -(add_net "P3") -(add_net "mirror_ring_home") -(add_net "mirror_ring_top") -(add_net "mirror_ring_num") -(add_net "mirror_middle_bottom") -(add_net "P4") -(add_net "mirror_middle_home") -(add_net "mirror_middle_top") -(add_net "mirror_middle_num") -(add_net "mirror_index_bottom") -(add_net "P5") -(add_net "mirror_index_home") -(add_net "mirror_index_top") -(add_net "mirror_index_num") -(add_net "mirror_inner_bottom") -(add_net "P6") -(add_net "mirror_inner_home") -(add_net "mirror_inner_top") -(add_net "mirror_inner_num") -(add_net "mirror_thumb_bottom") -(add_net "P7") -(add_net "P16") -(add_net "P10") -(add_net "P9") -(add_net "P8") -(add_net "RST") -(add_net "GND") -(add_net "RAW") -(add_net "VCC") -(add_net "P1") -(add_net "P0") - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 0 0 -23) - - - (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 7.4238914 -17.4895922 -23) - - - (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 14.8477829 -34.9791844 -23) - - - (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 22.2716743 -52.4687766 -23) - - - (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 18.5922643 3.5465065 -23) - - - (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 26.0161557 -13.9430858 -23) - - - (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 33.4400472 -31.432678 -23) - - - (fp_text reference "S7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 40.8639386 -48.9222702 -23) - - - (fp_text reference "S8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 37.5752597 6.1725081 -23) - - - (fp_text reference "S9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 44.9991512 -11.3170841 -23) - - - (fp_text reference "S10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.4230426 -28.8066764 -23) - - - (fp_text reference "S11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 59.8469341 -46.2962686 -23) - - - (fp_text reference "S12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.6509439 18.0035582 -23) - - - (fp_text reference "S13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 60.0748353 0.513966 -23) - - - (fp_text reference "S14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.4987268 -16.9756262 -23) - - - (fp_text reference "S15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.9226182 -34.4652184 -23) - - - (fp_text reference "S16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.3358969 30.7551132 -23) - - - (fp_text reference "S17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.7597883 13.265521 -23) - - - (fp_text reference "S18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 82.1836798 -4.2240712 -23) - - - (fp_text reference "S19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 89.6075712 -21.7136634 -23) - - - (fp_text reference "S20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 88.272548 28.7785906 -23) - - - (fp_text reference "S21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 218.545096 0 23) - - - (fp_text reference "S22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 211.1212046 -17.4895922 23) - - - (fp_text reference "S23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 203.6973131 -34.9791844 23) - - - (fp_text reference "S24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 196.2734217 -52.4687766 23) - - - (fp_text reference "S25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 199.9528317 3.5465065 23) - - - (fp_text reference "S26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 192.5289403 -13.9430858 23) - - - (fp_text reference "S27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 185.1050488 -31.432678 23) - - - (fp_text reference "S28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 177.68115740000002 -48.9222702 23) - - - (fp_text reference "S29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 180.9698363 6.1725081 23) - - - (fp_text reference "S30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 173.5459448 -11.3170841 23) - - - (fp_text reference "S31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 166.1220534 -28.8066764 23) - - - (fp_text reference "S32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.6981619 -46.2962686 23) - - - (fp_text reference "S33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 165.89415209999999 18.0035582 23) - - - (fp_text reference "S34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.4702607 0.513966 23) - - - (fp_text reference "S35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.04636920000002 -16.9756262 23) - - - (fp_text reference "S36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.6224778 -34.4652184 23) - - - (fp_text reference "S37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.2091991 30.7551132 23) - - - (fp_text reference "S38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.7853077 13.265521 23) - - - (fp_text reference "S39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 136.3614162 -4.2240712 23) - - - (fp_text reference "S40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 128.9375248 -21.7136634 23) - - - (fp_text reference "S41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 130.272548 28.7785906 23) - - - (fp_text reference "S42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 218.545096 0 23) - - - (fp_text reference "S43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 211.1212046 -17.4895922 23) - - - (fp_text reference "S44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 203.6973131 -34.9791844 23) - - - (fp_text reference "S45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 196.2734217 -52.4687766 23) - - - (fp_text reference "S46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 199.9528317 3.5465065 23) - - - (fp_text reference "S47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 192.5289403 -13.9430858 23) - - - (fp_text reference "S48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 185.1050488 -31.432678 23) - - - (fp_text reference "S49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 177.68115740000002 -48.9222702 23) - - - (fp_text reference "S50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 180.9698363 6.1725081 23) - - - (fp_text reference "S51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 173.5459448 -11.3170841 23) - - - (fp_text reference "S52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 166.1220534 -28.8066764 23) - - - (fp_text reference "S53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.6981619 -46.2962686 23) - - - (fp_text reference "S54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 165.89415209999999 18.0035582 23) - - - (fp_text reference "S55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.4702607 0.513966 23) - - - (fp_text reference "S56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.04636920000002 -16.9756262 23) - - - (fp_text reference "S57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.6224778 -34.4652184 23) - - - (fp_text reference "S58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.2091991 30.7551132 23) - - - (fp_text reference "S59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.7853077 13.265521 23) - - - (fp_text reference "S60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 136.3614162 -4.2240712 23) - - - (fp_text reference "S61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 128.9375248 -21.7136634 23) - - - (fp_text reference "S62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 130.272548 28.7785906 23) - - - (fp_text reference "S63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 0 0 -23) - - - (fp_text reference "S64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 7.4238914 -17.4895922 -23) - - - (fp_text reference "S65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 14.8477829 -34.9791844 -23) - - - (fp_text reference "S66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 22.2716743 -52.4687766 -23) - - - (fp_text reference "S67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 18.5922643 3.5465065 -23) - - - (fp_text reference "S68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 26.0161557 -13.9430858 -23) - - - (fp_text reference "S69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 33.4400472 -31.432678 -23) - - - (fp_text reference "S70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 40.8639386 -48.9222702 -23) - - - (fp_text reference "S71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 37.5752597 6.1725081 -23) - - - (fp_text reference "S72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 44.9991512 -11.3170841 -23) - - - (fp_text reference "S73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.4230426 -28.8066764 -23) - - - (fp_text reference "S74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 59.8469341 -46.2962686 -23) - - - (fp_text reference "S75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.6509439 18.0035582 -23) - - - (fp_text reference "S76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 60.0748353 0.513966 -23) - - - (fp_text reference "S77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.4987268 -16.9756262 -23) - - - (fp_text reference "S78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.9226182 -34.4652184 -23) - - - (fp_text reference "S79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.3358969 30.7551132 -23) - - - (fp_text reference "S80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.7597883 13.265521 -23) - - - (fp_text reference "S81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 82.1836798 -4.2240712 -23) - - - (fp_text reference "S82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 89.6075712 -21.7136634 -23) - - - (fp_text reference "S83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 88.272548 28.7785906 -23) - - - (fp_text reference "S84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) - ) - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at -7.3640388 -3.125849 67) - - - (fp_text reference "D1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 0.059852599999999256 -20.6154412 67) - - - (fp_text reference "D2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 7.4837441 -38.1050334 67) - - - (fp_text reference "D3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 14.907635500000001 -55.5946256 67) - - - (fp_text reference "D4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 11.2282255 0.4206574999999999 67) - - - (fp_text reference "D5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 18.6521169 -17.0689348 67) - - - (fp_text reference "D6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 26.076008400000003 -34.558527 67) - - - (fp_text reference "D7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 33.499899799999994 -52.0481192 67) - - - (fp_text reference "D8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 30.211220899999997 3.0466591 67) - - - (fp_text reference "D9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 37.6351124 -14.442933100000001 67) - - - (fp_text reference "D10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 45.0590038 -31.9325254 67) - - - (fp_text reference "D11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 52.482895299999996 -49.4221176 67) - - - (fp_text reference "D12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 45.2869051 14.8777092 67) - - - (fp_text reference "D13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 52.710796499999994 -2.611883 67) - - - (fp_text reference "D14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 60.134688 -20.1014752 67) - - - (fp_text reference "D15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 67.5585794 -37.5910674 67) - - - (fp_text reference "D16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 59.97185809999999 27.6292642 67) - - - (fp_text reference "D17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 67.3957495 10.139672 67) - - - (fp_text reference "D18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 74.81964099999999 -7.3499202 67) - - - (fp_text reference "D19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 82.24353239999999 -24.8395124 67) - - - (fp_text reference "D20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 80.9085092 25.652741600000002 67) - - - (fp_text reference "D21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 225.9091348 -3.125849 -67) - - - (fp_text reference "D22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 218.4852434 -20.6154412 -67) - - - (fp_text reference "D23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 211.0613519 -38.1050334 -67) - - - (fp_text reference "D24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 203.6374605 -55.5946256 -67) - - - (fp_text reference "D25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 207.3168705 0.4206574999999999 -67) - - - (fp_text reference "D26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 199.8929791 -17.0689348 -67) - - - (fp_text reference "D27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 192.4690876 -34.558527 -67) - - - (fp_text reference "D28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 185.04519620000002 -52.0481192 -67) - - - (fp_text reference "D29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 188.3338751 3.0466591 -67) - - - (fp_text reference "D30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 180.9099836 -14.442933100000001 -67) - - - (fp_text reference "D31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 173.4860922 -31.9325254 -67) - - - (fp_text reference "D32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 166.0622007 -49.4221176 -67) - - - (fp_text reference "D33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 173.2581909 14.8777092 -67) - - - (fp_text reference "D34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 165.83429950000001 -2.611883 -67) - - - (fp_text reference "D35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 158.41040800000002 -20.1014752 -67) - - - (fp_text reference "D36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 150.98651660000002 -37.5910674 -67) - - - (fp_text reference "D37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 158.5732379 27.6292642 -67) - - - (fp_text reference "D38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 151.1493465 10.139672 -67) - - - (fp_text reference "D39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 143.725455 -7.3499202 -67) - - - (fp_text reference "D40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 136.3015636 -24.8395124 -67) - - - (fp_text reference "D41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 137.6365868 25.652741600000002 -67) - - - (fp_text reference "D42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 225.9091348 -3.125849 -67) - - - (fp_text reference "D43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 218.4852434 -20.6154412 -67) - - - (fp_text reference "D44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 211.0613519 -38.1050334 -67) - - - (fp_text reference "D45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 203.6374605 -55.5946256 -67) - - - (fp_text reference "D46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 207.3168705 0.4206574999999999 -67) - - - (fp_text reference "D47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 199.8929791 -17.0689348 -67) - - - (fp_text reference "D48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 192.4690876 -34.558527 -67) - - - (fp_text reference "D49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 185.04519620000002 -52.0481192 -67) - - - (fp_text reference "D50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 188.3338751 3.0466591 -67) - - - (fp_text reference "D51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 180.9099836 -14.442933100000001 -67) - - - (fp_text reference "D52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 173.4860922 -31.9325254 -67) - - - (fp_text reference "D53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 166.0622007 -49.4221176 -67) - - - (fp_text reference "D54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 173.2581909 14.8777092 -67) - - - (fp_text reference "D55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 165.83429950000001 -2.611883 -67) - - - (fp_text reference "D56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 158.41040800000002 -20.1014752 -67) - - - (fp_text reference "D57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 150.98651660000002 -37.5910674 -67) - - - (fp_text reference "D58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 158.5732379 27.6292642 -67) - - - (fp_text reference "D59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 151.1493465 10.139672 -67) - - - (fp_text reference "D60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 143.725455 -7.3499202 -67) - - - (fp_text reference "D61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 136.3015636 -24.8395124 -67) - - - (fp_text reference "D62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 137.6365868 25.652741600000002 -67) - - - (fp_text reference "D63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 1 smd rect (at -1.65 0 -67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at -7.3640388 -3.125849 67) - - - (fp_text reference "D64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 0.059852599999999256 -20.6154412 67) - - - (fp_text reference "D65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 7.4837441 -38.1050334 67) - - - (fp_text reference "D66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 14.907635500000001 -55.5946256 67) - - - (fp_text reference "D67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 11.2282255 0.4206574999999999 67) - - - (fp_text reference "D68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 18.6521169 -17.0689348 67) - - - (fp_text reference "D69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 26.076008400000003 -34.558527 67) - - - (fp_text reference "D70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 33.499899799999994 -52.0481192 67) - - - (fp_text reference "D71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 30.211220899999997 3.0466591 67) - - - (fp_text reference "D72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 37.6351124 -14.442933100000001 67) - - - (fp_text reference "D73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 45.0590038 -31.9325254 67) - - - (fp_text reference "D74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 52.482895299999996 -49.4221176 67) - - - (fp_text reference "D75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 45.2869051 14.8777092 67) - - - (fp_text reference "D76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 52.710796499999994 -2.611883 67) - - - (fp_text reference "D77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 60.134688 -20.1014752 67) - - - (fp_text reference "D78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 67.5585794 -37.5910674 67) - - - (fp_text reference "D79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 59.97185809999999 27.6292642 67) - - - (fp_text reference "D80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 67.3957495 10.139672 67) - - - (fp_text reference "D81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 74.81964099999999 -7.3499202 67) - - - (fp_text reference "D82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 82.24353239999999 -24.8395124 67) - - - (fp_text reference "D83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 80.9085092 25.652741600000002 67) - - - (fp_text reference "D84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 1 smd rect (at -1.65 0 67) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 67) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 67) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 67) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) - ) - - - - - (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) - - (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") - (tags "SPST Tactile Switch") - - (at 109.272548 30.7551132 90) - - (fp_text reference "B1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) - - - (pad 1 smd rect (at -3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) - (pad 1 smd rect (at 3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) - (pad 2 smd rect (at -3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) - (pad 2 smd rect (at 3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) - ) - - - - - (module ProMicro (layer F.Cu) (tedit 5B307E4C) - (at 109.272548 34.7551132 270) - - - (fp_text reference "MCU1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - - - - (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) - - - (fp_text user RAW (at -13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - (fp_text user P01 (at -13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - - (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 61 "RAW")) - (pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 59 "RST")) - (pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 62 "VCC")) - (pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "P21")) - (pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P20")) - (pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P19")) - (pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P18")) - (pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P15")) - (pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 27 "P14")) - (pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 55 "P16")) - (pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 56 "P10")) - - (pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 63 "P1")) - (pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 64 "P0")) - (pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 29 "P2")) - (pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 34 "P3")) - (pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 39 "P4")) - (pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 44 "P5")) - (pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 49 "P6")) - (pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 54 "P7")) - (pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 58 "P8")) - (pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 57 "P9")) - ) - - (gr_line (start 115.825165 -27.0114006) (end 102.719931 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 102.719931 -27.0114006) (end 72.9592939 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 72.9592939 -51.5940058) (end 54.5491969 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 54.5491969 -59.4086284) (end 16.9739371 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 16.9739371 -65.58113639999999) (end -13.1123598 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start -13.1123598 5.2977372) (end 5.2977372 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 5.2977372 13.1123598) (end 54.223537099999994 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 54.223537099999994 36.0528504) (end 72.6336341 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 72.6336341 43.867473000000004) (end 145.9114619 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 145.9114619 43.867473000000004) (end 164.3215589 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 164.3215589 36.0528504) (end 213.2473588 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 213.2473588 13.1123598) (end 231.6574558 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 231.6574558 5.2977372) (end 201.5711589 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 201.5711589 -65.58113639999999) (end 163.9958991 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 163.9958991 -59.4086284) (end 145.5858021 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 145.5858021 -51.5940058) (end 115.825165 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) - -) - - \ No newline at end of file diff --git a/kicad/23creus/23creus.kicad_prl b/kicad/23creus/23creus.kicad_prl deleted file mode 100644 index 4beb8e5..0000000 --- a/kicad/23creus/23creus.kicad_prl +++ /dev/null @@ -1,77 +0,0 @@ -{ - "board": { - "active_layer": 37, - "active_layer_preset": "All Layers", - "auto_track_width": true, - "hidden_netclasses": [], - "hidden_nets": [], - "high_contrast_mode": 0, - "net_color_mode": 1, - "opacity": { - "images": 0.6, - "pads": 1.0, - "tracks": 1.0, - "vias": 1.0, - "zones": 0.6 - }, - "ratsnest_display_mode": 0, - "selection_filter": { - "dimensions": true, - "footprints": true, - "graphics": true, - "keepouts": true, - "lockedItems": true, - "otherItems": true, - "pads": true, - "text": true, - "tracks": true, - "vias": true, - "zones": true - }, - "visible_items": [ - 0, - 1, - 2, - 3, - 4, - 5, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 32, - 33, - 34, - 35, - 36 - ], - "visible_layers": "fffffff_ffffffff", - "zone_display_mode": 0 - }, - "meta": { - "filename": "23creus.kicad_prl", - "version": 3 - }, - "project": { - "files": [] - } -} diff --git a/kicad/23creus/23creus.kicad_pro b/kicad/23creus/23creus.kicad_pro deleted file mode 100644 index 65fc3e8..0000000 --- a/kicad/23creus/23creus.kicad_pro +++ /dev/null @@ -1,731 +0,0 @@ -{ - "board": { - "3dviewports": [], - "design_settings": { - "defaults": { - "board_outline_line_width": 0.049999999999999996, - "copper_line_width": 0.19999999999999998, - "copper_text_italic": false, - "copper_text_size_h": 1.5, - "copper_text_size_v": 1.5, - "copper_text_thickness": 0.3, - "copper_text_upright": false, - "courtyard_line_width": 0.049999999999999996, - "dimension_precision": 4, - "dimension_units": 3, - "dimensions": { - "arrow_length": 1270000, - "extension_offset": 500000, - "keep_text_aligned": true, - "suppress_zeroes": false, - "text_position": 0, - "units_format": 1 - }, - "fab_line_width": 0.09999999999999999, - "fab_text_italic": false, - "fab_text_size_h": 1.0, - "fab_text_size_v": 1.0, - "fab_text_thickness": 0.15, - "fab_text_upright": false, - "other_line_width": 0.09999999999999999, - "other_text_italic": false, - "other_text_size_h": 1.0, - "other_text_size_v": 1.0, - "other_text_thickness": 0.15, - "other_text_upright": false, - "pads": { - "drill": 0.762, - "height": 1.524, - "width": 1.524 - }, - "silk_line_width": 0.12, - "silk_text_italic": false, - "silk_text_size_h": 1.0, - "silk_text_size_v": 1.0, - "silk_text_thickness": 0.15, - "silk_text_upright": false, - "zones": { - "min_clearance": 0.508 - } - }, - "diff_pair_dimensions": [], - "drc_exclusions": [], - "meta": { - "filename": "board_design_settings.json", - "version": 2 - }, - "rule_severities": { - "annular_width": "error", - "clearance": "error", - "connection_width": "warning", - "copper_edge_clearance": "error", - "copper_sliver": "warning", - "courtyards_overlap": "error", - "diff_pair_gap_out_of_range": "error", - "diff_pair_uncoupled_length_too_long": "error", - "drill_out_of_range": "error", - "duplicate_footprints": "warning", - "extra_footprint": "warning", - "footprint": "error", - "footprint_type_mismatch": "ignore", - "hole_clearance": "error", - "hole_near_hole": "error", - "invalid_outline": "error", - "isolated_copper": "warning", - "item_on_disabled_layer": "error", - "items_not_allowed": "error", - "length_out_of_range": "error", - "lib_footprint_issues": "warning", - "lib_footprint_mismatch": "warning", - "malformed_courtyard": "error", - "microvia_drill_out_of_range": "error", - "missing_courtyard": "ignore", - "missing_footprint": "warning", - "net_conflict": "warning", - "npth_inside_courtyard": "ignore", - "padstack": "warning", - "pth_inside_courtyard": "ignore", - "shorting_items": "error", - "silk_edge_clearance": "warning", - "silk_over_copper": "warning", - "silk_overlap": "warning", - "skew_out_of_range": "error", - "solder_mask_bridge": "error", - "starved_thermal": "error", - "text_height": "warning", - "text_thickness": "warning", - "through_hole_pad_without_hole": "error", - "too_many_vias": "error", - "track_dangling": "warning", - "track_width": "error", - "tracks_crossing": "error", - "unconnected_items": "error", - "unresolved_variable": "error", - "via_dangling": "warning", - "zones_intersect": "error" - }, - "rules": { - "max_error": 0.005, - "min_clearance": 0.0, - "min_connection": 0.0, - "min_copper_edge_clearance": 0.075, - "min_hole_clearance": 0.25, - "min_hole_to_hole": 0.25, - "min_microvia_diameter": 0.19999999999999998, - "min_microvia_drill": 0.09999999999999999, - "min_resolved_spokes": 2, - "min_silk_clearance": 0.0, - "min_text_height": 0.7999999999999999, - "min_text_thickness": 0.08, - "min_through_hole_diameter": 0.3, - "min_track_width": 0.19999999999999998, - "min_via_annular_width": 0.09999999999999999, - "min_via_diameter": 0.39999999999999997, - "solder_mask_to_copper_clearance": 0.0, - "use_height_for_length_calcs": true - }, - "teardrop_options": [ - { - "td_allow_use_two_tracks": true, - "td_curve_segcount": 5, - "td_on_pad_in_zone": false, - "td_onpadsmd": true, - "td_onroundshapesonly": false, - "td_ontrackend": false, - "td_onviapad": true - } - ], - "teardrop_parameters": [ - { - "td_curve_segcount": 0, - "td_height_ratio": 1.0, - "td_length_ratio": 0.5, - "td_maxheight": 2.0, - "td_maxlen": 1.0, - "td_target_name": "td_round_shape", - "td_width_to_size_filter_ratio": 0.9 - }, - { - "td_curve_segcount": 0, - "td_height_ratio": 1.0, - "td_length_ratio": 0.5, - "td_maxheight": 2.0, - "td_maxlen": 1.0, - "td_target_name": "td_rect_shape", - "td_width_to_size_filter_ratio": 0.9 - }, - { - "td_curve_segcount": 0, - "td_height_ratio": 1.0, - "td_length_ratio": 0.5, - "td_maxheight": 2.0, - "td_maxlen": 1.0, - "td_target_name": "td_track_end", - "td_width_to_size_filter_ratio": 0.9 - } - ], - "track_widths": [], - "via_dimensions": [], - "zones_allow_external_fillets": false, - "zones_use_no_outline": true - }, - "layer_presets": [], - "viewports": [] - }, - "boards": [], - "cvpcb": { - "equivalence_files": [] - }, - "erc": { - "erc_exclusions": [], - "meta": { - "version": 0 - }, - "pin_map": [ - [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 2 - ], - [ - 0, - 2, - 0, - 1, - 0, - 0, - 1, - 0, - 2, - 2, - 2, - 2 - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 1, - 2 - ], - [ - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 1, - 1, - 2 - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 2 - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2 - ], - [ - 1, - 1, - 1, - 1, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 2 - ], - [ - 0, - 0, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 2 - ], - [ - 0, - 2, - 1, - 2, - 0, - 0, - 1, - 0, - 2, - 2, - 2, - 2 - ], - [ - 0, - 2, - 0, - 1, - 0, - 0, - 1, - 0, - 2, - 0, - 0, - 2 - ], - [ - 0, - 2, - 1, - 1, - 0, - 0, - 1, - 0, - 2, - 0, - 0, - 2 - ], - [ - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2 - ] - ], - "rule_severities": { - "bus_definition_conflict": "error", - "bus_entry_needed": "error", - "bus_label_syntax": "error", - "bus_to_bus_conflict": "error", - "bus_to_net_conflict": "error", - "different_unit_footprint": "error", - "different_unit_net": "error", - "duplicate_reference": "error", - "duplicate_sheet_names": "error", - "extra_units": "error", - "global_label_dangling": "warning", - "hier_label_mismatch": "error", - "label_dangling": "error", - "lib_symbol_issues": "warning", - "multiple_net_names": "warning", - "net_not_bus_member": "warning", - "no_connect_connected": "warning", - "no_connect_dangling": "warning", - "pin_not_connected": "error", - "pin_not_driven": "error", - "pin_to_pin": "warning", - "power_pin_not_driven": "error", - "similar_labels": "warning", - "unannotated": "error", - "unit_value_mismatch": "error", - "unresolved_variable": "error", - "wire_dangling": "error" - } - }, - "libraries": { - "pinned_footprint_libs": [], - "pinned_symbol_libs": [] - }, - "meta": { - "filename": "23creus.kicad_pro", - "version": 1 - }, - "net_settings": { - "classes": [ - { - "bus_width": 12, - "clearance": 0.2, - "diff_pair_gap": 0.25, - "diff_pair_via_gap": 0.25, - "diff_pair_width": 0.2, - "line_style": 0, - "microvia_diameter": 0.3, - "microvia_drill": 0.1, - "name": "Default", - "pcb_color": "rgba(0, 0, 0, 0.000)", - "schematic_color": "rgba(0, 0, 0, 0.000)", - "track_width": 0.25, - "via_diameter": 0.8, - "via_drill": 0.4, - "wire_width": 6 - } - ], - "meta": { - "version": 3 - }, - "net_colors": null, - "netclass_assignments": null, - "netclass_patterns": [ - { - "netclass": "Default", - "pattern": "" - }, - { - "netclass": "Default", - "pattern": "pinky_bottom" - }, - { - "netclass": "Default", - "pattern": "P21" - }, - { - "netclass": "Default", - "pattern": "pinky_home" - }, - { - "netclass": "Default", - "pattern": "pinky_top" - }, - { - "netclass": "Default", - "pattern": "pinky_num" - }, - { - "netclass": "Default", - "pattern": "ring_bottom" - }, - { - "netclass": "Default", - "pattern": "P20" - }, - { - "netclass": "Default", - "pattern": "ring_home" - }, - { - "netclass": "Default", - "pattern": "ring_top" - }, - { - "netclass": "Default", - "pattern": "ring_num" - }, - { - "netclass": "Default", - "pattern": "middle_bottom" - }, - { - "netclass": "Default", - "pattern": "P19" - }, - { - "netclass": "Default", - "pattern": "middle_home" - }, - { - "netclass": "Default", - "pattern": "middle_top" - }, - { - "netclass": "Default", - "pattern": "middle_num" - }, - { - "netclass": "Default", - "pattern": "index_bottom" - }, - { - "netclass": "Default", - "pattern": "P18" - }, - { - "netclass": "Default", - "pattern": "index_home" - }, - { - "netclass": "Default", - "pattern": "index_top" - }, - { - "netclass": "Default", - "pattern": "index_num" - }, - { - "netclass": "Default", - "pattern": "inner_bottom" - }, - { - "netclass": "Default", - "pattern": "P15" - }, - { - "netclass": "Default", - "pattern": "inner_home" - }, - { - "netclass": "Default", - "pattern": "inner_top" - }, - { - "netclass": "Default", - "pattern": "inner_num" - }, - { - "netclass": "Default", - "pattern": "thumb_bottom" - }, - { - "netclass": "Default", - "pattern": "P14" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_bottom" - }, - { - "netclass": "Default", - "pattern": "P2" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_home" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_top" - }, - { - "netclass": "Default", - "pattern": "mirror_pinky_num" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_bottom" - }, - { - "netclass": "Default", - "pattern": "P3" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_home" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_top" - }, - { - "netclass": "Default", - "pattern": "mirror_ring_num" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_bottom" - }, - { - "netclass": "Default", - "pattern": "P4" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_home" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_top" - }, - { - "netclass": "Default", - "pattern": "mirror_middle_num" - }, - { - "netclass": "Default", - "pattern": "mirror_index_bottom" - }, - { - "netclass": "Default", - "pattern": "P5" - }, - { - "netclass": "Default", - "pattern": "mirror_index_home" - }, - { - "netclass": "Default", - "pattern": "mirror_index_top" - }, - { - "netclass": "Default", - "pattern": "mirror_index_num" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_bottom" - }, - { - "netclass": "Default", - "pattern": "P6" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_home" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_top" - }, - { - "netclass": "Default", - "pattern": "mirror_inner_num" - }, - { - "netclass": "Default", - "pattern": "mirror_thumb_bottom" - }, - { - "netclass": "Default", - "pattern": "P7" - }, - { - "netclass": "Default", - "pattern": "P16" - }, - { - "netclass": "Default", - "pattern": "P10" - }, - { - "netclass": "Default", - "pattern": "P9" - }, - { - "netclass": "Default", - "pattern": "P8" - }, - { - "netclass": "Default", - "pattern": "RST" - }, - { - "netclass": "Default", - "pattern": "GND" - }, - { - "netclass": "Default", - "pattern": "RAW" - }, - { - "netclass": "Default", - "pattern": "VCC" - }, - { - "netclass": "Default", - "pattern": "P1" - }, - { - "netclass": "Default", - "pattern": "P0" - } - ] - }, - "pcbnew": { - "last_paths": { - "gencad": "", - "idf": "", - "netlist": "", - "specctra_dsn": "", - "step": "", - "vrml": "" - }, - "page_layout_descr_file": "" - }, - "schematic": { - "annotate_start_num": 0, - "drawing": { - "default_line_thickness": 6.0, - "default_text_size": 50.0, - "field_names": [], - "intersheets_ref_own_page": false, - "intersheets_ref_prefix": "", - "intersheets_ref_short": false, - "intersheets_ref_show": false, - "intersheets_ref_suffix": "", - "junction_size_choice": 3, - "label_size_ratio": 0.375, - "pin_symbol_size": 25.0, - "text_offset_ratio": 0.15 - }, - "legacy_lib_dir": "", - "legacy_lib_list": [], - "meta": { - "version": 1 - }, - "net_format_name": "", - "ngspice": { - "fix_include_paths": true, - "fix_passive_vals": false, - "meta": { - "version": 0 - }, - "model_mode": 0, - "workbook_filename": "" - }, - "page_layout_descr_file": "", - "plot_directory": "", - "spice_adjust_passive_values": false, - "spice_external_command": "spice \"%I\"", - "subpart_first_id": 65, - "subpart_id_separator": 0 - }, - "sheets": [], - "text_variables": {} -} diff --git a/kicad/23creus/23creus.kicad_sch b/kicad/23creus/23creus.kicad_sch deleted file mode 100644 index 3cfeed7..0000000 --- a/kicad/23creus/23creus.kicad_sch +++ /dev/null @@ -1,5 +0,0 @@ -(kicad_sch (version 20211123) (generator eeschema) - (paper "A4") - (lib_symbols) - (symbol_instances) -) diff --git a/kicad/23creus/main.kicad_pcb b/kicad/23creus/main.kicad_pcb deleted file mode 100644 index ee475df..0000000 --- a/kicad/23creus/main.kicad_pcb +++ /dev/null @@ -1,7254 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title main) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "pinky_bottom") -(net 2 "P21") -(net 3 "pinky_home") -(net 4 "pinky_top") -(net 5 "pinky_num") -(net 6 "ring_bottom") -(net 7 "P20") -(net 8 "ring_home") -(net 9 "ring_top") -(net 10 "ring_num") -(net 11 "middle_bottom") -(net 12 "P19") -(net 13 "middle_home") -(net 14 "middle_top") -(net 15 "middle_num") -(net 16 "index_bottom") -(net 17 "P18") -(net 18 "index_home") -(net 19 "index_top") -(net 20 "index_num") -(net 21 "inner_bottom") -(net 22 "P15") -(net 23 "inner_home") -(net 24 "inner_top") -(net 25 "inner_num") -(net 26 "thumb_bottom") -(net 27 "P14") -(net 28 "mirror_pinky_bottom") -(net 29 "P2") -(net 30 "mirror_pinky_home") -(net 31 "mirror_pinky_top") -(net 32 "mirror_pinky_num") -(net 33 "mirror_ring_bottom") -(net 34 "P3") -(net 35 "mirror_ring_home") -(net 36 "mirror_ring_top") -(net 37 "mirror_ring_num") -(net 38 "mirror_middle_bottom") -(net 39 "P4") -(net 40 "mirror_middle_home") -(net 41 "mirror_middle_top") -(net 42 "mirror_middle_num") -(net 43 "mirror_index_bottom") -(net 44 "P5") -(net 45 "mirror_index_home") -(net 46 "mirror_index_top") -(net 47 "mirror_index_num") -(net 48 "mirror_inner_bottom") -(net 49 "P6") -(net 50 "mirror_inner_home") -(net 51 "mirror_inner_top") -(net 52 "mirror_inner_num") -(net 53 "mirror_thumb_bottom") -(net 54 "P7") -(net 55 "P16") -(net 56 "P10") -(net 57 "P9") -(net 58 "P8") -(net 59 "RST") -(net 60 "GND") -(net 61 "RAW") -(net 62 "VCC") -(net 63 "P1") -(net 64 "P0") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "pinky_bottom") -(add_net "P21") -(add_net "pinky_home") -(add_net "pinky_top") -(add_net "pinky_num") -(add_net "ring_bottom") -(add_net "P20") -(add_net "ring_home") -(add_net "ring_top") -(add_net "ring_num") -(add_net "middle_bottom") -(add_net "P19") -(add_net "middle_home") -(add_net "middle_top") -(add_net "middle_num") -(add_net "index_bottom") -(add_net "P18") -(add_net "index_home") -(add_net "index_top") -(add_net "index_num") -(add_net "inner_bottom") -(add_net "P15") -(add_net "inner_home") -(add_net "inner_top") -(add_net "inner_num") -(add_net "thumb_bottom") -(add_net "P14") -(add_net "mirror_pinky_bottom") -(add_net "P2") -(add_net "mirror_pinky_home") -(add_net "mirror_pinky_top") -(add_net "mirror_pinky_num") -(add_net "mirror_ring_bottom") -(add_net "P3") -(add_net "mirror_ring_home") -(add_net "mirror_ring_top") -(add_net "mirror_ring_num") -(add_net "mirror_middle_bottom") -(add_net "P4") -(add_net "mirror_middle_home") -(add_net "mirror_middle_top") -(add_net "mirror_middle_num") -(add_net "mirror_index_bottom") -(add_net "P5") -(add_net "mirror_index_home") -(add_net "mirror_index_top") -(add_net "mirror_index_num") -(add_net "mirror_inner_bottom") -(add_net "P6") -(add_net "mirror_inner_home") -(add_net "mirror_inner_top") -(add_net "mirror_inner_num") -(add_net "mirror_thumb_bottom") -(add_net "P7") -(add_net "P16") -(add_net "P10") -(add_net "P9") -(add_net "P8") -(add_net "RST") -(add_net "GND") -(add_net "RAW") -(add_net "VCC") -(add_net "P1") -(add_net "P0") - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 0 0 -23) - - - (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 7.4238914 -17.4895922 -23) - - - (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 14.8477829 -34.9791844 -23) - - - (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 22.2716743 -52.4687766 -23) - - - (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 18.5922643 3.5465065 -23) - - - (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 26.0161557 -13.9430858 -23) - - - (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 33.4400472 -31.432678 -23) - - - (fp_text reference "S7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 40.8639386 -48.9222702 -23) - - - (fp_text reference "S8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 37.5752597 6.1725081 -23) - - - (fp_text reference "S9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 44.9991512 -11.3170841 -23) - - - (fp_text reference "S10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.4230426 -28.8066764 -23) - - - (fp_text reference "S11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 59.8469341 -46.2962686 -23) - - - (fp_text reference "S12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.6509439 18.0035582 -23) - - - (fp_text reference "S13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 60.0748353 0.513966 -23) - - - (fp_text reference "S14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.4987268 -16.9756262 -23) - - - (fp_text reference "S15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.9226182 -34.4652184 -23) - - - (fp_text reference "S16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.3358969 30.7551132 -23) - - - (fp_text reference "S17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.7597883 13.265521 -23) - - - (fp_text reference "S18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 82.1836798 -4.2240712 -23) - - - (fp_text reference "S19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 89.6075712 -21.7136634 -23) - - - (fp_text reference "S20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 88.272548 28.7785906 -23) - - - (fp_text reference "S21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 218.545096 0 23) - - - (fp_text reference "S22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 211.1212046 -17.4895922 23) - - - (fp_text reference "S23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 203.6973131 -34.9791844 23) - - - (fp_text reference "S24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 196.2734217 -52.4687766 23) - - - (fp_text reference "S25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 199.9528317 3.5465065 23) - - - (fp_text reference "S26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 192.5289403 -13.9430858 23) - - - (fp_text reference "S27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 185.1050488 -31.432678 23) - - - (fp_text reference "S28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 177.68115740000002 -48.9222702 23) - - - (fp_text reference "S29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 180.9698363 6.1725081 23) - - - (fp_text reference "S30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 173.5459448 -11.3170841 23) - - - (fp_text reference "S31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 166.1220534 -28.8066764 23) - - - (fp_text reference "S32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.6981619 -46.2962686 23) - - - (fp_text reference "S33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 165.89415209999999 18.0035582 23) - - - (fp_text reference "S34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.4702607 0.513966 23) - - - (fp_text reference "S35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.04636920000002 -16.9756262 23) - - - (fp_text reference "S36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.6224778 -34.4652184 23) - - - (fp_text reference "S37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.2091991 30.7551132 23) - - - (fp_text reference "S38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.7853077 13.265521 23) - - - (fp_text reference "S39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 136.3614162 -4.2240712 23) - - - (fp_text reference "S40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 128.9375248 -21.7136634 23) - - - (fp_text reference "S41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 130.272548 28.7785906 23) - - - (fp_text reference "S42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 218.545096 0 23) - - - (fp_text reference "S43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 211.1212046 -17.4895922 23) - - - (fp_text reference "S44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 203.6973131 -34.9791844 23) - - - (fp_text reference "S45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 196.2734217 -52.4687766 23) - - - (fp_text reference "S46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 29 "P2")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 199.9528317 3.5465065 23) - - - (fp_text reference "S47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 192.5289403 -13.9430858 23) - - - (fp_text reference "S48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 185.1050488 -31.432678 23) - - - (fp_text reference "S49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 177.68115740000002 -48.9222702 23) - - - (fp_text reference "S50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 34 "P3")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 180.9698363 6.1725081 23) - - - (fp_text reference "S51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 173.5459448 -11.3170841 23) - - - (fp_text reference "S52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 166.1220534 -28.8066764 23) - - - (fp_text reference "S53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.6981619 -46.2962686 23) - - - (fp_text reference "S54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 39 "P4")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 165.89415209999999 18.0035582 23) - - - (fp_text reference "S55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 158.4702607 0.513966 23) - - - (fp_text reference "S56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.04636920000002 -16.9756262 23) - - - (fp_text reference "S57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.6224778 -34.4652184 23) - - - (fp_text reference "S58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 44 "P5")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 151.2091991 30.7551132 23) - - - (fp_text reference "S59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 143.7853077 13.265521 23) - - - (fp_text reference "S60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 136.3614162 -4.2240712 23) - - - (fp_text reference "S61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 128.9375248 -21.7136634 23) - - - (fp_text reference "S62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 49 "P6")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 130.272548 28.7785906 23) - - - (fp_text reference "S63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 54 "P7")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 0 0 -23) - - - (fp_text reference "S64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 7.4238914 -17.4895922 -23) - - - (fp_text reference "S65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 14.8477829 -34.9791844 -23) - - - (fp_text reference "S66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 22.2716743 -52.4687766 -23) - - - (fp_text reference "S67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "P21")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 18.5922643 3.5465065 -23) - - - (fp_text reference "S68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 26.0161557 -13.9430858 -23) - - - (fp_text reference "S69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 33.4400472 -31.432678 -23) - - - (fp_text reference "S70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 40.8639386 -48.9222702 -23) - - - (fp_text reference "S71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 7 "P20")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 37.5752597 6.1725081 -23) - - - (fp_text reference "S72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 44.9991512 -11.3170841 -23) - - - (fp_text reference "S73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.4230426 -28.8066764 -23) - - - (fp_text reference "S74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 59.8469341 -46.2962686 -23) - - - (fp_text reference "S75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 12 "P19")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 52.6509439 18.0035582 -23) - - - (fp_text reference "S76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 60.0748353 0.513966 -23) - - - (fp_text reference "S77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.4987268 -16.9756262 -23) - - - (fp_text reference "S78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.9226182 -34.4652184 -23) - - - (fp_text reference "S79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 17 "P18")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 67.3358969 30.7551132 -23) - - - (fp_text reference "S80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 74.7597883 13.265521 -23) - - - (fp_text reference "S81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 82.1836798 -4.2240712 -23) - - - (fp_text reference "S82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 89.6075712 -21.7136634 -23) - - - (fp_text reference "S83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 22 "P15")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 88.272548 28.7785906 -23) - - - (fp_text reference "S84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 2 smd rect (at 8.275 -3.75 -23) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 27 "P14")) - ) - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at -1.9536556 4.6025243 157) - - - (fp_text reference "D1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 5.470235799999999 -12.887067900000002 157) - - - (fp_text reference "D2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 12.894127300000001 -30.376660100000002 157) - - - (fp_text reference "D3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 20.3180187 -47.8662523 157) - - - (fp_text reference "D4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 16.6386087 8.1490308 157) - - - (fp_text reference "D5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 24.062500099999998 -9.3405615 157) - - - (fp_text reference "D6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 31.4863916 -26.8301537 157) - - - (fp_text reference "D7" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 38.910283 -44.3197459 157) - - - (fp_text reference "D8" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 35.6216041 10.7750324 157) - - - (fp_text reference "D9" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 43.0454956 -6.714559800000001 157) - - - (fp_text reference "D10" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.469387000000005 -24.2041521 157) - - - (fp_text reference "D11" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 57.8932785 -41.6937443 157) - - - (fp_text reference "D12" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.697288300000004 22.6060825 157) - - - (fp_text reference "D13" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 58.1211797 5.1164903 157) - - - (fp_text reference "D14" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.5450712 -12.373101900000002 157) - - - (fp_text reference "D15" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.9689626 -29.8626941 157) - - - (fp_text reference "D16" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.38224129999999 35.3576375 157) - - - (fp_text reference "D17" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.80613269999999 17.8680453 157) - - - (fp_text reference "D18" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 80.23002419999999 0.37845309999999976 157) - - - (fp_text reference "D19" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 87.65391559999999 -17.111139100000003 157) - - - (fp_text reference "D20" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 86.3188924 33.3811149 157) - - - (fp_text reference "D21" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 220.4987516 4.6025243 -157) - - - (fp_text reference "D22" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 213.0748602 -12.887067900000002 -157) - - - (fp_text reference "D23" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 205.6509687 -30.376660100000002 -157) - - - (fp_text reference "D24" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 198.2270773 -47.8662523 -157) - - - (fp_text reference "D25" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 201.90648729999998 8.1490308 -157) - - - (fp_text reference "D26" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 194.48259589999998 -9.3405615 -157) - - - (fp_text reference "D27" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 187.05870439999998 -26.8301537 -157) - - - (fp_text reference "D28" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 179.634813 -44.3197459 -157) - - - (fp_text reference "D29" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 182.9234919 10.7750324 -157) - - - (fp_text reference "D30" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 175.4996004 -6.714559800000001 -157) - - - (fp_text reference "D31" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 168.075709 -24.2041521 -157) - - - (fp_text reference "D32" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.6518175 -41.6937443 -157) - - - (fp_text reference "D33" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 167.84780769999998 22.6060825 -157) - - - (fp_text reference "D34" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.4239163 5.1164903 -157) - - - (fp_text reference "D35" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.0000248 -12.373101900000002 -157) - - - (fp_text reference "D36" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.5761334 -29.8626941 -157) - - - (fp_text reference "D37" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.1628547 35.3576375 -157) - - - (fp_text reference "D38" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.7389633 17.8680453 -157) - - - (fp_text reference "D39" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 138.3150718 0.37845309999999976 -157) - - - (fp_text reference "D40" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 130.8911804 -17.111139100000003 -157) - - - (fp_text reference "D41" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 132.2262036 33.3811149 -157) - - - (fp_text reference "D42" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 220.4987516 4.6025243 -157) - - - (fp_text reference "D43" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 28 "mirror_pinky_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 28 "mirror_pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 28 "mirror_pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 213.0748602 -12.887067900000002 -157) - - - (fp_text reference "D44" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 30 "mirror_pinky_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 30 "mirror_pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 30 "mirror_pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 205.6509687 -30.376660100000002 -157) - - - (fp_text reference "D45" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 31 "mirror_pinky_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 31 "mirror_pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 31 "mirror_pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 198.2270773 -47.8662523 -157) - - - (fp_text reference "D46" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 32 "mirror_pinky_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 32 "mirror_pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 32 "mirror_pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 201.90648729999998 8.1490308 -157) - - - (fp_text reference "D47" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 33 "mirror_ring_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 33 "mirror_ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 33 "mirror_ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 194.48259589999998 -9.3405615 -157) - - - (fp_text reference "D48" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 35 "mirror_ring_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 35 "mirror_ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 35 "mirror_ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 187.05870439999998 -26.8301537 -157) - - - (fp_text reference "D49" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 36 "mirror_ring_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 36 "mirror_ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 36 "mirror_ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 179.634813 -44.3197459 -157) - - - (fp_text reference "D50" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 37 "mirror_ring_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 37 "mirror_ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 37 "mirror_ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 182.9234919 10.7750324 -157) - - - (fp_text reference "D51" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 38 "mirror_middle_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 38 "mirror_middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 38 "mirror_middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 175.4996004 -6.714559800000001 -157) - - - (fp_text reference "D52" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 40 "mirror_middle_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 40 "mirror_middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 40 "mirror_middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 168.075709 -24.2041521 -157) - - - (fp_text reference "D53" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 41 "mirror_middle_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 41 "mirror_middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 41 "mirror_middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.6518175 -41.6937443 -157) - - - (fp_text reference "D54" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 42 "mirror_middle_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 42 "mirror_middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 42 "mirror_middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 167.84780769999998 22.6060825 -157) - - - (fp_text reference "D55" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 43 "mirror_index_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 43 "mirror_index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 43 "mirror_index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 160.4239163 5.1164903 -157) - - - (fp_text reference "D56" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 45 "mirror_index_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 45 "mirror_index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 45 "mirror_index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.0000248 -12.373101900000002 -157) - - - (fp_text reference "D57" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 46 "mirror_index_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 46 "mirror_index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 46 "mirror_index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.5761334 -29.8626941 -157) - - - (fp_text reference "D58" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 47 "mirror_index_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 47 "mirror_index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 47 "mirror_index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 153.1628547 35.3576375 -157) - - - (fp_text reference "D59" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 48 "mirror_inner_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 48 "mirror_inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 48 "mirror_inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 145.7389633 17.8680453 -157) - - - (fp_text reference "D60" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 50 "mirror_inner_home")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 50 "mirror_inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 50 "mirror_inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 138.3150718 0.37845309999999976 -157) - - - (fp_text reference "D61" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 51 "mirror_inner_top")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 51 "mirror_inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 51 "mirror_inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 130.8911804 -17.111139100000003 -157) - - - (fp_text reference "D62" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 52 "mirror_inner_num")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 52 "mirror_inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 52 "mirror_inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 132.2262036 33.3811149 -157) - - - (fp_text reference "D63" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 53 "mirror_thumb_bottom")) - (pad 1 smd rect (at -1.65 0 -157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 -157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 53 "mirror_thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 -157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 -157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 53 "mirror_thumb_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at -1.9536556 4.6025243 157) - - - (fp_text reference "D64" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "pinky_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "pinky_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "pinky_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 5.470235799999999 -12.887067900000002 157) - - - (fp_text reference "D65" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 3 "pinky_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 3 "pinky_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 3 "pinky_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 12.894127300000001 -30.376660100000002 157) - - - (fp_text reference "D66" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 4 "pinky_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 4 "pinky_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 4 "pinky_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 20.3180187 -47.8662523 157) - - - (fp_text reference "D67" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 5 "pinky_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "pinky_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 5 "pinky_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 16.6386087 8.1490308 157) - - - (fp_text reference "D68" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 6 "ring_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "ring_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 6 "ring_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 24.062500099999998 -9.3405615 157) - - - (fp_text reference "D69" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 8 "ring_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 8 "ring_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 8 "ring_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 31.4863916 -26.8301537 157) - - - (fp_text reference "D70" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 9 "ring_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "ring_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 9 "ring_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 38.910283 -44.3197459 157) - - - (fp_text reference "D71" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 10 "ring_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "ring_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 10 "ring_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 35.6216041 10.7750324 157) - - - (fp_text reference "D72" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 11 "middle_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 11 "middle_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 11 "middle_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 43.0454956 -6.714559800000001 157) - - - (fp_text reference "D73" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 13 "middle_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 13 "middle_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 13 "middle_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.469387000000005 -24.2041521 157) - - - (fp_text reference "D74" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 14 "middle_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 14 "middle_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 14 "middle_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 57.8932785 -41.6937443 157) - - - (fp_text reference "D75" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 15 "middle_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 15 "middle_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 15 "middle_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 50.697288300000004 22.6060825 157) - - - (fp_text reference "D76" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 16 "index_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 16 "index_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 16 "index_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 58.1211797 5.1164903 157) - - - (fp_text reference "D77" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 18 "index_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 18 "index_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 18 "index_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.5450712 -12.373101900000002 157) - - - (fp_text reference "D78" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 19 "index_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 19 "index_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 19 "index_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.9689626 -29.8626941 157) - - - (fp_text reference "D79" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 20 "index_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 20 "index_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 20 "index_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 65.38224129999999 35.3576375 157) - - - (fp_text reference "D80" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 21 "inner_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 21 "inner_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 21 "inner_bottom")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 72.80613269999999 17.8680453 157) - - - (fp_text reference "D81" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 23 "inner_home")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 56 "P10")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 23 "inner_home")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 56 "P10")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 23 "inner_home")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 80.23002419999999 0.37845309999999976 157) - - - (fp_text reference "D82" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 24 "inner_top")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 57 "P9")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 24 "inner_top")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 57 "P9")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 24 "inner_top")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 87.65391559999999 -17.111139100000003 157) - - - (fp_text reference "D83" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 25 "inner_num")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 58 "P8")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 25 "inner_num")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 58 "P8")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 25 "inner_num")) - ) - - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 86.3188924 33.3811149 157) - - - (fp_text reference "D84" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 26 "thumb_bottom")) - (pad 1 smd rect (at -1.65 0 157) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 55 "P16")) - (pad 2 smd rect (at 1.65 0 157) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 26 "thumb_bottom")) - - - (pad 1 thru_hole rect (at -3.81 0 157) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 55 "P16")) - (pad 2 thru_hole circle (at 3.81 0 157) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 26 "thumb_bottom")) - ) - - - - - (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) - - (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") - (tags "SPST Tactile Switch") - - (at 109.272548 30.7551132 90) - - (fp_text reference "B1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) - - - (pad 1 smd rect (at -3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) - (pad 1 smd rect (at 3.1 -1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 59 "RST")) - (pad 2 smd rect (at -3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) - (pad 2 smd rect (at 3.1 1.85 90) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 60 "GND")) - ) - - - - - (module ProMicro (layer F.Cu) (tedit 5B307E4C) - (at 109.272548 34.7551132 270) - - - (fp_text reference "MCU1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - - - - (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) - - - (fp_text user RAW (at -13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - (fp_text user P01 (at -13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 -4.8 360) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - - (pad 1 thru_hole rect (at -13.97 7.62 270) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 61 "RAW")) - (pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 59 "RST")) - (pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 62 "VCC")) - (pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "P21")) - (pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P20")) - (pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P19")) - (pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P18")) - (pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P15")) - (pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 27 "P14")) - (pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 55 "P16")) - (pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 56 "P10")) - - (pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 63 "P1")) - (pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 64 "P0")) - (pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 60 "GND")) - (pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 29 "P2")) - (pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 34 "P3")) - (pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 39 "P4")) - (pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 44 "P5")) - (pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 49 "P6")) - (pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 54 "P7")) - (pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 58 "P8")) - (pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 57 "P9")) - ) - - (gr_line (start 115.825165 -27.0114006) (end 102.719931 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 102.719931 -27.0114006) (end 72.9592939 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 72.9592939 -51.5940058) (end 54.5491969 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 54.5491969 -59.4086284) (end 16.9739371 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 16.9739371 -65.58113639999999) (end -13.1123598 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start -13.1123598 5.2977372) (end 5.2977372 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 5.2977372 13.1123598) (end 54.223537099999994 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 54.223537099999994 36.0528504) (end 72.6336341 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 72.6336341 43.867473000000004) (end 145.9114619 43.867473000000004) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 145.9114619 43.867473000000004) (end 164.3215589 36.0528504) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 164.3215589 36.0528504) (end 213.2473588 13.1123598) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 213.2473588 13.1123598) (end 231.6574558 5.2977372) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 231.6574558 5.2977372) (end 201.5711589 -65.58113639999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 201.5711589 -65.58113639999999) (end 163.9958991 -59.4086284) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 163.9958991 -59.4086284) (end 145.5858021 -51.5940058) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 145.5858021 -51.5940058) (end 115.825165 -27.0114006) (angle 90) (layer Edge.Cuts) (width 0.15)) - -) - - \ No newline at end of file diff --git a/LICENSE b/license.md similarity index 100% rename from LICENSE rename to license.md diff --git a/package-lock.json b/package-lock.json index 35bdcc7..8d854cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,165 +1,80 @@ { "name": "ergogen", - "version": "4.0.5", - "lockfileVersion": 3, + "version": "3.1.1", + "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ergogen", - "version": "4.0.5", + "version": "3.1.1", "license": "MIT", "dependencies": { - "fs-extra": "^11.1.0", - "js-yaml": "^3.14.1", - "jszip": "^3.10.1", + "@jscad/openjscad": "github:ergogen/oldjscad", + "fs-extra": "^10.0.0", + "js-yaml": "^3.14.0", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^11.5.0", - "yargs": "^17.6.2" + "mathjs": "^10.0.0", + "semver": "^7.3.5", + "yargs": "^17.3.0" }, "bin": { "ergogen": "src/cli.js" }, "devDependencies": { - "@rollup/plugin-commonjs": "^24.0.1", - "@rollup/plugin-json": "^6.0.0", - "chai": "^4.3.7", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-json": "^4.1.0", + "chai": "^4.3.4", "chai-as-promised": "^7.1.1", - "dir-compare": "^4.0.0", - "glob": "^8.1.0", - "mocha": "^10.2.0", + "dir-compare": "^3.3.0", + "glob": "^7.2.0", + "mocha": "^9.1.3", "nyc": "^15.1.0", - "rollup": "^3.10.1", - "sinon": "^15.0.1" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "rollup": "^2.61.1" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.20.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", - "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", + "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helpers": "^7.20.7", - "@babel/parser": "^7.20.7", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.12", - "@babel/types": "^7.20.7", + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helpers": "^7.16.5", + "@babel/parser": "^7.16.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" @@ -169,45 +84,38 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", + "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "engines": { @@ -217,144 +125,160 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", + "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", - "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", + "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", - "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", + "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, "engines": { @@ -399,13 +323,13 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { "node": ">=0.8.0" @@ -414,7 +338,7 @@ "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { "node": ">=4" @@ -433,9 +357,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.16.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", + "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -445,45 +369,45 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.13.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", + "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.5", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { @@ -491,13 +415,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -586,164 +509,227 @@ "node": ">=8" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, + "node_modules/@jscad/csg": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.6.tgz", + "integrity": "sha512-GoUXhTwO0L+Cxba8VfFFLGm+ECd0xZKoIAPpeUYsDiCVsIZ6XK+3GLgBgn5waeumQNh+H6WsHjMMRKXBrDBreA==", + "deprecated": "See @jscad/modeling" + }, + "node_modules/@jscad/dxf-serializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/dxf-serializer/-/dxf-serializer-0.0.4.tgz", + "integrity": "sha1-P7O3a2HmqYfiUIJ8SWNPAHNvasg=" + }, + "node_modules/@jscad/gcode-deserializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/gcode-deserializer/-/gcode-deserializer-0.0.4.tgz", + "integrity": "sha1-pdk+zvhGvzCllvUCHXs26mKhOic=" + }, + "node_modules/@jscad/io": { + "version": "0.3.7", + "resolved": "git+ssh://git@github.com/ergogen/oldjscadio.git#692cf142062208b0097b2d4852c30d6cc51eea8d", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jscad/dxf-serializer": "^0.0.4", + "@jscad/gcode-deserializer": "^0.0.4", + "@jscad/io-utils": "^0.1.2", + "@jscad/json-deserializer": "^0.0.4", + "@jscad/json-serializer": "^0.0.5", + "@jscad/obj-deserializer": "^0.0.4", + "@jscad/stl-deserializer": "^0.1.2", + "@jscad/stl-serializer": "^0.0.6", + "@jscad/svg-deserializer": "^0.2.3", + "@jscad/svg-serializer": "^0.0.4" + } + }, + "node_modules/@jscad/io-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", + "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==" + }, + "node_modules/@jscad/json-deserializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/json-deserializer/-/json-deserializer-0.0.4.tgz", + "integrity": "sha1-ffpQCUUoh5LgTlcaDCTxXFXuurA=", + "dependencies": { + "@jscad/csg": "0.3.6" + } + }, + "node_modules/@jscad/json-serializer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@jscad/json-serializer/-/json-serializer-0.0.5.tgz", + "integrity": "sha1-DEAQz7ZyntspQnJycvlB0TAZR7g=", + "dependencies": { + "@jscad/csg": "0.3.6", + "@jscad/io-utils": "^0.1.2" + } + }, + "node_modules/@jscad/obj-deserializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/obj-deserializer/-/obj-deserializer-0.0.4.tgz", + "integrity": "sha1-3LPPXMRyeKfPejW3azLq0NBE38M=" + }, + "node_modules/@jscad/openjscad": { + "version": "1.6.1", + "resolved": "git+ssh://git@github.com/ergogen/oldjscad.git#040637f3d8d4da0ad0a9ffdfe1a33a791c8008f4", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@jscad/csg": "0.3.6", + "@jscad/io": "github:ergogen/oldjscadio", + "@jscad/openscad-openjscad-translator": "0.0.10", + "@jscad/scad-api": "^0.5.1", + "astring": "^1.0.2", + "brace": "0.10.0", + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "most-gestures": "^0.3.0", + "webworkify": "^1.4.0" }, - "engines": { - "node": ">=6.0.0" + "bin": { + "openjscad": "src/cli/cli.js" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, + "node_modules/@jscad/openscad-openjscad-translator": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@jscad/openscad-openjscad-translator/-/openscad-openjscad-translator-0.0.10.tgz", + "integrity": "sha1-b1o9wlL9ILr1I6sRwfwqPdqlfns=", + "deprecated": "See @jscad/scad-deserializer", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "lodash": "^4.17.4", + "sylvester": "github:kaosat-dev/node-sylvester" } }, - "node_modules/@rollup/plugin-commonjs": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz", - "integrity": "sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==", - "dev": true, + "node_modules/@jscad/scad-api": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@jscad/scad-api/-/scad-api-0.5.1.tgz", + "integrity": "sha512-1BlfqcAf0xIicbaKU1bCOxHh0+aHJ7fBRY6r+7/e+0uMrfoqHoULGqkAZCwnftt0cPj5uAP8JSlyOinHKaFIJw==", + "deprecated": "See @jscad/modeling", "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0" + "@jscad/csg": "0.3.7" + } + }, + "node_modules/@jscad/scad-api/node_modules/@jscad/csg": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.7.tgz", + "integrity": "sha512-CuqKgXEZDH1FzbwQTdMWQ0FiEGi+LrP32tP6nW6rdWEEBjL6w19F3OrShD7SP8mK9IcqiuhgN9JcbWaiBswWlQ==", + "deprecated": "See @jscad/modeling" + }, + "node_modules/@jscad/stl-deserializer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@jscad/stl-deserializer/-/stl-deserializer-0.1.2.tgz", + "integrity": "sha1-P05QMMjBgf6Xwniz5pdOojemM4M=", + "dependencies": { + "@jscad/csg": "0.3.6", + "@jscad/io-utils": "^0.1.2" + } + }, + "node_modules/@jscad/stl-serializer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.0.6.tgz", + "integrity": "sha1-OIDuOw2YzeYhpVg92GDcN6kAZtQ=", + "dependencies": { + "@jscad/io-utils": "^0.1.2" + } + }, + "node_modules/@jscad/svg-deserializer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@jscad/svg-deserializer/-/svg-deserializer-0.2.3.tgz", + "integrity": "sha1-HbFVKSax7J7yXLjYE0ryZfYOTSI=", + "dependencies": { + "@jscad/csg": "0.3.6", + "sax": "1.2.4" + } + }, + "node_modules/@jscad/svg-serializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/svg-serializer/-/svg-serializer-0.0.4.tgz", + "integrity": "sha1-uqYjfTPtbg96AS8rtgYTopXiUdE=", + "dependencies": { + "@jscad/csg": "0.3.6" + } + }, + "node_modules/@most/multicast": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@most/multicast/-/multicast-1.3.0.tgz", + "integrity": "sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==", + "dependencies": { + "@most/prelude": "^1.4.0" }, "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" + "most": "^1.0.1" + } + }, + "node_modules/@most/prelude": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@most/prelude/-/prelude-1.8.0.tgz", + "integrity": "sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, "node_modules/@rollup/plugin-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", - "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" + "@rollup/pluginutils": "^3.0.8" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "rollup": "^1.20.0 || ^2.0.0" } }, "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" }, "engines": { - "node": ">=14.0.0" + "node": ">= 8.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz", - "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, "node_modules/@types/bezier-js": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", - "integrity": "sha512-kXsAlt8e8N6zt9R6LcMYWB1HkBw3q2g+M9BdI/UE+s4agIONuIscQaRCoInH22+Jas3rw8yLUehL2InaZjyNSA==" + "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "node_modules/@types/node": { @@ -764,6 +750,12 @@ "@types/node": "*" } }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -809,9 +801,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -836,7 +828,7 @@ "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "node_modules/argparse": { @@ -856,6 +848,14 @@ "node": "*" } }, + "node_modules/astring": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.1.tgz", + "integrity": "sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ==", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -876,6 +876,14 @@ "node": ">=8" } }, + "node_modules/brace": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/brace/-/brace-0.10.0.tgz", + "integrity": "sha1-7e9OubCSi6HuX3F//BV3SabdXXY=", + "dependencies": { + "w3c-blob": "0.0.1" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -905,31 +913,35 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true, + "engines": { + "node": ">=0.4.0" } }, "node_modules/caching-transform": { @@ -957,32 +969,25 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001447", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001447.tgz", - "integrity": "sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw==", + "version": "1.0.30001286", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", + "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^4.1.2", + "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", - "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" }, @@ -1033,23 +1038,17 @@ "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true, "engines": { "node": "*" } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1076,22 +1075,19 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", + "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" } }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "engines": { "node": ">=0.8" } @@ -1115,13 +1111,13 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "node_modules/complex.js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.15.tgz", + "integrity": "sha512-gDBvQU8IG139ZBQTSo2qvDFP+lANMGluM779csXOr6ny1NUtA3wkUnCFjlDNH/moAVfXtvClYt6G0zarFbtz5w==", "engines": { "node": "*" }, @@ -1133,19 +1129,17 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -1162,9 +1156,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1187,42 +1181,50 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.12" } }, "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "dependencies": { "strip-bom": "^4.0.0" }, "engines": { "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4" } }, "node_modules/diff": { @@ -1235,19 +1237,19 @@ } }, "node_modules/dir-compare": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.0.0.tgz", - "integrity": "sha512-wC7thVKL3V656tO61rbEDE4LTeeYrUC2pAUL00AaXYghBhjjVNRyBlpH6POzb44ZuK23OSrqF6TbSC/QYeqfAg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", "dev": true, "dependencies": { - "minimatch": "^3.0.4", - "p-limit": "^3.1.0 " + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" } }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.19", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.19.tgz", + "integrity": "sha512-TeAjwsC/vhvxEtX/xN1JQUMkl+UrwKXlB4rwLyuLYVuBuRtqJJrU4Jy5pCVihMQg4m1ceZ3MEJ0yYuxHj8vC+w==", "dev": true }, "node_modules/emoji-regex": { @@ -1287,9 +1289,9 @@ } }, "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1298,6 +1300,14 @@ "node": ">=4" } }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -1372,9 +1382,9 @@ } }, "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", + "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==", "engines": { "node": "*" }, @@ -1404,22 +1414,22 @@ ] }, "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=12" } }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "node_modules/fsevents": { @@ -1436,6 +1446,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1454,9 +1470,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true, "engines": { "node": "*" @@ -1472,19 +1488,20 @@ } }, "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1502,27 +1519,6 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -1532,15 +1528,50 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, "node_modules/graham_scan": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", - "integrity": "sha512-jL+zq9xTYXxsDIf+qy9aaudRXx/X4sqrOlbFkg1ElqCznhYAQ/wXv8cifgzRvzFopStDeIvny5sIu6jgSjnRww==" + "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/has-flag": { "version": "4.0.0", @@ -1582,15 +1613,10 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, "engines": { "node": ">=0.8.19" @@ -1608,7 +1634,7 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "dependencies": { "once": "^1.3.0", @@ -1618,7 +1644,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -1632,10 +1659,22 @@ "node": ">=8" } }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, "engines": { "node": ">=0.10.0" @@ -1703,7 +1742,7 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "node_modules/is-unicode-supported": { @@ -1727,15 +1766,10 @@ "node": ">=0.10.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "node_modules/istanbul-lib-coverage": { @@ -1774,18 +1808,28 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", "dev": true, "dependencies": { "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", - "uuid": "^8.3.2" + "uuid": "^3.3.3" }, "engines": { "node": ">=8" @@ -1831,10 +1875,19 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", + "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -1847,7 +1900,7 @@ "node_modules/javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -1867,6 +1920,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -1880,9 +1945,12 @@ } }, "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dependencies": { + "minimist": "^1.2.5" + }, "bin": { "json5": "lib/cli.js" }, @@ -1901,23 +1969,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, "node_modules/kdbush": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", @@ -1932,14 +1983,6 @@ "json5": "^2.1.0" } }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -1955,16 +1998,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, "node_modules/log-symbols": { @@ -1983,34 +2025,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "yallist": "^3.0.2" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" + "sourcemap-codec": "^1.4.4" } }, "node_modules/make-dir": { @@ -2028,6 +2060,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/makerjs": { "version": "0.17.0", "resolved": "git+ssh://git@github.com/ergogen/maker.js.git#a0ca32948845efe8ad5c9ca454f1285926853138", @@ -2045,31 +2086,31 @@ } }, "node_modules/mathjs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.5.0.tgz", - "integrity": "sha512-vJ/+SqWtxjW6/aeDRt8xL3TlOVKqwN15BIyTGVqGbIWuiqgY4SxZ0yLuna82YH9CB757iFP7uJ4m3KvVBX7Qcg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.0.0.tgz", + "integrity": "sha512-PZcQ73mVvVG2GZXvE47q+j7P3ALVxWUM51wTmlVX3F/3IJMLNziNIqStwyIDAO64ZGB8u3iFlQwxT7DIijtNlw==", "dependencies": { - "@babel/runtime": "^7.20.6", - "complex.js": "^2.1.1", - "decimal.js": "^10.4.3", + "@babel/runtime": "^7.16.0", + "complex.js": "^2.0.15", + "decimal.js": "^10.3.1", "escape-latex": "^1.2.0", - "fraction.js": "^4.2.0", + "fraction.js": "^4.1.1", "javascript-natural-sort": "^0.7.1", "seedrandom": "^3.0.5", "tiny-emitter": "^2.1.0", - "typed-function": "^4.1.0" + "typed-function": "^2.0.0" }, "bin": { "mathjs": "bin/cli.js" }, "engines": { - "node": ">= 14" + "node": ">= 12" } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -2078,40 +2119,48 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", + "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", "dev": true, "dependencies": { + "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", + "chokidar": "3.5.2", + "debug": "4.3.2", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "7.1.7", + "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "5.0.1", + "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.3.3", + "nanoid": "3.1.25", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "workerpool": "6.2.1", + "which": "2.0.2", + "workerpool": "6.1.5", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "mocha": "bin/mocha" }, "engines": { - "node": ">= 14.0.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", @@ -2124,21 +2173,10 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -2155,18 +2193,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2179,27 +2205,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -2218,6 +2223,25 @@ "node": ">=10" } }, + "node_modules/most": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/most/-/most-1.9.0.tgz", + "integrity": "sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==", + "dependencies": { + "@most/multicast": "^1.2.5", + "@most/prelude": "^1.4.0", + "globalthis": "^1.0.1", + "symbol-observable": "^2.0.3" + } + }, + "node_modules/most-gestures": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/most-gestures/-/most-gestures-0.3.0.tgz", + "integrity": "sha1-Y07mZK2vU9dA0BSKa0tNF0QDpHg=", + "dependencies": { + "most": "^1.7.2" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2225,9 +2249,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", + "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -2236,19 +2260,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nise": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", - "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, "node_modules/node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", @@ -2262,9 +2273,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node_modules/normalize-path": { @@ -2341,26 +2352,6 @@ "node": ">=8" } }, - "node_modules/nyc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2455,10 +2446,18 @@ "node": ">=6" } }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "dependencies": { "wrappy": "1" @@ -2530,11 +2529,6 @@ "node": ">=8" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2547,7 +2541,7 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "engines": { "node": ">=0.10.0" @@ -2562,19 +2556,10 @@ "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "node_modules/pathval": { @@ -2593,9 +2578,9 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, "engines": { "node": ">=8.6" @@ -2668,11 +2653,6 @@ "node": ">=8" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, "node_modules/process-on-spawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", @@ -2694,20 +2674,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2721,14 +2687,14 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "dependencies": { "es6-error": "^4.0.1" @@ -2740,7 +2706,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "engines": { "node": ">=0.10.0" } @@ -2751,6 +2717,19 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -2775,37 +2754,16 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/rollup": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.1.tgz", - "integrity": "sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==", + "version": "2.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.61.1.tgz", + "integrity": "sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==", "dev": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" + "node": ">=10.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" @@ -2814,7 +2772,13 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "node_modules/seedrandom": { "version": "3.0.5", @@ -2822,12 +2786,17 @@ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/serialize-javascript": { @@ -2842,14 +2811,9 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2872,50 +2836,26 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, - "node_modules/sinon": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.0.1.tgz", - "integrity": "sha512-PZXKc08f/wcA/BMRGBze2Wmw50CWPiAH3E21EOi4B49vJ616vW4DQh4fQrqsYox2aNR/N3kCqLuB0PwwOucQrg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "10.0.2", - "@sinonjs/samsam": "^7.0.1", - "diff": "^5.0.0", - "nise": "^5.1.2", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "node_modules/spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", @@ -2936,15 +2876,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "node_modules/string-width": { "version": "4.2.3", @@ -3006,6 +2938,23 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/sylvester": { + "name": "@kaosat-dev/sylvester", + "version": "0.0.21", + "resolved": "git+ssh://git@github.com/kaosat-dev/node-sylvester.git#ce74d23a2092ae02a56b840ef70f5d61c54df409", + "license": "MIT", + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/symbol-observable": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -3020,26 +2969,6 @@ "node": ">=8" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -3048,7 +2977,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, "engines": { "node": ">=4" @@ -3085,11 +3014,11 @@ } }, "node_modules/typed-function": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.1.0.tgz", - "integrity": "sha512-DGwUl6cioBW5gw2L+6SMupGwH/kZOqivy17E4nsh1JI9fKF87orMmlQx3KISQPmg3sfnOUGlwVkroosvgddrlg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", + "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==", "engines": { - "node": ">= 14" + "node": ">= 8" } }, "node_modules/typedarray-to-buffer": { @@ -3109,46 +3038,26 @@ "node": ">= 10.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, "bin": { - "uuid": "dist/bin/uuid" + "uuid": "bin/uuid" } }, + "node_modules/w3c-blob": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/w3c-blob/-/w3c-blob-0.0.1.tgz", + "integrity": "sha1-sM01KhpQ9RVWNCD/1YYflQ8dhbg=" + }, + "node_modules/webworkify": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", + "integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3167,13 +3076,13 @@ "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", + "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", "dev": true }, "node_modules/wrap-ansi": { @@ -3195,7 +3104,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "node_modules/write-file-atomic": { @@ -3219,23 +3128,22 @@ } }, "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz", + "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^21.0.0" }, "engines": { "node": ">=12" @@ -3266,9 +3174,9 @@ } }, "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", "dev": true, "engines": { "node": ">=10" @@ -3290,9 +3198,9 @@ } }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", "engines": { "node": ">=12" } @@ -3309,5 +3217,2437 @@ "url": "https://github.com/sponsors/sindresorhus" } } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true + }, + "@babel/core": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", + "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helpers": "^7.16.5", + "@babel/parser": "^7.16.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", + "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", + "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", + "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", + "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.16.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", + "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "dev": true + }, + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", + "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.5", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "@danmarshall/jscad-typings": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@danmarshall/jscad-typings/-/jscad-typings-1.0.0.tgz", + "integrity": "sha512-MGGIGDItK2UQSsz7yTrXErQXDAFXR3UPxyQ7WZ5RHOwnv60CBXjmkJlXYMYPkSvo+7fUuQL2/ODcvECtc/fi9g==" + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jscad/csg": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.6.tgz", + "integrity": "sha512-GoUXhTwO0L+Cxba8VfFFLGm+ECd0xZKoIAPpeUYsDiCVsIZ6XK+3GLgBgn5waeumQNh+H6WsHjMMRKXBrDBreA==" + }, + "@jscad/dxf-serializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/dxf-serializer/-/dxf-serializer-0.0.4.tgz", + "integrity": "sha1-P7O3a2HmqYfiUIJ8SWNPAHNvasg=" + }, + "@jscad/gcode-deserializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/gcode-deserializer/-/gcode-deserializer-0.0.4.tgz", + "integrity": "sha1-pdk+zvhGvzCllvUCHXs26mKhOic=" + }, + "@jscad/io": { + "version": "git+ssh://git@github.com/ergogen/oldjscadio.git#692cf142062208b0097b2d4852c30d6cc51eea8d", + "from": "@jscad/io@github:ergogen/oldjscadio", + "requires": { + "@jscad/dxf-serializer": "^0.0.4", + "@jscad/gcode-deserializer": "^0.0.4", + "@jscad/io-utils": "^0.1.2", + "@jscad/json-deserializer": "^0.0.4", + "@jscad/json-serializer": "^0.0.5", + "@jscad/obj-deserializer": "^0.0.4", + "@jscad/stl-deserializer": "^0.1.2", + "@jscad/stl-serializer": "^0.0.6", + "@jscad/svg-deserializer": "^0.2.3", + "@jscad/svg-serializer": "^0.0.4" + } + }, + "@jscad/io-utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@jscad/io-utils/-/io-utils-0.1.3.tgz", + "integrity": "sha512-aCVUZovewI4njtEJ1fvjhasqd8EHIzQaPb88MtFWf/ff1NdGOu/vRH3yGG8vu0NZektGEDCKp028g2nTBL7aFg==" + }, + "@jscad/json-deserializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/json-deserializer/-/json-deserializer-0.0.4.tgz", + "integrity": "sha1-ffpQCUUoh5LgTlcaDCTxXFXuurA=", + "requires": { + "@jscad/csg": "0.3.6" + } + }, + "@jscad/json-serializer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@jscad/json-serializer/-/json-serializer-0.0.5.tgz", + "integrity": "sha1-DEAQz7ZyntspQnJycvlB0TAZR7g=", + "requires": { + "@jscad/csg": "0.3.6", + "@jscad/io-utils": "^0.1.2" + } + }, + "@jscad/obj-deserializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/obj-deserializer/-/obj-deserializer-0.0.4.tgz", + "integrity": "sha1-3LPPXMRyeKfPejW3azLq0NBE38M=" + }, + "@jscad/openjscad": { + "version": "git+ssh://git@github.com/ergogen/oldjscad.git#040637f3d8d4da0ad0a9ffdfe1a33a791c8008f4", + "from": "@jscad/openjscad@github:ergogen/oldjscad", + "requires": { + "@jscad/csg": "0.3.6", + "@jscad/io": "github:ergogen/oldjscadio", + "@jscad/openscad-openjscad-translator": "0.0.10", + "@jscad/scad-api": "^0.5.1", + "astring": "^1.0.2", + "brace": "0.10.0", + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "most-gestures": "^0.3.0", + "webworkify": "^1.4.0" + } + }, + "@jscad/openscad-openjscad-translator": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@jscad/openscad-openjscad-translator/-/openscad-openjscad-translator-0.0.10.tgz", + "integrity": "sha1-b1o9wlL9ILr1I6sRwfwqPdqlfns=", + "requires": { + "lodash": "^4.17.4", + "sylvester": "github:kaosat-dev/node-sylvester" + } + }, + "@jscad/scad-api": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@jscad/scad-api/-/scad-api-0.5.1.tgz", + "integrity": "sha512-1BlfqcAf0xIicbaKU1bCOxHh0+aHJ7fBRY6r+7/e+0uMrfoqHoULGqkAZCwnftt0cPj5uAP8JSlyOinHKaFIJw==", + "requires": { + "@jscad/csg": "0.3.7" + }, + "dependencies": { + "@jscad/csg": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@jscad/csg/-/csg-0.3.7.tgz", + "integrity": "sha512-CuqKgXEZDH1FzbwQTdMWQ0FiEGi+LrP32tP6nW6rdWEEBjL6w19F3OrShD7SP8mK9IcqiuhgN9JcbWaiBswWlQ==" + } + } + }, + "@jscad/stl-deserializer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@jscad/stl-deserializer/-/stl-deserializer-0.1.2.tgz", + "integrity": "sha1-P05QMMjBgf6Xwniz5pdOojemM4M=", + "requires": { + "@jscad/csg": "0.3.6", + "@jscad/io-utils": "^0.1.2" + } + }, + "@jscad/stl-serializer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@jscad/stl-serializer/-/stl-serializer-0.0.6.tgz", + "integrity": "sha1-OIDuOw2YzeYhpVg92GDcN6kAZtQ=", + "requires": { + "@jscad/io-utils": "^0.1.2" + } + }, + "@jscad/svg-deserializer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@jscad/svg-deserializer/-/svg-deserializer-0.2.3.tgz", + "integrity": "sha1-HbFVKSax7J7yXLjYE0ryZfYOTSI=", + "requires": { + "@jscad/csg": "0.3.6", + "sax": "1.2.4" + } + }, + "@jscad/svg-serializer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@jscad/svg-serializer/-/svg-serializer-0.0.4.tgz", + "integrity": "sha1-uqYjfTPtbg96AS8rtgYTopXiUdE=", + "requires": { + "@jscad/csg": "0.3.6" + } + }, + "@most/multicast": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@most/multicast/-/multicast-1.3.0.tgz", + "integrity": "sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==", + "requires": { + "@most/prelude": "^1.4.0" + } + }, + "@most/prelude": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@most/prelude/-/prelude-1.8.0.tgz", + "integrity": "sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==" + }, + "@rollup/plugin-commonjs": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@types/bezier-js": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/bezier-js/-/bezier-js-0.0.6.tgz", + "integrity": "sha1-DZdtaBY8SVUzLveYohoLPWOB0Ss=" + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "7.10.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz", + "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA==" + }, + "@types/opentype.js": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@types/opentype.js/-/opentype.js-0.7.2.tgz", + "integrity": "sha512-Riz6WyBUBEFs7YqSsJya3SbDHJZ6BmMkY7bzNoue6rtwj+RNilLc+mgOX/eJ0Y0asq16FSU6DatBeOg8ZMy2UQ==" + }, + "@types/pdfkit": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.7.36.tgz", + "integrity": "sha512-9eRA6MuW+n78yU3HhoIrDxjyAX2++B5MpLDYqHOnaRTquCw+5sYXT+QN8E1eSaxvNUwlRfU3tOm4UzTeGWmBqg==", + "requires": { + "@types/node": "*" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astring": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.1.tgz", + "integrity": "sha512-Aj3mbwVzj7Vve4I/v2JYOPFkCGM2YS7OqQTNSxmUR+LECRpokuPgAYghePgr6SALDo5bD5DlfbSaYjOzGJZOLQ==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "bezier-js": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.6.1.tgz", + "integrity": "sha512-jelZM33eNzcZ9snJ/5HqJLw3IzXvA8RFcBjkdOB8SDYyOvW8Y2tTosojAiBTnD1MhbHoWUYNbxUXxBl61TxbRg==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/brace/-/brace-0.10.0.tgz", + "integrity": "sha1-7e9OubCSi6HuX3F//BV3SabdXXY=", + "requires": { + "w3c-blob": "0.0.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001286", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz", + "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==", + "dev": true + }, + "chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "requires": { + "check-error": "^1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "complex.js": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.0.15.tgz", + "integrity": "sha512-gDBvQU8IG139ZBQTSo2qvDFP+lANMGluM779csXOr6ny1NUtA3wkUnCFjlDNH/moAVfXtvClYt6G0zarFbtz5w==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "requires": { + "strip-bom": "^4.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "electron-to-chromium": { + "version": "1.4.19", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.19.tgz", + "integrity": "sha512-TeAjwsC/vhvxEtX/xN1JQUMkl+UrwKXlB4rwLyuLYVuBuRtqJJrU4Jy5pCVihMQg4m1ceZ3MEJ0yYuxHj8vC+w==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-latex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "fraction.js": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", + "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==" + }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "requires": { + "define-properties": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "graham_scan": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/graham_scan/-/graham_scan-1.0.4.tgz", + "integrity": "sha1-OZZR3R+DU+GID1nqjl+Uud9Mkoo=" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", + "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kdbush": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-2.0.1.tgz", + "integrity": "sha512-9KqSdmWCkBIisFIGclT0FRagKhI7IVbMyUjsxCFG0Ly1Dg6whlxJ7b9lrq8ifk3X/fGeJzok1R75LQfZTfA5zQ==" + }, + "kle-serial": { + "version": "git+ssh://git@github.com/ergogen/kle-serial.git#61f29f317d87bbfed0b0b7e646e1b91d4384ac02", + "from": "kle-serial@github:ergogen/kle-serial#ergogen", + "requires": { + "json5": "^2.1.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "makerjs": { + "version": "git+ssh://git@github.com/ergogen/maker.js.git#a0ca32948845efe8ad5c9ca454f1285926853138", + "from": "makerjs@github:ergogen/maker.js#ergogen", + "requires": { + "@danmarshall/jscad-typings": "^1.0.0", + "@types/bezier-js": "^0.0.6", + "@types/node": "^7.0.5", + "@types/opentype.js": "^0.7.0", + "@types/pdfkit": "^0.7.34", + "bezier-js": "^2.1.0", + "clone": "^1.0.2", + "graham_scan": "^1.0.4", + "kdbush": "^2.0.1" + } + }, + "mathjs": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.0.0.tgz", + "integrity": "sha512-PZcQ73mVvVG2GZXvE47q+j7P3ALVxWUM51wTmlVX3F/3IJMLNziNIqStwyIDAO64ZGB8u3iFlQwxT7DIijtNlw==", + "requires": { + "@babel/runtime": "^7.16.0", + "complex.js": "^2.0.15", + "decimal.js": "^10.3.1", + "escape-latex": "^1.2.0", + "fraction.js": "^4.1.1", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^2.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mocha": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", + "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.2", + "debug": "4.3.2", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.7", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.25", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.1.5", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "most": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/most/-/most-1.9.0.tgz", + "integrity": "sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==", + "requires": { + "@most/multicast": "^1.2.5", + "@most/prelude": "^1.4.0", + "globalthis": "^1.0.1", + "symbol-observable": "^2.0.3" + } + }, + "most-gestures": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/most-gestures/-/most-gestures-0.3.0.tgz", + "integrity": "sha1-Y07mZK2vU9dA0BSKa0tNF0QDpHg=", + "requires": { + "most": "^1.7.2" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "nanoid": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", + "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "dev": true + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.61.1.tgz", + "integrity": "sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "sylvester": { + "version": "git+ssh://git@github.com/kaosat-dev/node-sylvester.git#ce74d23a2092ae02a56b840ef70f5d61c54df409", + "from": "sylvester@github:kaosat-dev/node-sylvester" + }, + "symbol-observable": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==" + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typed-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-2.0.0.tgz", + "integrity": "sha512-Hhy1Iwo/e4AtLZNK10ewVVcP2UEs408DS35ubP825w/YgSBK1KVLwALvvIG4yX75QJrxjCpcWkzkVRB0BwwYlA==" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "w3c-blob": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/w3c-blob/-/w3c-blob-0.0.1.tgz", + "integrity": "sha1-sM01KhpQ9RVWNCD/1YYflQ8dhbg=" + }, + "webworkify": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", + "integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "workerpool": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", + "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz", + "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "dependencies": { + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==" + } + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + } + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } } } diff --git a/package.json b/package.json index 8cd2a34..2cfcc73 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ergogen", - "version": "4.0.5", + "version": "3.1.1", "description": "Ergonomic keyboard layout generator", "author": "Bán Dénes ", "license": "MIT", @@ -15,25 +15,25 @@ "coverage": "nyc --reporter=html --reporter=text npm test" }, "dependencies": { - "fs-extra": "^11.1.0", - "js-yaml": "^3.14.1", - "jszip": "^3.10.1", + "@jscad/openjscad": "github:ergogen/oldjscad", + "fs-extra": "^10.0.0", + "js-yaml": "^3.14.0", "kle-serial": "github:ergogen/kle-serial#ergogen", "makerjs": "github:ergogen/maker.js#ergogen", - "mathjs": "^11.5.0", - "yargs": "^17.6.2" + "mathjs": "^10.0.0", + "semver": "^7.3.5", + "yargs": "^17.3.0" }, "devDependencies": { - "@rollup/plugin-commonjs": "^24.0.1", - "@rollup/plugin-json": "^6.0.0", - "chai": "^4.3.7", + "@rollup/plugin-commonjs": "^21.0.1", + "@rollup/plugin-json": "^4.1.0", + "chai": "^4.3.4", "chai-as-promised": "^7.1.1", - "dir-compare": "^4.0.0", - "glob": "^8.1.0", - "mocha": "^10.2.0", + "dir-compare": "^3.3.0", + "glob": "^7.2.0", + "mocha": "^9.1.3", "nyc": "^15.1.0", - "rollup": "^3.10.1", - "sinon": "^15.0.1" + "rollup": "^2.61.1" }, "nyc": { "all": true, diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..0768cfe --- /dev/null +++ b/readme.md @@ -0,0 +1,30 @@ +# Ergogen + +Ergogen is a keyboard generator that aims to provide a common configuration format to describe **ergonomic** 2D layouts, and generate automatic plates, cases, and (un-routed) PCBs for them. +The project grew out of (and is an integral part of) the [Absolem keyboard](https://zealot.hu/absolem), and shares its [Discord server](https://discord.gg/nbKcAZB) as well. + + + + + + +## Usage + +Supposing you have a config ready, you can use ergogen either on the command line, or through the [web UI](https://ergogen.xyz). + +Command line usage requires `node v14.4.0+` with `npm v6.14.5+` to be installed, the repo to be checked out, `npm install` to be issued, and then simply calling the CLI interface through `node src/cli.js`. +The `--help` switch lists the available command line options. + +The [web UI](https://ergogen.xyz) is a more accessible version of the same codebase, where everything happens in your browser. +It's been patched together on a fresh Chrome-derivative, and I didn't take any care to make it compatible with older stuff, so please use something modern! + +As for how to prepare a valid config, please read the [reference](https://docs.ergogen.xyz). + + + + + +## Contributions + +Feature ideas, documentation improvements, examples, tests, or pull requests welcome! +Get in touch [on Discord](https://discord.gg/nbKcAZB), and we can definitely find something you can help with, if you'd like to. diff --git a/roadmap.md b/roadmap.md index aa1c837..26b074e 100644 --- a/roadmap.md +++ b/roadmap.md @@ -6,62 +6,54 @@ ### Major -- Merge, generalize, uniform-ize and externalize footprints! - - onnx-like incremental opset versioning +- Move column-level attributes like spread to key-level to unify the structure +- Generalize what shapes to be repeated when outlining `keys` +- Place rectangles by their centers +- Full per-point anchors +- Collapse any raw shift or rotation under the anchor infrastructure +- Merge, generalize, and uniform-ize footprints - Template for creating them, built-in variables they can use, documentation, external links, etc. - - Add access to whole set of points + filtering logic, so they can implement their own connection logic as well maybe (see daisy chaining) - - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour (see ixy/xy/sxy note), etc. + - Also considering how (or, on which layer) they define their silks, universal mirroring behaviour, etc. ### Minor -- Support "direct" anchors, as in, recognize num arrays and parse them as x/y/r -- Add `origin` to zone-wide and global rotation in points -- Handle unnecessary (but seemingly consistent, so easy to confuse) `key` subfield of row-level overrides -- Allow footprints to access raw array/object fields from points with templating -- Include raw kicad footprint integrations - - pull torik's script to be able to convert raw kicad footprints into positionable ergogen ones - - have a `dummy` footprint which can just be updated from schematic -- Allow footprints to publish outlines - - Make these usable in the `outlines` section through a new `what` -- Add footprint sanitization to check compatibility for externally loaded ones - - Or to double check internal ones for compliance -- 3D orient for cases -- Even more extreme anchor stuff - - Checkpoints, intersects, distances, weighted combinations? - - Extend the "turning towards" capabilities of `orient` and `rotate` to `shift` as well (to move as much as it would take the current anchor location to get there) +- Allow shift/rotate for outlines (via `anchor_def`, probably) +- More generic anchors or distances? + - Intersect support for anchor affects clauses, which (combined with the math formulas and possible trigonometric functions) should allow for every use case we've discussed so far +- Allow both object (as well as arrays) in multiple anchor refs - SVG input (for individual outlines, or even combinations parsed by line color, etc.) - And once that's done, possibly even STL or other input for cases or pcb renders - Support text silk output to PCBs (in configurable fonts, through SVG?) - Maybe a partial markdown preprocess to support bold and italic? - Look into gr_curve to possibly add beziers to the kicad conversion - Support curves (arcs as well as Béziers) in polygons - - Also, three point arcs, tangents, earier "circle tools" in general +- Support specifying keys/labels for the pcb section (not just blindly assuming all) - Add snappable line footprint -- Figure out a manual, but still reasonably comfortable routing method directly from the config +- Layer-aware export from Maker.JS, so we can debug in the webui more easily +- Add filleting syntax with `@`? - Eeschema support for pcbs +- Outline expand and shrink access from makerjs +- Resurrect and/or add wider tagging support + - Also add subtractive tagging filters (exclude) + - Also expand this to footprints (so, which footprints get applied to which pcb) + - Or, at least, allow skipping per-key footprints - Generate ZMK shield from config - Export **to** KLE? -- Include 3D models paths in kicad output for visualization - - Also, provide 3D models for built-in footprints +- Per-footprint mirror support +- A flag for footprints to be able to "resist" the mirroring-related special treatment of negative X shift, rotation, etc. +- Include 3D models for kicad output for visualization - Look into kicad 5 vs. 6 output format - Update json schema and add syntax highlight to editors -- Support different netclasses -- Allow a potential filter for filleting (only on angles =90°, <45°, left turn vs. right turn when going clockwise, etc.) -- Add `operation: skip` to allow easily "commenting out" whole outline parts -- Better error message for negative rectangle (it may not only be because of corner/bevel) ### Patch -- YAML lib v4 update - breaking changes in how undefined is handled! -- Prevent double mirroring (see discord "mirror_mirror_") -- Check unexpected keys at top level, too - Better error handling for the fillet option? +- Implement `glue.extra` - Integration and end2end tests to get coverage to 100% -- Add custom fillet implementation that considers line-line connections only? -- Add nicer filleting error messages when makerjs dies for some reason -- Empty nets should be allowed (to mean unconnected) -- Debug point (orient+shift) differences in circles vs. polygons (see Discord) +- Fix the intersection of parallel lines when gluing +- Add custom fillet implementation that considers line-line connections only + ## WEBUI @@ -71,9 +63,6 @@ - Change over to Cache's live preview implementation - Add missing KLE functionality - Create browserified version of semver lib - - Or at least a shim with a console warning -- Visualizing multiple outlines at once, with different colors -- Add snapping/measurement capabilities for quicker iteration ### Minor @@ -81,13 +70,12 @@ - Attempt to auto-compile (if inactive for n secs, or whatever) - Support saving to gists - Add kicad_pcb visualization as well -- Get dropdown examples from a separate repo - Expand the config dropdown with opensource stuff: corne, lily, ergodox, atreus... ### Patch -- Streamline (and document) an update pipeline -- Add puppeteer tests +- Streamlining (and documenting) an update pipeline +- Puppeteer tests @@ -97,18 +85,18 @@ - With a progression of increasingly complex steps - And lots of illustrations! - Complete reference - - Some known deficiencies: + - some known deficiencies: - Units separated to their own block at the front - Key-level `width` and `height` are supported during visualization - This key-level example should probably be added from discord: https://discord.com/channels/714176584269168732/759825860617437204/773104093546676244 - Change outline fields to have their full anchor support documented - Mention the ability to opt out of gluing! - Key-level defaults are based around u's, not 19! + - change over to built, per-chapter docs, like how Cache has them - Contribution guidelines - - Include test commands (npm test, npm run coverage, --what switch, --dump switch) + - including test commands (npm test, npm run coverage, --what switch, --dump switch) - Changelog, Roadmap - A public catalog of real-life ergogen configs - - Probably could be the same as the separate examples repo for the dropdown diff --git a/rollup.config.mjs b/rollup.config.js similarity index 59% rename from rollup.config.mjs rename to rollup.config.js index 002aff5..4ba6988 100644 --- a/rollup.config.mjs +++ b/rollup.config.js @@ -1,21 +1,22 @@ -import pkg from './package.json' assert { type: 'json' } +import pkg from './package.json' import json from '@rollup/plugin-json' import commonjs from '@rollup/plugin-commonjs' export default { input: 'src/ergogen.js', - external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial', 'jszip'], + external: ['makerjs', 'js-yaml', 'mathjs', 'kle-serial', '@jscad/openjscad', 'semver'], output: { name: 'ergogen', file: 'dist/ergogen.js', format: 'umd', - banner: `/*!\n * Ergogen v${pkg.version}\n * https://ergogen.xyz\n */\n`, + banner: `/*!\n * Ergogen v${pkg.version}\n * https://zealot.hu/ergogen\n */\n`, globals: { 'makerjs': 'makerjs', 'js-yaml': 'jsyaml', 'mathjs': 'math', 'kle-serial': 'kle', - 'jszip': 'jszip' + '@jscad/openjscad': 'myjscad', + 'semver': 'semver' } }, plugins: [ diff --git a/showcase.png b/showcase.png deleted file mode 100644 index f3b928f..0000000 Binary files a/showcase.png and /dev/null differ diff --git a/src/anchor.js b/src/anchor.js index 3d892ee..5f08925 100644 --- a/src/anchor.js +++ b/src/anchor.js @@ -1,159 +1,73 @@ const u = require('./utils') const a = require('./assert') const Point = require('./point') -const m = require('makerjs') -const mirror_ref = exports.mirror = (ref, mirror=true) => { +const mirror_ref = exports.mirror = (ref, mirror) => { if (mirror) { if (ref.startsWith('mirror_')) { return ref.substring(7) + } else { + return 'mirror_' + ref } - return 'mirror_' + ref } return ref } -const aggregator_common = ['parts', 'method'] - -const aggregators = { - average: (config, name, parts) => { - a.unexpected(config, name, aggregator_common) - const len = parts.length - if (len == 0) { - return new Point() - } - let x = 0, y = 0, r = 0 - for (const part of parts) { - x += part.x - y += part.y - r += part.r - } - return new Point(x / len, y / len, r / len) - }, - intersect: (config, name, parts) => { - // a line is generated from a point by taking their - // (rotated) Y axis. The line is not extended to - // +/- Infinity as that doesn't work with makerjs. - // An arbitrary offset of 1 meter is considered - // sufficient for practical purposes, and the point - // coordinates are used as pivot point for the rotation. - const get_line_from_point = (point, offset=1000) => { - const origin = [point.x, point.y] - const p1 = [point.x, point.y - offset] - const p2 = [point.x, point.y + offset] - - let line = new m.paths.Line(p1, p2) - line = m.path.rotate(line, point.r, origin) - - return line - } - - a.unexpected(config, name, aggregator_common) - a.assert(parts.length==2, `Intersect expects exactly two parts, but it got ${parts.length}!`) - - const line1 = get_line_from_point(parts[0]) - const line2 = get_line_from_point(parts[1]) - const intersection = m.path.intersection(line1, line2) - - a.assert(intersection, `The points under "${name}.parts" do not intersect!`) - - const intersection_point_arr = intersection.intersectionPoints[0] - const intersection_point = new Point( - intersection_point_arr[0], intersection_point_arr[1], 0 - ) - - return intersection_point - }, -} - -const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror=false) => units => { - - // - // Anchor type handling - // - - if (a.type(raw)() == 'string') { - raw = {ref: raw} - } - - else if (a.type(raw)() == 'array') { - // recursive call with incremental start mods, according to `affect`s - let current = start.clone() - let index = 1 +const anchor = exports.parse = (raw, name, points={}, check_unexpected=true, default_point=new Point(), mirror=false) => units => { + if (a.type(raw)() == 'array') { + // recursive call with incremental default_point mods, according to `affect`s + let current = default_point.clone() for (const step of raw) { - current = anchor(step, `${name}[${index++}]`, points, current, mirror)(units) + current = anchor(step, name, points, check_unexpected, current, mirror)(units) } return current } - - a.unexpected(raw, name, ['ref', 'aggregate', 'orient', 'shift', 'rotate', 'affect', 'resist']) - - // - // Reference or aggregate handling - // - - let point = start.clone() - if (raw.ref !== undefined && raw.aggregate !== undefined) { - throw new Error(`Fields "ref" and "aggregate" cannot appear together in anchor "${name}"!`) - } - + if (check_unexpected) a.unexpected(raw, name, ['ref', 'orient', 'shift', 'rotate', 'affect']) + let point = default_point.clone() if (raw.ref !== undefined) { - // base case, resolve directly - if (a.type(raw.ref)() == 'string') { + if (a.type(raw.ref)() == 'array') { + // averaging multiple anchors + let x = 0, y = 0, r = 0 + const len = raw.ref.length + for (const ref of raw.ref) { + const parsed_ref = mirror_ref(ref, mirror) + a.assert(points[parsed_ref], `Unknown point reference "${parsed_ref}" in anchor "${name}"!`) + const resolved = points[parsed_ref] + x += resolved.x + y += resolved.y + r += resolved.r + } + point = new Point(x / len, y / len, r / len) + } else { const parsed_ref = mirror_ref(raw.ref, mirror) a.assert(points[parsed_ref], `Unknown point reference "${parsed_ref}" in anchor "${name}"!`) point = points[parsed_ref].clone() - // recursive case - } else { - point = anchor(raw.ref, `${name}.ref`, points, start, mirror)(units) } } - - if (raw.aggregate !== undefined) { - raw.aggregate = a.sane(raw.aggregate, `${name}.aggregate`, 'object')() - raw.aggregate.method = a.sane(raw.aggregate.method || 'average', `${name}.aggregate.method`, 'string')() - a.assert(aggregators[raw.aggregate.method], `Unknown aggregator method "${raw.aggregate.method}" in anchor "${name}"!`) - raw.aggregate.parts = a.sane(raw.aggregate.parts || [], `${name}.aggregate.parts`, 'array')() - - const parts = [] - let index = 1 - for (const part of raw.aggregate.parts) { - parts.push(anchor(part, `${name}.aggregate.parts[${index++}]`, points, start, mirror)(units)) - } - - point = aggregators[raw.aggregate.method](raw.aggregate, `${name}.aggregate`, parts) - } - - // - // Actual orient/shift/rotate/affect handling - // - - const resist = a.sane(raw.resist || false, `${name}.resist`, 'boolean')() - const rotator = (config, name, point) => { - // simple case: number gets added to point rotation - if (a.type(config)(units) == 'number') { - let angle = a.sane(config, name, 'number')(units) - point.rotate(angle, false, resist) - // recursive case: points turns "towards" target anchor - } else { - const target = anchor(config, name, points, start, mirror)(units) - point.r = point.angle(target) - } - } - if (raw.orient !== undefined) { - rotator(raw.orient, `${name}.orient`, point) + let angle = a.sane(raw.orient, `${name}.orient`, 'number')(units) + if (point.meta.mirrored) { + angle = -angle + } + point.r += angle } if (raw.shift !== undefined) { - const xyval = a.wh(raw.shift, `${name}.shift`)(units) - point.shift(xyval, true, resist) + let xyval = a.wh(raw.shift, `${name}.shift`)(units) + if (point.meta.mirrored) { + xyval[0] = -xyval[0] + } + point.shift(xyval, true) } if (raw.rotate !== undefined) { - rotator(raw.rotate, `${name}.rotate`, point) + let angle = a.sane(raw.rotate, `${name}.rotate`, 'number')(units) + if (point.meta.mirrored) { + angle = -angle + } + point.r += angle } if (raw.affect !== undefined) { const candidate = point.clone() - point = start.clone() + point = default_point.clone() point.meta = candidate.meta let affect = raw.affect if (a.type(affect)() == 'string') affect = affect.split('') @@ -164,6 +78,5 @@ const anchor = exports.parse = (raw, name, points={}, start=new Point(), mirror= point[aff] = candidate[aff] } } - return point } \ No newline at end of file diff --git a/src/assert.js b/src/assert.js index de74169..35ea290 100644 --- a/src/assert.js +++ b/src/assert.js @@ -44,7 +44,7 @@ const _in = exports.in = (raw, name, arr) => { const arr = exports.arr = (raw, name, length, _type, _default) => units => { assert(type(raw)(units) == 'array', `Field "${name}" should be an array!`) assert(length == 0 || raw.length == length, `Field "${name}" should be an array of length ${length}!`) - raw = raw.map(val => val === undefined ? _default : val) + raw = raw.map(val => val || _default) raw.map(val => assert(type(val)(units) == _type, `Field "${name}" should contain ${_type}s!`)) if (_type == 'number') { raw = raw.map(val => mathnum(val)(units)) @@ -62,19 +62,8 @@ const wh = exports.wh = (raw, name) => units => { return xy(raw, name)(units) } -exports.trbl = (raw, name, _default=0) => units => { +exports.trbl = (raw, name) => units => { if (!Array.isArray(raw)) raw = [raw, raw, raw, raw] if (raw.length == 2) raw = [raw[1], raw[0], raw[1], raw[0]] - return arr(raw, name, 4, 'number', _default)(units) -} - -exports.asym = (raw, name) => { - // allow different aliases - const source_aliases = ['source', 'origin', 'base', 'primary', 'left'] - const clone_aliases = ['clone', 'image', 'derived', 'secondary', 'right'] - _in(raw, name, ['both'].concat(source_aliases, clone_aliases)) - // return aliases to canonical names - if (source_aliases.includes(raw)) return 'source' - if (clone_aliases.includes(raw)) return 'clone' - return raw + return numarr(raw, name, 4, 'number', 0)(units) } diff --git a/src/cases.js b/src/cases.js index 7fabbb1..0604c48 100644 --- a/src/cases.js +++ b/src/cases.js @@ -57,33 +57,29 @@ exports.parse = (config, outlines, units) => { } const part_qname = `cases.${case_name}.${part_name}` const part_var = `${case_name}__part_${part_name}` - a.unexpected(part, part_qname, ['what', 'name', 'extrude', 'shift', 'rotate', 'operation']) - const what = a.in(part.what || 'outline', `${part_qname}.what`, ['outline', 'case']) + a.unexpected(part, part_qname, ['type', 'name', 'extrude', 'shift', 'rotate', 'operation']) + const type = a.in(part.type || 'outline', `${part_qname}.type`, ['outline', 'case']) const name = a.sane(part.name, `${part_qname}.name`, 'string')() const shift = a.numarr(part.shift || [0, 0, 0], `${part_qname}.shift`, 3)(units) const rotate = a.numarr(part.rotate || [0, 0, 0], `${part_qname}.rotate`, 3)(units) const operation = a.in(part.operation || 'add', `${part_qname}.operation`, ['add', 'subtract', 'intersect']) let base - if (what == 'outline') { + if (type == 'outline') { const extrude = a.sane(part.extrude || 1, `${part_qname}.extrude`, 'number')(units) const outline = outlines[name] a.assert(outline, `Field "${part_qname}.name" does not name a valid outline!`) - // This is a hack to separate multiple calls to the same outline with different extrude values - // I know it needlessly duplicates a lot of code, but it's the quickest fix in the short term - // And on the long run, we'll probably be moving to CADQuery anyway... - const extruded_name = `${name}_extrude_` + ('' + extrude).replace(/\D/g, '_') - if (!scripts[extruded_name]) { - scripts[extruded_name] = m.exporter.toJscadScript(outline, { - functionName: `${extruded_name}_outline_fn`, + if (!scripts[name]) { + scripts[name] = m.exporter.toJscadScript(outline, { + functionName: `${name}_outline_fn`, extrude: extrude, indent: 4 }) } - outline_dependencies.push(extruded_name) - base = `${extruded_name}_outline_fn()` + outline_dependencies.push(name) + base = `${name}_outline_fn()` } else { - a.assert(part.extrude === undefined, `Field "${part_qname}.extrude" should not be used when what=case!`) + a.assert(part.extrude === undefined, `Field "${part_qname}.extrude" should not be used when type=case!`) a.in(name, `${part_qname}.name`, Object.keys(cases)) case_dependencies.push(name) base = `${name}_case_fn()` diff --git a/src/cli.js b/src/cli.js index fe0615b..a8f4db4 100755 --- a/src/cli.js +++ b/src/cli.js @@ -1,17 +1,11 @@ #!/usr/bin/env node const fs = require('fs-extra') -const fsp = require('fs/promises') const path = require('path') const yaml = require('js-yaml') const yargs = require('yargs') -const jszip = require('jszip') - -const io = require('./io') -const pkg = require('../package.json') const ergogen = require('./ergogen') - -;(async () => { +const pkg = require('../package.json') // command line args @@ -35,52 +29,7 @@ const args = yargs }) .argv -// greetings - -const title_suffix = args.debug ? ' (Debug Mode)' : '' -console.log(`Ergogen v${pkg.version} CLI${title_suffix}`) -console.log() - -// input helpers - -// zip handling is baked in at the io level, so that both the cli and the webui can use it -// if, for local development, we want to use a folder as input, we temporarily zip it in -// memory so that it can be handled the exact same way -// functions shamelessly repurposed from https://github.com/Stuk/jszip/issues/386 - -// return a flat array of absolute paths of all files recursively contained in the dir -const list_files_in_dir = async (dir) => { - const list = await fsp.readdir(dir) - const statPromises = list.map(async (file) => { - const fullPath = path.resolve(dir, file) - const stat = await fsp.stat(fullPath) - if (stat && stat.isDirectory()) { - return list_files_in_dir(fullPath) - } - return fullPath - }) - - return (await Promise.all(statPromises)).flat(Infinity) -} - -// create an in-memory zip stream from a folder in the file system -const zip_from_dir = async (dir) => { - const absRoot = path.resolve(dir) - const filePaths = await list_files_in_dir(dir) - return filePaths.reduce((z, filePath) => { - const relative = filePath.replace(absRoot, '') - // create folder trees manually :( - const zipFolder = path - .dirname(relative) - .split(path.sep) - .reduce((zf, dirName) => zf.folder(dirName), z) - - zipFolder.file(path.basename(filePath), fs.createReadStream(filePath)) - return z - }, new jszip()) -} - -// input reading +// config reading const config_file = args._[0] if (!config_file) { @@ -88,38 +37,20 @@ if (!config_file) { process.exit(1) } -if (!fs.existsSync(config_file)) { - console.error(`Could not read config file "${config_file}": File does not exist!`) - process.exit(2) -} - -let config_text = '' -let injections = [] - +let config_text try { - if (config_file.endsWith('.zip') || config_file.endsWith('.ekb')) { - console.log('Analyzing bundle...'); - [config_text, injections] = await io.unpack( - await (new jszip()).loadAsync(fs.readFileSync(config_file)) - ) - } else if (fs.statSync(config_file).isDirectory()) { - console.log('Analyzing folder...'); - [config_text, injections] = await io.unpack( - await zip_from_dir(config_file) - ) - } else { - config_text = fs.readFileSync(config_file).toString() - // no injections... - } - for (const [type, name, value] of injections) { - ergogen.inject(type, name, value) - } + config_text = fs.readFileSync(config_file).toString() } catch (err) { - console.error(`Could not read config file "${config_file}"!`) - console.error(err) + console.error(`Could not read config file "${config_file}": ${err}`) process.exit(2) } +const title_suffix = args.debug ? ' (Debug Mode)' : '' +console.log(`Ergogen v${pkg.version} CLI${title_suffix}`) +console.log() + +;(async () => { + // processing let results @@ -130,16 +61,14 @@ try { process.exit(3) } -// output helpers - -const yamldump = data => yaml.dump(data, {indent: 4, noRefs: true}) +// helpers const single = (data, rel) => { if (!data) return const abs = path.join(args.o, rel) fs.mkdirpSync(path.dirname(abs)) if (abs.endsWith('.yaml')) { - fs.writeFileSync(abs, yamldump(data)) + fs.writeFileSync(abs, yaml.dump(data, {indent: 4})) } else { fs.writeFileSync(abs, data) } @@ -150,9 +79,9 @@ const composite = (data, rel) => { const abs = path.join(args.o, rel) if (data.yaml) { fs.mkdirpSync(path.dirname(abs)) - fs.writeFileSync(abs + '.yaml', yamldump(data.yaml)) + fs.writeFileSync(abs + '.yaml', yaml.dump(data.yaml, {indent: 4})) } - for (const format of ['svg', 'dxf', 'jscad']) { + for (const format of ['svg', 'dxf', 'jscad', 'stl']) { if (data[format]) { fs.mkdirpSync(path.dirname(abs)) fs.writeFileSync(abs + '.' + format, data[format]) @@ -160,7 +89,7 @@ const composite = (data, rel) => { } } -// output generation +// output if (args.clean) { console.log('Cleaning output folder...') diff --git a/src/ergogen.js b/src/ergogen.js index 1281258..5f223b7 100644 --- a/src/ergogen.js +++ b/src/ergogen.js @@ -7,6 +7,7 @@ const outlines_lib = require('./outlines') const cases_lib = require('./cases') const pcbs_lib = require('./pcbs') +const semver = require('semver') const version = require('../package.json').version const process = async (raw, debug=false, logger=()=>{}) => { @@ -15,8 +16,6 @@ const process = async (raw, debug=false, logger=()=>{}) => { let empty = true let [config, format] = io.interpret(raw, logger) let suffix = format - // KLE conversion warrants automaticly engaging debug mode - // as, usually, we're only interested in the points anyway if (format == 'KLE') { suffix = `${format} (Auto-debug)` debug = true @@ -35,9 +34,12 @@ const process = async (raw, debug=false, logger=()=>{}) => { if (config.meta && config.meta.engine) { logger('Checking compatibility...') - const engine = u.semver(config.meta.engine, 'config.meta.engine') - if (!u.satisfies(version, engine)) { - throw new Error(`Current ergogen version (${version}) doesn\'t satisfy config's engine requirement (${config.meta.engine})!`) + const engine = semver.validRange(config.meta.engine) + if (!engine) { + throw new Error('Invalid config engine declaration!') + } + if (!semver.satisfies(version, engine)) { + throw new Error(`Current ergogen version (${version}) doesn\'t satisfy config's engine requirement (${engine})!`) } } @@ -69,12 +71,12 @@ const process = async (raw, debug=false, logger=()=>{}) => { empty = false } - logger('Modeling cases...') + logger('Extruding cases...') const cases = cases_lib.parse(config.cases || {}, outlines, units) results.cases = {} for (const [case_name, case_script] of Object.entries(cases)) { if (!debug && case_name.startsWith('_')) continue - results.cases[case_name] = {jscad: case_script} + results.cases[case_name] = await io.threedee(case_script, debug) empty = false } @@ -94,22 +96,8 @@ const process = async (raw, debug=false, logger=()=>{}) => { return results } -const inject = (type, name, value) => { - if (value === undefined) { - value = name - name = type - type = 'footprint' - } - switch (type) { - case 'footprint': - return pcbs_lib.inject_footprint(name, value) - default: - throw new Error(`Unknown injection type "${type}" with name "${name}" and value "${value}"!`) - } -} - module.exports = { version, process, - inject + inject_footprint: pcbs_lib.inject_footprint } \ No newline at end of file diff --git a/src/filter.js b/src/filter.js deleted file mode 100644 index ca091b6..0000000 --- a/src/filter.js +++ /dev/null @@ -1,156 +0,0 @@ -const u = require('./utils') -const a = require('./assert') -const anchor_lib = require('./anchor') -const Point = require('./point') -const anchor = anchor_lib.parse - -const _true = () => true -const _false = () => false -const _and = arr => p => arr.map(e => e(p)).reduce((a, b) => a && b) -const _or = arr => p => arr.map(e => e(p)).reduce((a, b) => a || b) - -const similar = (keys, reference, name, units) => { - let neg = false - if (reference.startsWith('-')) { - neg = true - reference = reference.slice(1) - } - - // support both string or regex as reference - let internal_tester = val => (''+val) == reference - if (reference.startsWith('/')) { - try { - const regex_parts = reference.split('/') - regex_parts.shift() // remove starting slash - const flags = regex_parts.pop() - const regex = new RegExp(regex_parts.join('/'), flags) - internal_tester = val => regex.test(''+val) - } catch (ex) { - throw new Error(`Invalid regex "${reference}" found at filter "${name}"!`) - } - } - - // support strings, arrays, or objects as key - const external_tester = (point, key) => { - const value = u.deep(point, key) - if (a.type(value)() == 'array') { - return value.some(subkey => internal_tester(subkey)) - } else if (a.type(value)() == 'object') { - return Object.keys(value).some(subkey => internal_tester(subkey)) - } else { - return internal_tester(value) - } - } - - // consider negation - if (neg) { - return point => keys.every(key => !external_tester(point, key)) - } else { - return point => keys.some(key => external_tester(point, key)) - } -} - -const comparators = { - '~': similar - // TODO: extension point for other operators... -} -const symbols = Object.keys(comparators) - -const simple = (exp, name, units) => { - - let keys = ['meta.name', 'meta.tags'] - let op = '~' - let value - const parts = exp.split(/\s+/g) - - // full case - if (symbols.includes(parts[1])) { - keys = parts[0].split(',') - op = parts[1] - value = parts.slice(2).join(' ') - - // middle case, just an operator spec, default "keys" - } else if (symbols.includes(parts[0])) { - op = parts[0] - value = parts.slice(1).join(' ') - - // basic case, only "value" - } else { - value = exp - } - - return point => comparators[op](keys, value, name, units)(point) -} - -const complex = (config, name, units, aggregator=_or) => { - - // we branch by type - const type = a.type(config)(units) - switch(type) { - - // boolean --> either all or nothing - case 'boolean': - return config ? _true : _false - - // string --> base case, meaning a simple/single filter - case 'string': - return simple(config, name, units) - - // array --> aggregated simple filters with alternating and/or conditions - case 'array': - const alternate = aggregator == _and ? _or : _and - return aggregator(config.map(elem => complex(elem, name, units, alternate))) - - default: - throw new Error(`Unexpected type "${type}" found at filter "${name}"!`) - } -} - -const contains_object = (val) => { - if (a.type(val)() == 'object') return true - if (a.type(val)() == 'array') return val.some(el => contains_object(el)) - return false -} - -exports.parse = (config, name, points={}, units={}, asym='source') => { - - let result = [] - - // if a filter decl is undefined, it's just the default point at [0, 0] - if (config === undefined) { - result.push(new Point()) - - // if a filter decl is an object, or an array that contains an object at any depth, it is an anchor - } else if (contains_object(config)) { - if (['source', 'both'].includes(asym)) { - result.push(anchor(config, name, points)(units)) - } - if (['clone', 'both'].includes(asym)) { - // this is strict: if the ref of the anchor doesn't have a mirror pair, it will error out - // also, we check for duplicates as ref-less anchors mirror to themselves - const clone = anchor(config, name, points, undefined, true)(units) - if (result.every(p => !p.equals(clone))) { - result.push(clone) - } - } - - // otherwise, it is treated as a condition to filter all available points - } else { - const source = Object.values(points).filter(complex(config, name, units)) - if (['source', 'both'].includes(asym)) { - result = result.concat(source) - } - if (['clone', 'both'].includes(asym)) { - // this is permissive: we only include mirrored versions if they exist, and don't fuss if they don't - // also, we check for duplicates as clones can potentially refer back to their sources, too - const pool = result.map(p => p.meta.name) - result = result.concat( - source.map(p => points[anchor_lib.mirror(p.meta.name)]) - .filter(p => !!p) - .filter(p => !pool.includes(p.meta.name)) - ) - } - } - - return result -} \ No newline at end of file diff --git a/src/footprints/alps.js b/src/footprints/alps.js index e998a99..942c57c 100644 --- a/src/footprints/alps.js +++ b/src/footprints/alps.js @@ -1,9 +1,11 @@ module.exports = { - params: { - designator: 'S', + nets: { from: undefined, to: undefined }, + params: { + class: 'S' + }, body: p => ` (module ALPS (layer F.Cu) (tedit 5CF31DEF) @@ -25,8 +27,8 @@ module.exports = { (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) ${''/* pins */} - (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.to}) + (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) ${p.net.to.str}) ) ` diff --git a/src/footprints/button.js b/src/footprints/button.js index 25fc333..5ab03b6 100644 --- a/src/footprints/button.js +++ b/src/footprints/button.js @@ -1,10 +1,12 @@ module.exports = { - params: { - designator: 'B', // for Button - side: 'F', + nets: { from: undefined, to: undefined }, + params: { + class: 'B', // for Button + side: 'F' + }, body: p => ` (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) @@ -18,20 +20,20 @@ module.exports = { (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) ${'' /* outline */} - (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer ${p.param.side}.SilkS) (width 0.15)) ${'' /* pins */} - (pad 1 smd rect (at -3.1 -1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 1 smd rect (at 3.1 -1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 2 smd rect (at -3.1 1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) - (pad 2 smd rect (at 3.1 1.85 ${p.r}) (size 1.8 1.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) + (pad 1 smd rect (at -3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.from.str}) + (pad 1 smd rect (at 3.1 -1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.from.str}) + (pad 2 smd rect (at -3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.to.str}) + (pad 2 smd rect (at 3.1 1.85 ${p.rot}) (size 1.8 1.1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.to.str}) ) ` diff --git a/src/footprints/choc.js b/src/footprints/choc.js index 52484e5..c14c2e5 100644 --- a/src/footprints/choc.js +++ b/src/footprints/choc.js @@ -13,14 +13,16 @@ // note: hotswap and reverse can be used simultaneously module.exports = { - params: { - designator: 'S', - hotswap: false, - reverse: false, - keycaps: false, + nets: { from: undefined, to: undefined }, + params: { + class: 'S', + hotswap: false, + reverse: false, + keycaps: false + }, body: p => { const standard = ` (module PG1350 (layer F.Cu) (tedit 5DD50112) @@ -55,35 +57,35 @@ module.exports = { (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) ` function pins(def_neg, def_pos, def_side) { - if(p.hotswap) { + if(p.param.hotswap) { return ` ${'' /* holes */} (pad "" np_thru_hole circle (at ${def_pos}5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.r}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from}) - (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.r}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to}) + (pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) + (pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to}) + (pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.to.str}) ` } } - if(p.reverse) { + if(p.param.reverse) { return ` ${standard} - ${p.keycaps ? keycap : ''} + ${p.param.keycaps ? keycap : ''} ${pins('-', '', 'B')} ${pins('', '-', 'F')}) ` } else { return ` ${standard} - ${p.keycaps ? keycap : ''} + ${p.param.keycaps ? keycap : ''} ${pins('-', '', 'B')}) ` } diff --git a/src/footprints/chocmini.js b/src/footprints/chocmini.js index 060bc52..e31258e 100644 --- a/src/footprints/chocmini.js +++ b/src/footprints/chocmini.js @@ -9,14 +9,16 @@ // if true, will add choc sized keycap box around the footprint module.exports = { - params: { - designator: 'S', - side: 'F', - reverse: false, - keycaps: false, + nets: { from: undefined, to: undefined }, + params: { + class: 'S', + side: 'F', + reverse: false, + keycaps: false + }, body: p => { const standard = ` (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) @@ -69,14 +71,14 @@ module.exports = { function pins(def_neg, def_pos) { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.from} (clearance 0.2)) - (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.to} (clearance 0.2)) + (pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.net.from.str} (clearance 0.2)) + (pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.net.to.str} (clearance 0.2)) ` } - if(p.reverse){ + if(p.param.reverse){ return ` ${standard} - ${p.keycaps ? keycap : ''} + ${p.param.keycaps ? keycap : ''} ${pins('-', '')} ${pins('', '-')}) @@ -84,7 +86,7 @@ module.exports = { } else { return ` ${standard} - ${p.keycaps ? keycap : ''} + ${p.param.keycaps ? keycap : ''} ${pins('-', '')}) ` } diff --git a/src/footprints/diode.js b/src/footprints/diode.js index 16d4288..5208103 100644 --- a/src/footprints/diode.js +++ b/src/footprints/diode.js @@ -1,9 +1,11 @@ module.exports = { - params: { - designator: 'D', + nets: { from: undefined, to: undefined }, + params: { + class: 'D' + }, body: p => ` (module ComboDiode (layer F.Cu) (tedit 5B24D78E) @@ -32,14 +34,14 @@ module.exports = { (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) ${''/* SMD pads on both sides */} - (pad 1 smd rect (at -1.65 0 ${p.r}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to}) - (pad 2 smd rect (at 1.65 0 ${p.r}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from}) - (pad 1 smd rect (at -1.65 0 ${p.r}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to}) - (pad 2 smd rect (at 1.65 0 ${p.r}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from}) + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.net.to.str}) + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.net.from.str}) + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.net.to.str}) + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.net.from.str}) ${''/* THT terminals */} - (pad 1 thru_hole rect (at -3.81 0 ${p.r}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.to}) - (pad 2 thru_hole circle (at 3.81 0 ${p.r}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.from}) + (pad 1 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 2 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.net.to.str}) ) ` diff --git a/src/footprints/jstph.js b/src/footprints/jstph.js index 7bdac1d..7aa5f86 100644 --- a/src/footprints/jstph.js +++ b/src/footprints/jstph.js @@ -1,10 +1,12 @@ module.exports = { - params: { - designator: 'JST', - side: 'F', + nets: { pos: undefined, neg: undefined }, + params: { + class: 'JST', + side: 'F' + }, body: p => ` (module JST_PH_S2B-PH-K_02x2.00mm_Angled (layer F.Cu) (tedit 58D3FE32) @@ -18,20 +20,20 @@ module.exports = { (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_line (start -2.25 0.25) (end -2.25 -1.35) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.25 -1.35) (end -2.95 -1.35) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.95 -1.35) (end -2.95 6.25) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.95 6.25) (end 2.95 6.25) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.95 6.25) (end 2.95 -1.35) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.95 -1.35) (end 2.25 -1.35) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.25 -1.35) (end 2.25 0.25) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.25 0.25) (end -2.25 0.25) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.25 0.25) (end -2.25 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.25 -1.35) (end -2.95 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.95 -1.35) (end -2.95 6.25) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.95 6.25) (end 2.95 6.25) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.95 6.25) (end 2.95 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.95 -1.35) (end 2.25 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.25 -1.35) (end 2.25 0.25) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.25 0.25) (end -2.25 0.25) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -1 1.5) (end -1 2.0) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -1 1.5) (end -1 2.0) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (pad 1 thru_hole rect (at -1 0 ${p.r}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.pos}) - (pad 2 thru_hole oval (at 1 0 ${p.r}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.neg}) + (pad 1 thru_hole rect (at -1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.net.pos.str}) + (pad 2 thru_hole oval (at 1 0 ${p.rot}) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) ${p.net.neg.str}) ) diff --git a/src/footprints/jumper.js b/src/footprints/jumper.js index f5203e2..7f4d025 100644 --- a/src/footprints/jumper.js +++ b/src/footprints/jumper.js @@ -1,10 +1,12 @@ module.exports = { - params: { - designator: 'J', - side: 'F', + nets: { from: undefined, to: undefined }, + params: { + class: 'J', + side: 'F' + }, body: p => ` (module lib:Jumper (layer F.Cu) (tedit 5E1ADAC2) ${p.at /* parametric position */} @@ -14,9 +16,9 @@ module.exports = { (fp_text value Jumper (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* pins */} - (pad 1 smd rect (at -0.50038 0 ${p.r}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - (clearance 0.1905) ${p.from}) - (pad 2 smd rect (at 0.50038 0 ${p.r}) (size 0.635 1.143) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - (clearance 0.1905) ${p.to})) + (pad 1 smd rect (at -0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) + (clearance 0.1905) ${p.net.from.str}) + (pad 2 smd rect (at 0.50038 0 ${p.rot}) (size 0.635 1.143) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) + (clearance 0.1905) ${p.net.to.str})) ` } \ No newline at end of file diff --git a/src/footprints/mx.js b/src/footprints/mx.js index 458b999..4bfb859 100644 --- a/src/footprints/mx.js +++ b/src/footprints/mx.js @@ -13,14 +13,16 @@ // note: hotswap and reverse can be used simultaneously module.exports = { - params: { - designator: 'S', - hotswap: false, - reverse: false, - keycaps: false, + nets: { from: undefined, to: undefined }, + params: { + class: 'S', + hotswap: false, + reverse: false, + keycaps: false + }, body: p => { const standard = ` (module MX (layer F.Cu) (tedit 5DD4F656) @@ -55,35 +57,35 @@ module.exports = { (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) ` function pins(def_neg, def_pos, def_side) { - if(p.hotswap) { + if(p.param.hotswap) { return ` ${'' /* holes */} (pad "" np_thru_hole circle (at ${def_pos}2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) (pad "" np_thru_hole circle (at ${def_neg}3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) ${'' /* net pads */} - (pad 1 smd rect (at ${def_neg}7.085 -2.54 ${p.r}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.from}) - (pad 2 smd rect (at ${def_pos}5.842 -5.08 ${p.r}) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.to}) + (pad 1 smd rect (at ${def_neg}7.085 -2.54 180) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from.str}) + (pad 2 smd rect (at ${def_pos}5.842 -5.08 180) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to.str}) ` } else { return ` ${''/* pins */} - (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.to}) + (pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.to.str}) ` } } - if(p.reverse){ + if(p.param.reverse){ return ` ${standard} - ${p.keycaps ? keycap : ''} + ${p.param.keycaps ? keycap : ''} ${pins('-', '', 'B')} ${pins('', '-', 'F')}) ` } else { return ` ${standard} - ${p.keycaps ? keycap : ''} + ${p.param.keycaps ? keycap : ''} ${pins('-', '', 'B')}) ` } diff --git a/src/footprints/oled.js b/src/footprints/oled.js index 3addacf..a1a7cc4 100644 --- a/src/footprints/oled.js +++ b/src/footprints/oled.js @@ -1,11 +1,13 @@ module.exports = { + nets: { + SDA: undefined, + SCL: undefined, + VCC: 'VCC', + GND: 'GND' + }, params: { - designator: 'OLED', - side: 'F', - VCC: {type: 'net', value: 'VCC'}, - GND: {type: 'net', value: 'GND'}, - SDA: undefined, - SCL: undefined + class: 'OLED', + side: 'F' }, body: p => ` (module lib:OLED_headers (layer F.Cu) (tedit 5E1ADAC2) @@ -16,14 +18,14 @@ module.exports = { (fp_text value OLED (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* pins */} - (pad 4 thru_hole oval (at 1.6 2.18 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.SDA}) - (pad 3 thru_hole oval (at 1.6 4.72 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.SCL}) - (pad 2 thru_hole oval (at 1.6 7.26 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.VCC}) - (pad 1 thru_hole rect (at 1.6 9.8 ${p.r+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - ${p.GND}) + (pad 4 thru_hole oval (at 1.6 2.18 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.net.SDA.str}) + (pad 3 thru_hole oval (at 1.6 4.72 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.net.SCL.str}) + (pad 2 thru_hole oval (at 1.6 7.26 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.net.VCC.str}) + (pad 1 thru_hole rect (at 1.6 9.8 ${p.rot+270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + ${p.net.GND.str}) ) ` } \ No newline at end of file diff --git a/src/footprints/omron.js b/src/footprints/omron.js index ff95eba..e59a237 100644 --- a/src/footprints/omron.js +++ b/src/footprints/omron.js @@ -1,9 +1,11 @@ module.exports = { - params: { - designator: 'S', + nets: { from: undefined, to: undefined }, + params: { + class: 'S' + }, body: p => ` (module OMRON_B3F-4055 (layer F.Cu) (tstamp 5BF2CC94) @@ -24,10 +26,10 @@ module.exports = { (fp_line (start -6 6) (end -6 -6) (layer Dwgs.User) (width 0.15)) ${'' /* pins */} - (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from}) - (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.from}) - (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to}) - (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.to}) + (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) ${p.net.to.str}) ) ` diff --git a/src/footprints/pad.js b/src/footprints/pad.js index 34d5cb9..b1a566d 100644 --- a/src/footprints/pad.js +++ b/src/footprints/pad.js @@ -1,14 +1,16 @@ module.exports = { + nets: { + net: undefined + }, params: { - designator: 'PAD', + class: 'PAD', width: 1, height: 1, front: true, back: true, text: '', align: 'left', - mirrored: {type: 'boolean', value: '{{mirrored}}'}, - net: undefined + mirrored: '=mirrored' }, body: p => { @@ -16,21 +18,18 @@ module.exports = { if (!toggle) return '' let x = 0, y = 0 const mirror = side == 'B' ? '(justify mirror)' : '' - const plus = (p.text.length + 1) * 0.5 - let align = p.align - if (p.mirrored === true) { + const plus = (p.param.text.length + 1) * 0.5 + let align = p.param.align + if (p.param.mirrored === true) { if (align == 'left') align = 'right' else if (align == 'right') align = 'left' } - if (align == 'left') x -= p.width / 2 + plus - if (align == 'right') x += p.width / 2 + plus - if (align == 'up') y += p.height / 2 + plus - if (align == 'down') y -= p.height / 2 + plus - let text = '' - if (p.text.length) { - text = `(fp_text user ${p.text} (at ${x} ${y} ${p.r}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` - } - return `(pad 1 smd rect (at 0 0 ${p.r}) (size ${p.width} ${p.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net})\n${text}` + if (align == 'left') x -= p.param.width / 2 + plus + if (align == 'right') x += p.param.width / 2 + plus + if (align == 'up') y += p.param.height / 2 + plus + if (align == 'down') y -= p.param.height / 2 + plus + const text = `(fp_text user ${p.param.text} (at ${x} ${y} ${p.rot}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror}))` + return `(pad 1 smd rect (at 0 0 ${p.rot}) (size ${p.param.width} ${p.param.height}) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.net.net.str})\n${text}` } return ` @@ -44,8 +43,8 @@ module.exports = { (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) ${''/* SMD pads */} - ${layout(p.front, 'F')} - ${layout(p.back, 'B')} + ${layout(p.param.front, 'F')} + ${layout(p.param.back, 'B')} ) diff --git a/src/footprints/promicro.js b/src/footprints/promicro.js index fc11a5c..a7db132 100644 --- a/src/footprints/promicro.js +++ b/src/footprints/promicro.js @@ -5,31 +5,33 @@ // if up, power led will face away from pcb module.exports = { + nets: { + RAW: 'RAW', + GND: 'GND', + RST: 'RST', + VCC: 'VCC', + P21: 'P21', + P20: 'P20', + P19: 'P19', + P18: 'P18', + P15: 'P15', + P14: 'P14', + P16: 'P16', + P10: 'P10', + P1: 'P1', + P0: 'P0', + P2: 'P2', + P3: 'P3', + P4: 'P4', + P5: 'P5', + P6: 'P6', + P7: 'P7', + P8: 'P8', + P9: 'P9', + }, params: { - designator: 'MCU', - orientation: 'down', - RAW: {type: 'net', value: 'RAW'}, - GND: {type: 'net', value: 'GND'}, - RST: {type: 'net', value: 'RST'}, - VCC: {type: 'net', value: 'VCC'}, - P21: {type: 'net', value: 'P21'}, - P20: {type: 'net', value: 'P20'}, - P19: {type: 'net', value: 'P19'}, - P18: {type: 'net', value: 'P18'}, - P15: {type: 'net', value: 'P15'}, - P14: {type: 'net', value: 'P14'}, - P16: {type: 'net', value: 'P16'}, - P10: {type: 'net', value: 'P10'}, - P1: {type: 'net', value: 'P1'}, - P0: {type: 'net', value: 'P0'}, - P2: {type: 'net', value: 'P2'}, - P3: {type: 'net', value: 'P3'}, - P4: {type: 'net', value: 'P4'}, - P5: {type: 'net', value: 'P5'}, - P6: {type: 'net', value: 'P6'}, - P7: {type: 'net', value: 'P7'}, - P8: {type: 'net', value: 'P8'}, - P9: {type: 'net', value: 'P9'} + class: 'MCU', + orientation: 'down' }, body: p => { const standard = ` @@ -60,61 +62,61 @@ module.exports = { (fp_line (start -12.7 ${def_pos}6.35) (end -12.7 ${def_pos}8.89) (layer F.SilkS) (width 0.15)) ${''/* pin names */} - (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.r + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) ${''/* and now the actual pins */} - (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.r}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW}) - (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST}) - (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC}) - (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P21}) - (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P20}) - (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P19}) - (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P18}) - (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P15}) - (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P14}) - (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P16}) - (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P10}) + (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RAW.str}) + (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND.str}) + (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RST.str}) + (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.VCC.str}) + (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P21.str}) + (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P20.str}) + (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P19.str}) + (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P18.str}) + (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P15.str}) + (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P14.str}) + (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P16.str}) + (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P10.str}) - (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P1}) - (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P0}) - (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P2}) - (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P3}) - (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P4}) - (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P5}) - (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P6}) - (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P7}) - (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P8}) - (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P9}) + (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P1.str}) + (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P0.str}) + (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND.str}) + (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND.str}) + (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P2.str}) + (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P3.str}) + (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P4.str}) + (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P5.str}) + (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P6.str}) + (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P7.str}) + (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P8.str}) + (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P9.str}) ` } - if(p.orientation == 'down') { + if(p.param.orientation == 'down') { return ` ${standard} ${pins('-', '')}) diff --git a/src/footprints/rgb.js b/src/footprints/rgb.js index 12e19ff..904bd17 100644 --- a/src/footprints/rgb.js +++ b/src/footprints/rgb.js @@ -1,11 +1,13 @@ module.exports = { - params: { - designator: 'LED', - side: 'F', + nets: { din: undefined, dout: undefined, - VCC: {type: 'net', value: 'VCC'}, - GND: {type: 'net', value: 'GND'} + VCC: 'VCC', + GND: 'GND' + }, + params: { + class: 'LED', + side: 'F' }, body: p => ` @@ -17,27 +19,27 @@ module.exports = { (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_line (start -1.75 -1.75) (end -1.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -1.75 1.75) (end 1.75 1.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 1.75 1.75) (end 1.75 -1.75) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 1.75 -1.75) (end -1.75 -1.75) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -1.75 -1.75) (end -1.75 1.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -1.75 1.75) (end 1.75 1.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 1.75 1.75) (end 1.75 -1.75) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 1.75 -1.75) (end -1.75 -1.75) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer ${p.param.side}.SilkS) (width 0.15)) - (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer ${p.side}.SilkS) (width 0.1)) + (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer ${p.param.side}.SilkS) (width 0.1)) - (pad 1 smd rect (at -2.2 -0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC}) - (pad 2 smd rect (at -2.2 0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout}) - (pad 3 smd rect (at 2.2 0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND}) - (pad 4 smd rect (at 2.2 -0.875 ${p.r}) (size 2.6 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din}) + (pad 1 smd rect (at -2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.VCC.str}) + (pad 2 smd rect (at -2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.dout.str}) + (pad 3 smd rect (at 2.2 0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.GND.str}) + (pad 4 smd rect (at 2.2 -0.875 ${p.rot}) (size 2.6 1) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.din.str}) - (pad 11 smd rect (at -2.5 -1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.VCC}) - (pad 22 smd rect (at -2.5 1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.dout}) - (pad 33 smd rect (at 2.5 1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.GND}) - (pad 44 smd rect (at 2.5 -1.6 ${p.r}) (size 2 1.2) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.din}) + (pad 11 smd rect (at -2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.VCC.str}) + (pad 22 smd rect (at -2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.dout.str}) + (pad 33 smd rect (at 2.5 1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.GND.str}) + (pad 44 smd rect (at 2.5 -1.6 ${p.rot}) (size 2 1.2) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.din.str}) ) diff --git a/src/footprints/rotary.js b/src/footprints/rotary.js index 771eeea..54129d6 100644 --- a/src/footprints/rotary.js +++ b/src/footprints/rotary.js @@ -8,14 +8,16 @@ // C: corresponds to pin 3 (for rotary) module.exports = { - params: { - designator: 'ROT', + nets: { from: undefined, to: undefined, A: undefined, B: undefined, C: undefined }, + params: { + class: 'ROT' + }, body: p => ` (module rotary_encoder (layer F.Cu) (tedit 603326DE) @@ -56,15 +58,15 @@ module.exports = { (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) ${''/* pin names */} - (pad A thru_hole rect (at -7.62 -2.54 ${p.r}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A}) - (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C}) - (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B}) - (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from}) - (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to}) + (pad A thru_hole rect (at -7.62 -2.54 ${p.rot}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.net.A.str}) + (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.net.C.str}) + (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.net.B.str}) + (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.net.to.str}) ${''/* Legs */} - (pad "" thru_hole rect (at -0.12 -5.64 ${p.r}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) - (pad "" thru_hole rect (at -0.12 5.56 ${p.r}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + (pad "" thru_hole rect (at -0.12 -5.64 ${p.rot}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) + (pad "" thru_hole rect (at -0.12 5.56 ${p.rot}) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) ) ` } diff --git a/src/footprints/scrollwheel.js b/src/footprints/scrollwheel.js index e7cc2de..748106f 100644 --- a/src/footprints/scrollwheel.js +++ b/src/footprints/scrollwheel.js @@ -21,9 +21,7 @@ module.exports = { - params: { - designator: 'S', - reverse: false, + nets: { from: undefined, to: undefined, A: undefined, @@ -31,12 +29,16 @@ module.exports = { C: undefined, D: undefined }, + params: { + class: 'S', + reverse: false + }, body: p => { const standard = ` (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) ${p.at /* parametric position */} - (fp_text reference REF** (at 0 0 ${p.r}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 ${p.r}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text reference REF** (at 0 0 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${'' /* corner marks */} (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) @@ -57,18 +59,18 @@ module.exports = { (fp_arc (start ${def_pos}9.5 -6.3) (end ${def_pos}9.8 -6.3) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15)) ${'' /* pins */} - (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.from}) - (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.to}) - (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.A}) - (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.B}) - (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.C}) - (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.r}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.D}) + (pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.from.str}) + (pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.to.str}) + (pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.A.str}) + (pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.B.str}) + (pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.C.str}) + (pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.D.str}) ${'' /* stabilizer */} - (pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.r}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.rot}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) ` } - if(p.reverse) { + if(p.param.reverse) { return ` ${standard} ${pins('-', '')} diff --git a/src/footprints/slider.js b/src/footprints/slider.js index 12b3fd9..4bab2ed 100644 --- a/src/footprints/slider.js +++ b/src/footprints/slider.js @@ -1,14 +1,16 @@ module.exports = { - params: { - designator: 'T', // for Toggle - side: 'F', + nets: { from: undefined, to: undefined }, + params: { + class: 'T', // for Toggle + side: 'F' + }, body: p => { - const left = p.side == 'F' ? '-' : '' - const right = p.side == 'F' ? '' : '-' + const left = p.param.side == 'F' ? '-' : '' + const right = p.param.side == 'F' ? '' : '-' return ` @@ -21,12 +23,12 @@ module.exports = { (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) ${'' /* outline */} - (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer ${p.side}.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer ${p.side}.SilkS) (width 0.15)) + (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) + (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer ${p.param.side}.SilkS) (width 0.15)) ${'' /* extra indicator for the slider */} (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) @@ -38,15 +40,15 @@ module.exports = { (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) ${'' /* pins */} - (pad 1 smd rect (at ${right}2.25 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 2 smd rect (at ${left}0.75 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) - (pad 3 smd rect (at ${left}2.25 2.075 ${p.r}) (size 0.9 1.25) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad 1 smd rect (at ${right}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.from.str}) + (pad 2 smd rect (at ${left}0.75 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask) ${p.net.to.str}) + (pad 3 smd rect (at ${left}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) ${'' /* side mounts */} - (pad "" smd rect (at 3.7 -1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at 3.7 1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at -3.7 1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) - (pad "" smd rect (at -3.7 -1.1 ${p.r}) (size 0.9 0.9) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)) + (pad "" smd rect (at 3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) + (pad "" smd rect (at 3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) + (pad "" smd rect (at -3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) + (pad "" smd rect (at -3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${p.param.side}.Cu ${p.param.side}.Paste ${p.param.side}.Mask)) ) ` diff --git a/src/footprints/trrs.js b/src/footprints/trrs.js index ede0002..7ec90ce 100644 --- a/src/footprints/trrs.js +++ b/src/footprints/trrs.js @@ -1,24 +1,8 @@ // TRRS-PJ-320A-dual -// -// Normal footprint: // _________________ -// | (2) (3) (4)| +// | (1) (3) (4)| // | | -// | (1) | -// |________________| -// -// Reverse footprint: -// _________________ -// | (2) (3) (4)| -// | (1) | -// | (1) | -// |___(2)___(3)_(4)| -// -// Reverse & symmetric footprint: -// _________________ -// | (1|2) (3) (4)| -// | | -// |_(1|2)___(3)_(4)| +// |___(2)__________| // // Nets // A: corresponds to pin 1 @@ -34,15 +18,17 @@ // pins 1 and 2 must be identical if symmetric is true, as they will overlap module.exports = { - params: { - designator: 'TRRS', - reverse: false, - symmetric: false, + nets: { A: undefined, B: undefined, C: undefined, D: undefined }, + params: { + class: 'TRRS', + reverse: false, + symmetric: false + }, body: p => { const standard = ` (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) @@ -50,7 +36,7 @@ module.exports = { ${p.at /* parametric position */} ${'' /* footprint reference */} - (fp_text reference "${p.ref}" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) + (fp_text reference REF** (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) ${''/* corner marks */} @@ -62,42 +48,35 @@ module.exports = { (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) + ${''/* stabilizers */} + (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) + (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) ` - function stabilizers(def_pos) { - return ` - (pad "" np_thru_hole circle (at ${def_pos} 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at ${def_pos} 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - ` - } function pins(def_neg, def_pos) { return ` - (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.A}) - (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.B}) - (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.C}) - (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.r}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.D}) + (pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.A.str}) + (pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.B.str}) + (pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.C.str}) + (pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.D.str}) ` } - if(p.reverse & p.symmetric) { + if(p.param.reverse & p.param.symmetric) { return ` ${standard} - ${stabilizers('-2.3')} ${pins('0', '-4.6')} ${pins('-4.6', '0')}) ` - } else if(p.reverse) { + } else if(p.param.reverse) { return ` ${standard} - ${stabilizers('-2.3')} - ${stabilizers('0')} - ${pins('-2.3', '2.3')} - ${pins('0', '-4.6')}) + ${pins('-4.6', '0')} + ${pins('4.6', '0')}) ` - } else { - return ` - ${standard} - ${stabilizers('-2.3')} - ${pins('-4.6', '0')}) - ` - } + } else { + return ` + ${standard} + ${pins('-4.6', '0')}) + ` + } } } diff --git a/src/footprints/via.js b/src/footprints/via.js index 1b6dc5c..7e439aa 100644 --- a/src/footprints/via.js +++ b/src/footprints/via.js @@ -3,7 +3,7 @@ // net: the net this via should be connected to module.exports = { - params: { + nets: { net: undefined }, body: p => ` @@ -14,7 +14,7 @@ module.exports = { (fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide (effects (font (size 1 1) (thickness 0.15)))) ${'' /* via */} - (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net}) + (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net.net.str}) ) ` } \ No newline at end of file diff --git a/src/io.js b/src/io.js index 4b28c1a..ea3e8fc 100644 --- a/src/io.js +++ b/src/io.js @@ -1,36 +1,11 @@ const yaml = require('js-yaml') -const jszip = require('jszip') const makerjs = require('makerjs') +const jscad = require('@jscad/openjscad') const u = require('./utils') const a = require('./assert') const kle = require('./kle') -exports.unpack = async (zip) => { - - // main config text (has to be called "config.ext" where ext is one of yaml/json/js) - const candidates = zip.file(/^config\.(yaml|json|js)$/) - if (candidates.length != 1) { - throw new Error('Ambiguous config in bundle!') - } - const config_text = await candidates[0].async('string') - const injections = [] - - // bundled footprints - const fps = zip.folder('footprints') - const module_prefix = 'const module = {};\n\n' - const module_suffix = '\n\nreturn module.exports;' - for (const fp of fps.file(/.*\.js$/)) { - const name = fp.name.slice('footprints/'.length).split('.')[0] - const text = await fp.async('string') - const parsed = new Function(module_prefix + text + module_suffix)() - // TODO: some sort of footprint validation? - injections.push(['footprint', name, parsed]) - } - - return [config_text, injections] -} - exports.interpret = (raw, logger) => { let config = raw let format = 'OBJ' @@ -90,3 +65,18 @@ exports.twodee = (model, debug) => { } return result } + +exports.threedee = async (script, debug) => { + const compiled = await new Promise((resolve, reject) => { + jscad.compile(script, {}).then(compiled => { + resolve(compiled) + }) + }) + const result = { + stl: jscad.generateOutput('stla', compiled).asBuffer().toString() + } + if (debug) { + result.jscad = script + } + return result +} diff --git a/src/kle.js b/src/kle.js index 6ff3f86..592f916 100644 --- a/src/kle.js +++ b/src/kle.js @@ -70,4 +70,4 @@ exports.convert = (config, logger) => { } return result -} +} \ No newline at end of file diff --git a/src/operation.js b/src/operation.js index 0480324..c8edc36 100644 --- a/src/operation.js +++ b/src/operation.js @@ -1,23 +1,17 @@ const op_prefix = exports.op_prefix = str => { - - const prefix = str[0] const suffix = str.slice(1) - const result = {name: suffix, operation: 'add'} - - if (prefix == '+') ; // noop - else if (prefix == '-') result.operation = 'subtract' - else if (prefix == '~') result.operation = 'intersect' - else if (prefix == '^') result.operation = 'stack' - else result.name = str // no prefix, so the name was the whole string - - return result + if (str.startsWith('+')) return {name: suffix, operation: 'add'} + if (str.startsWith('-')) return {name: suffix, operation: 'subtract'} + if (str.startsWith('~')) return {name: suffix, operation: 'intersect'} + if (str.startsWith('^')) return {name: suffix, operation: 'stack'} + return {name: str, operation: 'add'} } exports.operation = (str, choices={}, order=Object.keys(choices)) => { let res = op_prefix(str) for (const key of order) { if (choices[key].includes(res.name)) { - res.what = key + res.type = key break } } diff --git a/src/outlines.js b/src/outlines.js index f837cde..6ec7164 100644 --- a/src/outlines.js +++ b/src/outlines.js @@ -4,251 +4,342 @@ const a = require('./assert') const o = require('./operation') const Point = require('./point') const prep = require('./prepare') -const anchor = require('./anchor').parse -const filter = require('./filter').parse +const anchor_lib = require('./anchor') -const binding = (base, bbox, point, units) => { +const rectangle = (w, h, corner, bevel, name='') => { + const error = (dim, val) => `Rectangle for "${name}" isn't ${dim} enough for its corner and bevel (${val} - 2 * ${corner} - 2 * ${bevel} <= 0)!` + const mod = 2 * (corner + bevel) + const cw = w - mod + a.assert(cw >= 0, error('wide', w)) + const ch = h - mod + a.assert(ch >= 0, error('tall', h)) - let bind = a.trbl(point.meta.bind || 0, `${point.meta.name}.bind`)(units) - // if it's a mirrored key, we swap the left and right bind values - if (point.meta.mirrored) { - bind = [bind[0], bind[3], bind[2], bind[1]] + let res = new m.models.Rectangle(cw, ch) + if (bevel) { + res = u.poly([ + [-bevel, 0], + [-bevel, ch], + [0, ch + bevel], + [cw, ch + bevel], + [cw + bevel, ch], + [cw + bevel, 0], + [cw, -bevel], + [0, -bevel] + ]) } - - const bt = Math.max(bbox.high[1], 0) + Math.max(bind[0], 0) - const br = Math.max(bbox.high[0], 0) + Math.max(bind[1], 0) - const bd = Math.min(bbox.low[1], 0) - Math.max(bind[2], 0) - const bl = Math.min(bbox.low[0], 0) - Math.max(bind[3], 0) - - if (bind[0] || bind[1]) base = u.union(base, u.rect(br, bt)) - if (bind[1] || bind[2]) base = u.union(base, u.rect(br, -bd, [0, bd])) - if (bind[2] || bind[3]) base = u.union(base, u.rect(-bl, -bd, [bl, bd])) - if (bind[3] || bind[0]) base = u.union(base, u.rect(-bl, bt, [bl, 0])) - - return base + if (corner > 0) res = m.model.outline(res, corner, 0) + return m.model.moveRelative(res, [corner + bevel, corner + bevel]) } -const rectangle = (config, name, points, outlines, units) => { +const layout = exports._layout = (config = {}, points = {}, units = {}) => { - // prepare params - a.unexpected(config, `${name}`, ['size', 'corner', 'bevel']) - const size = a.wh(config.size, `${name}.size`)(units) - const rec_units = prep.extend({ - sx: size[0], - sy: size[1] - }, units) - const corner = a.sane(config.corner || 0, `${name}.corner`, 'number')(rec_units) - const bevel = a.sane(config.bevel || 0, `${name}.bevel`, 'number')(rec_units) + // Glue config sanitization - // return shape function and its units - return [() => { - - const error = (dim, val) => `Rectangle for "${name}" isn't ${dim} enough for its corner and bevel (${val} - 2 * ${corner} - 2 * ${bevel} <= 0)!` - const [w, h] = size - const mod = 2 * (corner + bevel) - const cw = w - mod - a.assert(cw >= 0, error('wide', w)) - const ch = h - mod - a.assert(ch >= 0, error('tall', h)) - - let rect = new m.models.Rectangle(cw, ch) - if (bevel) { - rect = u.poly([ - [-bevel, 0], - [-bevel, ch], - [0, ch + bevel], - [cw, ch + bevel], - [cw + bevel, ch], - [cw + bevel, 0], - [cw, -bevel], - [0, -bevel] - ]) - } - if (corner > 0) rect = m.model.outline(rect, corner, 0) - rect = m.model.moveRelative(rect, [-cw/2, -ch/2]) - const bbox = {high: [w/2, h/2], low: [-w/2, -h/2]} - - return [rect, bbox] - }, rec_units] -} - -const circle = (config, name, points, outlines, units) => { - - // prepare params - a.unexpected(config, `${name}`, ['radius']) - const radius = a.sane(config.radius, `${name}.radius`, 'number')(units) - const circ_units = prep.extend({ - r: radius - }, units) - - // return shape function and its units - return [() => { - let circle = u.circle([0, 0], radius) - const bbox = {high: [radius, radius], low: [-radius, -radius]} - return [circle, bbox] - }, circ_units] -} - -const polygon = (config, name, points, outlines, units) => { - - // prepare params - a.unexpected(config, `${name}`, ['points']) - const poly_points = a.sane(config.points, `${name}.points`, 'array')() - - // return shape function and its units - return [point => { - const parsed_points = [] - // the poly starts at [0, 0] as it will be positioned later - // but we keep the point metadata for potential mirroring purposes - let last_anchor = new Point(0, 0, 0, point.meta) - let poly_index = -1 - for (const poly_point of poly_points) { - const poly_name = `${name}.points[${++poly_index}]` - last_anchor = anchor(poly_point, poly_name, points, last_anchor)(units) - parsed_points.push(last_anchor.p) - } - let poly = u.poly(parsed_points) - const bbox = u.bbox(parsed_points) - return [poly, bbox] - }, units] -} - -const outline = (config, name, points, outlines, units) => { - - // prepare params - a.unexpected(config, `${name}`, ['name', 'origin']) - a.assert(outlines[config.name], `Field "${name}.name" does not name an existing outline!`) - const origin = anchor(config.origin || {}, `${name}.origin`, points)(units) + const parsed_glue = u.deepcopy(a.sane(config, 'outlines.glue', 'object')()) + for (let [gkey, gval] of Object.entries(parsed_glue)) { + a.unexpected(gval, `outlines.glue.${gkey}`, ['top', 'bottom', 'waypoints', 'extra']) - // return shape function and its units - return [() => { - let o = u.deepcopy(outlines[config.name]) - o = origin.unposition(o) - const bbox = m.measure.modelExtents(o) - return [o, bbox] - }, units] -} - -const whats = { - rectangle, - circle, - polygon, - outline -} - -const expand_shorthand = (config, name, units) => { - if (a.type(config.expand)(units) == 'string') { - const prefix = config.expand.slice(0, -1) - const suffix = config.expand.slice(-1) - const valid_suffixes = [')', '>', ']'] - a.assert(valid_suffixes.includes(suffix), `If field "${name}" is a string, ` + - `it should end with one of [${valid_suffixes.map(s => `'${s}'`).join(', ')}]!`) - config.expand = prefix - config.joints = config.joints || valid_suffixes.indexOf(suffix) - } + for (const y of ['top', 'bottom']) { + a.unexpected(gval[y], `outlines.glue.${gkey}.${y}`, ['left', 'right']) + gval[y].left = anchor_lib.parse(gval[y].left, `outlines.glue.${gkey}.${y}.left`, points) + if (a.type(gval[y].right)(units) != 'number') { + gval[y].right = anchor_lib.parse(gval[y].right, `outlines.glue.${gkey}.${y}.right`, points) + } + } - if (a.type(config.joints)(units) == 'string') { - if (config.joints == 'round') config.joints = 0 - if (config.joints == 'pointy') config.joints = 1 - if (config.joints == 'beveled') config.joints = 2 + gval.waypoints = a.sane(gval.waypoints || [], `outlines.glue.${gkey}.waypoints`, 'array')(units) + let wi = 0 + gval.waypoints = gval.waypoints.map(w => { + const name = `outlines.glue.${gkey}.waypoints[${++wi}]` + a.unexpected(w, name, ['percent', 'width']) + w.percent = a.sane(w.percent, name + '.percent', 'number')(units) + w.width = a.wh(w.width, name + '.width')(units) + return w + }) + + parsed_glue[gkey] = gval + } + + + // TODO: handle glue.extra (or revoke it from the docs) + + return (params, export_name, expected) => { + + // Layout params sanitization + + a.unexpected(params, `${export_name}`, expected.concat(['side', 'tags', 'glue', 'size', 'corner', 'bevel', 'bound'])) + const size = a.wh(params.size, `${export_name}.size`)(units) + const relative_units = prep.extend({ + sx: size[0], + sy: size[1] + }, units) + + + + const side = a.in(params.side, `${export_name}.side`, ['left', 'right', 'middle', 'both', 'glue']) + const tags = a.sane(params.tags || [], `${export_name}.tags`, 'array')() + const corner = a.sane(params.corner || 0, `${export_name}.corner`, 'number')(relative_units) + const bevel = a.sane(params.bevel || 0, `${export_name}.bevel`, 'number')(relative_units) + const bound = a.sane(params.bound === undefined ? true : params.bound, `${export_name}.bound`, 'boolean')() + + // Actual layout + + let left = {models: {}} + let right = {models: {}} + if (['left', 'right', 'middle', 'both'].includes(side)) { + for (const [pname, p] of Object.entries(points)) { + + // filter by tags, if necessary + if (tags.length) { + const source = p.meta.tags || {} + const point_tags = Object.keys(source).filter(t => !!source[t]) + const relevant = point_tags.some(pt => tags.includes(pt)) + if (!relevant) continue + } + + let from_x = -size[0] / 2, to_x = size[0] / 2 + let from_y = -size[1] / 2, to_y = size[1] / 2 + + // the original position + let rect = rectangle(to_x - from_x, to_y - from_y, corner, bevel, `${export_name}.size`) + rect = m.model.moveRelative(rect, [from_x, from_y]) + + // extra binding "material", if necessary + if (bound) { + let bind = a.trbl(p.meta.bind || 0, `${pname}.bind`)(relative_units) + // if it's a mirrored key, we swap the left and right bind values + if (p.meta.mirrored) { + bind = [bind[0], bind[3], bind[2], bind[1]] + } + + const bt = to_y + Math.max(bind[0], 0) + const br = to_x + Math.max(bind[1], 0) + const bd = from_y - Math.max(bind[2], 0) + const bl = from_x - Math.max(bind[3], 0) + + if (bind[0] || bind[1]) rect = u.union(rect, u.rect(br, bt)) + if (bind[1] || bind[2]) rect = u.union(rect, u.rect(br, -bd, [0, bd])) + if (bind[2] || bind[3]) rect = u.union(rect, u.rect(-bl, -bd, [bl, bd])) + if (bind[3] || bind[0]) rect = u.union(rect, u.rect(-bl, bt, [bl, 0])) + } + + // positioning and unioning the resulting shape + rect = p.position(rect) + if (p.meta.mirrored) { + right = u.union(right, rect) + } else { + left = u.union(left, rect) + } + } + } + if (side == 'left') return left + if (side == 'right') return right + + // allow opting out of gluing, when + // A) there are no glue definitions, or + // B) glue is explicitly set to false + const glue_opt_out = (!Object.keys(parsed_glue).length || params.glue === false) + + let glue = {models: {}} + if (bound && ['middle', 'both', 'glue'].includes(side) && !glue_opt_out) { + + const default_glue_name = Object.keys(parsed_glue)[0] + const computed_glue_name = a.sane(params.glue || default_glue_name, `${export_name}.glue`, 'string')() + const glue_def = parsed_glue[computed_glue_name] + a.assert(glue_def, `Field "${export_name}.glue" does not name a valid glue!`) + + const get_line = (anchor) => { + if (a.type(anchor)(relative_units) == 'number') { + return u.line([anchor, -1000], [anchor, 1000]) + } + + // if it wasn't a number, then it's a (possibly relative) anchor + const from = anchor(relative_units).clone() + const to = from.clone().shift([from.meta.mirrored ? -1 : 1, 0]) + + return u.line(from.p, to.p) + } + + const tll = get_line(glue_def.top.left) + const trl = get_line(glue_def.top.right) + const tip = m.path.converge(tll, trl) + if (!tip) { + throw new Error(`Top lines don't intersect in glue "${computed_glue_name}"!`) + } + const tlp = u.eq(tll.origin, tip) ? tll.end : tll.origin + const trp = u.eq(trl.origin, tip) ? trl.end : trl.origin + + const bll = get_line(glue_def.bottom.left) + const brl = get_line(glue_def.bottom.right) + const bip = m.path.converge(bll, brl) + if (!bip) { + throw new Error(`Bottom lines don't intersect in glue "${computed_glue_name}"!`) + } + const blp = u.eq(bll.origin, bip) ? bll.end : bll.origin + const brp = u.eq(brl.origin, bip) ? brl.end : brl.origin + + const left_waypoints = [] + const right_waypoints = [] + + for (const w of glue_def.waypoints) { + const percent = w.percent / 100 + const center_x = tip[0] + percent * (bip[0] - tip[0]) + const center_y = tip[1] + percent * (bip[1] - tip[1]) + const left_x = center_x - w.width[0] + const right_x = center_x + w.width[1] + left_waypoints.push([left_x, center_y]) + right_waypoints.unshift([right_x, center_y]) + } + + let waypoints + const is_split = a.type(glue_def.top.right)(relative_units) == 'number' + if (is_split) { + waypoints = [tip, tlp] + .concat(left_waypoints) + .concat([blp, bip]) + } else { + waypoints = [trp, tip, tlp] + .concat(left_waypoints) + .concat([blp, bip, brp]) + .concat(right_waypoints) + } + + glue = u.poly(waypoints) + } + if (side == 'glue') return glue + + if (side == 'middle') { + let middle = u.subtract(glue, left) + middle = u.subtract(middle, right) + return middle + } + + let both = u.union(u.deepcopy(left), glue) + both = u.union(both, u.deepcopy(right)) + return both } } -exports.parse = (config, points, units) => { +exports.parse = (config = {}, points = {}, units = {}) => { + a.unexpected(config, 'outline', ['glue', 'exports']) + const layout_fn = layout(config.glue, points, units) - // output outlines will be collected here const outlines = {} - // the config must be an actual object so that the exports have names - config = a.sane(config, 'outlines', 'object')() - for (let [outline_name, parts] of Object.entries(config)) { - - // placeholder for the current outline - outlines[outline_name] = {models: {}} - - // each export can consist of multiple parts - // either sub-objects or arrays are fine... + const ex = a.sane(config.exports || {}, 'outlines.exports', 'object')() + for (let [key, parts] of Object.entries(ex)) { if (a.type(parts)() == 'array') { parts = {...parts} } - parts = a.sane(parts, `outlines.${outline_name}`, 'object')() - + parts = a.sane(parts, `outlines.exports.${key}`, 'object')() + let result = {models: {}} for (let [part_name, part] of Object.entries(parts)) { - - const name = `outlines.${outline_name}.${part_name}` - - // string part-shortcuts are expanded first + const name = `outlines.exports.${key}.${part_name}` if (a.type(part)() == 'string') { part = o.operation(part, {outline: Object.keys(outlines)}) } + const expected = ['type', 'operation'] + part.type = a.in(part.type || 'outline', `${name}.type`, ['keys', 'rectangle', 'circle', 'polygon', 'outline']) + part.operation = a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack']) - // process keys that are common to all part declarations - const operation = u[a.in(part.operation || 'add', `${name}.operation`, ['add', 'subtract', 'intersect', 'stack'])] - const what = a.in(part.what || 'outline', `${name}.what`, ['rectangle', 'circle', 'polygon', 'outline']) - const bound = !!part.bound - const asym = a.asym(part.asym || 'source', `${name}.asym`) + let op = u.union + if (part.operation == 'subtract') op = u.subtract + else if (part.operation == 'intersect') op = u.intersect + else if (part.operation == 'stack') op = u.stack - // `where` is delayed until we have all, potentially what-dependent units - // default where is [0, 0], as per filter parsing - const original_where = part.where // need to save, so the delete's don't get rid of it below - const where = units => filter(original_where, `${name}.where`, points, units, asym) - - const original_adjust = part.adjust // same as above - const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) - expand_shorthand(part, `${name}.expand`, units) - const expand = a.sane(part.expand || 0, `${name}.expand`, 'number')(units) - const joints = a.in(a.sane(part.joints || 0, `${name}.joints`, 'number')(units), `${name}.joints`, [0, 1, 2]) - const scale = a.sane(part.scale || 1, `${name}.scale`, 'number')(units) - - // these keys are then removed, so ops can check their own unexpected keys without interference - delete part.operation - delete part.what - delete part.bound - delete part.asym - delete part.where - delete part.adjust - delete part.fillet - delete part.expand - delete part.joints - delete part.scale - - // a prototype "shape" maker (and its units) are computed - const [shape_maker, shape_units] = whats[what](part, name, points, outlines, units) - const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(shape_units) - - // and then the shape is repeated for all where positions - for (const w of where(shape_units)) { - const point = adjust(w.clone()) - let [shape, bbox] = shape_maker(point) // point is passed for mirroring metadata only... - if (bound) { - shape = binding(shape, bbox, point, shape_units) - } - shape = point.position(shape) // ...actual positioning happens here - outlines[outline_name] = operation(outlines[outline_name], shape) + let arg + let anchor + const anchor_def = part.anchor || {} + switch (part.type) { + case 'keys': + arg = layout_fn(part, name, expected) + break + case 'rectangle': + a.unexpected(part, name, expected.concat(['anchor', 'size', 'corner', 'bevel', 'mirror'])) + const size = a.wh(part.size, `${name}.size`)(units) + const rec_units = prep.extend({ + sx: size[0], + sy: size[1] + }, units) + anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(rec_units) + const corner = a.sane(part.corner || 0, `${name}.corner`, 'number')(rec_units) + const bevel = a.sane(part.bevel || 0, `${name}.bevel`, 'number')(rec_units) + const rect_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() + const rect = rectangle(size[0], size[1], corner, bevel, name) + arg = anchor.position(u.deepcopy(rect)) + if (rect_mirror) { + const mirror_anchor = u.deepcopy(anchor_def) + a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) + anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(rec_units) + const mirror_rect = m.model.moveRelative(u.deepcopy(rect), [-size[0], 0]) + arg = u.union(arg, anchor.position(mirror_rect)) + } + break + case 'circle': + a.unexpected(part, name, expected.concat(['anchor', 'radius', 'mirror'])) + const radius = a.sane(part.radius, `${name}.radius`, 'number')(units) + const circle_units = prep.extend({ + r: radius + }, units) + anchor = anchor_lib.parse(anchor_def, `${name}.anchor`, points)(circle_units) + const circle_mirror = a.sane(part.mirror || false, `${name}.mirror`, 'boolean')() + arg = u.circle(anchor.p, radius) + if (circle_mirror) { + const mirror_anchor = u.deepcopy(anchor_def) + a.assert(mirror_anchor.ref, `Field "${name}.anchor.ref" must be speficied if mirroring is required!`) + anchor = anchor_lib.parse(mirror_anchor, `${name}.anchor --> mirror`, points, undefined, undefined, true)(circle_units) + arg = u.union(arg, u.circle(anchor.p, radius)) + } + break + case 'polygon': + a.unexpected(part, name, expected.concat(['points', 'mirror'])) + const poly_points = a.sane(part.points, `${name}.points`, 'array')() + const poly_mirror = a.sane(part.mirror || false, `${name.mirror}`, 'boolean')() + const parsed_points = [] + const mirror_points = [] + let poly_mirror_x = 0 + let last_anchor = new Point() + let poly_index = 0 + for (const poly_point of poly_points) { + const poly_name = `${name}.points[${++poly_index}]` + if (poly_index == 1 && poly_mirror) { + a.assert(poly_point.ref, `Field "${poly_name}.ref" must be speficied if mirroring is required!`) + const mirrored_ref = anchor_lib.mirror(poly_point.ref, poly_mirror) + a.assert(points[poly_point.ref], `Field "${poly_name}.ref" does not name an existing point!`) + a.assert(points[mirrored_ref], `The mirror of field "${poly_name}.ref" ("${mirrored_ref}") does not name an existing point!`) + poly_mirror_x = (points[poly_point.ref].x + points[mirrored_ref].x) / 2 + } + last_anchor = anchor_lib.parse(poly_point, poly_name, points, true, last_anchor)(units) + parsed_points.push(last_anchor.p) + mirror_points.push(last_anchor.clone().mirror(poly_mirror_x).p) + } + arg = u.poly(parsed_points) + if (poly_mirror) { + arg = u.union(arg, u.poly(mirror_points)) + } + break + case 'outline': + a.unexpected(part, name, expected.concat(['name', 'fillet'])) + a.assert(outlines[part.name], `Field "${name}.name" does not name an existing outline!`) + const fillet = a.sane(part.fillet || 0, `${name}.fillet`, 'number')(units) + arg = u.deepcopy(outlines[part.name]) + if (fillet) { + for (const [index, chain] of m.model.findChains(arg).entries()) { + arg.models[`fillet_${index}`] = m.chain.fillet(chain, fillet) + } + } + break + default: + throw new Error(`Field "${name}.type" (${part.type}) does not name a valid outline part type!`) } - if (scale !== 1) { - outlines[outline_name] = m.model.scale(outlines[outline_name], scale) - } - - if (expand) { - outlines[outline_name] = m.model.outline( - outlines[outline_name], Math.abs(expand), joints, (expand < 0), {farPoint: u.farPoint} - ) - } - - if (fillet) { - for (const [index, chain] of m.model.findChains(outlines[outline_name]).entries()) { - outlines[outline_name].models[`fillet_${part_name}_${index}`] = m.chain.fillet(chain, fillet) - } - } + result = op(result, arg) } - // final adjustments - m.model.originate(outlines[outline_name]) - m.model.simplify(outlines[outline_name]) - + m.model.originate(result) + m.model.simplify(result) + outlines[key] = result } return outlines -} +} \ No newline at end of file diff --git a/src/pcbs.js b/src/pcbs.js index 59515d7..90c0a82 100644 --- a/src/pcbs.js +++ b/src/pcbs.js @@ -1,11 +1,7 @@ const m = require('makerjs') -const yaml = require('js-yaml') - -const u = require('./utils') const a = require('./assert') const prep = require('./prepare') -const anchor = require('./anchor').parse -const filter = require('./filter').parse +const anchor_lib = require('./anchor') const kicad_prefix = ` (kicad_pcb (version 20171130) (host pcbnew 5.1.6) @@ -117,7 +113,7 @@ const kicad_netclass = ` ) ` -const makerjs2kicad = exports._makerjs2kicad = (model, layer) => { +const makerjs2kicad = exports._makerjs2kicad = (model, layer='Edge.Cuts') => { const grs = [] const xy = val => `${val[0]} ${-val[1]}` m.model.walk(model, { @@ -153,140 +149,84 @@ exports.inject_footprint = (name, fp) => { footprint_types[name] = fp } -const xy_obj = (x, y) => { - return { - x, - y, - str: `${x} ${y}`, - toString: function() { return this.str } - } -} +const footprint = exports._footprint = (config, name, points, point, net_indexer, component_indexer, units, extra) => { -const net_obj = (name, index) => { - return { - name, - index, - str: `(net ${index} "${name}")`, - toString: function() { return this.str } - } -} - -const footprint = exports._footprint = (points, net_indexer, component_indexer, units, extra) => (config, name, point) => { + if (config === false) return '' // config sanitization - a.unexpected(config, name, ['what', 'params']) - const what = a.in(config.what, `${name}.what`, Object.keys(footprint_types)) - const fp = footprint_types[what] - const original_params = config.params || {} + a.unexpected(config, name, ['type', 'anchor', 'nets', 'anchors', 'params']) + const type = a.in(config.type, `${name}.type`, Object.keys(footprint_types)) + let anchor = anchor_lib.parse(config.anchor || {}, `${name}.anchor`, points, true, point)(units) + const nets = a.sane(config.nets || {}, `${name}.nets`, 'object')() + const anchors = a.sane(config.anchors || {}, `${name}.anchors`, 'object')() + const params = a.sane(config.params || {}, `${name}.params`, 'object')() - // param sanitization - // we unset the mirror config, as it would be an unexpected field - let params = u.deepcopy(original_params) - delete params.mirror - // but still override with it when applicable - if (point.meta.mirrored && original_params.mirror !== undefined) { - const mirror_overrides = a.sane(original_params.mirror, `${name}.params.mirror`, 'object')() - params = prep.extend(params, mirror_overrides) - } - a.unexpected(params, `${name}.params`, Object.keys(fp.params)) - - // parsing parameters + // basic setup + const fp = footprint_types[type] const parsed_params = {} - for (const [param_name, param_def] of Object.entries(fp.params)) { - // expand param definition shorthand - let parsed_def = param_def - let def_type = a.type(param_def)(units) - if (def_type == 'string') { - parsed_def = {type: 'string', value: param_def} - } else if (def_type == 'number') { - parsed_def = {type: 'number', value: a.mathnum(param_def)(units)} - } else if (def_type == 'boolean') { - parsed_def = {type: 'boolean', value: param_def} - } else if (def_type == 'array') { - parsed_def = {type: 'array', value: param_def} - } else if (def_type == 'object') { - // parsed param definitions also expand to an object - // so to detect whether this is an arbitrary object, - // we first have to make sure it's not an expanded param def - // (this has to be a heuristic, but should be pretty reliable) - const defarr = Object.keys(param_def) - const already_expanded = defarr.length == 2 && defarr.includes('type') && defarr.includes('value') - if (!already_expanded) { - parsed_def = {type: 'object', value: param_def} + // connecting other, non-net, non-anchor parameters + parsed_params.param = {} + for (const [param_name, param_value] of Object.entries(prep.extend(fp.params || {}, params))) { + let value = param_value + if (a.type(value)() == 'string' && value.startsWith('=') && point) { + const indirect = value.substring(1) + value = point.meta[indirect] + if (value === undefined) { + throw new Error(`Indirection "${name}.params.${param}" --> "${point.meta.name}.${indirect}" to undefined value!`) } - } else { - parsed_def = {type: 'net', value: undefined} - } - - // combine default value with potential user override - let value = params[param_name] !== undefined ? params[param_name] : parsed_def.value - const type = parsed_def.type - - // templating support, with conversion back to raw datatypes - const converters = { - string: v => v, - number: v => a.sane(v, `${name}.params.${param_name}`, 'number')(units), - boolean: v => v === 'true', - array: v => yaml.load(v), - object: v => yaml.load(v), - net: v => v, - anchor: v => yaml.load(v) - } - a.in(type, `${name}.params.${param_name}.type`, Object.keys(converters)) - if (a.type(value)() == 'string') { - value = u.template(value, point.meta) - value = converters[type](value) - } - - // type-specific postprocessing - if (['string', 'number', 'boolean', 'array', 'object'].includes(type)) { - parsed_params[param_name] = value - } else if (type == 'net') { - const net = a.sane(value, `${name}.params.${param_name}`, 'string')(units) - const index = net_indexer(net) - parsed_params[param_name] = net_obj(net, index) - } else { // anchor - let parsed_anchor = anchor(value, `${name}.params.${param_name}`, points, point)(units) - parsed_anchor.y = -parsed_anchor.y // kicad mirror, as per usual - parsed_params[param_name] = parsed_anchor } + parsed_params.param[param_name] = value } // reference - const component_ref = parsed_params.ref = component_indexer(parsed_params.designator || '_') + const component_ref = parsed_params.ref = component_indexer(parsed_params.param.class || '_') parsed_params.ref_hide = extra.references ? '' : 'hide' // footprint positioning - parsed_params.x = point.x - parsed_params.y = -point.y - parsed_params.r = point.r - parsed_params.rot = point.r // to be deprecated - parsed_params.xy = `${point.x} ${-point.y}` - parsed_params.at = `(at ${point.x} ${-point.y} ${point.r})` - - const internal_xyfunc = (x, y, resist) => { - const sign = resist ? 1 : (point.meta.mirrored ? -1 : 1) - return xy_obj(sign * x, y) + parsed_params.at = `(at ${anchor.x} ${-anchor.y} ${anchor.r})` + parsed_params.rot = anchor.r + parsed_params.xy = (x, y) => { + const new_anchor = anchor_lib.parse({ + shift: [x, -y] + }, '_internal_footprint_xy', points, true, anchor)(units) + return `${new_anchor.x} ${-new_anchor.y}` } - parsed_params.isxy = (x, y) => internal_xyfunc(x, y, false) - parsed_params.iaxy = (x, y) => internal_xyfunc(x, y, true) - const external_xyfunc = (x, y, resist) => { - const new_anchor = anchor({ - shift: [x, -y], - resist: resist - }, '_internal_footprint_xy', points, point)(units) - return xy_obj(new_anchor.x, -new_anchor.y) + // connecting nets + parsed_params.net = {} + for (const [net_name, net_value] of Object.entries(prep.extend(fp.nets || {}, nets))) { + let net = a.sane(net_value, `${name}.nets.${net_name}`, 'string')() + if (net.startsWith('=') && point) { + const indirect = net.substring(1) + net = point.meta[indirect] + net = a.sane(net, `${name}.nets.${net_name} --> ${point.meta.name}.${indirect}`, 'string')() + } + const index = net_indexer(net) + parsed_params.net[net_name] = { + name: net, + index: index, + str: `(net ${index} "${net}")` + } } - parsed_params.esxy = (x, y) => external_xyfunc(x, y, false) - parsed_params.eaxy = (x, y) => external_xyfunc(x, y, true) // allowing footprints to add dynamic nets parsed_params.local_net = suffix => { const net = `${component_ref}_${suffix}` const index = net_indexer(net) - return net_obj(net, index) + return { + name: net, + index: index, + str: `(net ${index} "${net}")` + } + } + + // parsing anchor-type parameters + parsed_params.anchors = {} + for (const [anchor_name, anchor_config] of Object.entries(prep.extend(fp.anchors || {}, anchors))) { + let parsed_anchor = anchor_lib.parse(anchor_config || {}, `${name}.anchors.${anchor_name}`, points, true, anchor)(units) + parsed_anchor.y = -parsed_anchor.y + parsed_params.anchors[anchor_name] = parsed_anchor } return fp.body(parsed_params) @@ -333,27 +273,21 @@ exports.parse = (config, points, outlines, units) => { } const footprints = [] - const footprint_factory = footprint(points, net_indexer, component_indexer, units, {references}) - // generate footprints + // key-level footprints + for (const [p_name, point] of Object.entries(points)) { + for (const [f_name, f] of Object.entries(point.meta.footprints || {})) { + footprints.push(footprint(f, `${p_name}.footprints.${f_name}`, points, point, net_indexer, component_indexer, units, {references})) + } + } + + // global one-off footprints if (a.type(pcb_config.footprints)() == 'array') { pcb_config.footprints = {...pcb_config.footprints} } - const footprints_config = a.sane(pcb_config.footprints || {}, `pcbs.${pcb_name}.footprints`, 'object')() - for (const [f_name, f] of Object.entries(footprints_config)) { - const name = `pcbs.${pcb_name}.footprints.${f_name}` - a.sane(f, name, 'object')() - const asym = a.asym(f.asym || 'source', `${name}.asym`) - const where = filter(f.where, `${name}.where`, points, units, asym) - const original_adjust = f.adjust // need to save, so the delete's don't get rid of it below - const adjust = start => anchor(original_adjust || {}, `${name}.adjust`, points, start)(units) - delete f.asym - delete f.where - delete f.adjust - for (const w of where) { - const aw = adjust(w.clone()) - footprints.push(footprint_factory(f, name, aw)) - } + const global_footprints = a.sane(pcb_config.footprints || {}, `pcbs.${pcb_name}.footprints`, 'object')() + for (const [gf_name, gf] of Object.entries(global_footprints)) { + footprints.push(footprint(gf, `pcbs.${pcb_name}.footprints.${gf_name}`, points, undefined, net_indexer, component_indexer, units, {references})) } // finalizing nets diff --git a/src/point.js b/src/point.js index 27e538a..41d2c85 100644 --- a/src/point.js +++ b/src/point.js @@ -24,8 +24,7 @@ module.exports = class Point { [this.x, this.y] = val } - shift(s, relative=true, resist=false) { - s[0] *= (!resist && this.meta.mirrored) ? -1 : 1 + shift(s, relative=true) { if (relative) { s = m.point.rotate(s, this.r) } @@ -34,11 +33,8 @@ module.exports = class Point { return this } - rotate(angle, origin=[0, 0], resist=false) { - angle *= (!resist && this.meta.mirrored) ? -1 : 1 - if (origin) { - this.p = m.point.rotate(this.p, angle, origin) - } + rotate(angle, origin=[0, 0]) { + this.p = m.point.rotate(this.p, angle, origin) this.r += angle return this } @@ -62,25 +58,8 @@ module.exports = class Point { return m.model.moveRelative(m.model.rotate(model, this.r), this.p) } - unposition(model) { - return m.model.rotate(m.model.moveRelative(model, [-this.x, -this.y]), -this.r) - } - rect(size=14) { - let rect = u.rect(size, size, [-size/2, -size/2]) + let rect = u.rect(size, size, [-size/2, -size/2], this.meta.mirrored) return this.position(rect) } - - angle(other) { - const dx = other.x - this.x - const dy = other.y - this.y - return -Math.atan2(dx, dy) * (180 / Math.PI) - } - - equals(other) { - return this.x === other.x - && this.y === other.y - && this.r === other.r - && JSON.stringify(this.meta) === JSON.stringify(other.meta) - } } diff --git a/src/points.js b/src/points.js index 8f50904..d2b7f6f 100644 --- a/src/points.js +++ b/src/points.js @@ -21,10 +21,10 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, a.unexpected(zone, `points.zones.${zone_name}`, ['columns', 'rows', 'key']) // the anchor comes from "above", because it needs other zones too (for references) - const cols = zone.columns = a.sane(zone.columns || {}, `points.zones.${zone_name}.columns`, 'object')() + const cols = a.sane(zone.columns || {}, `points.zones.${zone_name}.columns`, 'object')() const zone_wide_rows = a.sane(zone.rows || {}, `points.zones.${zone_name}.rows`, 'object')() for (const [key, val] of Object.entries(zone_wide_rows)) { - zone_wide_rows[key] = val || {} // no check yet, as it will be extended later + zone_wide_rows[key] = a.sane(val || {}, `points.zones.${zone_name}.rows.${key}`, 'object')() } const zone_wide_key = a.sane(zone.key || {}, `points.zones.${zone_name}.key`, 'object')() @@ -32,14 +32,11 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, const points = {} const rotations = [] - const zone_anchor = anchor.clone() // transferring the anchor rotation to "real" rotations rotations.push({ - angle: zone_anchor.r, - origin: zone_anchor.p + angle: anchor.r, + origin: anchor.p }) - // and now clear it from the anchor so that we don't apply it twice - zone_anchor.r = 0 // column layout @@ -56,15 +53,47 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, a.unexpected( col, `points.zones.${zone_name}.columns.${col_name}`, - ['rows', 'key'] + ['stagger', 'spread', 'rotate', 'origin', 'rows', 'row_overrides', 'key'] ) + col.stagger = a.sane( + col.stagger || 0, + `points.zones.${zone_name}.columns.${col_name}.stagger`, + 'number' + )(units) + col.spread = a.sane( + col.spread !== undefined ? col.spread : (first_col ? 0 : 'u'), + `points.zones.${zone_name}.columns.${col_name}.spread`, + 'number' + )(units) + col.rotate = a.sane( + col.rotate || 0, + `points.zones.${zone_name}.columns.${col_name}.rotate`, + 'number' + )(units) + col.origin = a.xy( + col.origin || [0, 0], + `points.zones.${zone_name}.columns.${col_name}.origin` + )(units) + let override = false col.rows = a.sane( col.rows || {}, `points.zones.${zone_name}.columns.${col_name}.rows`, 'object' )() + if (col.row_overrides) { + override = true + col.rows = a.sane( + col.row_overrides, + `points.zones.${zone_name}.columns.${col_name}.row_overrides`, + 'object' + )() + } for (const [key, val] of Object.entries(col.rows)) { - col.rows[key] = val || {} // again, no check yet, as it will be extended later + col.rows[key] = a.sane( + val || {}, + `points.zones.${zone_name}.columns.${col_name}.rows.${key}`, + 'object' + )() } col.key = a.sane( col.key || {}, @@ -72,33 +101,49 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, 'object' )() - // combining row data from zone-wide defs and col-specific defs + // propagating object key to name field - const actual_rows = Object.keys(prep.extend(zone_wide_rows, col.rows)) + col.name = col_name + + // combining row data from zone-wide defs and col-specific defs + // (while also handling potential overrides) + + const actual_rows = override ? Object.keys(col.rows) + : Object.keys(prep.extend(zone_wide_rows, col.rows)) if (!actual_rows.length) { actual_rows.push('default') } + // setting up column-level anchor + + anchor.x += col.spread + anchor.y += col.stagger + const col_anchor = anchor.clone() + // clear potential rotations, as they will get re-applied anyway + // and we don't want to apply them twice... + col_anchor.r = 0 + + // applying col-level rotation (cumulatively, for the next columns as well) + + if (col.rotate) { + push_rotation( + rotations, + col.rotate, + col_anchor.clone().shift(col.origin, false).p + ) + } + // getting key config through the 5-level extension const keys = [] const default_key = { - stagger: units.$default_stagger, - spread: units.$default_spread, - splay: units.$default_splay, - origin: [0, 0], - orient: 0, shift: [0, 0], rotate: 0, - adjust: {}, - width: units.$default_width, - height: units.$default_height, - padding: units.$default_padding, - autobind: units.$default_autobind, + padding: 'u', + width: 1, + height: 1, skip: false, - asym: 'both', - colrow: '{{col.name}}_{{row}}', - name: '{{zone.name}}_{{colrow}}' + asym: 'both' } for (const row of actual_rows) { const key = prep.extend( @@ -110,80 +155,32 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, col.rows[row] || {} ) - key.zone = zone - key.zone.name = zone_name - key.col = col - key.col.name = col_name - key.row = row - - key.stagger = a.sane(key.stagger, `${key.name}.stagger`, 'number')(units) - key.spread = a.sane(key.spread, `${key.name}.spread`, 'number')(units) - key.splay = a.sane(key.splay, `${key.name}.splay`, 'number')(units) - key.origin = a.xy(key.origin, `${key.name}.origin`)(units) - key.orient = a.sane(key.orient, `${key.name}.orient`, 'number')(units) + key.name = key.name || `${zone_name}_${col_name}_${row}` + key.colrow = `${col_name}_${row}` key.shift = a.xy(key.shift, `${key.name}.shift`)(units) key.rotate = a.sane(key.rotate, `${key.name}.rotate`, 'number')(units) key.width = a.sane(key.width, `${key.name}.width`, 'number')(units) key.height = a.sane(key.height, `${key.name}.height`, 'number')(units) key.padding = a.sane(key.padding, `${key.name}.padding`, 'number')(units) key.skip = a.sane(key.skip, `${key.name}.skip`, 'boolean')() - key.asym = a.asym(key.asym, `${key.name}.asym`) - - // templating support - for (const [k, v] of Object.entries(key)) { - if (a.type(v)(units) == 'string') { - key[k] = u.template(v, key) - } - } - + key.asym = a.in(key.asym, `${key.name}.asym`, ['left', 'right', 'both']) + key.col = col + key.row = row keys.push(key) } - // setting up column-level anchor - if (!first_col) { - zone_anchor.x += keys[0].spread - } - zone_anchor.y += keys[0].stagger - const col_anchor = zone_anchor.clone() - - // applying col-level rotation (cumulatively, for the next columns as well) - - if (keys[0].splay) { - push_rotation( - rotations, - keys[0].splay, - col_anchor.clone().shift(keys[0].origin, false).p - ) - } - // actually laying out keys - let running_anchor = col_anchor.clone() - for (const r of rotations) { - running_anchor.rotate(r.angle, r.origin) - } for (const key of keys) { - - // copy the current column anchor - let point = running_anchor.clone() - - // apply cumulative per-key adjustments - point.r += key.orient + let point = col_anchor.clone() + for (const r of rotations) { + point.rotate(r.angle, r.origin) + } point.shift(key.shift) point.r += key.rotate - - // commit running anchor - running_anchor = point.clone() - - // apply independent adjustments - point = anchor_lib.parse(key.adjust, `${key.name}.adjust`, {}, point)(units) - - // save new key point.meta = key points[key.name] = point - - // advance the running anchor to the next position - running_anchor.shift([0, key.padding]) + col_anchor.y += key.padding } first_col = false @@ -194,7 +191,7 @@ const render_zone = exports._render_zone = (zone_name, zone, anchor, global_key, const parse_axis = exports._parse_axis = (config, name, points, units) => { if (!['number', 'undefined'].includes(a.type(config)(units))) { - const mirror_obj = a.sane(config, name, 'object')() + const mirror_obj = a.sane(config || {}, name, 'object')() const distance = a.sane(mirror_obj.distance || 0, `${name}.distance`, 'number')(units) delete mirror_obj.distance let axis = anchor_lib.parse(mirror_obj, name, points)(units).x @@ -204,91 +201,21 @@ const parse_axis = exports._parse_axis = (config, name, points, units) => { } const perform_mirror = exports._perform_mirror = (point, axis) => { - point.meta.mirrored = false - if (point.meta.asym == 'source') return ['', null] - const mp = point.clone().mirror(axis) - const mirrored_name = `mirror_${point.meta.name}` - mp.meta = prep.extend(mp.meta, mp.meta.mirror || {}) - mp.meta.name = mirrored_name - mp.meta.colrow = `mirror_${mp.meta.colrow}` - mp.meta.mirrored = true - if (point.meta.asym == 'clone') { - point.meta.skip = true - } - return [mirrored_name, mp] -} - -const perform_autobind = exports._perform_autobind = (points, units) => { - - const bounds = {} - const col_lists = {} - const mirrorzone = p => (p.meta.mirrored ? 'mirror_' : '') + p.meta.zone.name - - // round one: get column upper/lower bounds and per-zone column lists - for (const p of Object.values(points)) { - - const zone = mirrorzone(p) - const col = p.meta.col.name - - if (!bounds[zone]) bounds[zone] = {} - if (!bounds[zone][col]) bounds[zone][col] = {min: Infinity, max: -Infinity} - if (!col_lists[zone]) col_lists[zone] = Object.keys(p.meta.zone.columns) - - bounds[zone][col].min = Math.min(bounds[zone][col].min, p.y) - bounds[zone][col].max = Math.max(bounds[zone][col].max, p.y) - } - - // round two: apply autobind as appropriate - for (const p of Object.values(points)) { - - const autobind = a.sane(p.meta.autobind, `${p.meta.name}.autobind`, 'number')(units) - if (!autobind) continue - - const zone = mirrorzone(p) - const col = p.meta.col.name - const col_list = col_lists[zone] - const col_bounds = bounds[zone][col] - - - // specify default as -1, so we can recognize where it was left undefined even after number-ification - const bind = p.meta.bind = a.trbl(p.meta.bind, `${p.meta.name}.bind`, -1)(units) - - // up - if (bind[0] == -1) { - if (p.y < col_bounds.max) bind[0] = autobind - else bind[0] = 0 - } - - // down - if (bind[2] == -1) { - if (p.y > col_bounds.min) bind[2] = autobind - else bind[2] = 0 - } - - // left - if (bind[3] == -1) { - bind[3] = 0 - const col_index = col_list.indexOf(col) - if (col_index > 0) { - const left = bounds[zone][col_list[col_index - 1]] - if (left && p.y >= left.min && p.y <= left.max) { - bind[3] = autobind - } - } - } - - // right - if (bind[1] == -1) { - bind[1] = 0 - const col_index = col_list.indexOf(col) - if (col_index < col_list.length - 1) { - const right = bounds[zone][col_list[col_index + 1]] - if (right && p.y >= right.min && p.y <= right.max) { - bind[1] = autobind - } - } - } + if (axis !== undefined) { + point.meta.mirrored = false + if (point.meta.asym == 'left') return ['', null] + const mp = point.clone().mirror(axis) + const mirrored_name = `mirror_${point.meta.name}` + mp.meta = prep.extend(mp.meta, mp.meta.mirror || {}) + mp.meta.name = mirrored_name + mp.meta.colrow = `mirror_${mp.meta.colrow}` + mp.meta.mirrored = true + if (point.meta.asym == 'right') { + point.meta.skip = true + } + return [mirrored_name, mp] } + return ['', null] } exports.parse = (config, units) => { @@ -300,15 +227,15 @@ exports.parse = (config, units) => { const global_rotate = a.sane(config.rotate || 0, 'points.rotate', 'number')(units) const global_mirror = config.mirror let points = {} + let mirrored_points = {} + let all_points = {} + // rendering zones for (let [zone_name, zone] of Object.entries(zones)) { - // zone sanitization - zone = a.sane(zone || {}, `points.zones.${zone_name}`, 'object')() - // extracting keys that are handled here, not at the zone render level - const anchor = anchor_lib.parse(zone.anchor || {}, `points.zones.${zone_name}.anchor`, points)(units) + const anchor = anchor_lib.parse(zone.anchor || {}, `points.zones.${zone_name}.anchor`, all_points)(units) const rotate = a.sane(zone.rotate || 0, `points.zones.${zone_name}.rotate`, 'number')(units) const mirror = zone.mirror delete zone.anchor @@ -316,17 +243,7 @@ exports.parse = (config, units) => { delete zone.mirror // creating new points - let new_points = render_zone(zone_name, zone, anchor, global_key, units) - - // simplifying the names in individual point "zones" and single-key columns - while (Object.keys(new_points).some(k => k.endsWith('_default'))) { - for (const key of Object.keys(new_points).filter(k => k.endsWith('_default'))) { - const new_key = key.slice(0, -8) - new_points[new_key] = new_points[key] - new_points[new_key].meta.name = new_key - delete new_points[key] - } - } + const new_points = render_zone(zone_name, zone, anchor, global_key, units) // adjusting new points for (const [new_name, new_point] of Object.entries(new_points)) { @@ -344,21 +261,24 @@ exports.parse = (config, units) => { // adding new points so that they can be referenced from now on points = Object.assign(points, new_points) + all_points = Object.assign(all_points, points) // per-zone mirroring for the new keys - const axis = parse_axis(mirror, `points.zones.${zone_name}.mirror`, points, units) - if (axis !== undefined) { - const mirrored_points = {} + const axis = parse_axis(mirror, `points.zones.${zone_name}.mirror`, all_points, units) + if (axis) { for (const new_point of Object.values(new_points)) { const [mname, mp] = perform_mirror(new_point, axis) if (mp) { mirrored_points[mname] = mp + all_points[mname] = mp } } - points = Object.assign(points, mirrored_points) } } + // merging regular and early-mirrored points + points = Object.assign(points, mirrored_points) + // applying global rotation for (const point of Object.values(points)) { if (global_rotate) { @@ -370,13 +290,15 @@ exports.parse = (config, units) => { const global_axis = parse_axis(global_mirror, `points.mirror`, points, units) const global_mirrored_points = {} for (const point of Object.values(points)) { - if (global_axis !== undefined && point.meta.mirrored === undefined) { + if (global_axis && point.mirrored === undefined) { const [mname, mp] = perform_mirror(point, global_axis) if (mp) { global_mirrored_points[mname] = mp } } } + + // merging the global-mirrored points as well points = Object.assign(points, global_mirrored_points) // removing temporary points @@ -386,18 +308,17 @@ exports.parse = (config, units) => { filtered[k] = p } - // apply autobind - perform_autobind(filtered, units) - // done return filtered } exports.visualize = (points, units) => { const models = {} + const x_unit = units.visual_x || (units.u - 1) + const y_unit = units.visual_y || (units.u - 1) for (const [pname, p] of Object.entries(points)) { - const w = p.meta.width - const h = p.meta.height + const w = p.meta.width * x_unit + const h = p.meta.height * y_unit const rect = u.rect(w, h, [-w/2, -h/2]) models[pname] = p.position(rect) } diff --git a/src/prepare.js b/src/prepare.js index 48edd7f..6ece3e8 100644 --- a/src/prepare.js +++ b/src/prepare.js @@ -42,14 +42,11 @@ const traverse = exports.traverse = (config, root, breadcrumbs, op) => { } return result } else if (a.type(config)() == 'array') { - // needed so that arrays can set output the same way as objects within ops - const dummy = {} const result = [] let index = 0 for (const val of config) { breadcrumbs.push(`[${index}]`) - op(dummy, 'dummykey', traverse(val, root, breadcrumbs, op), root, breadcrumbs) - result[index] = dummy.dummykey + result[index] = traverse(val, root, breadcrumbs, op) breadcrumbs.pop() index++ } @@ -76,7 +73,7 @@ exports.inherit = config => traverse(config, config, [], (target, key, val, root candidates = candidates.concat(parents) list.unshift(other) } - val = extend.apply(null, list) + val = extend.apply(this, list) delete val.$extends } target[key] = val diff --git a/src/units.js b/src/units.js index 6831192..f0b1cef 100644 --- a/src/units.js +++ b/src/units.js @@ -5,14 +5,7 @@ const default_units = { U: 19.05, u: 19, cx: 18, - cy: 17, - $default_stagger: 0, - $default_spread: 'u', - $default_splay: 0, - $default_height: 'u-1', - $default_width: 'u-1', - $default_padding: 'u', - $default_autobind: 10 + cy: 17 } exports.parse = (config = {}) => { diff --git a/src/utils.js b/src/utils.js index 34a852d..4955cf8 100644 --- a/src/utils.js +++ b/src/utils.js @@ -18,20 +18,6 @@ const deep = exports.deep = (obj, key, val) => { return obj } -exports.template = (str, vals={}) => { - const regex = /\{\{([^}]*)\}\}/g - let res = str - let shift = 0 - for (const match of str.matchAll(regex)) { - const replacement = (deep(vals, match[1]) || '') + '' - res = res.substring(0, match.index + shift) - + replacement - + res.substring(match.index + shift + match[0].length) - shift += replacement.length - match[0].length - } - return res -} - const eq = exports.eq = (a=[], b=[]) => { return a[0] === b[0] && a[1] === b[1] } @@ -68,23 +54,9 @@ exports.poly = (arr) => { return res } -exports.bbox = (arr) => { - let minx = Infinity - let miny = Infinity - let maxx = -Infinity - let maxy = -Infinity - for (const p of arr) { - minx = Math.min(minx, p[0]) - miny = Math.min(miny, p[1]) - maxx = Math.max(maxx, p[0]) - maxy = Math.max(maxy, p[1]) - } - return {low: [minx, miny], high: [maxx, maxy]} -} +const farPoint = [1234.1234, 2143.56789] -const farPoint = exports.farPoint = [1234.1234, 2143.56789] - -exports.union = exports.add = (a, b) => { +exports.union = (a, b) => { return m.model.combine(a, b, false, true, false, true, { farPoint }) @@ -108,29 +80,4 @@ exports.stack = (a, b) => { a, b } } -} - -const semver = exports.semver = (str, name='') => { - let main = str.split('-')[0] - if (main.startsWith('v')) { - main = main.substring(1) - } - while (main.split('.').length < 3) { - main += '.0' - } - if (/^\d+\.\d+\.\d+$/.test(main)) { - const parts = main.split('.').map(part => parseInt(part, 10)) - return {major: parts[0], minor: parts[1], patch: parts[2]} - } else throw new Error(`Invalid semver "${str}" at ${name}!`) -} - -const satisfies = exports.satisfies = (current, expected) => { - if (current.major === undefined) current = semver(current) - if (expected.major === undefined) expected = semver(expected) - return current.major === expected.major && ( - current.minor > expected.minor || ( - current.minor === expected.minor && - current.patch >= expected.patch - ) - ) } \ No newline at end of file diff --git a/test/cases/001_cube.yaml b/test/cases/001_cube.yaml new file mode 100644 index 0000000..ff8aaa5 --- /dev/null +++ b/test/cases/001_cube.yaml @@ -0,0 +1,16 @@ +points: + zones: + arst: + columns: + c1: + rows: + r1: +outlines: + exports: + square: + - type: rectangle + size: [5, 5] +cases: + cube: + - name: square + extrude: 5 \ No newline at end of file diff --git a/test/cases/001_cube___cases_cube_stl.stl b/test/cases/001_cube___cases_cube_stl.stl new file mode 100644 index 0000000..038a3bc --- /dev/null +++ b/test/cases/001_cube___cases_cube_stl.stl @@ -0,0 +1,86 @@ +solid csg.js +facet normal 0 0 -1 +outer loop +vertex 0 5 0 +vertex 5 5 0 +vertex 5 0 0 +endloop +endfacet +facet normal 0 0 -1 +outer loop +vertex 0 5 0 +vertex 5 0 0 +vertex 0 0 0 +endloop +endfacet +facet normal 0 0 1 +outer loop +vertex 0 5 5 +vertex 0 0 5 +vertex 5 0 5 +endloop +endfacet +facet normal 0 0 1 +outer loop +vertex 0 5 5 +vertex 5 0 5 +vertex 5 5 5 +endloop +endfacet +facet normal 0 -1 0 +outer loop +vertex 5 0 0 +vertex 5 0 5 +vertex 0 0 5 +endloop +endfacet +facet normal 0 -1 0 +outer loop +vertex 5 0 0 +vertex 0 0 5 +vertex 0 0 0 +endloop +endfacet +facet normal 1 0 0 +outer loop +vertex 5 5 0 +vertex 5 5 5 +vertex 5 0 5 +endloop +endfacet +facet normal 1 0 0 +outer loop +vertex 5 5 0 +vertex 5 0 5 +vertex 5 0 0 +endloop +endfacet +facet normal 0 1 0 +outer loop +vertex 5 5 5 +vertex 5 5 0 +vertex 0 5 0 +endloop +endfacet +facet normal 0 1 0 +outer loop +vertex 5 5 5 +vertex 0 5 0 +vertex 0 5 5 +endloop +endfacet +facet normal -1 0 0 +outer loop +vertex 0 5 5 +vertex 0 5 0 +vertex 0 0 0 +endloop +endfacet +facet normal -1 0 0 +outer loop +vertex 0 5 5 +vertex 0 0 0 +vertex 0 0 5 +endloop +endfacet +endsolid csg.js diff --git a/test/cases/cube.yaml b/test/cases/cube.yaml deleted file mode 100644 index 5b3993f..0000000 --- a/test/cases/cube.yaml +++ /dev/null @@ -1,10 +0,0 @@ -points.zones.matrix: {} -outlines: - square: - - what: rectangle - where: true - size: [5, 5] -cases: - cube: - - name: square - extrude: 5 \ No newline at end of file diff --git a/test/cases/cube___cases_cube_jscad.jscad b/test/cases/cube___cases_cube_jscad.jscad deleted file mode 100644 index 349bb42..0000000 --- a/test/cases/cube___cases_cube_jscad.jscad +++ /dev/null @@ -1,36 +0,0 @@ -function square_extrude_5_outline_fn(){ - return new CSG.Path2D([[-2.5,-2.5],[2.5,-2.5]]).appendPoint([2.5,2.5]).appendPoint([-2.5,2.5]).appendPoint([-2.5,-2.5]).close().innerToCAG() -.extrude({ offset: [0, 0, 5] }); -} - - - - - function cube_case_fn() { - - - // creating part 0 of case cube - let cube__part_0 = square_extrude_5_outline_fn(); - - // make sure that rotations are relative - let cube__part_0_bounds = cube__part_0.getBounds(); - let cube__part_0_x = cube__part_0_bounds[0].x + (cube__part_0_bounds[1].x - cube__part_0_bounds[0].x) / 2 - let cube__part_0_y = cube__part_0_bounds[0].y + (cube__part_0_bounds[1].y - cube__part_0_bounds[0].y) / 2 - cube__part_0 = translate([-cube__part_0_x, -cube__part_0_y, 0], cube__part_0); - cube__part_0 = rotate([0,0,0], cube__part_0); - cube__part_0 = translate([cube__part_0_x, cube__part_0_y, 0], cube__part_0); - - cube__part_0 = translate([0,0,0], cube__part_0); - let result = cube__part_0; - - - return result; - } - - - - function main() { - return cube_case_fn(); - } - - \ No newline at end of file diff --git a/test/cases/operations.yaml b/test/cases/operations.yaml deleted file mode 100644 index 47984f1..0000000 --- a/test/cases/operations.yaml +++ /dev/null @@ -1,36 +0,0 @@ -points.zones.matrix: {} -outlines: - _square: - - what: rectangle - where: true - size: [8, 8] - _circle: - - what: circle - where: true - radius: 3 -cases: - _cube: - - name: _square - extrude: 8 - _cylinder_one: - - name: _circle - extrude: 8 - _subtract: - target: - name: _cube - what: case - tool: - name: _cylinder_one - what: case - operation: subtract - _cylinder_two: - - name: _circle - extrude: 8 - shift: [0,4,4] - rotate: [90,0,0] - _flat_square: - - "_square" - combination: - - "_subtract" - - "~_cylinder_two" - - "+_flat_square" diff --git a/test/cases/operations___cases_combination_jscad.jscad b/test/cases/operations___cases_combination_jscad.jscad deleted file mode 100644 index 1fb8cb8..0000000 --- a/test/cases/operations___cases_combination_jscad.jscad +++ /dev/null @@ -1,211 +0,0 @@ -function _square_extrude_8_outline_fn(){ - return new CSG.Path2D([[-4,-4],[4,-4]]).appendPoint([4,4]).appendPoint([-4,4]).appendPoint([-4,-4]).close().innerToCAG() -.extrude({ offset: [0, 0, 8] }); -} - - -function _circle_extrude_8_outline_fn(){ - return CAG.circle({"center":[0,0],"radius":3}) -.extrude({ offset: [0, 0, 8] }); -} - - -function _square_extrude_1_outline_fn(){ - return new CSG.Path2D([[-4,-4],[4,-4]]).appendPoint([4,4]).appendPoint([-4,4]).appendPoint([-4,-4]).close().innerToCAG() -.extrude({ offset: [0, 0, 1] }); -} - - - - - function _subtract_case_fn() { - - - // creating part target of case _subtract - let _subtract__part_target = _cube_case_fn(); - - // make sure that rotations are relative - let _subtract__part_target_bounds = _subtract__part_target.getBounds(); - let _subtract__part_target_x = _subtract__part_target_bounds[0].x + (_subtract__part_target_bounds[1].x - _subtract__part_target_bounds[0].x) / 2 - let _subtract__part_target_y = _subtract__part_target_bounds[0].y + (_subtract__part_target_bounds[1].y - _subtract__part_target_bounds[0].y) / 2 - _subtract__part_target = translate([-_subtract__part_target_x, -_subtract__part_target_y, 0], _subtract__part_target); - _subtract__part_target = rotate([0,0,0], _subtract__part_target); - _subtract__part_target = translate([_subtract__part_target_x, _subtract__part_target_y, 0], _subtract__part_target); - - _subtract__part_target = translate([0,0,0], _subtract__part_target); - let result = _subtract__part_target; - - - - // creating part tool of case _subtract - let _subtract__part_tool = _cylinder_one_case_fn(); - - // make sure that rotations are relative - let _subtract__part_tool_bounds = _subtract__part_tool.getBounds(); - let _subtract__part_tool_x = _subtract__part_tool_bounds[0].x + (_subtract__part_tool_bounds[1].x - _subtract__part_tool_bounds[0].x) / 2 - let _subtract__part_tool_y = _subtract__part_tool_bounds[0].y + (_subtract__part_tool_bounds[1].y - _subtract__part_tool_bounds[0].y) / 2 - _subtract__part_tool = translate([-_subtract__part_tool_x, -_subtract__part_tool_y, 0], _subtract__part_tool); - _subtract__part_tool = rotate([0,0,0], _subtract__part_tool); - _subtract__part_tool = translate([_subtract__part_tool_x, _subtract__part_tool_y, 0], _subtract__part_tool); - - _subtract__part_tool = translate([0,0,0], _subtract__part_tool); - result = result.subtract(_subtract__part_tool); - - - return result; - } - - - - function _cube_case_fn() { - - - // creating part 0 of case _cube - let _cube__part_0 = _square_extrude_8_outline_fn(); - - // make sure that rotations are relative - let _cube__part_0_bounds = _cube__part_0.getBounds(); - let _cube__part_0_x = _cube__part_0_bounds[0].x + (_cube__part_0_bounds[1].x - _cube__part_0_bounds[0].x) / 2 - let _cube__part_0_y = _cube__part_0_bounds[0].y + (_cube__part_0_bounds[1].y - _cube__part_0_bounds[0].y) / 2 - _cube__part_0 = translate([-_cube__part_0_x, -_cube__part_0_y, 0], _cube__part_0); - _cube__part_0 = rotate([0,0,0], _cube__part_0); - _cube__part_0 = translate([_cube__part_0_x, _cube__part_0_y, 0], _cube__part_0); - - _cube__part_0 = translate([0,0,0], _cube__part_0); - let result = _cube__part_0; - - - return result; - } - - - - function _cylinder_one_case_fn() { - - - // creating part 0 of case _cylinder_one - let _cylinder_one__part_0 = _circle_extrude_8_outline_fn(); - - // make sure that rotations are relative - let _cylinder_one__part_0_bounds = _cylinder_one__part_0.getBounds(); - let _cylinder_one__part_0_x = _cylinder_one__part_0_bounds[0].x + (_cylinder_one__part_0_bounds[1].x - _cylinder_one__part_0_bounds[0].x) / 2 - let _cylinder_one__part_0_y = _cylinder_one__part_0_bounds[0].y + (_cylinder_one__part_0_bounds[1].y - _cylinder_one__part_0_bounds[0].y) / 2 - _cylinder_one__part_0 = translate([-_cylinder_one__part_0_x, -_cylinder_one__part_0_y, 0], _cylinder_one__part_0); - _cylinder_one__part_0 = rotate([0,0,0], _cylinder_one__part_0); - _cylinder_one__part_0 = translate([_cylinder_one__part_0_x, _cylinder_one__part_0_y, 0], _cylinder_one__part_0); - - _cylinder_one__part_0 = translate([0,0,0], _cylinder_one__part_0); - let result = _cylinder_one__part_0; - - - return result; - } - - - - function _cylinder_two_case_fn() { - - - // creating part 0 of case _cylinder_two - let _cylinder_two__part_0 = _circle_extrude_8_outline_fn(); - - // make sure that rotations are relative - let _cylinder_two__part_0_bounds = _cylinder_two__part_0.getBounds(); - let _cylinder_two__part_0_x = _cylinder_two__part_0_bounds[0].x + (_cylinder_two__part_0_bounds[1].x - _cylinder_two__part_0_bounds[0].x) / 2 - let _cylinder_two__part_0_y = _cylinder_two__part_0_bounds[0].y + (_cylinder_two__part_0_bounds[1].y - _cylinder_two__part_0_bounds[0].y) / 2 - _cylinder_two__part_0 = translate([-_cylinder_two__part_0_x, -_cylinder_two__part_0_y, 0], _cylinder_two__part_0); - _cylinder_two__part_0 = rotate([90,0,0], _cylinder_two__part_0); - _cylinder_two__part_0 = translate([_cylinder_two__part_0_x, _cylinder_two__part_0_y, 0], _cylinder_two__part_0); - - _cylinder_two__part_0 = translate([0,4,4], _cylinder_two__part_0); - let result = _cylinder_two__part_0; - - - return result; - } - - - - function _flat_square_case_fn() { - - - // creating part 0 of case _flat_square - let _flat_square__part_0 = _square_extrude_1_outline_fn(); - - // make sure that rotations are relative - let _flat_square__part_0_bounds = _flat_square__part_0.getBounds(); - let _flat_square__part_0_x = _flat_square__part_0_bounds[0].x + (_flat_square__part_0_bounds[1].x - _flat_square__part_0_bounds[0].x) / 2 - let _flat_square__part_0_y = _flat_square__part_0_bounds[0].y + (_flat_square__part_0_bounds[1].y - _flat_square__part_0_bounds[0].y) / 2 - _flat_square__part_0 = translate([-_flat_square__part_0_x, -_flat_square__part_0_y, 0], _flat_square__part_0); - _flat_square__part_0 = rotate([0,0,0], _flat_square__part_0); - _flat_square__part_0 = translate([_flat_square__part_0_x, _flat_square__part_0_y, 0], _flat_square__part_0); - - _flat_square__part_0 = translate([0,0,0], _flat_square__part_0); - let result = _flat_square__part_0; - - - return result; - } - - - - function combination_case_fn() { - - - // creating part 0 of case combination - let combination__part_0 = _subtract_case_fn(); - - // make sure that rotations are relative - let combination__part_0_bounds = combination__part_0.getBounds(); - let combination__part_0_x = combination__part_0_bounds[0].x + (combination__part_0_bounds[1].x - combination__part_0_bounds[0].x) / 2 - let combination__part_0_y = combination__part_0_bounds[0].y + (combination__part_0_bounds[1].y - combination__part_0_bounds[0].y) / 2 - combination__part_0 = translate([-combination__part_0_x, -combination__part_0_y, 0], combination__part_0); - combination__part_0 = rotate([0,0,0], combination__part_0); - combination__part_0 = translate([combination__part_0_x, combination__part_0_y, 0], combination__part_0); - - combination__part_0 = translate([0,0,0], combination__part_0); - let result = combination__part_0; - - - - // creating part 1 of case combination - let combination__part_1 = _cylinder_two_case_fn(); - - // make sure that rotations are relative - let combination__part_1_bounds = combination__part_1.getBounds(); - let combination__part_1_x = combination__part_1_bounds[0].x + (combination__part_1_bounds[1].x - combination__part_1_bounds[0].x) / 2 - let combination__part_1_y = combination__part_1_bounds[0].y + (combination__part_1_bounds[1].y - combination__part_1_bounds[0].y) / 2 - combination__part_1 = translate([-combination__part_1_x, -combination__part_1_y, 0], combination__part_1); - combination__part_1 = rotate([0,0,0], combination__part_1); - combination__part_1 = translate([combination__part_1_x, combination__part_1_y, 0], combination__part_1); - - combination__part_1 = translate([0,0,0], combination__part_1); - result = result.intersect(combination__part_1); - - - - // creating part 2 of case combination - let combination__part_2 = _flat_square_case_fn(); - - // make sure that rotations are relative - let combination__part_2_bounds = combination__part_2.getBounds(); - let combination__part_2_x = combination__part_2_bounds[0].x + (combination__part_2_bounds[1].x - combination__part_2_bounds[0].x) / 2 - let combination__part_2_y = combination__part_2_bounds[0].y + (combination__part_2_bounds[1].y - combination__part_2_bounds[0].y) / 2 - combination__part_2 = translate([-combination__part_2_x, -combination__part_2_y, 0], combination__part_2); - combination__part_2 = rotate([0,0,0], combination__part_2); - combination__part_2 = translate([combination__part_2_x, combination__part_2_y, 0], combination__part_2); - - combination__part_2 = translate([0,0,0], combination__part_2); - result = result.union(combination__part_2); - - - return result; - } - - - - function main() { - return combination_case_fn(); - } - - \ No newline at end of file diff --git a/test/cli/bad_bundle/command b/test/cli/bad_bundle/command deleted file mode 100644 index 28a5b7a..0000000 --- a/test/cli/bad_bundle/command +++ /dev/null @@ -1 +0,0 @@ -node src/cli.js test/ diff --git a/test/cli/bad_bundle/error b/test/cli/bad_bundle/error deleted file mode 100644 index 0b991c8..0000000 --- a/test/cli/bad_bundle/error +++ /dev/null @@ -1 +0,0 @@ -Could not read config file "test/"! \ No newline at end of file diff --git a/test/cli/bad_input/error b/test/cli/bad_input/error index e922a13..2ed6722 100644 --- a/test/cli/bad_input/error +++ b/test/cli/bad_input/error @@ -1 +1 @@ -Error: Input doesn't resolve into an object! \ No newline at end of file +Error: Input doesn't resolve into an object! diff --git a/test/cli/big/log b/test/cli/big/log index 4c9a55a..a44a320 100644 --- a/test/cli/big/log +++ b/test/cli/big/log @@ -5,7 +5,7 @@ Preprocessing input... Calculating variables... Parsing points... Generating outlines... -Modeling cases... +Extruding cases... Scaffolding PCBs... Cleaning output folder... Writing output to disk... diff --git a/test/cli/big/reference/cases/_export.jscad b/test/cli/big/reference/cases/_export.jscad index bb85f72..a98416f 100644 --- a/test/cli/big/reference/cases/_export.jscad +++ b/test/cli/big/reference/cases/_export.jscad @@ -1,4 +1,4 @@ -function export_extrude_1_outline_fn(){ +function export_outline_fn(){ return new CSG.Path2D([[-9,-9],[9,-9]]).appendPoint([9,9]).appendPoint([-9,9]).appendPoint([-9,-9]).close().innerToCAG() .extrude({ offset: [0, 0, 1] }); } @@ -10,7 +10,7 @@ function export_extrude_1_outline_fn(){ // creating part 0 of case _export - let _export__part_0 = export_extrude_1_outline_fn(); + let _export__part_0 = export_outline_fn(); // make sure that rotations are relative let _export__part_0_bounds = _export__part_0.getBounds(); diff --git a/test/cli/big/reference/cases/_export.stl b/test/cli/big/reference/cases/_export.stl new file mode 100644 index 0000000..0cdcee2 --- /dev/null +++ b/test/cli/big/reference/cases/_export.stl @@ -0,0 +1,86 @@ +solid csg.js +facet normal 0 0 -1 +outer loop +vertex -9 9 0 +vertex 9 9 0 +vertex 9 -9 0 +endloop +endfacet +facet normal 0 0 -1 +outer loop +vertex -9 9 0 +vertex 9 -9 0 +vertex -9 -9 0 +endloop +endfacet +facet normal 0 0 1 +outer loop +vertex -9 9 1 +vertex -9 -9 1 +vertex 9 -9 1 +endloop +endfacet +facet normal 0 0 1 +outer loop +vertex -9 9 1 +vertex 9 -9 1 +vertex 9 9 1 +endloop +endfacet +facet normal 0 -1 0 +outer loop +vertex 9 -9 0 +vertex 9 -9 1 +vertex -9 -9 1 +endloop +endfacet +facet normal 0 -1 0 +outer loop +vertex 9 -9 0 +vertex -9 -9 1 +vertex -9 -9 0 +endloop +endfacet +facet normal 1 0 0 +outer loop +vertex 9 9 0 +vertex 9 9 1 +vertex 9 -9 1 +endloop +endfacet +facet normal 1 0 0 +outer loop +vertex 9 9 0 +vertex 9 -9 1 +vertex 9 -9 0 +endloop +endfacet +facet normal 0 1 0 +outer loop +vertex 9 9 1 +vertex 9 9 0 +vertex -9 9 0 +endloop +endfacet +facet normal 0 1 0 +outer loop +vertex 9 9 1 +vertex -9 9 0 +vertex -9 9 1 +endloop +endfacet +facet normal -1 0 0 +outer loop +vertex -9 9 1 +vertex -9 9 0 +vertex -9 -9 0 +endloop +endfacet +facet normal -1 0 0 +outer loop +vertex -9 9 1 +vertex -9 -9 0 +vertex -9 -9 1 +endloop +endfacet +endsolid csg.js diff --git a/test/cli/big/reference/cases/export.jscad b/test/cli/big/reference/cases/export.jscad index 19511e7..6ccb677 100644 --- a/test/cli/big/reference/cases/export.jscad +++ b/test/cli/big/reference/cases/export.jscad @@ -1,4 +1,4 @@ -function export_extrude_1_outline_fn(){ +function export_outline_fn(){ return new CSG.Path2D([[-9,-9],[9,-9]]).appendPoint([9,9]).appendPoint([-9,9]).appendPoint([-9,-9]).close().innerToCAG() .extrude({ offset: [0, 0, 1] }); } @@ -10,7 +10,7 @@ function export_extrude_1_outline_fn(){ // creating part 0 of case export - let export__part_0 = export_extrude_1_outline_fn(); + let export__part_0 = export_outline_fn(); // make sure that rotations are relative let export__part_0_bounds = export__part_0.getBounds(); diff --git a/test/cli/big/reference/cases/export.stl b/test/cli/big/reference/cases/export.stl new file mode 100644 index 0000000..0cdcee2 --- /dev/null +++ b/test/cli/big/reference/cases/export.stl @@ -0,0 +1,86 @@ +solid csg.js +facet normal 0 0 -1 +outer loop +vertex -9 9 0 +vertex 9 9 0 +vertex 9 -9 0 +endloop +endfacet +facet normal 0 0 -1 +outer loop +vertex -9 9 0 +vertex 9 -9 0 +vertex -9 -9 0 +endloop +endfacet +facet normal 0 0 1 +outer loop +vertex -9 9 1 +vertex -9 -9 1 +vertex 9 -9 1 +endloop +endfacet +facet normal 0 0 1 +outer loop +vertex -9 9 1 +vertex 9 -9 1 +vertex 9 9 1 +endloop +endfacet +facet normal 0 -1 0 +outer loop +vertex 9 -9 0 +vertex 9 -9 1 +vertex -9 -9 1 +endloop +endfacet +facet normal 0 -1 0 +outer loop +vertex 9 -9 0 +vertex -9 -9 1 +vertex -9 -9 0 +endloop +endfacet +facet normal 1 0 0 +outer loop +vertex 9 9 0 +vertex 9 9 1 +vertex 9 -9 1 +endloop +endfacet +facet normal 1 0 0 +outer loop +vertex 9 9 0 +vertex 9 -9 1 +vertex 9 -9 0 +endloop +endfacet +facet normal 0 1 0 +outer loop +vertex 9 9 1 +vertex 9 9 0 +vertex -9 9 0 +endloop +endfacet +facet normal 0 1 0 +outer loop +vertex 9 9 1 +vertex -9 9 0 +vertex -9 9 1 +endloop +endfacet +facet normal -1 0 0 +outer loop +vertex -9 9 1 +vertex -9 9 0 +vertex -9 -9 0 +endloop +endfacet +facet normal -1 0 0 +outer loop +vertex -9 9 1 +vertex -9 -9 0 +vertex -9 -9 1 +endloop +endfacet +endsolid csg.js diff --git a/test/cli/big/reference/outlines/_export.yaml b/test/cli/big/reference/outlines/_export.yaml index de83955..b901b68 100644 --- a/test/cli/big/reference/outlines/_export.yaml +++ b/test/cli/big/reference/outlines/_export.yaml @@ -7,39 +7,49 @@ models: - 0 - 0 b: - paths: - ShapeLine1: - type: line + models: + a: + models: {} origin: - - -9 - - -9 - end: - - 9 - - -9 - ShapeLine2: - type: line + - 0 + - 0 + b: + paths: + ShapeLine1: + type: line + origin: + - -9 + - -9 + end: + - 9 + - -9 + ShapeLine2: + type: line + origin: + - 9 + - -9 + end: + - 9 + - 9 + ShapeLine3: + type: line + origin: + - 9 + - 9 + end: + - -9 + - 9 + ShapeLine4: + type: line + origin: + - -9 + - 9 + end: + - -9 + - -9 origin: - - 9 - - -9 - end: - - 9 - - 9 - ShapeLine3: - type: line - origin: - - 9 - - 9 - end: - - -9 - - 9 - ShapeLine4: - type: line - origin: - - -9 - - 9 - end: - - -9 - - -9 + - 0 + - 0 origin: - 0 - 0 diff --git a/test/cli/big/reference/outlines/export.yaml b/test/cli/big/reference/outlines/export.yaml index de83955..b901b68 100644 --- a/test/cli/big/reference/outlines/export.yaml +++ b/test/cli/big/reference/outlines/export.yaml @@ -7,39 +7,49 @@ models: - 0 - 0 b: - paths: - ShapeLine1: - type: line + models: + a: + models: {} origin: - - -9 - - -9 - end: - - 9 - - -9 - ShapeLine2: - type: line + - 0 + - 0 + b: + paths: + ShapeLine1: + type: line + origin: + - -9 + - -9 + end: + - 9 + - -9 + ShapeLine2: + type: line + origin: + - 9 + - -9 + end: + - 9 + - 9 + ShapeLine3: + type: line + origin: + - 9 + - 9 + end: + - -9 + - 9 + ShapeLine4: + type: line + origin: + - -9 + - 9 + end: + - -9 + - -9 origin: - - 9 - - -9 - end: - - 9 - - 9 - ShapeLine3: - type: line - origin: - - 9 - - 9 - end: - - -9 - - 9 - ShapeLine4: - type: line - origin: - - -9 - - 9 - end: - - -9 - - -9 + - 0 + - 0 origin: - 0 - 0 diff --git a/test/cli/big/reference/pcbs/_export.kicad_pcb b/test/cli/big/reference/pcbs/_export.kicad_pcb index 53faa54..8644559 100644 --- a/test/cli/big/reference/pcbs/_export.kicad_pcb +++ b/test/cli/big/reference/pcbs/_export.kicad_pcb @@ -5,8 +5,8 @@ (page A3) (title_block (title _export) - (rev v3.14) - (company MrZealot) + (rev v1.0.0) + (company Unknown) ) (general diff --git a/test/cli/big/reference/pcbs/export.kicad_pcb b/test/cli/big/reference/pcbs/export.kicad_pcb index e52b3b8..d2e5a7b 100644 --- a/test/cli/big/reference/pcbs/export.kicad_pcb +++ b/test/cli/big/reference/pcbs/export.kicad_pcb @@ -5,8 +5,8 @@ (page A3) (title_block (title export) - (rev v3.14) - (company MrZealot) + (rev v1.0.0) + (company Unknown) ) (general diff --git a/test/cli/big/reference/points/demo.yaml b/test/cli/big/reference/points/demo.yaml index 03402f6..658aacd 100644 --- a/test/cli/big/reference/points/demo.yaml +++ b/test/cli/big/reference/points/demo.yaml @@ -1,7 +1,7 @@ models: export: models: - matrix: + matrix_col_row: paths: top: type: line diff --git a/test/cli/big/reference/points/points.yaml b/test/cli/big/reference/points/points.yaml index fc6b036..091b01a 100644 --- a/test/cli/big/reference/points/points.yaml +++ b/test/cli/big/reference/points/points.yaml @@ -1,42 +1,27 @@ -matrix: +matrix_col_row: x: 0 'y': 0 r: 0 meta: - stagger: 0 - spread: 19 - splay: 0 - origin: - - 0 - - 0 - orient: 0 shift: - 0 - 0 rotate: 0 - adjust: {} - width: 18 - height: 18 padding: 19 - autobind: 10 + width: 1 + height: 1 skip: false asym: both - colrow: default_default - name: matrix - zone: - columns: - default: - rows: {} - key: {} - name: default - name: matrix + name: matrix_col_row + colrow: col_row col: + stagger: 0 + spread: 0 + rotate: 0 + origin: + - 0 + - 0 rows: {} key: {} - name: default - row: default - bind: - - 0 - - 0 - - 0 - - 0 + name: col + row: row diff --git a/test/cli/big/reference/points/units.yaml b/test/cli/big/reference/points/units.yaml index 0b00ed1..579c750 100644 --- a/test/cli/big/reference/points/units.yaml +++ b/test/cli/big/reference/points/units.yaml @@ -2,11 +2,4 @@ U: 19.05 u: 19 cx: 18 cy: 17 -$default_stagger: 0 -$default_spread: 19 -$default_splay: 0 -$default_height: 18 -$default_width: 18 -$default_padding: 19 -$default_autobind: 10 a: 47 diff --git a/test/cli/big/reference/source/canonical.yaml b/test/cli/big/reference/source/canonical.yaml index 409691a..bcd5013 100644 --- a/test/cli/big/reference/source/canonical.yaml +++ b/test/cli/big/reference/source/canonical.yaml @@ -1,22 +1,24 @@ -meta: - author: MrZealot - version: v3.14 units: a: 28 + u points: zones: - matrix: null + matrix: + columns: + col: {} + rows: + row: {} outlines: - export: - - - what: rectangle - where: true - size: 18 - _export: - - - what: rectangle - where: true - size: 18 + exports: + export: + - + type: keys + side: left + size: 18 + _export: + - + type: keys + side: left + size: 18 cases: export: - diff --git a/test/cli/big/reference/source/raw.txt b/test/cli/big/reference/source/raw.txt index 843cf13..c9f82ec 100644 --- a/test/cli/big/reference/source/raw.txt +++ b/test/cli/big/reference/source/raw.txt @@ -1,24 +1,23 @@ -meta: - author: MrZealot - version: v3.14 units: a: 28 + u points.zones.matrix: -outlines: + columns.col: {} + rows.row: {} +outlines.exports: export: - - what: rectangle - where: true + - type: 'keys' + side: 'left' size: 18 _export: - - what: rectangle - where: true + - type: 'keys' + side: 'left' size: 18 cases: export: - - name: export + - name: 'export' extrude: 1 _export: - - name: export + - name: 'export' extrude: 1 pcbs: export: {} diff --git a/test/cli/bundle/command b/test/cli/bundle/command deleted file mode 100644 index ac2196e..0000000 --- a/test/cli/bundle/command +++ /dev/null @@ -1 +0,0 @@ -node src/cli.js test/fixtures/bundle --clean diff --git a/test/cli/bundle/log b/test/cli/bundle/log deleted file mode 100644 index 40aaf03..0000000 --- a/test/cli/bundle/log +++ /dev/null @@ -1,14 +0,0 @@ -Ergogen CLI - -Analyzing folder... -Interpreting format: YAML -Preprocessing input... -Calculating variables... -Parsing points... -Generating outlines... -Modeling cases... -Scaffolding PCBs... -Cleaning output folder... -Writing output to disk... -Done. - diff --git a/test/cli/bundle/reference/outlines/box.dxf b/test/cli/bundle/reference/outlines/box.dxf deleted file mode 100644 index 0d161b6..0000000 --- a/test/cli/bundle/reference/outlines/box.dxf +++ /dev/null @@ -1,98 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --9 -20 --9 -11 -9 -21 --9 -0 -LINE -8 -0 -10 -9 -20 --9 -11 -9 -21 -9 -0 -LINE -8 -0 -10 -9 -20 -9 -11 --9 -21 -9 -0 -LINE -8 -0 -10 --9 -20 -9 -11 --9 -21 --9 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/cli/bundle/reference/pcbs/pcb.kicad_pcb b/test/cli/bundle/reference/pcbs/pcb.kicad_pcb deleted file mode 100644 index c2ab692..0000000 --- a/test/cli/bundle/reference/pcbs/pcb.kicad_pcb +++ /dev/null @@ -1,122 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") - ) - - - (module injected_test_footprint (layer F.Cu) (tedit 5E1ADAC2) - (at 0 0 0) - - - (fp_text reference "I1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - ) - - (gr_line (start -9 9) (end 9 9) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9 9) (end 9 -9) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9 -9) (end -9 -9) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start -9 -9) (end -9 9) (angle 90) (layer Edge.Cuts) (width 0.15)) - -) - - \ No newline at end of file diff --git a/test/cli/medium/log b/test/cli/medium/log index 6e2de58..ba78a5c 100644 --- a/test/cli/medium/log +++ b/test/cli/medium/log @@ -5,7 +5,7 @@ Preprocessing input... Calculating variables... Parsing points... Generating outlines... -Modeling cases... +Extruding cases... Scaffolding PCBs... Writing output to disk... Done. diff --git a/test/cli/minimal/log b/test/cli/minimal/log index f0d6488..72c917f 100644 --- a/test/cli/minimal/log +++ b/test/cli/minimal/log @@ -5,7 +5,7 @@ Preprocessing input... Calculating variables... Parsing points... Generating outlines... -Modeling cases... +Extruding cases... Scaffolding PCBs... Output would be empty, rerunning in debug mode... Writing output to disk... diff --git a/test/cli/minimal/reference/points/points.yaml b/test/cli/minimal/reference/points/points.yaml index a2c7bb5..091b01a 100644 --- a/test/cli/minimal/reference/points/points.yaml +++ b/test/cli/minimal/reference/points/points.yaml @@ -3,42 +3,25 @@ matrix_col_row: 'y': 0 r: 0 meta: - stagger: 0 - spread: 19 - splay: 0 - origin: - - 0 - - 0 - orient: 0 shift: - 0 - 0 rotate: 0 - adjust: {} - width: 18 - height: 18 padding: 19 - autobind: 10 + width: 1 + height: 1 skip: false asym: both - colrow: col_row name: matrix_col_row - zone: - columns: - col: - rows: {} - key: {} - name: col - rows: - row: {} - name: matrix + colrow: col_row col: + stagger: 0 + spread: 0 + rotate: 0 + origin: + - 0 + - 0 rows: {} key: {} name: col row: row - bind: - - 0 - - 0 - - 0 - - 0 diff --git a/test/cli/minimal/reference/points/units.yaml b/test/cli/minimal/reference/points/units.yaml index 454b8bb..6df000d 100644 --- a/test/cli/minimal/reference/points/units.yaml +++ b/test/cli/minimal/reference/points/units.yaml @@ -2,10 +2,3 @@ U: 19.05 u: 19 cx: 18 cy: 17 -$default_stagger: 0 -$default_spread: 19 -$default_splay: 0 -$default_height: 18 -$default_width: 18 -$default_padding: 19 -$default_autobind: 10 diff --git a/test/cli/missing_input/error b/test/cli/missing_input/error index 2b2dba0..8948ed0 100644 --- a/test/cli/missing_input/error +++ b/test/cli/missing_input/error @@ -1 +1 @@ -Usage: ergogen [options] \ No newline at end of file +Usage: ergogen [options] diff --git a/test/cli/nonexistent_input/error b/test/cli/nonexistent_input/error index 15be3d3..d5ef9b2 100644 --- a/test/cli/nonexistent_input/error +++ b/test/cli/nonexistent_input/error @@ -1 +1 @@ -Could not read config file "nonexistent.yaml": File does not exist! \ No newline at end of file +Could not read config file "nonexistent.yaml": Error: ENOENT: no such file or directory, open 'nonexistent.yaml' diff --git a/test/cli/zip/command b/test/cli/zip/command deleted file mode 100644 index 0a7fcd7..0000000 --- a/test/cli/zip/command +++ /dev/null @@ -1 +0,0 @@ -node src/cli.js test/fixtures/bundle.zip --clean diff --git a/test/cli/zip/log b/test/cli/zip/log deleted file mode 100644 index 17f636b..0000000 --- a/test/cli/zip/log +++ /dev/null @@ -1,14 +0,0 @@ -Ergogen CLI - -Analyzing bundle... -Interpreting format: YAML -Preprocessing input... -Calculating variables... -Parsing points... -Generating outlines... -Modeling cases... -Scaffolding PCBs... -Cleaning output folder... -Writing output to disk... -Done. - diff --git a/test/cli/zip/reference b/test/cli/zip/reference deleted file mode 100644 index 50be577..0000000 --- a/test/cli/zip/reference +++ /dev/null @@ -1 +0,0 @@ -../bundle/reference diff --git a/test/fixtures/big.yaml b/test/fixtures/big.yaml index 843cf13..c9f82ec 100644 --- a/test/fixtures/big.yaml +++ b/test/fixtures/big.yaml @@ -1,24 +1,23 @@ -meta: - author: MrZealot - version: v3.14 units: a: 28 + u points.zones.matrix: -outlines: + columns.col: {} + rows.row: {} +outlines.exports: export: - - what: rectangle - where: true + - type: 'keys' + side: 'left' size: 18 _export: - - what: rectangle - where: true + - type: 'keys' + side: 'left' size: 18 cases: export: - - name: export + - name: 'export' extrude: 1 _export: - - name: export + - name: 'export' extrude: 1 pcbs: export: {} diff --git a/test/fixtures/bundle.zip b/test/fixtures/bundle.zip deleted file mode 100644 index 0c1ea1c..0000000 Binary files a/test/fixtures/bundle.zip and /dev/null differ diff --git a/test/fixtures/bundle/config.yaml b/test/fixtures/bundle/config.yaml deleted file mode 100644 index 87bf1ae..0000000 --- a/test/fixtures/bundle/config.yaml +++ /dev/null @@ -1,13 +0,0 @@ -points.zones.matrix: -outlines: - box: - - what: rectangle - where: true - size: 18 -pcbs: - pcb: - outlines.edge.outline: box - footprints: - injected: - what: injected - where: matrix diff --git a/test/fixtures/bundle/footprints/injected.js b/test/fixtures/bundle/footprints/injected.js deleted file mode 100644 index 579a160..0000000 --- a/test/fixtures/bundle/footprints/injected.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - params: { - designator: 'I' - }, - body: p => ` - (module injected_test_footprint (layer F.Cu) (tedit 5E1ADAC2) - ${p.at /* parametric position */} - - ${'' /* footprint reference */} - (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) - ) - ` -} \ No newline at end of file diff --git a/test/fixtures/medium.yaml b/test/fixtures/medium.yaml index 18b6464..a48969c 100644 --- a/test/fixtures/medium.yaml +++ b/test/fixtures/medium.yaml @@ -1,9 +1,9 @@ points.zones.matrix: columns.col: {} -outlines: +outlines.exports: export: - - what: rectangle - where: true + - type: 'keys' + side: 'left' size: 18 pcbs: export: {} diff --git a/test/fixtures/minimal_kle.json b/test/fixtures/minimal_kle.json deleted file mode 100644 index 0e60b85..0000000 --- a/test/fixtures/minimal_kle.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - [ - "0_0", - "0_1" - ], - [ - "1_0", - "1_1" - ], - [ - "", - "" - ] -] - diff --git a/test/footprints/button.yaml b/test/footprints/button.yaml deleted file mode 100644 index dd424d3..0000000 --- a/test/footprints/button.yaml +++ /dev/null @@ -1,16 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - # front - - what: button - params: - from: from - to: to - - # back - - what: button - params: - from: from - to: to - side: B - adjust.shift: [50, 0] \ No newline at end of file diff --git a/test/footprints/button___pcbs_pcb.kicad_pcb b/test/footprints/button___pcbs_pcb.kicad_pcb deleted file mode 100644 index ffd8b1a..0000000 --- a/test/footprints/button___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,175 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "from") -(net 2 "to") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "from") -(add_net "to") - ) - - - - (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) - - (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") - (tags "SPST Tactile Switch") - - (at 0 0 0) - - (fp_text reference "B1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer F.SilkS) (width 0.15)) - - - (pad 1 smd rect (at -3.1 -1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 1 smd rect (at 3.1 -1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -3.1 1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - (pad 2 smd rect (at 3.1 1.85 0) (size 1.8 1.1) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - ) - - - - - (module E73:SW_TACT_ALPS_SKQGABE010 (layer F.Cu) (tstamp 5BF2CC94) - - (descr "Low-profile SMD Tactile Switch, https://www.e-switch.com/product-catalog/tact/product-lines/tl3342-series-low-profile-smt-tact-switch") - (tags "SPST Tactile Switch") - - (at 50 0 0) - - (fp_text reference "B2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 2.75 1.25) (end 1.25 2.75) (layer B.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 1.25 -2.75) (layer B.SilkS) (width 0.15)) - (fp_line (start 2.75 -1.25) (end 2.75 1.25) (layer B.SilkS) (width 0.15)) - (fp_line (start -1.25 2.75) (end 1.25 2.75) (layer B.SilkS) (width 0.15)) - (fp_line (start -1.25 -2.75) (end 1.25 -2.75) (layer B.SilkS) (width 0.15)) - (fp_line (start -2.75 1.25) (end -1.25 2.75) (layer B.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -1.25 -2.75) (layer B.SilkS) (width 0.15)) - (fp_line (start -2.75 -1.25) (end -2.75 1.25) (layer B.SilkS) (width 0.15)) - - - (pad 1 smd rect (at -3.1 -1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 1 smd rect (at 3.1 -1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at -3.1 1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - (pad 2 smd rect (at 3.1 1.85 0) (size 1.8 1.1) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - ) - - - - -) - - \ No newline at end of file diff --git a/test/footprints/choc.yaml b/test/footprints/choc.yaml deleted file mode 100644 index 016eeae..0000000 --- a/test/footprints/choc.yaml +++ /dev/null @@ -1,51 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - # base - - what: choc - params: - from: from - to: to - - # keycap visualization - - what: choc - params: - from: from - to: to - keycaps: true - adjust.shift: [50, 0] - - # reverse - - what: choc - params: - from: from - to: to - reverse: true - adjust.shift: [100, 0] - - # hotswap - - what: choc - params: - from: from - to: to - hotswap: true - adjust.shift: [150, 0] - - # both reverse and hotswap - - what: choc - params: - from: from - to: to - reverse: true - hotswap: true - adjust.shift: [200, 0] - - # all of keycaps, reverse and hotswap - - what: choc - params: - from: from - to: to - keycaps: true - reverse: true - hotswap: true - adjust.shift: [250, 0] diff --git a/test/footprints/choc___pcbs_pcb.kicad_pcb b/test/footprints/choc___pcbs_pcb.kicad_pcb deleted file mode 100644 index 43736fd..0000000 --- a/test/footprints/choc___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,360 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "from") -(net 2 "to") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "from") -(add_net "to") - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 0 0 0) - - - (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at 0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 50 0 0) - - - (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at 0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 100 0 0) - - - (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at 0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) - - - - (pad 1 thru_hole circle (at -5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at -0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 150 0 0) - - - (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 8.275 -3.75 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 200 0 0) - - - (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 8.275 -3.75 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - - - - (pad "" np_thru_hole circle (at -5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at 3.275 -5.95 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -8.275 -3.75 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - ) - - - - (module PG1350 (layer F.Cu) (tedit 5DD50112) - (at 250 0 0) - - - (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -3.275 -5.95 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 8.275 -3.75 0) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - - - - (pad "" np_thru_hole circle (at -5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at 3.275 -5.95 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -8.275 -3.75 0) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - ) - - - -) - - \ No newline at end of file diff --git a/test/footprints/chocmini.yaml b/test/footprints/chocmini.yaml deleted file mode 100644 index 5312a0d..0000000 --- a/test/footprints/chocmini.yaml +++ /dev/null @@ -1,33 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - # base - - what: chocmini - params: - from: from - to: to - - # keycap visualization - - what: chocmini - params: - from: from - to: to - keycaps: true - adjust.shift: [50, 0] - - # reverse - - what: chocmini - params: - from: from - to: to - reverse: true - adjust.shift: [100, 0] - - # reverse with keycap visualization - - what: chocmini - params: - from: from - to: to - keycaps: true - reverse: true - adjust.shift: [150, 0] diff --git a/test/footprints/chocmini___pcbs_pcb.kicad_pcb b/test/footprints/chocmini___pcbs_pcb.kicad_pcb deleted file mode 100644 index 784556a..0000000 --- a/test/footprints/chocmini___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,335 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "from") -(net 2 "to") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "from") -(add_net "to") - ) - - - - (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) - (at 0 0 0) - - - (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - - - (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - - - - - (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - ) - - - - (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) - (at 50 0 0) - - - (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - - - (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - ) - - - - (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) - (at 100 0 0) - - - (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - - - (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - - - - - (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - - - - (pad 1 thru_hole circle (at 4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at -2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - ) - - - - - (module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2) - (at 150 0 0) - - - (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -7.25 -6.75) (end -6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 -6.75) (end -7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start -7.25 6.75) (end -6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7.25 6.75) (end -7.25 5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 -6.75) (end 6.25 -6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 -6.75) (end 7.25 -5.75) (layer Dwgs.User) (width 0.15)) - - (fp_line (start 7.25 6.75) (end 6.25 6.75) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7.25 6.75) (end 7.25 5.75) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.8 -5.35) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end 2.8 -3.2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 2.8 -3.2) (end 2.8 -5.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -2.8 -3.2) (end -2.8 -5.35) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start 2.25 2.6) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 2.25 3.6) (end 2.25 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 3.6) (end 2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -2.25 2.6) (end -2.25 3.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 2.6) (end -5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - (fp_line (start 5.8 -2.95) (end 5.8 2.6) (layer Edge.Cuts) (width 0.12)) - (fp_line (start -5.8 -2.95) (end 5.8 -2.95) (layer Edge.Cuts) (width 0.12)) - - - (pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - (pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2)) - - - - (fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15)) - - - - (pad 1 thru_hole circle (at -4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at 2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - - - - (pad 1 thru_hole circle (at 4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 1 "from") (clearance 0.2)) - (pad 2 thru_hole circle (at -2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (net 2 "to") (clearance 0.2)) - ) - - - - -) - - \ No newline at end of file diff --git a/test/footprints/diode.yaml b/test/footprints/diode.yaml deleted file mode 100644 index 8e6319c..0000000 --- a/test/footprints/diode.yaml +++ /dev/null @@ -1,6 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - what: diode - params: - from: from - to: to \ No newline at end of file diff --git a/test/footprints/diode___pcbs_pcb.kicad_pcb b/test/footprints/diode___pcbs_pcb.kicad_pcb deleted file mode 100644 index 04e3966..0000000 --- a/test/footprints/diode___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,154 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "from") -(net 2 "to") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "from") -(add_net "to") - ) - - - - (module ComboDiode (layer F.Cu) (tedit 5B24D78E) - - - (at 0 0 0) - - - (fp_text reference "D1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) - (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) - (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) - (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) - - - (pad 1 smd rect (at -1.65 0 0) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - (pad 2 smd rect (at 1.65 0 0) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 1 smd rect (at -1.65 0 0) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - (pad 2 smd rect (at 1.65 0 0) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - - - (pad 1 thru_hole rect (at -3.81 0 0) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) (net 2 "to")) - (pad 2 thru_hole circle (at 3.81 0 0) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) (net 1 "from")) - ) - - - - -) - - \ No newline at end of file diff --git a/test/footprints/mx.yaml b/test/footprints/mx.yaml deleted file mode 100644 index d1f200b..0000000 --- a/test/footprints/mx.yaml +++ /dev/null @@ -1,51 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - # base - - what: mx - params: - from: from - to: to - - # keycap visualization - - what: mx - params: - from: from - to: to - keycaps: true - adjust.shift: [50, 0] - - # reverse - - what: mx - params: - from: from - to: to - reverse: true - adjust.shift: [100, 0] - - # hotswap - - what: mx - params: - from: from - to: to - hotswap: true - adjust.shift: [150, 0] - - # both reverse and hotswap - - what: mx - params: - from: from - to: to - reverse: true - hotswap: true - adjust.shift: [200, 0] - - # all of keycaps, reverse and hotswap - - what: mx - params: - from: from - to: to - keycaps: true - reverse: true - hotswap: true - adjust.shift: [250, 0] diff --git a/test/footprints/mx___pcbs_pcb.kicad_pcb b/test/footprints/mx___pcbs_pcb.kicad_pcb deleted file mode 100644 index 01d7823..0000000 --- a/test/footprints/mx___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,360 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "from") -(net 2 "to") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "from") -(add_net "to") - ) - - - - (module MX (layer F.Cu) (tedit 5DD4F656) - (at 0 0 0) - - - (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at -3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - (module MX (layer F.Cu) (tedit 5DD4F656) - (at 50 0 0) - - - (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - - - - (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at -3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - (module MX (layer F.Cu) (tedit 5DD4F656) - (at 100 0 0) - - - (fp_text reference "S3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at -3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) - - - - (pad 1 thru_hole circle (at -2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at 3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - (module MX (layer F.Cu) (tedit 5DD4F656) - (at 150 0 0) - - - (fp_text reference "S4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -7.085 -2.54 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 5.842 -5.08 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - ) - - - - (module MX (layer F.Cu) (tedit 5DD4F656) - (at 200 0 0) - - - (fp_text reference "S5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - - (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -7.085 -2.54 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 5.842 -5.08 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - - - - (pad "" np_thru_hole circle (at -2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at 7.085 -2.54 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -5.842 -5.08 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - ) - - - - (module MX (layer F.Cu) (tedit 5DD4F656) - (at 250 0 0) - - - (fp_text reference "S6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask)) - - - - (fp_line (start -9.5 -9.5) (end 9.5 -9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 -9.5) (end 9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start 9.5 9.5) (end -9.5 9.5) (layer Dwgs.User) (width 0.15)) - (fp_line (start -9.5 9.5) (end -9.5 -9.5) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -7.085 -2.54 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 5.842 -5.08 0) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - - - - (pad "" np_thru_hole circle (at -2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at 7.085 -2.54 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -5.842 -5.08 0) (size 2.55 2.5) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - ) - - - -) - - \ No newline at end of file diff --git a/test/footprints/pad.yaml b/test/footprints/pad.yaml deleted file mode 100644 index 43ed2d9..0000000 --- a/test/footprints/pad.yaml +++ /dev/null @@ -1,41 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - - what: pad - params: - net: net - - - what: pad - params: - net: net - align: right - text: text - adjust.shift: [50, 0] - - - what: pad - params: - net: net - align: up - front: false - adjust.shift: [0, 50] - - - what: pad - params: - net: net - align: down - mirrored: true - adjust.shift: [50, 50] - - - what: pad - params: - net: net - align: right - mirrored: true - adjust.shift: [100, 0] - - - what: pad - params: - net: net - align: left - mirrored: true - adjust.shift: [100, 50] diff --git a/test/footprints/pad___pcbs_pcb.kicad_pcb b/test/footprints/pad___pcbs_pcb.kicad_pcb deleted file mode 100644 index 997b2f6..0000000 --- a/test/footprints/pad___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,226 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "net") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "net") - ) - - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 0 0 0) - - - (fp_text reference "PAD1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) - - - ) - - - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 50 0 0) - - - (fp_text reference "PAD2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) -(fp_text user text (at 3 0 0) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) )) - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) -(fp_text user text (at 3 0 0) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify mirror))) - - ) - - - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 0 -50 0) - - - (fp_text reference "PAD3" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) - - - ) - - - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 50 -50 0) - - - (fp_text reference "PAD4" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) - - - ) - - - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 100 0 0) - - - (fp_text reference "PAD5" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) - - - ) - - - - - (module SMDPad (layer F.Cu) (tedit 5B24D78E) - - (at 100 -50 0) - - - (fp_text reference "PAD6" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) (net 1 "net")) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers B.Cu B.Paste B.Mask) (net 1 "net")) - - - ) - - - - -) - - \ No newline at end of file diff --git a/test/footprints/promicro.yaml b/test/footprints/promicro.yaml deleted file mode 100644 index f075b90..0000000 --- a/test/footprints/promicro.yaml +++ /dev/null @@ -1,11 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - # downward - - what: promicro - - # upward - - what: promicro - params: - orientation: up - adjust.shift: [50, 0] diff --git a/test/footprints/promicro___pcbs_pcb.kicad_pcb b/test/footprints/promicro___pcbs_pcb.kicad_pcb deleted file mode 100644 index 371f673..0000000 --- a/test/footprints/promicro___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,319 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "RAW") -(net 2 "GND") -(net 3 "RST") -(net 4 "VCC") -(net 5 "P21") -(net 6 "P20") -(net 7 "P19") -(net 8 "P18") -(net 9 "P15") -(net 10 "P14") -(net 11 "P16") -(net 12 "P10") -(net 13 "P1") -(net 14 "P0") -(net 15 "P2") -(net 16 "P3") -(net 17 "P4") -(net 18 "P5") -(net 19 "P6") -(net 20 "P7") -(net 21 "P8") -(net 22 "P9") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "RAW") -(add_net "GND") -(add_net "RST") -(add_net "VCC") -(add_net "P21") -(add_net "P20") -(add_net "P19") -(add_net "P18") -(add_net "P15") -(add_net "P14") -(add_net "P16") -(add_net "P10") -(add_net "P1") -(add_net "P0") -(add_net "P2") -(add_net "P3") -(add_net "P4") -(add_net "P5") -(add_net "P6") -(add_net "P7") -(add_net "P8") -(add_net "P9") - ) - - - - (module ProMicro (layer F.Cu) (tedit 5B307E4C) - (at 0 0 0) - - - (fp_text reference "MCU1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - - - - (fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15)) - - - (fp_text user RAW (at -13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - (fp_text user P01 (at -13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - - (pad 1 thru_hole rect (at -13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 1 "RAW")) - (pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) - (pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 3 "RST")) - (pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 4 "VCC")) - (pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 5 "P21")) - (pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 6 "P20")) - (pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P19")) - (pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 8 "P18")) - (pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 9 "P15")) - (pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 10 "P14")) - (pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 11 "P16")) - (pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P10")) - - (pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 13 "P1")) - (pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 14 "P0")) - (pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) - (pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) - (pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 15 "P2")) - (pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 16 "P3")) - (pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P4")) - (pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 18 "P5")) - (pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 19 "P6")) - (pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 20 "P7")) - (pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 21 "P8")) - (pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P9")) - ) - - - - (module ProMicro (layer F.Cu) (tedit 5B307E4C) - (at 50 0 0) - - - (fp_text reference "MCU2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - - - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - - - - (fp_line (start -15.24 -6.35) (end -12.7 -6.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.24 -6.35) (end -15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.7 -6.35) (end -12.7 -8.89) (layer F.SilkS) (width 0.15)) - - - (fp_text user RAW (at -13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user RST (at -8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user VCC (at -6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P21 (at -3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P20 (at -1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P19 (at 1.27 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P18 (at 3.81 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P15 (at 6.35 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P14 (at 8.89 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P16 (at 11.43 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P10 (at 13.97 -4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - (fp_text user P01 (at -13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P00 (at -11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user GND (at -6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P02 (at -3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P03 (at -1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P04 (at 1.27 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P05 (at 3.81 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P06 (at 6.35 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P07 (at 8.89 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P08 (at 11.43 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user P09 (at 13.97 4.8 90) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - - - (pad 1 thru_hole rect (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 1 "RAW")) - (pad 2 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) - (pad 3 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 3 "RST")) - (pad 4 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 4 "VCC")) - (pad 5 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 5 "P21")) - (pad 6 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 6 "P20")) - (pad 7 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 7 "P19")) - (pad 8 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 8 "P18")) - (pad 9 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 9 "P15")) - (pad 10 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 10 "P14")) - (pad 11 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 11 "P16")) - (pad 12 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 12 "P10")) - - (pad 13 thru_hole circle (at -13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 13 "P1")) - (pad 14 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 14 "P0")) - (pad 15 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) - (pad 16 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 2 "GND")) - (pad 17 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 15 "P2")) - (pad 18 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 16 "P3")) - (pad 19 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 17 "P4")) - (pad 20 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 18 "P5")) - (pad 21 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 19 "P6")) - (pad 22 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 20 "P7")) - (pad 23 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 21 "P8")) - (pad 24 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) (net 22 "P9")) - ) - - - -) - - \ No newline at end of file diff --git a/test/footprints/rest.yaml b/test/footprints/rest.yaml deleted file mode 100644 index 7e24468..0000000 --- a/test/footprints/rest.yaml +++ /dev/null @@ -1,85 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - - what: alps - params: - from: from - to: to - - - what: jstph - params: - pos: pos - neg: neg - adjust.shift: [50, 0] - - - what: jumper - params: - from: from - to: to - adjust.shift: [100, 0] - - - what: oled - params: - SDA: SDA - SCL: SCL - adjust.shift: [0, 50] - - - what: omron - params: - from: from - to: to - adjust.shift: [50, 50] - - - what: rgb - params: - din: din - dout: dout - adjust.shift: [100, 50] - - - what: rotary - params: - from: from - to: to - A: A - B: B - C: C - adjust.shift: [0, 100] - - - what: scrollwheel - params: - from: from - to: to - A: A - B: B - C: C - D: D - adjust.shift: [50, 100] - - - what: slider - params: - from: from - to: to - adjust.shift: [100, 100] - - - what: via - params: - net: net - adjust.shift: [0, 150] - - - what: scrollwheel - params: - from: from - to: to - A: A - B: B - C: C - D: D - reverse: true - adjust.shift: [50, 150] - - - what: slider - params: - from: from - to: to - side: B - adjust.shift: [100, 150] diff --git a/test/footprints/rest___pcbs_pcb.kicad_pcb b/test/footprints/rest___pcbs_pcb.kicad_pcb deleted file mode 100644 index 506f4fd..0000000 --- a/test/footprints/rest___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,529 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "from") -(net 2 "to") -(net 3 "pos") -(net 4 "neg") -(net 5 "VCC") -(net 6 "GND") -(net 7 "SDA") -(net 8 "SCL") -(net 9 "din") -(net 10 "dout") -(net 11 "A") -(net 12 "B") -(net 13 "C") -(net 14 "D") -(net 15 "net") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "from") -(add_net "to") -(add_net "pos") -(add_net "neg") -(add_net "VCC") -(add_net "GND") -(add_net "SDA") -(add_net "SCL") -(add_net "din") -(add_net "dout") -(add_net "A") -(add_net "B") -(add_net "C") -(add_net "D") -(add_net "net") - ) - - - - (module ALPS (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - - (fp_text reference "S1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15)) - (fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15)) - - - (pad 1 thru_hole circle (at 2.5 -4.5) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at -2.5 -4) (size 2.25 2.25) (drill 1.47) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - - (module JST_PH_S2B-PH-K_02x2.00mm_Angled (layer F.Cu) (tedit 58D3FE32) - - (descr "JST PH series connector, S2B-PH-K, side entry type, through hole, Datasheet: http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") - (tags "connector jst ph") - - (at 50 0 0) - - - (fp_text reference "JST1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - (fp_line (start -2.25 0.25) (end -2.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.25 -1.35) (end -2.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.95 -1.35) (end -2.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.95 6.25) (end 2.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.95 6.25) (end 2.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.95 -1.35) (end 2.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.25 -1.35) (end 2.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.25 0.25) (end -2.25 0.25) (layer F.SilkS) (width 0.15)) - - (fp_line (start -1 1.5) (end -1 2.0) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 1.75) (end -0.75 1.75) (layer F.SilkS) (width 0.15)) - - (pad 1 thru_hole rect (at -1 0 0) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) (net 3 "pos")) - (pad 2 thru_hole oval (at 1 0 0) (size 1.2 1.7) (drill 0.75) (layers *.Cu *.Mask) (net 4 "neg")) - - ) - - - - (module lib:Jumper (layer F.Cu) (tedit 5E1ADAC2) - (at 100 0 0) - - - (fp_text reference "J1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value Jumper (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (pad 1 smd rect (at -0.50038 0 0) (size 0.635 1.143) (layers F.Cu F.Paste F.Mask) - (clearance 0.1905) (net 1 "from")) - (pad 2 smd rect (at 0.50038 0 0) (size 0.635 1.143) (layers F.Cu F.Paste F.Mask) - (clearance 0.1905) (net 2 "to"))) - - - (module lib:OLED_headers (layer F.Cu) (tedit 5E1ADAC2) - (at 0 -50 0) - - - (fp_text reference "OLED1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value OLED (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (pad 4 thru_hole oval (at 1.6 2.18 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - (net 7 "SDA")) - (pad 3 thru_hole oval (at 1.6 4.72 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - (net 8 "SCL")) - (pad 2 thru_hole oval (at 1.6 7.26 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - (net 5 "VCC")) - (pad 1 thru_hole rect (at 1.6 9.8 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) - (net 6 "GND")) - ) - - - - (module OMRON_B3F-4055 (layer F.Cu) (tstamp 5BF2CC94) - - (at 50 -50 0) - - (fp_text reference "S2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (pad "" np_thru_hole circle (at 0 -4.5) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 4.5) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) - - - (fp_line (start -6 -6) (end 6 -6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 -6) (end 6 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start 6 6) (end -6 6) (layer Dwgs.User) (width 0.15)) - (fp_line (start -6 6) (end -6 -6) (layer Dwgs.User) (width 0.15)) - - - (pad 1 np_thru_hole circle (at 6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 np_thru_hole circle (at -6.25 -2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 1 "from")) - (pad 3 np_thru_hole circle (at 6.25 2.5) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 2 "to")) - (pad 4 np_thru_hole circle (at -6.25 2.5 ) (size 1.2 1.2) (drill 1.2) (layers *.Cu *.Mask) (net 2 "to")) - ) - - - - - (module WS2812B (layer F.Cu) (tedit 53BEE615) - - (at 100 -50 0) - - - (fp_text reference "LED1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - (fp_line (start -1.75 -1.75) (end -1.75 1.75) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.75 1.75) (end 1.75 1.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.75 1.75) (end 1.75 -1.75) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.75 -1.75) (end -1.75 -1.75) (layer F.SilkS) (width 0.15)) - - (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.SilkS) (width 0.15)) - - (fp_poly (pts (xy 4 2.2) (xy 4 0.375) (xy 5 1.2875)) (layer F.SilkS) (width 0.1)) - - (pad 1 smd rect (at -2.2 -0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 5 "VCC")) - (pad 2 smd rect (at -2.2 0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 10 "dout")) - (pad 3 smd rect (at 2.2 0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 6 "GND")) - (pad 4 smd rect (at 2.2 -0.875 0) (size 2.6 1) (layers F.Cu F.Paste F.Mask) (net 9 "din")) - - (pad 11 smd rect (at -2.5 -1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 5 "VCC")) - (pad 22 smd rect (at -2.5 1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 10 "dout")) - (pad 33 smd rect (at 2.5 1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 6 "GND")) - (pad 44 smd rect (at 2.5 -1.6 0) (size 2 1.2) (layers F.Cu F.Paste F.Mask) (net 9 "din")) - - ) - - - - (module rotary_encoder (layer F.Cu) (tedit 603326DE) - - (at 0 -100 0) - - - (fp_text reference "ROT1" (at 0 0.5) (layer F.SilkS) - hide (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value "" (at 0 8.89) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -0.62 -0.04) (end 0.38 -0.04) (layer F.SilkS) (width 0.12)) - (fp_line (start -0.12 -0.54) (end -0.12 0.46) (layer F.SilkS) (width 0.12)) - (fp_line (start 5.98 3.26) (end 5.98 5.86) (layer F.SilkS) (width 0.12)) - (fp_line (start 5.98 -1.34) (end 5.98 1.26) (layer F.SilkS) (width 0.12)) - (fp_line (start 5.98 -5.94) (end 5.98 -3.34) (layer F.SilkS) (width 0.12)) - (fp_line (start -3.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) - (fp_line (start -0.12 -3.04) (end -0.12 2.96) (layer F.Fab) (width 0.12)) - (fp_line (start -7.32 -4.14) (end -7.62 -3.84) (layer F.SilkS) (width 0.12)) - (fp_line (start -7.92 -4.14) (end -7.32 -4.14) (layer F.SilkS) (width 0.12)) - (fp_line (start -7.62 -3.84) (end -7.92 -4.14) (layer F.SilkS) (width 0.12)) - (fp_line (start -6.22 -5.84) (end -6.22 5.86) (layer F.SilkS) (width 0.12)) - (fp_line (start -2.12 -5.84) (end -6.22 -5.84) (layer F.SilkS) (width 0.12)) - (fp_line (start -2.12 5.86) (end -6.22 5.86) (layer F.SilkS) (width 0.12)) - (fp_line (start 5.98 5.86) (end 1.88 5.86) (layer F.SilkS) (width 0.12)) - (fp_line (start 1.88 -5.94) (end 5.98 -5.94) (layer F.SilkS) (width 0.12)) - (fp_line (start -6.12 -4.74) (end -5.12 -5.84) (layer F.Fab) (width 0.12)) - (fp_line (start -6.12 5.76) (end -6.12 -4.74) (layer F.Fab) (width 0.12)) - (fp_line (start 5.88 5.76) (end -6.12 5.76) (layer F.Fab) (width 0.12)) - (fp_line (start 5.88 -5.84) (end 5.88 5.76) (layer F.Fab) (width 0.12)) - (fp_line (start -5.12 -5.84) (end 5.88 -5.84) (layer F.Fab) (width 0.12)) - (fp_line (start -8.87 -6.89) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05)) - (fp_line (start -8.87 -6.89) (end -8.87 6.81) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.88 6.81) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.88 6.81) (end -8.87 6.81) (layer F.CrtYd) (width 0.05)) - (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.SilkS) (width 0.12)) - (fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12)) - - - (pad A thru_hole rect (at -7.62 -2.54 0) (size 2 2) (drill 1) (layers *.Cu *.Mask) (net 11 "A")) - (pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) (net 13 "C")) - (pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) (net 12 "B")) - (pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) (net 1 "from")) - (pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) (net 2 "to")) - - - (pad "" thru_hole rect (at -0.12 -5.64 0) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) - (pad "" thru_hole rect (at -0.12 5.56 0) (size 3.2 2) (drill oval 2.8 1.5) (layers *.Cu *.Mask)) - ) - - - - (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) - (at 50 -100 0) - (fp_text reference REF** (at 0 0 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start 8.4 -6.4) (end 8.4 7.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start 8.4 7.4) (end -8.4 7.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start -8.4 7.4) (end -8.4 -6.4) (layer Dwgs.User) (width 0.12)) - - - - (fp_line (start 9.8 7.3) (end 9.8 -6.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 7.4 -6.3) (end 7.4 7.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 9.5 -6.6) (end 7.7 -6.6) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 7.7 7.6) (end 9.5 7.6) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 7.7 7.3) (end 7.4 7.3) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 9.5 7.3) (end 9.5 7.6) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 7.7 -6.3) (end 7.7 -6.6) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 9.5 -6.3) (end 9.8 -6.3) (angle -90) (layer Edge.Cuts) (width 0.15)) - - - (pad S1 thru_hole circle (at -6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) - (pad S2 thru_hole circle (at -5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) - (pad A thru_hole circle (at -5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) - (pad B thru_hole circle (at -5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) - (pad C thru_hole circle (at -5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) - (pad D thru_hole circle (at -5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) - - - (pad "" np_thru_hole circle (at -5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - ) - - - - (module E73:SPDT_C128955 (layer F.Cu) (tstamp 5BF2CC3C) - - (at 100 -100 0) - - - (fp_text reference "T1" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer F.SilkS) (width 0.15)) - - - (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) - (fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at 2.25 2.075 0) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask) (net 1 "from")) - (pad 2 smd rect (at -0.75 2.075 0) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask) (net 2 "to")) - (pad 3 smd rect (at -2.25 2.075 0) (size 0.9 1.25) (layers F.Cu F.Paste F.Mask)) - - - (pad "" smd rect (at 3.7 -1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 3.7 1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.7 1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.7 -1.1 0) (size 0.9 0.9) (layers F.Cu F.Paste F.Mask)) - ) - - - - (module VIA-0.6mm (layer F.Cu) (tedit 591DBFB0) - (at 0 -150 0) - - (fp_text reference REF** (at 0 1.4) (layer F.SilkS) hide (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide (effects (font (size 1 1) (thickness 0.15)))) - - - (pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) (net 15 "net")) - ) - - - - (module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C) - (at 50 -150 0) - (fp_text reference REF** (at 0 0 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 0) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start 8.4 -6.4) (end 8.4 7.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start 8.4 7.4) (end -8.4 7.4) (layer Dwgs.User) (width 0.12)) - (fp_line (start -8.4 7.4) (end -8.4 -6.4) (layer Dwgs.User) (width 0.12)) - - - - (fp_line (start 9.8 7.3) (end 9.8 -6.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 7.4 -6.3) (end 7.4 7.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 9.5 -6.6) (end 7.7 -6.6) (layer Edge.Cuts) (width 0.15)) - (fp_line (start 7.7 7.6) (end 9.5 7.6) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 7.7 7.3) (end 7.4 7.3) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 9.5 7.3) (end 9.5 7.6) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 7.7 -6.3) (end 7.7 -6.6) (angle -90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start 9.5 -6.3) (end 9.8 -6.3) (angle -90) (layer Edge.Cuts) (width 0.15)) - - - (pad S1 thru_hole circle (at -6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) - (pad S2 thru_hole circle (at -5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) - (pad A thru_hole circle (at -5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) - (pad B thru_hole circle (at -5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) - (pad C thru_hole circle (at -5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) - (pad D thru_hole circle (at -5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) - - - (pad "" np_thru_hole circle (at -5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - - - - (fp_line (start -9.8 7.3) (end -9.8 -6.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start -7.4 -6.3) (end -7.4 7.3) (layer Edge.Cuts) (width 0.15)) - (fp_line (start -9.5 -6.6) (end -7.7 -6.6) (layer Edge.Cuts) (width 0.15)) - (fp_line (start -7.7 7.6) (end -9.5 7.6) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -7.7 7.3) (end -7.4 7.3) (angle 90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -9.5 7.3) (end -9.5 7.6) (angle 90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -7.7 -6.3) (end -7.7 -6.6) (angle 90) (layer Edge.Cuts) (width 0.15)) - (fp_arc (start -9.5 -6.3) (end -9.8 -6.3) (angle 90) (layer Edge.Cuts) (width 0.15)) - - - (pad S1 thru_hole circle (at 6.85 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 1 "from")) - (pad S2 thru_hole circle (at 5 -6.2 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 2 "to")) - (pad A thru_hole circle (at 5.625 -3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 11 "A")) - (pad B thru_hole circle (at 5.625 -1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 12 "B")) - (pad C thru_hole circle (at 5.625 1.27 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 13 "C")) - (pad D thru_hole circle (at 5.625 3.81 0) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) (net 14 "D")) - - - (pad "" np_thru_hole circle (at 5.625 6.3 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - ) - - - - (module E73:SPDT_C128955 (layer F.Cu) (tstamp 5BF2CC3C) - - (at 100 -150 0) - - - (fp_text reference "T2" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - - (fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer B.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end -3.3 -1.35) (layer B.SilkS) (width 0.15)) - (fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer B.SilkS) (width 0.15)) - (fp_line (start -3.3 1.5) (end 3.3 1.5) (layer B.SilkS) (width 0.15)) - (fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer B.SilkS) (width 0.15)) - (fp_line (start 0 -1.35) (end 3.3 -1.35) (layer B.SilkS) (width 0.15)) - - - (fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15)) - (fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15)) - - - (pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask)) - - - (pad 1 smd rect (at -2.25 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask) (net 1 "from")) - (pad 2 smd rect (at 0.75 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask) (net 2 "to")) - (pad 3 smd rect (at 2.25 2.075 0) (size 0.9 1.25) (layers B.Cu B.Paste B.Mask)) - - - (pad "" smd rect (at 3.7 -1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - (pad "" smd rect (at 3.7 1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - (pad "" smd rect (at -3.7 1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - (pad "" smd rect (at -3.7 -1.1 0) (size 0.9 0.9) (layers B.Cu B.Paste B.Mask)) - ) - - - - -) - - \ No newline at end of file diff --git a/test/footprints/trrs.yaml b/test/footprints/trrs.yaml deleted file mode 100644 index 36547ab..0000000 --- a/test/footprints/trrs.yaml +++ /dev/null @@ -1,31 +0,0 @@ -points.zones.matrix: -pcbs.pcb.footprints: - - # basic - - what: trrs - params: - A: A - B: B - C: C - D: D - - # reversible - - what: trrs - params: - A: A - B: B - C: C - D: D - reverse: true - adjust.shift: [50, 0] - - # reversible + symmetric - - what: trrs - params: - A: A - B: B - C: C - D: D - reverse: true - symmetric: true - adjust.shift: [100, 0] \ No newline at end of file diff --git a/test/footprints/trrs___pcbs_pcb.kicad_pcb b/test/footprints/trrs___pcbs_pcb.kicad_pcb deleted file mode 100644 index c549080..0000000 --- a/test/footprints/trrs___pcbs_pcb.kicad_pcb +++ /dev/null @@ -1,228 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title pcb) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "A") -(net 2 "B") -(net 3 "C") -(net 4 "D") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "A") -(add_net "B") -(add_net "C") -(add_net "D") - ) - - - - (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) - - (at 0 0 0) - - - (fp_text reference "TRRS1" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start 0.5 -2) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start -5.1 0) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.5 0) (end 0.5 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start -5.35 0) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 0) (end 0.75 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - - - (pad 1 thru_hole oval (at -4.6 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) - (pad 2 thru_hole oval (at 0 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) - (pad 3 thru_hole oval (at 0 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) - (pad 4 thru_hole oval (at 0 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) - ) - - - - (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) - - (at 50 0 0) - - - (fp_text reference "TRRS2" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start 0.5 -2) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start -5.1 0) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.5 0) (end 0.5 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start -5.35 0) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 0) (end 0.75 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - - - (pad "" np_thru_hole circle (at 0 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at 0 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - - - (pad 1 thru_hole oval (at -2.3 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) - (pad 2 thru_hole oval (at 2.3 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) - (pad 3 thru_hole oval (at 2.3 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) - (pad 4 thru_hole oval (at 2.3 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) - - - (pad 1 thru_hole oval (at 0 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) - (pad 2 thru_hole oval (at -4.6 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) - (pad 3 thru_hole oval (at -4.6 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) - (pad 4 thru_hole oval (at -4.6 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) - ) - - - - (module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5) - - (at 100 0 0) - - - (fp_text reference "TRRS3" (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15)))) - - - (fp_line (start 0.5 -2) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start -5.1 0) (end -5.1 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.5 0) (end 0.5 -2) (layer Dwgs.User) (width 0.15)) - (fp_line (start -5.35 0) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 0) (end 0.75 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15)) - (fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15)) - - - - (pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - (pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) - - - (pad 1 thru_hole oval (at 0 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) - (pad 2 thru_hole oval (at -4.6 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) - (pad 3 thru_hole oval (at -4.6 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) - (pad 4 thru_hole oval (at -4.6 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) - - - (pad 1 thru_hole oval (at -4.6 11.3 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 1 "A")) - (pad 2 thru_hole oval (at 0 10.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 2 "B")) - (pad 3 thru_hole oval (at 0 6.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 3 "C")) - (pad 4 thru_hole oval (at 0 3.2 0) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) (net 4 "D")) - ) - - - -) - - \ No newline at end of file diff --git a/test/helpers/mock_footprints.js b/test/helpers/mock_footprints.js index 14edaf3..80bea95 100644 --- a/test/helpers/mock_footprints.js +++ b/test/helpers/mock_footprints.js @@ -1,84 +1,88 @@ exports.inject = (ergogen) => { - ergogen.inject('footprint', 'trace_test', { + ergogen.inject_footprint('trace_test', { + nets: { + P1: 'P1' + }, params: { - designator: 'T', - side: 'F', - width: 0.25, - P1: {type: 'net', value: 'P1'} + class: 'T', + side: 'F' }, body: p => { return ` - (module trace_test (layer ${p.side}.Cu) (tedit 5CF31DEF) + (module trace_test (layer F.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} - (pad 1 smd rect (at ${p.isxy(0, 0)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + ${p.net.P1.str} (solder_mask_margin 0.2)) - (pad 2 smd rect (at ${p.isxy(5, 5)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + ${p.net.P1.str} (solder_mask_margin 0.2)) ) - (segment (start ${p.esxy(0, 0)}) (end ${p.esxy(5, 5)}) (width ${p.width}) (layer ${p.side}.Cu) (net ${p.P1.index})) + (segment (start ${p.xy(0, 0)}) (end ${p.xy(5, 5)}) (width 0.25) (layer F.Cu) (net ${p.net.P1.index})) ` } }) - ergogen.inject('footprint', 'zone_test', { + ergogen.inject_footprint('zone_test', { + nets: { + P1: 'P1' + }, params: { - designator: 'T', - side: 'F', - P1: {type: 'net', value: 'P1'} + class: 'T', + side: 'F' }, body: p => { return ` - (module zone_test (layer ${p.side}.Cu) (tedit 5CF31DEF) + (module zone_test (layer F.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + ${p.net.P1.str} (solder_mask_margin 0.2)) - (pad 2 smd rect (at ${p.iaxy(5, 5)} ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.P1} (solder_mask_margin 0.2)) + (pad 2 smd rect (at 5 5 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + ${p.net.P1.str} (solder_mask_margin 0.2)) ) - (zone (net ${p.P1.index}) (net_name ${p.P1.name}) (layer ${p.side}.Cu) (tstamp 0) (hatch full 0.508) + (zone (net ${p.net.P1.index}) (net_name ${p.net.P1.name}) (layer ${p.param.side}.Cu) (tstamp 0) (hatch full 0.508) (connect_pads (clearance 0.508)) (min_thickness 0.254) (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) - (polygon (pts (xy ${p.eaxy(5, 5)}) (xy ${p.eaxy(5, -5)}) (xy ${p.eaxy(-5, -5)}) (xy ${p.eaxy(-5, 5)}))) + (polygon (pts (xy ${p.xy(5, 5)}) (xy ${p.xy(5, -5)}) (xy ${p.xy(-5, -5)}) (xy ${p.xy(-5, 5)}))) ) ` } }) - ergogen.inject('footprint', 'dynamic_net_test', { + ergogen.inject_footprint('dynamic_net_test', { + nets: {}, params: { - designator: 'T', + class: 'T', side: 'F' }, body: p => { return ` - (module dynamic_net_test (layer ${p.side}.Cu) (tedit 5CF31DEF) + (module dynamic_net_test (layer F.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('1')} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + ${p.local_net('1').str} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('2')} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + ${p.local_net('2').str} (solder_mask_margin 0.2)) - (pad 1 smd rect (at 0 0 ${p.r}) (size 1 1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) - ${p.local_net('3')} (solder_mask_margin 0.2)) + (pad 1 smd rect (at 0 0 ${p.rot}) (size 1 1) (layers F.Cu F.Paste F.Mask) + ${p.local_net('3').str} (solder_mask_margin 0.2)) ) @@ -86,20 +90,23 @@ exports.inject = (ergogen) => { } }) - ergogen.inject('footprint', 'anchor_test', { + ergogen.inject_footprint('anchor_test', { + nets: {}, params: { - designator: 'T', - side: 'F', - end: {type: 'anchor', value: undefined} + class: 'T', + side: 'F' + }, + anchors: { + end: undefined }, body: p => { return ` - (module anchor_test (layer ${p.side}.Cu) (tedit 5CF31DEF) + (module anchor_test (layer F.Cu) (tedit 5CF31DEF) ${p.at /* parametric position */} - (fp_line (start 0 0) (end ${p.end.x} ${p.end.y}) (layer Dwgs.User) (width 0.05)) + (fp_line (start 0 0) (end ${p.anchors.end.x} ${p.anchors.end.y}) (layer Dwgs.User) (width 0.05)) ) @@ -107,33 +114,8 @@ exports.inject = (ergogen) => { } }) - ergogen.inject('footprint', 'arrobj_test', { - params: { - designator: 'T', - side: 'F', - start: {x: 0, y: 0}, - end: [[1, 0], [0, 1]] - }, - body: p => { - lines = '' - for (const item of p.end) { - lines += `(fp_line (start ${p.start.x} ${p.start.y}) (end ${item[0]} ${item[1]}) (layer Dwgs.User) (width 0.05))\n` - } - return ` - - (module arrobj_test (layer ${p.side}.Cu) (tedit 5CF31DEF) - - ${p.at /* parametric position */} - - ${lines} - - ) - - ` - } - }) - - ergogen.inject('references_test', { + ergogen.inject_footprint('references_test', { + nets: {}, params: {}, body: p => { return `references ${p.ref_hide ? 'hidden' : 'shown'}` diff --git a/test/helpers/register.js b/test/helpers/register.js index 36a7e79..8007d73 100644 --- a/test/helpers/register.js +++ b/test/helpers/register.js @@ -1,12 +1,4 @@ global.chai = require('chai') global.chai.use(require('chai-as-promised')) global.expect = global.chai.expect -global.should = global.chai.should() -global.sinon = require('sinon') - -// Restore the default sandbox after every test -exports.mochaHooks = { - afterEach() { - sinon.restore() - } -} \ No newline at end of file +global.should = global.chai.should() \ No newline at end of file diff --git a/test/index.js b/test/index.js index fc0444b..b552c62 100644 --- a/test/index.js +++ b/test/index.js @@ -8,48 +8,25 @@ const ergogen = require('../src/ergogen') require('./helpers/mock_footprints').inject(ergogen) let what = process.env.npm_config_what -const dump = process.env.npm_config_dump -const lineends = /(?:\r\n|\r|\n)/g - -const handle_slash = (() => { - if (path.sep == '\\') { - return str => str.replace(/\\/g,'/') - } else { - return str => str - } -})() - +let dump = process.env.npm_config_dump // Unit tests // the --what switch supports each unit individually // the --dump switch does nothing here what = what ? what.split(',') : false -for (const unit of glob.sync(handle_slash(path.join(__dirname, 'unit', '*.js')))) { +for (const unit of glob.sync(path.join(__dirname, 'unit', '*.js'))) { const base = path.basename(unit, '.js') if (what && !what.includes(base)) continue require(`./unit/${base}.js`) } - - // Integration tests // the --what switch supports categories (like `points` and `outlines`) -// as well as individual tests using slash-notation (like `points/default`) -// the --dump switch can output the new results, overriding the old reference - -const dump_structure = (obj, depth=-1, prefix='', breadcrumbs=[]) => { - if (a.type(obj)() != 'object') { - console.log(prefix + breadcrumbs.join('_')) - return - } - if (depth == 0) return - for (const [key, val] of Object.entries(obj)) { - breadcrumbs.push(key) - dump_structure(val, depth-1, prefix, breadcrumbs) - breadcrumbs.pop() - } -} +// as well as individual tests using slash-notation (like `points/000`) +// the --dump switch can output actual results for easier reference creation +// by default, json output is generated of the whole `actual`, but a raw, +// type-specific representation can be written if a deep path is specified const cap = s => s.charAt(0).toUpperCase() + s.slice(1) @@ -58,52 +35,42 @@ const test = function(input_path) { this.slow(120000) title = path.basename(input_path, '.yaml').split('_').join(' ') it(title, async function() { - const input = yaml.load(fs.readFileSync(input_path).toString()) - const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) - const references = glob.sync(handle_slash(base) + '___*') - - // handle deliberately wrong inputs - const exception = base + '___EXCEPTION.txt' - if (fs.existsSync(exception)) { - const exception_snippet = fs.readFileSync(exception).toString() - return await ergogen.process(input, true).should.be.rejectedWith(exception_snippet) - } + const actual = await ergogen.process(input, true) - const output = await ergogen.process(input, true) - - // compare output vs. reference - if (references.length) { - for (const expected_path of references) { - let expected = fs.readFileSync(expected_path).toString() - if (expected_path.endsWith('.json')) { - expected = JSON.parse(expected) - } - const comp_path = expected_path.split('___')[1].split('.')[0].split('_').join('.') - const output_part = u.deep(output, comp_path) - if (dump) { - if (a.type(output_part)() == 'string') { - fs.writeFileSync(expected_path, output_part) - } else { - fs.writeJSONSync(expected_path, output_part, {spaces: 4}) - } + // if we're just creating the reference, we can dump the current output + if (dump) { + // whole dump + if (dump === true || dump === 'true') { + const out = path.join( + path.dirname(input_path), + path.basename(input_path, '.yaml') + '___ref_candidate.json' + ) + fs.writeJSONSync(out, actual, {spaces: 4}) + // partial, type-specific dump + } else { + const part = u.deep(actual, dump) + const out = path.join( + path.dirname(input_path), + path.basename(input_path, '.yaml') + '___' + dump.split('.').join('_') + ) + if (a.type(part)() == 'string') { + fs.writeFileSync(out + '.txt', part) } else { - if (a.type(output_part)() == 'string') { - const parse_out = output_part.replace(lineends, '\n') - const parse_exp = expected.replace(lineends, '\n') - parse_out.should.deep.equal(parse_exp) - } else { - // JSON can hide negative zeroes, for example, so we canonical-ize first - const canonical_part = JSON.parse(JSON.stringify(output_part)) - canonical_part.should.deep.equal(expected) - } + fs.writeJSONSync(out + '.json', part, {spaces: 4}) } } + } - // explicit dump-ing above only works, if there are already files with the right name - // if there aren't, dump now outputs a list of candidates that could be referenced - } else if (dump) { - dump_structure(output, 3, base + '___') + // compare actual vs. reference + const base = path.join(path.dirname(input_path), path.basename(input_path, '.yaml')) + for (const expected_path of glob.sync(base + '___*')) { + let expected = fs.readFileSync(expected_path).toString() + if (expected_path.endsWith('.json')) { + expected = JSON.parse(expected) + } + const comp_path = expected_path.split('___')[1].split('.')[0].split('_').join('.') + u.deep(actual, comp_path).should.deep.equal(expected) } }) } @@ -120,30 +87,27 @@ if (what) { regex = path.join(__dirname, w, '*.yaml') } describe(title, function() { - for (const i of glob.sync(handle_slash(regex))) { + for (const i of glob.sync(regex)) { test.call(this, i) } }) } } else { - for (const part of ['points', 'outlines', 'cases', 'pcbs', 'footprints']) { + for (const part of ['points', 'outlines', 'cases', 'pcbs']) { describe(cap(part), function() { - for (const i of glob.sync(handle_slash(path.join(__dirname, part, '*.yaml')))) { + for (const i of glob.sync(path.join(__dirname, part, '*.yaml'))) { test.call(this, i) } }) } } - - // End-to-end tests to actually drive the CLI as well -// --what is the same as above ('cli', or 'cli/prefix') -// --dump automatically overrides the old reference +// --what filter is the same as above ('cli', or 'cli/prefix') +// --dump saves the log, as well as prevents the output from being deleted -const joiner = (a, b) => path.join(a, b) -const read = (...args) => fs.readFileSync(args.reduce(joiner, '')).toString() -const exists = (...args) => fs.existsSync(args.reduce(joiner, '')) +const read = (d, p) => fs.readFileSync(path.join(d, p)).toString() +const exists = (d, p) => fs.existsSync(path.join(d, p)) const { execSync } = require('child_process') const dircompare = require('dir-compare') @@ -155,47 +119,31 @@ for (let w of cli_what) { describe('CLI', function() { this.timeout(120000) this.slow(120000) - for (const t of glob.sync(handle_slash(path.join(__dirname, w)))) { - it(path.basename(t).split('_').join(' '), function() { + for (const t of glob.sync(path.join(__dirname, w))) { + it(cap(path.basename(t).split('_').join(' ')), function() { const command = read(t, 'command') const output_path = exists(t, 'path') ? read(t, 'path') : 'output' fs.removeSync(output_path) - const version_regex = /\bv\d+\.\d+\.\d+(\-develop)?\b/ + const version_regex = /\bv\d+\.\d+\.\d+\b/ // correct execution - if (!exists(t, 'error')) { - let ref_log = '' - if (exists(t, 'log')) { - ref_log = read(t, 'log').replace(version_regex, '') - } + if (exists(t, 'log')) { + const ref_log = read(t, 'log').replace(version_regex, '') const actual_log = execSync(command).toString().replace(version_regex, '') if (dump) { fs.writeFileSync(path.join(t, 'log'), actual_log) } - let ref_path = path.join(t, 'reference') - if (!exists(ref_path)) { - fs.mkdirpSync(ref_path) - } - if (fs.statSync(ref_path).isFile()) { - ref_path = path.resolve(path.join(t, read(ref_path).trim())) - } - const comp_res = dircompare.compareSync(output_path, ref_path, { - compareContent: true, - ignoreLineEnding: true, - compareFileSync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareSync, - compareFileAsync: dircompare.fileCompareHandlers.lineBasedFileCompare.compareAsync + actual_log.should.equal(ref_log) + const comp_res = dircompare.compareSync(output_path, path.join(t, 'reference'), { + compareContent: true }) if (dump) { - fs.moveSync(output_path, ref_path, {overwrite: true}) + fs.moveSync(output_path, path.join(t, 'output'), {overwrite: true}) } else { fs.removeSync(output_path) } - const parse_act_log = actual_log.replace(lineends, '\n') - const parse_ref_log = ref_log.replace(lineends, '\n') - parse_act_log.should.equal(parse_ref_log) comp_res.same.should.be.true - // deliberately incorrect execution } else { - const ref_error = read(t, 'error') + const ref_error = read(t, 'error').replace(version_regex, '') try { execSync(command, {stdio: 'pipe'}) throw 'should_have_thrown' @@ -203,7 +151,7 @@ for (let w of cli_what) { if (ex === 'should_have_thrown') { throw new Error('This command should have thrown!') } - const actual_error = ex.stderr.toString().split('\n')[0] + const actual_error = ex.stderr.toString().replace(version_regex, '') if (dump) { fs.writeFileSync(path.join(t, 'error'), actual_error) } @@ -213,4 +161,4 @@ for (let w of cli_what) { }) } }) -} +} \ No newline at end of file diff --git a/test/outlines/affect_mirror.yaml b/test/outlines/affect_mirror.yaml index d96fc21..98e9791 100644 --- a/test/outlines/affect_mirror.yaml +++ b/test/outlines/affect_mirror.yaml @@ -10,45 +10,46 @@ points: ref: matrix_only_top distance: 30 outlines: - test: - keys: - what: rectangle - where: true - size: 14 - bound: false - rb: - what: rectangle - where: - - ref: mirror_matrix_only_bottom - # we do NOT specify `affect: xyr` here - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack - rt: - what: rectangle - where: - - ref: mirror_matrix_only_top - affect: xyr - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack - lb: - what: rectangle - where: - - ref: matrix_only_bottom - # again, no `affect: xyr` - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack - lt: - what: rectangle - where: - - ref: matrix_only_top - affect: xyr - - shift: [-3,-3] - orient: 30 - size: [6,6] - operation: stack \ No newline at end of file + exports: + test: + keys: + type: keys + side: both + size: 14 + bound: false + rb: + type: rectangle + anchor: + - ref: mirror_matrix_only_bottom + # we do NOT specify `affect: xyr` here + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack + rt: + type: rectangle + anchor: + - ref: mirror_matrix_only_top + affect: xyr + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack + lb: + type: rectangle + anchor: + - ref: matrix_only_bottom + # again, no `affect: xyr` + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack + lt: + type: rectangle + anchor: + - ref: matrix_only_top + affect: xyr + - shift: [-3,-3] + orient: 30 + size: [6,6] + operation: stack \ No newline at end of file diff --git a/test/outlines/affect_mirror___outlines_test_dxf.dxf b/test/outlines/affect_mirror___outlines_test_dxf.dxf index 2d21a6e..b251d92 100644 --- a/test/outlines/affect_mirror___outlines_test_dxf.dxf +++ b/test/outlines/affect_mirror___outlines_test_dxf.dxf @@ -241,193 +241,193 @@ LINE 8 0 10 -27 +31.0980762 20 --5.1961524 +-4.0980762 11 -32.1961524 +36.2942286 21 --8.1961524 +-7.0980762 0 LINE 8 0 10 -32.1961524 +36.2942286 20 --8.1961524 +-7.0980762 11 -35.1961524 +39.2942286 21 --3 +-1.9019238 0 LINE 8 0 10 -35.1961524 +39.2942286 20 --3 +-1.9019238 11 -30 +34.0980762 21 -0 +1.0980762 0 LINE 8 0 10 -30 +34.0980762 20 -0 +1.0980762 11 -27 +31.0980762 21 --5.1961524 +-4.0980762 0 LINE 8 0 10 -27 +31.0980762 20 -13.8038476 +14.9019238 11 -32.1961524 +36.2942286 21 -10.8038476 +11.9019238 0 LINE 8 0 10 -32.1961524 +36.2942286 20 -10.8038476 +11.9019238 11 -35.1961524 +39.2942286 21 -16 +17.0980762 0 LINE 8 0 10 -35.1961524 +39.2942286 20 -16 +17.0980762 11 -30 +34.0980762 21 -19 +20.0980762 0 LINE 8 0 10 -30 +34.0980762 20 -19 +20.0980762 11 -27 +31.0980762 21 -13.8038476 +14.9019238 0 LINE 8 0 10 --2.1961524 +-1.0980762 20 --8.1961524 +-4.0980762 11 -3 +4.0980762 21 --5.1961524 +-1.0980762 0 LINE 8 0 10 -3 +4.0980762 20 --5.1961524 +-1.0980762 11 -0 +1.0980762 21 -0 +4.0980762 0 LINE 8 0 10 -0 +1.0980762 20 -0 +4.0980762 11 --5.1961524 +-4.0980762 21 --3 +1.0980762 0 LINE 8 0 10 --5.1961524 +-4.0980762 20 --3 +1.0980762 11 --2.1961524 +-1.0980762 21 --8.1961524 +-4.0980762 0 LINE 8 0 10 --2.1961524 +-1.0980762 20 -10.8038476 +14.9019238 11 -3 +4.0980762 21 -13.8038476 +17.9019238 0 LINE 8 0 10 -3 +4.0980762 20 -13.8038476 +17.9019238 11 -0 +1.0980762 21 -19 +23.0980762 0 LINE 8 0 10 -0 +1.0980762 20 -19 +23.0980762 11 --5.1961524 +-4.0980762 21 -16 +20.0980762 0 LINE 8 0 10 --5.1961524 +-4.0980762 20 -16 +20.0980762 11 --2.1961524 +-1.0980762 21 -10.8038476 +14.9019238 0 ENDSEC 0 diff --git a/test/outlines/basic.yaml b/test/outlines/basic.yaml index 8802884..73c503b 100644 --- a/test/outlines/basic.yaml +++ b/test/outlines/basic.yaml @@ -10,14 +10,15 @@ points: key: bind: [0, 0, 0, 0] outlines: - outline: - main: - what: rectangle - where: true - size: 20 - min: - what: rectangle - where: true - bound: false - size: 14 - operation: subtract \ No newline at end of file + exports: + outline: + main: + type: keys + side: left + size: 20 + min: + type: keys + side: left + bound: false + size: 14 + operation: subtract \ No newline at end of file diff --git a/test/outlines/binding.yaml b/test/outlines/binding.yaml deleted file mode 100644 index 6fba506..0000000 --- a/test/outlines/binding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -points: - zones: - matrix: - mirror: - ref: matrix_only_first - distance: 30 - columns: - only.rows: - first.bind: 0 - second.bind: [0,10,0,10] - third.bind: [10,0,10,0] - fourth.bind: [u, u/2, u/3, u/4] -outlines: - bound: - - what: rectangle - where: true - size: 20 - bound: true diff --git a/test/outlines/binding___outlines_bound_dxf.dxf b/test/outlines/binding___outlines_bound_dxf.dxf deleted file mode 100644 index 433dd5d..0000000 --- a/test/outlines/binding___outlines_bound_dxf.dxf +++ /dev/null @@ -1,338 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --10 -20 --10 -11 -10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 --10 -11 -10 -21 -9 -0 -LINE -8 -0 -10 --10 -20 -9 -11 --10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 -29 -11 -20 -21 -29 -0 -LINE -8 -0 -10 -20 -20 -9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 --10 -20 -9 -11 --20 -21 -9 -0 -LINE -8 -0 -10 --20 -20 -9 -11 --20 -21 -29 -0 -LINE -8 -0 -10 --20 -20 -29 -11 --10 -21 -29 -0 -LINE -8 -0 -10 -10 -20 -29 -11 -10 -21 -40.6666667 -0 -LINE -8 -0 -10 --10 -20 -29 -11 --10 -21 -40.6666667 -0 -LINE -8 -0 -10 --14.75 -20 -86 -11 -44.75 -21 -86 -0 -LINE -8 -0 -10 -10 -20 -40.6666667 -11 -20 -21 -40.6666667 -0 -LINE -8 -0 -10 --10 -20 -40.6666667 -11 --14.75 -21 -40.6666667 -0 -LINE -8 -0 -10 --14.75 -20 -40.6666667 -11 --14.75 -21 -86 -0 -LINE -8 -0 -10 -20 -20 --10 -11 -40 -21 --10 -0 -LINE -8 -0 -10 -40 -20 --10 -11 -40 -21 -9 -0 -LINE -8 -0 -10 -20 -20 -9 -11 -20 -21 --10 -0 -LINE -8 -0 -10 -40 -20 -29 -11 -50 -21 -29 -0 -LINE -8 -0 -10 -50 -20 -9 -11 -50 -21 -29 -0 -LINE -8 -0 -10 -50 -20 -9 -11 -40 -21 -9 -0 -LINE -8 -0 -10 -40 -20 -29 -11 -40 -21 -40.6666667 -0 -LINE -8 -0 -10 -20 -20 -29 -11 -20 -21 -40.6666667 -0 -LINE -8 -0 -10 -44.75 -20 -40.6666667 -11 -44.75 -21 -86 -0 -LINE -8 -0 -10 -44.75 -20 -40.6666667 -11 -40 -21 -40.6666667 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/circles.yaml b/test/outlines/circles.yaml index e83e4e7..fe8d572 100644 --- a/test/outlines/circles.yaml +++ b/test/outlines/circles.yaml @@ -3,23 +3,24 @@ points: matrix: {} mirror: 20 outlines: - outline: - main: - what: rectangle - where: true - size: 20 - bound: false - middle_circle: - what: circle - where: - aggregate.parts: - - matrix - - mirror_matrix - radius: 15 - outside_circles: - what: circle - where: - ref: matrix - shift: [-10, 10] - radius: 5 - asym: both \ No newline at end of file + exports: + outline: + main: + type: keys + side: both + size: 20 + bound: false + middle_circle: + type: circle + anchor: + ref: + - matrix_default_default + - mirror_matrix_default_default + radius: 15 + outside_circles: + type: circle + anchor: + ref: matrix_default_default + shift: [-10, 10] + radius: 5 + mirror: true \ No newline at end of file diff --git a/test/outlines/expand.yaml b/test/outlines/expand.yaml deleted file mode 100644 index 160f737..0000000 --- a/test/outlines/expand.yaml +++ /dev/null @@ -1,46 +0,0 @@ -points: - zones: - matrix: {} -outlines: - base: - - what: rectangle - where: true - size: 20 - bound: false - sh_beveled: - - what: outline - name: base - expand: "5]" - sh_round: - - what: outline - name: base - expand: "6)" - sh_pointy: - - what: outline - name: base - expand: "7>" - shorthand-combo: - - "sh_pointy" - - "-sh_round" - - "+sh_beveled" - - "-base" - jnt_beveled: - - what: outline - name: base - expand: 8 - joints: beveled - jnt_round: - - what: outline - name: base - expand: 9 - joints: round - jnt_pointy: - - what: outline - name: base - expand: 10 - joints: pointy - joint-name-combo: - - "jnt_pointy" - - "-jnt_round" - - "+jnt_beveled" - - "-base" diff --git a/test/outlines/expand___outlines_joint-name-combo_dxf.dxf b/test/outlines/expand___outlines_joint-name-combo_dxf.dxf deleted file mode 100644 index f8b2a82..0000000 --- a/test/outlines/expand___outlines_joint-name-combo_dxf.dxf +++ /dev/null @@ -1,346 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --20 -20 --20 -11 -20 -21 --20 -0 -LINE -8 -0 -10 -20 -20 --20 -11 -20 -21 -20 -0 -LINE -8 -0 -10 --20 -20 -20 -11 -20 -21 -20 -0 -LINE -8 -0 -10 --20 -20 --20 -11 --20 -21 -20 -0 -LINE -8 -0 -10 --10 -20 --19 -11 -10 -21 --19 -0 -ARC -8 -0 -10 -10 -20 --10 -40 -9 -50 -270 -51 -360 -0 -LINE -8 -0 -10 -19 -20 --10 -11 -19 -21 -10 -0 -ARC -8 -0 -10 -10 -20 -10 -40 -9 -50 -0 -51 -90 -0 -LINE -8 -0 -10 -10 -20 -19 -11 --10 -21 -19 -0 -ARC -8 -0 -10 --10 -20 -10 -40 -9 -50 -90 -51 -180 -0 -LINE -8 -0 -10 --19 -20 -10 -11 --19 -21 --10 -0 -ARC -8 -0 -10 --10 -20 --10 -40 -9 -50 -180 -51 -270 -0 -LINE -8 -0 -10 --13.3137085 -20 --18 -11 -13.3137085 -21 --18 -0 -LINE -8 -0 -10 -13.3137085 -20 --18 -11 -18 -21 --13.3137085 -0 -LINE -8 -0 -10 -18 -20 --13.3137085 -11 -18 -21 -13.3137085 -0 -LINE -8 -0 -10 -13.3137085 -20 -18 -11 -18 -21 -13.3137085 -0 -LINE -8 -0 -10 --13.3137085 -20 -18 -11 -13.3137085 -21 -18 -0 -LINE -8 -0 -10 --18 -20 -13.3137085 -11 --13.3137085 -21 -18 -0 -LINE -8 -0 -10 --18 -20 --13.3137085 -11 --18 -21 -13.3137085 -0 -LINE -8 -0 -10 --18 -20 --13.3137085 -11 --13.3137085 -21 --18 -0 -LINE -8 -0 -10 --10 -20 --10 -11 -10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 --10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 --10 -21 -10 -0 -LINE -8 -0 -10 --10 -20 -10 -11 --10 -21 --10 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/expand___outlines_shorthand-combo_dxf.dxf b/test/outlines/expand___outlines_shorthand-combo_dxf.dxf deleted file mode 100644 index 6a9b92d..0000000 --- a/test/outlines/expand___outlines_shorthand-combo_dxf.dxf +++ /dev/null @@ -1,346 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --17 -20 --17 -11 -17 -21 --17 -0 -LINE -8 -0 -10 -17 -20 --17 -11 -17 -21 -17 -0 -LINE -8 -0 -10 --17 -20 -17 -11 -17 -21 -17 -0 -LINE -8 -0 -10 --17 -20 --17 -11 --17 -21 -17 -0 -LINE -8 -0 -10 --10 -20 --16 -11 -10 -21 --16 -0 -ARC -8 -0 -10 -10 -20 --10 -40 -6 -50 -270 -51 -360 -0 -LINE -8 -0 -10 -16 -20 --10 -11 -16 -21 -10 -0 -ARC -8 -0 -10 -10 -20 -10 -40 -6 -50 -0 -51 -90 -0 -LINE -8 -0 -10 -10 -20 -16 -11 --10 -21 -16 -0 -ARC -8 -0 -10 --10 -20 -10 -40 -6 -50 -90 -51 -180 -0 -LINE -8 -0 -10 --16 -20 -10 -11 --16 -21 --10 -0 -ARC -8 -0 -10 --10 -20 --10 -40 -6 -50 -180 -51 -270 -0 -LINE -8 -0 -10 --12.0710678 -20 --15 -11 -12.0710678 -21 --15 -0 -LINE -8 -0 -10 -12.0710678 -20 --15 -11 -15 -21 --12.0710678 -0 -LINE -8 -0 -10 -15 -20 --12.0710678 -11 -15 -21 -12.0710678 -0 -LINE -8 -0 -10 -12.0710678 -20 -15 -11 -15 -21 -12.0710678 -0 -LINE -8 -0 -10 --12.0710678 -20 -15 -11 -12.0710678 -21 -15 -0 -LINE -8 -0 -10 --15 -20 -12.0710678 -11 --12.0710678 -21 -15 -0 -LINE -8 -0 -10 --15 -20 --12.0710678 -11 --15 -21 -12.0710678 -0 -LINE -8 -0 -10 --15 -20 --12.0710678 -11 --12.0710678 -21 --15 -0 -LINE -8 -0 -10 --10 -20 --10 -11 -10 -21 --10 -0 -LINE -8 -0 -10 -10 -20 --10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 --10 -21 -10 -0 -LINE -8 -0 -10 --10 -20 -10 -11 --10 -21 --10 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/fillet.yaml b/test/outlines/fillet.yaml new file mode 100644 index 0000000..3b5e05f --- /dev/null +++ b/test/outlines/fillet.yaml @@ -0,0 +1,22 @@ +points: + key: + padding: cy + bind: 0.1 + zones: + matrix: + columns: + one: + two: + rows: + bottom: + top: +outlines: + exports: + base: + - type: keys + side: left + size: cy + fillet: + - type: outline + name: base + fillet: 2 \ No newline at end of file diff --git a/test/outlines/outlines___outlines_fillet_dxf.dxf b/test/outlines/fillet___outlines_fillet_dxf.dxf similarity index 100% rename from test/outlines/outlines___outlines_fillet_dxf.dxf rename to test/outlines/fillet___outlines_fillet_dxf.dxf diff --git a/test/outlines/gluing.yaml b/test/outlines/gluing.yaml new file mode 100644 index 0000000..60335d4 --- /dev/null +++ b/test/outlines/gluing.yaml @@ -0,0 +1,50 @@ +points: + zones: + matrix: + columns: + left.key.bind: [,10,,] + right.key.bind: [,,,10] + rows: + bottom.key.bind: [10,,,] + top.key.bind: [,,10,] + key: + bind: [0, 0, 0, 0] + rotate: -20 + mirror: + ref: matrix_right_top + distance: 30 +outlines: + glue: + default: + top: + left: + ref: matrix_right_top + shift: [,sy / 2] + right: + ref: mirror_matrix_right_top + shift: [,sy / 2] + bottom: + left: + ref: matrix_right_bottom + shift: [,sy / -2] + right: + ref: mirror_matrix_right_bottom + shift: [,sy / -2] + exports: + outline: + main: + type: keys + side: both + size: 20 + min: + type: keys + side: both + bound: false + size: 14 + operation: subtract + optout: + main: + type: keys + side: both + size: 20 + glue: false \ No newline at end of file diff --git a/test/points/default___demo_dxf.dxf b/test/outlines/gluing___outlines_optout_dxf.dxf similarity index 52% rename from test/points/default___demo_dxf.dxf rename to test/outlines/gluing___outlines_optout_dxf.dxf index d28ab98..95ab1d7 100644 --- a/test/points/default___demo_dxf.dxf +++ b/test/outlines/gluing___outlines_optout_dxf.dxf @@ -49,97 +49,97 @@ LINE 8 0 10 --9 +-12.8171276 20 -9 +-5.9767248 11 -9 +23.8308846 21 -9 +-19.3155103 0 LINE 8 0 10 -9 +-12.8171276 20 -9 +-5.9767248 11 -9 +0.5216579 21 --9 +30.6712874 0 LINE 8 0 10 -9 +0.5216579 20 --9 +30.6712874 11 --9 +37.1696701 21 --9 +17.3325019 0 LINE 8 0 10 --9 +23.8308846 20 --9 +-19.3155103 11 --9 +37.1696701 21 -9 +17.3325019 0 LINE 8 0 10 --9 +54.8742004 20 -9 +-19.3155103 11 -9 +91.5222126 21 -9 +-5.9767248 0 LINE 8 0 10 -9 +78.1834271 20 -9 +30.6712874 11 -9 +91.5222126 21 --9 +-5.9767248 0 LINE 8 0 10 -9 +41.5354149 20 --9 +17.3325019 11 --9 +78.1834271 21 --9 +30.6712874 0 LINE 8 0 10 --9 +41.5354149 20 --9 +17.3325019 11 --9 +54.8742004 21 -9 +-19.3155103 0 ENDSEC 0 diff --git a/test/outlines/gluing___outlines_outline_dxf.dxf b/test/outlines/gluing___outlines_outline_dxf.dxf new file mode 100644 index 0000000..51c042d --- /dev/null +++ b/test/outlines/gluing___outlines_outline_dxf.dxf @@ -0,0 +1,518 @@ +0 +SECTION +2 +HEADER +9 +$INSUNITS +70 +4 +0 +ENDSEC +0 +SECTION +2 +TABLES +0 +TABLE +2 +LTYPE +0 +LTYPE +72 +65 +70 +64 +2 +CONTINUOUS +3 +______ +73 +0 +40 +0 +0 +ENDTAB +0 +TABLE +2 +LAYER +0 +ENDTAB +0 +ENDSEC +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +-12.8171276 +20 +-5.9767248 +11 +39.3525425 +21 +-24.9649308 +0 +LINE +8 +0 +10 +-12.8171276 +20 +-5.9767248 +11 +0.5216579 +21 +30.6712874 +0 +LINE +8 +0 +10 +0.5216579 +20 +30.6712874 +11 +39.3525425 +21 +16.5380017 +0 +LINE +8 +0 +10 +41.5354149 +20 +17.3325019 +11 +78.1834271 +21 +30.6712874 +0 +LINE +8 +0 +10 +41.5354149 +20 +17.3325019 +11 +39.3525425 +21 +16.5380017 +0 +LINE +8 +0 +10 +39.3525425 +20 +-24.9649308 +11 +91.5222126 +21 +-5.9767248 +0 +LINE +8 +0 +10 +78.1834271 +20 +30.6712874 +11 +91.5222126 +21 +-5.9767248 +0 +LINE +8 +0 +10 +-8.9719893 +20 +-4.1837073 +11 +4.1837073 +21 +-8.9719893 +0 +LINE +8 +0 +10 +4.1837073 +20 +-8.9719893 +11 +8.9719893 +21 +4.1837073 +0 +LINE +8 +0 +10 +8.9719893 +20 +4.1837073 +11 +-4.1837073 +21 +8.9719893 +0 +LINE +8 +0 +10 +-4.1837073 +20 +8.9719893 +11 +-8.9719893 +21 +-4.1837073 +0 +LINE +8 +0 +10 +-2.4736066 +20 +13.6704525 +11 +10.68209 +21 +8.8821705 +0 +LINE +8 +0 +10 +10.68209 +20 +8.8821705 +11 +15.470372 +21 +22.0378671 +0 +LINE +8 +0 +10 +15.470372 +20 +22.0378671 +11 +2.3146754 +21 +26.8261491 +0 +LINE +8 +0 +10 +2.3146754 +20 +26.8261491 +11 +-2.4736066 +21 +13.6704525 +0 +LINE +8 +0 +10 +8.8821705 +20 +-10.68209 +11 +22.0378671 +21 +-15.470372 +0 +LINE +8 +0 +10 +22.0378671 +20 +-15.470372 +11 +26.8261491 +21 +-2.3146754 +0 +LINE +8 +0 +10 +26.8261491 +20 +-2.3146754 +11 +13.6704525 +21 +2.4736066 +0 +LINE +8 +0 +10 +13.6704525 +20 +2.4736066 +11 +8.8821705 +21 +-10.68209 +0 +LINE +8 +0 +10 +15.3805532 +20 +7.1720698 +11 +28.5362498 +21 +2.3837878 +0 +LINE +8 +0 +10 +28.5362498 +20 +2.3837878 +11 +33.3245318 +21 +15.5394844 +0 +LINE +8 +0 +10 +33.3245318 +20 +15.5394844 +11 +20.1688352 +21 +20.3277664 +0 +LINE +8 +0 +10 +20.1688352 +20 +20.3277664 +11 +15.3805532 +21 +7.1720698 +0 +LINE +8 +0 +10 +74.5213777 +20 +-8.9719893 +11 +87.6770743 +21 +-4.1837073 +0 +LINE +8 +0 +10 +87.6770743 +20 +-4.1837073 +11 +82.8887923 +21 +8.9719893 +0 +LINE +8 +0 +10 +82.8887923 +20 +8.9719893 +11 +69.7330957 +21 +4.1837073 +0 +LINE +8 +0 +10 +69.7330957 +20 +4.1837073 +11 +74.5213777 +21 +-8.9719893 +0 +LINE +8 +0 +10 +68.022995 +20 +8.8821705 +11 +81.1786916 +21 +13.6704525 +0 +LINE +8 +0 +10 +81.1786916 +20 +13.6704525 +11 +76.3904096 +21 +26.8261491 +0 +LINE +8 +0 +10 +76.3904096 +20 +26.8261491 +11 +63.234713 +21 +22.0378671 +0 +LINE +8 +0 +10 +63.234713 +20 +22.0378671 +11 +68.022995 +21 +8.8821705 +0 +LINE +8 +0 +10 +56.6672179 +20 +-15.470372 +11 +69.8229145 +21 +-10.68209 +0 +LINE +8 +0 +10 +69.8229145 +20 +-10.68209 +11 +65.0346325 +21 +2.4736066 +0 +LINE +8 +0 +10 +65.0346325 +20 +2.4736066 +11 +51.8789359 +21 +-2.3146754 +0 +LINE +8 +0 +10 +51.8789359 +20 +-2.3146754 +11 +56.6672179 +21 +-15.470372 +0 +LINE +8 +0 +10 +50.1688352 +20 +2.3837878 +11 +63.3245318 +21 +7.1720698 +0 +LINE +8 +0 +10 +63.3245318 +20 +7.1720698 +11 +58.5362498 +21 +20.3277664 +0 +LINE +8 +0 +10 +58.5362498 +20 +20.3277664 +11 +45.3805532 +21 +15.5394844 +0 +LINE +8 +0 +10 +45.3805532 +20 +15.5394844 +11 +50.1688352 +21 +2.3837878 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/test/outlines/outlines.yaml b/test/outlines/outlines.yaml deleted file mode 100644 index 99a70b6..0000000 --- a/test/outlines/outlines.yaml +++ /dev/null @@ -1,37 +0,0 @@ -points: - key: - padding: cy - bind: 0.1 - zones: - matrix: - columns: - one: - two: - rows: - bottom: - top: -outlines: - base: - - what: rectangle - where: true - size: cy - bound: true - adjust: - - what: circle - where: true - radius: 2 - # adjust works, and it can use shape-specific units - adjust.shift: [0, r] - fillet: - - name: base - fillet: 2 - scale: - - name: fillet - scale: 0.5 - combination: - - "base" - - "-scale" - - "~fillet" - expand: - - name: combination - expand: 1 diff --git a/test/outlines/outlines___outlines_adjust_dxf.dxf b/test/outlines/outlines___outlines_adjust_dxf.dxf deleted file mode 100644 index 5a902b7..0000000 --- a/test/outlines/outlines___outlines_adjust_dxf.dxf +++ /dev/null @@ -1,90 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -CIRCLE -8 -0 -10 -0 -20 -2 -40 -2 -0 -CIRCLE -8 -0 -10 -0 -20 -19 -40 -2 -0 -CIRCLE -8 -0 -10 -19 -20 -2 -40 -2 -0 -CIRCLE -8 -0 -10 -19 -20 -19 -40 -2 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/outlines___outlines_combination_dxf.dxf b/test/outlines/outlines___outlines_combination_dxf.dxf deleted file mode 100644 index 557f735..0000000 --- a/test/outlines/outlines___outlines_combination_dxf.dxf +++ /dev/null @@ -1,514 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 -8.6 -20 --6.6 -11 -8.6 -21 --4.3 -0 -LINE -8 -0 -10 -8.6 -20 -12.8 -11 -8.6 -21 -23.6 -0 -LINE -8 -0 -10 --6.6 -20 --8.6 -11 -6.6 -21 --8.6 -0 -LINE -8 -0 -10 --8.6 -20 --6.6 -11 --8.6 -21 -23.6 -0 -LINE -8 -0 -10 --6.6 -20 -25.6 -11 -6.6 -21 -25.6 -0 -LINE -8 -0 -10 -27.6 -20 --6.6 -11 -27.6 -21 -23.6 -0 -LINE -8 -0 -10 -12.4 -20 --8.6 -11 -25.6 -21 --8.6 -0 -LINE -8 -0 -10 -10.4 -20 --6.6 -11 -10.4 -21 --4.3 -0 -LINE -8 -0 -10 -10.4 -20 -12.8 -11 -10.4 -21 -23.6 -0 -LINE -8 -0 -10 -12.4 -20 -25.6 -11 -25.6 -21 -25.6 -0 -LINE -8 -0 -10 -4.3 -20 --3.3 -11 -4.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 --4.3 -11 -3.3 -21 --4.3 -0 -LINE -8 -0 -10 --4.3 -20 --3.3 -11 --4.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 -12.8 -11 -3.3 -21 -12.8 -0 -LINE -8 -0 -10 -13.8 -20 --3.3 -11 -13.8 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 --4.3 -11 -8.6 -21 --4.3 -0 -LINE -8 -0 -10 -10.4 -20 --4.3 -11 -12.8 -21 --4.3 -0 -LINE -8 -0 -10 -5.2 -20 --3.3 -11 -5.2 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 -12.8 -11 -8.6 -21 -12.8 -0 -LINE -8 -0 -10 -10.4 -20 -12.8 -11 -12.8 -21 -12.8 -0 -ARC -8 -0 -10 -3.3 -20 -11.8 -40 -1 -50 -0 -51 -90 -0 -ARC -8 -0 -10 --3.3 -20 -11.8 -40 -1 -50 -90 -51 -180 -0 -ARC -8 -0 -10 --3.3 -20 --3.3 -40 -1 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -3.3 -20 --3.3 -40 -1 -50 -270 -51 -0 -0 -ARC -8 -0 -10 -12.8 -20 -11.8 -40 -1 -50 -0 -51 -90 -0 -ARC -8 -0 -10 -6.2 -20 -11.8 -40 -1 -50 -90 -51 -180 -0 -ARC -8 -0 -10 -6.2 -20 --3.3 -40 -1 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -12.8 -20 --3.3 -40 -1 -50 -270 -51 -0 -0 -ARC -8 -0 -10 -6.6 -20 -23.6 -40 -2 -50 -0 -51 -90 -0 -ARC -8 -0 -10 --6.6 -20 -23.6 -40 -2 -50 -90 -51 -180 -0 -ARC -8 -0 -10 --6.6 -20 --6.6 -40 -2 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -6.6 -20 --6.6 -40 -2 -50 -270 -51 -0 -0 -ARC -8 -0 -10 -25.6 -20 -23.6 -40 -2 -50 -0 -51 -90 -0 -ARC -8 -0 -10 -12.4 -20 -23.6 -40 -2 -50 -90 -51 -180 -0 -ARC -8 -0 -10 -12.4 -20 --6.6 -40 -2 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -25.6 -20 --6.6 -40 -2 -50 -270 -51 -0 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/outlines___outlines_expand_dxf.dxf b/test/outlines/outlines___outlines_expand_dxf.dxf deleted file mode 100644 index b129818..0000000 --- a/test/outlines/outlines___outlines_expand_dxf.dxf +++ /dev/null @@ -1,410 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --6.6 -20 --9.6 -11 -6.6 -21 --9.6 -0 -ARC -8 -0 -10 -6.6 -20 --6.6 -40 -3 -50 -270 -51 -345.164888 -0 -ARC -8 -0 -10 -12.4 -20 --6.6 -40 -3 -50 -194.835112 -51 -270 -0 -LINE -8 -0 -10 -12.4 -20 --9.6 -11 -25.6 -21 --9.6 -0 -ARC -8 -0 -10 -25.6 -20 --6.6 -40 -3 -50 -270 -51 -360 -0 -LINE -8 -0 -10 -28.6 -20 --6.6 -11 -28.6 -21 -23.6 -0 -ARC -8 -0 -10 -25.6 -20 -23.6 -40 -3 -50 -0 -51 -90 -0 -LINE -8 -0 -10 -12.4 -20 -26.6 -11 -25.6 -21 -26.6 -0 -ARC -8 -0 -10 -12.4 -20 -23.6 -40 -3 -50 -90 -51 -165.164888 -0 -ARC -8 -0 -10 -6.6 -20 -23.6 -40 -3 -50 -14.835112 -51 -90 -0 -LINE -8 -0 -10 --6.6 -20 -26.6 -11 -6.6 -21 -26.6 -0 -ARC -8 -0 -10 --6.6 -20 -23.6 -40 -3 -50 -90 -51 -180 -0 -LINE -8 -0 -10 --9.6 -20 --6.6 -11 --9.6 -21 -23.6 -0 -ARC -8 -0 -10 --6.6 -20 --6.6 -40 -3 -50 -180 -51 -270 -0 -LINE -8 -0 -10 -12.8 -20 --3.3 -11 -12.8 -21 -11.8 -0 -LINE -8 -0 -10 -10.4 -20 -11.8 -11 -12.8 -21 -11.8 -0 -ARC -8 -0 -10 -10.4 -20 -12.8 -40 -1 -50 -205.8419331 -51 -270 -0 -ARC -8 -0 -10 -8.6 -20 -12.8 -40 -1 -50 -270 -51 -334.1580669 -0 -LINE -8 -0 -10 -6.2 -20 -11.8 -11 -8.6 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 --3.3 -11 -6.2 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 --3.3 -11 -8.6 -21 --3.3 -0 -ARC -8 -0 -10 -8.6 -20 --4.3 -40 -1 -50 -25.8419331 -51 -90 -0 -ARC -8 -0 -10 -10.4 -20 --4.3 -40 -1 -50 -90 -51 -154.1580669 -0 -LINE -8 -0 -10 -10.4 -20 --3.3 -11 -12.8 -21 --3.3 -0 -LINE -8 -0 -10 -3.3 -20 --3.3 -11 -3.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 -11.8 -11 -3.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 --3.3 -11 --3.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 --3.3 -11 -3.3 -21 --3.3 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/outlines___outlines_scale_dxf.dxf b/test/outlines/outlines___outlines_scale_dxf.dxf deleted file mode 100644 index 1cd04be..0000000 --- a/test/outlines/outlines___outlines_scale_dxf.dxf +++ /dev/null @@ -1,258 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 -4.3 -20 --3.3 -11 -4.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 --4.3 -11 -3.3 -21 --4.3 -0 -LINE -8 -0 -10 --4.3 -20 --3.3 -11 --4.3 -21 -11.8 -0 -LINE -8 -0 -10 --3.3 -20 -12.8 -11 -3.3 -21 -12.8 -0 -LINE -8 -0 -10 -13.8 -20 --3.3 -11 -13.8 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 --4.3 -11 -12.8 -21 --4.3 -0 -LINE -8 -0 -10 -5.2 -20 --3.3 -11 -5.2 -21 -11.8 -0 -LINE -8 -0 -10 -6.2 -20 -12.8 -11 -12.8 -21 -12.8 -0 -ARC -8 -0 -10 -3.3 -20 -11.8 -40 -1 -50 -0 -51 -90 -0 -ARC -8 -0 -10 --3.3 -20 -11.8 -40 -1 -50 -90 -51 -180 -0 -ARC -8 -0 -10 --3.3 -20 --3.3 -40 -1 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -3.3 -20 --3.3 -40 -1 -50 -270 -51 -0 -0 -ARC -8 -0 -10 -12.8 -20 -11.8 -40 -1 -50 -0 -51 -90 -0 -ARC -8 -0 -10 -6.2 -20 -11.8 -40 -1 -50 -90 -51 -180 -0 -ARC -8 -0 -10 -6.2 -20 --3.3 -40 -1 -50 -180 -51 -270 -0 -ARC -8 -0 -10 -12.8 -20 --3.3 -40 -1 -50 -270 -51 -0 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/outlines/polygons.yaml b/test/outlines/polygons.yaml index 7dfc88e..d22f109 100644 --- a/test/outlines/polygons.yaml +++ b/test/outlines/polygons.yaml @@ -3,26 +3,27 @@ points: matrix: {} mirror: 20 outlines: - outline: - main: - what: rectangle - where: true - size: 20 - bound: false - middle_poly: - what: polygon - where.aggregate.parts: - - matrix - - mirror_matrix - points: - - shift: [0, 20] - - shift: [20, -40] - - shift: [-40, 0] - outside_polys: - what: polygon - where.ref: matrix - points: - - shift: [-10, 15] - - shift: [5, -10] - - shift: [-10, 0] - asym: both \ No newline at end of file + exports: + outline: + main: + type: keys + side: both + size: 20 + bound: false + middle_poly: + type: polygon + points: + - ref: + - matrix_default_default + - mirror_matrix_default_default + shift: [0, 20] + - shift: [20, -40] + - shift: [-40, 0] + outside_polys: + type: polygon + points: + - ref: matrix_default_default + shift: [-10, 15] + - shift: [5, -10] + - shift: [-10, 0] + mirror: true \ No newline at end of file diff --git a/test/outlines/rectangles.yaml b/test/outlines/rectangles.yaml index 6cd7c2f..01410ec 100644 --- a/test/outlines/rectangles.yaml +++ b/test/outlines/rectangles.yaml @@ -3,25 +3,25 @@ points: matrix: {} mirror: 20 outlines: - outline: - main: - what: rectangle - where: true - size: 20 - bound: false - middle_rect: - what: rectangle - where: - aggregate.parts: - - matrix - - mirror_matrix - shift: [0, sy/2] - size: [20, 40] - corner: 5 - outside_rects: - what: rectangle - where: - ref: matrix - shift: [-10, 10] - size: 10 - asym: both \ No newline at end of file + exports: + outline: + main: + type: keys + side: both + size: 20 + bound: false + middle_rect: + type: rectangle + anchor: + ref: + - matrix_default_default + - mirror_matrix_default_default + shift: [-sx/2, 0] + size: [20, 40] + outside_rects: + type: rectangle + anchor: + ref: matrix_default_default + shift: [-15, 5] + size: 10 + mirror: true \ No newline at end of file diff --git a/test/outlines/rectangles___outlines_outline_dxf.dxf b/test/outlines/rectangles___outlines_outline_dxf.dxf index 101992d..8de0346 100644 --- a/test/outlines/rectangles___outlines_outline_dxf.dxf +++ b/test/outlines/rectangles___outlines_outline_dxf.dxf @@ -67,7 +67,7 @@ LINE 11 10 21 -5 +0 0 LINE 8 @@ -135,7 +135,7 @@ LINE 10 30 20 -5 +0 11 30 21 @@ -145,28 +145,14 @@ LINE 8 0 10 -15 +10 20 0 11 -25 +30 21 0 0 -ARC -8 -0 -10 -25 -20 -5 -40 -5 -50 -270 -51 -360 -0 LINE 8 0 @@ -177,74 +163,32 @@ LINE 11 30 21 -35 -0 -ARC -8 -0 -10 -25 -20 -35 40 -5 -50 -0 -51 -90 0 LINE 8 0 10 -25 +30 20 40 11 -15 +10 21 40 0 -ARC -8 -0 -10 -15 -20 -35 -40 -5 -50 -90 -51 -180 -0 LINE 8 0 10 10 20 -35 +40 11 10 21 10 0 -ARC -8 -0 -10 -15 -20 -5 -40 -5 -50 -180 -51 -270 -0 LINE 8 0 diff --git a/test/pcbs/mock_footprints.yaml b/test/pcbs/mock_footprints.yaml index 14e9821..9611264 100644 --- a/test/pcbs/mock_footprints.yaml +++ b/test/pcbs/mock_footprints.yaml @@ -1,12 +1,16 @@ -points.zones.matrix: - mirror: 10 - key: - magic_value: 5 +points: + zones: + matrix: + columns: + one: + rows: + only: outlines: - edge: - - what: rectangle - where: true - size: u + exports: + edge: + - type: keys + side: left + size: [u, u] pcbs: main: outlines: @@ -14,42 +18,20 @@ pcbs: outline: edge footprints: trace: - what: trace_test - where: true - adjust: + type: trace_test + anchor: shift: [1, 1] rotate: 30 - params: - width: u/40 - side: F - mirror: - side: B zone: - what: zone_test - where: + type: zone_test + anchor: shift: [1, 1] rotate: 30 dyn: - what: dynamic_net_test - anc1: - what: anchor_test - params: + type: dynamic_net_test + anc: + type: anchor_test + anchors: end: - ref: matrix - shift: [10, 10] - anc2: - what: anchor_test - params: - end: matrix - arrobj: - what: arrobj_test - params: - start: {x: 5, y: 5} - end: [[6, 6], [7, 7]] - arrobj_templated: - what: arrobj_test - where: - ref: matrix - params: - start: '{x: {{magic_value}}, y: {{magic_value}}}' - end: '[[6, 6], [7, {{magic_value}}]]' + ref: matrix_one_only + shift: [10, 10] \ No newline at end of file diff --git a/test/pcbs/mock_footprints___pcbs.json b/test/pcbs/mock_footprints___pcbs.json new file mode 100644 index 0000000..c4083c7 --- /dev/null +++ b/test/pcbs/mock_footprints___pcbs.json @@ -0,0 +1,3 @@ +{ + "main": "\n \n(kicad_pcb (version 20171130) (host pcbnew 5.1.6)\n\n (page A3)\n (title_block\n (title main)\n (rev v1.0.0)\n (company Unknown)\n )\n\n (general\n (thickness 1.6)\n )\n\n (layers\n (0 F.Cu signal)\n (31 B.Cu signal)\n (32 B.Adhes user)\n (33 F.Adhes user)\n (34 B.Paste user)\n (35 F.Paste user)\n (36 B.SilkS user)\n (37 F.SilkS user)\n (38 B.Mask user)\n (39 F.Mask user)\n (40 Dwgs.User user)\n (41 Cmts.User user)\n (42 Eco1.User user)\n (43 Eco2.User user)\n (44 Edge.Cuts user)\n (45 Margin user)\n (46 B.CrtYd user)\n (47 F.CrtYd user)\n (48 B.Fab user)\n (49 F.Fab user)\n )\n\n (setup\n (last_trace_width 0.25)\n (trace_clearance 0.2)\n (zone_clearance 0.508)\n (zone_45_only no)\n (trace_min 0.2)\n (via_size 0.8)\n (via_drill 0.4)\n (via_min_size 0.4)\n (via_min_drill 0.3)\n (uvia_size 0.3)\n (uvia_drill 0.1)\n (uvias_allowed no)\n (uvia_min_size 0.2)\n (uvia_min_drill 0.1)\n (edge_width 0.05)\n (segment_width 0.2)\n (pcb_text_width 0.3)\n (pcb_text_size 1.5 1.5)\n (mod_edge_width 0.12)\n (mod_text_size 1 1)\n (mod_text_width 0.15)\n (pad_size 1.524 1.524)\n (pad_drill 0.762)\n (pad_to_mask_clearance 0.05)\n (aux_axis_origin 0 0)\n (visible_elements FFFFFF7F)\n (pcbplotparams\n (layerselection 0x010fc_ffffffff)\n (usegerberextensions false)\n (usegerberattributes true)\n (usegerberadvancedattributes true)\n (creategerberjobfile true)\n (excludeedgelayer true)\n (linewidth 0.100000)\n (plotframeref false)\n (viasonmask false)\n (mode 1)\n (useauxorigin false)\n (hpglpennumber 1)\n (hpglpenspeed 20)\n (hpglpendiameter 15.000000)\n (psnegative false)\n (psa4output false)\n (plotreference true)\n (plotvalue true)\n (plotinvisibletext false)\n (padsonsilk false)\n (subtractmaskfromsilk false)\n (outputformat 1)\n (mirror false)\n (drillshape 1)\n (scaleselection 1)\n (outputdirectory \"\"))\n )\n\n (net 0 \"\")\n(net 1 \"P1\")\n(net 2 \"T3_1\")\n(net 3 \"T3_2\")\n(net 4 \"T3_3\")\n \n (net_class Default \"This is the default net class.\"\n (clearance 0.2)\n (trace_width 0.25)\n (via_dia 0.8)\n (via_drill 0.4)\n (uvia_dia 0.3)\n (uvia_drill 0.1)\n (add_net \"\")\n(add_net \"P1\")\n(add_net \"T3_1\")\n(add_net \"T3_2\")\n(add_net \"T3_3\")\n )\n\n \n\n (module trace_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 1 -1 30)\n\n (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n )\n\n (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.25) (layer F.Cu) (net 1))\n\n \n\n\n (module zone_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 1 -1 30)\n\n (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 1 \"P1\") (solder_mask_margin 0.2))\n\n )\n\n (zone (net 1) (net_name P1) (layer F.Cu) (tstamp 0) (hatch full 0.508)\n (connect_pads (clearance 0.508))\n (min_thickness 0.254)\n (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))\n (polygon (pts (xy 7.830127 0.8301270000000001) (xy 2.830127 -7.830127) (xy -5.830127 -2.830127) (xy -0.8301270000000001 5.830127)))\n )\n\n \n \n\n (module dynamic_net_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 0 0 0)\n\n (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 2 \"T3_1\") (solder_mask_margin 0.2))\n\n (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 3 \"T3_2\") (solder_mask_margin 0.2))\n\n (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask)\n (net 4 \"T3_3\") (solder_mask_margin 0.2))\n\n )\n\n \n \n\n (module anchor_test (layer F.Cu) (tedit 5CF31DEF)\n\n (at 0 0 0)\n\n (fp_line (start 0 0) (end 10 -10) (layer Dwgs.User) (width 0.05))\n\n )\n\n \n (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n(gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n(gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n(gr_line (start -9.5 -9.5) (end -9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15))\n \n)\n\n " +} \ No newline at end of file diff --git a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb b/test/pcbs/mock_footprints___pcbs_main.kicad_pcb deleted file mode 100644 index 463dd01..0000000 --- a/test/pcbs/mock_footprints___pcbs_main.kicad_pcb +++ /dev/null @@ -1,248 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title main) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") -(net 1 "P1") -(net 2 "T4_1") -(net 3 "T4_2") -(net 4 "T4_3") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") -(add_net "P1") -(add_net "T4_1") -(add_net "T4_2") -(add_net "T4_3") - ) - - - - (module trace_test (layer F.Cu) (tedit 5CF31DEF) - - (at 1 -1 30) - - (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - ) - - (segment (start 1 -1) (end 7.830127 0.8301270000000001) (width 0.475) (layer F.Cu) (net 1)) - - - - - (module trace_test (layer B.Cu) (tedit 5CF31DEF) - - (at 19 -1 -30) - - (pad 1 smd rect (at 0 0 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - (pad 2 smd rect (at -5 5 -30) (size 1 1) (layers B.Cu B.Paste B.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - ) - - (segment (start 19 -1) (end 12.169872999999999 0.8301270000000001) (width 0.475) (layer B.Cu) (net 1)) - - - - - (module zone_test (layer F.Cu) (tedit 5CF31DEF) - - (at 1 -1 30) - - (pad 1 smd rect (at 0 0 30) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - (pad 2 smd rect (at 5 5 30) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 1 "P1") (solder_mask_margin 0.2)) - - ) - - (zone (net 1) (net_name P1) (layer F.Cu) (tstamp 0) (hatch full 0.508) - (connect_pads (clearance 0.508)) - (min_thickness 0.254) - (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508)) - (polygon (pts (xy 7.830127 0.8301270000000001) (xy 2.830127 -7.830127) (xy -5.830127 -2.830127) (xy -0.8301270000000001 5.830127))) - ) - - - - - (module dynamic_net_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 2 "T4_1") (solder_mask_margin 0.2)) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 3 "T4_2") (solder_mask_margin 0.2)) - - (pad 1 smd rect (at 0 0 0) (size 1 1) (layers F.Cu F.Paste F.Mask) - (net 4 "T4_3") (solder_mask_margin 0.2)) - - ) - - - - - (module anchor_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (fp_line (start 0 0) (end 10 -10) (layer Dwgs.User) (width 0.05)) - - ) - - - - - (module anchor_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (fp_line (start 0 0) (end 0 0) (layer Dwgs.User) (width 0.05)) - - ) - - - - - (module arrobj_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (fp_line (start 5 5) (end 6 6) (layer Dwgs.User) (width 0.05)) -(fp_line (start 5 5) (end 7 7) (layer Dwgs.User) (width 0.05)) - - - ) - - - - - (module arrobj_test (layer F.Cu) (tedit 5CF31DEF) - - (at 0 0 0) - - (fp_line (start 5 5) (end 6 6) (layer Dwgs.User) (width 0.05)) -(fp_line (start 5 5) (end 7 5) (layer Dwgs.User) (width 0.05)) - - - ) - - - (gr_line (start -9.5 9.5) (end 9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 9.5) (end 9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 -9.5) (end -9.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start -9.5 -9.5) (end -9.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 10.5 9.5) (end 29.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 29.5 9.5) (end 29.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 29.5 -9.5) (end 10.5 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 10.5 -9.5) (end 10.5 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) - -) - - \ No newline at end of file diff --git a/test/pcbs/outlines.yaml b/test/pcbs/outlines.yaml deleted file mode 100644 index 7a7cd82..0000000 --- a/test/pcbs/outlines.yaml +++ /dev/null @@ -1,34 +0,0 @@ -points.zones.matrix: - columns: - left: - right: - rows.only: -outlines: - left: - out: - what: rectangle - where: matrix_left_only - size: u - fillet: u/5 - in: - what: circle - where: matrix_left_only - radius: u/4 - operation: subtract - right: - out: - what: rectangle - where: matrix_right_only - size: u - bevel: u/5 - in: - what: rectangle - where: matrix_right_only - size: u/2 - bevel: u/4 - operation: subtract -pcbs: - main: - outlines: - - outline: 'left' - - outline: 'right' diff --git a/test/pcbs/outlines___pcbs_main.kicad_pcb b/test/pcbs/outlines___pcbs_main.kicad_pcb deleted file mode 100644 index 8e92c54..0000000 --- a/test/pcbs/outlines___pcbs_main.kicad_pcb +++ /dev/null @@ -1,132 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title main) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") - ) - - - (gr_line (start -5.7 9.5) (end 5.699999999999999 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 5.7) (end 9.5 -5.699999999999999) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 5.699999999999999 -9.5) (end -5.7 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start -9.5 -5.699999999999999) (end -9.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start 5.7 5.7) (end 5.7 9.5) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start 5.7 -5.7) (end 9.5 -5.7) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start -5.7 -5.7) (end -5.7 -9.5) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_arc (start -5.7 5.7) (end -9.5 5.7) (angle -90) (layer Edge.Cuts) (width 0.15)) -(gr_circle (center 0 0) (end 4.75 0) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 13.3 9.5) (end 9.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 5.7) (end 9.5 -5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 9.5 -5.7) (end 13.3 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 13.3 -9.5) (end 24.700000000000003 -9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 24.700000000000003 -9.5) (end 28.5 -5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 28.5 -5.7) (end 28.5 5.7) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 28.5 5.7) (end 24.700000000000003 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 24.700000000000003 9.5) (end 13.3 9.5) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 19 4.75) (end 14.25 0) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 14.25 0) (end 19 -4.75) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 19 -4.75) (end 23.75 0) (angle 90) (layer Edge.Cuts) (width 0.15)) -(gr_line (start 23.75 0) (end 19 4.75) (angle 90) (layer Edge.Cuts) (width 0.15)) - -) - - \ No newline at end of file diff --git a/test/pcbs/references.yaml b/test/pcbs/references.yaml index 49beda1..1947118 100644 --- a/test/pcbs/references.yaml +++ b/test/pcbs/references.yaml @@ -5,7 +5,7 @@ pcbs: shown: references: true footprints: - - what: references_test + - type: references_test hidden: footprints: - - what: references_test \ No newline at end of file + - type: references_test \ No newline at end of file diff --git a/test/pcbs/references___pcbs.json b/test/pcbs/references___pcbs.json new file mode 100644 index 0000000..0a24f58 --- /dev/null +++ b/test/pcbs/references___pcbs.json @@ -0,0 +1,4 @@ +{ + "shown": "\n \n(kicad_pcb (version 20171130) (host pcbnew 5.1.6)\n\n (page A3)\n (title_block\n (title shown)\n (rev v1.0.0)\n (company Unknown)\n )\n\n (general\n (thickness 1.6)\n )\n\n (layers\n (0 F.Cu signal)\n (31 B.Cu signal)\n (32 B.Adhes user)\n (33 F.Adhes user)\n (34 B.Paste user)\n (35 F.Paste user)\n (36 B.SilkS user)\n (37 F.SilkS user)\n (38 B.Mask user)\n (39 F.Mask user)\n (40 Dwgs.User user)\n (41 Cmts.User user)\n (42 Eco1.User user)\n (43 Eco2.User user)\n (44 Edge.Cuts user)\n (45 Margin user)\n (46 B.CrtYd user)\n (47 F.CrtYd user)\n (48 B.Fab user)\n (49 F.Fab user)\n )\n\n (setup\n (last_trace_width 0.25)\n (trace_clearance 0.2)\n (zone_clearance 0.508)\n (zone_45_only no)\n (trace_min 0.2)\n (via_size 0.8)\n (via_drill 0.4)\n (via_min_size 0.4)\n (via_min_drill 0.3)\n (uvia_size 0.3)\n (uvia_drill 0.1)\n (uvias_allowed no)\n (uvia_min_size 0.2)\n (uvia_min_drill 0.1)\n (edge_width 0.05)\n (segment_width 0.2)\n (pcb_text_width 0.3)\n (pcb_text_size 1.5 1.5)\n (mod_edge_width 0.12)\n (mod_text_size 1 1)\n (mod_text_width 0.15)\n (pad_size 1.524 1.524)\n (pad_drill 0.762)\n (pad_to_mask_clearance 0.05)\n (aux_axis_origin 0 0)\n (visible_elements FFFFFF7F)\n (pcbplotparams\n (layerselection 0x010fc_ffffffff)\n (usegerberextensions false)\n (usegerberattributes true)\n (usegerberadvancedattributes true)\n (creategerberjobfile true)\n (excludeedgelayer true)\n (linewidth 0.100000)\n (plotframeref false)\n (viasonmask false)\n (mode 1)\n (useauxorigin false)\n (hpglpennumber 1)\n (hpglpenspeed 20)\n (hpglpendiameter 15.000000)\n (psnegative false)\n (psa4output false)\n (plotreference true)\n (plotvalue true)\n (plotinvisibletext false)\n (padsonsilk false)\n (subtractmaskfromsilk false)\n (outputformat 1)\n (mirror false)\n (drillshape 1)\n (scaleselection 1)\n (outputdirectory \"\"))\n )\n\n (net 0 \"\")\n \n (net_class Default \"This is the default net class.\"\n (clearance 0.2)\n (trace_width 0.25)\n (via_dia 0.8)\n (via_drill 0.4)\n (uvia_dia 0.3)\n (uvia_drill 0.1)\n (add_net \"\")\n )\n\n references shown\n \n \n)\n\n ", + "hidden": "\n \n(kicad_pcb (version 20171130) (host pcbnew 5.1.6)\n\n (page A3)\n (title_block\n (title hidden)\n (rev v1.0.0)\n (company Unknown)\n )\n\n (general\n (thickness 1.6)\n )\n\n (layers\n (0 F.Cu signal)\n (31 B.Cu signal)\n (32 B.Adhes user)\n (33 F.Adhes user)\n (34 B.Paste user)\n (35 F.Paste user)\n (36 B.SilkS user)\n (37 F.SilkS user)\n (38 B.Mask user)\n (39 F.Mask user)\n (40 Dwgs.User user)\n (41 Cmts.User user)\n (42 Eco1.User user)\n (43 Eco2.User user)\n (44 Edge.Cuts user)\n (45 Margin user)\n (46 B.CrtYd user)\n (47 F.CrtYd user)\n (48 B.Fab user)\n (49 F.Fab user)\n )\n\n (setup\n (last_trace_width 0.25)\n (trace_clearance 0.2)\n (zone_clearance 0.508)\n (zone_45_only no)\n (trace_min 0.2)\n (via_size 0.8)\n (via_drill 0.4)\n (via_min_size 0.4)\n (via_min_drill 0.3)\n (uvia_size 0.3)\n (uvia_drill 0.1)\n (uvias_allowed no)\n (uvia_min_size 0.2)\n (uvia_min_drill 0.1)\n (edge_width 0.05)\n (segment_width 0.2)\n (pcb_text_width 0.3)\n (pcb_text_size 1.5 1.5)\n (mod_edge_width 0.12)\n (mod_text_size 1 1)\n (mod_text_width 0.15)\n (pad_size 1.524 1.524)\n (pad_drill 0.762)\n (pad_to_mask_clearance 0.05)\n (aux_axis_origin 0 0)\n (visible_elements FFFFFF7F)\n (pcbplotparams\n (layerselection 0x010fc_ffffffff)\n (usegerberextensions false)\n (usegerberattributes true)\n (usegerberadvancedattributes true)\n (creategerberjobfile true)\n (excludeedgelayer true)\n (linewidth 0.100000)\n (plotframeref false)\n (viasonmask false)\n (mode 1)\n (useauxorigin false)\n (hpglpennumber 1)\n (hpglpenspeed 20)\n (hpglpendiameter 15.000000)\n (psnegative false)\n (psa4output false)\n (plotreference true)\n (plotvalue true)\n (plotinvisibletext false)\n (padsonsilk false)\n (subtractmaskfromsilk false)\n (outputformat 1)\n (mirror false)\n (drillshape 1)\n (scaleselection 1)\n (outputdirectory \"\"))\n )\n\n (net 0 \"\")\n \n (net_class Default \"This is the default net class.\"\n (clearance 0.2)\n (trace_width 0.25)\n (via_dia 0.8)\n (via_drill 0.4)\n (uvia_dia 0.3)\n (uvia_drill 0.1)\n (add_net \"\")\n )\n\n references hidden\n \n \n)\n\n " +} diff --git a/test/pcbs/references___pcbs_hidden.kicad_pcb b/test/pcbs/references___pcbs_hidden.kicad_pcb deleted file mode 100644 index 9938111..0000000 --- a/test/pcbs/references___pcbs_hidden.kicad_pcb +++ /dev/null @@ -1,112 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title hidden) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") - ) - - references hidden - - -) - - \ No newline at end of file diff --git a/test/pcbs/references___pcbs_shown.kicad_pcb b/test/pcbs/references___pcbs_shown.kicad_pcb deleted file mode 100644 index c5f0994..0000000 --- a/test/pcbs/references___pcbs_shown.kicad_pcb +++ /dev/null @@ -1,112 +0,0 @@ - - -(kicad_pcb (version 20171130) (host pcbnew 5.1.6) - - (page A3) - (title_block - (title shown) - (rev v1.0.0) - (company Unknown) - ) - - (general - (thickness 1.6) - ) - - (layers - (0 F.Cu signal) - (31 B.Cu signal) - (32 B.Adhes user) - (33 F.Adhes user) - (34 B.Paste user) - (35 F.Paste user) - (36 B.SilkS user) - (37 F.SilkS user) - (38 B.Mask user) - (39 F.Mask user) - (40 Dwgs.User user) - (41 Cmts.User user) - (42 Eco1.User user) - (43 Eco2.User user) - (44 Edge.Cuts user) - (45 Margin user) - (46 B.CrtYd user) - (47 F.CrtYd user) - (48 B.Fab user) - (49 F.Fab user) - ) - - (setup - (last_trace_width 0.25) - (trace_clearance 0.2) - (zone_clearance 0.508) - (zone_45_only no) - (trace_min 0.2) - (via_size 0.8) - (via_drill 0.4) - (via_min_size 0.4) - (via_min_drill 0.3) - (uvia_size 0.3) - (uvia_drill 0.1) - (uvias_allowed no) - (uvia_min_size 0.2) - (uvia_min_drill 0.1) - (edge_width 0.05) - (segment_width 0.2) - (pcb_text_width 0.3) - (pcb_text_size 1.5 1.5) - (mod_edge_width 0.12) - (mod_text_size 1 1) - (mod_text_width 0.15) - (pad_size 1.524 1.524) - (pad_drill 0.762) - (pad_to_mask_clearance 0.05) - (aux_axis_origin 0 0) - (visible_elements FFFFFF7F) - (pcbplotparams - (layerselection 0x010fc_ffffffff) - (usegerberextensions false) - (usegerberattributes true) - (usegerberadvancedattributes true) - (creategerberjobfile true) - (excludeedgelayer true) - (linewidth 0.100000) - (plotframeref false) - (viasonmask false) - (mode 1) - (useauxorigin false) - (hpglpennumber 1) - (hpglpenspeed 20) - (hpglpendiameter 15.000000) - (psnegative false) - (psa4output false) - (plotreference true) - (plotvalue true) - (plotinvisibletext false) - (padsonsilk false) - (subtractmaskfromsilk false) - (outputformat 1) - (mirror false) - (drillshape 1) - (scaleselection 1) - (outputdirectory "")) - ) - - (net 0 "") - - (net_class Default "This is the default net class." - (clearance 0.2) - (trace_width 0.25) - (via_dia 0.8) - (via_drill 0.4) - (uvia_dia 0.3) - (uvia_drill 0.1) - (add_net "") - ) - - references shown - - -) - - \ No newline at end of file diff --git a/test/points/adjustments.yaml b/test/points/adjustments.yaml index 8b1063d..45026a4 100644 --- a/test/points/adjustments.yaml +++ b/test/points/adjustments.yaml @@ -3,21 +3,11 @@ points: matrix: columns: left: - middle.rows.home.adjust: - shift: [-2u, 0] - rotate: 45 right: - key: - stagger: 5 - spread: 25 - splay: -5 - origin: [-9, -9] - rows: - home: - orient: -90 - shift: [0, 10] - rotate: 90 + stagger: 5 + spread: 25 + rotate: 5 + origin: [-9, -9] rows: bottom: - home: top: \ No newline at end of file diff --git a/test/points/adjustments___demo_dxf.dxf b/test/points/adjustments___demo_dxf.dxf deleted file mode 100644 index f23b53e..0000000 --- a/test/points/adjustments___demo_dxf.dxf +++ /dev/null @@ -1,482 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --9 -20 -9 -11 -9 -21 -9 -0 -LINE -8 -0 -10 -9 -20 -9 -11 -9 -21 --9 -0 -LINE -8 -0 -10 -9 -20 --9 -11 --9 -21 --9 -0 -LINE -8 -0 -10 --9 -20 --9 -11 --9 -21 -9 -0 -LINE -8 -0 -10 --9 -20 -28 -11 -9 -21 -28 -0 -LINE -8 -0 -10 -9 -20 -28 -11 -9 -21 -10 -0 -LINE -8 -0 -10 -9 -20 -10 -11 --9 -21 -10 -0 -LINE -8 -0 -10 --9 -20 -10 -11 --9 -21 -28 -0 -LINE -8 -0 -10 --9 -20 -47 -11 -9 -21 -47 -0 -LINE -8 -0 -10 -9 -20 -47 -11 -9 -21 -29 -0 -LINE -8 -0 -10 -9 -20 -29 -11 --9 -21 -29 -0 -LINE -8 -0 -10 --9 -20 -29 -11 --9 -21 -47 -0 -LINE -8 -0 -10 -10 -20 -9 -11 -28 -21 -9 -0 -LINE -8 -0 -10 -28 -20 -9 -11 -28 -21 --9 -0 -LINE -8 -0 -10 -28 -20 --9 -11 -10 -21 --9 -0 -LINE -8 -0 -10 -10 -20 --9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 --31.7279221 -20 -19 -11 --19 -21 -31.7279221 -0 -LINE -8 -0 -10 --19 -20 -31.7279221 -11 --6.2720779 -21 -19 -0 -LINE -8 -0 -10 --6.2720779 -20 -19 -11 --19 -21 -6.2720779 -0 -LINE -8 -0 -10 --19 -20 -6.2720779 -11 --31.7279221 -21 -19 -0 -LINE -8 -0 -10 -10 -20 -47 -11 -28 -21 -47 -0 -LINE -8 -0 -10 -28 -20 -47 -11 -28 -21 -29 -0 -LINE -8 -0 -10 -28 -20 -29 -11 -10 -21 -29 -0 -LINE -8 -0 -10 -10 -20 -29 -11 -10 -21 -47 -0 -LINE -8 -0 -10 -36.5688034 -20 -13.9315046 -11 -54.500308 -21 -12.3627012 -0 -LINE -8 -0 -10 -54.500308 -20 -12.3627012 -11 -52.9315046 -21 --5.5688034 -0 -LINE -8 -0 -10 -52.9315046 -20 --5.5688034 -11 -35 -21 --4 -0 -LINE -8 -0 -10 -35 -20 --4 -11 -36.5688034 -21 -13.9315046 -0 -LINE -8 -0 -10 -48.1867095 -20 -31.9876465 -11 -66.1182141 -21 -30.4188431 -0 -LINE -8 -0 -10 -66.1182141 -20 -30.4188431 -11 -64.5494107 -21 -12.4873385 -0 -LINE -8 -0 -10 -64.5494107 -20 -12.4873385 -11 -46.6179061 -21 -14.0561419 -0 -LINE -8 -0 -10 -46.6179061 -20 -14.0561419 -11 -48.1867095 -21 -31.9876465 -0 -LINE -8 -0 -10 -49.8426686 -20 -50.9153458 -11 -67.7741732 -21 -49.3465424 -0 -LINE -8 -0 -10 -67.7741732 -20 -49.3465424 -11 -66.2053698 -21 -31.4150378 -0 -LINE -8 -0 -10 -66.2053698 -20 -31.4150378 -11 -48.2738652 -21 -32.9838412 -0 -LINE -8 -0 -10 -48.2738652 -20 -32.9838412 -11 -49.8426686 -21 -50.9153458 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/adjustments___points.json b/test/points/adjustments___points.json index ff8bd04..82b843b 100644 --- a/test/points/adjustments___points.json +++ b/test/points/adjustments___points.json @@ -4,887 +4,127 @@ "y": 0, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "left_bottom", "name": "matrix_left_bottom", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "left_bottom", "col": { + "stagger": 0, + "spread": 0, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "left" }, - "row": "bottom", - "bind": [ - 10, - 10, - 0, - 0 - ] - } - }, - "matrix_left_home": { - "x": 0, - "y": 19, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "left_home", - "name": "matrix_left_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "left" - }, - "row": "home", - "bind": [ - 10, - 10, - 10, - 0 - ] + "row": "bottom" } }, "matrix_left_top": { "x": 0, - "y": 38, + "y": 19, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "left_top", "name": "matrix_left_top", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "left_top", "col": { + "stagger": 0, + "spread": 0, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "left" }, - "row": "top", - "bind": [ - 0, - 10, - 10, - 0 - ] - } - }, - "matrix_middle_bottom": { - "x": 19, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "middle_bottom", - "name": "matrix_middle_bottom", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "row": "bottom", - "bind": [ - 10, - 0, - 0, - 10 - ] - } - }, - "matrix_middle_home": { - "x": -19, - "y": 19, - "r": 45, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - }, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "middle_home", - "name": "matrix_middle_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "row": "home", - "bind": [ - 10, - 10, - 10, - 10 - ] - } - }, - "matrix_middle_top": { - "x": 19, - "y": 38, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "middle_top", - "name": "matrix_middle_top", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "row": "top", - "bind": [ - 0, - 10, - 10, - 10 - ] + "row": "top" } }, "matrix_right_bottom": { - "x": 44.750154, - "y": 4.1813506, - "r": -5, + "x": 24.181350600000002, + "y": 5.750154, + "r": 5, "meta": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "right_bottom", "name": "matrix_right_bottom", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "right_bottom", "col": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, + "stagger": 5, + "spread": 25, + "rotate": 5, + "origin": [ + -9, + -9 + ], + "rows": {}, + "key": {}, "name": "right" }, - "row": "bottom", - "bind": [ - 10, - 0, - 0, - 10 - ] - } - }, - "matrix_right_home": { - "x": 56.3680601, - "y": 22.237492500000002, - "r": -5, - "meta": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ], - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_home", - "name": "matrix_right_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - }, - "row": "home", - "bind": [ - 10, - 0, - 10, - 10 - ] + "row": "bottom" } }, "matrix_right_top": { - "x": 58.0240192, - "y": 41.1651918, - "r": -5, + "x": 22.525391499999998, + "y": 24.6778532, + "r": 5, "meta": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "right_top", "name": "matrix_right_top", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "home": { - "adjust": { - "shift": [ - "-2u", - 0 - ], - "rotate": 45 - } - } - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "right_top", "col": { - "key": { - "stagger": 5, - "spread": 25, - "splay": -5, - "origin": [ - -9, - -9 - ] - }, - "rows": { - "home": { - "orient": -90, - "shift": [ - 0, - 10 - ], - "rotate": 90 - } - }, + "stagger": 5, + "spread": 25, + "rotate": 5, + "origin": [ + -9, + -9 + ], + "rows": {}, + "key": {}, "name": "right" }, - "row": "top", - "bind": [ - 0, - 0, - 10, - 0 - ] + "row": "top" } } } diff --git a/test/points/autobind.yaml b/test/points/autobind.yaml deleted file mode 100644 index 0e61c63..0000000 --- a/test/points/autobind.yaml +++ /dev/null @@ -1,24 +0,0 @@ -points.zones: - none: - key: - autobind: 0 - columns: - a: - b: - some: - key: - autobind: 1 - columns: - a: - b: -outlines: - none: - - what: rectangle - where: /none_.*/ - size: 5 - bound: true - some: - - what: rectangle - where: /some_.*/ - size: 5 - bound: true \ No newline at end of file diff --git a/test/points/autobind___outlines_none_dxf.dxf b/test/points/autobind___outlines_none_dxf.dxf deleted file mode 100644 index 93a857b..0000000 --- a/test/points/autobind___outlines_none_dxf.dxf +++ /dev/null @@ -1,146 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --2.5 -20 --2.5 -11 -2.5 -21 --2.5 -0 -LINE -8 -0 -10 -2.5 -20 --2.5 -11 -2.5 -21 -2.5 -0 -LINE -8 -0 -10 -2.5 -20 -2.5 -11 --2.5 -21 -2.5 -0 -LINE -8 -0 -10 --2.5 -20 -2.5 -11 --2.5 -21 --2.5 -0 -LINE -8 -0 -10 -16.5 -20 --2.5 -11 -21.5 -21 --2.5 -0 -LINE -8 -0 -10 -21.5 -20 --2.5 -11 -21.5 -21 -2.5 -0 -LINE -8 -0 -10 -21.5 -20 -2.5 -11 -16.5 -21 -2.5 -0 -LINE -8 -0 -10 -16.5 -20 -2.5 -11 -16.5 -21 --2.5 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/autobind___outlines_some_dxf.dxf b/test/points/autobind___outlines_some_dxf.dxf deleted file mode 100644 index 46d46c2..0000000 --- a/test/points/autobind___outlines_some_dxf.dxf +++ /dev/null @@ -1,146 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --2.5 -20 --2.5 -11 -3.5 -21 --2.5 -0 -LINE -8 -0 -10 --2.5 -20 -2.5 -11 -3.5 -21 -2.5 -0 -LINE -8 -0 -10 --2.5 -20 -2.5 -11 --2.5 -21 --2.5 -0 -LINE -8 -0 -10 -3.5 -20 --2.5 -11 -3.5 -21 -2.5 -0 -LINE -8 -0 -10 -15.5 -20 --2.5 -11 -21.5 -21 --2.5 -0 -LINE -8 -0 -10 -21.5 -20 --2.5 -11 -21.5 -21 -2.5 -0 -LINE -8 -0 -10 -15.5 -20 -2.5 -11 -21.5 -21 -2.5 -0 -LINE -8 -0 -10 -15.5 -20 --2.5 -11 -15.5 -21 -2.5 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/basic_2x2___demo_dxf.dxf b/test/points/basic_2x2___demo_dxf.dxf deleted file mode 100644 index af1fdfa..0000000 --- a/test/points/basic_2x2___demo_dxf.dxf +++ /dev/null @@ -1,242 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --9 -20 -9 -11 -9 -21 -9 -0 -LINE -8 -0 -10 -9 -20 -9 -11 -9 -21 --9 -0 -LINE -8 -0 -10 -9 -20 --9 -11 --9 -21 --9 -0 -LINE -8 -0 -10 --9 -20 --9 -11 --9 -21 -9 -0 -LINE -8 -0 -10 --9 -20 -28 -11 -9 -21 -28 -0 -LINE -8 -0 -10 -9 -20 -28 -11 -9 -21 -10 -0 -LINE -8 -0 -10 -9 -20 -10 -11 --9 -21 -10 -0 -LINE -8 -0 -10 --9 -20 -10 -11 --9 -21 -28 -0 -LINE -8 -0 -10 -10 -20 -9 -11 -28 -21 -9 -0 -LINE -8 -0 -10 -28 -20 -9 -11 -28 -21 --9 -0 -LINE -8 -0 -10 -28 -20 --9 -11 -10 -21 --9 -0 -LINE -8 -0 -10 -10 -20 --9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 -10 -20 -28 -11 -28 -21 -28 -0 -LINE -8 -0 -10 -28 -20 -28 -11 -28 -21 -10 -0 -LINE -8 -0 -10 -28 -20 -10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 -10 -21 -28 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/basic_2x2___points.json b/test/points/basic_2x2___points.json index 140cf1a..8da5055 100644 --- a/test/points/basic_2x2___points.json +++ b/test/points/basic_2x2___points.json @@ -4,51 +4,31 @@ "y": 0, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "left_bottom", "name": "matrix_left_bottom", - "zone": { - "columns": { - "left": null, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "left_bottom", "col": { + "stagger": 0, + "spread": 0, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "left" }, - "row": "bottom", - "bind": [ - 10, - 10, - 0, - 0 - ] + "row": "bottom" } }, "matrix_left_top": { @@ -56,51 +36,31 @@ "y": 19, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "left_top", "name": "matrix_left_top", - "zone": { - "columns": { - "left": null, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "left_top", "col": { + "stagger": 0, + "spread": 0, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "left" }, - "row": "top", - "bind": [ - 0, - 10, - 10, - 0 - ] + "row": "top" } }, "matrix_right_bottom": { @@ -108,51 +68,31 @@ "y": 0, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "right_bottom", "name": "matrix_right_bottom", - "zone": { - "columns": { - "left": null, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "right_bottom", "col": { + "stagger": 0, + "spread": 19, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "right" }, - "row": "bottom", - "bind": [ - 10, - 0, - 0, - 10 - ] + "row": "bottom" } }, "matrix_right_top": { @@ -160,51 +100,31 @@ "y": 19, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "right_top", "name": "matrix_right_top", - "zone": { - "columns": { - "left": null, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, + "colrow": "right_top", "col": { + "stagger": 0, + "spread": 19, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "right" }, - "row": "top", - "bind": [ - 0, - 0, - 10, - 10 - ] + "row": "top" } } } diff --git a/test/points/default.yaml b/test/points/default.yaml index 71c99b6..0e806d6 100644 --- a/test/points/default.yaml +++ b/test/points/default.yaml @@ -1,5 +1,3 @@ -points.zones: - matrix: - single_key_column: - columns: - named: \ No newline at end of file +points: + zones: + matrix: {} \ No newline at end of file diff --git a/test/points/default___points.json b/test/points/default___points.json index 4536086..c13be2e 100644 --- a/test/points/default___points.json +++ b/test/points/default___points.json @@ -1,100 +1,34 @@ { - "matrix": { + "matrix_default_default": { "x": 0, "y": 0, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", + "name": "matrix_default_default", "colrow": "default_default", - "name": "matrix", - "zone": { - "columns": { - "default": { - "rows": {}, - "key": {}, - "name": "default" - } - }, - "name": "matrix" - }, "col": { + "stagger": 0, + "spread": 0, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "default" }, - "row": "default", - "bind": [ - 0, - 0, - 0, - 0 - ] - } - }, - "single_key_column_named": { - "x": 0, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "named_default", - "name": "single_key_column_named", - "zone": { - "columns": { - "named": null - }, - "name": "single_key_column" - }, - "col": { - "rows": {}, - "key": {}, - "name": "named" - }, - "row": "default", - "bind": [ - 0, - 0, - 0, - 0 - ] + "row": "default" } } } diff --git a/test/points/mirrors.yaml b/test/points/mirrors.yaml deleted file mode 100644 index eb95a42..0000000 --- a/test/points/mirrors.yaml +++ /dev/null @@ -1,30 +0,0 @@ -points: - mirror: - ref: matrix_right_top - distance: U - zones: - matrix: - columns: - left: - rows: - bottom.asym: source - top.asym: clone - right: - rows: - bottom: - top: - other: - anchor: - ref: matrix_right_top - shift: [100, 100] - # default mirror object, ref = [0, 0], distance = 0 - mirror: {} - columns: - left: - rows: - bottom.asym: source - top.asym: clone - right: - rows: - bottom: - top: diff --git a/test/points/mirrors___demo_dxf.dxf b/test/points/mirrors___demo_dxf.dxf deleted file mode 100644 index e1c7ea2..0000000 --- a/test/points/mirrors___demo_dxf.dxf +++ /dev/null @@ -1,626 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --9 -20 -9 -11 -9 -21 -9 -0 -LINE -8 -0 -10 -9 -20 -9 -11 -9 -21 --9 -0 -LINE -8 -0 -10 -9 -20 --9 -11 --9 -21 --9 -0 -LINE -8 -0 -10 --9 -20 --9 -11 --9 -21 -9 -0 -LINE -8 -0 -10 -10 -20 -9 -11 -28 -21 -9 -0 -LINE -8 -0 -10 -28 -20 -9 -11 -28 -21 --9 -0 -LINE -8 -0 -10 -28 -20 --9 -11 -10 -21 --9 -0 -LINE -8 -0 -10 -10 -20 --9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 -10 -20 -28 -11 -28 -21 -28 -0 -LINE -8 -0 -10 -28 -20 -28 -11 -28 -21 -10 -0 -LINE -8 -0 -10 -28 -20 -10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 -10 -21 -28 -0 -LINE -8 -0 -10 -110 -20 -128 -11 -128 -21 -128 -0 -LINE -8 -0 -10 -128 -20 -128 -11 -128 -21 -110 -0 -LINE -8 -0 -10 -128 -20 -110 -11 -110 -21 -110 -0 -LINE -8 -0 -10 -110 -20 -110 -11 -110 -21 -128 -0 -LINE -8 -0 -10 -129 -20 -128 -11 -147 -21 -128 -0 -LINE -8 -0 -10 -147 -20 -128 -11 -147 -21 -110 -0 -LINE -8 -0 -10 -147 -20 -110 -11 -129 -21 -110 -0 -LINE -8 -0 -10 -129 -20 -110 -11 -129 -21 -128 -0 -LINE -8 -0 -10 -129 -20 -147 -11 -147 -21 -147 -0 -LINE -8 -0 -10 -147 -20 -147 -11 -147 -21 -129 -0 -LINE -8 -0 -10 -147 -20 -129 -11 -129 -21 -129 -0 -LINE -8 -0 -10 -129 -20 -129 -11 -129 -21 -147 -0 -LINE -8 -0 -10 --128 -20 -147 -11 --110 -21 -147 -0 -LINE -8 -0 -10 --110 -20 -147 -11 --110 -21 -129 -0 -LINE -8 -0 -10 --110 -20 -129 -11 --128 -21 -129 -0 -LINE -8 -0 -10 --128 -20 -129 -11 --128 -21 -147 -0 -LINE -8 -0 -10 --147 -20 -128 -11 --129 -21 -128 -0 -LINE -8 -0 -10 --129 -20 -128 -11 --129 -21 -110 -0 -LINE -8 -0 -10 --129 -20 -110 -11 --147 -21 -110 -0 -LINE -8 -0 -10 --147 -20 -110 -11 --147 -21 -128 -0 -LINE -8 -0 -10 --147 -20 -147 -11 --129 -21 -147 -0 -LINE -8 -0 -10 --129 -20 -147 -11 --129 -21 -129 -0 -LINE -8 -0 -10 --129 -20 -129 -11 --147 -21 -129 -0 -LINE -8 -0 -10 --147 -20 -129 -11 --147 -21 -147 -0 -LINE -8 -0 -10 -48.05 -20 -28 -11 -66.05 -21 -28 -0 -LINE -8 -0 -10 -66.05 -20 -28 -11 -66.05 -21 -10 -0 -LINE -8 -0 -10 -66.05 -20 -10 -11 -48.05 -21 -10 -0 -LINE -8 -0 -10 -48.05 -20 -10 -11 -48.05 -21 -28 -0 -LINE -8 -0 -10 -29.05 -20 -9 -11 -47.05 -21 -9 -0 -LINE -8 -0 -10 -47.05 -20 -9 -11 -47.05 -21 --9 -0 -LINE -8 -0 -10 -47.05 -20 --9 -11 -29.05 -21 --9 -0 -LINE -8 -0 -10 -29.05 -20 --9 -11 -29.05 -21 -9 -0 -LINE -8 -0 -10 -29.05 -20 -28 -11 -47.05 -21 -28 -0 -LINE -8 -0 -10 -47.05 -20 -28 -11 -47.05 -21 -10 -0 -LINE -8 -0 -10 -47.05 -20 -10 -11 -29.05 -21 -10 -0 -LINE -8 -0 -10 -29.05 -20 -10 -11 -29.05 -21 -28 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/mirrors___points.json b/test/points/mirrors___points.json deleted file mode 100644 index 96b7841..0000000 --- a/test/points/mirrors___points.json +++ /dev/null @@ -1,798 +0,0 @@ -{ - "matrix_left_bottom": { - "x": 0, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "source", - "colrow": "left_bottom", - "name": "matrix_left_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "matrix_right_bottom": { - "x": 19, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_bottom", - "name": "matrix_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 10, - 0, - 0, - 10 - ] - } - }, - "matrix_right_top": { - "x": 19, - "y": 19, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_top", - "name": "matrix_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": false, - "bind": [ - 0, - 0, - 10, - 0 - ] - } - }, - "other_left_bottom": { - "x": 119, - "y": 119, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "source", - "colrow": "left_bottom", - "name": "other_left_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "other_right_bottom": { - "x": 138, - "y": 119, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_bottom", - "name": "other_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": false, - "bind": [ - 10, - 0, - 0, - 10 - ] - } - }, - "other_right_top": { - "x": 138, - "y": 138, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "right_top", - "name": "other_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": false, - "bind": [ - 0, - 0, - 10, - 0 - ] - } - }, - "mirror_other_left_top": { - "x": -119, - "y": 138, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "clone", - "colrow": "mirror_left_top", - "name": "mirror_other_left_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "mirror_other_right_bottom": { - "x": -138, - "y": 119, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_bottom", - "name": "mirror_other_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": true, - "bind": [ - 10, - 0, - 0, - 0 - ] - } - }, - "mirror_other_right_top": { - "x": -138, - "y": 138, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_top", - "name": "mirror_other_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "other" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 0, - 10, - 10 - ] - } - }, - "mirror_matrix_left_top": { - "x": 57.05, - "y": 19, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "clone", - "colrow": "mirror_left_top", - "name": "mirror_matrix_left_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 10, - 0, - 0 - ] - } - }, - "mirror_matrix_right_bottom": { - "x": 38.05, - "y": 0, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_bottom", - "name": "mirror_matrix_right_bottom", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "bottom", - "mirrored": true, - "bind": [ - 10, - 0, - 0, - 0 - ] - } - }, - "mirror_matrix_right_top": { - "x": 38.05, - "y": 19, - "r": 0, - "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, - "shift": [ - 0, - 0 - ], - "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, - "padding": 19, - "autobind": 10, - "skip": false, - "asym": "both", - "colrow": "mirror_right_top", - "name": "mirror_matrix_right_top", - "zone": { - "columns": { - "left": { - "rows": { - "bottom": { - "asym": "source" - }, - "top": { - "asym": "clone" - } - }, - "key": {}, - "name": "left" - }, - "right": null - }, - "rows": { - "bottom": {}, - "top": {} - }, - "name": "matrix" - }, - "col": { - "rows": {}, - "key": {}, - "name": "right" - }, - "row": "top", - "mirrored": true, - "bind": [ - 0, - 0, - 10, - 10 - ] - } - } -} diff --git a/test/points/overrides.yaml b/test/points/overrides.yaml index 12be1a2..5c14031 100644 --- a/test/points/overrides.yaml +++ b/test/points/overrides.yaml @@ -1,15 +1,16 @@ -points.zones.matrix: - columns: - left: - middle: +points: + zones: + matrix: + columns: + left: + middle: + rows: + top: + right: + stagger: u + row_overrides: + home: + top: rows: - top: - right: - key.stagger: u - rows: - bottom: $unset - home: - top: - rows: - bottom: - home: \ No newline at end of file + bottom: + home: \ No newline at end of file diff --git a/test/points/overrides___demo_dxf.dxf b/test/points/overrides___demo_dxf.dxf deleted file mode 100644 index 91dffe3..0000000 --- a/test/points/overrides___demo_dxf.dxf +++ /dev/null @@ -1,386 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --9 -20 -9 -11 -9 -21 -9 -0 -LINE -8 -0 -10 -9 -20 -9 -11 -9 -21 --9 -0 -LINE -8 -0 -10 -9 -20 --9 -11 --9 -21 --9 -0 -LINE -8 -0 -10 --9 -20 --9 -11 --9 -21 -9 -0 -LINE -8 -0 -10 --9 -20 -28 -11 -9 -21 -28 -0 -LINE -8 -0 -10 -9 -20 -28 -11 -9 -21 -10 -0 -LINE -8 -0 -10 -9 -20 -10 -11 --9 -21 -10 -0 -LINE -8 -0 -10 --9 -20 -10 -11 --9 -21 -28 -0 -LINE -8 -0 -10 -10 -20 -9 -11 -28 -21 -9 -0 -LINE -8 -0 -10 -28 -20 -9 -11 -28 -21 --9 -0 -LINE -8 -0 -10 -28 -20 --9 -11 -10 -21 --9 -0 -LINE -8 -0 -10 -10 -20 --9 -11 -10 -21 -9 -0 -LINE -8 -0 -10 -10 -20 -28 -11 -28 -21 -28 -0 -LINE -8 -0 -10 -28 -20 -28 -11 -28 -21 -10 -0 -LINE -8 -0 -10 -28 -20 -10 -11 -10 -21 -10 -0 -LINE -8 -0 -10 -10 -20 -10 -11 -10 -21 -28 -0 -LINE -8 -0 -10 -10 -20 -47 -11 -28 -21 -47 -0 -LINE -8 -0 -10 -28 -20 -47 -11 -28 -21 -29 -0 -LINE -8 -0 -10 -28 -20 -29 -11 -10 -21 -29 -0 -LINE -8 -0 -10 -10 -20 -29 -11 -10 -21 -47 -0 -LINE -8 -0 -10 -29 -20 -28 -11 -47 -21 -28 -0 -LINE -8 -0 -10 -47 -20 -28 -11 -47 -21 -10 -0 -LINE -8 -0 -10 -47 -20 -10 -11 -29 -21 -10 -0 -LINE -8 -0 -10 -29 -20 -10 -11 -29 -21 -28 -0 -LINE -8 -0 -10 -29 -20 -47 -11 -47 -21 -47 -0 -LINE -8 -0 -10 -47 -20 -47 -11 -47 -21 -29 -0 -LINE -8 -0 -10 -47 -20 -29 -11 -29 -21 -29 -0 -LINE -8 -0 -10 -29 -20 -29 -11 -29 -21 -47 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/overrides___points.json b/test/points/overrides___points.json index 88fbfe6..aeff7d0 100644 --- a/test/points/overrides___points.json +++ b/test/points/overrides___points.json @@ -4,68 +4,31 @@ "y": 0, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "left_bottom", "name": "matrix_left_bottom", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "top": {} - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", - "home": {}, - "top": {} - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {} - }, - "name": "matrix" - }, + "colrow": "left_bottom", "col": { + "stagger": 0, + "spread": 0, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "left" }, - "row": "bottom", - "bind": [ - 10, - 10, - 0, - 0 - ] + "row": "bottom" } }, "matrix_left_home": { @@ -73,68 +36,31 @@ "y": 19, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "left_home", "name": "matrix_left_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "top": {} - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", - "home": {}, - "top": {} - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {} - }, - "name": "matrix" - }, + "colrow": "left_home", "col": { + "stagger": 0, + "spread": 0, + "rotate": 0, + "origin": [ + 0, + 0 + ], "rows": {}, "key": {}, "name": "left" }, - "row": "home", - "bind": [ - 0, - 10, - 10, - 0 - ] + "row": "home" } }, "matrix_middle_bottom": { @@ -142,70 +68,33 @@ "y": 0, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "middle_bottom", "name": "matrix_middle_bottom", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "top": {} - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", - "home": {}, - "top": {} - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {} - }, - "name": "matrix" - }, + "colrow": "middle_bottom", "col": { "rows": { "top": {} }, + "stagger": 0, + "spread": 19, + "rotate": 0, + "origin": [ + 0, + 0 + ], "key": {}, "name": "middle" }, - "row": "bottom", - "bind": [ - 10, - 0, - 0, - 10 - ] + "row": "bottom" } }, "matrix_middle_home": { @@ -213,70 +102,33 @@ "y": 19, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "middle_home", "name": "matrix_middle_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "top": {} - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", - "home": {}, - "top": {} - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {} - }, - "name": "matrix" - }, + "colrow": "middle_home", "col": { "rows": { "top": {} }, + "stagger": 0, + "spread": 19, + "rotate": 0, + "origin": [ + 0, + 0 + ], "key": {}, "name": "middle" }, - "row": "home", - "bind": [ - 10, - 10, - 10, - 10 - ] + "row": "home" } }, "matrix_middle_top": { @@ -284,70 +136,33 @@ "y": 38, "r": 0, "meta": { - "stagger": 0, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "middle_top", "name": "matrix_middle_top", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "top": {} - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", - "home": {}, - "top": {} - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {} - }, - "name": "matrix" - }, + "colrow": "middle_top", "col": { "rows": { "top": {} }, + "stagger": 0, + "spread": 19, + "rotate": 0, + "origin": [ + 0, + 0 + ], "key": {}, "name": "middle" }, - "row": "top", - "bind": [ - 0, - 10, - 10, - 0 - ] + "row": "top" } }, "matrix_right_home": { @@ -355,74 +170,38 @@ "y": 19, "r": 0, "meta": { - "stagger": 19, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "right_home", "name": "matrix_right_home", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "top": {} - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", - "home": {}, - "top": {} - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {} - }, - "name": "matrix" - }, + "colrow": "right_home", "col": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", + "stagger": 19, + "row_overrides": { "home": {}, "top": {} }, + "spread": 19, + "rotate": 0, + "origin": [ + 0, + 0 + ], + "rows": { + "home": {}, + "top": {} + }, + "key": {}, "name": "right" }, - "row": "home", - "bind": [ - 10, - 0, - 0, - 10 - ] + "row": "home" } }, "matrix_right_top": { @@ -430,74 +209,38 @@ "y": 38, "r": 0, "meta": { - "stagger": 19, - "spread": 19, - "splay": 0, - "origin": [ - 0, - 0 - ], - "orient": 0, "shift": [ 0, 0 ], "rotate": 0, - "adjust": {}, - "width": 18, - "height": 18, "padding": 19, - "autobind": 10, + "width": 1, + "height": 1, "skip": false, "asym": "both", - "colrow": "right_top", "name": "matrix_right_top", - "zone": { - "columns": { - "left": null, - "middle": { - "rows": { - "top": {} - }, - "key": {}, - "name": "middle" - }, - "right": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", - "home": {}, - "top": {} - }, - "name": "right" - } - }, - "rows": { - "bottom": {}, - "home": {} - }, - "name": "matrix" - }, + "colrow": "right_top", "col": { - "key": { - "stagger": "u" - }, - "rows": { - "bottom": "$unset", + "stagger": 19, + "row_overrides": { "home": {}, "top": {} }, + "spread": 19, + "rotate": 0, + "origin": [ + 0, + 0 + ], + "rows": { + "home": {}, + "top": {} + }, + "key": {}, "name": "right" }, - "row": "top", - "bind": [ - 0, - 0, - 10, - 10 - ] + "row": "top" } } } diff --git a/test/points/rotations.yaml b/test/points/rotations.yaml deleted file mode 100644 index 50ffa01..0000000 --- a/test/points/rotations.yaml +++ /dev/null @@ -1,16 +0,0 @@ -points: - rotate: 22.5 - zones: - matrix: - rotate: 22.5 - key: - origin: [-u/2, -u/2] - columns: - left: - right.key: - rotate: -45 - padding: (1+sqrt(2))/2 * u - spread: (1+sqrt(2))/2 * u - rows: - bottom: - top: diff --git a/test/points/rotations___demo_dxf.dxf b/test/points/rotations___demo_dxf.dxf deleted file mode 100644 index 657e493..0000000 --- a/test/points/rotations___demo_dxf.dxf +++ /dev/null @@ -1,242 +0,0 @@ -0 -SECTION -2 -HEADER -9 -$INSUNITS -70 -4 -0 -ENDSEC -0 -SECTION -2 -TABLES -0 -TABLE -2 -LTYPE -0 -LTYPE -72 -65 -70 -64 -2 -CONTINUOUS -3 -______ -73 -0 -40 -0 -0 -ENDTAB -0 -TABLE -2 -LAYER -0 -ENDTAB -0 -ENDSEC -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 --12.7279221 -20 -0 -11 -0 -21 -12.7279221 -0 -LINE -8 -0 -10 -0 -20 -12.7279221 -11 -12.7279221 -21 -0 -0 -LINE -8 -0 -10 -12.7279221 -20 -0 -11 -0 -21 --12.7279221 -0 -LINE -8 -0 -10 -0 -20 --12.7279221 -11 --12.7279221 -21 -0 -0 -LINE -8 -0 -10 --26.1629509 -20 -13.4350288 -11 --13.4350288 -21 -26.1629509 -0 -LINE -8 -0 -10 --13.4350288 -20 -26.1629509 -11 --0.7071067 -21 -13.4350288 -0 -LINE -8 -0 -10 --0.7071067 -20 -13.4350288 -11 --13.4350288 -21 -0.7071067 -0 -LINE -8 -0 -10 --13.4350288 -20 -0.7071067 -11 --26.1629509 -21 -13.4350288 -0 -LINE -8 -0 -10 -7.2175144 -20 -25.2175144 -11 -25.2175144 -21 -25.2175144 -0 -LINE -8 -0 -10 -25.2175144 -20 -25.2175144 -11 -25.2175144 -21 -7.2175144 -0 -LINE -8 -0 -10 -25.2175144 -20 -7.2175144 -11 -7.2175144 -21 -7.2175144 -0 -LINE -8 -0 -10 -7.2175144 -20 -7.2175144 -11 -7.2175144 -21 -25.2175144 -0 -LINE -8 -0 -10 -16.2175144 -20 -51.8804653 -11 -28.9454365 -21 -39.1525432 -0 -LINE -8 -0 -10 -28.9454365 -20 -39.1525432 -11 -16.2175144 -21 -26.4246211 -0 -LINE -8 -0 -10 -16.2175144 -20 -26.4246211 -11 -3.4895923 -21 -39.1525432 -0 -LINE -8 -0 -10 -3.4895923 -20 -39.1525432 -11 -16.2175144 -21 -51.8804653 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/test/points/samename.yaml b/test/points/samename.yaml deleted file mode 100644 index 0e365ae..0000000 --- a/test/points/samename.yaml +++ /dev/null @@ -1,2 +0,0 @@ -points.zones.matrix.key.name: samename -points.zones.other.key.name: samename diff --git a/test/points/samename___EXCEPTION.txt b/test/points/samename___EXCEPTION.txt deleted file mode 100644 index daec189..0000000 --- a/test/points/samename___EXCEPTION.txt +++ /dev/null @@ -1 +0,0 @@ -defined more than once \ No newline at end of file diff --git a/test/points/units___units.json b/test/points/units___units.json index 07b55ed..48690d9 100644 --- a/test/points/units___units.json +++ b/test/points/units___units.json @@ -3,13 +3,6 @@ "u": 19, "cx": 18, "cy": 17, - "$default_stagger": 0, - "$default_spread": 19, - "$default_splay": 0, - "$default_height": 18, - "$default_width": 18, - "$default_padding": 19, - "$default_autobind": 10, "a": 10, "b": 15 } diff --git a/test/unit/anchor.js b/test/unit/anchor.js index 342d59a..b335840 100644 --- a/test/unit/anchor.js +++ b/test/unit/anchor.js @@ -6,12 +6,8 @@ describe('Anchor', function() { const points = { o: new Point(0, 0, 0, {label: 'o'}), - rotated_o: new Point(0, 0, 90, {label: 'rotated_o'}), - o_five: new Point(0, 5, 0, {label: 'o_five'}), - five_o: new Point(5, 0, 0, {label: 'five_o'}), - five: new Point(5, 5, 90, {label: 'five'}), - ten: new Point(10, 10, -90, {label: 'ten'}), - mirror_ten: new Point(-10, 10, 90, {mirrored: true}) + ten: new Point(10, 10, 10, {label: 'ten'}), + mirror: new Point(20, 0, 0, {mirrored: true}) } it('params', function() { @@ -20,134 +16,29 @@ describe('Anchor', function() { parse({}, 'name')(), [0, 0, 0, {}] ) + // unexpected check can be disabled + check( + parse({unexpected_key: true}, 'name', {}, false)(), + [0, 0, 0, {}] + ) + // default point can be overridden + check( + parse({}, 'name', {}, true, new Point(1, 1))(), + [1, 1, 0, {}] + ) + }) + + it('ref', function() { // single reference check( parse({ref: 'o'}, 'name', points)(), [0, 0, 0, {label: 'o'}] ) - // default point can be overridden - check( - parse({}, 'name', {}, new Point(1, 1))(), - [1, 1, 0, {}] - ) - // mirrored references can be forced - check( - parse({ref: 'ten'}, 'name', points, undefined, true)(), - [-10, 10, 90, {mirrored: true}] - ) - }) - - it('recursive', function() { - // recursive references are supported (keeping metadata) - check( - parse({ - ref: { - ref: 'o', - shift: [2, 2] - } - }, 'name', points)(), - [2, 2, 0, {label: 'o'}] - ) - }) - - it('aggregate', function() { // average of multiple references (metadata gets ignored) check( - parse({ - aggregate: { - parts: ['o', 'ten'] - } - }, 'name', points)(), - [5, 5, -45, {}] + parse({ref: ['o', 'ten']}, 'name', points)(), + [5, 5, 5, {}] ) - // empty parts - check( - parse({ - aggregate: { - } - }, 'name', points)(), - [0, 0, 0, {}] - ) - // can't have aggregate and ref together - parse({ - aggregate: { - parts: ['o', 'ten'] - }, - ref : 'ten' - }, 'name', points).should.throw() - }) - it('intersect', function() { - // points that intersect on a negative Y axis - check( - parse({ - aggregate: { - parts: ['o','ten'], - method: 'intersect' - } - }, 'name', points)(), - [0,10,0,{}] - ) - - // points that have parallel Y axis, i.e. never intersect - parse({ - aggregate: { - parts: ['o','five_o'], - method: 'intersect' - } - }, 'name', points).should.throw(`The points under "name.aggregate.parts" do not intersect!`) - - // points intersect on their positive Y axis - check( - parse({ - aggregate: { - parts: ['o','five'], - method: 'intersect' - } - }, 'name', points)(), - [0, 5, 0, {}] - ) - - // intersecting points with the same coordinates, but different rotations - check( - parse({ - aggregate: { - parts: ['o','rotated_o'], - method: 'intersect' - } - }, 'name', points)(), - [0, 0, 0, {}] - ) - - // points with overlapping Y axis - parse({ - aggregate: { - parts: ['o','o_five'], - method: 'intersect' - } - }, 'name', points).should.throw(`The points under "name.aggregate.parts" do not intersect!`) - - // more than two parts - parse({ - aggregate: { - parts: ['o', `five`, `ten`], - method: 'intersect' - } - }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 3!`) - - // only one part - parse({ - aggregate: { - parts: ['o'], - method: 'intersect' - } - }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 1!`) - - // no parts - parse({ - aggregate: { - method: 'intersect' - } - }, 'name', points).should.throw(`Intersect expects exactly two parts, but it got 0!`) }) it('shift', function() { @@ -158,8 +49,8 @@ describe('Anchor', function() { ) // shift should respect mirrored points (and invert along the x axis) check( - parse({ref: 'mirror_ten', shift: [1, 1]}, 'name', points)(), - [-11, 9, 90, {mirrored: true}] + parse({ref: 'mirror', shift: [1, 1]}, 'name', points)(), + [19, 1, 0, {mirrored: true}] ) }) @@ -175,11 +66,6 @@ describe('Anchor', function() { parse({orient: -90, shift: [0, 1]}, 'name')(), [1, 0, -90, {}] ) - // orient towards another point (and then move a diagonal to get to [1, 1]) - check( - parse({orient: 'ten', shift: [0, Math.SQRT2]}, 'name', points)(), - [1, 1, -45, {}] - ) }) it('rotate', function() { @@ -194,11 +80,6 @@ describe('Anchor', function() { parse({shift: [0, 1], rotate: -90}, 'name')(), [0, 1, -90, {}] ) - // rotate towards another point - check( - parse({rotate: {shift: [-1, -1]}}, 'name')(), - [0, 0, 135, {}] - ) }) it('affect', function() { @@ -218,38 +99,6 @@ describe('Anchor', function() { ) }) - it('resist', function() { - const p = new Point(0, 0, 0, {mirrored: true}) // origin, but mirrored - - // resistance should be correctly propagated for shifts - check( - parse({shift: [1, 1]}, 'name', {}, p)(), - [-1, 1, 0, {mirrored: true}] - ) - check( - parse({shift: [1, 1], resist: true}, 'name', {}, p)(), - [1, 1, 0, {mirrored: true}] - ) - - // ...and orients/rotations too - check( - parse({rotate: 10}, 'name', {}, p)(), - [0, 0, -10, {mirrored: true}] - ) - check( - parse({rotate: 10, resist: true}, 'name', {}, p)(), - [0, 0, 10, {mirrored: true}] - ) - }) - - it('string', function() { - // basic string form - check( - parse('ten', 'name', points)(), - [10, 10, -90, {label: 'ten'}] - ) - }) - it('array', function() { // basic multi-anchor check( diff --git a/test/unit/filter.js b/test/unit/filter.js deleted file mode 100644 index 3972e93..0000000 --- a/test/unit/filter.js +++ /dev/null @@ -1,70 +0,0 @@ -const filter = require('../../src/filter').parse -const anchor = require('../../src/anchor').parse -const Point = require('../../src/point') - -describe('Filter', function() { - - it('without points', function() { - filter(undefined, '').should.deep.equal([new Point()]) - filter(true, '').should.deep.equal([]) - filter(false, '').should.deep.equal([]) - filter({}, '').should.deep.equal([anchor({}, '', points)()]) - }) - - const points = { - one: new Point(0, 1, 0, {name: 'one', tags: ['odd']}), - two: new Point(0, 2, 0, {name: 'two', tags: ['even', 'prime']}), - three: new Point(0, 3, 0, {name: 'three', tags: {odd: 'yes', prime: 'yupp'}}), - mirror_one: new Point(0, 1, 0, {name: 'mirror_one', tags: ['odd'], mirrored: true}) - } - - it('empty filter', function() { - // an undefined config leads to a default point - filter(undefined, '', points).should.deep.equal([new Point()]) - // true shouldn't filter anything, while false should filter everything - filter(true, '', points).should.deep.equal(Object.values(points)) - filter(false, '', points).should.deep.equal([]) - // points should only be returned on their respective halves - // - so `source` is every match - filter(true, '', points, undefined, 'source').should.deep.equal(Object.values(points)) - // - `clone` is the mirror image of every match, which maps one to mirror_one, mirror_one to one, and two/three to nothing (as they don't have mirror parts) - filter(true, '', points, undefined, 'clone').should.deep.equal([points.mirror_one, points.one]) - // - and `both` is every match plus its mirror image as well - filter(true, '', points, undefined, 'both').should.deep.equal(Object.values(points)) - // objects just propagate to anchor (and then wrap in array for consistency) - filter({}, '', points).should.deep.equal([anchor({}, '', points)()]) - filter({}, '', points, undefined, 'source').should.deep.equal([anchor({}, '', points)()]) - filter({}, '', points, undefined, 'clone').should.deep.equal([anchor({}, '', points)()]) - filter({}, '', points, undefined, 'both').should.deep.equal([anchor({}, '', points)()]) - }) - - const names = points => points.map(p => p.meta.name) - - it('similar', function() { - // simple name string - names(filter('one', '', points)).should.deep.equal(['one']) - // simple name regex - names(filter('/^t/', '', points)).should.deep.equal(['two', 'three']) - // tags should count, too (one and mirror_one for the name, three for the odd tag) - names(filter('/^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) - // middle spec, should be the same as above, only explicit - names(filter('~ /^o/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) - // full spec (/n/ would normally match both "one" and "even", but on the tags level, it's just even) - names(filter('meta.tags ~ /n/', '', points)).should.deep.equal(['two']) - names(filter('meta.name,meta.tags ~ /n/', '', points)).should.deep.equal(['one', 'two', 'mirror_one']) - // negation - names(filter('meta.tags ~ -/n/', '', points)).should.deep.equal(['one', 'three', 'mirror_one']) - names(filter('meta.name,meta.tags ~ -/n/', '', points)).should.deep.equal(['three']) - // arrays OR by default at odd levels (including top level)... - names(filter(['one', 'two'], '', points)).should.deep.equal(['one', 'two']) - // ...and AND at even levels - names(filter([['even', 'prime']], '', points)).should.deep.equal(['two']) - // arbitrary nesting should be possible - names(filter([[['even', 'odd'], 'prime']], '', points)).should.deep.equal(['two', 'three']) - // invalid regexes should throw meaningful errors - filter.bind(this, '/\\/', '', points).should.throw('Invalid regex') - // anything other than string/array/object/undefined is also an error - filter.bind(this, 28, '', points).should.throw('Unexpected type') - }) - -}) diff --git a/test/unit/interface.js b/test/unit/interface.js index af93712..332c9cc 100644 --- a/test/unit/interface.js +++ b/test/unit/interface.js @@ -10,8 +10,7 @@ const load = name => yaml.safeLoad(fs.readFileSync( ).toString()) const minimal = load('minimal.yaml') const big = load('big.yaml') -const minimal_kle = load('minimal_kle.json') -const atreus_kle = load('atreus_kle.json') +const kle = load('atreus_kle.json') describe('Interface', function() { @@ -50,8 +49,7 @@ describe('Interface', function() { //: return 'not an object'; `, true, logger).should.be.rejectedWith('not valid'), - ergogen.process(minimal_kle, true, logger).should.be.rejectedWith('KLE'), - ergogen.process(atreus_kle, true, logger).should.be.rejectedWith('KLE'), + ergogen.process(kle, true, logger).should.be.rejectedWith('KLE'), ergogen.process('not an object', true, logger).should.be.rejectedWith('object'), ergogen.process({}, true, logger).should.be.rejectedWith('empty'), ergogen.process({not_points: {}}, true, () => {}).should.be.rejectedWith('points clause'), @@ -92,9 +90,9 @@ describe('Interface', function() { it('engine', async function() { return Promise.all([ ergogen.process({'meta.engine': 'invalid'}).should.be.rejectedWith('Invalid'), - ergogen.process({'meta.engine': '0.1.2'}).should.be.rejectedWith('satisfy'), + ergogen.process({'meta.engine': '^0.1.2'}).should.be.rejectedWith('satisfy'), // no "points clause" means we're over the engine check, so it "succeeded" - ergogen.process({'meta.engine': `${version}`}).should.be.rejectedWith('points clause') + ergogen.process({'meta.engine': `^${version}`}).should.be.rejectedWith('points clause') ]) }) diff --git a/test/unit/internals.js b/test/unit/internals.js deleted file mode 100644 index 2449d34..0000000 --- a/test/unit/internals.js +++ /dev/null @@ -1,22 +0,0 @@ -const m = require('makerjs') -const pcb_lib = require('../../src/pcbs') -const ergogen = require('../../src/ergogen') - -describe('Internals', function() { - - it('makerjs2kicad', function() { - // warn on unknown path type - sinon.stub(m.model, 'walk').callsFake(function(model, config) { - config.onPath({pathContext: {type: 'nonexistent'}}) - }) - pcb_lib._makerjs2kicad.bind(this).should.throw("Can't convert path type") - }) - - it('injection', function() { - // warn on unknown injection type - ergogen.inject.bind(this, 'nonexistent', 'name', 'value').should.throw('Unknown injection type') - }) -}) - - - diff --git a/test/unit/operation.js b/test/unit/operation.js index 9ffe371..de2a12e 100644 --- a/test/unit/operation.js +++ b/test/unit/operation.js @@ -13,10 +13,10 @@ describe('Operation', function() { it('operation', function() { // without choices, it's the same as op_prefix o.operation('arst').should.deep.equal({name: 'arst', operation: 'add'}) - // with choices, it propagates the "what" from where it found the name - o.operation('arst', {bad: [], good: ['arst']}).should.deep.equal({name: 'arst', operation: 'add', what: 'good'}) + // with choices, it propagates type where it found the name + o.operation('arst', {bad: [], good: ['arst']}).should.deep.equal({name: 'arst', operation: 'add', type: 'good'}) // it also respects order when overridden - o.operation('arst', {first: ['arst'], second: ['arst']}, ['second', 'first']).should.deep.equal({name: 'arst', operation: 'add', what: 'second'}) + o.operation('arst', {first: ['arst'], second: ['arst']}, ['second', 'first']).should.deep.equal({name: 'arst', operation: 'add', type: 'second'}) }) }) \ No newline at end of file diff --git a/test/unit/point.js b/test/unit/point.js index 33ef530..5f4b03f 100644 --- a/test/unit/point.js +++ b/test/unit/point.js @@ -36,7 +36,7 @@ describe('Point', function() { it('shifting', function() { const p = new Point(0, 0, -90) // at origin, "looking right" - // non-relative shift up and left, should be up and left + // absolute shift up and left, should be up and left check(p.clone().shift([-1, 1], false), [-1, 1, -90, {}]) // relative shift up and left, should be up and right check(p.clone().shift([-1, 1]), [1, 1, -90, {}]) @@ -50,19 +50,6 @@ describe('Point', function() { check(p.clone().rotate(-90, [1, 1]), [1, 2, -90, {}]) }) - it('resistance', function() { - const p = new Point(0, 0, 0, {mirrored: true}) // origin, but mirrored - // non-relative shift up and left, mirroring changes it to up and right - check(p.clone().shift([-1, 1], false), [1, 1, 0, {mirrored: true}]) - // ...but resistance keeps it up and left - check(p.clone().shift([-1, 1], false, true), [-1, 1, 0, {mirrored: true}]) - - // mirroring changes rotation direction, too - check(p.clone().rotate(-90), [0, 0, 90, {mirrored: true}]) - // ...but not when resistance is applied - check(p.clone().rotate(-90, false, true), [0, 0, -90, {mirrored: true}]) - }) - it('mirroring', function() { const p = new Point(0, 1, 0) // make sure mirroring inverts rotation, as well as positions correctly diff --git a/test/unit/prepare.js b/test/unit/prepare.js index 0b416f5..225e0da 100644 --- a/test/unit/prepare.js +++ b/test/unit/prepare.js @@ -24,7 +24,6 @@ describe('Prepare', function() { }) it('inherit', function() { - // normal case p.inherit({ a: { x: 1, @@ -44,23 +43,6 @@ describe('Prepare', function() { z: 3, w: 4 }) - // should apply to objects within arrays as well! - p.inherit({ - a: { - x: 1, - y: 2 - }, - b: [ - { - $extends: 'a', - z: 3 - } - ] - }).b[0].should.deep.equal({ - x: 1, - y: 2, - z: 3 - }) }) it('parameterize', function() { diff --git a/test/unit/units.js b/test/unit/units.js index ac1e947..393090a 100644 --- a/test/unit/units.js +++ b/test/unit/units.js @@ -1,23 +1,15 @@ const u = require('../../src/units') -const public = key => !key.startsWith('$') describe('Units', function() { it('defaults', function() { // check that an empty config has the default units (and nothing more) - const def1 = u.parse({}) - Object.keys(def1).filter(public).length.should.equal(4) - def1.U.should.equal(19.05) - def1.u.should.equal(19) - def1.cx.should.equal(18) - def1.cy.should.equal(17) - // check that an empty config has the default units (and nothing more) - const def2 = u.parse() - Object.keys(def2).filter(public).length.should.equal(4) - def2.U.should.equal(19.05) - def2.u.should.equal(19) - def2.cx.should.equal(18) - def2.cy.should.equal(17) + const def = u.parse({}) + Object.keys(def).length.should.equal(4) + def.U.should.equal(19.05) + def.u.should.equal(19) + def.cx.should.equal(18) + def.cy.should.equal(17) }) it('units', function() { @@ -28,7 +20,7 @@ describe('Units', function() { b: 'a + 1' } }) - Object.keys(res).filter(public).length.should.equal(6) + Object.keys(res).length.should.equal(6) res.a.should.equal(9) res.b.should.equal(10) // also check that order matters, which it should @@ -50,8 +42,8 @@ describe('Units', function() { a: 'U + 1' } }) - Object.keys(res).filter(public).length.should.equal(5) + Object.keys(res).length.should.equal(5) res.a.should.equal(20.05) }) -}) +}) \ No newline at end of file diff --git a/test/unit/utils.js b/test/unit/utils.js index 7ac48b8..fc3a54b 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -22,20 +22,6 @@ describe('Utils', function() { should.equal(u.deep(obj, 'non.existent.key'), undefined) }) - it('template', function() { - u.template('arst').should.equal('arst') - u.template('{arst}}').should.equal('{arst}}') - u.template('{{arst}}').should.equal('') - u.template('{{arst}}', {arst: 'neio'}).should.equal('neio') - u.template('{{a}}_{{b}}', {a: 'c', b: 'd'}).should.equal('c_d') - u.template( - '{{longlonglong}}_{{short}}', - {longlonglong: 'long', short: 'shortshortshort'} - ).should.equal('long_shortshortshort') - u.template('{{a.b.c}}', {a: {b: {c: 'deep'}}}).should.equal('deep') - u.template('{x: {{number}}, y: {{number}}}', {number: 5}).should.equal('{x: 5, y: 5}') - }) - it('eq', function() { // basic point usage u.eq([1, 2], [1, 2]).should.equal(true) @@ -116,13 +102,7 @@ describe('Utils', function() { u.poly([[0, 0], [1, 0], [1, 0], [1, 1]]).should.deep.equal(expected) // empty in, empty out u.poly([]).should.deep.equal({paths: {}}) - }) - it('poly', function() { - u.bbox([[0, 0], [1, 0], [1, 1]]).should.deep.equal({ - high: [1, 1], - low: [0, 0] - }) }) it('combine helpers', function() { @@ -139,25 +119,4 @@ describe('Utils', function() { }) }) - it('semver', function() { - const expected = {major: 1, minor: 0, patch: 0} - u.semver('1.0.0').should.deep.equal(expected) - u.semver('1.0.0-develop').should.deep.equal(expected) - u.semver('v1.0.0').should.deep.equal(expected) - u.semver('1').should.deep.equal(expected) - u.semver('1.0').should.deep.equal(expected) - u.semver.bind(this, '1.', 'name').should.throw() - u.semver.bind(this, 'invalid', 'name').should.throw() - }) - - it('satisfies', function() { - u.satisfies('1.2.3', '1.2.3').should.be.true - u.satisfies('1.2.3', '1.2.1').should.be.true - u.satisfies('1.2.3', '1.1.0').should.be.true - u.satisfies('1.2.3', '1.2.4').should.be.false - u.satisfies('1.2.3', '1.3.0').should.be.false - u.satisfies('1.2.3', '2.0.0').should.be.false - u.satisfies({major: 1, minor: 2, patch: 3}, {major: 1, minor: 2, patch: 3}).should.be.true - }) - }) \ No newline at end of file