From bd18e340f4b8870e98581c59cb69f1ba94c95bfc Mon Sep 17 00:00:00 2001
From: Thomas Pointhuber
Date: Sat, 2 Apr 2022 20:07:16 +0200
Subject: [PATCH] eagle: introduce *.lbr footprint import test
Bugs found but not fixed yet:
* Reference and Value are not converted correctly yet
* HOTFIX: test commented out
* GP3906-TLP and UBLOX_ZOE_M8-0-10 are not able to import the description again
* HOTFIX: description removed from gold file
---
pcbnew/plugins/eagle/eagle_plugin.cpp | 11 +-
qa/data/pcbnew/plugins/eagle/lbr/README.md | 11 +
.../pcbnew/plugins/eagle/lbr/SparkFun-GPS.lbr | 3311 +++++++++++++++++
.../ANT-GPS-2X7MM.kicad_mod | 38 +
.../ANT-GPS-2X8MM.kicad_mod | 36 +
.../SparkFun-GPS.pretty/COPERNICUS.kicad_mod | 456 +++
.../EM-506_OUTLINE.kicad_mod | 38 +
.../SparkFun-GPS.pretty/GP3906-TLP.kicad_mod | 597 +++
.../JST-6PIN-1MM.kicad_mod | 48 +
.../MLOEX_GNSS_MOLDED.kicad_mod | 119 +
.../MOLEX_GNSS_CHIP.kicad_mod | 103 +
.../MOLEX_GNSS_CUBE.kicad_mod | 198 +
.../lbr/SparkFun-GPS.pretty/NEO-M8P.kicad_mod | 733 ++++
.../NEO-M9N_M8T_M8U_D9S.kicad_mod | 734 ++++
.../lbr/SparkFun-GPS.pretty/SAM-M8Q.kicad_mod | 276 ++
.../lbr/SparkFun-GPS.pretty/TE_PUCK.kicad_mod | 29 +
.../TITAN_X1_GPS.kicad_mod | 107 +
.../UBLOX_ZED_F9R.kicad_mod | 251 ++
.../UBLOX_ZOE_M8-0-10.kicad_mod | 242 ++
.../VENUS638FLPX.kicad_mod | 176 +
.../lbr/SparkFun-GPS.pretty/W3011.kicad_mod | 97 +
.../lbr/SparkFun-GPS.pretty/W3062A.kicad_mod | 169 +
.../lbr/SparkFun-GPS.pretty/ZED-F9P.kicad_mod | 1159 ++++++
qa/pcbnew_utils/board_test_utils.cpp | 239 +-
qa/unittests/pcbnew/CMakeLists.txt | 1 +
.../altium/test_altium_pcblib_import.cpp | 14 +-
.../plugins/eagle/test_eagle_lbr_import.cpp | 110 +
27 files changed, 9185 insertions(+), 118 deletions(-)
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/README.md
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.lbr
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X7MM.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X8MM.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/COPERNICUS.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/EM-506_OUTLINE.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/GP3906-TLP.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/JST-6PIN-1MM.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MLOEX_GNSS_MOLDED.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CHIP.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CUBE.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M8P.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M9N_M8T_M8U_D9S.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/SAM-M8Q.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TE_PUCK.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TITAN_X1_GPS.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZED_F9R.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZOE_M8-0-10.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/VENUS638FLPX.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3011.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3062A.kicad_mod
create mode 100644 qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ZED-F9P.kicad_mod
create mode 100644 qa/unittests/pcbnew/plugins/eagle/test_eagle_lbr_import.cpp
diff --git a/pcbnew/plugins/eagle/eagle_plugin.cpp b/pcbnew/plugins/eagle/eagle_plugin.cpp
index 54eb654cd2..d37a053aa5 100644
--- a/pcbnew/plugins/eagle/eagle_plugin.cpp
+++ b/pcbnew/plugins/eagle/eagle_plugin.cpp
@@ -1847,6 +1847,8 @@ void EAGLE_PLUGIN::packagePad( FOOTPRINT* aFootprint, wxXmlNode* aTree )
else if( aFootprint->GetLayer() == B_Cu && m_rules->psBottom != EPAD::UNDEF )
shape = m_rules->psBottom;
+ pad->SetKeepTopBottom( false ); // TODO: correct? This seems to be KiCad default on import
+
pad->SetDrillSize( wxSize( eagleDrillz, eagleDrillz ) );
pad->SetLayerSet( LSET::AllCuMask() );
@@ -2107,9 +2109,6 @@ void EAGLE_PLUGIN::packageRectangle( FOOTPRINT* aFootprint, wxXmlNode* aTree ) c
dwg->SetPolyPoints( pts );
- dwg->SetStart0( start );
- dwg->SetEnd0( end );
-
if( r.rot )
dwg->Rotate( dwg->GetCenter(), EDA_ANGLE( r.rot->degrees, DEGREES_T ) );
}
@@ -2212,8 +2211,6 @@ void EAGLE_PLUGIN::packagePolygon( FOOTPRINT* aFootprint, wxXmlNode* aTree ) con
dwg->SetLayer( layer );
dwg->SetPolyPoints( pts );
- dwg->SetStart0( *pts.begin() );
- dwg->SetEnd0( pts.back() );
dwg->SetDrawCoord();
dwg->GetPolyShape().Inflate( p.width.ToPcbUnits() / 2, 32,
SHAPE_POLY_SET::ALLOW_ACUTE_CORNERS );
@@ -2321,6 +2318,8 @@ void EAGLE_PLUGIN::packageHole( FOOTPRINT* aFootprint, wxXmlNode* aTree, bool aC
PAD* pad = new PAD( aFootprint );
aFootprint->Add( pad );
+ pad->SetKeepTopBottom( false ); // TODO: correct? This seems to be KiCad default on import
+
pad->SetShape( PAD_SHAPE::CIRCLE );
pad->SetAttribute( PAD_ATTRIB::NPTH );
@@ -2364,6 +2363,8 @@ void EAGLE_PLUGIN::packageSMD( FOOTPRINT* aFootprint, wxXmlNode* aTree ) const
aFootprint->Add( pad );
transferPad( e, pad );
+ pad->SetKeepTopBottom( false ); // TODO: correct? This seems to be KiCad default on import
+
pad->SetShape( PAD_SHAPE::RECT );
pad->SetAttribute( PAD_ATTRIB::SMD );
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/README.md b/qa/data/pcbnew/plugins/eagle/lbr/README.md
new file mode 100644
index 0000000000..973a49b606
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/README.md
@@ -0,0 +1,11 @@
+# Eagle *.lbr testcases
+
+## SparkFun-GPS.lbr
+
+* Source: [SparkFun-Eagle-Libraries](https://github.com/sparkfun/SparkFun-Eagle-Libraries)
+* License: [Creative Commons ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)
+
+Known Errors:
+
+* Reference and Value are not transformed to their KiCad equivalent (assertions are commented out for now)
+* GP3906-TLP and UBLOX_ZOE_M8-0-10 different description import (removed description in gold file until issue is fixed)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.lbr b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.lbr
new file mode 100644
index 0000000000..5a9d1c11b9
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.lbr
@@ -0,0 +1,3311 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>SparkFun GPS, Antennas</h3>
+This library contains GPS modules, GPS antennas, etc.
+<br>
+<br>
+We've spent an enormous amount of time creating and checking these footprints and parts, but it is <b> the end user's responsibility</b> to ensure correctness and suitablity for a given componet or application.
+<br>
+<br>If you enjoy using this library, please buy one of our products at <a href=" www.sparkfun.com">SparkFun.com</a>.
+<br>
+<br>
+<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
+<br>
+<br>
+You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.
+
+
+<h3>GPS Chip Antenna - 2.0 x 8.0 x 1.5 mm</h3>
+<p>2.0 x 8.0 x 1.5 mm package</p>
+<p>Package used for Chant Sincere Co. 922D03E15X11113 GPS Antenna</p>
+<p><a href="https://www.sparkfun.com/datasheets/GPS/GPS-ChipAntenna.pdf">Example Datasheet</a></p>
+
+
+
+
+
+
+
+
+
+152111
+>VALUE
+>NAME
+
+
+
+<h3>GPS Chip Antenna - 7.0 x 2.0 x 0.8 mm</h3>
+<p>7.0 x 2.0 x 0.8 mm package</p>
+<p>Package used for Johanson 1575AT43A40 GPS Antenna</p>
+<p><a href="https://www.sparkfun.com/datasheets/GPS/JTI_Antenna-1575AT43A40_2006-09.pdf">Example Datasheet</a></p>
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+<h3>Trimble Copernicus and Copernicus II GPS Receiver</h3>
+<p><a href="http://cdn.sparkfun.com/datasheets/Sensors/GPS/63530-10_Rev-B_Manual_Copernicus-II.pdf">Datasheet</a></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+<h3>6-Pin Vertical JST Connector</h3>
+<p><ul><li>1.0mm pitch</li>
+<li>JST-SH type</li></ul></p>
+<p>Common interface for SparkFun GPS modules.</p>
+<p><a href="http://www.sparkfun.com/datasheets/GPS/EM406-SMDConnector-eSH.pdf">Datasheet</a></p>
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+<h3>EM-406 and EM-506 module dimensions</h3>
+<p>The EM-506 is a GPS receiver module with on-board voltage regulation and patch antenna built-in.</p>
+<p>30 x 30 x 10.7 mm</p>
+<p><a href="https://www.sparkfun.com/products/12751">Product Link</a></p>
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>Skytraq Venus638FLPX GPS Receiver - 44-pin 10 x 10 mm QFN</h3>
+<p>Venus638FLPx is a high performance, low cost, single chip GPS receiver.</p>
+<p><a href="http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus638FLPx.pdf">Datasheet</a></p>
+<p><a href="https://www.sparkfun.com/products/10919">SparkFun Product Link</a></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<h3>GP3906-TLP PoT GPS Module</h3>
+<p>The GP3906-TLP is a POT (Patch on Top) GPS module which is special designed for ultra low power consumption purpose environment. It is a GPS receiver providing a solution that high position and speed accuracy performances as well as high sensitivity and tracking capabilities in urban conditions. The GPS chipsets inside the module are designed by MediaTek Inc., which is the world's leading digital media solution provider and largest fab-less IC company in Taiwan. The module can support up to 66 channels. The GPS solution enables small form factor devices. They deliver major advancements in GPS performances, accuracy, integration, computing power and flexibility. They are designed to simplify the embedded system integration process.</p>
+
+<p>Features:
+<ul><li>Based on MediaTek Single Chip Architecture (MT3339).</li>
+<li>ARM7 based application processor</li>
+<li>High sensitivity: -165dBm tracking</li>
+<li>L1 frequency, C/A code</li>
+<li>Channels: 66 acquisition, 22 simultaneous tracking</li>
+<li>Low power consumption: 26mA @ acquisition, 20mA @ tracking</li>
+<li>Cold/Warm/Hot start time: <35/<33/<1 seconds</li>
+<li>Maximum update rate up to 10Hz</li>
+<li>GPS data interface: TTL level serial port</li>
+<li>Support NMEA 0183 standard V3.01 and backward compliance</li>
+<li>Support SBAS – WAAS, EGNOS, GAGAN and MSAS</li>
+<li>Dimension:16mm x 16mm x 6.7mm</li>
+<li>RoHS compliant</li>
+<li>Advanced software features</li>
+<ul><li>AlwaysLocate TM advanced location awareness technology</li>
+<li>EPO TM orbit prediction</li>
+<li>Supports logger function (LOCUS)</li></ul></ul></p>
+<p><a href="https://cdn.sparkfun.com/assets/learn_tutorials/4/6/8/GP3906-TLP_DataSheet_Rev_A01.pdf">Datasheet</a></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+<h3>UBLOX ZOE-M8Q-0-10</h3>
+<p>The ZOE-M8G and ZOE-M8Q are u-blox’s super small, highly integrated GNSS SiP (System in Package) modules
+based on the high performing u-blox M8 concurrent positioning engine. The ultra-miniature form factor integrates
+a complete GNSS receiver including SAW filter, LNA and TCXO. The ZOE-M8Q is
+the 3 V variant.</p>
+
+<p><b>Phyical Characteristics</b></p>
+<ul>
+<li>LGA</li>
+<li>51 Pins</li>
+<li>4.5mm X 4.5mm X 1mm</li>
+<li>51 Pins</li>
+</ul>
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>SAM-M8Q-0-10</h3>
+Physcial Characteristics
+<ul>
+<li>15x15x6.3mm</li>
+<li>Module is a Chip Antenna/GPS Unit combined</li>
+<li></li>
+</ul>
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+Reversible
+Antenna
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Reversible
+Antenna
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+Reversible
+Antenna
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>tName
+>tValue
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox NEO-M9N/M8T/M8U/D9S Module</h3>
+
+<h4>Mechanical Specifications</h4>
+<ul>
+<li>Overall: 12.2mm x 16.0mm</li>
+<li>Pad Pitch: 1.1mm</li>
+<li>Pad Width: .8mm </li>
+<li>Pad Length: .9mm</li>
+<li>Number of Pins: 24</li>
+<li></li>
+<li></li>
+<li></li>
+<li></li>
+<li></li>
+<li></li>
+</ul>
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox ZED-F9K ADR</h3>
+<p>GPS Unit with Real Time Kinematics (RTK) and internal IMU = <b>Automotive Dead Reckoning</b></p>
+<p>
+<b>Mechanical Specification </b>
+</p>
+<ul>
+<li>Physical Module: 22mm x 17mm</li>
+<li>Peripheral Pad Size: .8mm x 1.5mm </li>
+<li>Peripheral Pad Pitch: 1.1mm</li>
+<li>Total Peripheral Pins: 54</li>
+<li>Internal Pad Size: 1.1mm</li>
+<li>Internal Pad Pitch: 2.1mm </li>
+<li>Total Internal Pins: 48 (All Ground)</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>Antenna</h3>
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>EM-506 High Performance GPS Module</h3>
+<p>EM-506 GPS module features high sensitivity, low power and ultra small form factor. This GPS module is powered by SiRF Star IV, it can provide you with superior sensitivity and performance even in urban canyon and dense foliage environment. With SiRF CGEE (Client Generated Extended Ephemeris) technology, it predicts satellite positions for up to 3 days and delivers CGEE-start time of less than 15 seconds under most conditions, without any network assistance. Besides, MicroPower Mode allows GPS module to stay in a hot-start condition nearly continuously while consuming very little power.</p>
+<p>Product Features:
+<ul><li>SiRF Star IV high performance GPS Chipset</li>
+<li>Very high sensitivity (Tracking Sensitivity: -163 dBm)</li>
+<li>Extremely fast TTFF (Time To First Fix) at low signal level</li>
+<li>Support UART interface.</li>
+<li>Built-in LNA(with in CHIP)</li>
+<li>Compact size (30.0mm x 30.0 mm x 10.7mm) suitable for space-sensitive application</li>
+<li>Support NMEA 0183 V3.0 (GGA, GSA, GSV, RMC, VTG, GLL, ZDA) </li>
+<li>Support OSP protocol</li>
+<li>Support SBAS (WASS, EGNOS, MSAS, GAGAN)</li></ul></p>
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+EM406
+>NAME
+>VALUE
+
+
+<h3>GP-735 - Easy-to-use, Ultra-high performance, GPS Smart Antenna Module</h3>
+
+<p>ADH-tech GP-735 is a slim, ultra-high performance, easy to use GPS smart antenna module designed with u-blox’s latest 7th generation single chip. This feature rich GPS module not only shortens the design efforts but also provides powerful functions. The compact design allows fast adoption and high yield production. The power control feature is very convenient to turn on/off power just via GPIO control pin. It’s especially useful to turn off power as the GPS function is not needed in the host applications.</p>
+
+<p>Features
+<ul><li>Easy adoption with best performance</li>
+<li>Built-in narrow patch antenna for dimension demanding application</li>
+<li>Models of I-PEX RF connector option available for using external antenna</li>
+<li>Built-in backup power pin for faster position fix</li>
+<li>UART-TTL interface support</li>
+<li>Minimum RF and EMI efforts</li>
+<li>Fully implementation of ultra-high performance u-blox 7 single chip architecture</li>
+<li>High tracking sensitivity of -162dBm!</li>
+<li>Low power consumption of 37mA for average tracking</li>
+<li>Hardware power saving control pin allowing power on/off GPS via GPIO</li>
+<li>Windows location sensor support</li>
+<li>A-GPS support</li></ul></p>
+
+<p><a href="https://cdn.sparkfun.com/datasheets/GPS/GP-735T-150203.pdf">Datasheet</a></p>
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<h3>Venus638FLPX-L GPS Receiver</h3>
+
+<p>Venus638FLPx is a high performance, low cost, single
+chip GPS receiver targeting mobile consumer and cellular
+handset applications. It offers very low power
+consumption, high sensitivity, and best in class signal
+acquisition and time-to-first-fix performance.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+<h3>GP3906-TLP PoT GPS Module</h3>
+<p>The GP3906-TLP is a POT (Patch on Top) GPS module which is special designed for ultra low power consumption purpose environment. It is a GPS receiver providing a solution that high position and speed accuracy performances as well as high sensitivity and tracking capabilities in urban conditions. The GPS chipsets inside the module are designed by MediaTek Inc., which is the world's leading digital media solution provider and largest fab-less IC company in Taiwan. The module can support up to 66 channels. The GPS solution enables small form factor devices. They deliver major advancements in GPS performances, accuracy, integration, computing power and flexibility. They are designed to simplify the embedded system integration process.</p>
+
+<p>Features:
+<ul><li>Based on MediaTek Single Chip Architecture (MT3339).</li>
+<li>ARM7 based application processor</li>
+<li>High sensitivity: -165dBm tracking</li>
+<li>L1 frequency, C/A code</li>
+<li>Channels: 66 acquisition, 22 simultaneous tracking</li>
+<li>Low power consumption: 26mA @ acquisition, 20mA @ tracking</li>
+<li>Cold/Warm/Hot start time: <35/<33/<1 seconds</li>
+<li>Maximum update rate up to 10Hz</li>
+<li>GPS data interface: TTL level serial port</li>
+<li>Support NMEA 0183 standard V3.01 and backward compliance</li>
+<li>Support SBAS – WAAS, EGNOS, GAGAN and MSAS</li>
+<li>Dimension:16mm x 16mm x 6.7mm</li>
+<li>RoHS compliant</li>
+<li>Advanced software features</li>
+<ul><li>AlwaysLocate TM advanced location awareness technology</li>
+<li>EPO TM orbit prediction</li>
+<li>Supports logger function (LOCUS)</li></ul></ul></p>
+
+
+
+
+
+
+
+
+
+
+
+
+GP3906-TLP
+GPS
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+<h3>UBLOX ZOE-M8-0-10</h3>
+
+<p>The ZOE-M8G and ZOE-M8Q are u-blox’s super small, highly integrated GNSS SiP (System in Package) modules
+based on the high performing u-blox M8 concurrent positioning engine. The ultra-miniature form factor integrates
+a complete GNSS receiver including SAW filter, LNA and TCXO. ZOE-M8Q is
+the 3 V variant.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>NAME
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+<h3>Antenna (with ground termination)</h3>
+
+
+
+
+
+
+
+>NAME
+>VALUE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+<h3>u-blox NEO-M9N GPS Module</h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+<h3>u-blox NEO-M9N GPS Module</h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+<h3>u-blox NEO-M9N GPS Module</h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+<h3>u-blox NEO-D9S correction receiver</h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+>Name
+>Value
+
+
+
+
+
+
+
+
+<h3>Single-ended Antennae</h3>
+<p>1.575GHz antennae with just one terminal. These are all chip antennae.</p>
+<p><b>1575MHz (GPS) Antennae</b>
+<ul>
+<li><b>ANT-GPS-2X7MM</b> - 2.0 x 7.0 mm chip antenna. (<a href="https://www.sparkfun.com/products/9131">SparkFun Product</a>)</li>
+<li><b>ANT-GPS-2X8MM</b> - 2.0 x 8.0 mm chip antenna. (<a href="https://www.sparkfun.com/products/8418">SparkFun Product</a>)</li>
+</ul></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>Trimble Copernicus II GPS Receiver</h3>
+<p>The Trimble Copernicus II delivers proven performance and Trimble quality for a new generation of position-enabled products. It features the TrimCore™ navigation software for extremely fast startup times and high performance in foliage canopy and urban canyon environments.</p>
+<p><b>SparkFun Products</b>
+<ul><li><a href="https://www.sparkfun.com/products/10922">GPS Module - Copernicus II (12 Channel)</a> (GPS-10922)</li>
+<li><a href="https://www.sparkfun.com/products/11858">SparkFun GPS Module - Copernicus II DIP (12 Channel)</a> (GPS-11858)</li>
+</ul></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>USGlobalSat EM-506 High Performance GPS Module</h3>
+<p>EM-506 GPS module features high sensitivity, low power and ultra small form factor. This GPS module is powered by SiRF Star IV, it can provide you with superior sensitivity and performance even in urban canyon and dense foliage environment. With SiRF CGEE (Client Generated Extended Ephemeris) technology, it predicts satellite positions for up to 3 days and delivers CGEE-start time of less than 15 seconds under most conditions, without any network assistance. Besides, MicroPower Mode allows GPS module to stay in a hot-start condition nearly continuously while consuming very little power.</p>
+<p><b>SparkFun Products</b>
+<ul>
+<li><a href="https://www.sparkfun.com/products/12751">GPS Receiver - EM-506 (48 Channel)</a> (GPS-12751)</li>
+</ul></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>EM-506 High Performance GPS Module</h3>
+<p>EM-506 GPS module features high sensitivity, low power and ultra small form factor. This GPS module is powered by SiRF Star IV, it can provide you with superior sensitivity and performance even in urban canyon and dense foliage environment. With SiRF CGEE (Client Generated Extended Ephemeris) technology, it predicts satellite positions for up to 3 days and delivers CGEE-start time of less than 15 seconds under most conditions, without any network assistance. Besides, MicroPower Mode allows GPS module to stay in a hot-start condition nearly continuously while consuming very little power.</p>
+<p><b>SparkFun Products</b>
+<ul>
+<li><a href="https://www.sparkfun.com/products/12751">GPS Receiver - EM-506 (48 Channel)</a> (GPS-12751)</li>
+</ul></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>ADH-tech GP-735 - Easy-to-use, Ultra-high performance, GPS Smart Antenna Module</h3>
+
+<p>ADH-tech GP-735 is a slim, ultra-high performance, easy to use GPS smart antenna module designed with u-blox’s latest 7th generation single chip. This feature rich GPS module not only shortens the design efforts but also provides powerful functions. The compact design allows fast adoption and high yield production. The power control feature is very convenient to turn on/off power just via GPIO control pin. It’s especially useful to turn off power as the GPS function is not needed in the host applications.</p>
+
+<p><a href="https://cdn.sparkfun.com/datasheets/GPS/GP-735T-150203.pdf">Datasheet</a></p>
+
+<p><b>SparkFun Products</b>
+<ul><li><a href="https://www.sparkfun.com/products/13670">GPS Receiver - GP-735 (56 Channel)</a> (GPS-13670)</li></ul></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>Venus638FLPX-L GPS Receiver</h3>
+
+Venus638FLPx is a high performance, low cost, single chip GPS receiver targeting mobile consumer and cellular handset applications. It offers very low power consumption, high sensitivity, and best in class signal acquisition and time-to-first-fix performance.<p>
+Venus638FLPx contains all the necessary components of a complete GPS receiver, includes 1.2dB cascaded system NF RF front-end, GPS baseband signal processor, 0.5ppm TCXO, 32.768kHz RTC crystal, RTC LDO regulator, and passive components. It requires very low external component count and takes up only 100mm2 PCB footprint.<p>
+Dedicated massive-correlator signal parameter search engine within the baseband enables rapid search of all the available satellites and acquisition of very weak signal. An advanced track engine allows weak signal tracking and positioning in harsh environments such as urban canyons and under deep foliage. The self-contained architecture keeps GPS processing off the host and allows integration into applications with very little resource.</p>
+<h4>SparkFun Products</h4>
+<ul><li><a href="https://www.sparkfun.com/products/10919">GPS Module - Venus638FLPx-L 20Hz (14 Channel)</a> (GPS-10919)</li>
+</ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>GP3906-TLP PoT GPS Module</h3>
+<p>The GP3906-TLP is a POT (Patch on Top) GPS module which is special designed for ultra low power consumption purpose environment. It is a GPS receiver providing a solution that high position and speed accuracy performances as well as high sensitivity and tracking capabilities in urban conditions. The GPS chipsets inside the module are designed by MediaTek Inc., which is the world's leading digital media solution provider and largest fab-less IC company in Taiwan. The module can support up to 66 channels. The GPS solution enables small form factor devices. They deliver major advancements in GPS performances, accuracy, integration, computing power and flexibility. They are designed to simplify the embedded system integration process.</p>
+
+<p>Features:
+<ul><li>Based on MediaTek Single Chip Architecture (MT3339).</li>
+<li>ARM7 based application processor</li>
+<li>High sensitivity: -165dBm tracking</li>
+<li>L1 frequency, C/A code</li>
+<li>Channels: 66 acquisition, 22 simultaneous tracking</li>
+<li>Low power consumption: 26mA @ acquisition, 20mA @ tracking</li>
+<li>Cold/Warm/Hot start time: <35/<33/<1 seconds</li>
+<li>Maximum update rate up to 10Hz</li>
+<li>GPS data interface: TTL level serial port</li>
+<li>Support NMEA 0183 standard V3.01 and backward compliance</li>
+<li>Support SBAS – WAAS, EGNOS, GAGAN and MSAS</li>
+<li>Dimension:16mm x 16mm x 6.7mm</li>
+<li>RoHS compliant</li>
+<li>Advanced software features</li>
+<ul><li>AlwaysLocate TM advanced location awareness technology</li>
+<li>EPO TM orbit prediction</li>
+<li>Supports logger function (LOCUS)</li></ul></ul></p>
+<p><b>SparkFun Products</b>
+<ul>
+<li><a href="https://www.sparkfun.com/products/13750">SparkFun GPS Logger Shield</a> </li>
+</ul></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Titan X1 GPS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>UBLOX ZOE-M8Q-0-10</h3>
+<p>u-blox ZOE-M8 standard precision GNSS SiP (System in Package) modules feature the high performance u-blox M8
+GNSS engine. ZOE-M8’s ultra-miniature form factor integrates a complete GNSS receiver including SAW filter, LNA
+and TCXO.</p>
+<p>Handles all <b>GNSS systems</b> and can simulatenously use up to three of them, with accuracy ranging from 2.5m to 4m.</p>
+<ul>
+<li>GPS</li>
+<li>GLONASS</li>
+<li>BeiDou</li>
+<li>Galileo</li>
+</ul>
+
+This can be corrected with the <b>SBAS</b> or <b>QZSS </b> augmentation systems.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox SAM-M8Q</h3>
+<p>The u-blox concurrent SAM-M8Q GNSS patch antenna module benefits from the exceptional performance of the
+u-blox M8 multi-GNSS engine. The SAM-M8Q module offers high sensitivity and minimal acquisition times in an
+ultra compact form factor.</p>
+<p>The SAM-M8Q module utilizes concurrent reception of up to three GNSS systems (GPS/Galileo and GLONASS),
+recognizes multiple constellations simultaneously and provides outstanding positioning accuracy in scenarios
+where urban canyon or weak signals are involved. For even better and faster positioning improvement, the
+SAM-M8Q supports augmentation of QZSS, GAGAN and IMES together with WAAS, EGNOS, MSAS. The
+SAM-M8Q also supports message integrity protection, geofencing, and spoofing detection with configurable
+interface settings to easily fit to customer applications.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>U-blox NEO-M8P</h3>
+<p>The NEO-M8P module combines the high performance u-blox
+M8 positioning engine with u-blox’s Real Time Kinematic
+(RTK) technology. The NEO-M8P provides cm-level GNSS
+performance designed to meet the needs of unmanned vehicles and other machine control applications requiring high
+precision guidance.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox NEO-M9N GPS Module</h3>
+
+<p>The NEO-M9N module is built on the robust u-blox M9 GNSS chip, which provides exceptional
+sensitivity and acquisition times for all L1 GNSS systems. The u-blox M9 standard precision GNSS
+platform, which delivers meter-level accuracy, succeeds the well-known u-blox M8 product range.
+The receiver also provides higher navigation rate and improved security features compared to
+previous u-blox GNSS generations.
+The NEO-M9N module is available in the NEO form factor LLC package</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox NEO-M8T</h3>
+<p>The NEO-M8T and LEA-M8T concurrent GNSS modules deliver high integrity, precision timing in demanding applicationsworld-wide. Support for BeiDou, GLONASS and Galileo constellations enables compliance with national requirements.
+Enhanced sensitivity and concurrent constellation reception
+extend coverage and integrity to challenging signal environments. Survey-in and fixed-position navigation reduce timing jitter, even at low signal levels, and enable synchronization to
+be maintained with as few as one single satellite in view. Support for low duty cycle operation reduces power consumption for battery-powered applications.
+</p>
+<p>
+u-blox timing products include timing integrity measures
+with Receiver Autonomous Integrity Monitoring (RAIM) and
+continuous phase uncertainty estimation. They feature high
+dynamic range radios with both analog and digital interference
+mitigation, supporting applications in wireless communications equipment.
+</p>
+<p>
+The M8T timing modules are delivered in u-blox’s established
+LEA and NEO form-factors with standard pin-out, allowing
+ready migration from previous product generations.
+u-blox timing products can make use of u-blox AssistNow or
+industry-standard aiding data. This reduces the time-to-firstfix and delivers exceptional acquisition sensitivity, even on
+first installation before precise location, time or frequency are
+known.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox NEO-M8U</h3>
+<p>
+The NEO-M8U module introduces u-blox’s Untethered Dead Reckoning (UDR) technology, which provides continuous navigation without requiring speed information from the vehicle. This innovative technology brings the benefits of dead reckoning to installations previously restricted to using GNSS alone, and significantly reduces the cost of installation for after-market dead reckoning applications.
+</p>
+<p>
+The strength of UDR is particularly apparent under poor signal conditions, where it brings continuous positioning in urban environments, even to devices with antennas installed within the vehicle. Useful positioning performance is also available during complete signal loss, for example in parking garages and short tunnels. With UDR, positioning starts as soon as power is applied to the module, before the first GNSS fix is available.
+</p>
+<p>
+The NEO-M8U may be installed in any position within the vehicle without configuration. In addition to its freedom from any electrical connection to the vehicle, the on-board accelerometer and gyroscope sensors result in a fully self-contained solution, perfect for rapid product development with reliable and consistent performance.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox ZED-F9K ADR</h3>
+<p>GPS Unit with Real Time Kinematics (RTK) and internal IMU = <b>Automotive Dead Reckoning</b></p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3>u-blox NEO-D9S</h3>
+<p>
+The NEO-D9S can receive the data stream of a GNSS correction service, broadcast via satellite L band and compliant to the specification the product is designed for. Integrated with a high precision GNSS receiver, such as from the u-blox F9 platform, it enables the positioning system to reach down to centimeter-level accuracy.
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Since Version 6.2.2 text objects can contain more than one line,
+which will not be processed correctly with this version.
+
+
+
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X7MM.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X7MM.kicad_mod
new file mode 100644
index 0000000000..5f61165de1
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X7MM.kicad_mod
@@ -0,0 +1,38 @@
+(footprint "ANT-GPS-2X7MM" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "GPS Chip Antenna - 7.0 x 2.0 x 0.8 mm
\n7.0 x 2.0 x 0.8 mm package
\nPackage used for Johanson 1575AT43A40 GPS Antenna
\nExample Datasheet
")
+ (fp_text reference ">NAME" (at 0 -1.243) (layer "F.SilkS")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify bottom))
+ (tstamp 6c1406ea-2aa3-4f33-856a-3cac6407d7eb)
+ )
+ (fp_text value ">VALUE" (at 0 1.243) (layer "F.Fab")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify top))
+ (tstamp bf36aa30-45da-40ef-9edd-a28d102b610c)
+ )
+ (fp_line (start -4.1 -1) (end -4.1 1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 94914080-b527-4118-981c-df197b06d976))
+ (fp_line (start -2.7 -1.1) (end 2.7 -1.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 2cbac0db-66ce-4998-98ef-625602a3a868))
+ (fp_line (start -2.7 1.1) (end 2.7 1.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp f8dfc593-d1ef-496c-9a01-e0d264cce381))
+ (fp_line (start -2.6 -0.3) (end -2.6 0.3)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 1197223b-cb1b-4985-b476-dd6f393cca55))
+ (fp_line (start -2.6 0.3) (end -1.6 0.3)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 8da7104b-1b0a-49d1-ab09-0b077ee0a854))
+ (fp_line (start -1.6 -0.3) (end -2.6 -0.3)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 2872377f-b65a-459c-9acb-10ae007ad46b))
+ (fp_line (start -1.6 0.3) (end -1.6 -0.3)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 9b7cc8dd-202d-49da-8f87-da8da7e80e58))
+ (fp_line (start -3.5 -1) (end 3.5 -1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 6247ff5e-6c0c-49c7-b4ee-6377ce8422c2))
+ (fp_line (start -3.5 1) (end -3.5 -1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 1f744069-7fa5-40cb-9644-b14f567eba43))
+ (fp_line (start 3.5 -1) (end 3.5 1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 40c24801-6a8d-4ce9-9055-753ada4c1fd0))
+ (fp_line (start 3.5 1) (end -3.5 1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 8dd4122f-c7d7-46a4-84a6-c5023a910266))
+ (pad "1" smd rect (at -3.4 0 90) (size 2 0.75) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5955246c-e2e8-46cb-9aa8-e7efc1ead76c))
+ (pad "NC" smd rect (at 3.4 0 90) (size 2 0.75) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e2950cc4-dc23-4edc-a731-76492b4aa3b2))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X8MM.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X8MM.kicad_mod
new file mode 100644
index 0000000000..3172749bf1
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ANT-GPS-2X8MM.kicad_mod
@@ -0,0 +1,36 @@
+(footprint "ANT-GPS-2X8MM" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "GPS Chip Antenna - 2.0 x 8.0 x 1.5 mm
\n2.0 x 8.0 x 1.5 mm package
\nPackage used for Chant Sincere Co. 922D03E15X11113 GPS Antenna
\nExample Datasheet
")
+ (fp_text reference ">NAME" (at 0 -1.243) (layer "F.SilkS")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify bottom))
+ (tstamp 1c3f99a3-672c-4c1e-949f-13435d987a5f)
+ )
+ (fp_text value ">VALUE" (at 0 1.243) (layer "F.Fab")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify top))
+ (tstamp 6ab0be29-c5da-4299-8358-a6d8203f46d3)
+ )
+ (fp_text user "152111" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.560832 0.560832) (thickness 0.048768)))
+ (tstamp aeb390e5-bf31-4724-9fc4-764d767a50e6)
+ )
+ (fp_line (start -4.7 -1) (end -4.7 1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 07fa9571-4c28-410c-9bb1-f9bc566d7025))
+ (fp_line (start -3 -1.1) (end 3 -1.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 6c55191f-d850-4eb2-9992-ef31d845397b))
+ (fp_line (start 3 1.1) (end -3 1.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 1b726e4b-b9bc-4203-8a98-750bfb4236e7))
+ (fp_circle (center -3 -0.6) (end -2.873 -0.6)
+ (stroke (width 0.254) (type solid)) (fill solid) (layer "F.SilkS") (tstamp fcc52429-7e04-4848-8cf9-327d13cf6079))
+ (fp_line (start -4 -1) (end -4 1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp a23b2899-0625-4a89-9618-d65f3e4a638a))
+ (fp_line (start -4 1) (end 4 1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 6dc70d70-adaa-4286-8090-e0326ba4664b))
+ (fp_line (start 4 -1) (end -4 -1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 16a78e26-8f50-4a3e-8805-f85f65b0a278))
+ (fp_line (start 4 1) (end 4 -1)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp ec2be382-5939-4577-80e8-9092c7b936f1))
+ (pad "NC" smd rect (at 4 0) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ea5dbccf-6df7-4b0e-83d5-7e15099be7f2))
+ (pad "SIG" smd rect (at -4 0) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 31f2345d-2877-458a-834d-1f1aabd38010))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/COPERNICUS.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/COPERNICUS.kicad_mod
new file mode 100644
index 0000000000..6160936eff
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/COPERNICUS.kicad_mod
@@ -0,0 +1,456 @@
+(footprint "COPERNICUS" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "Trimble Copernicus and Copernicus II GPS Receiver
\nDatasheet
")
+ (fp_text reference ">NAME" (at 0 -1) (layer "F.SilkS")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify bottom))
+ (tstamp d6c8194e-589d-4752-9f0d-2d52723f3b1b)
+ )
+ (fp_text value ">VALUE" (at 0 1) (layer "F.Fab")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify top))
+ (tstamp 24e0e6e2-af98-4b34-a0dd-fdf796720f34)
+ )
+ (fp_poly
+ (pts
+ (xy -7.7047 -9.5175)
+ (xy -7.8063 -9.5175)
+ (xy -7.8063 -8.3745)
+ (xy -8.5937 -8.3745)
+ (xy -8.5937 -9.5175)
+ (xy -8.6953 -9.5175)
+ (xy -8.6953 -10.1525)
+ (xy -7.7047 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 736351cb-0b75-422e-80fe-f67b6d9860ff))
+ (fp_poly
+ (pts
+ (xy -7.8063 9.4817)
+ (xy -7.7047 9.4817)
+ (xy -7.7047 10.1167)
+ (xy -8.6953 10.1167)
+ (xy -8.6953 9.4817)
+ (xy -8.5937 9.4817)
+ (xy -8.5937 8.3387)
+ (xy -7.8063 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 6b545b21-7f1d-420a-be70-a1a050a2d153))
+ (fp_poly
+ (pts
+ (xy -6.4347 -9.5175)
+ (xy -6.5363 -9.5175)
+ (xy -6.5363 -8.3745)
+ (xy -7.3237 -8.3745)
+ (xy -7.3237 -9.5175)
+ (xy -7.4253 -9.5175)
+ (xy -7.4253 -10.1525)
+ (xy -6.4347 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3460239c-7d26-475b-95ac-b000a67b1e2f))
+ (fp_poly
+ (pts
+ (xy -6.5363 9.4817)
+ (xy -6.4347 9.4817)
+ (xy -6.4347 10.1167)
+ (xy -7.4253 10.1167)
+ (xy -7.4253 9.4817)
+ (xy -7.3237 9.4817)
+ (xy -7.3237 8.3387)
+ (xy -6.5363 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b22d248f-0882-4a9f-8b00-c4b775425978))
+ (fp_poly
+ (pts
+ (xy -5.1647 -9.5175)
+ (xy -5.2663 -9.5175)
+ (xy -5.2663 -8.3745)
+ (xy -6.0537 -8.3745)
+ (xy -6.0537 -9.5175)
+ (xy -6.1553 -9.5175)
+ (xy -6.1553 -10.1525)
+ (xy -5.1647 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 10d8d8bc-aa5b-45ff-8e7b-22f45e25d5c3))
+ (fp_poly
+ (pts
+ (xy -5.2663 9.4817)
+ (xy -5.1647 9.4817)
+ (xy -5.1647 10.1167)
+ (xy -6.1553 10.1167)
+ (xy -6.1553 9.4817)
+ (xy -6.0537 9.4817)
+ (xy -6.0537 8.3387)
+ (xy -5.2663 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 23f83bb7-aeee-43fb-9d66-3063c31f94b6))
+ (fp_poly
+ (pts
+ (xy -3.8947 -9.5175)
+ (xy -3.9963 -9.5175)
+ (xy -3.9963 -8.3745)
+ (xy -4.7837 -8.3745)
+ (xy -4.7837 -9.5175)
+ (xy -4.8853 -9.5175)
+ (xy -4.8853 -10.1525)
+ (xy -3.8947 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp ec01c6ad-9323-4790-a3f1-b6fdedb3f424))
+ (fp_poly
+ (pts
+ (xy -3.9963 9.4817)
+ (xy -3.8947 9.4817)
+ (xy -3.8947 10.1167)
+ (xy -4.8853 10.1167)
+ (xy -4.8853 9.4817)
+ (xy -4.7837 9.4817)
+ (xy -4.7837 8.3387)
+ (xy -3.9963 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2a2517e6-aa51-49aa-8e38-9971c53aea9a))
+ (fp_poly
+ (pts
+ (xy -2.6247 -9.5175)
+ (xy -2.7263 -9.5175)
+ (xy -2.7263 -8.3745)
+ (xy -3.5137 -8.3745)
+ (xy -3.5137 -9.5175)
+ (xy -3.6153 -9.5175)
+ (xy -3.6153 -10.1525)
+ (xy -2.6247 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b7ce86f6-d6b4-404c-99ee-a75bc71a8fb6))
+ (fp_poly
+ (pts
+ (xy -2.7263 9.4817)
+ (xy -2.6247 9.4817)
+ (xy -2.6247 10.1167)
+ (xy -3.6153 10.1167)
+ (xy -3.6153 9.4817)
+ (xy -3.5137 9.4817)
+ (xy -3.5137 8.3387)
+ (xy -2.7263 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp fb267bb5-b815-4e5c-8d49-0334d18e863f))
+ (fp_poly
+ (pts
+ (xy -1.3547 -9.5175)
+ (xy -1.4563 -9.5175)
+ (xy -1.4563 -8.3745)
+ (xy -2.2437 -8.3745)
+ (xy -2.2437 -9.5175)
+ (xy -2.3453 -9.5175)
+ (xy -2.3453 -10.1525)
+ (xy -1.3547 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 8ea4eac1-3c01-4ab1-bb54-2b73d2bdb052))
+ (fp_poly
+ (pts
+ (xy -1.4563 9.4817)
+ (xy -1.3547 9.4817)
+ (xy -1.3547 10.1167)
+ (xy -2.3453 10.1167)
+ (xy -2.3453 9.4817)
+ (xy -2.2437 9.4817)
+ (xy -2.2437 8.3387)
+ (xy -1.4563 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2331ef34-2b56-41d3-924b-be563aeb94e6))
+ (fp_poly
+ (pts
+ (xy -0.0847 -9.5175)
+ (xy -0.1863 -9.5175)
+ (xy -0.1863 -8.3745)
+ (xy -0.9737 -8.3745)
+ (xy -0.9737 -9.5175)
+ (xy -1.0753 -9.5175)
+ (xy -1.0753 -10.1525)
+ (xy -0.0847 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b928b6a3-a06f-4c7d-997b-64649f874b52))
+ (fp_poly
+ (pts
+ (xy -0.1863 9.4817)
+ (xy -0.0847 9.4817)
+ (xy -0.0847 10.1167)
+ (xy -1.0753 10.1167)
+ (xy -1.0753 9.4817)
+ (xy -0.9737 9.4817)
+ (xy -0.9737 8.3387)
+ (xy -0.1863 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f7090122-d18a-4f2c-8d7d-a40f1a9240ea))
+ (fp_poly
+ (pts
+ (xy 1.1853 -9.5175)
+ (xy 1.0837 -9.5175)
+ (xy 1.0837 -8.3745)
+ (xy 0.2963 -8.3745)
+ (xy 0.2963 -9.5175)
+ (xy 0.1947 -9.5175)
+ (xy 0.1947 -10.1525)
+ (xy 1.1853 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 5a9a4115-c88e-4907-92eb-599b45f1c9a2))
+ (fp_poly
+ (pts
+ (xy 1.0837 9.4817)
+ (xy 1.1853 9.4817)
+ (xy 1.1853 10.1167)
+ (xy 0.1947 10.1167)
+ (xy 0.1947 9.4817)
+ (xy 0.2963 9.4817)
+ (xy 0.2963 8.3387)
+ (xy 1.0837 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 8a6b4c2b-a61f-43a2-a7ac-d3388ab9cc5a))
+ (fp_poly
+ (pts
+ (xy 2.4553 -9.5175)
+ (xy 2.3537 -9.5175)
+ (xy 2.3537 -8.3745)
+ (xy 1.5663 -8.3745)
+ (xy 1.5663 -9.5175)
+ (xy 1.4647 -9.5175)
+ (xy 1.4647 -10.1525)
+ (xy 2.4553 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7e041ee8-de95-4db4-a956-7a0c0a79ea83))
+ (fp_poly
+ (pts
+ (xy 2.3537 9.4817)
+ (xy 2.4553 9.4817)
+ (xy 2.4553 10.1167)
+ (xy 1.4647 10.1167)
+ (xy 1.4647 9.4817)
+ (xy 1.5663 9.4817)
+ (xy 1.5663 8.3387)
+ (xy 2.3537 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 47ce2776-130e-400d-a468-8b1ec684ebe4))
+ (fp_poly
+ (pts
+ (xy 3.7253 -9.5175)
+ (xy 3.6237 -9.5175)
+ (xy 3.6237 -8.3745)
+ (xy 2.8363 -8.3745)
+ (xy 2.8363 -9.5175)
+ (xy 2.7347 -9.5175)
+ (xy 2.7347 -10.1525)
+ (xy 3.7253 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f653aaf2-32ad-4c10-834c-6e3a2a36071f))
+ (fp_poly
+ (pts
+ (xy 3.6237 9.4817)
+ (xy 3.7253 9.4817)
+ (xy 3.7253 10.1167)
+ (xy 2.7347 10.1167)
+ (xy 2.7347 9.4817)
+ (xy 2.8363 9.4817)
+ (xy 2.8363 8.3387)
+ (xy 3.6237 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 18e40516-7f8c-4bf3-9141-d891bd7bf5c0))
+ (fp_poly
+ (pts
+ (xy 4.9953 -9.5175)
+ (xy 4.8937 -9.5175)
+ (xy 4.8937 -8.3745)
+ (xy 4.1063 -8.3745)
+ (xy 4.1063 -9.5175)
+ (xy 4.0047 -9.5175)
+ (xy 4.0047 -10.1525)
+ (xy 4.9953 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 35e86cac-b0e4-42a5-9e9b-043f67ee8278))
+ (fp_poly
+ (pts
+ (xy 4.8937 9.4817)
+ (xy 4.9953 9.4817)
+ (xy 4.9953 10.1167)
+ (xy 4.0047 10.1167)
+ (xy 4.0047 9.4817)
+ (xy 4.1063 9.4817)
+ (xy 4.1063 8.3387)
+ (xy 4.8937 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c5188249-4023-4a57-817d-cffbac66dfb9))
+ (fp_poly
+ (pts
+ (xy 6.2653 -9.5175)
+ (xy 6.1637 -9.5175)
+ (xy 6.1637 -8.3745)
+ (xy 5.3763 -8.3745)
+ (xy 5.3763 -9.5175)
+ (xy 5.2747 -9.5175)
+ (xy 5.2747 -10.1525)
+ (xy 6.2653 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 4bc6c6d7-19bb-4baa-880e-073da88ba689))
+ (fp_poly
+ (pts
+ (xy 6.1637 9.4817)
+ (xy 6.2653 9.4817)
+ (xy 6.2653 10.1167)
+ (xy 5.2747 10.1167)
+ (xy 5.2747 9.4817)
+ (xy 5.3763 9.4817)
+ (xy 5.3763 8.3387)
+ (xy 6.1637 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3443f0d4-d955-4886-a4ab-6080cb334f20))
+ (fp_poly
+ (pts
+ (xy 7.5353 -9.5175)
+ (xy 7.4337 -9.5175)
+ (xy 7.4337 -8.3745)
+ (xy 6.6463 -8.3745)
+ (xy 6.6463 -9.5175)
+ (xy 6.5447 -9.5175)
+ (xy 6.5447 -10.1525)
+ (xy 7.5353 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2f302600-aa37-4851-87fe-1850c2195ded))
+ (fp_poly
+ (pts
+ (xy 7.4337 9.4817)
+ (xy 7.5353 9.4817)
+ (xy 7.5353 10.1167)
+ (xy 6.5447 10.1167)
+ (xy 6.5447 9.4817)
+ (xy 6.6463 9.4817)
+ (xy 6.6463 8.3387)
+ (xy 7.4337 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7db12a94-b0e5-453c-8be5-742d00bbf5c6))
+ (fp_poly
+ (pts
+ (xy 8.8053 -9.5175)
+ (xy 8.7037 -9.5175)
+ (xy 8.7037 -8.3745)
+ (xy 7.9163 -8.3745)
+ (xy 7.9163 -9.5175)
+ (xy 7.8147 -9.5175)
+ (xy 7.8147 -10.1525)
+ (xy 8.8053 -10.1525)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 08b4995c-fd6e-44ca-93bd-c4e3a7b7d352))
+ (fp_poly
+ (pts
+ (xy 8.7037 9.4817)
+ (xy 8.8053 9.4817)
+ (xy 8.8053 10.1167)
+ (xy 7.8147 10.1167)
+ (xy 7.8147 9.4817)
+ (xy 7.9163 9.4817)
+ (xy 7.9163 8.3387)
+ (xy 8.7037 8.3387)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f9a45543-92e2-40f4-9bc0-e4b499605c87))
+ (fp_line (start -9.7 -9.7) (end -9.7 9.7)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 248b5d41-a926-4bef-9c83-5de5281490eb))
+ (fp_line (start -9.7 9.7) (end -8.9 9.7)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 48ddcb09-c140-4444-a9cb-fd400eedcaf6))
+ (fp_line (start -9 -9.7) (end -9.7 -9.7)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp b073f3a8-e868-4500-a997-d92899f605a2))
+ (fp_line (start 9.1 9.7) (end 9.7 9.7)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp cafe3fcf-4995-4259-ac12-b97a95312df3))
+ (fp_line (start 9.7 -9.7) (end 9.1 -9.7)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp d8686d8a-7dba-44d3-a396-37a6ca432a13))
+ (fp_line (start 9.7 -9.7) (end 9.7 9.7)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp bda5e937-e434-4b2a-b95e-28271e92da59))
+ (fp_circle (center -10.273 9.3) (end -10.0445 9.3)
+ (stroke (width 0.457) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 20fac41c-50d4-41a3-8f8d-4d3dbcdd5445))
+ (fp_circle (center -8.2 6.8) (end -7.743 6.8)
+ (stroke (width 0.2032) (type solid)) (fill none) (layer "F.SilkS") (tstamp e5103951-772d-4b7d-887d-a2323dd2ed23))
+ (fp_line (start -9.5 -9.5) (end -9.5 9.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 8d894acc-b43d-4f9d-88cc-6047b02a17c0))
+ (fp_line (start -9.5 -9.5) (end 9.5 -9.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp ea6ee947-606e-4b3b-8cbb-94c5e2abd5a8))
+ (fp_line (start -9.5 9.5) (end 9.5 9.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 0a6082a5-6f3c-46f8-8730-67e749aa9eb1))
+ (fp_line (start 9.5 -9.5) (end 9.5 9.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp df67e954-7294-478a-b2d5-da72e8daf17b))
+ (pad "1" smd rect (at -8.2 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d463b282-e276-4c8e-b2c3-fa3386f8c836))
+ (pad "2" smd rect (at -6.93 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 07f7cfa2-5632-4174-a14c-ca5a3acbb440))
+ (pad "3" smd rect (at -5.66 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 741519c0-61cc-421b-874c-a03afe140c60))
+ (pad "4" smd rect (at -4.39 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2f2ca327-39e2-4493-8310-d1eca57e6790))
+ (pad "5" smd rect (at -3.12 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 36228d78-6d27-4a25-add2-ae022052d59c))
+ (pad "6" smd rect (at -1.85 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 69c650f2-27de-4e01-8fb3-f6c2279cb65d))
+ (pad "7" smd rect (at -0.58 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 22eac0e8-0ebd-4bb3-9fd8-fdc035b5b3fb))
+ (pad "8" smd rect (at 0.69 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cf120c83-e44b-4426-a7a9-11d3c78bdef5))
+ (pad "9" smd rect (at 1.96 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d74a4470-80a2-4ef2-8b36-038ced1bc84a))
+ (pad "10" smd rect (at 3.23 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dc4ef120-3a57-433d-a476-c54193fc2ee1))
+ (pad "11" smd rect (at 4.5 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 32e0813b-7156-4231-bbd5-96ad2681a3d6))
+ (pad "12" smd rect (at 5.77 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 049ee871-927c-49fb-8008-6cd2ec1f2ae1))
+ (pad "13" smd rect (at 7.04 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1c53ff52-b9ab-4c49-b4d2-f32475c49188))
+ (pad "14" smd rect (at 8.31 9.1642 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d9bbb9e9-b955-4be6-8e1d-8ad7b9a9c717))
+ (pad "15" smd rect (at 8.31 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp aed3cb78-4c6f-416d-97bd-436890eed70c))
+ (pad "16" smd rect (at 7.04 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2e6e25a2-36f0-41e9-a867-41e1efca22a4))
+ (pad "17" smd rect (at 5.77 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5a029f62-dd45-4666-897e-7823fc50724d))
+ (pad "18" smd rect (at 4.5 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5faf9e31-6472-4053-9b4f-bef85177a96e))
+ (pad "19" smd rect (at 3.23 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 25c52b64-eda5-40ba-ab1f-1e51e26e3682))
+ (pad "20" smd rect (at 1.96 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 22ef66ea-5b89-4f60-ace6-cf2020bd9332))
+ (pad "21" smd rect (at 0.69 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e54da482-bc0a-41ea-8308-792d67d0bbc4))
+ (pad "22" smd rect (at -0.58 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 28dc9680-6177-45ff-be08-6cd0c0db4827))
+ (pad "23" smd rect (at -1.85 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2c500340-a130-487e-9f13-05ad473e8f96))
+ (pad "24" smd rect (at -3.12 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9b398e68-756b-4916-b0a6-501964bf98ec))
+ (pad "25" smd rect (at -4.39 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 32b2ab83-a8bb-4310-a440-a976d847ffbb))
+ (pad "26" smd rect (at -5.66 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 849920c4-f9ea-409d-b526-583ea919c4d3))
+ (pad "27" smd rect (at -6.93 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0378e2ea-7e00-4991-b3dc-efc3def57a01))
+ (pad "28" smd rect (at -8.2 -9.2 180) (size 0.762 1.651) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5bc09db8-44a7-4a2c-871f-d3649e415c17))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/EM-506_OUTLINE.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/EM-506_OUTLINE.kicad_mod
new file mode 100644
index 0000000000..aec646166c
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/EM-506_OUTLINE.kicad_mod
@@ -0,0 +1,38 @@
+(footprint "EM-506_OUTLINE" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "EM-406 and EM-506 module dimensions
\nThe EM-506 is a GPS receiver module with on-board voltage regulation and patch antenna built-in.
\n30 x 30 x 10.7 mm
\nProduct Link
")
+ (fp_text reference ">NAME" (at 0.24 -0.24) (layer "F.SilkS")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify bottom))
+ (tstamp a328d818-f0f9-4063-af62-ce05f05c96b8)
+ )
+ (fp_text value ">VALUE" (at 0 1.27) (layer "F.Fab")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify top))
+ (tstamp e2c89449-6558-4246-8bf5-9ab8f1bd9773)
+ )
+ (fp_line (start -15.127 -15.127) (end 15.127 -15.127)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 454af6a8-cba6-4e7a-b2d9-4e2e31f90b24))
+ (fp_line (start -15.127 15.127) (end -15.127 -15.127)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 7b7805e8-6e17-4790-b606-3405f7bc1bef))
+ (fp_line (start -4 12) (end 4 12)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp e9b1e6e3-fb13-489a-9741-5b0be9d5a571))
+ (fp_line (start -4 15.127) (end -15.127 15.127)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp b205e6a0-7c38-43a4-b459-757b084d7ce7))
+ (fp_line (start -4 15.127) (end -4 12)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 22b0ab4c-42e2-4aae-a56d-88a2d9d1243d))
+ (fp_line (start 4 15.127) (end -4 15.127)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 7a65089c-1b2d-493c-a0c3-7c6e3d5c4354))
+ (fp_line (start 4 15.127) (end 4 12)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 598b5943-759f-49e1-86c2-a3eb9be203df))
+ (fp_line (start 15.127 -15.127) (end 15.127 15.127)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp f06948d6-0f66-414d-9193-644afb8704b6))
+ (fp_line (start 15.127 15.127) (end 4 15.127)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp e40ccadc-1f72-4681-b766-2d35cbb66a47))
+ (fp_line (start -15 -15) (end 15 -15)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 567f05db-32d4-4350-89a6-932ae38f06c0))
+ (fp_line (start -15 15) (end -15 -15)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp b8b74bec-e4ce-41f0-b741-ffa8b58f8fdd))
+ (fp_line (start 15 -15) (end 15 15)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 2004c8ab-d5bf-456c-afac-8169ea3084e9))
+ (fp_line (start 15 15) (end -15 15)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp f0cf69c8-dad3-46a6-b093-5b43a19576d4))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/GP3906-TLP.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/GP3906-TLP.kicad_mod
new file mode 100644
index 0000000000..d92265839c
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/GP3906-TLP.kicad_mod
@@ -0,0 +1,597 @@
+(footprint "GP3906-TLP" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "")
+ (fp_text reference ">NAME" (at -7.62 -8.382) (layer "F.SilkS")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify left bottom))
+ (tstamp 65e96d96-25bc-4fb8-938a-bf16734ac8a0)
+ )
+ (fp_text value ">VALUE" (at -7.62 8.382) (layer "F.Fab")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify left top))
+ (tstamp 0d49907b-5d77-43cd-a3af-f21f6423c7a9)
+ )
+ (fp_poly
+ (pts
+ (xy -9.15 -6.1)
+ (xy -6.85 -6.1)
+ (xy -6.85 -7.4)
+ (xy -9.15 -7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 0729bb22-6bdf-4124-bc0b-4bfa03aadbf9))
+ (fp_poly
+ (pts
+ (xy -9.15 -4.6)
+ (xy -6.85 -4.6)
+ (xy -6.85 -5.9)
+ (xy -9.15 -5.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 313605f2-4282-4cd6-815d-33b79681dc4c))
+ (fp_poly
+ (pts
+ (xy -9.15 -3.1)
+ (xy -6.85 -3.1)
+ (xy -6.85 -4.4)
+ (xy -9.15 -4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 08a6a99a-8636-45df-8799-76b5a6c9c368))
+ (fp_poly
+ (pts
+ (xy -9.15 -1.6)
+ (xy -6.85 -1.6)
+ (xy -6.85 -2.9)
+ (xy -9.15 -2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c409899d-d803-4124-88ed-23df5d35ca38))
+ (fp_poly
+ (pts
+ (xy -9.15 -0.1)
+ (xy -6.85 -0.1)
+ (xy -6.85 -1.4)
+ (xy -9.15 -1.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7db36c73-08b6-4f8d-afe5-4a798bf9ff84))
+ (fp_poly
+ (pts
+ (xy -9.15 1.4)
+ (xy -6.85 1.4)
+ (xy -6.85 0.1)
+ (xy -9.15 0.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a1b25495-aae0-4a38-96f5-c41eee21cdcb))
+ (fp_poly
+ (pts
+ (xy -9.15 2.9)
+ (xy -6.85 2.9)
+ (xy -6.85 1.6)
+ (xy -9.15 1.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 04b0f06e-9b4d-4697-a137-d693d8ab0b57))
+ (fp_poly
+ (pts
+ (xy -9.15 4.4)
+ (xy -6.85 4.4)
+ (xy -6.85 3.1)
+ (xy -9.15 3.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp af0b0811-bada-4f74-a75c-a1d8bd7efd74))
+ (fp_poly
+ (pts
+ (xy -9.15 5.9)
+ (xy -6.85 5.9)
+ (xy -6.85 4.6)
+ (xy -9.15 4.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b25c00ed-be02-4966-9246-77766dfb4923))
+ (fp_poly
+ (pts
+ (xy -9.15 7.4)
+ (xy -6.85 7.4)
+ (xy -6.85 6.1)
+ (xy -9.15 6.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp ad0e5061-0a2c-46b7-8b82-3d26b70250f4))
+ (fp_poly
+ (pts
+ (xy 9.15 -7.4)
+ (xy 6.85 -7.4)
+ (xy 6.85 -6.1)
+ (xy 9.15 -6.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 6a32ba96-d9eb-4997-be55-afaaf5a5b15b))
+ (fp_poly
+ (pts
+ (xy 9.15 -5.9)
+ (xy 6.85 -5.9)
+ (xy 6.85 -4.6)
+ (xy 9.15 -4.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 57b13529-d05f-41df-a4aa-30cf0a3fe39e))
+ (fp_poly
+ (pts
+ (xy 9.15 -4.4)
+ (xy 6.85 -4.4)
+ (xy 6.85 -3.1)
+ (xy 9.15 -3.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp adaed14c-3485-452b-93ea-d9f72fbdd3dd))
+ (fp_poly
+ (pts
+ (xy 9.15 -2.9)
+ (xy 6.85 -2.9)
+ (xy 6.85 -1.6)
+ (xy 9.15 -1.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp e59da9b9-c069-4c41-9416-5870cf2ee7bd))
+ (fp_poly
+ (pts
+ (xy 9.15 -1.4)
+ (xy 6.85 -1.4)
+ (xy 6.85 -0.1)
+ (xy 9.15 -0.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f1b0171c-799b-4b19-8987-dc348f066170))
+ (fp_poly
+ (pts
+ (xy 9.15 0.1)
+ (xy 6.85 0.1)
+ (xy 6.85 1.4)
+ (xy 9.15 1.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 83996a33-1ece-4bf4-adc7-e3ecf0afa52d))
+ (fp_poly
+ (pts
+ (xy 9.15 1.6)
+ (xy 6.85 1.6)
+ (xy 6.85 2.9)
+ (xy 9.15 2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a2167f1a-ac76-4ad1-a8a4-5ffd784f22ca))
+ (fp_poly
+ (pts
+ (xy 9.15 3.1)
+ (xy 6.85 3.1)
+ (xy 6.85 4.4)
+ (xy 9.15 4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c4198515-708a-4d44-bb0a-65c0aef969f7))
+ (fp_poly
+ (pts
+ (xy 9.15 4.6)
+ (xy 6.85 4.6)
+ (xy 6.85 5.9)
+ (xy 9.15 5.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp caee4c63-c7fe-4b8f-962b-3b31e3e8bd5d))
+ (fp_poly
+ (pts
+ (xy 9.15 6.1)
+ (xy 6.85 6.1)
+ (xy 6.85 7.4)
+ (xy 9.15 7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f8f324ec-9e08-40c4-a37d-0d2a0999e4ed))
+ (fp_line (start -8 -8) (end -8 -7.45)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 134a5d17-ccd7-4307-942b-3b166a58add3))
+ (fp_line (start -8 -8) (end 8 -8)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp e5e97c30-7034-479e-b140-0b7e517218d4))
+ (fp_line (start -8 8) (end -8 7.45)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 49e3b25b-595e-46cb-beca-408b69d7be61))
+ (fp_line (start 8 -8) (end 8 -7.45)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp f49ea8ed-a55a-47c6-832a-22ee4daad967))
+ (fp_line (start 8 -7.45) (end 8 7.45)
+ (stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 899dfcad-a4f3-478f-a847-67618b688fb7))
+ (fp_line (start 8 8) (end -8 8)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp c10bc1a9-0a76-4121-8bb4-1a5d1bf6c71c))
+ (fp_line (start 8 8) (end 8 7.45)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp e7d2cc48-43eb-4468-96be-2c039b99722d))
+ (fp_circle (center 5.08 3.809) (end 5.33 3.809)
+ (stroke (width 0.5) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 3ebc1d19-e11e-4e98-962c-6d874f629abb))
+ (fp_circle (center 8.509 8.508) (end 8.759 8.508)
+ (stroke (width 0.5) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 74ce26e9-2e11-49c4-9ee4-b39a2d869d30))
+ (fp_line (start -8 -8) (end 8 -8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp b74e229b-8efc-40f2-bbb6-431d5f0c0e1b))
+ (fp_line (start -8 8) (end -8 -8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 01c93554-2325-4245-953c-b7264898d928))
+ (fp_line (start 8 -8) (end 8 8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 2df43b05-8c9d-42a6-8b9f-4a47dacb4dc9))
+ (fp_line (start 8 8) (end -8 8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp d2b16cb8-0c2e-4772-be8f-a0c2c6f948df))
+ (fp_circle (center -4 -7.5) (end -3.8 -7.5)
+ (stroke (width 0.127) (type solid)) (fill none) (layer "F.Fab") (tstamp d6930c4d-afe4-421f-bfa8-de1d99a9fbbc))
+ (fp_circle (center -0.7 0) (end 0.5 0)
+ (stroke (width 0.127) (type solid)) (fill none) (layer "F.Fab") (tstamp be1f04d2-19ac-4e3a-8315-e2ad02adf753))
+ (fp_circle (center 0 7.5) (end 0.2 7.5)
+ (stroke (width 0.127) (type solid)) (fill none) (layer "F.Fab") (tstamp 731c3307-0b17-48ac-8d01-5e35e8d89871))
+ (fp_circle (center 4 -7.5) (end 4.2 -7.5)
+ (stroke (width 0.127) (type solid)) (fill none) (layer "F.Fab") (tstamp 94dab36d-62f5-46b3-a709-f882851bdede))
+ (fp_poly
+ (pts
+ (xy -6.9365 -6.2865)
+ (xy -8.0635 -6.2865)
+ (xy -8.0635 -6.448157)
+ (xy -7.906822 -6.492045)
+ (xy -7.831885 -6.550907)
+ (xy -7.764723 -6.756373)
+ (xy -7.776713 -6.856162)
+ (xy -7.823419 -6.939216)
+ (xy -8.0635 -7.06101)
+ (xy -8.0635 -7.2135)
+ (xy -6.9365 -7.2135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 34a256cd-dcd0-4536-8775-cbb1b2ae2620))
+ (fp_poly
+ (pts
+ (xy -6.9365 -4.7865)
+ (xy -8.0635 -4.7865)
+ (xy -8.0635 -4.948157)
+ (xy -7.906822 -4.992045)
+ (xy -7.831885 -5.050907)
+ (xy -7.764723 -5.256373)
+ (xy -7.776713 -5.356162)
+ (xy -7.823419 -5.439216)
+ (xy -8.0635 -5.56101)
+ (xy -8.0635 -5.7135)
+ (xy -6.9365 -5.7135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp ba7debfe-c56c-4673-b71a-71a485e72b9f))
+ (fp_poly
+ (pts
+ (xy -6.9365 -3.2865)
+ (xy -8.0635 -3.2865)
+ (xy -8.0635 -3.448157)
+ (xy -7.906822 -3.492045)
+ (xy -7.831885 -3.550907)
+ (xy -7.764723 -3.756373)
+ (xy -7.776713 -3.856162)
+ (xy -7.823419 -3.939216)
+ (xy -8.0635 -4.06101)
+ (xy -8.0635 -4.2135)
+ (xy -6.9365 -4.2135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 49689d72-baa8-4682-9adf-73c9f78f7e77))
+ (fp_poly
+ (pts
+ (xy -6.9365 -1.7865)
+ (xy -8.0635 -1.7865)
+ (xy -8.0635 -1.948157)
+ (xy -7.906822 -1.992045)
+ (xy -7.831885 -2.050907)
+ (xy -7.764723 -2.256373)
+ (xy -7.776713 -2.356162)
+ (xy -7.823419 -2.439216)
+ (xy -8.0635 -2.56101)
+ (xy -8.0635 -2.7135)
+ (xy -6.9365 -2.7135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp dade657d-9132-418a-82f5-e175dc4c950b))
+ (fp_poly
+ (pts
+ (xy -6.9365 -0.2865)
+ (xy -8.0635 -0.2865)
+ (xy -8.0635 -0.448157)
+ (xy -7.906822 -0.492045)
+ (xy -7.831885 -0.550907)
+ (xy -7.764723 -0.756373)
+ (xy -7.776713 -0.856162)
+ (xy -7.823419 -0.939216)
+ (xy -8.0635 -1.06101)
+ (xy -8.0635 -1.2135)
+ (xy -6.9365 -1.2135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 9b587a28-c5f7-41a2-a893-bac863e101b9))
+ (fp_poly
+ (pts
+ (xy -6.9365 1.2135)
+ (xy -8.0635 1.2135)
+ (xy -8.0635 1.051843)
+ (xy -7.906822 1.007955)
+ (xy -7.831885 0.949093)
+ (xy -7.764723 0.743627)
+ (xy -7.776713 0.643838)
+ (xy -7.823419 0.560784)
+ (xy -8.0635 0.43899)
+ (xy -8.0635 0.2865)
+ (xy -6.9365 0.2865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 66d6d0ac-9dfb-4813-b6b0-13e7351213c9))
+ (fp_poly
+ (pts
+ (xy -6.9365 2.7135)
+ (xy -8.0635 2.7135)
+ (xy -8.0635 2.551843)
+ (xy -7.906822 2.507955)
+ (xy -7.831885 2.449093)
+ (xy -7.764723 2.243627)
+ (xy -7.776713 2.143838)
+ (xy -7.823419 2.060784)
+ (xy -8.0635 1.93899)
+ (xy -8.0635 1.7865)
+ (xy -6.9365 1.7865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3afc2997-00e9-46c9-ac1d-05ba9e90eab3))
+ (fp_poly
+ (pts
+ (xy -6.9365 4.2135)
+ (xy -8.0635 4.2135)
+ (xy -8.0635 4.051843)
+ (xy -7.906822 4.007955)
+ (xy -7.831885 3.949093)
+ (xy -7.764723 3.743627)
+ (xy -7.776713 3.643838)
+ (xy -7.823419 3.560784)
+ (xy -8.0635 3.43899)
+ (xy -8.0635 3.2865)
+ (xy -6.9365 3.2865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 6c7e9386-4afc-4f46-8e28-da5245557172))
+ (fp_poly
+ (pts
+ (xy -6.9365 5.7135)
+ (xy -8.0635 5.7135)
+ (xy -8.0635 5.551843)
+ (xy -7.906822 5.507955)
+ (xy -7.831885 5.449093)
+ (xy -7.764723 5.243627)
+ (xy -7.776713 5.143838)
+ (xy -7.823419 5.060784)
+ (xy -8.0635 4.93899)
+ (xy -8.0635 4.7865)
+ (xy -6.9365 4.7865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 53dfea20-d016-4293-aaaf-792c7c55a604))
+ (fp_poly
+ (pts
+ (xy -6.9365 7.2135)
+ (xy -8.0635 7.2135)
+ (xy -8.0635 7.051843)
+ (xy -7.906822 7.007955)
+ (xy -7.831885 6.949093)
+ (xy -7.764723 6.743627)
+ (xy -7.776713 6.643838)
+ (xy -7.823419 6.560784)
+ (xy -8.0635 6.43899)
+ (xy -8.0635 6.2865)
+ (xy -6.9365 6.2865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 224ea85e-9603-4ce8-b91e-f3f938c7a022))
+ (fp_poly
+ (pts
+ (xy 8.0635 -7.051843)
+ (xy 7.906822 -7.007955)
+ (xy 7.826669 -6.944997)
+ (xy 7.776713 -6.856162)
+ (xy 7.763957 -6.75)
+ (xy 7.776713 -6.643838)
+ (xy 7.823419 -6.560784)
+ (xy 8.0635 -6.43899)
+ (xy 8.0635 -6.2865)
+ (xy 6.9365 -6.2865)
+ (xy 6.9365 -7.2135)
+ (xy 8.0635 -7.2135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp eabfadb5-9214-4062-86bb-309ce60fb754))
+ (fp_poly
+ (pts
+ (xy 8.0635 -5.551843)
+ (xy 7.906822 -5.507955)
+ (xy 7.826669 -5.444997)
+ (xy 7.776713 -5.356162)
+ (xy 7.763957 -5.25)
+ (xy 7.776713 -5.143838)
+ (xy 7.823419 -5.060784)
+ (xy 8.0635 -4.93899)
+ (xy 8.0635 -4.7865)
+ (xy 6.9365 -4.7865)
+ (xy 6.9365 -5.7135)
+ (xy 8.0635 -5.7135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp cb752c1d-79c6-4f36-9450-7302db4e8f5b))
+ (fp_poly
+ (pts
+ (xy 8.0635 -4.051843)
+ (xy 7.906822 -4.007955)
+ (xy 7.826669 -3.944997)
+ (xy 7.776713 -3.856162)
+ (xy 7.763957 -3.75)
+ (xy 7.776713 -3.643838)
+ (xy 7.823419 -3.560784)
+ (xy 8.0635 -3.43899)
+ (xy 8.0635 -3.2865)
+ (xy 6.9365 -3.2865)
+ (xy 6.9365 -4.2135)
+ (xy 8.0635 -4.2135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp e098f8bd-1f27-4372-882a-d0fba5e63465))
+ (fp_poly
+ (pts
+ (xy 8.0635 -2.551843)
+ (xy 7.906822 -2.507955)
+ (xy 7.826669 -2.444997)
+ (xy 7.776713 -2.356162)
+ (xy 7.763957 -2.25)
+ (xy 7.776713 -2.143838)
+ (xy 7.823419 -2.060784)
+ (xy 8.0635 -1.93899)
+ (xy 8.0635 -1.7865)
+ (xy 6.9365 -1.7865)
+ (xy 6.9365 -2.7135)
+ (xy 8.0635 -2.7135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp b015f4c1-7dea-47ef-9cd7-ea4e4ab93d10))
+ (fp_poly
+ (pts
+ (xy 8.0635 -1.051843)
+ (xy 7.906822 -1.007955)
+ (xy 7.826669 -0.944997)
+ (xy 7.776713 -0.856162)
+ (xy 7.763957 -0.75)
+ (xy 7.776713 -0.643838)
+ (xy 7.823419 -0.560784)
+ (xy 8.0635 -0.43899)
+ (xy 8.0635 -0.2865)
+ (xy 6.9365 -0.2865)
+ (xy 6.9365 -1.2135)
+ (xy 8.0635 -1.2135)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 6c6e9d4e-136e-448b-b3d9-e071c07a0553))
+ (fp_poly
+ (pts
+ (xy 8.0635 0.448157)
+ (xy 7.906822 0.492045)
+ (xy 7.826669 0.555003)
+ (xy 7.776713 0.643838)
+ (xy 7.763957 0.75)
+ (xy 7.776713 0.856162)
+ (xy 7.823419 0.939216)
+ (xy 8.0635 1.06101)
+ (xy 8.0635 1.2135)
+ (xy 6.9365 1.2135)
+ (xy 6.9365 0.2865)
+ (xy 8.0635 0.2865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp ab03aa7a-affa-48e6-a93e-4a2fb5b22a8e))
+ (fp_poly
+ (pts
+ (xy 8.0635 1.948157)
+ (xy 7.906822 1.992045)
+ (xy 7.826669 2.055003)
+ (xy 7.776713 2.143838)
+ (xy 7.763957 2.25)
+ (xy 7.776713 2.356162)
+ (xy 7.823419 2.439216)
+ (xy 8.0635 2.56101)
+ (xy 8.0635 2.7135)
+ (xy 6.9365 2.7135)
+ (xy 6.9365 1.7865)
+ (xy 8.0635 1.7865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 73da77d9-7479-499d-9605-d3e7d36f0649))
+ (fp_poly
+ (pts
+ (xy 8.0635 3.448157)
+ (xy 7.906822 3.492045)
+ (xy 7.826669 3.555003)
+ (xy 7.776713 3.643838)
+ (xy 7.763957 3.75)
+ (xy 7.776713 3.856162)
+ (xy 7.823419 3.939216)
+ (xy 8.0635 4.06101)
+ (xy 8.0635 4.2135)
+ (xy 6.9365 4.2135)
+ (xy 6.9365 3.2865)
+ (xy 8.0635 3.2865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 6f5c789d-7669-49ed-842a-c1d0f7f0c902))
+ (fp_poly
+ (pts
+ (xy 8.0635 4.948157)
+ (xy 7.906822 4.992045)
+ (xy 7.826669 5.055003)
+ (xy 7.776713 5.143838)
+ (xy 7.763957 5.25)
+ (xy 7.776713 5.356162)
+ (xy 7.823419 5.439216)
+ (xy 8.0635 5.56101)
+ (xy 8.0635 5.7135)
+ (xy 6.9365 5.7135)
+ (xy 6.9365 4.7865)
+ (xy 8.0635 4.7865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp e664e751-a40f-4ed1-8fb4-c89cdad8642f))
+ (fp_poly
+ (pts
+ (xy 8.0635 6.448157)
+ (xy 7.906822 6.492045)
+ (xy 7.826669 6.555003)
+ (xy 7.776713 6.643838)
+ (xy 7.763957 6.75)
+ (xy 7.776713 6.856162)
+ (xy 7.823419 6.939216)
+ (xy 8.0635 7.06101)
+ (xy 8.0635 7.2135)
+ (xy 6.9365 7.2135)
+ (xy 6.9365 6.2865)
+ (xy 8.0635 6.2865)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 8c966634-9a87-407a-987d-6dc82440dac4))
+ (pad "" np_thru_hole circle (at -0.7 0) (size 4 4) (drill 4) (layers *.Cu *.Mask) (tstamp 69553fe7-f101-4b06-b4e9-6fbe485f3f65))
+ (pad "1" smd rect (at 8 6.75 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3386a52c-151e-46e2-a046-81598fa3786c))
+ (pad "2" smd rect (at 8 5.25 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5c6136f5-2d1a-44e4-9853-7f2d2fe1cf71))
+ (pad "3" smd rect (at 8 3.75 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cb865c44-2085-4e2c-b3e7-1e4c0359f621))
+ (pad "4" smd rect (at 8 2.25 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3fdde318-b539-4db6-87e0-f9bf644af6d1))
+ (pad "5" smd rect (at 8 0.75 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fc45c226-2bcc-4536-ae98-7850b8d08bfe))
+ (pad "6" smd rect (at 8 -0.75 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d2c0e4c9-6772-42c1-ae2d-9242490f18cf))
+ (pad "7" smd rect (at 8 -2.25 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4da74b77-7a2d-44fe-a8c1-de788aaaf39e))
+ (pad "8" smd rect (at 8 -3.75 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4e995ee6-f8ae-4350-b9d7-212c68955dbe))
+ (pad "9" smd rect (at 8 -5.25 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2a94f3f7-bcc9-4ae4-9492-ccb7e8279231))
+ (pad "10" smd rect (at 8 -6.75 180) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp bd5e5af3-98b3-466d-b7ba-8918ce6f9cfe))
+ (pad "11" smd rect (at -8 -6.75) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 89dfd043-f2f6-4c67-92b4-200a3375abfb))
+ (pad "12" smd rect (at -8 -5.25) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 499929d9-1cef-466b-91df-4419de178ff3))
+ (pad "13" smd rect (at -8 -3.75) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2a6dfc5c-88d4-49e5-8a1f-4dbd95b59139))
+ (pad "14" smd rect (at -8 -2.25) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a8e4bef4-5fa1-475d-9e61-68930f75dc3a))
+ (pad "15" smd rect (at -8 -0.75) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 950a083a-e600-46fa-85d3-722a8fa27516))
+ (pad "16" smd rect (at -8 0.75) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5fe3f842-a4d6-43d7-8976-365a9a45b22f))
+ (pad "17" smd rect (at -8 2.25) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e6ca7ec4-08be-4c3b-8fc4-04f2cc174cec))
+ (pad "18" smd rect (at -8 3.75) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2ea0efa5-74cd-409e-8f84-90cdf00a99d2))
+ (pad "19" smd rect (at -8 5.25) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e8d5d543-47ce-4161-812a-667d0d6c079f))
+ (pad "20" smd rect (at -8 6.75) (size 2 1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d28ecd6b-caa4-43e5-bfe3-f8688a0ec855))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/JST-6PIN-1MM.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/JST-6PIN-1MM.kicad_mod
new file mode 100644
index 0000000000..081dcd0f69
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/JST-6PIN-1MM.kicad_mod
@@ -0,0 +1,48 @@
+(footprint "JST-6PIN-1MM" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "6-Pin Vertical JST Connector
\n
\nCommon interface for SparkFun GPS modules.
\nDatasheet
")
+ (fp_text reference ">NAME" (at -4.659 -0.18 90) (layer "F.SilkS")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify bottom))
+ (tstamp 59a36a12-e2d8-4905-b005-1e4577d488a2)
+ )
+ (fp_text value ">VALUE" (at 4.739 -0.18 90) (layer "F.Fab")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify top))
+ (tstamp a3af595a-c56d-4c72-a32b-919c99a06675)
+ )
+ (fp_line (start -4.104 -1.577) (end -4.104 -0.688)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 133bd0c5-f33f-46f5-ac4b-530cbad58015))
+ (fp_line (start -3.342 -1.577) (end -4.104 -1.577)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 8f5a41b1-6a61-4947-9192-3a08d2c3902f))
+ (fp_line (start -2.5 1.598) (end 2.58 1.598)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 748738a9-1235-4dff-a5a0-9beae1260028))
+ (fp_line (start 3.342 -1.577) (end 4.104 -1.577)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 6f7ef55b-fe6b-4321-8cc5-9519950c4a36))
+ (fp_line (start 4.104 -1.577) (end 4.104 -0.688)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp daf2df87-836f-4810-8d0f-36080c6e1beb))
+ (fp_circle (center -3.262 -2.212) (end -3.1573 -2.212)
+ (stroke (width 0.4064) (type solid)) (fill none) (layer "F.SilkS") (tstamp 7b5323ed-4a2e-4e04-ab5d-a5443a55f066))
+ (fp_line (start -4 -1.471) (end -4 1.471)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 3403ef44-d50a-4b5e-860e-8181b32730d5))
+ (fp_line (start -4 1.471) (end 4 1.471)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp b4efed0c-3f58-4def-b199-8ffa63280050))
+ (fp_line (start 4 -1.471) (end -4 -1.471)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 9df73973-cd1e-47c7-b0ef-abde8b5e2c56))
+ (fp_line (start 4 1.471) (end 4 -1.471)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp f7c2d562-e661-446a-9040-49999a5513b8))
+ (pad "1" smd rect (at -2.5 -1.45) (size 0.6 1.55) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f5e17cb8-cf5d-44d7-9f81-06fe4812aecb))
+ (pad "2" smd rect (at -1.5 -1.45) (size 0.6 1.55) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7de47e12-ef43-425e-8b16-a017dc3618ec))
+ (pad "3" smd rect (at -0.5 -1.45) (size 0.6 1.55) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 566d2844-9d32-4c74-b329-e39c382cf46d))
+ (pad "4" smd rect (at 0.5 -1.45) (size 0.6 1.55) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 566239c4-f2f1-4010-9979-15f35bc8d5fe))
+ (pad "5" smd rect (at 1.5 -1.45) (size 0.6 1.55) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp acc98d75-2ab3-4f42-9efa-1f1613289c73))
+ (pad "6" smd rect (at 2.5 -1.45) (size 0.6 1.55) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c2d6e699-9aaf-4428-93de-6023e3b32227))
+ (pad "P$1" smd rect (at -3.8 0.775) (size 1.2 1.8) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a4e6ed86-9233-41d7-8fae-51575ce07db5))
+ (pad "P$2" smd rect (at 3.8 0.775) (size 1.2 1.8) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f5394dbe-a8a6-4a3d-be52-c4ec1e90024b))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MLOEX_GNSS_MOLDED.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MLOEX_GNSS_MOLDED.kicad_mod
new file mode 100644
index 0000000000..09ad2decd0
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MLOEX_GNSS_MOLDED.kicad_mod
@@ -0,0 +1,119 @@
+(footprint "MLOEX_GNSS_MOLDED" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at 0 -0.381) (layer "F.SilkS")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp bb8dd847-3200-400d-a0f0-e739c6f02d1c)
+ )
+ (fp_text value ">VALUE" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp 09737abe-d1bb-440e-953b-7612025ab13d)
+ )
+ (fp_text user ">TNAME" (at -1.27 1.27) (layer "F.SilkS")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp 057cb804-7c98-4ec3-a7d5-e64114b95abe)
+ )
+ (fp_text user ">TVALUE" (at -1.27 1.651) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp eec82342-98a4-48d0-9a4e-c46398ef4b2d)
+ )
+ (fp_line (start -1.5 -0.9) (end -1.5 0.9)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp c8d63fba-199c-40ca-a486-1036f9d7f21c))
+ (fp_line (start 1.1 -0.5) (end 1.1 0.4)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 14287613-27ec-4927-8827-f806ca673308))
+ (fp_line (start 1.1 0.4) (end 1.5 0.4)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 9b67f181-6177-4c1b-badd-5178ef4c69da))
+ (fp_line (start 1.5 -0.9) (end 1.5 -0.5)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp f65ab486-dfe4-41de-8e9d-6dfc7e996bf9))
+ (fp_line (start 1.5 -0.5) (end 1.1 -0.5)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 7e6afc9e-3832-490c-9b39-bffa0289e70d))
+ (fp_line (start 1.5 -0.5) (end 1.5 0.4)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp cfdc34a9-d6d4-4edd-a37d-7a4bd6e967e4))
+ (fp_line (start 1.5 0.4) (end 1.5 0.9)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 593e6228-fce8-4256-9bc6-761d8cc2fe30))
+ (fp_line (start 1.6 -0.5) (end 1.9 -0.5)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 2accdd92-8dd1-44df-a6fa-f11ab414140e))
+ (fp_line (start 1.9 -0.5) (end 1.9 0.4)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 0c452dc2-9004-485c-ba62-429953181e39))
+ (fp_line (start 1.9 0.4) (end 1.5 0.4)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 091e2a6d-80f3-49b2-8894-f0fdf1db2a9d))
+ (fp_line (start -2.6 -3.7) (end 2.6 -3.7)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 9ace38ae-9521-4ed5-8d0b-df41f54f01e7))
+ (fp_line (start -2.6 3.7) (end -2.6 -3.7)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 87a7adc3-9b3f-4b85-9807-d97a872d762c))
+ (fp_line (start -1.5 -2.5) (end 1.5 -2.5)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp c371aa30-48c3-4a56-80e3-3b5447ce4fe4))
+ (fp_line (start -1.5 2.5) (end -1.5 -2.5)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp b888ab8c-8012-4bd6-8337-02256b1aa271))
+ (fp_line (start 1.5 -2.5) (end 1.5 2.5)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 14fe04d1-ccdb-42fe-bccc-e3f1d976bba9))
+ (fp_line (start 1.5 2.5) (end -1.5 2.5)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 83dba966-868b-4a45-92de-f9c9afcaa73d))
+ (fp_line (start 2.6 -3.7) (end 2.6 3.7)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 530eddbc-bdca-4344-b664-ef36774ab6da))
+ (fp_line (start 2.6 3.7) (end -2.6 3.7)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 96268946-77b4-4d25-ad25-3031f6be7e61))
+ (pad "1" smd rect (at -0.97 1.95) (size 1.54 1.54) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 89b84ce2-c13f-423e-9174-e43d49b60108))
+ (pad "2" smd rect (at -0.97 -1.95) (size 1.54 1.54) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3cfecd34-2e19-4d74-955e-5555c1c3989c))
+ (pad "3" smd rect (at 0.97 -1.95) (size 1.54 1.54) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c230476f-0a2f-46e6-b3f4-fb9db7e9c35c))
+ (pad "FEED" smd rect (at 0.97 1.95) (size 1.54 1.54) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp df678a79-0577-4e5d-811e-7537bf99a5ba))
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 850ff00e-5d53-44b8-b71e-a335072cdc1e) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2.64 1.2)
+ (xy 2.64 1.2)
+ (xy 2.64 -3.735)
+ (xy -2.64 -3.735)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp fb3d45e6-87e0-4700-bf36-d1ee69c21568) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2.64 3.735)
+ (xy 0.2 3.735)
+ (xy 0.2 1.2)
+ (xy -2.64 1.2)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp d0aacc61-9eff-49b0-945d-df1deb541851) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 0.2 3.735)
+ (xy 2.64 3.735)
+ (xy 2.64 2.7)
+ (xy 0.2 2.7)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "B.Cu") (tstamp 51235af9-3047-4057-a7d5-a98e6a367462) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2.64 3.735)
+ (xy 2.64 3.735)
+ (xy 2.64 -3.735)
+ (xy -2.64 -3.735)
+ )
+ )
+ )
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CHIP.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CHIP.kicad_mod
new file mode 100644
index 0000000000..03ed73aef7
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CHIP.kicad_mod
@@ -0,0 +1,103 @@
+(footprint "MOLEX_GNSS_CHIP" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at 0 -1.651) (layer "F.SilkS")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp 7f686d09-4451-4065-abd5-e1117a903ae4)
+ )
+ (fp_text value ">VALUE" (at 0 -1.27) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp 63d1d323-bdfa-4015-96e3-0fff5a0bc9fa)
+ )
+ (fp_text user "REVERSIBLE\nANTENNA" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp c5f24d00-7977-41d3-9db9-1238666268f5)
+ )
+ (fp_line (start -1.6 -0.1) (end -1.6 0.1)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 2660c0ab-c998-43c1-803a-7b50bb246b87))
+ (fp_line (start -0.6 -0.8) (end 0.6 -0.8)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 8af21407-7882-4796-9542-e6a33f17eedd))
+ (fp_line (start -0.6 0.8) (end 0.6 0.8)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 85e4617d-893a-4b87-82ec-d90565be3a39))
+ (fp_line (start 1.6 -0.1) (end 1.6 0.1)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 9b642ddf-e2bd-4dc5-950e-cae092e666f1))
+ (fp_line (start -2 -6) (end 2 -6)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp c2a9a7ff-8230-40ab-a081-9aecacbe9ec4))
+ (fp_line (start -2 1) (end -2 -6)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 6ae4171e-a071-45c2-ae4b-2a9a16ce9b8f))
+ (fp_line (start -1.6 -0.8) (end 1.6 -0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 789c3670-0fc9-4f0f-86b2-72f95409abc7))
+ (fp_line (start -1.6 0.8) (end -1.6 -0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 300fdc72-f640-4cb1-a870-a3297b29a86e))
+ (fp_line (start 1.6 -0.8) (end 1.6 0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp c13f6c05-459d-4e7d-90f1-bf9e0555dccd))
+ (fp_line (start 1.6 0.8) (end -1.6 0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 4416f803-7389-4bf5-b8fc-0b1e81287f7c))
+ (fp_line (start 2 -6) (end 2 1)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 554c8005-e15a-4332-988e-e3668a1099f9))
+ (fp_line (start 2 1) (end -2 1)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 7b6107b8-1bff-44d7-9f7f-312a7e9f86b2))
+ (pad "1" smd rect (at 1.45 0.55) (size 1.1 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 07eb66e9-2d73-4ee5-ac4e-5230f17783fe))
+ (pad "2" smd rect (at -1.45 0.55) (size 1.1 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 032d3c36-b5d6-4b34-892f-094f9338196f))
+ (pad "3" smd rect (at -1.45 -0.55) (size 1.1 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 49b7690c-5e71-401a-b6a7-04515de9809f))
+ (pad "FEED" smd rect (at 1.45 -0.55) (size 1.1 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b56650d1-6576-46c5-a27d-4e7032bbcead))
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp b4bb157a-ceeb-494e-bb4f-000cf30ac189) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2 -1)
+ (xy 2 -1)
+ (xy 2 -6)
+ (xy -2 -6)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp c732e63e-8296-4e80-8de7-1149f852ceb2) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2 0.2)
+ (xy 2 0.2)
+ (xy 2 -0.2)
+ (xy -2 -0.2)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp f5fbf814-0674-4d34-946a-a84278bae389) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -0.8 1)
+ (xy 0.8 1)
+ (xy 0.8 -1)
+ (xy -0.8 -1)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "B.Cu") (tstamp 88b86e1e-9322-4465-8a29-475e2b78a5c1) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2 1)
+ (xy 2 1)
+ (xy 2 -6)
+ (xy -2 -6)
+ )
+ )
+ )
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CUBE.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CUBE.kicad_mod
new file mode 100644
index 0000000000..6ad40a1c56
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/MOLEX_GNSS_CUBE.kicad_mod
@@ -0,0 +1,198 @@
+(footprint "MOLEX_GNSS_CUBE" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at 0 -2.54) (layer "F.SilkS")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)))
+ (tstamp 956e2264-ba1c-425e-aeac-f9910dee9176)
+ )
+ (fp_text value ">VALUE" (at 0 -0.889) (layer "F.Fab")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)))
+ (tstamp 93bd0dd9-b5e0-459a-8b58-43df88932fd5)
+ )
+ (fp_line (start -5.842 5.842) (end -5.842 -5.842)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 85743e4d-2f74-44a4-8d9b-1dff97d381d6))
+ (fp_line (start -1.905 -5.842) (end 1.905 -5.842)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 33cc0c1c-469c-4daf-b465-fe4b47bb6157))
+ (fp_line (start 2.54 5.842) (end -1.905 5.842)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp bbd135d9-831a-4d12-80ab-7531aedd382b))
+ (fp_line (start 5.842 -5.842) (end 5.842 2.413)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 990fdc37-7732-43a1-b627-bc838fa0f0df))
+ (fp_line (start 5.842 4.445) (end 5.842 5.842)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 202405e9-19e4-472d-a69a-7c19a3954571))
+ (fp_line (start 5.842 5.842) (end 4.572 5.842)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp f31a6a44-f538-47e7-b540-f1107d47737d))
+ (fp_poly
+ (pts
+ (xy -4.75 -3.14)
+ (xy 3.14 -3.14)
+ (xy 3.14 -4.05)
+ (xy -4.75 -4.05)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.SilkS") (tstamp acf7ef2c-33fc-4ea2-8521-a23a55e21fce))
+ (fp_poly
+ (pts
+ (xy -4.75 -2.3)
+ (xy -3.75 -2.3)
+ (xy -3.75 -3.14)
+ (xy -4.75 -3.14)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.SilkS") (tstamp 66f7f78c-ce1b-44e2-8362-42ee5370a489))
+ (fp_poly
+ (pts
+ (xy -3.61 3.61)
+ (xy 1.64 3.61)
+ (xy 1.64 -1.64)
+ (xy -3.61 -1.64)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.SilkS") (tstamp 92f5c184-72bc-4de5-ba61-39f1f072e9b2))
+ (fp_poly
+ (pts
+ (xy 3.14 4)
+ (xy 4.14 4)
+ (xy 4.14 -4.05)
+ (xy 3.14 -4.05)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.SilkS") (tstamp 045e17f4-c914-490e-a1e7-0e288b083f2e))
+ (fp_line (start -5.86 -5.86) (end 5.86 -5.86)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp e97d5281-1120-428f-8027-f17471aab3ca))
+ (fp_line (start -5.86 5.86) (end -5.86 -5.86)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp af959b2c-0e77-473a-8d71-b4b87fcdfeb3))
+ (fp_line (start 5.86 -5.86) (end 5.86 5.86)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp f618ed08-90ec-4175-bf71-124acbb491b5))
+ (fp_line (start 5.86 5.86) (end -5.86 5.86)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp b1744190-f4cd-46f8-80fe-caf4ee08c64d))
+ (fp_poly
+ (pts
+ (xy 3.295 7.5)
+ (xy 3.795 7.5)
+ (xy 3.795 5)
+ (xy 3.295 5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 46581cc5-f5ca-4efc-af99-b01716f115a5))
+ (pad "FEED" smd rect (at 5.33 3.4 270) (size 1.3 1.61) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8f3e9b92-6020-4dad-ab7f-f291599e6fda))
+ (pad "GND" smd rect (at 3.545 5.2 180) (size 1.3 1.32) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cb0e3751-7690-4552-ab68-38c2ad410ac6))
+ (pad "NC1" smd rect (at -3.905 5.06 90) (size 1.6 3.2) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp eed3a374-83b7-4490-8b98-01ec11669e0b))
+ (pad "NC2" smd rect (at -3.905 -5.06 90) (size 1.6 3.2) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5a9d22d3-2476-4cef-a3ec-b649c8ba9a05))
+ (pad "NC3" smd rect (at 3.905 -5.06 90) (size 1.6 3.2) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1598b68e-1cd6-42b8-85b9-19e005c06267))
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 532c31d0-9ff5-4f64-a276-ffdffb90978c) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 2.845 6.95)
+ (xy 3.2875 6.95)
+ (xy 3.2875 5.625)
+ (xy 2.845 5.625)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 22b304ca-71ca-4dc3-9586-c0b0653e7fc3) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 2.875 4.5)
+ (xy 2.5 4.5)
+ (xy 2.5 6.95)
+ (xy 2.875 6.95)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 3f326d97-5543-4c5a-8d15-956d654cc60e) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 3.795 6.95)
+ (xy 4.2375 6.95)
+ (xy 4.2375 5.975)
+ (xy 3.795 5.975)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp af9d6285-8c33-4043-8185-8263403dc73d) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 4.125 4.45)
+ (xy 4.5 4.45)
+ (xy 4.5 2.35)
+ (xy 4.125 2.35)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 9b4b0bb1-530f-4f9a-a961-ab734fd5442f) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 4.225 6.95)
+ (xy 4.6 6.95)
+ (xy 4.6 4.5)
+ (xy 4.225 4.5)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp fa5b3790-b220-4be5-a990-ca2892000201) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 4.6 4.525)
+ (xy 4.6 4.15)
+ (xy 2.5 4.15)
+ (xy 2.5 4.525)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 4fe9af7e-6bb8-4c0e-9a0c-266a90af1ec9) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 6.25 2.725)
+ (xy 6.25 2.35)
+ (xy 4.15 2.35)
+ (xy 4.15 2.725)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp b605a965-8714-4d7f-bd90-b8703d3de73d) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 6.25 4.425)
+ (xy 6.25 4.05)
+ (xy 4.15 4.05)
+ (xy 4.15 4.425)
+ )
+ )
+ )
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M8P.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M8P.kicad_mod
new file mode 100644
index 0000000000..6bc1fba061
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M8P.kicad_mod
@@ -0,0 +1,733 @@
+(footprint "NEO-M8P" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at -6.1 -8.5) (layer "F.SilkS")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp 7b1d98c9-ebec-4839-8c2c-974afef9f2e1)
+ )
+ (fp_text value ">VALUE" (at -6.1 9) (layer "F.Fab")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp 8d693841-9c5d-442a-a87f-bb53e43ffe5c)
+ )
+ (fp_poly
+ (pts
+ (xy -6.1 -7.4)
+ (xy -7.3 -7.4)
+ (xy -7.3 -6.6)
+ (xy -6.1 -6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp eb3242aa-19ef-4dfb-bfb3-6734251ab9ab))
+ (fp_poly
+ (pts
+ (xy -6.1 -6.3)
+ (xy -7.3 -6.3)
+ (xy -7.3 -5.5)
+ (xy -6.1 -5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a3de0fdc-9ce9-481b-a787-3b92725452cd))
+ (fp_poly
+ (pts
+ (xy -6.1 -5.2)
+ (xy -7.3 -5.2)
+ (xy -7.3 -4.4)
+ (xy -6.1 -4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 9341261d-b52c-42ea-a225-63434a6d0a26))
+ (fp_poly
+ (pts
+ (xy -6.1 -4.1)
+ (xy -7.3 -4.1)
+ (xy -7.3 -3.3)
+ (xy -6.1 -3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2d986f43-ab4e-4e0c-96b3-07a566153d1d))
+ (fp_poly
+ (pts
+ (xy -6.1 -3)
+ (xy -7.3 -3)
+ (xy -7.3 -2.2)
+ (xy -6.1 -2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 27f8b736-546e-4f37-9973-22b1686a27b2))
+ (fp_poly
+ (pts
+ (xy -6.1 0)
+ (xy -7.3 0)
+ (xy -7.3 0.8)
+ (xy -6.1 0.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 9a05bba4-1425-4f9c-b098-c0ad145d58b8))
+ (fp_poly
+ (pts
+ (xy -6.1 1.1)
+ (xy -7.3 1.1)
+ (xy -7.3 1.9)
+ (xy -6.1 1.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp d9a6ae26-8858-4324-b030-987fde2eb7d1))
+ (fp_poly
+ (pts
+ (xy -6.1 2.2)
+ (xy -7.3 2.2)
+ (xy -7.3 3)
+ (xy -6.1 3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 9bb68202-e0cd-4df5-b2bf-e40998bb207e))
+ (fp_poly
+ (pts
+ (xy -6.1 3.3)
+ (xy -7.3 3.3)
+ (xy -7.3 4.1)
+ (xy -6.1 4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 392937f9-41e5-4b0d-8484-124af8067eae))
+ (fp_poly
+ (pts
+ (xy -6.1 4.4)
+ (xy -7.3 4.4)
+ (xy -7.3 5.2)
+ (xy -6.1 5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 20913a1f-0581-4f41-bc0a-20763991705f))
+ (fp_poly
+ (pts
+ (xy -6.1 5.5)
+ (xy -7.3 5.5)
+ (xy -7.3 6.3)
+ (xy -6.1 6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 67842226-53d7-49be-a541-50e6824c36de))
+ (fp_poly
+ (pts
+ (xy -6.1 6.6)
+ (xy -7.3 6.6)
+ (xy -7.3 7.4)
+ (xy -6.1 7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 47e2789e-ceb6-4b14-99f2-0ee582194625))
+ (fp_poly
+ (pts
+ (xy -5.2 -7.3)
+ (xy -6.1 -7.3)
+ (xy -6.1 -6.7)
+ (xy -5.2 -6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 6120c3f2-c2c1-4627-874e-51456dfde936))
+ (fp_poly
+ (pts
+ (xy -5.2 -6.2)
+ (xy -6.1 -6.2)
+ (xy -6.1 -5.6)
+ (xy -5.2 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 385f7481-cb68-4c37-bd75-9b7a2b1bee10))
+ (fp_poly
+ (pts
+ (xy -5.2 -5.1)
+ (xy -6.1 -5.1)
+ (xy -6.1 -4.5)
+ (xy -5.2 -4.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a1299104-1202-40bd-807a-6cc279579fbe))
+ (fp_poly
+ (pts
+ (xy -5.2 -4)
+ (xy -6.1 -4)
+ (xy -6.1 -3.4)
+ (xy -5.2 -3.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 4f8b497f-b60b-4423-b339-eb70d05b7dfc))
+ (fp_poly
+ (pts
+ (xy -5.2 -2.9)
+ (xy -6.1 -2.9)
+ (xy -6.1 -2.3)
+ (xy -5.2 -2.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f5b7e8d6-bb41-458f-8654-797b47e8ea0f))
+ (fp_poly
+ (pts
+ (xy -5.2 0.1)
+ (xy -6.1 0.1)
+ (xy -6.1 0.7)
+ (xy -5.2 0.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp cefa3214-5e17-4eca-8a74-474f822325db))
+ (fp_poly
+ (pts
+ (xy -5.2 1.2)
+ (xy -6.1 1.2)
+ (xy -6.1 1.8)
+ (xy -5.2 1.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 39f688d5-f40a-4667-bbc1-d205e26779f6))
+ (fp_poly
+ (pts
+ (xy -5.2 2.3)
+ (xy -6.1 2.3)
+ (xy -6.1 2.9)
+ (xy -5.2 2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7d911a1a-9332-4b3a-b05d-7bebb78ce2be))
+ (fp_poly
+ (pts
+ (xy -5.2 3.4)
+ (xy -6.1 3.4)
+ (xy -6.1 4)
+ (xy -5.2 4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a108c55d-5406-487b-b844-1b55846d9621))
+ (fp_poly
+ (pts
+ (xy -5.2 4.5)
+ (xy -6.1 4.5)
+ (xy -6.1 5.1)
+ (xy -5.2 5.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 63e14939-8eac-47a1-999a-0f31ee6a0e8d))
+ (fp_poly
+ (pts
+ (xy -5.2 5.6)
+ (xy -6.1 5.6)
+ (xy -6.1 6.2)
+ (xy -5.2 6.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a46cebfa-5ec4-4521-aac1-8254d0f2e565))
+ (fp_poly
+ (pts
+ (xy -5.2 6.7)
+ (xy -6.1 6.7)
+ (xy -6.1 7.3)
+ (xy -5.2 7.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 4e7ec44b-be6c-4376-89a0-00ecca0f7a5d))
+ (fp_poly
+ (pts
+ (xy 5.2 -6.7)
+ (xy 6.1 -6.7)
+ (xy 6.1 -7.3)
+ (xy 5.2 -7.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 64ceff69-6fb4-411e-b573-1bc572899db5))
+ (fp_poly
+ (pts
+ (xy 5.2 -5.6)
+ (xy 6.1 -5.6)
+ (xy 6.1 -6.2)
+ (xy 5.2 -6.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 123d255f-a06d-453c-ab95-41f3d9b8a926))
+ (fp_poly
+ (pts
+ (xy 5.2 -4.5)
+ (xy 6.1 -4.5)
+ (xy 6.1 -5.1)
+ (xy 5.2 -5.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 60544e1b-5011-421f-adce-705f96bde572))
+ (fp_poly
+ (pts
+ (xy 5.2 -3.4)
+ (xy 6.1 -3.4)
+ (xy 6.1 -4)
+ (xy 5.2 -4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 18aeb1fc-ecff-4fac-ae73-d65bfc7f2098))
+ (fp_poly
+ (pts
+ (xy 5.2 -2.3)
+ (xy 6.1 -2.3)
+ (xy 6.1 -2.9)
+ (xy 5.2 -2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp eceda226-8763-49fb-ab87-221a76152c6e))
+ (fp_poly
+ (pts
+ (xy 5.2 0.7)
+ (xy 6.1 0.7)
+ (xy 6.1 0.1)
+ (xy 5.2 0.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f35efefa-8574-4a63-b291-08b4a08556cc))
+ (fp_poly
+ (pts
+ (xy 5.2 1.8)
+ (xy 6.1 1.8)
+ (xy 6.1 1.2)
+ (xy 5.2 1.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 30b0a4e7-7d13-4afe-84a2-4512e3eb2cdc))
+ (fp_poly
+ (pts
+ (xy 5.2 2.9)
+ (xy 6.1 2.9)
+ (xy 6.1 2.3)
+ (xy 5.2 2.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7dc9c49f-ab85-4c56-a927-99c689ebd047))
+ (fp_poly
+ (pts
+ (xy 5.2 4)
+ (xy 6.1 4)
+ (xy 6.1 3.4)
+ (xy 5.2 3.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a4760b60-92d3-4706-8bfd-3e82f63cb294))
+ (fp_poly
+ (pts
+ (xy 5.2 5.1)
+ (xy 6.1 5.1)
+ (xy 6.1 4.5)
+ (xy 5.2 4.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7e286e99-56c5-4620-aba3-e0dc6ac8ec8d))
+ (fp_poly
+ (pts
+ (xy 5.2 6.2)
+ (xy 6.1 6.2)
+ (xy 6.1 5.6)
+ (xy 5.2 5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp e140fe34-e3b5-4d21-becb-121b22ba58ed))
+ (fp_poly
+ (pts
+ (xy 5.2 7.3)
+ (xy 6.1 7.3)
+ (xy 6.1 6.7)
+ (xy 5.2 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 866d2099-4b7b-430c-92ea-4381e9b5fbc5))
+ (fp_poly
+ (pts
+ (xy 6.1 -6.6)
+ (xy 7.3 -6.6)
+ (xy 7.3 -7.4)
+ (xy 6.1 -7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 1950d2c6-32bc-4020-b995-db8cfa1b2e11))
+ (fp_poly
+ (pts
+ (xy 6.1 -5.5)
+ (xy 7.3 -5.5)
+ (xy 7.3 -6.3)
+ (xy 6.1 -6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp d342f541-f3a3-4d3f-b134-bb17769c57c6))
+ (fp_poly
+ (pts
+ (xy 6.1 -4.4)
+ (xy 7.3 -4.4)
+ (xy 7.3 -5.2)
+ (xy 6.1 -5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2d227545-ff07-4f95-9614-db655fd8e8d0))
+ (fp_poly
+ (pts
+ (xy 6.1 -3.3)
+ (xy 7.3 -3.3)
+ (xy 7.3 -4.1)
+ (xy 6.1 -4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 46e9826a-8c44-43aa-a10f-59be81c40060))
+ (fp_poly
+ (pts
+ (xy 6.1 -2.2)
+ (xy 7.3 -2.2)
+ (xy 7.3 -3)
+ (xy 6.1 -3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7aa1e069-7635-4e25-aaf9-6b5bfd89bca8))
+ (fp_poly
+ (pts
+ (xy 6.1 0.8)
+ (xy 7.3 0.8)
+ (xy 7.3 0)
+ (xy 6.1 0)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3a095d8f-f2f9-4bda-8ef7-9ff9dd7555d7))
+ (fp_poly
+ (pts
+ (xy 6.1 1.9)
+ (xy 7.3 1.9)
+ (xy 7.3 1.1)
+ (xy 6.1 1.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3e7ab282-aae0-4b42-8711-eb4c14dd79a8))
+ (fp_poly
+ (pts
+ (xy 6.1 3)
+ (xy 7.3 3)
+ (xy 7.3 2.2)
+ (xy 6.1 2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c03ff694-312b-46f0-92d8-149e761df09f))
+ (fp_poly
+ (pts
+ (xy 6.1 4.1)
+ (xy 7.3 4.1)
+ (xy 7.3 3.3)
+ (xy 6.1 3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 046c40b6-c088-4a2b-bfbf-fb377ada05f3))
+ (fp_poly
+ (pts
+ (xy 6.1 5.2)
+ (xy 7.3 5.2)
+ (xy 7.3 4.4)
+ (xy 6.1 4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c29df5ce-b121-4270-8439-8fcbaa06e5f0))
+ (fp_poly
+ (pts
+ (xy 6.1 6.3)
+ (xy 7.3 6.3)
+ (xy 7.3 5.5)
+ (xy 6.1 5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 86e37395-a56b-4f98-b26b-7741b30f0fef))
+ (fp_poly
+ (pts
+ (xy 6.1 7.4)
+ (xy 7.3 7.4)
+ (xy 7.3 6.6)
+ (xy 6.1 6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 1d6c7577-31ce-4015-bbd9-b4f1c2508d34))
+ (fp_line (start -6.35 -8.25) (end -4.88 -8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 484eff56-a92a-4fcc-9071-167ea8bdb448))
+ (fp_line (start -6.35 -6.4) (end -6.35 -8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp b8a7500e-be0d-46ea-9d8b-ee324004a24e))
+ (fp_line (start -6.35 8.25) (end -6.35 6.4)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp f2b11724-dcad-4070-9c6a-2558150dfb12))
+ (fp_line (start -4.88 8.25) (end -6.35 8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 878ebb0e-2076-4f5e-9602-ccae38005d4d))
+ (fp_line (start 4.88 -8.25) (end 6.35 -8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 93952770-9a29-44af-a739-0b544021f4f6))
+ (fp_line (start 6.35 -8.25) (end 6.35 -6.4)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 5e56848e-67a2-4070-81db-026d23d5f76c))
+ (fp_line (start 6.35 6.4) (end 6.35 8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp ded06855-0cca-457f-a8b2-2ab0dc5d3491))
+ (fp_line (start 6.35 8.25) (end 4.88 8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp abffebe8-5a07-4d9e-aebe-5aaf6054e0ef))
+ (fp_circle (center 6.7 8) (end 6.770709 8)
+ (stroke (width 0.141418) (type solid)) (fill solid) (layer "F.SilkS") (tstamp f4af0c3a-73ed-4002-8666-4e8480ac81ec))
+ (fp_line (start -6.1 -8) (end 6.1 -8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 863f9272-b9ac-4fb7-b50c-e274b0669b40))
+ (fp_line (start -6.1 8) (end -6.1 -8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 2e57877e-cfa2-446c-afcd-f171469dce33))
+ (fp_line (start 6.1 -8) (end 6.1 8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 4758c736-3687-472b-ae64-b5a280ac7f66))
+ (fp_line (start 6.1 8) (end -6.1 8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp e29d4dbb-4a06-44e0-8bc8-4c91bd618611))
+ (fp_poly
+ (pts
+ (xy -6.1 -6.6)
+ (xy -5.2 -6.6)
+ (xy -5.2 -7.4)
+ (xy -6.1 -7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 4a1c010a-6c7d-4d5c-baf8-365889912ddc))
+ (fp_poly
+ (pts
+ (xy -6.1 -5.5)
+ (xy -5.2 -5.5)
+ (xy -5.2 -6.3)
+ (xy -6.1 -6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 09cfb88c-57b5-45cd-bb9f-c6350c199b96))
+ (fp_poly
+ (pts
+ (xy -6.1 -4.4)
+ (xy -5.2 -4.4)
+ (xy -5.2 -5.2)
+ (xy -6.1 -5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp e444190a-082a-4db8-a547-1026d617cbfd))
+ (fp_poly
+ (pts
+ (xy -6.1 -3.3)
+ (xy -5.2 -3.3)
+ (xy -5.2 -4.1)
+ (xy -6.1 -4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp bed684c8-68d2-42c5-bf8a-2530f02c4718))
+ (fp_poly
+ (pts
+ (xy -6.1 -2.2)
+ (xy -5.2 -2.2)
+ (xy -5.2 -3)
+ (xy -6.1 -3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 6135157f-ec48-4c9e-b0f1-1fe53f9c97dc))
+ (fp_poly
+ (pts
+ (xy -6.1 0.8)
+ (xy -5.2 0.8)
+ (xy -5.2 0)
+ (xy -6.1 0)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 923a3489-4717-4ad4-bc91-654ec3c68c46))
+ (fp_poly
+ (pts
+ (xy -6.1 1.9)
+ (xy -5.2 1.9)
+ (xy -5.2 1.1)
+ (xy -6.1 1.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp bd340a70-6e17-44de-8667-ae540ca44d9b))
+ (fp_poly
+ (pts
+ (xy -6.1 3)
+ (xy -5.2 3)
+ (xy -5.2 2.2)
+ (xy -6.1 2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp e851098c-cc3c-453f-9d42-d585fb4736c2))
+ (fp_poly
+ (pts
+ (xy -6.1 4.1)
+ (xy -5.2 4.1)
+ (xy -5.2 3.3)
+ (xy -6.1 3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp d4914679-ff8c-43de-b10f-908de1c02aa7))
+ (fp_poly
+ (pts
+ (xy -6.1 5.2)
+ (xy -5.2 5.2)
+ (xy -5.2 4.4)
+ (xy -6.1 4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 9d9396a7-fcef-4fc5-95fd-87ad9fe0aeb9))
+ (fp_poly
+ (pts
+ (xy -6.1 6.3)
+ (xy -5.2 6.3)
+ (xy -5.2 5.5)
+ (xy -6.1 5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 529e5b35-93d1-4e4b-835f-f24539939178))
+ (fp_poly
+ (pts
+ (xy -6.1 7.4)
+ (xy -5.2 7.4)
+ (xy -5.2 6.6)
+ (xy -6.1 6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 5ee05978-62df-478e-b7ba-53d0f190af98))
+ (fp_poly
+ (pts
+ (xy 5.2 -6.6)
+ (xy 6.1 -6.6)
+ (xy 6.1 -7.4)
+ (xy 5.2 -7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 7716e32c-848f-4c3a-a822-bbf08a6f5633))
+ (fp_poly
+ (pts
+ (xy 5.2 -5.5)
+ (xy 6.1 -5.5)
+ (xy 6.1 -6.3)
+ (xy 5.2 -6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 2c421e85-0832-4abb-b2f3-689662669258))
+ (fp_poly
+ (pts
+ (xy 5.2 -4.4)
+ (xy 6.1 -4.4)
+ (xy 6.1 -5.2)
+ (xy 5.2 -5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 4acc564e-c452-456c-8285-18cdd6eae423))
+ (fp_poly
+ (pts
+ (xy 5.2 -3.3)
+ (xy 6.1 -3.3)
+ (xy 6.1 -4.1)
+ (xy 5.2 -4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp fc574937-61ce-48e1-9f3e-9eb15ee98f9c))
+ (fp_poly
+ (pts
+ (xy 5.2 -2.2)
+ (xy 6.1 -2.2)
+ (xy 6.1 -3)
+ (xy 5.2 -3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp a4c8c717-280c-40b9-8f8e-985d32d39c85))
+ (fp_poly
+ (pts
+ (xy 5.2 0.8)
+ (xy 6.1 0.8)
+ (xy 6.1 0)
+ (xy 5.2 0)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3744c273-3a76-4ca8-9400-cc2914b97325))
+ (fp_poly
+ (pts
+ (xy 5.2 1.9)
+ (xy 6.1 1.9)
+ (xy 6.1 1.1)
+ (xy 5.2 1.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 13c3e35b-a7fb-401e-b084-931475e161c7))
+ (fp_poly
+ (pts
+ (xy 5.2 3)
+ (xy 6.1 3)
+ (xy 6.1 2.2)
+ (xy 5.2 2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp b48b872b-e536-4484-b2e8-57b241624e3a))
+ (fp_poly
+ (pts
+ (xy 5.2 4.1)
+ (xy 6.1 4.1)
+ (xy 6.1 3.3)
+ (xy 5.2 3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 949e582f-5bee-492e-a3fc-123b866afe54))
+ (fp_poly
+ (pts
+ (xy 5.2 5.2)
+ (xy 6.1 5.2)
+ (xy 6.1 4.4)
+ (xy 5.2 4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 45be107c-aca3-4468-9d81-b80d10d4a506))
+ (fp_poly
+ (pts
+ (xy 5.2 6.3)
+ (xy 6.1 6.3)
+ (xy 6.1 5.5)
+ (xy 5.2 5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 61c4c0e0-7a84-4d66-8c5f-e9dbb05c92ce))
+ (fp_poly
+ (pts
+ (xy 5.2 7.4)
+ (xy 6.1 7.4)
+ (xy 6.1 6.6)
+ (xy 5.2 6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 9af75fcc-eafd-49b5-87fa-60794e154c8a))
+ (pad "1" smd rect (at 6 7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9965872c-94df-48c9-9ba0-67d3064f00cf))
+ (pad "2" smd rect (at 6 5.9) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4b0e0e92-bc04-4ff1-9051-e0304da47e46))
+ (pad "3" smd rect (at 6 4.8) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3d4c2608-e3dc-4982-a810-f7b58af4c650))
+ (pad "4" smd rect (at 6 3.7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp eb0e8aea-f3a2-4f04-8e42-d3f7e6a59c36))
+ (pad "5" smd rect (at 6 2.6) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cd990c7d-e985-4daf-9f36-765689bb8652))
+ (pad "6" smd rect (at 6 1.5) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a6b00f57-7e79-455f-93b0-8544108912c4))
+ (pad "7" smd rect (at 6 0.4) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ee6fcf33-6610-4948-804c-ba2778ad906b))
+ (pad "8" smd rect (at 6 -2.6) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 104a1763-51fa-4774-a365-68602144f4ec))
+ (pad "9" smd rect (at 6 -3.7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 399bc5a0-6bbd-4901-aa30-2fb732091be1))
+ (pad "10" smd rect (at 6 -4.8) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1373f44f-26d0-4448-837b-9c248e92e33e))
+ (pad "11" smd rect (at 6 -5.9) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 61dfde0d-c898-4acf-9447-de8949628ce1))
+ (pad "12" smd rect (at 6 -7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 57897d1b-ae51-4e3c-8805-1e12e888ad8c))
+ (pad "13" smd rect (at -6 -7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 83191990-4a18-4c72-af74-c4d543c84884))
+ (pad "14" smd rect (at -6 -5.9 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a371078c-e697-4b1e-ae4c-90d727eb021f))
+ (pad "15" smd rect (at -6 -4.8 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 123461a6-8795-4f90-8034-986007d4d953))
+ (pad "16" smd rect (at -6 -3.7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d083c88c-249c-41b9-8c2c-882309307be5))
+ (pad "17" smd rect (at -6 -2.6 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6f1ab496-156b-4043-8ace-ba1b9621b8ed))
+ (pad "18" smd rect (at -6 0.4 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 42652d6a-6378-435f-be61-3ae232f6b1be))
+ (pad "19" smd rect (at -6 1.5 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7e2d9905-7ef0-4474-b468-ff44fdf57c7d))
+ (pad "20" smd rect (at -6 2.6 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp eacc041c-9291-47d3-9286-70703dad5791))
+ (pad "21" smd rect (at -6 3.7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 16f4ad69-3c54-4508-9356-23e357849721))
+ (pad "22" smd rect (at -6 4.8 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 452559fc-59c4-4517-98ef-aa4469da5321))
+ (pad "23" smd rect (at -6 5.9 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 285e094d-1577-4270-a5ae-a8c681ea769a))
+ (pad "24" smd rect (at -6 7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 852e5bf5-26b4-41b5-b91e-ee26c69e6459))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M9N_M8T_M8U_D9S.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M9N_M8T_M8U_D9S.kicad_mod
new file mode 100644
index 0000000000..ec0ae52ae5
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/NEO-M9N_M8T_M8U_D9S.kicad_mod
@@ -0,0 +1,734 @@
+(footprint "NEO-M9N_M8T_M8U_D9S" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "u-blox NEO-M9N/M8T/M8U/D9S Module
\n\nMechanical Specifications
\n\n- Overall: 12.2mm x 16.0mm
\n- Pad Pitch: 1.1mm
\n- Pad Width: .8mm
\n- Pad Length: .9mm
\n- Number of Pins: 24
\n\n\n\n\n\n\n
")
+ (fp_text reference ">NAME" (at -6.1 -8.5) (layer "F.SilkS")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp 696f0a31-7891-4389-a52b-5d646c65fb14)
+ )
+ (fp_text value ">VALUE" (at -6.1 9) (layer "F.Fab")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp d4583788-7b45-4b41-aa1a-9ffbac086709)
+ )
+ (fp_poly
+ (pts
+ (xy -6.1 -7.4)
+ (xy -7.3 -7.4)
+ (xy -7.3 -6.6)
+ (xy -6.1 -6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c02b16b9-d2ac-40a5-aa57-5e26b67768f3))
+ (fp_poly
+ (pts
+ (xy -6.1 -6.3)
+ (xy -7.3 -6.3)
+ (xy -7.3 -5.5)
+ (xy -6.1 -5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 9b7e34bb-3aec-4951-abdd-892d21edac4d))
+ (fp_poly
+ (pts
+ (xy -6.1 -5.2)
+ (xy -7.3 -5.2)
+ (xy -7.3 -4.4)
+ (xy -6.1 -4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 9c955823-661e-4c83-a2cd-63c12ea77f2d))
+ (fp_poly
+ (pts
+ (xy -6.1 -4.1)
+ (xy -7.3 -4.1)
+ (xy -7.3 -3.3)
+ (xy -6.1 -3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp bde1ef27-f09c-4529-a896-182bbe46ecf4))
+ (fp_poly
+ (pts
+ (xy -6.1 -3)
+ (xy -7.3 -3)
+ (xy -7.3 -2.2)
+ (xy -6.1 -2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 09c2e77d-caa0-4fb1-80b6-24599ce571f9))
+ (fp_poly
+ (pts
+ (xy -6.1 0)
+ (xy -7.3 0)
+ (xy -7.3 0.8)
+ (xy -6.1 0.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 9412c287-accf-4782-b198-f30247935f4c))
+ (fp_poly
+ (pts
+ (xy -6.1 1.1)
+ (xy -7.3 1.1)
+ (xy -7.3 1.9)
+ (xy -6.1 1.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp cf8c90c5-beb6-4fe9-867b-2f9d339a69bb))
+ (fp_poly
+ (pts
+ (xy -6.1 2.2)
+ (xy -7.3 2.2)
+ (xy -7.3 3)
+ (xy -6.1 3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp bf7733ee-785e-4dff-8382-d20459460f55))
+ (fp_poly
+ (pts
+ (xy -6.1 3.3)
+ (xy -7.3 3.3)
+ (xy -7.3 4.1)
+ (xy -6.1 4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f5896def-df03-4c10-845d-0921576aa637))
+ (fp_poly
+ (pts
+ (xy -6.1 4.4)
+ (xy -7.3 4.4)
+ (xy -7.3 5.2)
+ (xy -6.1 5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 365e9d75-53db-4874-8200-84ecba785471))
+ (fp_poly
+ (pts
+ (xy -6.1 5.5)
+ (xy -7.3 5.5)
+ (xy -7.3 6.3)
+ (xy -6.1 6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3d7c4e0b-b5ef-4ea3-a985-225b1b385c87))
+ (fp_poly
+ (pts
+ (xy -6.1 6.6)
+ (xy -7.3 6.6)
+ (xy -7.3 7.4)
+ (xy -6.1 7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b27a0325-eeeb-4f01-8720-ae662efc7291))
+ (fp_poly
+ (pts
+ (xy -5.2 -7.3)
+ (xy -6.1 -7.3)
+ (xy -6.1 -6.7)
+ (xy -5.2 -6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 38e524cc-7d73-4a1c-8ce4-e10bbc31dcb4))
+ (fp_poly
+ (pts
+ (xy -5.2 -6.2)
+ (xy -6.1 -6.2)
+ (xy -6.1 -5.6)
+ (xy -5.2 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 86a53d9b-a687-480d-8fa6-4336c72f29af))
+ (fp_poly
+ (pts
+ (xy -5.2 -5.1)
+ (xy -6.1 -5.1)
+ (xy -6.1 -4.5)
+ (xy -5.2 -4.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 5dcf9692-a18c-422d-b57f-3713aa50888e))
+ (fp_poly
+ (pts
+ (xy -5.2 -4)
+ (xy -6.1 -4)
+ (xy -6.1 -3.4)
+ (xy -5.2 -3.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 90c93cfb-dfe6-4105-a269-73a0bc511afd))
+ (fp_poly
+ (pts
+ (xy -5.2 -2.9)
+ (xy -6.1 -2.9)
+ (xy -6.1 -2.3)
+ (xy -5.2 -2.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 58a9220d-a14a-412c-baf1-8c3b0527af03))
+ (fp_poly
+ (pts
+ (xy -5.2 0.1)
+ (xy -6.1 0.1)
+ (xy -6.1 0.7)
+ (xy -5.2 0.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp ca0fd74a-617a-4598-bd8b-7134afaa61d8))
+ (fp_poly
+ (pts
+ (xy -5.2 1.2)
+ (xy -6.1 1.2)
+ (xy -6.1 1.8)
+ (xy -5.2 1.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2d75b353-73df-4647-af1e-f6ca22f04143))
+ (fp_poly
+ (pts
+ (xy -5.2 2.3)
+ (xy -6.1 2.3)
+ (xy -6.1 2.9)
+ (xy -5.2 2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 8a7ecd80-fe52-4dd4-9fbe-cfcb069ddb5e))
+ (fp_poly
+ (pts
+ (xy -5.2 3.4)
+ (xy -6.1 3.4)
+ (xy -6.1 4)
+ (xy -5.2 4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 051c4d3c-2a51-4827-81ca-43cc0a80a9ac))
+ (fp_poly
+ (pts
+ (xy -5.2 4.5)
+ (xy -6.1 4.5)
+ (xy -6.1 5.1)
+ (xy -5.2 5.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 49f39aab-5379-4c34-8d9e-bab42a43d20a))
+ (fp_poly
+ (pts
+ (xy -5.2 5.6)
+ (xy -6.1 5.6)
+ (xy -6.1 6.2)
+ (xy -5.2 6.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp e5a907ce-c892-4152-a0ad-1499afaa7486))
+ (fp_poly
+ (pts
+ (xy -5.2 6.7)
+ (xy -6.1 6.7)
+ (xy -6.1 7.3)
+ (xy -5.2 7.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b1a9d3e0-89a1-40b2-a16f-2cedf822a379))
+ (fp_poly
+ (pts
+ (xy 5.2 -6.7)
+ (xy 6.1 -6.7)
+ (xy 6.1 -7.3)
+ (xy 5.2 -7.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c31acfe0-088e-4be8-a6db-34b47a3232ae))
+ (fp_poly
+ (pts
+ (xy 5.2 -5.6)
+ (xy 6.1 -5.6)
+ (xy 6.1 -6.2)
+ (xy 5.2 -6.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp dab8bb85-b145-414e-bb96-1305f52be690))
+ (fp_poly
+ (pts
+ (xy 5.2 -4.5)
+ (xy 6.1 -4.5)
+ (xy 6.1 -5.1)
+ (xy 5.2 -5.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f7051a14-86e7-4acf-ba8b-91175fd0c98c))
+ (fp_poly
+ (pts
+ (xy 5.2 -3.4)
+ (xy 6.1 -3.4)
+ (xy 6.1 -4)
+ (xy 5.2 -4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 1285709b-53d9-448c-8879-2a93fde5db32))
+ (fp_poly
+ (pts
+ (xy 5.2 -2.3)
+ (xy 6.1 -2.3)
+ (xy 6.1 -2.9)
+ (xy 5.2 -2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 1b1fdbb3-f60f-4d9f-bcac-c6efcc974db3))
+ (fp_poly
+ (pts
+ (xy 5.2 0.7)
+ (xy 6.1 0.7)
+ (xy 6.1 0.1)
+ (xy 5.2 0.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 112d630d-0ddb-4420-81a1-d42df6cbc712))
+ (fp_poly
+ (pts
+ (xy 5.2 1.8)
+ (xy 6.1 1.8)
+ (xy 6.1 1.2)
+ (xy 5.2 1.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp fecd9a19-c50e-4cfe-b1bf-099d39216b14))
+ (fp_poly
+ (pts
+ (xy 5.2 2.9)
+ (xy 6.1 2.9)
+ (xy 6.1 2.3)
+ (xy 5.2 2.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 4ddab4c8-cae6-447c-a59a-9a1266764446))
+ (fp_poly
+ (pts
+ (xy 5.2 4)
+ (xy 6.1 4)
+ (xy 6.1 3.4)
+ (xy 5.2 3.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp efa724fe-7399-403b-9d3e-18580ba27767))
+ (fp_poly
+ (pts
+ (xy 5.2 5.1)
+ (xy 6.1 5.1)
+ (xy 6.1 4.5)
+ (xy 5.2 4.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7396d5ab-5c69-49e8-8a1d-8257e5466578))
+ (fp_poly
+ (pts
+ (xy 5.2 6.2)
+ (xy 6.1 6.2)
+ (xy 6.1 5.6)
+ (xy 5.2 5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp da6770ec-f119-4f52-b44f-cdddecb71b30))
+ (fp_poly
+ (pts
+ (xy 5.2 7.3)
+ (xy 6.1 7.3)
+ (xy 6.1 6.7)
+ (xy 5.2 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3abd822a-2f4c-40a9-a7a0-0f181ed6ff3d))
+ (fp_poly
+ (pts
+ (xy 6.1 -6.6)
+ (xy 7.3 -6.6)
+ (xy 7.3 -7.4)
+ (xy 6.1 -7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 764b11ba-71a9-4cdf-a234-2d18a8bbe60e))
+ (fp_poly
+ (pts
+ (xy 6.1 -5.5)
+ (xy 7.3 -5.5)
+ (xy 7.3 -6.3)
+ (xy 6.1 -6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 99aee388-622c-4066-8b0f-d7e5b52c63a8))
+ (fp_poly
+ (pts
+ (xy 6.1 -4.4)
+ (xy 7.3 -4.4)
+ (xy 7.3 -5.2)
+ (xy 6.1 -5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 92e33c98-78b9-4257-86e1-8f1fb6aa3189))
+ (fp_poly
+ (pts
+ (xy 6.1 -3.3)
+ (xy 7.3 -3.3)
+ (xy 7.3 -4.1)
+ (xy 6.1 -4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f6938661-00aa-40f2-a38f-4f82f8b56ef3))
+ (fp_poly
+ (pts
+ (xy 6.1 -2.2)
+ (xy 7.3 -2.2)
+ (xy 7.3 -3)
+ (xy 6.1 -3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f3ca89af-5c64-4397-b27b-c86ab6f560bc))
+ (fp_poly
+ (pts
+ (xy 6.1 0.8)
+ (xy 7.3 0.8)
+ (xy 7.3 0)
+ (xy 6.1 0)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 890eccb1-dea6-4399-9d61-bbd67b586022))
+ (fp_poly
+ (pts
+ (xy 6.1 1.9)
+ (xy 7.3 1.9)
+ (xy 7.3 1.1)
+ (xy 6.1 1.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3ab8ed23-81af-488e-9b00-84d4928d8546))
+ (fp_poly
+ (pts
+ (xy 6.1 3)
+ (xy 7.3 3)
+ (xy 7.3 2.2)
+ (xy 6.1 2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp ebba6841-8cc6-4f46-8a97-09786a1ddd66))
+ (fp_poly
+ (pts
+ (xy 6.1 4.1)
+ (xy 7.3 4.1)
+ (xy 7.3 3.3)
+ (xy 6.1 3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2f5f7d61-4a25-4ebd-8e5e-d9b15c1d0c8a))
+ (fp_poly
+ (pts
+ (xy 6.1 5.2)
+ (xy 7.3 5.2)
+ (xy 7.3 4.4)
+ (xy 6.1 4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f9572f8d-d9f5-409c-89c8-b1d85c54ae32))
+ (fp_poly
+ (pts
+ (xy 6.1 6.3)
+ (xy 7.3 6.3)
+ (xy 7.3 5.5)
+ (xy 6.1 5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 227713c0-2cb9-4d78-878a-98f0371bf06d))
+ (fp_poly
+ (pts
+ (xy 6.1 7.4)
+ (xy 7.3 7.4)
+ (xy 7.3 6.6)
+ (xy 6.1 6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 793949fd-a8b1-4f91-b4af-4ac5fa1568d2))
+ (fp_line (start -6.35 -8.25) (end -4.88 -8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp d7c0898f-d0e4-47dc-975c-222d39a9f419))
+ (fp_line (start -6.35 -6.4) (end -6.35 -8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp a3fa7ff1-2209-43a4-80db-93d3fdf572c1))
+ (fp_line (start -6.35 8.25) (end -6.35 6.4)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 473df408-8294-4e3c-85c5-2fbd6ec2999d))
+ (fp_line (start -4.88 8.25) (end -6.35 8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 422dccf4-0fb1-4dcb-afc6-1293a33f0cb1))
+ (fp_line (start 4.88 -8.25) (end 6.35 -8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 9b643a18-e6de-4d6c-a88c-f1e6062e369d))
+ (fp_line (start 6.35 -8.25) (end 6.35 -6.4)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 61817c83-0e31-46da-87e1-0744c2810702))
+ (fp_line (start 6.35 6.4) (end 6.35 8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 3aa6e1d0-4b69-4a7e-9cc4-98086cb2a597))
+ (fp_line (start 6.35 8.25) (end 4.88 8.25)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 25638175-4add-41dc-a1d5-b8c016ccc948))
+ (fp_circle (center 6.858 8.763) (end 7.0612 8.763)
+ (stroke (width 0.4064) (type solid)) (fill solid) (layer "F.SilkS") (tstamp d7c4b48d-2270-4cb9-8013-e230c52f29d8))
+ (fp_line (start -6.1 -8) (end 6.1 -8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp c3357b89-3816-4986-b4cd-cc572bb830f9))
+ (fp_line (start -6.1 8) (end -6.1 -8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 21feeb57-aae8-476c-bedd-da7b233bca61))
+ (fp_line (start 6.1 -8) (end 6.1 8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 82bda3e6-ab71-497f-b929-60ef48d255e6))
+ (fp_line (start 6.1 8) (end -6.1 8)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 0a644eaf-eb01-4b1c-9428-9a25ffaca123))
+ (fp_poly
+ (pts
+ (xy -6.1 -6.6)
+ (xy -5.2 -6.6)
+ (xy -5.2 -7.4)
+ (xy -6.1 -7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 078aed94-d34e-410d-96b3-c48808025445))
+ (fp_poly
+ (pts
+ (xy -6.1 -5.5)
+ (xy -5.2 -5.5)
+ (xy -5.2 -6.3)
+ (xy -6.1 -6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 16b2c69c-07a2-4074-98a0-d60f1b8639d2))
+ (fp_poly
+ (pts
+ (xy -6.1 -4.4)
+ (xy -5.2 -4.4)
+ (xy -5.2 -5.2)
+ (xy -6.1 -5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 37e82ddd-280a-4e2a-8cc1-ba38a37201c4))
+ (fp_poly
+ (pts
+ (xy -6.1 -3.3)
+ (xy -5.2 -3.3)
+ (xy -5.2 -4.1)
+ (xy -6.1 -4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp bd321b97-ae7a-4068-a48d-710713a9f64c))
+ (fp_poly
+ (pts
+ (xy -6.1 -2.2)
+ (xy -5.2 -2.2)
+ (xy -5.2 -3)
+ (xy -6.1 -3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 8f4c5be3-3233-453c-9e8a-8209c54cc2a1))
+ (fp_poly
+ (pts
+ (xy -6.1 0.8)
+ (xy -5.2 0.8)
+ (xy -5.2 0)
+ (xy -6.1 0)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp df4bca7a-b221-4a58-af34-f40ee676ba1d))
+ (fp_poly
+ (pts
+ (xy -6.1 1.9)
+ (xy -5.2 1.9)
+ (xy -5.2 1.1)
+ (xy -6.1 1.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp c2b981b9-4cef-4aed-98e4-50b8ccf1f000))
+ (fp_poly
+ (pts
+ (xy -6.1 3)
+ (xy -5.2 3)
+ (xy -5.2 2.2)
+ (xy -6.1 2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 92ae3b4a-7375-466e-980d-bc9dd83250ee))
+ (fp_poly
+ (pts
+ (xy -6.1 4.1)
+ (xy -5.2 4.1)
+ (xy -5.2 3.3)
+ (xy -6.1 3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 68bde5a1-50e1-4320-821b-3f176f7910b5))
+ (fp_poly
+ (pts
+ (xy -6.1 5.2)
+ (xy -5.2 5.2)
+ (xy -5.2 4.4)
+ (xy -6.1 4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp a8043c1a-f878-4b84-8e47-c336cdf1eb75))
+ (fp_poly
+ (pts
+ (xy -6.1 6.3)
+ (xy -5.2 6.3)
+ (xy -5.2 5.5)
+ (xy -6.1 5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 362b45bb-9a81-4892-a99c-5cbb6a494dae))
+ (fp_poly
+ (pts
+ (xy -6.1 7.4)
+ (xy -5.2 7.4)
+ (xy -5.2 6.6)
+ (xy -6.1 6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 97ea7b5d-d7c6-41d7-af30-d0aa78be99c9))
+ (fp_poly
+ (pts
+ (xy 5.2 -6.6)
+ (xy 6.1 -6.6)
+ (xy 6.1 -7.4)
+ (xy 5.2 -7.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp e29d9844-601b-4b33-aca6-a364cde20cda))
+ (fp_poly
+ (pts
+ (xy 5.2 -5.5)
+ (xy 6.1 -5.5)
+ (xy 6.1 -6.3)
+ (xy 5.2 -6.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3e14a354-237f-4434-a6d4-9cfafb155f3a))
+ (fp_poly
+ (pts
+ (xy 5.2 -4.4)
+ (xy 6.1 -4.4)
+ (xy 6.1 -5.2)
+ (xy 5.2 -5.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 1193a06d-2ced-4c68-9873-695f3476408a))
+ (fp_poly
+ (pts
+ (xy 5.2 -3.3)
+ (xy 6.1 -3.3)
+ (xy 6.1 -4.1)
+ (xy 5.2 -4.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp a1a936c9-c889-44cd-bf84-2a19c003c71f))
+ (fp_poly
+ (pts
+ (xy 5.2 -2.2)
+ (xy 6.1 -2.2)
+ (xy 6.1 -3)
+ (xy 5.2 -3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 829f80ed-de0a-4aa4-88e8-0311fe0ebe40))
+ (fp_poly
+ (pts
+ (xy 5.2 0.8)
+ (xy 6.1 0.8)
+ (xy 6.1 0)
+ (xy 5.2 0)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp ee4e1da9-ced1-4640-bd00-3ffee3ea0801))
+ (fp_poly
+ (pts
+ (xy 5.2 1.9)
+ (xy 6.1 1.9)
+ (xy 6.1 1.1)
+ (xy 5.2 1.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 167b6570-235c-4ae3-9565-74535ed04070))
+ (fp_poly
+ (pts
+ (xy 5.2 3)
+ (xy 6.1 3)
+ (xy 6.1 2.2)
+ (xy 5.2 2.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp efaa626d-bd68-425b-a996-dc277bd4f1cf))
+ (fp_poly
+ (pts
+ (xy 5.2 4.1)
+ (xy 6.1 4.1)
+ (xy 6.1 3.3)
+ (xy 5.2 3.3)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 6610aa71-a2f5-40eb-8283-2a076d992f16))
+ (fp_poly
+ (pts
+ (xy 5.2 5.2)
+ (xy 6.1 5.2)
+ (xy 6.1 4.4)
+ (xy 5.2 4.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 27e20475-bf43-443a-a5ad-0be97f17b5f4))
+ (fp_poly
+ (pts
+ (xy 5.2 6.3)
+ (xy 6.1 6.3)
+ (xy 6.1 5.5)
+ (xy 5.2 5.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 961ba980-ad8d-47c9-915b-9a918009e773))
+ (fp_poly
+ (pts
+ (xy 5.2 7.4)
+ (xy 6.1 7.4)
+ (xy 6.1 6.6)
+ (xy 5.2 6.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 139d04e6-42b4-4c9c-917c-a6f10a9af756))
+ (pad "1" smd rect (at 6 7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 006f055d-7492-4f5c-b680-fd01a4e5590e))
+ (pad "2" smd rect (at 6 5.9) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp bb38bb32-5b62-4dc6-9df0-4d861e5ae0ef))
+ (pad "3" smd rect (at 6 4.8) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4dafdda8-5527-4e3d-838d-30c2dc9575a9))
+ (pad "4" smd rect (at 6 3.7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5e9c69f0-e2b1-4528-8d24-6ca1858a858e))
+ (pad "5" smd rect (at 6 2.6) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2aef717a-f488-44be-8a6a-a8e2c7ddaacc))
+ (pad "6" smd rect (at 6 1.5) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b22aa5ad-abe3-4bd9-9fa3-055d528c6d24))
+ (pad "7" smd rect (at 6 0.4) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 87718ea2-d79e-4ba4-9d3c-7993c325d1b2))
+ (pad "8" smd rect (at 6 -2.6) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7da71d0e-551e-4444-b16e-89fa1849e709))
+ (pad "9" smd rect (at 6 -3.7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 25edd692-e8a1-4e7a-836c-a09e7f108a52))
+ (pad "10" smd rect (at 6 -4.8) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 56c234cb-beac-43e1-bc48-be7970190c1b))
+ (pad "11" smd rect (at 6 -5.9) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1f1b8880-7e7a-4dec-ad95-822a4c347131))
+ (pad "12" smd rect (at 6 -7) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2210c570-2b38-4112-95b5-0983ab2c7294))
+ (pad "13" smd rect (at -6 -7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a9f32a1e-d4dd-48ba-992b-8c4fb17e175a))
+ (pad "14" smd rect (at -6 -5.9 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 15cf1ff8-1611-4c96-9bed-504c9205eebe))
+ (pad "15" smd rect (at -6 -4.8 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2b3b9dee-bc23-4151-96dc-096bbcd1323f))
+ (pad "16" smd rect (at -6 -3.7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7d09060b-29e4-46ef-877e-27bae63e45e5))
+ (pad "17" smd rect (at -6 -2.6 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ddba6a0d-6bad-4e49-a948-032270d3a338))
+ (pad "18" smd rect (at -6 0.4 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f977baaf-518a-4e0b-ad68-a3959326b921))
+ (pad "19" smd rect (at -6 1.5 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a79f4164-3197-493c-8889-c82d5e4ab0a5))
+ (pad "20" smd rect (at -6 2.6 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7672a1d6-7da8-4223-a708-af5814a6813b))
+ (pad "21" smd rect (at -6 3.7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8b29d9c1-d2ca-45ff-b418-fdd879edc00f))
+ (pad "22" smd rect (at -6 4.8 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 07c523c4-663e-49e3-a62a-44336dc6a71a))
+ (pad "23" smd rect (at -6 5.9 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c40b965d-0948-4fe0-83d9-01ec40e2ee31))
+ (pad "24" smd rect (at -6 7 180) (size 1.8 0.8) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2cf97bfa-acee-493b-81d5-96894b236532))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/SAM-M8Q.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/SAM-M8Q.kicad_mod
new file mode 100644
index 0000000000..e912786646
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/SAM-M8Q.kicad_mod
@@ -0,0 +1,276 @@
+(footprint "SAM-M8Q" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "SAM-M8Q-0-10
\nPhyscial Characteristics\n\n- 15x15x6.3mm
\n- Module is a Chip Antenna/GPS Unit combined
\n\n
")
+ (fp_text reference ">NAME" (at -7.75 -8.25) (layer "F.SilkS")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp 862f4113-a97c-4e19-b737-89e520642e0b)
+ )
+ (fp_text value ">VALUE" (at -7.75 8.75) (layer "F.Fab")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp 655d5b44-c00a-4f59-9b17-b0d4d5359ca8)
+ )
+ (fp_line (start -8 -8) (end -6.2 -8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp a9a7c0d1-d2fa-4a5b-84b3-f743b6d5f917))
+ (fp_line (start -8 -6.2) (end -8 -8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 90238b3d-363c-4bb1-b755-e71e9a2cc9bc))
+ (fp_line (start -8 8) (end -8 6.2)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 8bdab07b-3a44-4eec-866c-787485ebd963))
+ (fp_line (start -6.2 8) (end -8 8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp eed3ae4d-f76b-4ccd-8590-5e1673e0641d))
+ (fp_line (start 6.2 -8) (end 8 -8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 0b527bdf-7ff7-460d-9dac-f6dc8a3b9bf9))
+ (fp_line (start 8 -8) (end 8 -6.2)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp ceb948d4-30db-414c-868c-c7b5503e207a))
+ (fp_line (start 8 6.2) (end 8 8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp a74ae00e-9cc6-4dac-ae3a-b106015f1c48))
+ (fp_line (start 8 8) (end 6.2 8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp b2fe5471-d53c-4cd8-94d8-b4d67f831144))
+ (fp_circle (center -8.89 -7.62) (end -8.689197 -7.62)
+ (stroke (width 0.401606) (type solid)) (fill solid) (layer "F.SilkS") (tstamp ab3b3386-6c24-4ffb-8997-d4efc7fbb3b5))
+ (fp_poly
+ (pts
+ (xy -5.08 5.08)
+ (xy 5.08 5.08)
+ (xy 5.08 -5.08)
+ (xy -5.08 -5.08)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "B.CrtYd") (tstamp 0d8efd67-7473-4fa7-b907-ff224073be70))
+ (fp_poly
+ (pts
+ (xy -5.08 5.08)
+ (xy 5.08 5.08)
+ (xy 5.08 -5.08)
+ (xy -5.08 -5.08)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.CrtYd") (tstamp 724d2549-9642-461b-81bd-4ba5e0800dc3))
+ (fp_line (start -7.75 -7.75) (end 7.75 -7.75)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 19e9163b-a83d-4a01-9180-1ce47cc0ba3e))
+ (fp_line (start -7.75 7.75) (end -7.75 -7.75)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 17ca31f0-80f2-447d-9ef9-64fc1d31d1a5))
+ (fp_line (start 7.75 -7.75) (end 7.75 7.75)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp a51c8223-f808-48d3-80a7-ac0950c2b108))
+ (fp_line (start 7.75 7.75) (end -7.75 7.75)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 0db257ab-1f8c-4e3f-b85a-df7c6a10ccdf))
+ (fp_poly
+ (pts
+ (xy -7.65 -3.05)
+ (xy -5.85 -3.05)
+ (xy -5.85 -4.55)
+ (xy -7.65 -4.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 262aa0e3-3222-4fc9-8d48-cac143f76be9))
+ (fp_poly
+ (pts
+ (xy -7.65 -1.15)
+ (xy -5.85 -1.15)
+ (xy -5.85 -2.65)
+ (xy -7.65 -2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 8eb7584e-bf94-4fcb-b4c3-73522f7b8ebc))
+ (fp_poly
+ (pts
+ (xy -7.65 0.75)
+ (xy -5.85 0.75)
+ (xy -5.85 -0.75)
+ (xy -7.65 -0.75)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp fc3fbf70-c0c8-4ff6-b52f-3fd5d9acde07))
+ (fp_poly
+ (pts
+ (xy -7.65 2.65)
+ (xy -5.85 2.65)
+ (xy -5.85 1.15)
+ (xy -7.65 1.15)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 7cf18f72-0941-4147-a9b6-1b7b40de5f5e))
+ (fp_poly
+ (pts
+ (xy -7.65 4.55)
+ (xy -5.85 4.55)
+ (xy -5.85 3.05)
+ (xy -7.65 3.05)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 610c5dea-7f6a-4b5f-be05-e90c5e6e3181))
+ (fp_poly
+ (pts
+ (xy -4.55 -5.85)
+ (xy -3.05 -5.85)
+ (xy -3.05 -7.65)
+ (xy -4.55 -7.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 8a47caf2-a916-42ee-bac4-4a5c24cf3230))
+ (fp_poly
+ (pts
+ (xy -4.55 7.65)
+ (xy -3.05 7.65)
+ (xy -3.05 5.85)
+ (xy -4.55 5.85)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 994c7a55-ca19-4c22-919d-8d3a9f3d2f11))
+ (fp_poly
+ (pts
+ (xy -2.65 -5.85)
+ (xy -1.15 -5.85)
+ (xy -1.15 -7.65)
+ (xy -2.65 -7.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 7f3b4a20-d8f6-4d43-949b-8218727de636))
+ (fp_poly
+ (pts
+ (xy -2.65 7.65)
+ (xy -1.15 7.65)
+ (xy -1.15 5.85)
+ (xy -2.65 5.85)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 6a212372-0a79-4f60-8696-e16b034c43c6))
+ (fp_poly
+ (pts
+ (xy -0.75 -5.85)
+ (xy 0.75 -5.85)
+ (xy 0.75 -7.65)
+ (xy -0.75 -7.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 198c8a41-07cb-4f40-acd6-8c32b4552258))
+ (fp_poly
+ (pts
+ (xy -0.75 7.65)
+ (xy 0.75 7.65)
+ (xy 0.75 5.85)
+ (xy -0.75 5.85)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 801addc8-a3a2-4ecf-bc0b-0150e36ea896))
+ (fp_poly
+ (pts
+ (xy 1.15 -5.85)
+ (xy 2.65 -5.85)
+ (xy 2.65 -7.65)
+ (xy 1.15 -7.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp d7043bc4-1c7a-4caf-94d3-57ccef8ddebd))
+ (fp_poly
+ (pts
+ (xy 1.15 7.65)
+ (xy 2.65 7.65)
+ (xy 2.65 5.85)
+ (xy 1.15 5.85)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 2391c1c5-f9da-40ef-bf77-64467a799933))
+ (fp_poly
+ (pts
+ (xy 3.05 -5.85)
+ (xy 4.55 -5.85)
+ (xy 4.55 -7.65)
+ (xy 3.05 -7.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp d36773d1-18be-4457-8d7b-d04e754dc8d0))
+ (fp_poly
+ (pts
+ (xy 3.05 7.65)
+ (xy 4.55 7.65)
+ (xy 4.55 5.85)
+ (xy 3.05 5.85)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 9758e3b7-5e48-4e50-adb3-89ec96d45da7))
+ (fp_poly
+ (pts
+ (xy 5.85 -3.05)
+ (xy 7.65 -3.05)
+ (xy 7.65 -4.55)
+ (xy 5.85 -4.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 0edbcc9d-bb3a-4e5d-bc59-bab70c2e69c9))
+ (fp_poly
+ (pts
+ (xy 5.85 -1.15)
+ (xy 7.65 -1.15)
+ (xy 7.65 -2.65)
+ (xy 5.85 -2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 275ae911-6224-4eec-87d8-5c05ffe99d7c))
+ (fp_poly
+ (pts
+ (xy 5.85 0.75)
+ (xy 7.65 0.75)
+ (xy 7.65 -0.75)
+ (xy 5.85 -0.75)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 1907cdd9-44ad-448f-9a72-bafbd9207a1f))
+ (fp_poly
+ (pts
+ (xy 5.85 2.65)
+ (xy 7.65 2.65)
+ (xy 7.65 1.15)
+ (xy 5.85 1.15)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 1f399a80-a36e-4f0c-bb9c-f98e77ff4b3d))
+ (fp_poly
+ (pts
+ (xy 5.85 4.55)
+ (xy 7.65 4.55)
+ (xy 7.65 3.05)
+ (xy 5.85 3.05)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 147b0b9b-9f2a-46ec-956a-e59c9cf2f9b6))
+ (pad "1" smd rect (at -7.125 -3.8 180) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f09dcf85-ccfe-4628-a30c-d0d775858f26))
+ (pad "2" smd rect (at -7.125 -1.9 180) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cdc5049b-3434-45c5-8c14-6942a04d1490))
+ (pad "3" smd rect (at -7.125 0 180) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 071f895b-8d1c-4730-b81f-42c62a49e628))
+ (pad "4" smd rect (at -7.125 1.9 180) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0dc26672-ce2b-49c4-892f-f9bf5563311d))
+ (pad "5" smd rect (at -7.125 3.8 180) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f9953c73-871f-48a0-a49a-cbd51014d0ba))
+ (pad "6" smd rect (at -3.8 7.125 90) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 751e4709-b815-45d3-8ce6-d158db70a24e))
+ (pad "7" smd rect (at -1.9 7.125 90) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fcf3ccf5-0086-404b-93cb-950c27d51fe9))
+ (pad "8" smd rect (at 0 7.125 90) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 25c6c1b2-fe26-427d-82fd-49b2bfbf1573))
+ (pad "9" smd rect (at 1.9 7.125 90) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dd1d2d49-58ae-4a1f-a67e-f0e916014ce6))
+ (pad "10" smd rect (at 3.8 7.125 90) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0f434b80-6bef-4f90-ac80-0c1818463f7e))
+ (pad "11" smd rect (at 7.125 3.8) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9d4368b6-1314-486e-9a31-36cc78bdc1ce))
+ (pad "12" smd rect (at 7.125 1.9) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 57f08a33-bc14-4d6c-ab21-121a71ab4234))
+ (pad "13" smd rect (at 7.125 0) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 75753825-fdf7-4c47-bd4a-f6a9be76d527))
+ (pad "14" smd rect (at 7.125 -1.9) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6fd3b487-2198-4a35-bcf3-b5445c90ddc0))
+ (pad "15" smd rect (at 7.125 -3.8) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2b4143d6-77f3-4240-90a6-fd5f0a2a42ed))
+ (pad "16" smd rect (at 3.8 -7.125 270) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0a579776-b057-4ca0-b5fc-dc73c95108b6))
+ (pad "17" smd rect (at 1.9 -7.125 270) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f5a2200c-12fe-45fd-a1b4-e93c986a7eb6))
+ (pad "18" smd rect (at 0 -7.125 270) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1db6bba9-9108-418a-9c77-418acd6f34b3))
+ (pad "19" smd rect (at -1.9 -7.125 270) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1f959926-5ad1-4953-a296-734669609259))
+ (pad "20" smd rect (at -3.8 -7.125 270) (size 2.75 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1f4cbe41-b197-48bb-b440-f020cb7ef6f6))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TE_PUCK.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TE_PUCK.kicad_mod
new file mode 100644
index 0000000000..4135ff17e5
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TE_PUCK.kicad_mod
@@ -0,0 +1,29 @@
+(footprint "TE_PUCK" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at 0 -0.635) (layer "F.SilkS")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)))
+ (tstamp 416238ba-0a06-41b1-a2ac-656eb16c4cb4)
+ )
+ (fp_text value ">VALUE" (at 0 1.27) (layer "F.Fab")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)))
+ (tstamp 79b11ed4-57a2-46b5-8336-ad3ec42f7607)
+ )
+ (fp_arc (start -5.8 -5.5) (mid 0 -8.016135) (end 5.8 -5.499999)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 2a7637b3-e336-47cd-8271-053a4b74340a))
+ (fp_arc (start -2.9 7.4) (mid -7.213827 3.497048) (end -7.699999 -2.300001)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 8183c1b0-f097-48f8-9b07-6e12c1e0cef6))
+ (fp_arc (start 7.7 -2.3) (mid 7.260714 3.47581) (end 2.999999 7.399999)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 403ec465-0275-49f9-ba34-2f8d34bbf99b))
+ (fp_circle (center 0 0) (end 14 0)
+ (stroke (width 0.05) (type solid)) (fill none) (layer "F.CrtYd") (tstamp 38e16dd3-3d13-4905-b137-4f3d8f5ed5e0))
+ (fp_circle (center 0 0) (end 8 0)
+ (stroke (width 0.05) (type solid)) (fill none) (layer "F.Fab") (tstamp d2d1af31-4b5d-4f2b-b448-9f3b12ff324b))
+ (pad "1" smd rect (at -1.2 7.03) (size 2.4 2.4) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 35d7eb46-8440-47d4-8291-ee4b5f89c9ce))
+ (pad "2" smd rect (at -6.4432 -3.72 60) (size 2.5 2.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fd619c1d-5870-4176-93a2-0b866755742f))
+ (pad "3" smd rect (at 6.4432 -3.72 300) (size 2.5 2.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 33aeb0b5-7d53-487b-881a-1228b3b08c20))
+ (pad "S" smd rect (at 1.75 7.28) (size 1.4 1.74) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 48d1fda6-b500-4478-adea-64835749923a))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TITAN_X1_GPS.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TITAN_X1_GPS.kicad_mod
new file mode 100644
index 0000000000..d8b0c082d6
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/TITAN_X1_GPS.kicad_mod
@@ -0,0 +1,107 @@
+(footprint "TITAN_X1_GPS" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at -2.54 -1.27) (layer "F.SilkS")
+ (effects (font (size 0.6477 0.6477) (thickness 0.1143)) (justify left bottom))
+ (tstamp 96208de3-6b2a-4c49-97f2-a839b9fa6182)
+ )
+ (fp_text value ">VALUE" (at -2.54 0) (layer "F.Fab")
+ (effects (font (size 0.6477 0.6477) (thickness 0.1143)) (justify left bottom))
+ (tstamp c16278f6-3541-4475-b7c7-975101a759d5)
+ )
+ (fp_text user "1" (at -4.6 -2.9) (layer "F.Fab")
+ (effects (font (size 1.0795 1.0795) (thickness 0.1905)) (justify left bottom))
+ (tstamp 8c02e3e8-e883-42fd-a152-d4491322b025)
+ )
+ (fp_line (start -6.3 -6.2) (end -6.3 -3.6)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 17e44661-5b14-4458-a7b1-790ce7b3187c))
+ (fp_line (start -6.3 -6.2) (end -4.2 -6.2)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp c2950c44-d4ad-4ee5-98e0-3239c36373e6))
+ (fp_line (start -6.3 3.6) (end -6.3 6.2)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 11f67e07-023a-4c8c-bb1d-64c3d220975a))
+ (fp_line (start -6.3 6.2) (end -4.2 6.2)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 34296b85-2da4-4cac-988d-2ca250a00357))
+ (fp_line (start -0.6 -6.2) (end 0.6 -6.2)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 03129991-482a-467a-82bb-c2d8b2fd124e))
+ (fp_line (start -0.6 6.2) (end 0.6 6.2)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 81134bd4-91a0-49ce-8fc8-5065672a6a06))
+ (fp_line (start 4.191 6.223) (end 5.08 6.223)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 5c13a77d-97b9-4b04-b3bd-8bc395015549))
+ (fp_line (start 4.2 -6.2) (end 6.3 -6.2)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp cc0ff716-b82a-4683-a92a-3e3fadc3c8b6))
+ (fp_line (start 5.08 6.223) (end 6.223 5.08)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 4b56f0ac-e5a8-408c-8ab9-076a64e0adee))
+ (fp_line (start 6.223 5.08) (end 6.223 3.556)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp c88d31ef-e7be-49a5-a211-1b63bbd179b8))
+ (fp_line (start 6.3 -3.6) (end 6.3 -6.2)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 367194c9-77ed-422c-9226-1088bd5f1b16))
+ (fp_circle (center -7.031 -5.488) (end -6.8024 -5.488)
+ (stroke (width 0.4572) (type solid)) (fill none) (layer "F.SilkS") (tstamp 81bd47da-c8b7-4d0a-adb7-2929dc1effe4))
+ (fp_line (start -5 -5) (end 5 -5)
+ (stroke (width 0.0762) (type solid)) (layer "F.CrtYd") (tstamp 4038377e-1984-4244-8199-f14dc39b4d4f))
+ (fp_line (start -5 5) (end -5 -5)
+ (stroke (width 0.0762) (type solid)) (layer "F.CrtYd") (tstamp 3b9a9e99-d24b-4ab7-86c4-f1e720a8db35))
+ (fp_line (start 5 -5) (end 5 5)
+ (stroke (width 0.0762) (type solid)) (layer "F.CrtYd") (tstamp af80f8f4-0f4d-431c-b5bc-e4718b0ef810))
+ (fp_line (start 5 5) (end -5 5)
+ (stroke (width 0.0762) (type solid)) (layer "F.CrtYd") (tstamp 74da2674-9103-4330-9299-9948b3a6a4eb))
+ (fp_line (start -6.25 -6.25) (end -6.25 6.25)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 353600c5-0931-43e8-a345-58fec5e1c81d))
+ (fp_line (start -6.25 6.25) (end 6.25 6.25)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 300223b2-1df3-4b49-8c01-0fb1903f2800))
+ (fp_line (start 6.25 -6.25) (end -6.25 -6.25)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 06f19c6b-14bb-4578-bc19-008da14612fd))
+ (fp_line (start 6.25 6.25) (end 6.25 -6.25)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp c9a9c26b-7b6d-4deb-8fc5-41f539a8f577))
+ (fp_circle (center -4.8 -4.7) (end -4.576394 -4.7)
+ (stroke (width 0.0762) (type solid)) (fill none) (layer "F.Fab") (tstamp 308b6dfd-ead6-4778-9896-e257d529cc67))
+ (fp_circle (center -4.8 -4.7) (end -4.4 -4.7)
+ (stroke (width 0.0762) (type solid)) (fill none) (layer "F.Fab") (tstamp 84a1a425-3f77-465b-8f73-8c5e6993add2))
+ (pad "1" smd rect (at -6.25 -3) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7d932e5d-f1dd-445a-9272-bdff9abb762a))
+ (pad "2" smd rect (at -6.25 -1.8) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3dd57f47-9dd3-47a8-ac5a-cc9605d5c901))
+ (pad "3" smd rect (at -6.25 -0.6) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp db6998e7-dd4d-4106-af04-7408af29577b))
+ (pad "4" smd rect (at -6.25 0.6) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 86cbdd71-e5c5-4a41-9c61-1d0a922b183e))
+ (pad "5" smd rect (at -6.25 1.8) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8a42dcec-c956-41fb-ad75-553523743bab))
+ (pad "6" smd rect (at -6.25 3) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5e4cc9bd-fd7e-4f75-b064-a558ab701159))
+ (pad "7" smd rect (at -3.6 6.25 90) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 36f13165-5631-4961-80cb-c718d19d04b6))
+ (pad "8" smd rect (at -2.4 6.25 90) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7de8957e-ae7f-4e34-8144-d34c5dfbd369))
+ (pad "9" smd rect (at -1.2 6.25 90) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3b4c0c3a-77f3-4494-96ca-7f863c74d0f3))
+ (pad "10" smd rect (at 1.2 6.25 90) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7198f3f1-1479-4338-b889-b5fa381168c8))
+ (pad "11" smd rect (at 2.4 6.25 90) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp bcc2a6f9-3a08-46f1-8ea1-955bf89d3933))
+ (pad "12" smd rect (at 3.6 6.25 90) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp aa3903aa-71e1-42e5-988a-488b5ed0e598))
+ (pad "13" smd rect (at 6.25 3) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b2a90757-fc32-43b9-975b-ced6bf964609))
+ (pad "14" smd rect (at 6.25 1.8) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7d675e8e-4ed5-4309-b837-cd4e132f823e))
+ (pad "15" smd rect (at 6.25 0.6) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 47db4e3c-e55a-4ff1-80dd-7d47cac5b995))
+ (pad "16" smd rect (at 6.25 -0.6) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0837f1d7-c3d3-4987-8696-cd8b3b1cadbc))
+ (pad "17" smd rect (at 6.25 -1.8) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 65ef1694-a8a2-4d21-8960-2c672c804942))
+ (pad "18" smd rect (at 6.25 -3) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp edd9e39a-e645-4aa6-9efe-3109c3d522aa))
+ (pad "19" smd rect (at 3.6 -6.25 270) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1d344901-5af6-419d-8ea6-640879a4da2f))
+ (pad "20" smd rect (at 2.4 -6.25 270) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 191b6130-2dca-4523-8ed8-897b1d16d6e3))
+ (pad "21" smd rect (at 1.2 -6.25 270) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 39ccb99d-5d20-47e4-9007-a72bb7db926d))
+ (pad "22" smd rect (at -1.2 -6.25 270) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4f17a26a-8e08-4e1a-b261-337e0a618fbf))
+ (pad "23" smd rect (at -2.4 -6.25 270) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c3bd2d79-37da-4b24-bd34-b5cec48d5469))
+ (pad "24" smd rect (at -3.6 -6.25 270) (size 2 0.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fd06ddc5-5da8-4e8f-9a83-d21809508c2b))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZED_F9R.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZED_F9R.kicad_mod
new file mode 100644
index 0000000000..4d79b6edae
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZED_F9R.kicad_mod
@@ -0,0 +1,251 @@
+(footprint "UBLOX_ZED_F9R" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "u-blox ZED-F9K ADR
\nGPS Unit with Real Time Kinematics (RTK) and internal IMU = Automotive Dead Reckoning
\n\nMechanical Specification \n
\n\n- Physical Module: 22mm x 17mm
\n- Peripheral Pad Size: .8mm x 1.5mm
\n- Peripheral Pad Pitch: 1.1mm
\n- Total Peripheral Pins: 54
\n- Internal Pad Size: 1.1mm
\n- Internal Pad Pitch: 2.1mm
\n- Total Internal Pins: 48 (All Ground)
\n
")
+ (fp_text reference ">NAME" (at -2.112 -9.38) (layer "F.SilkS")
+ (effects (font (size 0.70104 0.70104) (thickness 0.06096)) (justify left bottom))
+ (tstamp 94f17c01-fe6e-4660-b178-96c05ef49e38)
+ )
+ (fp_text value ">VALUE" (at -2.112 10.62) (layer "F.Fab")
+ (effects (font (size 0.70104 0.70104) (thickness 0.06096)) (justify left bottom))
+ (tstamp 564ab8dd-b699-49f7-9262-7336b334ff54)
+ )
+ (fp_line (start -10.962 -8.382) (end -7.874 -8.382)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 483dc695-01a3-42ef-8de8-875f19408cb3))
+ (fp_line (start -10.962 -6.858) (end -10.962 -8.382)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 5b8cdcf6-f103-40b8-bea0-208ec0d1105d))
+ (fp_line (start -10.962 8.636) (end -10.962 7.366)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 40286e92-4b45-4cd1-bf4e-2e847b0f4918))
+ (fp_line (start -10.962 8.636) (end -7.874 8.636)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 73c05c6d-a0e9-47f1-85ae-17a34ad1e07a))
+ (fp_line (start 7.874 8.636) (end 11.038 8.636)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 7fd2d321-8d20-4544-b06c-3458f8f8ba31))
+ (fp_line (start 8.128 -8.382) (end 11.038 -8.382)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp bc21dfa9-f45f-452c-8e91-66b4a2c4b788))
+ (fp_line (start 11.038 -8.382) (end 11.038 -7.112)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 46ead595-4d9e-4ebb-934d-a4c098f9e88d))
+ (fp_line (start 11.038 8.636) (end 11.038 7.366)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp f9d3d193-985a-450d-bdee-8a0703258e3a))
+ (fp_circle (center -8.362 9.37) (end -8.112 9.37)
+ (stroke (width 0.5) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 9df0119c-4557-4984-b045-1bd4a6a4a8de))
+ (fp_line (start -10.962 -8.38) (end -10.962 8.62)
+ (stroke (width 0.2032) (type solid)) (layer "F.Fab") (tstamp 54cac1e9-a9f2-411d-836a-1379246c4a0a))
+ (fp_line (start -10.962 8.62) (end 11.038 8.62)
+ (stroke (width 0.2032) (type solid)) (layer "F.Fab") (tstamp f1bb8684-0679-46da-a26e-f483a4a05da9))
+ (fp_line (start 11.038 -8.38) (end -10.962 -8.38)
+ (stroke (width 0.2032) (type solid)) (layer "F.Fab") (tstamp ab89dd38-66ac-44a2-bf79-861e0f1901bc))
+ (fp_line (start 11.038 8.62) (end 11.038 -8.38)
+ (stroke (width 0.2032) (type solid)) (layer "F.Fab") (tstamp 36698f68-eaff-497d-ba53-04b554ab7997))
+ (fp_poly
+ (pts
+ (xy -8.382 8.382)
+ (xy -7.874 8.382)
+ (xy -7.874 7.62)
+ (xy -8.382 7.62)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp c9c6db2a-04b5-4296-b6d0-0feb3c472575))
+ (pad "G1" smd rect (at -7.312 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 67f785bb-8463-4890-8227-11cd08b62d50))
+ (pad "G2" smd rect (at -5.212 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a3d64781-6cc1-4c51-b3ee-55eb5417bcd3))
+ (pad "G3" smd rect (at -3.112 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a2d37c99-0959-48fb-a80b-75284a2ccc88))
+ (pad "G4" smd rect (at -1.012 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5f5e808a-d1b5-48bd-a06a-92787693e279))
+ (pad "G5" smd rect (at 1.088 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp caf966f7-bf34-4f1d-bd5a-a2013b314499))
+ (pad "G6" smd rect (at 3.188 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 541460ac-480d-47c8-b472-3920ddf3957f))
+ (pad "G7" smd rect (at 5.288 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6b24e4bb-693a-436c-b1bd-a24ab448e12f))
+ (pad "G8" smd rect (at 7.388 5.37) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 478e6be6-cc91-49c1-b129-32c4746251ab))
+ (pad "G9" smd rect (at 7.388 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7643953d-b403-4ade-9bba-c04fc0de59fd))
+ (pad "G10" smd rect (at 5.288 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2603d189-9954-4656-8531-46c1703ebb44))
+ (pad "G11" smd rect (at 3.188 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 37f27c93-d80f-46eb-a0e1-193146144dff))
+ (pad "G12" smd rect (at 1.088 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4e43402c-416d-4d97-bc37-63166c41f2b3))
+ (pad "G13" smd rect (at -1.012 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fae0108e-a604-48b2-890c-66292b1cc94c))
+ (pad "G14" smd rect (at -3.112 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f1a8d01e-76f9-4234-ba73-cfef0ad2534e))
+ (pad "G15" smd rect (at -5.212 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3695dd52-2f32-43a6-b2f9-184e00634696))
+ (pad "G16" smd rect (at -7.312 3.27) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7031af0a-4109-4b78-ad4c-e98fad7e1754))
+ (pad "G17" smd rect (at -7.312 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0d2e0c11-b3ae-43e3-81b9-a6842d1dcc66))
+ (pad "G18" smd rect (at -5.212 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 698158e1-bfcf-4bdc-a7fd-ab837252b625))
+ (pad "G19" smd rect (at -3.112 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e472ef62-71c5-477c-b6b5-6a079f9d7a40))
+ (pad "G20" smd rect (at -1.012 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c98cbf5a-6471-4436-9998-7e6d791bf475))
+ (pad "G21" smd rect (at 1.088 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5df18602-fda2-439a-8d60-f0c0d828974c))
+ (pad "G22" smd rect (at 3.188 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 63f45373-9be6-46e0-a1fd-8eb35157b0b3))
+ (pad "G23" smd rect (at 5.288 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c96cb4e7-01ba-460c-b2a7-2e638a858a4f))
+ (pad "G24" smd rect (at 7.388 1.17) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9f0d1527-34b7-4997-9616-0aec08e5cc1b))
+ (pad "G25" smd rect (at 7.388 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 58cbc600-5265-4d8c-827c-4b405be12ac7))
+ (pad "G26" smd rect (at 5.288 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 703b883f-72f5-40b1-adbc-cdcfb53bfea5))
+ (pad "G27" smd rect (at 3.188 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 16436628-6ca8-4d6b-9cb8-ca6af2d3714a))
+ (pad "G28" smd rect (at 1.088 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6f2e4722-09ee-44ee-a679-fd2bcb6a86d1))
+ (pad "G29" smd rect (at -1.012 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a70bd170-8cc4-46da-91bf-1a2569d868e6))
+ (pad "G30" smd rect (at -3.112 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 201d48b0-473b-4d24-b049-ef8a444e1f4d))
+ (pad "G31" smd rect (at -5.212 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3002baae-1617-4f42-bae7-2e5ff0f1568b))
+ (pad "G32" smd rect (at -7.312 -0.93) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b0777acc-9d40-43a8-b71c-f019d5bb1124))
+ (pad "G33" smd rect (at -7.312 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c5e7e549-de36-4424-b2dc-3da775ddf3dc))
+ (pad "G34" smd rect (at -5.212 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp db618386-dc3c-42dc-8a70-00985868271c))
+ (pad "G35" smd rect (at -3.112 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2690092a-21e1-4350-a582-a02169441841))
+ (pad "G36" smd rect (at -1.012 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 026792d4-0326-4941-9a8d-6196701dc3a0))
+ (pad "G37" smd rect (at 1.088 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0a0e3ea8-a83e-42ea-b376-8e99b7fc0ca6))
+ (pad "G38" smd rect (at 3.188 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d3efd584-d4b2-43ba-96ed-81100388c317))
+ (pad "G39" smd rect (at 5.288 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 704936a5-94a8-4c04-9038-b08ba0bd4ff7))
+ (pad "G40" smd rect (at 7.388 -3.03) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2e47991e-db13-4c31-81ea-fa17d0c73f80))
+ (pad "G41" smd rect (at 7.388 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d459a67a-3b07-4e3d-b66b-e374c6e29659))
+ (pad "G42" smd rect (at 5.288 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 77c20c53-b612-40e6-8c5f-3e77354bfd91))
+ (pad "G43" smd rect (at 3.188 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c9abc871-a085-4bdf-a41a-8fffc5864aff))
+ (pad "G44" smd rect (at 1.088 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ccc4b80a-1d64-408e-b7f0-d55d76aa5895))
+ (pad "G45" smd rect (at -1.012 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ba2aed34-27d0-4b82-af7b-0bbc6549d553))
+ (pad "G46" smd rect (at -3.112 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 32844663-5686-4e8f-a780-c5c5837520ae))
+ (pad "G47" smd rect (at -5.212 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6bf40750-9a66-41b4-9b83-092751c75d61))
+ (pad "G48" smd rect (at -7.312 -5.13) (size 1.1 1.1) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8faf1167-5caa-416c-ac49-15baf634c133))
+ (pad "P1" smd rect (at -7.112 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5a83a738-6279-4e3c-bec0-c66d2be5c64f))
+ (pad "P2" smd rect (at -6.012 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 488fe14c-9866-4b7a-9c52-c9f9e6d9d718))
+ (pad "P3" smd rect (at -4.912 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dadac398-becf-446d-8234-ba97db11d4e8))
+ (pad "P4" smd rect (at -3.812 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 810ef164-f8f4-4b9b-94fc-c10a760fe7cb))
+ (pad "P5" smd rect (at -2.712 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 18ca0b82-6c05-4337-90bd-8d164dd17431))
+ (pad "P6" smd rect (at -1.612 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 83533ea4-5616-45c9-9db7-738c4d72ce6c))
+ (pad "P7" smd rect (at -0.512 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a5ceca79-ec50-4dab-b21a-50d87e5f5c69))
+ (pad "P8" smd rect (at 0.588 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4d0dd1b5-b20e-43dd-b0d4-eae83e474736))
+ (pad "P9" smd rect (at 1.688 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 87dc746e-2943-4d79-b15d-5105ae9d954d))
+ (pad "P10" smd rect (at 2.788 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fa9bc232-a543-48f4-a2da-e18a2ac2d5b7))
+ (pad "P11" smd rect (at 3.888 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a3127a45-7a2d-42a2-9658-eb49f6e7d536))
+ (pad "P12" smd rect (at 4.988 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9cb0f258-2d2d-42ee-85c1-4cc32be4d665))
+ (pad "P13" smd rect (at 6.088 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ecc1844f-3e68-4819-b93a-6558e8e38d7d))
+ (pad "P14" smd rect (at 7.188 7.62) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4706ca72-cc45-4f8d-82fa-abcc4df17fde))
+ (pad "P15" smd rect (at 9.988 6.77 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1d359da5-ef08-4909-ba04-10ff9cdae552))
+ (pad "P16" smd rect (at 9.988 5.67 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cefa4607-6fc0-420d-b74f-5070d510a1df))
+ (pad "P17" smd rect (at 9.988 4.57 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 732520a5-03d6-4535-9509-49557e4fff03))
+ (pad "P18" smd rect (at 9.988 3.47 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 67b80122-4bb5-4ee1-9785-357b593ced7e))
+ (pad "P19" smd rect (at 9.988 2.37 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 384c44a5-ec21-422f-96e3-1834a440aa61))
+ (pad "P20" smd rect (at 9.988 1.27 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9b0b15fc-c03b-4b3a-bbfa-0b2e3cc98e83))
+ (pad "P21" smd rect (at 9.988 0.17 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a7a1901a-1406-41db-830d-3ef4970ed3b7))
+ (pad "P22" smd rect (at 9.988 -0.93 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 984d38b0-d559-4c74-bdf9-7bd901989831))
+ (pad "P23" smd rect (at 9.988 -2.03 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 79e64bb9-bc7f-4fea-9368-2166f55a6cda))
+ (pad "P24" smd rect (at 9.988 -3.13 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4a47bde0-1c96-471f-9cb8-73060d47ba17))
+ (pad "P25" smd rect (at 9.988 -4.23 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 97b2f253-5110-47e2-b7fa-5dea04fd1f7d))
+ (pad "P26" smd rect (at 9.988 -5.33 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4d23dbf8-6d4e-4a40-91d9-09a618ccf875))
+ (pad "P27" smd rect (at 9.988 -6.43 90) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 076b6183-afad-4656-a4c5-84af038ca7c1))
+ (pad "P28" smd rect (at 7.188 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8e3af63c-d560-4720-93b4-8842e9bf7fef))
+ (pad "P29" smd rect (at 6.088 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f94126af-e49c-458e-be12-94377023621b))
+ (pad "P30" smd rect (at 4.988 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7d26b775-c818-4bc7-a591-a2868916f784))
+ (pad "P31" smd rect (at 3.888 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2f156eb1-2396-49f0-a159-7743b53eac7f))
+ (pad "P32" smd rect (at 2.788 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 784939c0-c410-43e5-970c-1ebc7e53759f))
+ (pad "P33" smd rect (at 1.688 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 00a56590-d05b-4d0d-b7b1-e5ce0d15738d))
+ (pad "P34" smd rect (at 0.588 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f6431ee6-d142-438d-860b-bb7c35c68834))
+ (pad "P35" smd rect (at -0.512 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c33995b1-93c6-4e3c-bcd9-e3f497fe8ef6))
+ (pad "P36" smd rect (at -1.612 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a085f7a6-5bc0-4c65-b712-d84ca72c5c71))
+ (pad "P37" smd rect (at -2.712 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp be2dd808-04df-4dc1-a91a-a17f42cab272))
+ (pad "P38" smd rect (at -3.812 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d5ef1446-279e-4a93-a041-e4896151e127))
+ (pad "P39" smd rect (at -4.912 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b98725e3-f0ca-4f7b-9e78-9c682a00a327))
+ (pad "P40" smd rect (at -6.012 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 54f29ba5-24cf-414f-8b53-db9aa77967ed))
+ (pad "P41" smd rect (at -7.112 -7.33) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 30f7330b-b820-4ba8-ae2d-719bdef7a767))
+ (pad "P42" smd rect (at -9.912 -6.43 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 783c653e-5a05-405d-90cc-c5426300790f))
+ (pad "P43" smd rect (at -9.912 -5.33 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 749317a7-05b7-4697-b64b-494351ff4605))
+ (pad "P44" smd rect (at -9.912 -4.23 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d28e358b-9223-46ab-9c0a-bb214cfeee2e))
+ (pad "P45" smd rect (at -9.912 -3.13 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 987fd53e-7a5a-452a-b329-69f8e90dd6e4))
+ (pad "P46" smd rect (at -9.912 -2.03 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 168e2d39-5a1c-4159-80f1-6b7e0be68909))
+ (pad "P47" smd rect (at -9.912 -0.93 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3a2c96c3-1db8-4637-b14d-77a2238b3887))
+ (pad "P48" smd rect (at -9.912 0.17 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 52162f4f-4efe-4b79-b0be-de0f58a98a3c))
+ (pad "P49" smd rect (at -9.912 1.27 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 548119b5-f92c-41ec-8f6a-3f7ad98c5722))
+ (pad "P50" smd rect (at -9.912 2.37 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3aad7c48-afc3-49ea-85bb-cb02519ac56e))
+ (pad "P51" smd rect (at -9.912 3.47 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e169d986-9a0c-4bcd-85ed-43317cd7988c))
+ (pad "P52" smd rect (at -9.912 4.57 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0805baf4-eae8-4d4c-9ac0-6ff4d64a7a14))
+ (pad "P53" smd rect (at -9.912 5.67 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 31ac3a88-157a-46ac-82b2-94f2de7e441c))
+ (pad "P54" smd rect (at -9.912 6.77 270) (size 0.8 1.5) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0030c45c-cbb1-42f2-bf36-75df0d947575))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZOE_M8-0-10.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZOE_M8-0-10.kicad_mod
new file mode 100644
index 0000000000..d6b17ab553
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/UBLOX_ZOE_M8-0-10.kicad_mod
@@ -0,0 +1,242 @@
+(footprint "UBLOX_ZOE_M8-0-10" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "")
+ (fp_text reference ">NAME" (at -2.246 -3.135) (layer "F.SilkS")
+ (effects (font (size 0.92 0.92) (thickness 0.08)) (justify left bottom))
+ (tstamp bd6d1eb1-50c7-4d67-93f2-2832ffb3b441)
+ )
+ (fp_text value ">VALUE" (at -2.373 3.865) (layer "F.Fab")
+ (effects (font (size 0.92 0.92) (thickness 0.08)) (justify left bottom))
+ (tstamp 03093573-decf-46ad-aec2-bb3bd45dad9e)
+ )
+ (fp_line (start -2.346 1.746) (end -2.346 -1.754)
+ (stroke (width 0.1) (type solid)) (layer "F.SilkS") (tstamp 9e9fa056-b802-47d4-8399-2843273c48fe))
+ (fp_line (start -1.746 -2.354) (end 1.754 -2.354)
+ (stroke (width 0.1) (type solid)) (layer "F.SilkS") (tstamp 8f777f6f-62e0-4061-8864-9adf06b2a93d))
+ (fp_line (start -1.746 2.346) (end 1.754 2.346)
+ (stroke (width 0.1) (type solid)) (layer "F.SilkS") (tstamp 38f1eeb5-eadf-47a3-a9e4-232f530afdd7))
+ (fp_line (start 2.354 1.746) (end 2.354 -1.754)
+ (stroke (width 0.1) (type solid)) (layer "F.SilkS") (tstamp b2b5960c-f61d-4c0e-bab4-182f1748ba27))
+ (fp_circle (center -2.738 -2.754) (end -2.611 -2.754)
+ (stroke (width 0.254) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 97fca20f-78c1-4b31-b59b-a8f66aa56a1f))
+ (fp_circle (center -1.9982 -1.5039) (end -1.9232 -1.5039)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp f12d8f73-46c8-4f50-b231-60590c93ce8e))
+ (fp_circle (center -1.9982 -1.0039) (end -1.9232 -1.0039)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 3e0280b9-fdff-4306-8fc0-52bfbd1f38c1))
+ (fp_circle (center -1.9982 -0.5039) (end -1.9232 -0.5039)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp e7fa3c0b-fbac-4a77-b0c0-8564e32ba987))
+ (fp_circle (center -1.9982 -0.0039) (end -1.9232 -0.0039)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 905f478d-bd83-41f3-a17e-214eb737c241))
+ (fp_circle (center -1.9982 0.4961) (end -1.9232 0.4961)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 7cebf2d5-9efc-483b-8c5f-de6c5bf5cef5))
+ (fp_circle (center -1.9982 0.9961) (end -1.9232 0.9961)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 28c25439-fe01-4751-8191-553f65cbc575))
+ (fp_circle (center -1.9982 1.4961) (end -1.9232 1.4961)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp a0b0cb4e-25d8-4e7e-a936-30c5d8654ac1))
+ (fp_circle (center -1.9965 -2.0059) (end -1.9215 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 1c389fc0-2a34-463c-81ce-3cc0d4842d1b))
+ (fp_circle (center -1.9965 1.9941) (end -1.9215 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp e679ff08-a4b3-411d-975a-df29b027f7ae))
+ (fp_circle (center -1.4965 -2.0059) (end -1.4215 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 8df66b9b-a5ad-4f24-a0a2-a219dc1f974b))
+ (fp_circle (center -1.4965 1.9941) (end -1.4215 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 4c869f33-8b3d-47ed-8c82-9220de8976ed))
+ (fp_circle (center -0.9983 -0.0042) (end -0.9233 -0.0042)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp f0090f28-8dd2-4140-99b4-18bfa3e72f17))
+ (fp_circle (center -0.9973 -0.5051) (end -0.9223 -0.5051)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp b1c55fce-32cc-4ba1-a927-c10289e71de1))
+ (fp_circle (center -0.9973 0.9973) (end -0.9223 0.9973)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 0ce93059-017a-41aa-a81e-aa309b5db8d8))
+ (fp_circle (center -0.9965 -2.0059) (end -0.9215 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 7e9097c8-a249-4500-b8b9-cd926afbee21))
+ (fp_circle (center -0.9965 1.9941) (end -0.9215 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp d1d44f41-7286-4244-840c-579b0f9d3449))
+ (fp_circle (center -0.9952 0.498) (end -0.9202 0.498)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 7cd4ca4d-5ced-4b6b-aa9b-64d9616e8eba))
+ (fp_circle (center -0.9948 -1.0038) (end -0.9198 -1.0038)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp cfc7e297-4067-4cc3-9321-f9a47c1622f7))
+ (fp_circle (center -0.499 -0.5035) (end -0.424 -0.5035)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 5f23e158-9053-43e7-8632-35c56d7d135b))
+ (fp_circle (center -0.4965 -2.0059) (end -0.4215 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 979b6e19-f1e7-4697-bfcd-504e8464fae8))
+ (fp_circle (center -0.4965 1.9941) (end -0.4215 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 3a47f31e-3741-4529-a5ee-fbe050bace30))
+ (fp_circle (center -0.4964 0.9972) (end -0.4214 0.9972)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp a9b66ef0-e08c-47ca-9a56-013f80b9560f))
+ (fp_circle (center -0.4951 0.4989) (end -0.4201 0.4989)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 320c2a0c-b909-4c15-bc97-2ae844a3751d))
+ (fp_circle (center -0.4948 -1.0038) (end -0.4198 -1.0038)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp e77ee2ba-cdf8-49b7-afe8-b9f4f7f824fa))
+ (fp_circle (center 0.0027 0.9972) (end 0.0777 0.9972)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 2ea395ba-aaa0-4dd7-81c0-bd8286a22aa2))
+ (fp_circle (center 0.0035 -2.0059) (end 0.0785 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp d21c6cab-0756-4683-b1fa-6354c859bda4))
+ (fp_circle (center 0.0035 1.9941) (end 0.0785 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 67eb6b91-a579-40e1-af01-92d593cd3bfc))
+ (fp_circle (center 0.0052 -1.0038) (end 0.0802 -1.0038)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp a164c583-3619-4559-8393-275bc8e75a03))
+ (fp_circle (center 0.501 -0.5051) (end 0.576 -0.5051)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 48ffc2ed-23e9-45db-92a9-084fd59143b6))
+ (fp_circle (center 0.5024 0.9966) (end 0.5774 0.9966)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 2844eca7-f80f-4ea2-9bb9-f86f5f11761c))
+ (fp_circle (center 0.5035 -2.0059) (end 0.5785 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 7468830f-8cf3-44e6-839f-5addd7ae6f88))
+ (fp_circle (center 0.5035 1.9941) (end 0.5785 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp b1978603-40e6-4961-9cae-576da21ecc84))
+ (fp_circle (center 0.5039 0.4989) (end 0.5789 0.4989)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 91831a6e-a956-4f91-acf7-b6034f8cce67))
+ (fp_circle (center 0.5052 -1.0038) (end 0.5802 -1.0038)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp e215cdaa-3c68-40d4-b7ef-3592bf203ef8))
+ (fp_circle (center 1.0018 -0.0029) (end 1.0768 -0.0029)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp a770c212-c441-4b01-9ad1-82dd0f1fe739))
+ (fp_circle (center 1.002 0.4999) (end 1.077 0.4999)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 2a15dfe6-898b-463c-a5b3-6787e7a2785f))
+ (fp_circle (center 1.0032 0.9982) (end 1.0782 0.9982)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp aa27bca1-4090-453d-a3eb-3be8d52702e8))
+ (fp_circle (center 1.0035 -2.0059) (end 1.0785 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 82c86b94-1ae3-434e-b123-2e6d01b1ffe9))
+ (fp_circle (center 1.0035 1.9941) (end 1.0785 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 79a3bace-b4a4-4f27-85ad-cb16fd4105e6))
+ (fp_circle (center 1.0052 -1.0038) (end 1.0802 -1.0038)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 7a00be4d-c473-49ca-87bb-213fa05ca758))
+ (fp_circle (center 1.5035 -2.0059) (end 1.5785 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 6b1ec393-156b-42fb-8c5f-3e38e809611c))
+ (fp_circle (center 1.5035 1.9941) (end 1.5785 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 4280181c-6ad9-4b7b-a8b7-d442a1ac11ee))
+ (fp_circle (center 2.0035 -2.0059) (end 2.0785 -2.0059)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 466ddb6b-5576-4f67-b910-13faf50da818))
+ (fp_circle (center 2.0035 -1.5022) (end 2.0785 -1.5022)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp a507a3b4-3e6b-414a-9717-589abab4f9c5))
+ (fp_circle (center 2.0035 -1.0022) (end 2.0785 -1.0022)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp db80d178-2b67-4558-bb91-a92efee514c9))
+ (fp_circle (center 2.0035 -0.5022) (end 2.0785 -0.5022)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 7ac928af-009e-4b28-8767-4db0af710353))
+ (fp_circle (center 2.0035 -0.0022) (end 2.0785 -0.0022)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 2d20d4ec-7245-4cca-8bbe-b7338ce77276))
+ (fp_circle (center 2.0035 0.4978) (end 2.0785 0.4978)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 23f7cf04-acfb-4a0a-aafa-c3e35ab8636a))
+ (fp_circle (center 2.0035 0.9978) (end 2.0785 0.9978)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 631b44c9-b41a-4d2f-98ea-1986403c1945))
+ (fp_circle (center 2.0035 1.4978) (end 2.0785 1.4978)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp fd46bf60-92fd-4ebe-a151-ada9b9a1ea03))
+ (fp_circle (center 2.0035 1.9941) (end 2.0785 1.9941)
+ (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp 95b7bd79-eeb5-496d-9c82-e6e3c5641e6b))
+ (fp_line (start -2.413 -2.413) (end -2.413 2.413)
+ (stroke (width 0.0508) (type solid)) (layer "F.CrtYd") (tstamp 61b708f7-6983-4447-81cc-7c61c568dd33))
+ (fp_line (start -2.413 2.413) (end 2.413 2.413)
+ (stroke (width 0.0508) (type solid)) (layer "F.CrtYd") (tstamp 48c22a39-847b-424f-987c-4f2f81d56b31))
+ (fp_line (start 2.413 -2.413) (end -2.413 -2.413)
+ (stroke (width 0.0508) (type solid)) (layer "F.CrtYd") (tstamp 69ae3fea-4667-4aae-ad3c-06fc1d82c243))
+ (fp_line (start 2.413 2.413) (end 2.413 -2.413)
+ (stroke (width 0.0508) (type solid)) (layer "F.CrtYd") (tstamp 1071c9e7-5a26-4b73-a92d-e0937185449b))
+ (fp_line (start -2.246 -2.254) (end -2.246 2.246)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 34774841-353f-4e20-a534-20cf6ee9152d))
+ (fp_line (start -2.246 2.246) (end 2.254 2.246)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 92fe6754-09bb-4648-b7af-21ae65cbc765))
+ (fp_line (start 2.254 -2.254) (end -2.246 -2.254)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp ee2bf275-6be2-4061-aeae-3aa6bd5241a5))
+ (fp_line (start 2.254 2.246) (end 2.254 -2.254)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp daf2e0cc-6214-4a8b-b4de-1a9bc7a99d3a))
+ (pad "1" smd roundrect (at -1.996 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 04530c84-5084-4888-a222-3dcb163dd486))
+ (pad "2" smd roundrect (at -1.496 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 75894c5f-cd4e-432d-9a5a-c40495a3bae5))
+ (pad "3" smd roundrect (at -0.996 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dfb4bb17-b338-4840-8949-b8a7eef77fb7))
+ (pad "4" smd roundrect (at -0.496 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d2b2eaa7-0eb1-415e-aa29-651e69f9a839))
+ (pad "5" smd roundrect (at 0.004 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8fbb7c28-6e23-4d81-a045-c0a95063c270))
+ (pad "6" smd roundrect (at 0.504 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f9989f6b-51ad-47b9-b2dd-461d218594fd))
+ (pad "7" smd roundrect (at 1.004 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 53716e90-8754-4909-a8b9-f752100e35a4))
+ (pad "8" smd roundrect (at 1.504 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 50d1b54e-25d0-44e2-b6bf-032969737b18))
+ (pad "9" smd roundrect (at 2.004 -2.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 221fd878-cfca-4bda-8e3f-fb595f61bf37))
+ (pad "10" smd roundrect (at 2.004 -1.504) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 15cd6557-4c23-41bf-8ed2-d73d57e312ad))
+ (pad "11" smd roundrect (at 2.004 -1.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1eb06b59-4506-4410-9330-f1d75b75b303))
+ (pad "12" smd roundrect (at 2.004 -0.504) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 979b8be4-6fbe-4ec2-a58e-664258c441ca))
+ (pad "13" smd roundrect (at 2.004 -0.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dfeb73f1-7b40-408a-ad87-8b16384303a7))
+ (pad "14" smd roundrect (at 2.004 0.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2f7766c4-f576-4981-bbb8-af11992942fa))
+ (pad "15" smd roundrect (at 2.004 0.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp beeb7c06-9740-47a3-9624-730610b8ad6f))
+ (pad "16" smd roundrect (at 2.004 1.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4c8db64c-dea3-40d4-b1ea-e18d66f1cade))
+ (pad "17" smd roundrect (at 2.004 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp aa9788f4-8620-4032-88f6-d9c14f2c444d))
+ (pad "18" smd roundrect (at 1.504 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 05f4833f-4e65-4f06-be67-3b44a43f8e37))
+ (pad "19" smd roundrect (at 1.004 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 13f7a5a7-9c87-4d0c-81ca-19c76b8ebcb4))
+ (pad "20" smd roundrect (at 0.504 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ce3f51d1-d73c-41fa-8506-9bec89b9325d))
+ (pad "21" smd roundrect (at 0.004 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 94fcd890-45cf-4e00-b5e6-f173769fa521))
+ (pad "22" smd roundrect (at -0.496 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 094263c1-fac3-4f23-b52c-6754a5f2728c))
+ (pad "23" smd roundrect (at -0.996 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dacb94f8-6b98-478a-a44e-7f0f48f86b1c))
+ (pad "24" smd roundrect (at -1.496 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d0019561-77fd-4a99-be24-e2fd7cddaf27))
+ (pad "25" smd roundrect (at -1.996 1.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9836f22a-0bf3-4eff-bf78-71fff11c9d6a))
+ (pad "26" smd roundrect (at -1.996 1.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b35005c7-649c-4275-a83f-c3c524d4de47))
+ (pad "27" smd roundrect (at -1.996 0.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 10aa565c-4ea1-458a-a4fb-a1a2e14dd00c))
+ (pad "28" smd roundrect (at -1.996 0.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 89a3b699-9bf0-43ee-b9fc-3d855c3e0b3d))
+ (pad "29" smd roundrect (at -1.996 -0.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fb05976d-c7d5-4352-b0ad-edfb7964c10e))
+ (pad "30" smd roundrect (at -1.996 -0.504) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3e3fabdd-4fea-45f8-b84b-c11541e8dca2))
+ (pad "31" smd roundrect (at -1.996 -1.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c6a8150f-603a-464b-9c40-c5e94b270adf))
+ (pad "32" smd roundrect (at -1.996 -1.504) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e841937e-567f-4afb-ad39-e544c86fd2d1))
+ (pad "33" smd roundrect (at -0.996 -1.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 52c718e7-c869-42b1-987d-5646118ebdfd))
+ (pad "34" smd roundrect (at -0.496 -1.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 70f2db97-bc3b-4cfc-80cb-a9f0db2f5bd7))
+ (pad "35" smd roundrect (at 0.004 -1.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b50dfc0c-cd7a-4b28-a7ce-660cd240d28d))
+ (pad "36" smd roundrect (at 0.504 -1.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5f92d99f-838c-4e68-ba51-49c2e12f01f9))
+ (pad "37" smd roundrect (at 1.004 -1.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cc9a88a3-9c5a-4447-90d6-d539e9157131))
+ (pad "38" smd roundrect (at 1.004 -0.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c76a095e-27aa-4cc6-8f16-646f86169ade))
+ (pad "39" smd roundrect (at 1.004 0.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dcbaa165-907e-4a33-91f6-bd07aca83723))
+ (pad "40" smd roundrect (at 1.004 0.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e2b7b70c-9f46-4259-be50-7d369c5f3c26))
+ (pad "41" smd roundrect (at 0.504 0.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 15a97914-4b6d-40b0-8569-5afa05936256))
+ (pad "42" smd roundrect (at 0.004 0.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 51ab7a9c-eb4e-4e6f-b659-353d27cf4f0e))
+ (pad "43" smd roundrect (at -0.496 0.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 034539bf-c18b-48b2-a302-fabb597c2294))
+ (pad "44" smd roundrect (at -0.996 0.996) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2ec58084-f859-4408-8e83-52cd4ba58762))
+ (pad "45" smd roundrect (at -0.996 0.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c19ca932-b02a-4041-b485-789ca7c73135))
+ (pad "46" smd roundrect (at -0.996 -0.004) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f9d7fe0f-c02e-4e13-acd1-a0d135d5b1f7))
+ (pad "47" smd roundrect (at -0.996 -0.504) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 16a5ba73-a986-435b-9939-4749c72a70ae))
+ (pad "48" smd roundrect (at -0.496 -0.504) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3adf7588-568b-4604-a3ee-ba0673e16e25))
+ (pad "49" smd roundrect (at 0.504 -0.504) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 33472f98-8b16-4dea-8cdd-9c9cb9ed4747))
+ (pad "50" smd roundrect (at 0.504 0.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 66ce5cd7-e363-46c1-8d7d-59eb31aad6aa))
+ (pad "51" smd roundrect (at -0.496 0.496) (size 0.25 0.25) (layers "F.Cu" "F.Paste") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5da5c80f-c4db-474a-a8bf-3d87d39d5233))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/VENUS638FLPX.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/VENUS638FLPX.kicad_mod
new file mode 100644
index 0000000000..60d4493273
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/VENUS638FLPX.kicad_mod
@@ -0,0 +1,176 @@
+(footprint "VENUS638FLPX" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (descr "Skytraq Venus638FLPX GPS Receiver - 44-pin 10 x 10 mm QFN
\nVenus638FLPx is a high performance, low cost, single chip GPS receiver.
\nDatasheet
\nSparkFun Product Link
")
+ (fp_text reference ">NAME" (at 0 -5.588) (layer "F.SilkS")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify bottom))
+ (tstamp 86d1b1c0-e7b7-4906-ba7b-ac91e2e3f576)
+ )
+ (fp_text value ">VALUE" (at 0 5.588) (layer "F.Fab")
+ (effects (font (size 0.48768 0.48768) (thickness 0.12192)) (justify top))
+ (tstamp 33449ea0-049c-4537-a8f5-27073b563ca2)
+ )
+ (fp_line (start -5.1 -5.1) (end -4.5 -5.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp d73913bf-bb88-4c78-b0d9-e6e4f9da346c))
+ (fp_line (start -5.1 -4.5) (end -5.1 -5.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 71eb5e3b-984f-43d2-9358-c318b5995654))
+ (fp_line (start -5.1 4.5) (end -5.1 5.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 30458b29-15d4-4514-9c23-2cc014eda425))
+ (fp_line (start -5.1 5.1) (end -4.5 5.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp d1df9e05-3a55-4334-82a3-e858060cb1df))
+ (fp_line (start 5.1 -5.1) (end 4.5 -5.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp e2cdcaf1-34cc-449a-b222-730f7094258d))
+ (fp_line (start 5.1 -4.5) (end 5.1 -5.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 5e85a581-f1f5-43f0-8942-b877e3e0481b))
+ (fp_line (start 5.1 5.1) (end 4.5 5.1)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 84fa723c-798f-4b0f-850f-b0da44944358))
+ (fp_line (start 5.1 5.1) (end 5.1 4.5)
+ (stroke (width 0.2032) (type solid)) (layer "F.SilkS") (tstamp 3d92f999-bf30-4e82-b0f9-3c83c96b7e4d))
+ (fp_circle (center -5.461 -5.461) (end -5.2705 -5.461)
+ (stroke (width 0.381) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 3e454244-6ad0-432b-8eab-fe5b9d6bdf03))
+ (fp_line (start -5 -5) (end -5 5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 56f6eb14-805a-4e8d-86ae-ea810e12cdab))
+ (fp_line (start -5 5) (end 5 5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 9c48d15f-c790-4f6b-bb33-96929c0949cd))
+ (fp_line (start 5 -5) (end -5 -5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 7ac049aa-d466-4707-b212-eb495c781ac7))
+ (fp_line (start 5 5) (end 5 -5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp c05a3e49-b194-4b9d-9e43-1867c560235f))
+ (pad "1" smd rect (at -4.9 -4 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f5200bfa-1566-4463-a5a8-2ce2d317c720))
+ (pad "2" smd rect (at -4.9 -3.2 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 54d327d6-c3f4-4100-a649-db18581b78cf))
+ (pad "3" smd rect (at -4.9 -2.4 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 88beecb4-4d5b-47de-82f2-2277143417e0))
+ (pad "4" smd rect (at -4.9 -1.6 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 63379693-798b-41f1-9c8b-db2991091a4f))
+ (pad "5" smd rect (at -4.9 -0.8 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 08ee5c25-2ef4-43b6-9e90-23427bb65181))
+ (pad "6" smd rect (at -4.9 0 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fd9eaee3-c2aa-4047-a466-675f8a09c4b4))
+ (pad "7" smd rect (at -4.9 0.8 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e4402c75-0dcc-4eab-9657-d8487ea2e098))
+ (pad "8" smd rect (at -4.9 1.6 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 127c6061-9fb3-4dea-a529-359adc264904))
+ (pad "9" smd rect (at -4.9 2.4 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e3f5c097-1789-4130-9362-f241934c21d5))
+ (pad "10" smd rect (at -4.9 3.2 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 146516df-bead-4fcc-bff1-eb38ec080c85))
+ (pad "11" smd rect (at -4.9 4 180) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a9e04fe3-9dd3-4a5b-99e8-671f0f94d9fd))
+ (pad "12" smd rect (at -4 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ca536052-69d3-4b4f-a224-74dc664345df))
+ (pad "13" smd rect (at -3.2 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 92a1bece-b026-4562-83c4-845a93d98e28))
+ (pad "14" smd rect (at -2.4 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4876489b-d3bf-4887-8b17-9455f06dc374))
+ (pad "15" smd rect (at -1.6 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e968097e-4fa3-4a83-a6c5-cf7cee3d3ea6))
+ (pad "16" smd rect (at -0.8 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a1f8fb10-0415-4ff5-ad84-3b6249716d5c))
+ (pad "17" smd rect (at 0 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5dea3116-bf02-4ccc-a5f7-5434bb5a8587))
+ (pad "18" smd rect (at 0.8 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 66508b0c-1793-4ad5-8552-16f2d7dd2a76))
+ (pad "19" smd rect (at 1.6 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 859d7c14-3e71-4e5c-8bab-440b61fa1e36))
+ (pad "20" smd rect (at 2.4 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b9b9d22c-51c4-428f-9374-6488a5613252))
+ (pad "21" smd rect (at 3.2 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 274c290f-5fd0-496e-a0ec-7ed89bbb2f52))
+ (pad "22" smd rect (at 4 4.9 270) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d7a0c3ef-e6b6-4d69-9994-c2f05f6e3412))
+ (pad "23" smd rect (at 4.9 4) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5fb3cb4c-f117-49d3-8a7f-ccbf0fffeb7b))
+ (pad "24" smd rect (at 4.9 3.2) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b3c486e1-e3b4-40e9-9799-91d57a2c6786))
+ (pad "25" smd rect (at 4.9 2.4) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 229964b3-ec57-4693-8764-6af12395dd74))
+ (pad "26" smd rect (at 4.9 1.6) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e5140adf-ffab-4255-a1a5-ea6764665943))
+ (pad "27" smd rect (at 4.9 0.8) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6f9c299c-b2c6-43d1-a50d-596f6f8832ab))
+ (pad "28" smd rect (at 4.9 0) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c5f33fb3-b882-415c-ad2d-4977619fbc4a))
+ (pad "29" smd rect (at 4.9 -0.8) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp cfd44279-cf81-4f78-a6d5-0b485f042421))
+ (pad "30" smd rect (at 4.9 -1.6) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0cbe2035-b9c2-44d7-92d2-3c575cf3b54b))
+ (pad "31" smd rect (at 4.9 -2.4) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0ce41833-a78b-4bf8-a26c-4e827bea2b0f))
+ (pad "32" smd rect (at 4.9 -3.2) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a6f1360a-7a5e-445c-bce0-a53af95cd00e))
+ (pad "33" smd rect (at 4.9 -4) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9ce6ef1b-0798-4e24-9401-b03efd9059fc))
+ (pad "34" smd rect (at 4 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4675f15d-93e6-4c4a-8514-87969e3fa77a))
+ (pad "35" smd rect (at 3.2 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 69df3a6f-54c6-4242-83fb-9ac283d0221c))
+ (pad "36" smd rect (at 2.4 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 29fcca6c-083d-436b-87ac-b4b6205506ae))
+ (pad "37" smd rect (at 1.6 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 82089ba2-133c-47b7-8901-f5b8920bfc73))
+ (pad "38" smd rect (at 0.8 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dfae1486-2200-4bfd-8d4a-2df34e52441e))
+ (pad "39" smd rect (at 0 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 07a6b2fd-044a-4cc9-86cf-81fb8266ddb9))
+ (pad "40" smd rect (at -0.8 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ebd5cd3b-7208-43fb-8f4b-599186441999))
+ (pad "41" smd rect (at -1.6 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp bf030675-5de2-48d0-9044-ebd6f33b52e0))
+ (pad "42" smd rect (at -2.4 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3b6dcda9-818b-4729-935f-6fb18e4b1235))
+ (pad "43" smd rect (at -3.2 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8e7ee21b-c6de-445f-8517-824d2c0a774f))
+ (pad "44" smd rect (at -4 -4.9 90) (size 1 0.36) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0085adeb-3a20-47f7-a4e6-5df0c3b59f6c))
+ (pad "45" smd roundrect (at -3 -3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 731cfdf3-cb27-4b8c-9f37-2c0399968575))
+ (pad "46" smd roundrect (at -3 -1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d42a4cbf-d473-4b14-9fa2-d49456637127))
+ (pad "47" smd roundrect (at -3 0) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 25f149e5-3708-4a21-9dec-def3b813eb20))
+ (pad "48" smd roundrect (at -3 1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 87866021-42e3-4137-9834-65914c2e3126))
+ (pad "49" smd roundrect (at -3 3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 736bbe84-7d7a-4006-a624-efd41a749926))
+ (pad "50" smd roundrect (at -1.5 -3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8989cec4-44f2-4819-a14e-f87d54bb879c))
+ (pad "51" smd roundrect (at -1.5 -1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 882c8d19-4684-48ba-9c3d-62d57ff22ed0))
+ (pad "52" smd roundrect (at -1.5 0) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f6738dd6-4cab-4489-a49a-a84297411bc9))
+ (pad "53" smd roundrect (at -1.5 1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 58d9782c-6780-47a5-94b9-e535ce6e5b3c))
+ (pad "54" smd roundrect (at -1.5 3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b35fe4ff-e95f-40fe-98c5-cf54733f0c1b))
+ (pad "55" smd roundrect (at 0 -3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5e4b2c2f-bdbe-4553-b67c-dc63c1365bb5))
+ (pad "56" smd roundrect (at 0 -1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b8cd479c-66e3-49ea-9091-ddde136f2fd5))
+ (pad "57" smd roundrect (at 0 0) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d7c4395a-4ff0-4832-8718-a5b4a05a7e6e))
+ (pad "58" smd roundrect (at 0 1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ee2143c9-380f-448a-ba2a-9a14354d099b))
+ (pad "59" smd roundrect (at 0 3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 938025f2-287a-424f-bcb4-4a5eb3978192))
+ (pad "60" smd roundrect (at 1.5 -3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d0e00e6f-1a23-407a-800d-8ce622ae927a))
+ (pad "61" smd roundrect (at 1.5 -1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 64e65045-7d09-475f-893f-ecaf9a828c91))
+ (pad "62" smd roundrect (at 1.5 0) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c611c05b-c590-467e-a8c6-16d3e5ecd9cd))
+ (pad "63" smd roundrect (at 1.5 1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3003bbfc-54d4-466a-9f06-0883dddae5fa))
+ (pad "64" smd roundrect (at 1.5 3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d40b4fda-3e8d-4554-bd83-3dbb164d9f00))
+ (pad "65" smd roundrect (at 3 -3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 60796e6f-8b7c-4bd4-8801-dd7480689d4b))
+ (pad "66" smd roundrect (at 3 -1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 495fff4a-18aa-4b60-9020-62257de04d64))
+ (pad "67" smd roundrect (at 3 0) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp bc625443-eb41-4bba-9f2c-8fd8c28bd956))
+ (pad "68" smd roundrect (at 3 1.5) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0e03f931-d06a-4921-b7cd-a23edc874124))
+ (pad "69" smd roundrect (at 3 3) (size 0.6 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.5)
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4acc1edc-8f27-4d40-9c1e-5b7851bf1882))
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3011.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3011.kicad_mod
new file mode 100644
index 0000000000..2c63715e7d
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3011.kicad_mod
@@ -0,0 +1,97 @@
+(footprint "W3011" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at 0 -1.4) (layer "F.SilkS")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp 97f15326-9803-46cf-a615-c1bb2e10ff43)
+ )
+ (fp_text value ">VALUE" (at 0 -1) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp ecfba060-db24-4802-8f43-11541d1ac7d0)
+ )
+ (fp_text user "REVERSIBLE\nANTENNA" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp 45a7d052-de66-4c45-ae44-df53b4d38d82)
+ )
+ (fp_line (start -0.9 -0.8) (end 0.9 -0.8)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp b4f4fdde-4b72-40e5-8b1c-e193094043ef))
+ (fp_line (start -0.9 0.8) (end 0.9 0.8)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 9b82c0e8-1ead-4b5f-b7cf-bef739185a3d))
+ (fp_line (start -2 -3.05) (end 2 -3.05)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 8c80d022-6ccd-41b3-8ba6-597bee8d0cf8))
+ (fp_line (start -2 1.2) (end -2 -3.05)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 75b008e8-3f00-4982-a5c3-a493725b824b))
+ (fp_line (start -1.6 -0.8) (end 1.6 -0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 1ff6f0df-e142-43da-a6d7-47504fd188c8))
+ (fp_line (start -1.6 0.8) (end -1.6 -0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 5434bb41-a7f7-4c36-9ddd-3d67e130917b))
+ (fp_line (start 1.6 -0.8) (end 1.6 0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 1d952504-6a78-4800-bae4-93e943a69c6c))
+ (fp_line (start 1.6 0.8) (end -1.6 0.8)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 8de49cba-a743-4fdb-8a68-085b35daed8e))
+ (fp_line (start 2 -3.05) (end 2 1.2)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 5db8dfc9-ff56-4ab2-bbea-58d135eeb7af))
+ (fp_line (start 2 1.2) (end -2 1.2)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 30fb86ac-b90e-4465-b440-1ce7364bfc72))
+ (pad "1" smd rect (at 1.6 -0.475) (size 0.8 0.65) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7c392bed-ef64-4e68-a4b2-cef494ced79b))
+ (pad "2" smd rect (at 1.6 0.475) (size 0.8 0.65) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 50807ac6-6b59-4af7-83e3-f0a527f4b1c0))
+ (pad "3" smd rect (at -1.6 0) (size 0.8 1.6) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f0621955-4a9b-4681-b3c2-bef6517009a0))
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 47a94f57-ad3e-4a99-a660-bbe90d3d6c5c) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2 -1)
+ (xy 2 -1)
+ (xy 2 -3)
+ (xy -2 -3)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 8faae3a7-08e8-4410-83f1-f8180c22519c) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2 1.2)
+ (xy 2 1.2)
+ (xy 2 1)
+ (xy -2 1)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 2062825f-304e-46b4-973f-7017b6f57ebe) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -1 1)
+ (xy 1 1)
+ (xy 1 -1)
+ (xy -1 -1)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "B.Cu") (tstamp 10248144-4b47-4ef2-90be-5423b5870095) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2 1.25)
+ (xy 2 1.25)
+ (xy 2 -3.05)
+ (xy -2 -3.05)
+ )
+ )
+ )
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3062A.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3062A.kicad_mod
new file mode 100644
index 0000000000..3fa387dde3
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/W3062A.kicad_mod
@@ -0,0 +1,169 @@
+(footprint "W3062A" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at 0 -2) (layer "F.SilkS")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp e7f46d3f-b64e-439f-979c-8518bc4c1715)
+ )
+ (fp_text value ">VALUE" (at 0 -1.4) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp b7626292-8335-4208-b0a2-debf69b1e4c0)
+ )
+ (fp_text user "REVERSIBLE\nANTENNA" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.184 0.184) (thickness 0.016)))
+ (tstamp b6ddbf3a-9012-4d9a-a7f6-306c7e06261a)
+ )
+ (fp_line (start -2 -0.8) (end 2 -0.8)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 083dcb50-6fe8-45c8-93ee-0b5baddfc7ec))
+ (fp_line (start -2 0.8) (end 2 0.8)
+ (stroke (width 0.1524) (type solid)) (layer "F.SilkS") (tstamp 3a55b680-bb20-48e1-9182-fa37973b4022))
+ (fp_line (start -3.9 -2.6) (end 3.9 -2.6)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 93346ac6-f58e-43c7-b609-6f4fbda92d24))
+ (fp_line (start -3.9 2.6) (end -3.9 -2.6)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 61094a57-2e1e-4831-8f82-eb3016bb5bd7))
+ (fp_line (start -3.5 -0.78) (end 3.5 -0.78)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 5eae78f0-3b3b-4a13-99b1-9e2440646fd8))
+ (fp_line (start -3.5 0.78) (end -3.5 -0.78)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp abc2f161-1362-4fc0-806e-b7b8a81a9c8c))
+ (fp_line (start 3.5 -0.78) (end 3.5 0.78)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp c642ee78-ed0e-4e79-9c5a-65b680b65f38))
+ (fp_line (start 3.5 0.78) (end -3.5 0.78)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 2bc8f954-4e3d-4a2b-a19c-ef9ad4ac2215))
+ (fp_line (start 3.9 -2.6) (end 3.9 2.6)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 8d7aab22-d2fc-4789-ab0b-f30925217961))
+ (fp_line (start 3.9 2.6) (end -3.9 2.6)
+ (stroke (width 0.05) (type solid)) (layer "F.Fab") (tstamp 07cf1344-8129-48ae-b793-30a5bcc80ecb))
+ (fp_poly
+ (pts
+ (xy -3.5 0.68)
+ (xy -2.5 0.68)
+ (xy -2.5 -0.68)
+ (xy -3.5 -0.68)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 655741f5-1e45-4137-a48f-c7c7cd9b9959))
+ (fp_poly
+ (pts
+ (xy 2.49 0.68)
+ (xy 3.49 0.68)
+ (xy 3.49 -0.68)
+ (xy 2.49 -0.68)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 899e0c33-d929-49d0-8f8b-64d75287fb01))
+ (pad "FEED" smd rect (at 3 0) (size 1.25 1.61) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3b6e9a28-38f3-46f5-9589-a561707dd309))
+ (pad "GND" smd rect (at -3 0) (size 1.25 1.61) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1d165357-1f66-4868-9b44-0f0d561a87d8))
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 1ffe7c06-22bc-47ab-a270-c70095739e36) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -3.9 -0.8)
+ (xy 3.9 -0.8)
+ (xy 3.9 -2.6)
+ (xy -3.9 -2.6)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 98a1b2c0-f4c3-4e53-b667-1843b83b5c30) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -3.9 -0.6)
+ (xy -3.5 -0.6)
+ (xy -3.5 -0.8)
+ (xy -3.9 -0.8)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp f1c7d86b-16c9-4046-ab87-7dbeb632a3ff) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -3.9 0.8)
+ (xy -3.5 0.8)
+ (xy -3.5 0.6)
+ (xy -3.9 0.6)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 6cd8c5d4-fa89-4414-9c05-9ab71394dc61) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -3.9 2.6)
+ (xy 3.9 2.6)
+ (xy 3.9 0.8)
+ (xy -3.9 0.8)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp e37dda27-e732-439a-9927-b88dd98b8680) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -2.3 0.8)
+ (xy 2.3 0.8)
+ (xy 2.3 -0.8)
+ (xy -2.3 -0.8)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp 54c3a46f-c852-44c8-8e8c-43187eb1c869) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 3.5 -0.6)
+ (xy 3.9 -0.6)
+ (xy 3.9 -0.8)
+ (xy 3.5 -0.8)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "F.Cu") (tstamp aeab4c13-2816-4770-90c7-92b98690646f) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy 3.5 0.8)
+ (xy 3.9 0.8)
+ (xy 3.9 0.6)
+ (xy 3.5 0.6)
+ )
+ )
+ )
+ (zone (net 0) (net_name "") (layer "B.Cu") (tstamp ae3f2c4f-b574-4b8a-aa4a-c9e45f59577d) (hatch edge 0.508)
+ (connect_pads (clearance 0))
+ (min_thickness 0.254) (filled_areas_thickness no)
+ (keepout (tracks not_allowed) (vias not_allowed) (pads not_allowed ) (copperpour not_allowed) (footprints allowed))
+ (fill (thermal_gap 0.508) (thermal_bridge_width 0.508) (island_removal_mode 2) (island_area_min 10))
+ (polygon
+ (pts
+ (xy -3.9 2.625)
+ (xy 3.9 2.625)
+ (xy 3.9 -2.625)
+ (xy -3.9 -2.625)
+ )
+ )
+ )
+)
diff --git a/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ZED-F9P.kicad_mod b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ZED-F9P.kicad_mod
new file mode 100644
index 0000000000..ff4202e590
--- /dev/null
+++ b/qa/data/pcbnew/plugins/eagle/lbr/SparkFun-GPS.pretty/ZED-F9P.kicad_mod
@@ -0,0 +1,1159 @@
+(footprint "ZED-F9P" (version 20220308) (generator pcbnew)
+ (layer "F.Cu")
+ (fp_text reference ">NAME" (at -11 -9) (layer "F.SilkS")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp 88340cec-1f45-40fe-a5e7-3bba02edb061)
+ )
+ (fp_text value ">VALUE" (at -11 9.5) (layer "F.Fab")
+ (effects (font (size 0.46736 0.46736) (thickness 0.04064)) (justify left bottom))
+ (tstamp 566b2133-02b7-46dc-bd2b-7267a3373e3f)
+ )
+ (fp_poly
+ (pts
+ (xy -7.8 -4.7)
+ (xy -6.9 -4.7)
+ (xy -6.9 -5.6)
+ (xy -7.8 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f5138de1-4166-45da-9e7a-d3bf410bef35))
+ (fp_poly
+ (pts
+ (xy -7.8 -2.65)
+ (xy -6.9 -2.65)
+ (xy -6.9 -3.55)
+ (xy -7.8 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp f983c002-75e7-4cd3-93e3-8a8a8fbedf67))
+ (fp_poly
+ (pts
+ (xy -7.8 -0.6)
+ (xy -6.9 -0.6)
+ (xy -6.9 -1.5)
+ (xy -7.8 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp d9bdee28-3075-4299-85c3-8b3e91fe82da))
+ (fp_poly
+ (pts
+ (xy -7.8 1.5)
+ (xy -6.9 1.5)
+ (xy -6.9 0.6)
+ (xy -7.8 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 92f8d32b-0454-49b9-8db4-f91d624a01e8))
+ (fp_poly
+ (pts
+ (xy -7.8 3.55)
+ (xy -6.9 3.55)
+ (xy -6.9 2.65)
+ (xy -7.8 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 3715a40f-ea7f-432f-b31a-712e476d84ac))
+ (fp_poly
+ (pts
+ (xy -7.8 5.6)
+ (xy -6.9 5.6)
+ (xy -6.9 4.7)
+ (xy -7.8 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 06cb0bb1-bf21-4b96-889e-7aa7bd3b9b1a))
+ (fp_poly
+ (pts
+ (xy -5.7 -4.7)
+ (xy -4.8 -4.7)
+ (xy -4.8 -5.6)
+ (xy -5.7 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp e7272b27-fcd3-45c5-9f99-5c5206528e07))
+ (fp_poly
+ (pts
+ (xy -5.7 -2.65)
+ (xy -4.8 -2.65)
+ (xy -4.8 -3.55)
+ (xy -5.7 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2bed8a0a-e889-4ce9-922d-17ce99410218))
+ (fp_poly
+ (pts
+ (xy -5.7 -0.6)
+ (xy -4.8 -0.6)
+ (xy -4.8 -1.5)
+ (xy -5.7 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 37241090-a36e-4a1c-b8e7-3e626397f258))
+ (fp_poly
+ (pts
+ (xy -5.7 1.5)
+ (xy -4.8 1.5)
+ (xy -4.8 0.6)
+ (xy -5.7 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 9312e526-f51c-4cdf-83ac-e1eec5b8ed38))
+ (fp_poly
+ (pts
+ (xy -5.7 3.55)
+ (xy -4.8 3.55)
+ (xy -4.8 2.65)
+ (xy -5.7 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 5da6e447-c0de-46d3-88db-0d397602ce81))
+ (fp_poly
+ (pts
+ (xy -5.7 5.6)
+ (xy -4.8 5.6)
+ (xy -4.8 4.7)
+ (xy -5.7 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 6240a09a-b688-4544-8e9a-4cc745e4111d))
+ (fp_poly
+ (pts
+ (xy -3.6 -4.7)
+ (xy -2.7 -4.7)
+ (xy -2.7 -5.6)
+ (xy -3.6 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 45409943-2956-4f73-89be-8af532f7d7c3))
+ (fp_poly
+ (pts
+ (xy -3.6 -2.65)
+ (xy -2.7 -2.65)
+ (xy -2.7 -3.55)
+ (xy -3.6 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a7c4d763-d839-463f-beaf-e872dfe717b7))
+ (fp_poly
+ (pts
+ (xy -3.6 -0.6)
+ (xy -2.7 -0.6)
+ (xy -2.7 -1.5)
+ (xy -3.6 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp c7baeb48-30ca-4dfe-860e-72ae13b34591))
+ (fp_poly
+ (pts
+ (xy -3.6 1.5)
+ (xy -2.7 1.5)
+ (xy -2.7 0.6)
+ (xy -3.6 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 737a6b58-a6bc-4fe1-a5d0-0ef3aee377d0))
+ (fp_poly
+ (pts
+ (xy -3.6 3.55)
+ (xy -2.7 3.55)
+ (xy -2.7 2.65)
+ (xy -3.6 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 0d6adf84-3817-42a8-a727-b1d993943876))
+ (fp_poly
+ (pts
+ (xy -3.6 5.6)
+ (xy -2.7 5.6)
+ (xy -2.7 4.7)
+ (xy -3.6 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp ee10c4f1-26b0-4e74-a1d1-686cbba22c33))
+ (fp_poly
+ (pts
+ (xy -1.5 -4.7)
+ (xy -0.6 -4.7)
+ (xy -0.6 -5.6)
+ (xy -1.5 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 838aedb8-70b5-4b9e-b78d-2458d611e9d4))
+ (fp_poly
+ (pts
+ (xy -1.5 -2.65)
+ (xy -0.6 -2.65)
+ (xy -0.6 -3.55)
+ (xy -1.5 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp ffb9fc73-12e2-4d4f-8fd0-ae38e24dc5ba))
+ (fp_poly
+ (pts
+ (xy -1.5 -0.6)
+ (xy -0.6 -0.6)
+ (xy -0.6 -1.5)
+ (xy -1.5 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 5fa4b7a9-973e-42bb-bc31-3d958d29d875))
+ (fp_poly
+ (pts
+ (xy -1.5 1.5)
+ (xy -0.6 1.5)
+ (xy -0.6 0.6)
+ (xy -1.5 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp fb98e98f-a0a5-42b8-b44e-650f7b5255b2))
+ (fp_poly
+ (pts
+ (xy -1.5 3.55)
+ (xy -0.6 3.55)
+ (xy -0.6 2.65)
+ (xy -1.5 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 090d5851-aee8-4636-b369-3cdb6a384b83))
+ (fp_poly
+ (pts
+ (xy -1.5 5.6)
+ (xy -0.6 5.6)
+ (xy -0.6 4.7)
+ (xy -1.5 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 60f266db-447f-4bef-98f2-cef2e97572dd))
+ (fp_poly
+ (pts
+ (xy 0.6 -4.7)
+ (xy 1.5 -4.7)
+ (xy 1.5 -5.6)
+ (xy 0.6 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 899f1728-6f02-4183-b797-7f0cd1e28c6d))
+ (fp_poly
+ (pts
+ (xy 0.6 -2.65)
+ (xy 1.5 -2.65)
+ (xy 1.5 -3.55)
+ (xy 0.6 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 371161fe-f70f-4512-8342-93976abc0502))
+ (fp_poly
+ (pts
+ (xy 0.6 -0.6)
+ (xy 1.5 -0.6)
+ (xy 1.5 -1.5)
+ (xy 0.6 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp abff7260-27bb-4535-8048-e966145bc4d4))
+ (fp_poly
+ (pts
+ (xy 0.6 1.5)
+ (xy 1.5 1.5)
+ (xy 1.5 0.6)
+ (xy 0.6 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7db92c3c-308e-4afd-aa43-256878205919))
+ (fp_poly
+ (pts
+ (xy 0.6 3.55)
+ (xy 1.5 3.55)
+ (xy 1.5 2.65)
+ (xy 0.6 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 53415892-2837-4e7c-869a-8499ba66c07a))
+ (fp_poly
+ (pts
+ (xy 0.6 5.6)
+ (xy 1.5 5.6)
+ (xy 1.5 4.7)
+ (xy 0.6 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 757a2bc6-54cf-4ced-8e85-c41565999481))
+ (fp_poly
+ (pts
+ (xy 2.7 -4.7)
+ (xy 3.6 -4.7)
+ (xy 3.6 -5.6)
+ (xy 2.7 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 4f6d4afb-2409-4fbd-88f6-5784243f9f81))
+ (fp_poly
+ (pts
+ (xy 2.7 -2.65)
+ (xy 3.6 -2.65)
+ (xy 3.6 -3.55)
+ (xy 2.7 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 22b5379a-16f4-432e-9ce6-fe114d379a34))
+ (fp_poly
+ (pts
+ (xy 2.7 -0.6)
+ (xy 3.6 -0.6)
+ (xy 3.6 -1.5)
+ (xy 2.7 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 5afdf074-ff14-45d4-891d-3203ddb17d86))
+ (fp_poly
+ (pts
+ (xy 2.7 1.5)
+ (xy 3.6 1.5)
+ (xy 3.6 0.6)
+ (xy 2.7 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp e03aa95b-caed-4b01-8cd3-b350566d85c1))
+ (fp_poly
+ (pts
+ (xy 2.7 3.55)
+ (xy 3.6 3.55)
+ (xy 3.6 2.65)
+ (xy 2.7 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 618ccc0f-b434-450c-ae44-d24860f44b0e))
+ (fp_poly
+ (pts
+ (xy 2.7 5.6)
+ (xy 3.6 5.6)
+ (xy 3.6 4.7)
+ (xy 2.7 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 7633f027-5504-43aa-8022-657752b2c391))
+ (fp_poly
+ (pts
+ (xy 4.8 -4.7)
+ (xy 5.7 -4.7)
+ (xy 5.7 -5.6)
+ (xy 4.8 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 73b3342a-e56f-4b33-84bb-7f9a46cf9b09))
+ (fp_poly
+ (pts
+ (xy 4.8 -2.65)
+ (xy 5.7 -2.65)
+ (xy 5.7 -3.55)
+ (xy 4.8 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp bd0720e0-e6bc-4327-8905-a8e211657ab8))
+ (fp_poly
+ (pts
+ (xy 4.8 -0.6)
+ (xy 5.7 -0.6)
+ (xy 5.7 -1.5)
+ (xy 4.8 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 27b8d46e-acf9-424d-bad4-103f098daea4))
+ (fp_poly
+ (pts
+ (xy 4.8 1.5)
+ (xy 5.7 1.5)
+ (xy 5.7 0.6)
+ (xy 4.8 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 992ac2c6-86d3-4174-ae4f-05c0bda57ff0))
+ (fp_poly
+ (pts
+ (xy 4.8 3.55)
+ (xy 5.7 3.55)
+ (xy 5.7 2.65)
+ (xy 4.8 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 64c67441-8f52-430b-b1ab-dbdb96b5f4d9))
+ (fp_poly
+ (pts
+ (xy 4.8 5.6)
+ (xy 5.7 5.6)
+ (xy 5.7 4.7)
+ (xy 4.8 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp d4252808-6535-4049-9704-69b6603f18e1))
+ (fp_poly
+ (pts
+ (xy 6.9 -4.7)
+ (xy 7.8 -4.7)
+ (xy 7.8 -5.6)
+ (xy 6.9 -5.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 63d715ec-8ee2-4c5d-8e68-870c6e4858ed))
+ (fp_poly
+ (pts
+ (xy 6.9 -2.65)
+ (xy 7.8 -2.65)
+ (xy 7.8 -3.55)
+ (xy 6.9 -3.55)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp a733789b-a623-4d89-811b-2d521a55dabf))
+ (fp_poly
+ (pts
+ (xy 6.9 -0.6)
+ (xy 7.8 -0.6)
+ (xy 7.8 -1.5)
+ (xy 6.9 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b1b05829-ed1c-4b41-be31-96ce9dba2dab))
+ (fp_poly
+ (pts
+ (xy 6.9 1.5)
+ (xy 7.8 1.5)
+ (xy 7.8 0.6)
+ (xy 6.9 0.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 786417b1-2b98-44d7-bfe9-d87b59082f32))
+ (fp_poly
+ (pts
+ (xy 6.9 3.55)
+ (xy 7.8 3.55)
+ (xy 7.8 2.65)
+ (xy 6.9 2.65)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp 2df3a31c-3864-401d-9bc7-1b01f35d4659))
+ (fp_poly
+ (pts
+ (xy 6.9 5.6)
+ (xy 7.8 5.6)
+ (xy 7.8 4.7)
+ (xy 6.9 4.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Paste") (tstamp b9025af1-fff5-4cf1-a6bb-8bb0a8240672))
+ (fp_line (start -11.25 -8.75) (end -8.8 -8.75)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 9258add5-784d-43a1-8fe9-4b602ba74307))
+ (fp_line (start -11.25 -6.8) (end -11.25 -8.75)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 71db8740-0914-4898-9304-0821e951f352))
+ (fp_line (start -11.25 8.75) (end -11.25 6.8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 1dd55fc1-0dde-4704-a984-a4b333c28935))
+ (fp_line (start -8.8 8.75) (end -11.25 8.75)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 6f1c8728-240c-47c7-8253-1d889f0fa3d9))
+ (fp_line (start 8.8 -8.75) (end 11.25 -8.75)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 97970232-c302-4b4b-8420-7bcc73e6ff73))
+ (fp_line (start 11.25 -8.75) (end 11.25 -6.8)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 28cfed06-ae01-448a-8c34-5df3c33a3111))
+ (fp_line (start 11.25 6.8) (end 11.25 8.75)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp e235f758-cb53-4003-baaa-fa762453a0c4))
+ (fp_line (start 11.25 8.75) (end 8.8 8.75)
+ (stroke (width 0.1778) (type solid)) (layer "F.SilkS") (tstamp 3ce67143-6c56-40e5-bd67-98319c17522a))
+ (fp_circle (center -11.6 8.5) (end -11.529291 8.5)
+ (stroke (width 0.141418) (type solid)) (fill solid) (layer "F.SilkS") (tstamp fe08516c-04ed-400f-ad47-40fb49be5263))
+ (fp_line (start -11 -8.5) (end 11 -8.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 1ae5802f-a5ab-4883-8532-201356303e1a))
+ (fp_line (start -11 8.5) (end -11 -8.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 07636f80-a529-4cf0-b498-89449d0a8cb2))
+ (fp_line (start 11 -8.5) (end 11 8.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp e011ad15-5b1b-4698-8774-511cdb2e021a))
+ (fp_line (start 11 8.5) (end -11 8.5)
+ (stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp d7446a21-de78-4e8c-a05f-2d91976fb13a))
+ (fp_poly
+ (pts
+ (xy -10.7 -6.2)
+ (xy -9.2 -6.2)
+ (xy -9.2 -7)
+ (xy -10.7 -7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 0a006545-18b6-4c21-a3f4-f4fbc9192309))
+ (fp_poly
+ (pts
+ (xy -10.7 -5.1)
+ (xy -9.2 -5.1)
+ (xy -9.2 -5.9)
+ (xy -10.7 -5.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 9310ceeb-72bb-4e03-8c56-a7e65247e839))
+ (fp_poly
+ (pts
+ (xy -10.7 -4)
+ (xy -9.2 -4)
+ (xy -9.2 -4.8)
+ (xy -10.7 -4.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 010b31df-7922-4517-b0ef-2ec7a16695f2))
+ (fp_poly
+ (pts
+ (xy -10.7 -2.9)
+ (xy -9.2 -2.9)
+ (xy -9.2 -3.7)
+ (xy -10.7 -3.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp bf32eeaa-7178-4f1b-afb9-c06e66f07fd1))
+ (fp_poly
+ (pts
+ (xy -10.7 -1.8)
+ (xy -9.2 -1.8)
+ (xy -9.2 -2.6)
+ (xy -10.7 -2.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 7993d582-62f1-4247-aa6b-d92b23d59489))
+ (fp_poly
+ (pts
+ (xy -10.7 -0.7)
+ (xy -9.2 -0.7)
+ (xy -9.2 -1.5)
+ (xy -10.7 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp b8c0c657-8841-4b97-a4d4-64e54ba1d788))
+ (fp_poly
+ (pts
+ (xy -10.7 0.4)
+ (xy -9.2 0.4)
+ (xy -9.2 -0.4)
+ (xy -10.7 -0.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp d2e43d45-2b12-485f-9948-992e07eaf534))
+ (fp_poly
+ (pts
+ (xy -10.7 1.5)
+ (xy -9.2 1.5)
+ (xy -9.2 0.7)
+ (xy -10.7 0.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp d24341c6-c280-412a-aced-06167606a9ca))
+ (fp_poly
+ (pts
+ (xy -10.7 2.6)
+ (xy -9.2 2.6)
+ (xy -9.2 1.8)
+ (xy -10.7 1.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 9d767ba3-078d-4717-b4a4-be7c181d64ec))
+ (fp_poly
+ (pts
+ (xy -10.7 3.7)
+ (xy -9.2 3.7)
+ (xy -9.2 2.9)
+ (xy -10.7 2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 976a8220-c761-400b-9795-353570b0443a))
+ (fp_poly
+ (pts
+ (xy -10.7 4.8)
+ (xy -9.2 4.8)
+ (xy -9.2 4)
+ (xy -10.7 4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 71fd0944-37af-4bde-90f2-7c7e4fa9c6b1))
+ (fp_poly
+ (pts
+ (xy -10.7 5.9)
+ (xy -9.2 5.9)
+ (xy -9.2 5.1)
+ (xy -10.7 5.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 1a5ce974-3e38-4737-917a-9db8b5b4ed79))
+ (fp_poly
+ (pts
+ (xy -10.7 7)
+ (xy -9.2 7)
+ (xy -9.2 6.2)
+ (xy -10.7 6.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3e464563-90d0-4ae7-8f32-0409546563b8))
+ (fp_poly
+ (pts
+ (xy -7.55 -6.7)
+ (xy -6.75 -6.7)
+ (xy -6.75 -8.2)
+ (xy -7.55 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 0515ff1a-6125-41fe-9151-2e8fcb0d0fca))
+ (fp_poly
+ (pts
+ (xy -7.55 8.2)
+ (xy -6.75 8.2)
+ (xy -6.75 6.7)
+ (xy -7.55 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3a3893f0-30f6-41bb-bea4-59199b92706a))
+ (fp_poly
+ (pts
+ (xy -6.45 -6.7)
+ (xy -5.65 -6.7)
+ (xy -5.65 -8.2)
+ (xy -6.45 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp ec51ce02-9915-4f35-b69b-900c01892c81))
+ (fp_poly
+ (pts
+ (xy -6.45 8.2)
+ (xy -5.65 8.2)
+ (xy -5.65 6.7)
+ (xy -6.45 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 491084e7-768c-46f0-9ca8-6ef8d1bb3bde))
+ (fp_poly
+ (pts
+ (xy -5.35 -6.7)
+ (xy -4.55 -6.7)
+ (xy -4.55 -8.2)
+ (xy -5.35 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3fa74d1b-6e47-4c8b-b88c-983f13eaaf8e))
+ (fp_poly
+ (pts
+ (xy -5.35 8.2)
+ (xy -4.55 8.2)
+ (xy -4.55 6.7)
+ (xy -5.35 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp cfe513bd-92aa-4d78-a599-dc0d495f492d))
+ (fp_poly
+ (pts
+ (xy -4.25 -6.7)
+ (xy -3.45 -6.7)
+ (xy -3.45 -8.2)
+ (xy -4.25 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 10b8ae6e-8c87-4c95-9423-a55418b0286f))
+ (fp_poly
+ (pts
+ (xy -4.25 8.2)
+ (xy -3.45 8.2)
+ (xy -3.45 6.7)
+ (xy -4.25 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 90190813-5455-4910-8493-9baa51ea0b5a))
+ (fp_poly
+ (pts
+ (xy -3.15 -6.7)
+ (xy -2.35 -6.7)
+ (xy -2.35 -8.2)
+ (xy -3.15 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp a0bcdbfc-981a-428c-80da-7710105fc287))
+ (fp_poly
+ (pts
+ (xy -3.15 8.2)
+ (xy -2.35 8.2)
+ (xy -2.35 6.7)
+ (xy -3.15 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 7f8f72d3-ca16-4f41-b4eb-95ed1d8aa577))
+ (fp_poly
+ (pts
+ (xy -2.05 -6.7)
+ (xy -1.25 -6.7)
+ (xy -1.25 -8.2)
+ (xy -2.05 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp a0c4cce0-a7cb-4500-8850-17976be972ad))
+ (fp_poly
+ (pts
+ (xy -2.05 8.2)
+ (xy -1.25 8.2)
+ (xy -1.25 6.7)
+ (xy -2.05 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 59db9baa-8eb9-405a-b893-931f9d1f378e))
+ (fp_poly
+ (pts
+ (xy -0.95 -6.7)
+ (xy -0.15 -6.7)
+ (xy -0.15 -8.2)
+ (xy -0.95 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 73573b4f-ed96-4ae4-8b09-e1efc5e8be83))
+ (fp_poly
+ (pts
+ (xy -0.95 8.2)
+ (xy -0.15 8.2)
+ (xy -0.15 6.7)
+ (xy -0.95 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp daef92e2-a7cb-4d5e-9aba-396a8e71491b))
+ (fp_poly
+ (pts
+ (xy 0.15 -6.7)
+ (xy 0.95 -6.7)
+ (xy 0.95 -8.2)
+ (xy 0.15 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp c73b04a5-88a9-438a-adb1-cb1bed28d1aa))
+ (fp_poly
+ (pts
+ (xy 0.15 8.2)
+ (xy 0.95 8.2)
+ (xy 0.95 6.7)
+ (xy 0.15 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 7d439366-4c30-4e86-b252-9e7c0412353c))
+ (fp_poly
+ (pts
+ (xy 1.25 -6.7)
+ (xy 2.05 -6.7)
+ (xy 2.05 -8.2)
+ (xy 1.25 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 4165680c-646a-40e5-9c0b-238d1c179dc8))
+ (fp_poly
+ (pts
+ (xy 1.25 8.2)
+ (xy 2.05 8.2)
+ (xy 2.05 6.7)
+ (xy 1.25 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3f73a491-1775-4556-b295-404788e0813b))
+ (fp_poly
+ (pts
+ (xy 2.35 -6.7)
+ (xy 3.15 -6.7)
+ (xy 3.15 -8.2)
+ (xy 2.35 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp bfb89553-9131-4137-bc49-0b2bd7e301c8))
+ (fp_poly
+ (pts
+ (xy 2.35 8.2)
+ (xy 3.15 8.2)
+ (xy 3.15 6.7)
+ (xy 2.35 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp c25e0345-3a38-4c80-bc82-a03c6a942d44))
+ (fp_poly
+ (pts
+ (xy 3.45 -6.7)
+ (xy 4.25 -6.7)
+ (xy 4.25 -8.2)
+ (xy 3.45 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 00cdeaaf-2a4e-48c5-ab39-5e1ae9975da7))
+ (fp_poly
+ (pts
+ (xy 3.45 8.2)
+ (xy 4.25 8.2)
+ (xy 4.25 6.7)
+ (xy 3.45 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 5d20280b-6771-4f0e-b179-6525b111e4b5))
+ (fp_poly
+ (pts
+ (xy 4.55 -6.7)
+ (xy 5.35 -6.7)
+ (xy 5.35 -8.2)
+ (xy 4.55 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 996d3881-862b-454e-8ffe-ff1f63f94495))
+ (fp_poly
+ (pts
+ (xy 4.55 8.2)
+ (xy 5.35 8.2)
+ (xy 5.35 6.7)
+ (xy 4.55 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 3f99f84a-a3eb-4ccb-b138-966959639e18))
+ (fp_poly
+ (pts
+ (xy 5.65 -6.7)
+ (xy 6.45 -6.7)
+ (xy 6.45 -8.2)
+ (xy 5.65 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp cd7a63a6-5b3d-41aa-992f-e0eee048ee90))
+ (fp_poly
+ (pts
+ (xy 5.65 8.2)
+ (xy 6.45 8.2)
+ (xy 6.45 6.7)
+ (xy 5.65 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 9c69fc1e-2b9a-4986-a2b1-63943b6bcefe))
+ (fp_poly
+ (pts
+ (xy 6.75 -6.7)
+ (xy 7.55 -6.7)
+ (xy 7.55 -8.2)
+ (xy 6.75 -8.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp fd8606e1-0d21-4c6e-be05-78fa1f21d5b9))
+ (fp_poly
+ (pts
+ (xy 6.75 8.2)
+ (xy 7.55 8.2)
+ (xy 7.55 6.7)
+ (xy 6.75 6.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 1c802b73-e3a8-4cca-9890-65dae55ca15c))
+ (fp_poly
+ (pts
+ (xy 9.2 -6.2)
+ (xy 10.7 -6.2)
+ (xy 10.7 -7)
+ (xy 9.2 -7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 7fc3a194-2210-4538-b748-5e07e257f4c1))
+ (fp_poly
+ (pts
+ (xy 9.2 -5.1)
+ (xy 10.7 -5.1)
+ (xy 10.7 -5.9)
+ (xy 9.2 -5.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 52329227-4e56-4caf-8b8b-e9b553985c82))
+ (fp_poly
+ (pts
+ (xy 9.2 -4)
+ (xy 10.7 -4)
+ (xy 10.7 -4.8)
+ (xy 9.2 -4.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp dfe1a723-9bb8-43f8-ae33-829effb87fa2))
+ (fp_poly
+ (pts
+ (xy 9.2 -2.9)
+ (xy 10.7 -2.9)
+ (xy 10.7 -3.7)
+ (xy 9.2 -3.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp be5f6e32-993a-44c8-8dac-8ca87fdf9894))
+ (fp_poly
+ (pts
+ (xy 9.2 -1.8)
+ (xy 10.7 -1.8)
+ (xy 10.7 -2.6)
+ (xy 9.2 -2.6)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp c9c31769-facd-4d73-8fe4-2033826a4941))
+ (fp_poly
+ (pts
+ (xy 9.2 -0.7)
+ (xy 10.7 -0.7)
+ (xy 10.7 -1.5)
+ (xy 9.2 -1.5)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 1de0a0b6-2c7d-40cc-aa9b-507701cd9e4d))
+ (fp_poly
+ (pts
+ (xy 9.2 0.4)
+ (xy 10.7 0.4)
+ (xy 10.7 -0.4)
+ (xy 9.2 -0.4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 6a5f65ee-0176-4a3e-8e19-5997228b20da))
+ (fp_poly
+ (pts
+ (xy 9.2 1.5)
+ (xy 10.7 1.5)
+ (xy 10.7 0.7)
+ (xy 9.2 0.7)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp ffda3e16-27b3-42b0-bd4e-35659c185507))
+ (fp_poly
+ (pts
+ (xy 9.2 2.6)
+ (xy 10.7 2.6)
+ (xy 10.7 1.8)
+ (xy 9.2 1.8)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp c316c68a-8261-4f8e-8231-a26080285742))
+ (fp_poly
+ (pts
+ (xy 9.2 3.7)
+ (xy 10.7 3.7)
+ (xy 10.7 2.9)
+ (xy 9.2 2.9)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 590a1668-09a5-4b4a-a553-645344fbe35c))
+ (fp_poly
+ (pts
+ (xy 9.2 4.8)
+ (xy 10.7 4.8)
+ (xy 10.7 4)
+ (xy 9.2 4)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 329e939a-9b5c-48c3-903b-b17d8299c031))
+ (fp_poly
+ (pts
+ (xy 9.2 5.9)
+ (xy 10.7 5.9)
+ (xy 10.7 5.1)
+ (xy 9.2 5.1)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp 52dd2bf6-f9f9-45d8-86e4-1d44e01741e0))
+ (fp_poly
+ (pts
+ (xy 9.2 7)
+ (xy 10.7 7)
+ (xy 10.7 6.2)
+ (xy 9.2 6.2)
+ )
+
+ (stroke (width 0) (type default)) (fill solid) (layer "F.Fab") (tstamp aa37cda2-2b13-49d8-bdff-26ed612c59e8))
+ (pad "1" smd rect (at -7.15 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d2e282ef-95ca-4f6f-be42-9924c17397df))
+ (pad "2" smd rect (at -6.05 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8abfdeff-2cb6-480b-86ac-5131f827937a))
+ (pad "3" smd rect (at -4.95 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 09e9336f-64cc-428d-8308-877eedf8e62b))
+ (pad "4" smd rect (at -3.85 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8867e773-266f-4fff-b472-a1e19c41ba8f))
+ (pad "5" smd rect (at -2.75 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7d1f78fa-fbc6-464c-8c13-8beecd7d0316))
+ (pad "6" smd rect (at -1.65 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 92cc6387-a537-4960-8695-1a7b0f4ae765))
+ (pad "7" smd rect (at -0.55 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e96acd8e-4b99-4ad0-98da-5dc8d39f6bdb))
+ (pad "8" smd rect (at 0.55 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 83383a44-9ed2-4b7b-a5bf-6df5c7f6cbac))
+ (pad "9" smd rect (at 1.65 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c68eb7db-a2fb-41b5-a7f8-b25c455df435))
+ (pad "10" smd rect (at 2.75 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 360b86bd-b8e2-4a91-a351-657d8549aa21))
+ (pad "11" smd rect (at 3.85 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8526b0a7-17aa-4c5d-b6f5-527143858a83))
+ (pad "12" smd rect (at 4.95 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a7396768-8915-483b-91f3-123336565d7c))
+ (pad "13" smd rect (at 6.05 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b895fab3-eca7-4295-932f-3f72876e8429))
+ (pad "14" smd rect (at 7.15 7.45 90) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp dda84e4c-4957-4b34-a277-72003329cb66))
+ (pad "15" smd rect (at 9.95 6.6) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7be4417f-0404-4fc0-a9b4-df4d94a3c9eb))
+ (pad "16" smd rect (at 9.95 5.5) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f681d5d1-13f3-44df-a38e-90fbbcb1176b))
+ (pad "17" smd rect (at 9.95 4.4) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0a6461e6-9387-4e5f-98da-2e1da3f87245))
+ (pad "18" smd rect (at 9.95 3.3) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0cac4072-8648-4ae7-80fe-d3b5beead170))
+ (pad "19" smd rect (at 9.95 2.2) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 10491fa4-9a0d-4344-b14b-c7f25f939835))
+ (pad "20" smd rect (at 9.95 1.1) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a0dca434-890a-4347-aa5b-94260cd6ed89))
+ (pad "21" smd rect (at 9.95 0) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 86b95a9f-e09f-4c86-9bca-301dec60350a))
+ (pad "22" smd rect (at 9.95 -1.1) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4ac70a02-7dbc-4859-b2d6-5e85b9c60ad9))
+ (pad "23" smd rect (at 9.95 -2.2) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 714a80e3-634c-4280-9519-4b554d920032))
+ (pad "24" smd rect (at 9.95 -3.3) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp b8d29d66-9755-4b4d-94c4-315bc7ce52ac))
+ (pad "25" smd rect (at 9.95 -4.4) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 81a503aa-a3af-4a46-94fd-8b672960ab63))
+ (pad "26" smd rect (at 9.95 -5.5) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4950c7b2-42b7-4462-848d-2e8eb01cfd71))
+ (pad "27" smd rect (at 9.95 -6.6) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7f3f92f7-1990-4545-b759-646abfc4fd0a))
+ (pad "28" smd rect (at 7.15 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ea056d45-e926-450b-9bb4-8d42be4b5d59))
+ (pad "29" smd rect (at 6.05 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ba29b404-d1f1-4416-b432-b2fbfce61a85))
+ (pad "30" smd rect (at 4.95 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 42dae952-dc6a-4014-88fe-b430036128e3))
+ (pad "31" smd rect (at 3.85 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 4a722aec-d415-4607-a3f5-fa2cf066ccba))
+ (pad "32" smd rect (at 2.75 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 402bbb31-1b93-4d9f-b0fc-49ad3441bd09))
+ (pad "33" smd rect (at 1.65 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7b751acf-50fc-4d1b-9ba8-ab9032f19608))
+ (pad "34" smd rect (at 0.55 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f3b45d3f-175a-4e3e-a988-76cea00a2aa1))
+ (pad "35" smd rect (at -0.55 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 834b2bfe-3a3b-4816-a239-3d5ec6f6674e))
+ (pad "36" smd rect (at -1.65 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fb7649d5-5a72-4163-acde-3b38f7442eed))
+ (pad "37" smd rect (at -2.75 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a1fa4b2e-1a17-4f44-b761-bd96b193c5ae))
+ (pad "38" smd rect (at -3.85 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e2b87a18-c608-42af-af10-2dfce0369b07))
+ (pad "39" smd rect (at -4.95 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d2a6ffb2-2761-41dc-873f-145749684bba))
+ (pad "40" smd rect (at -6.05 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7595a785-7e17-4593-ac22-0e91614dc8cb))
+ (pad "41" smd rect (at -7.15 -7.45 270) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8fcec758-cccd-4c98-ac16-def5d04674a6))
+ (pad "42" smd rect (at -9.95 -6.6 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp eb7f50d8-b618-4fda-b591-d2948db467c5))
+ (pad "43" smd rect (at -9.95 -5.5 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 739412ba-2a8a-4c29-90b8-6e36f4aebb7e))
+ (pad "44" smd rect (at -9.95 -4.4 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 456391d3-7e5f-45a3-b93e-1fd447131730))
+ (pad "45" smd rect (at -9.95 -3.3 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5dd13951-b717-4827-abb5-4ff41fef8e73))
+ (pad "46" smd rect (at -9.95 -2.2 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 95db2302-52d6-4659-88e3-a3d643720626))
+ (pad "47" smd rect (at -9.95 -1.1 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 89410fae-d369-465d-b4a6-252c82bcd436))
+ (pad "48" smd rect (at -9.95 0 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 8002dae3-2b96-44da-89d7-6fa2f27c19aa))
+ (pad "49" smd rect (at -9.95 1.1 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f53a098e-cf70-40bd-bf64-fd621f3be119))
+ (pad "50" smd rect (at -9.95 2.2 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f6bb6667-db7f-48a6-a37c-b821610c2b7f))
+ (pad "51" smd rect (at -9.95 3.3 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 77ec6058-32f7-4fa7-a15c-fc3193b10032))
+ (pad "52" smd rect (at -9.95 4.4 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 98705b15-fd41-4fab-ae27-8ce514bfc47f))
+ (pad "53" smd rect (at -9.95 5.5 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a373f13a-6836-4ec0-92ab-6bbe9e79aefa))
+ (pad "54" smd rect (at -9.95 6.6 180) (size 1.52 0.85) (layers "F.Cu" "F.Paste" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 49348152-1d34-4dbd-a401-099e6ef9e7e3))
+ (pad "55" smd rect (at -1.05 1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6a7b46d6-04d6-44e8-8dff-4ef30ee5bd2a))
+ (pad "56" smd rect (at -3.15 1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f92272e3-5462-4fac-8c20-6adc8a2fc4de))
+ (pad "57" smd rect (at -5.25 1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7e16bfd5-8c17-4afd-86da-79d81cd87d4c))
+ (pad "58" smd rect (at -7.35 1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 120ba20b-c92b-4d5c-9290-0fb43a4a7ebb))
+ (pad "59" smd rect (at -1.05 3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 239547ca-af41-4060-a6c2-9fb2f755dbc4))
+ (pad "60" smd rect (at -3.15 3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 1f615999-551e-47ab-8386-a7517e10328e))
+ (pad "61" smd rect (at -5.25 3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp eb57b514-378d-4fd8-aae5-d447bde16af4))
+ (pad "62" smd rect (at -7.35 3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 7e7fd5f9-2646-4676-be2c-483669e724aa))
+ (pad "63" smd rect (at -1.05 5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c317b7e4-f8b8-4454-b6db-532e9ff4f428))
+ (pad "64" smd rect (at -3.15 5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a5405289-3671-47d1-ab63-d43f8aed214d))
+ (pad "65" smd rect (at -5.25 5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e084c356-0ee1-409f-b225-91ffd7829b99))
+ (pad "66" smd rect (at -7.35 5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fa3bfe77-be7f-4309-8e4c-bbcaa28868e6))
+ (pad "67" smd rect (at -1.05 -5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 42060ad7-4af2-4c12-988b-b70ebcacb6f3))
+ (pad "68" smd rect (at -3.15 -5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 92290a7f-998e-4ab2-9a18-22c071fe4262))
+ (pad "69" smd rect (at -5.25 -5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp bb63f10c-f682-4950-baec-31d1c54f137e))
+ (pad "70" smd rect (at -7.35 -5.15) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f3047a4b-ea3f-4de0-ad91-e51420eaa312))
+ (pad "71" smd rect (at -1.05 -3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6b40bd5c-b51a-458f-8c99-84c5a56444ee))
+ (pad "72" smd rect (at -3.15 -3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d87a8a3d-cc90-4ed0-a551-637b1a8db73c))
+ (pad "73" smd rect (at -5.25 -3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d3ea4880-d828-46e7-8db3-623d8c20b49a))
+ (pad "74" smd rect (at -7.35 -3.1) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 858358b6-cda8-430b-b2f6-21523e158f70))
+ (pad "75" smd rect (at -1.05 -1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 40224967-fd29-4c96-a114-ac2835bd4df1))
+ (pad "76" smd rect (at -3.15 -1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c215b19a-e4a1-4544-b821-f1c403660507))
+ (pad "77" smd rect (at -5.25 -1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 6d82a167-a852-4ddd-9cd8-c351a94a88cf))
+ (pad "78" smd rect (at -7.35 -1.05) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c6ec2c39-bd8b-48d6-a85b-23abc95c0dec))
+ (pad "79" smd rect (at 1.05 -1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ba293d1d-dc89-4b33-ba9e-6aad9f2e22c7))
+ (pad "80" smd rect (at 3.15 -1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 563d6aea-eeed-4ba7-9d0c-0722fa3248c3))
+ (pad "81" smd rect (at 5.25 -1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 415ab30f-2c29-43b4-a641-91b22f1ac6d1))
+ (pad "82" smd rect (at 7.35 -1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f3c520a0-4296-4819-bff3-5ee084274abe))
+ (pad "83" smd rect (at 1.05 -3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c6c6f7e9-3a46-499b-ab79-6881f926b5f1))
+ (pad "84" smd rect (at 3.15 -3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 17fd9c06-e672-4b03-95c9-543f01944326))
+ (pad "85" smd rect (at 5.25 -3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2758d685-2a6e-4711-8a72-5ad805d2f7b8))
+ (pad "86" smd rect (at 7.35 -3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 812a7f19-0791-4591-bf8d-fd6c9600b007))
+ (pad "87" smd rect (at 1.05 -5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 695209b1-8a7e-4a7d-9c9a-3c5e1a645d95))
+ (pad "88" smd rect (at 3.15 -5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp c4b03d73-99da-4816-8bd9-68a10a709d71))
+ (pad "89" smd rect (at 5.25 -5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp fafbeaea-627c-4a4c-9a14-b6a5aaaa0646))
+ (pad "90" smd rect (at 7.35 -5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 0bfa7e63-40a7-4a89-9f55-ec95da3f174a))
+ (pad "91" smd rect (at 1.05 5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 9f065c31-2e92-4d3c-beaa-a862219c6e2a))
+ (pad "92" smd rect (at 3.15 5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp d665b09e-b6d2-43e1-b068-346565836c8f))
+ (pad "93" smd rect (at 5.25 5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 221a165d-8cdd-4f35-9da7-8a1b6d2a186a))
+ (pad "94" smd rect (at 7.35 5.15 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp daa7b971-9261-4774-932a-c5b1dad52520))
+ (pad "95" smd rect (at 1.05 3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp ed9692ab-9a31-4971-9164-b1c9527ecce9))
+ (pad "96" smd rect (at 3.15 3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 21a62ed4-801d-4018-98df-361c3699bf36))
+ (pad "97" smd rect (at 5.25 3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 3d63d5af-2037-4551-ba9b-3da51a7a5756))
+ (pad "98" smd rect (at 7.35 3.1 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp e57e0f76-b278-456e-992a-8a618bbe4bc4))
+ (pad "99" smd rect (at 1.05 1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp a8aa2063-5031-47a5-9e67-d067df9af78e))
+ (pad "100" smd rect (at 3.15 1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp f5cbb6dd-8063-4611-b32e-99495cd8b4ae))
+ (pad "101" smd rect (at 5.25 1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 2210b076-f99c-451c-8dc1-b166d9a26ba8))
+ (pad "102" smd rect (at 7.35 1.05 180) (size 1.1 1.1) (layers "F.Cu" "F.Mask")
+ (solder_mask_margin 0.1016) (thermal_bridge_angle 45) (tstamp 5d35bd81-b045-452a-a5b2-0c94edffa656))
+)
diff --git a/qa/pcbnew_utils/board_test_utils.cpp b/qa/pcbnew_utils/board_test_utils.cpp
index f04152b3ec..2c7d45f30c 100644
--- a/qa/pcbnew_utils/board_test_utils.cpp
+++ b/qa/pcbnew_utils/board_test_utils.cpp
@@ -246,158 +246,185 @@ void CheckFootprint( const FOOTPRINT* expected, const FOOTPRINT* fp )
void CheckFpPad( const PAD* expected, const PAD* pad )
{
- CHECK_ENUM_CLASS_EQUAL( expected->Type(), pad->Type() );
+ BOOST_TEST_CONTEXT( "Assert PAD with KIID=" << expected->m_Uuid.AsString() )
+ {
+ CHECK_ENUM_CLASS_EQUAL( expected->Type(), pad->Type() );
- BOOST_CHECK_EQUAL( expected->GetNumber(), pad->GetNumber() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetAttribute(), pad->GetAttribute() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetProperty(), pad->GetProperty() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetShape(), pad->GetShape() );
+ BOOST_CHECK_EQUAL( expected->GetNumber(), pad->GetNumber() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetAttribute(), pad->GetAttribute() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetProperty(), pad->GetProperty() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetShape(), pad->GetShape() );
- BOOST_CHECK_EQUAL( expected->IsLocked(), pad->IsLocked() );
+ BOOST_CHECK_EQUAL( expected->IsLocked(), pad->IsLocked() );
- BOOST_CHECK_EQUAL( expected->GetPosition(), pad->GetPosition() );
- BOOST_CHECK_EQUAL( expected->GetSize(), pad->GetSize() );
- BOOST_CHECK_EQUAL( expected->GetOrientation(), pad->GetOrientation() );
- BOOST_CHECK_EQUAL( expected->GetDelta(), pad->GetDelta() );
- BOOST_CHECK_EQUAL( expected->GetOffset(), pad->GetOffset() );
- BOOST_CHECK_EQUAL( expected->GetDrillSize(), pad->GetDrillSize() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetDrillShape(), pad->GetDrillShape() );
+ BOOST_CHECK_EQUAL( expected->GetPosition(), pad->GetPosition() );
+ BOOST_CHECK_EQUAL( expected->GetSize(), pad->GetSize() );
+ BOOST_CHECK_EQUAL( expected->GetOrientation(), pad->GetOrientation() );
+ BOOST_CHECK_EQUAL( expected->GetDelta(), pad->GetDelta() );
+ BOOST_CHECK_EQUAL( expected->GetOffset(), pad->GetOffset() );
+ BOOST_CHECK_EQUAL( expected->GetDrillSize(), pad->GetDrillSize() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetDrillShape(), pad->GetDrillShape() );
- BOOST_CHECK_EQUAL( expected->GetLayerSet(), pad->GetLayerSet() );
+ BOOST_CHECK_EQUAL( expected->GetLayerSet(), pad->GetLayerSet() );
- BOOST_CHECK_EQUAL( expected->GetNetCode(), pad->GetNetCode() );
- BOOST_CHECK_EQUAL( expected->GetPinFunction(), pad->GetPinFunction() );
- BOOST_CHECK_EQUAL( expected->GetPinType(), pad->GetPinType() );
- BOOST_CHECK_EQUAL( expected->GetPadToDieLength(), pad->GetPadToDieLength() );
- BOOST_CHECK_EQUAL( expected->GetLocalSolderMaskMargin(), pad->GetLocalSolderMaskMargin() );
- BOOST_CHECK_EQUAL( expected->GetLocalSolderPasteMargin(), pad->GetLocalSolderPasteMargin() );
- BOOST_CHECK_EQUAL( expected->GetLocalSolderPasteMarginRatio(),
- pad->GetLocalSolderPasteMarginRatio() );
- BOOST_CHECK_EQUAL( expected->GetLocalClearance(), pad->GetLocalClearance() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetZoneConnection(), pad->GetZoneConnection() );
- BOOST_CHECK_EQUAL( expected->GetThermalSpokeWidth(), pad->GetThermalSpokeWidth() );
- BOOST_CHECK_EQUAL( expected->GetThermalSpokeAngle(), pad->GetThermalSpokeAngle() );
- BOOST_CHECK_EQUAL( expected->GetThermalGap(), pad->GetThermalGap() );
- BOOST_CHECK_EQUAL( expected->GetRoundRectRadiusRatio(), pad->GetRoundRectRadiusRatio() );
- BOOST_CHECK_EQUAL( expected->GetChamferRectRatio(), pad->GetChamferRectRatio() );
- BOOST_CHECK_EQUAL( expected->GetChamferPositions(), pad->GetChamferPositions() );
- BOOST_CHECK_EQUAL( expected->GetRemoveUnconnected(), pad->GetRemoveUnconnected() );
- BOOST_CHECK_EQUAL( expected->GetKeepTopBottom(), pad->GetKeepTopBottom() );
+ BOOST_CHECK_EQUAL( expected->GetNetCode(), pad->GetNetCode() );
+ BOOST_CHECK_EQUAL( expected->GetPinFunction(), pad->GetPinFunction() );
+ BOOST_CHECK_EQUAL( expected->GetPinType(), pad->GetPinType() );
+ BOOST_CHECK_EQUAL( expected->GetPadToDieLength(), pad->GetPadToDieLength() );
+ BOOST_CHECK_EQUAL( expected->GetLocalSolderMaskMargin(), pad->GetLocalSolderMaskMargin() );
+ BOOST_CHECK_EQUAL( expected->GetLocalSolderPasteMargin(),
+ pad->GetLocalSolderPasteMargin() );
+ BOOST_CHECK_EQUAL( expected->GetLocalSolderPasteMarginRatio(),
+ pad->GetLocalSolderPasteMarginRatio() );
+ BOOST_CHECK_EQUAL( expected->GetLocalClearance(), pad->GetLocalClearance() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetZoneConnection(), pad->GetZoneConnection() );
+ BOOST_CHECK_EQUAL( expected->GetThermalSpokeWidth(), pad->GetThermalSpokeWidth() );
+ BOOST_CHECK_EQUAL( expected->GetThermalSpokeAngle(), pad->GetThermalSpokeAngle() );
+ BOOST_CHECK_EQUAL( expected->GetThermalGap(), pad->GetThermalGap() );
+ BOOST_CHECK_EQUAL( expected->GetRoundRectRadiusRatio(), pad->GetRoundRectRadiusRatio() );
+ BOOST_CHECK_EQUAL( expected->GetChamferRectRatio(), pad->GetChamferRectRatio() );
+ BOOST_CHECK_EQUAL( expected->GetChamferPositions(), pad->GetChamferPositions() );
+ BOOST_CHECK_EQUAL( expected->GetRemoveUnconnected(), pad->GetRemoveUnconnected() );
+ BOOST_CHECK_EQUAL( expected->GetKeepTopBottom(), pad->GetKeepTopBottom() );
- // TODO: check complex pad shapes
- CHECK_ENUM_CLASS_EQUAL( expected->GetAnchorPadShape(), pad->GetAnchorPadShape() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetCustomShapeInZoneOpt(), pad->GetCustomShapeInZoneOpt() );
+ // TODO: check complex pad shapes
+ CHECK_ENUM_CLASS_EQUAL( expected->GetAnchorPadShape(), pad->GetAnchorPadShape() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetCustomShapeInZoneOpt(),
+ pad->GetCustomShapeInZoneOpt() );
+ }
}
void CheckFpText( const FP_TEXT* expected, const FP_TEXT* text )
{
- CHECK_ENUM_CLASS_EQUAL( expected->Type(), text->Type() );
+ BOOST_TEST_CONTEXT( "Assert FP_TEXT with KIID=" << expected->m_Uuid.AsString() )
+ {
+ CHECK_ENUM_CLASS_EQUAL( expected->Type(), text->Type() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetType(), text->GetType() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetType(), text->GetType() );
- BOOST_CHECK_EQUAL( expected->IsLocked(), text->IsLocked() );
+ BOOST_CHECK_EQUAL( expected->IsLocked(), text->IsLocked() );
- BOOST_CHECK_EQUAL( expected->GetText(), text->GetText() );
- BOOST_CHECK_EQUAL( expected->GetPosition(), text->GetPosition() );
- BOOST_CHECK_EQUAL( expected->GetTextAngle(), text->GetTextAngle() );
- BOOST_CHECK_EQUAL( expected->IsKeepUpright(), text->IsKeepUpright() );
+ BOOST_CHECK_EQUAL( expected->GetText(), text->GetText() );
+ BOOST_CHECK_EQUAL( expected->GetPosition(), text->GetPosition() );
+ BOOST_CHECK_EQUAL( expected->GetTextAngle(), text->GetTextAngle() );
+ BOOST_CHECK_EQUAL( expected->IsKeepUpright(), text->IsKeepUpright() );
- BOOST_CHECK_EQUAL( expected->GetLayerSet(), text->GetLayerSet() );
- BOOST_CHECK_EQUAL( expected->IsVisible(), text->IsVisible() );
+ BOOST_CHECK_EQUAL( expected->GetLayerSet(), text->GetLayerSet() );
+ BOOST_CHECK_EQUAL( expected->IsVisible(), text->IsVisible() );
- BOOST_CHECK_EQUAL( expected->GetTextSize(), text->GetTextSize() );
- BOOST_CHECK_EQUAL( expected->GetLineSpacing(), text->GetLineSpacing() );
- BOOST_CHECK_EQUAL( expected->GetTextThickness(), text->GetTextThickness() );
- BOOST_CHECK_EQUAL( expected->IsBold(), text->IsBold() );
- BOOST_CHECK_EQUAL( expected->IsItalic(), text->IsItalic() );
- BOOST_CHECK_EQUAL( expected->GetHorizJustify(), text->GetHorizJustify() );
- BOOST_CHECK_EQUAL( expected->GetVertJustify(), text->GetVertJustify() );
- BOOST_CHECK_EQUAL( expected->IsMirrored(), text->IsMirrored() );
- BOOST_CHECK_EQUAL( expected->GetFontName(), text->GetFontName() ); // TODO: bold/italic setting?
+ BOOST_CHECK_EQUAL( expected->GetTextSize(), text->GetTextSize() );
+ BOOST_CHECK_EQUAL( expected->GetLineSpacing(), text->GetLineSpacing() );
+ BOOST_CHECK_EQUAL( expected->GetTextThickness(), text->GetTextThickness() );
+ BOOST_CHECK_EQUAL( expected->IsBold(), text->IsBold() );
+ BOOST_CHECK_EQUAL( expected->IsItalic(), text->IsItalic() );
+ BOOST_CHECK_EQUAL( expected->GetHorizJustify(), text->GetHorizJustify() );
+ BOOST_CHECK_EQUAL( expected->GetVertJustify(), text->GetVertJustify() );
+ BOOST_CHECK_EQUAL( expected->IsMirrored(), text->IsMirrored() );
+ BOOST_CHECK_EQUAL( expected->GetFontName(),
+ text->GetFontName() ); // TODO: bold/italic setting?
- // TODO: render cache?
+ // TODO: render cache?
+ }
}
void CheckFpShape( const FP_SHAPE* expected, const FP_SHAPE* shape )
{
- CHECK_ENUM_CLASS_EQUAL( expected->Type(), shape->Type() );
+ BOOST_TEST_CONTEXT( "Assert FP_SHAPE with KIID=" << expected->m_Uuid.AsString() )
+ {
+ CHECK_ENUM_CLASS_EQUAL( expected->Type(), shape->Type() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetShape(), shape->GetShape() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetShape(), shape->GetShape() );
- BOOST_CHECK_EQUAL( expected->IsLocked(), shape->IsLocked() );
+ BOOST_CHECK_EQUAL( expected->IsLocked(), shape->IsLocked() );
- BOOST_CHECK_EQUAL( expected->GetCenter(), shape->GetCenter() );
- BOOST_CHECK_EQUAL( expected->GetStart(), shape->GetStart() );
- BOOST_CHECK_EQUAL( expected->GetEnd(), shape->GetEnd() );
- BOOST_CHECK_EQUAL( expected->GetPosition(), shape->GetPosition() );
- BOOST_CHECK_EQUAL( expected->GetBezierC1(), shape->GetBezierC1() );
- BOOST_CHECK_EQUAL( expected->GetBezierC2(), shape->GetBezierC2() );
+ BOOST_CHECK_EQUAL( expected->GetStart(), shape->GetStart() );
+ BOOST_CHECK_EQUAL( expected->GetEnd(), shape->GetEnd() );
+ if( expected->GetShape() == SHAPE_T::ARC )
+ {
+ // center and position might differ as they are calculated from start/mid/end -> compare mid instead
+ BOOST_CHECK_EQUAL( expected->GetArcMid(), shape->GetArcMid() );
+ }
+ else
+ {
+ BOOST_CHECK_EQUAL( expected->GetCenter(), shape->GetCenter() );
+ BOOST_CHECK_EQUAL( expected->GetPosition(), shape->GetPosition() );
+ }
+ BOOST_CHECK_EQUAL( expected->GetBezierC1(), shape->GetBezierC1() );
+ BOOST_CHECK_EQUAL( expected->GetBezierC2(), shape->GetBezierC2() );
- CheckShapePolySet( &expected->GetPolyShape(), &shape->GetPolyShape() );
+ CheckShapePolySet( &expected->GetPolyShape(), &shape->GetPolyShape() );
- BOOST_CHECK_EQUAL( expected->GetLayerSet(), shape->GetLayerSet() );
+ BOOST_CHECK_EQUAL( expected->GetLayerSet(), shape->GetLayerSet() );
- BOOST_CHECK_EQUAL( expected->GetStroke().GetWidth(), shape->GetStroke().GetWidth() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetStroke().GetPlotStyle(),
- shape->GetStroke().GetPlotStyle() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetFillMode(), shape->GetFillMode() );
+ BOOST_CHECK_EQUAL( expected->GetStroke().GetWidth(), shape->GetStroke().GetWidth() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetStroke().GetPlotStyle(),
+ shape->GetStroke().GetPlotStyle() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetFillMode(), shape->GetFillMode() );
+ }
}
void CheckFpZone( const FP_ZONE* expected, const FP_ZONE* zone )
{
- CHECK_ENUM_CLASS_EQUAL( expected->Type(), zone->Type() );
+ BOOST_TEST_CONTEXT( "Assert FP_ZONE with KIID=" << expected->m_Uuid.AsString() )
+ {
+ CHECK_ENUM_CLASS_EQUAL( expected->Type(), zone->Type() );
- BOOST_CHECK_EQUAL( expected->IsLocked(), zone->IsLocked() );
+ BOOST_CHECK_EQUAL( expected->IsLocked(), zone->IsLocked() );
- BOOST_CHECK_EQUAL( expected->GetNetCode(), zone->GetNetCode() );
- BOOST_CHECK_EQUAL( expected->GetAssignedPriority(), zone->GetAssignedPriority() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetPadConnection(), zone->GetPadConnection() );
- BOOST_CHECK_EQUAL( expected->GetLocalClearance(), zone->GetLocalClearance() );
- BOOST_CHECK_EQUAL( expected->GetMinThickness(), zone->GetMinThickness() );
+ BOOST_CHECK_EQUAL( expected->GetNetCode(), zone->GetNetCode() );
+ BOOST_CHECK_EQUAL( expected->GetAssignedPriority(), zone->GetAssignedPriority() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetPadConnection(), zone->GetPadConnection() );
+ BOOST_CHECK_EQUAL( expected->GetLocalClearance(), zone->GetLocalClearance() );
+ BOOST_CHECK_EQUAL( expected->GetMinThickness(), zone->GetMinThickness() );
- BOOST_CHECK_EQUAL( expected->GetLayerSet(), zone->GetLayerSet() );
+ BOOST_CHECK_EQUAL( expected->GetLayerSet(), zone->GetLayerSet() );
- BOOST_CHECK_EQUAL( expected->IsFilled(), zone->IsFilled() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetFillMode(), zone->GetFillMode() );
- BOOST_CHECK_EQUAL( expected->GetHatchThickness(), zone->GetHatchThickness() );
- BOOST_CHECK_EQUAL( expected->GetHatchGap(), zone->GetHatchGap() );
- BOOST_CHECK_EQUAL( expected->GetHatchOrientation(), zone->GetHatchOrientation() );
- BOOST_CHECK_EQUAL( expected->GetHatchSmoothingLevel(), zone->GetHatchSmoothingLevel() );
- BOOST_CHECK_EQUAL( expected->GetHatchSmoothingValue(), zone->GetHatchSmoothingValue() );
- BOOST_CHECK_EQUAL( expected->GetHatchBorderAlgorithm(), zone->GetHatchBorderAlgorithm() );
- BOOST_CHECK_EQUAL( expected->GetHatchHoleMinArea(), zone->GetHatchHoleMinArea() );
- BOOST_CHECK_EQUAL( expected->GetThermalReliefGap(), zone->GetThermalReliefGap() );
- BOOST_CHECK_EQUAL( expected->GetThermalReliefSpokeWidth(), zone->GetThermalReliefSpokeWidth() );
- BOOST_CHECK_EQUAL( expected->GetCornerSmoothingType(), zone->GetCornerSmoothingType() );
- BOOST_CHECK_EQUAL( expected->GetCornerRadius(), zone->GetCornerRadius() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetIslandRemovalMode(), zone->GetIslandRemovalMode() );
- BOOST_CHECK_EQUAL( expected->GetMinIslandArea(), zone->GetMinIslandArea() );
+ BOOST_CHECK_EQUAL( expected->IsFilled(), zone->IsFilled() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetFillMode(), zone->GetFillMode() );
+ BOOST_CHECK_EQUAL( expected->GetHatchThickness(), zone->GetHatchThickness() );
+ BOOST_CHECK_EQUAL( expected->GetHatchGap(), zone->GetHatchGap() );
+ BOOST_CHECK_EQUAL( expected->GetHatchOrientation(), zone->GetHatchOrientation() );
+ BOOST_CHECK_EQUAL( expected->GetHatchSmoothingLevel(), zone->GetHatchSmoothingLevel() );
+ BOOST_CHECK_EQUAL( expected->GetHatchSmoothingValue(), zone->GetHatchSmoothingValue() );
+ BOOST_CHECK_EQUAL( expected->GetHatchBorderAlgorithm(), zone->GetHatchBorderAlgorithm() );
+ BOOST_CHECK_EQUAL( expected->GetHatchHoleMinArea(), zone->GetHatchHoleMinArea() );
+ BOOST_CHECK_EQUAL( expected->GetThermalReliefGap(), zone->GetThermalReliefGap() );
+ BOOST_CHECK_EQUAL( expected->GetThermalReliefSpokeWidth(),
+ zone->GetThermalReliefSpokeWidth() );
+ BOOST_CHECK_EQUAL( expected->GetCornerSmoothingType(), zone->GetCornerSmoothingType() );
+ BOOST_CHECK_EQUAL( expected->GetCornerRadius(), zone->GetCornerRadius() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetIslandRemovalMode(), zone->GetIslandRemovalMode() );
+ BOOST_CHECK_EQUAL( expected->GetMinIslandArea(), zone->GetMinIslandArea() );
- BOOST_CHECK_EQUAL( expected->GetIsRuleArea(), zone->GetIsRuleArea() );
- BOOST_CHECK_EQUAL( expected->GetDoNotAllowCopperPour(), zone->GetDoNotAllowCopperPour() );
- BOOST_CHECK_EQUAL( expected->GetDoNotAllowVias(), zone->GetDoNotAllowVias() );
- BOOST_CHECK_EQUAL( expected->GetDoNotAllowTracks(), zone->GetDoNotAllowTracks() );
- BOOST_CHECK_EQUAL( expected->GetDoNotAllowPads(), zone->GetDoNotAllowPads() );
- BOOST_CHECK_EQUAL( expected->GetDoNotAllowFootprints(), zone->GetDoNotAllowFootprints() );
+ BOOST_CHECK_EQUAL( expected->GetIsRuleArea(), zone->GetIsRuleArea() );
+ BOOST_CHECK_EQUAL( expected->GetDoNotAllowCopperPour(), zone->GetDoNotAllowCopperPour() );
+ BOOST_CHECK_EQUAL( expected->GetDoNotAllowVias(), zone->GetDoNotAllowVias() );
+ BOOST_CHECK_EQUAL( expected->GetDoNotAllowTracks(), zone->GetDoNotAllowTracks() );
+ BOOST_CHECK_EQUAL( expected->GetDoNotAllowPads(), zone->GetDoNotAllowPads() );
+ BOOST_CHECK_EQUAL( expected->GetDoNotAllowFootprints(), zone->GetDoNotAllowFootprints() );
- BOOST_CHECK_EQUAL( expected->GetZoneName(), zone->GetZoneName() );
- CHECK_ENUM_CLASS_EQUAL( expected->GetTeardropAreaType(), zone->GetTeardropAreaType() );
- BOOST_CHECK_EQUAL( expected->GetZoneName(), zone->GetZoneName() );
+ BOOST_CHECK_EQUAL( expected->GetZoneName(), zone->GetZoneName() );
+ CHECK_ENUM_CLASS_EQUAL( expected->GetTeardropAreaType(), zone->GetTeardropAreaType() );
+ BOOST_CHECK_EQUAL( expected->GetZoneName(), zone->GetZoneName() );
- CheckShapePolySet( expected->Outline(), zone->Outline() );
- // TODO: filled zones
+ CheckShapePolySet( expected->Outline(), zone->Outline() );
+ // TODO: filled zones
+ }
}
void CheckShapePolySet( const SHAPE_POLY_SET* expected, const SHAPE_POLY_SET* polyset )
{
- BOOST_CHECK_EQUAL( expected->OutlineCount(), polyset->OutlineCount() );
- BOOST_CHECK_EQUAL( expected->TotalVertices(), polyset->TotalVertices() );
+ BOOST_TEST_CONTEXT( "Assert SHAPE_POLY_SET" )
+ {
+ BOOST_CHECK_EQUAL( expected->OutlineCount(), polyset->OutlineCount() );
+ BOOST_CHECK_EQUAL( expected->TotalVertices(), polyset->TotalVertices() );
- // TODO: check all outlines and holes
+ // TODO: check all outlines and holes
+ }
}
} // namespace KI_TEST
diff --git a/qa/unittests/pcbnew/CMakeLists.txt b/qa/unittests/pcbnew/CMakeLists.txt
index e98d02649b..6788280f04 100644
--- a/qa/unittests/pcbnew/CMakeLists.txt
+++ b/qa/unittests/pcbnew/CMakeLists.txt
@@ -49,6 +49,7 @@ set( QA_PCBNEW_SRCS
plugins/altium/test_altium_rule_transformer.cpp
plugins/altium/test_altium_pcblib_import.cpp
+ plugins/eagle/test_eagle_lbr_import.cpp
group_saveload.cpp
)
diff --git a/qa/unittests/pcbnew/plugins/altium/test_altium_pcblib_import.cpp b/qa/unittests/pcbnew/plugins/altium/test_altium_pcblib_import.cpp
index 38e60a3aff..30cf0bfd8e 100644
--- a/qa/unittests/pcbnew/plugins/altium/test_altium_pcblib_import.cpp
+++ b/qa/unittests/pcbnew/plugins/altium/test_altium_pcblib_import.cpp
@@ -40,10 +40,6 @@
#include
-#define CHECK_ENUM_CLASS_EQUAL( L, R ) \
- BOOST_CHECK_EQUAL( static_cast( L ), static_cast( R ) )
-
-
struct ALTIUM_PCBLIB_IMPORT_FIXTURE
{
ALTIUM_PCBLIB_IMPORT_FIXTURE() {}
@@ -64,11 +60,13 @@ BOOST_FIXTURE_TEST_SUITE( AltiumPcbLibImport, ALTIUM_PCBLIB_IMPORT_FIXTURE )
*/
BOOST_AUTO_TEST_CASE( AltiumPcbLibImport )
{
+ // clang-format off
std::vector> tests = {
{ "Tracks.v5.PcbLib", "Tracks.pretty" },
{ "Tracks.v6.PcbLib", "Tracks.pretty" },
{ "Espressif ESP32-WROOM-32.PcbLib", "Espressif ESP32-WROOM-32.pretty" }
};
+ // clang-format on
std::string dataPath = KI_TEST::GetPcbnewTestDataDir() + "plugins/altium/pcblib/";
@@ -78,9 +76,11 @@ BOOST_AUTO_TEST_CASE( AltiumPcbLibImport )
wxString kicadLibraryPath = dataPath + libName.second;
wxArrayString altiumFootprintNames;
- altiumPlugin.FootprintEnumerate( altiumFootprintNames, altiumLibraryPath, true, nullptr );
wxArrayString kicadFootprintNames;
+
+ altiumPlugin.FootprintEnumerate( altiumFootprintNames, altiumLibraryPath, true, nullptr );
kicadPlugin.FootprintEnumerate( kicadFootprintNames, kicadLibraryPath, true, nullptr );
+
BOOST_CHECK_EQUAL( altiumFootprintNames.GetCount(), kicadFootprintNames.GetCount() );
for( size_t i = 0; i < altiumFootprintNames.GetCount(); i++ )
@@ -97,8 +97,8 @@ BOOST_AUTO_TEST_CASE( AltiumPcbLibImport )
BOOST_CHECK_EQUAL( wxT( "REF**" ), altiumFp->GetReference() );
BOOST_CHECK_EQUAL( footprintName, altiumFp->GetValue() );
- FOOTPRINT* kicadFp = kicadPlugin.FootprintLoad( kicadLibraryPath, footprintName,
- false, nullptr );
+ FOOTPRINT* kicadFp =
+ kicadPlugin.FootprintLoad( kicadLibraryPath, footprintName, true, nullptr );
BOOST_CHECK( kicadFp );
KI_TEST::CheckFootprint( kicadFp, altiumFp );
diff --git a/qa/unittests/pcbnew/plugins/eagle/test_eagle_lbr_import.cpp b/qa/unittests/pcbnew/plugins/eagle/test_eagle_lbr_import.cpp
new file mode 100644
index 0000000000..ea6ea96c89
--- /dev/null
+++ b/qa/unittests/pcbnew/plugins/eagle/test_eagle_lbr_import.cpp
@@ -0,0 +1,110 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2022 KiCad Developers, see AUTHORS.TXT for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/**
+ * @file test_eagle_lbr_import.cpp
+ * Test suite for import of *.lbr libraries
+ */
+
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+
+struct EAGLE_LBR_IMPORT_FIXTURE
+{
+ EAGLE_LBR_IMPORT_FIXTURE() {}
+
+ EAGLE_PLUGIN eaglePlugin;
+ PCB_PLUGIN kicadPlugin;
+};
+
+
+/**
+ * Declares the struct as the Boost test fixture.
+ */
+BOOST_FIXTURE_TEST_SUITE( EagleLbrLibImport, EAGLE_LBR_IMPORT_FIXTURE )
+
+
+/**
+ * Compare all footprints declared in a *.lbr file with their KiCad reference footprint
+ */
+BOOST_AUTO_TEST_CASE( EagleLbrLibImport )
+{
+ // clang-format off
+ std::vector> tests = {
+ { "SparkFun-GPS.lbr", "SparkFun-GPS.pretty" }
+ };
+ // clang-format on
+
+ std::string dataPath = KI_TEST::GetPcbnewTestDataDir() + "plugins/eagle/lbr/";
+
+ for( const std::pair& libName : tests )
+ {
+ wxString eagleLibraryPath = dataPath + libName.first;
+ wxString kicadLibraryPath = dataPath + libName.second;
+
+ wxArrayString eagleFootprintNames;
+ wxArrayString kicadFootprintNames;
+
+ eaglePlugin.FootprintEnumerate( eagleFootprintNames, eagleLibraryPath, true, nullptr );
+ kicadPlugin.FootprintEnumerate( kicadFootprintNames, kicadLibraryPath, true, nullptr );
+
+ BOOST_CHECK_EQUAL( eagleFootprintNames.GetCount(), kicadFootprintNames.GetCount() );
+
+ for( size_t i = 0; i < eagleFootprintNames.GetCount(); i++ )
+ {
+ wxString footprintName = eagleFootprintNames[i];
+
+ BOOST_TEST_CONTEXT( wxString::Format( wxT( "Import '%s' from '%s'" ), footprintName,
+ libName.first ) )
+ {
+ FOOTPRINT* eagleFp = eaglePlugin.FootprintLoad( eagleLibraryPath, footprintName,
+ false, nullptr );
+ BOOST_CHECK( eagleFp );
+
+ // TODO: import does not replace variables
+ //BOOST_CHECK_EQUAL( wxT( "REF**" ), eagleFp->GetReference() );
+ //BOOST_CHECK_EQUAL( footprintName, eagleFp->GetValue() );
+
+ FOOTPRINT* kicadFp =
+ kicadPlugin.FootprintLoad( kicadLibraryPath, footprintName, true, nullptr );
+ BOOST_CHECK( kicadFp );
+
+ KI_TEST::CheckFootprint( kicadFp, eagleFp );
+ }
+ }
+ }
+}
+
+
+BOOST_AUTO_TEST_SUITE_END()