text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="9.0.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="50" unitdist="mil" unit="mil" style="lines" multiple="1" display="no" altdistance="5" altunitdist="mil" altunit="mil"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="24" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
<layer number="88" name="SimResults" color="9" fill="1" visible="no" active="no"/>
<layer number="89" name="SimProbes" color="9" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
<layer number="104" name="Name" color="16" fill="1" visible="yes" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="108" name="tplace-old" color="10" fill="1" visible="yes" active="yes"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="yes" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="yes" active="yes"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="113" name="IDFDebug" color="4" fill="1" visible="yes" active="yes"/>
<layer number="114" name="Badge_Outline" color="7" fill="1" visible="yes" active="yes"/>
<layer number="115" name="ReferenceISLANDS" color="7" fill="1" visible="yes" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="yes" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="yes" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="129" name="Mask" color="7" fill="1" visible="yes" active="yes"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="153" name="FabDoc1" color="7" fill="1" visible="yes" active="yes"/>
<layer number="154" name="FabDoc2" color="7" fill="1" visible="yes" active="yes"/>
<layer number="155" name="FabDoc3" color="7" fill="1" visible="yes" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="yes" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="225" name="225bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="226" name="226bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="227" name="227bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="228" name="228bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="229" name="229bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="230" name="230bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="231" name="231bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="232" name="Eagle3D_PG2" color="7" fill="1" visible="no" active="no"/>
<layer number="233" name="Eagle3D_PG3" color="7" fill="1" visible="no" active="no"/>
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<board>
<fusionsync huburn="a.cGVyc29uYWw6dWUyOWM2ZjI0" projecturn="a.cGVyc29uYWw6dWUyOWM2ZjI0IzIwMTgwMTExMTExNzcwMDUx" f3durn="urn:adsk.wipprod:dm.lineage:ndf3FElgTU27s80xJZUrjg" pcbguid="c3bd02f2-5d4d-446f-97c3-826d326183bc" lastpulledtime="" lastsyncedchangeguid="3092817d-d955-9b5c-5114-f0d5345a52d5"/>
<plain>
<wire x1="73.152" y1="6.35" x2="0.508" y2="6.35" width="0.6096" layer="20"/>
<wire x1="0.508" y1="6.35" x2="-1.27" y2="8.128" width="0.6096" layer="20" curve="-90"/>
<wire x1="-1.27" y1="8.128" x2="-1.27" y2="55.372" width="0.6096" layer="20"/>
<wire x1="-1.27" y1="55.372" x2="0.508" y2="57.15" width="0.6096" layer="20" curve="-90"/>
<wire x1="0.508" y1="57.15" x2="73.152" y2="57.15" width="0.6096" layer="20"/>
<wire x1="73.152" y1="57.15" x2="74.93" y2="55.372" width="0.6096" layer="20" curve="-90"/>
<wire x1="74.93" y1="55.372" x2="74.93" y2="8.128" width="0.6096" layer="20"/>
<wire x1="74.93" y1="8.128" x2="73.152" y2="6.35" width="0.6096" layer="20" curve="-90"/>
<hole x="2.54" y="53.34" drill="1.5748"/>
<hole x="71.12" y="53.34" drill="1.5748"/>
<hole x="71.12" y="10.16" drill="1.5748"/>
<hole x="2.54" y="10.16" drill="1.5748"/>
<hole x="2.54" y="33.02" drill="1.5748"/>
<hole x="71.12" y="31.75" drill="1.5748"/>
</plain>
<libraries>
<library name="SparkFun-RF">
<description>
SparkFun RF, WiFi, Cellular, and Bluetooth

In this library you'll find things that send or receive RF-- cellular modules, Bluetooth, WiFi, etc.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

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.</description>
<packages>
<package name="XBEE-LONGPAD">
<description>
Digi XBee and XBee-PRO RF Modules (Long pads)

20-pin 2mm PTH headers. Elongated annular rings to make soldering easier.

XBee Mechanical Drawings

Header Mechanical Drawing

Header SparkFun Product Link
</description>
<wire x1="-5" y1="27.6" x2="5" y2="27.6" width="0.127" layer="51"/>
<wire x1="-12.25" y1="21.25" x2="-5" y2="27.6" width="0.127" layer="51"/>
<wire x1="12.25" y1="21.25" x2="5" y2="27.6" width="0.127" layer="51"/>
<wire x1="9.5595" y1="21.3135" x2="12.4405" y2="21.25" width="0.2032" layer="21"/>
<wire x1="12.4405" y1="21.25" x2="12.4405" y2="0.75" width="0.2032" layer="21"/>
<wire x1="12.4405" y1="0.75" x2="9.5595" y2="0.8135" width="0.2032" layer="21"/>
<wire x1="9.5595" y1="21.3135" x2="9.5595" y2="0.8135" width="0.2032" layer="21"/>
<wire x1="-9.5595" y1="21.25" x2="-12.4405" y2="21.25" width="0.2032" layer="21"/>
<wire x1="-12.4405" y1="21.25" x2="-12.4405" y2="0.75" width="0.2032" layer="21"/>
<wire x1="-12.4405" y1="0.75" x2="-9.5595" y2="0.75" width="0.2032" layer="21"/>
<wire x1="-9.5595" y1="21.25" x2="-9.5595" y2="0.75" width="0.2032" layer="21"/>
<wire x1="-12.25" y1="0.75" x2="-12.25" y2="0" width="0.127" layer="51"/>
<wire x1="12.25" y1="0.75" x2="12.25" y2="0" width="0.127" layer="51"/>
<wire x1="-12.25" y1="0" x2="12.25" y2="0" width="0.127" layer="51"/>
<wire x1="12.25" y1="0" x2="12.25" y2="-6.25" width="0.127" layer="51"/>
<wire x1="-12.25" y1="0" x2="-12.25" y2="-6.25" width="0.127" layer="51"/>
<wire x1="-12.25" y1="-6.25" x2="12.25" y2="-6.25" width="0.127" layer="51"/>
<pad name="1" x="-11" y="20" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="2" x="-11" y="18" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="3" x="-11" y="16" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="4" x="-11" y="14" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="5" x="-11" y="12" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="6" x="-11" y="10" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="7" x="-11" y="8" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="8" x="-11" y="6" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="9" x="-11" y="4" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="10" x="-11" y="2" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="11" x="11" y="2" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="12" x="11" y="4" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="13" x="11" y="6" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="14" x="11" y="8" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="15" x="11" y="10" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="16" x="11" y="12" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="17" x="11" y="14" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="18" x="11" y="16" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="19" x="11" y="18" drill="0.8" diameter="1.2065" shape="long"/>
<pad name="20" x="11" y="20" drill="0.8" diameter="1.2065" shape="long"/>
<text x="0" y="9.16" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="8.62" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
<text x="-9.373" y="20" size="1.016" layer="21" font="vector" ratio="15" align="center-left">1</text>
</package>
</packages>
</library>
<library name="Particle-Devices">
<description>
Reference foot prints for Particle devices

In this library you'll find foot prints to make circuit boards using the Particle devices: Spark Core, Photon and Electron.

There are for reference and you may need to adjust them for your application. See https://docs.particle.io for more details on the recommended layouts for Particle devices.

Licensing: Designed by Particle. Distributed under a Creative Commons Attribution, Share-Alike license. Development kits based on this library should be distributed under a similar license. Commercial products using this library as a reference design need not comply with this license; further questions can be sent to hello@particle.io. Check license.txt for more information.</description>
<packages>
<package name="ELECTRON">
<pad name="1" x="1.27" y="46.99" drill="1.016" diameter="1.8796"/>
<pad name="2" x="1.27" y="44.45" drill="1.016" diameter="1.8796"/>
<pad name="3" x="1.27" y="41.91" drill="1.016" diameter="1.8796"/>
<pad name="4" x="1.27" y="39.37" drill="1.016" diameter="1.8796"/>
<pad name="5" x="1.27" y="36.83" drill="1.016" diameter="1.8796"/>
<pad name="6" x="1.27" y="34.29" drill="1.016" diameter="1.8796"/>
<pad name="7" x="1.27" y="31.75" drill="1.016" diameter="1.8796"/>
<pad name="8" x="1.27" y="29.21" drill="1.016" diameter="1.8796"/>
<pad name="9" x="1.27" y="26.67" drill="1.016" diameter="1.8796"/>
<pad name="10" x="1.27" y="24.13" drill="1.016" diameter="1.8796"/>
<pad name="11" x="1.27" y="21.59" drill="1.016" diameter="1.8796"/>
<pad name="12" x="1.27" y="19.05" drill="1.016" diameter="1.8796"/>
<rectangle x1="1.016" y1="31.496" x2="1.524" y2="32.004" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="34.036" x2="1.524" y2="34.544" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="36.576" x2="1.524" y2="37.084" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="39.116" x2="1.524" y2="39.624" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="41.656" x2="1.524" y2="42.164" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="44.196" x2="1.524" y2="44.704" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="46.736" x2="1.524" y2="47.244" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="28.956" x2="1.524" y2="29.464" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="26.416" x2="1.524" y2="26.924" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="23.876" x2="1.524" y2="24.384" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="21.336" x2="1.524" y2="21.844" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="18.796" x2="1.524" y2="19.304" layer="51" rot="R270"/>
<pad name="25" x="19.05" y="19.05" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="26" x="19.05" y="21.59" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="27" x="19.05" y="24.13" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="28" x="19.05" y="26.67" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="29" x="19.05" y="29.21" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="30" x="19.05" y="31.75" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="31" x="19.05" y="34.29" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="32" x="19.05" y="36.83" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="33" x="19.05" y="39.37" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="34" x="19.05" y="41.91" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="35" x="19.05" y="44.45" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="36" x="19.05" y="46.99" drill="1.016" diameter="1.8796" rot="R180"/>
<rectangle x1="18.796" y1="34.036" x2="19.304" y2="34.544" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="31.496" x2="19.304" y2="32.004" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="28.956" x2="19.304" y2="29.464" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="26.416" x2="19.304" y2="26.924" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="23.876" x2="19.304" y2="24.384" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="21.336" x2="19.304" y2="21.844" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="18.796" x2="19.304" y2="19.304" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="36.576" x2="19.304" y2="37.084" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="39.116" x2="19.304" y2="39.624" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="41.656" x2="19.304" y2="42.164" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="44.196" x2="19.304" y2="44.704" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="46.736" x2="19.304" y2="47.244" layer="51" rot="R90"/>
<wire x1="20.32" y1="48.26" x2="20.32" y2="50.8" width="0.3048" layer="21"/>
<wire x1="0" y1="50.8" x2="0" y2="48.26" width="0.3048" layer="21"/>
<wire x1="20.32" y1="50.8" x2="0" y2="50.8" width="0.3048" layer="21"/>
<wire x1="0" y1="48.26" x2="0" y2="2.54" width="0.3048" layer="21"/>
<wire x1="2.54" y1="2.54" x2="2.54" y2="48.26" width="0.3048" layer="21"/>
<wire x1="2.54" y1="48.26" x2="0" y2="48.26" width="0.3048" layer="21"/>
<wire x1="20.32" y1="48.26" x2="20.32" y2="2.54" width="0.3048" layer="21"/>
<wire x1="17.78" y1="48.26" x2="20.32" y2="48.26" width="0.3048" layer="21"/>
<text x="19.05" y="18.796" size="0.6096" layer="51" font="vector">13</text>
<wire x1="17.78" y1="2.54" x2="17.78" y2="48.26" width="0.3048" layer="21"/>
<wire x1="0" y1="2.54" x2="0" y2="48.26" width="0.3048" layer="51"/>
<wire x1="0" y1="48.26" x2="0" y2="50.8" width="0.3048" layer="51"/>
<wire x1="0" y1="50.8" x2="20.32" y2="50.8" width="0.3048" layer="51"/>
<wire x1="20.32" y1="50.8" x2="20.32" y2="48.26" width="0.3048" layer="51"/>
<text x="2.794" y="46.736" size="0.6096" layer="51" font="vector">1</text>
<text x="16.51" y="46.736" size="0.6096" layer="51" font="vector">36</text>
<wire x1="20.32" y1="48.26" x2="20.32" y2="2.54" width="0.3048" layer="51"/>
<wire x1="0" y1="48.26" x2="2.54" y2="48.26" width="0.3048" layer="51"/>
<wire x1="17.78" y1="2.54" x2="17.78" y2="48.26" width="0.3048" layer="51"/>
<wire x1="17.78" y1="48.26" x2="20.32" y2="48.26" width="0.3048" layer="51"/>
<pad name="13" x="1.27" y="16.51" drill="1.016" diameter="1.8796"/>
<pad name="14" x="1.27" y="13.97" drill="1.016" diameter="1.8796"/>
<pad name="15" x="1.27" y="11.43" drill="1.016" diameter="1.8796"/>
<pad name="16" x="1.27" y="8.89" drill="1.016" diameter="1.8796"/>
<pad name="17" x="1.27" y="6.35" drill="1.016" diameter="1.8796"/>
<pad name="18" x="1.27" y="3.81" drill="1.016" diameter="1.8796"/>
<text x="2.54" y="-1.778" size="1.27" layer="25" ratio="10">>NAME</text>
<rectangle x1="1.016" y1="16.256" x2="1.524" y2="16.764" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="13.716" x2="1.524" y2="14.224" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="11.176" x2="1.524" y2="11.684" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="8.636" x2="1.524" y2="9.144" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="6.096" x2="1.524" y2="6.604" layer="51" rot="R270"/>
<rectangle x1="1.016" y1="3.556" x2="1.524" y2="4.064" layer="51" rot="R270"/>
<pad name="19" x="19.05" y="3.81" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="20" x="19.05" y="6.35" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="21" x="19.05" y="8.89" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="22" x="19.05" y="11.43" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="23" x="19.05" y="13.97" drill="1.016" diameter="1.8796" rot="R180"/>
<pad name="24" x="19.05" y="16.51" drill="1.016" diameter="1.8796" rot="R180"/>
<text x="2.54" y="-3.302" size="1.27" layer="27" rot="SR0">>VALUE</text>
<rectangle x1="18.796" y1="16.256" x2="19.304" y2="16.764" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="13.716" x2="19.304" y2="14.224" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="11.176" x2="19.304" y2="11.684" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="8.636" x2="19.304" y2="9.144" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="6.096" x2="19.304" y2="6.604" layer="51" rot="R90"/>
<rectangle x1="18.796" y1="3.556" x2="19.304" y2="4.064" layer="51" rot="R90"/>
<wire x1="0" y1="2.54" x2="1.27" y2="0" width="0.3048" layer="21"/>
<wire x1="1.27" y1="0" x2="19.05" y2="0" width="0.3048" layer="21"/>
<wire x1="19.05" y1="0" x2="20.32" y2="2.54" width="0.3048" layer="21"/>
<wire x1="0" y1="2.54" x2="2.54" y2="2.54" width="0.3048" layer="21"/>
<wire x1="20.32" y1="2.54" x2="17.78" y2="2.54" width="0.3048" layer="21"/>
<wire x1="0" y1="2.54" x2="1.27" y2="0" width="0.3048" layer="51"/>
<wire x1="1.27" y1="0" x2="19.05" y2="0" width="0.3048" layer="51"/>
<wire x1="19.05" y1="0" x2="20.32" y2="2.54" width="0.3048" layer="51"/>
<text x="19.05" y="3.556" size="0.6096" layer="51" font="vector">13</text>
<text x="2.794" y="3.556" size="0.6096" layer="51" font="vector">18</text>
<text x="16.51" y="3.556" size="0.6096" layer="51" font="vector">19</text>
<wire x1="2.54" y1="48.26" x2="2.54" y2="2.54" width="0.3048" layer="51"/>
<wire x1="2.54" y1="2.54" x2="0" y2="2.54" width="0.3048" layer="51"/>
<wire x1="20.32" y1="2.54" x2="17.78" y2="2.54" width="0.3048" layer="51"/>
</package>
</packages>
</library>
<library name="SparkFun-LED">
<description>
SparkFun LEDs

This library contains discrete LEDs for illumination or indication, but no displays.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is  the end user's responsibility to ensure correctness and suitablity for a given componet or application.

If you enjoy using this library, please buy one of our products at SparkFun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

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.</description>
<packages>
<package name="LED_3MM-NS">
<description>
LED 3MM PTH- No Silk

3 mm, round, no silk outline of package

Specifications:

Pin count: 2

Pin pitch: 0.1inch

Diameter: 3mm

Example device(s):

LED

</description>
<wire x1="1.5748" y1="-1.27" x2="1.5748" y2="1.27" width="0.254" layer="51"/>
<wire x1="0" y1="2.032" x2="1.561" y2="1.3009" width="0.254" layer="51" curve="-50.193108" cap="flat"/>
<wire x1="-1.7929" y1="0.9562" x2="0" y2="2.032" width="0.254" layer="51" curve="-61.926949" cap="flat"/>
<wire x1="0" y1="-2.032" x2="1.5512" y2="-1.3126" width="0.254" layer="51" curve="49.763022" cap="flat"/>
<wire x1="-1.7643" y1="-1.0082" x2="0" y2="-2.032" width="0.254" layer="51" curve="60.255215" cap="flat"/>
<wire x1="-2.032" y1="0" x2="-1.7891" y2="0.9634" width="0.254" layer="51" curve="-28.301701" cap="flat"/>
<wire x1="-2.032" y1="0" x2="-1.7306" y2="-1.065" width="0.254" layer="51" curve="31.60822" cap="flat"/>
<wire x1="1.5748" y1="1.2954" x2="1.5748" y2="0.7874" width="0.254" layer="51"/>
<wire x1="1.5748" y1="-1.2954" x2="1.5748" y2="-0.8382" width="0.254" layer="51"/>
<pad name="A" x="-1.27" y="0" drill="0.8128"/>
<pad name="K" x="1.27" y="0" drill="0.8128"/>
<text x="0" y="2.286" size="0.6096" layer="25" font="vector" ratio="20" align="bottom-center">>NAME</text>
<text x="0" y="-2.286" size="0.6096" layer="27" font="vector" ratio="20" align="top-center">>VALUE</text>
<wire x1="1.8923" y1="1.2954" x2="1.8923" y2="0.7874" width="0.254" layer="21"/>
<wire x1="1.8923" y1="-1.2954" x2="1.8923" y2="-0.8382" width="0.254" layer="21"/>
</package>
</packages>
</library>
<library name="SparkFun-Passives">
<description>
SparkFun Electronics' preferred foot prints

In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.

We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.

Licensing: Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/

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.</description>
<packages>
<package name="AXIAL-0.3-KIT">
<description>
AXIAL-0.3-KIT

Commonly used for 1/4W through-hole resistors. 0.3" pitch between holes.

Warning: This is the KIT version of the AXIAL-0.3 package. This package has a smaller diameter top stop mask, which doesn't cover the diameter of the pad. This means only the bottom side of the pads' copper will be exposed. You'll only be able to solder to the bottom side.</description>
<wire x1="-2.54" y1="1.27" x2="2.54" y2="1.27" width="0.254" layer="21"/>
<wire x1="2.54" y1="1.27" x2="2.54" y2="0" width="0.254" layer="21"/>
<wire x1="2.54" y1="0" x2="2.54" y2="-1.27" width="0.254" layer="21"/>
<wire x1="2.54" y1="-1.27" x2="-2.54" y2="-1.27" width="0.254" layer="21"/>
<wire x1="-2.54" y1="-1.27" x2="-2.54" y2="0" width="0.254" layer="21"/>
<wire x1="-2.54" y1="0" x2="-2.54" y2="1.27" width="0.254" layer="21"/>
<wire x1="2.54" y1="0" x2="2.794" y2="0" width="0.254" layer="21"/>
<wire x1="-2.54" y1="0" x2="-2.794" y2="0" width="0.254" layer="21"/>
<pad name="P$1" x="-3.81" y="0" drill="1.016" diameter="2.032" stop="no"/>
<pad name="P$2" x="3.81" y="0" drill="1.016" diameter="2.032" stop="no"/>
<text x="-2.54" y="1.27" size="0.4064" layer="25" font="vector">>Name</text>
<text x="-2.159" y="-0.762" size="1.27" layer="21" font="vector" ratio="15">>Value</text>
<polygon width="0.127" layer="30">
<vertex x="3.8201" y="-0.9449" curve="-90"/>
<vertex x="2.8652" y="-0.0152" curve="-90.011749"/>
<vertex x="3.8176" y="0.9602" curve="-90"/>
<vertex x="4.7676" y="-0.0178" curve="-90.024193"/>
</polygon>
<polygon width="0.127" layer="29">
<vertex x="3.8176" y="-0.4369" curve="-90.012891"/>
<vertex x="3.3731" y="-0.0127" curve="-90"/>
<vertex x="3.8176" y="0.4546" curve="-90"/>
<vertex x="4.2595" y="-0.0025" curve="-90.012967"/>
</polygon>
<polygon width="0.127" layer="30">
<vertex x="-3.8075" y="-0.9525" curve="-90"/>
<vertex x="-4.7624" y="-0.0228" curve="-90.011749"/>
<vertex x="-3.81" y="0.9526" curve="-90"/>
<vertex x="-2.86" y="-0.0254" curve="-90.024193"/>
</polygon>
<polygon width="0.127" layer="29">
<vertex x="-3.81" y="-0.4445" curve="-90.012891"/>
<vertex x="-4.2545" y="-0.0203" curve="-90"/>
<vertex x="-3.81" y="0.447" curve="-90"/>
<vertex x="-3.3681" y="-0.0101" curve="-90.012967"/>
</polygon>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="default">
<description language="de">EAGLE Design Rules

Die Standard-Design-Rules sind so gewählt, dass sie für
die meisten Anwendungen passen. Sollte ihre Platine
besondere Anforderungen haben, treffen Sie die erforderlichen
Einstellungen hier und speichern die Design Rules unter
einem neuen Namen ab.</description>
<description language="en">EAGLE Design Rules

The default Design Rules have been set to cover
a wide range of applications. Your particular design
may have different requirements, so please make the
necessary adjustments and save your customized
design rules under a new name.</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="6mil"/>
<param name="mdWirePad" value="6mil"/>
<param name="mdWireVia" value="6mil"/>
<param name="mdPadPad" value="6mil"/>
<param name="mdPadVia" value="6mil"/>
<param name="mdViaVia" value="6mil"/>
<param name="mdSmdPad" value="6mil"/>
<param name="mdSmdVia" value="6mil"/>
<param name="mdSmdSmd" value="6mil"/>
<param name="mdViaViaSameLayer" value="6mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="40mil"/>
<param name="mdDrill" value="6mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="6mil"/>
<param name="msDrill" value="0.35mm"/>
<param name="msMicroVia" value="9.99mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.25"/>
<param name="rvPadInner" value="0.25"/>
<param name="rvPadBottom" value="0.25"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="8mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="-1"/>
<param name="psBottom" value="-1"/>
<param name="psFirst" value="-1"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="4mil"/>
<param name="mlMaxStopFrame" value="4mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="0mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="checkStop" value="0"/>
<param name="checkValues" value="0"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="AutoGrid" value="1"/>
<param name="Efforts" value="0"/>
<param name="TopRouterVariant" value="1"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="a"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="a"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
<element name="JP1" library="SparkFun-RF" package="XBEE-LONGPAD" value="" x="30.988" y="20.447" rot="R270"/>
<element name="U$1" library="Particle-Devices" package="ELECTRON" value="ELECTRON_WITH_HEADERS" x="59.69" y="35.814" rot="R90"/>
<element name="D1" library="SparkFun-LED" package="LED_3MM-NS" value="" x="6.35" y="13.97"/>
<element name="R1" library="SparkFun-Passives" package="AXIAL-0.3-KIT" value="" x="15.24" y="19.05" rot="R180"/>
<element name="R2" library="SparkFun-Passives" package="AXIAL-0.3-KIT" value="" x="13.97" y="8.89" rot="R180"/>
<element name="D2" library="SparkFun-LED" package="LED_3MM-NS" value="" x="6.35" y="19.05"/>
</elements>
<signals>
<signal name="VBAT">
<contactref element="U$1" pad="34"/>
</signal>
<signal name="GND">
<contactref element="U$1" pad="33"/>
<contactref element="U$1" pad="2"/>
<contactref element="JP1" pad="10"/>
<wire x1="20.32" y1="54.864" x2="20.32" y2="44.45" width="0.6096" layer="16"/>
<wire x1="15.24" y1="39.37" x2="15.24" y2="37.084" width="0.6096" layer="16"/>
<wire x1="20.32" y1="44.45" x2="15.24" y2="39.37" width="0.6096" layer="16"/>
<wire x1="32.988" y1="31.447" x2="15.543" y2="31.447" width="0.6096" layer="16"/>
<wire x1="15.24" y1="31.75" x2="15.543" y2="31.447" width="0.6096" layer="16"/>
<wire x1="15.24" y1="37.084" x2="15.24" y2="31.75" width="0.6096" layer="16"/>
</signal>
<signal name="3.3V">
<contactref element="JP1" pad="1"/>
<contactref element="D2" pad="K"/>
<contactref element="D1" pad="K"/>
<wire x1="33.02" y1="26.67" x2="33.208" y2="26.858" width="0.6096" layer="16"/>
<wire x1="33.02" y1="26.67" x2="50.8" y2="26.67" width="0.6096" layer="16"/>
<contactref element="U$1" pad="36"/>
<wire x1="12.7" y1="54.864" x2="12.446" y2="54.61" width="0.6096" layer="16"/>
<wire x1="12.446" y1="54.61" x2="7.62" y2="54.61" width="0.6096" layer="16"/>
<wire x1="7.62" y1="54.61" x2="5.08" y2="52.07" width="0.6096" layer="16"/>
<wire x1="5.08" y1="52.07" x2="5.08" y2="26.67" width="0.6096" layer="16"/>
<wire x1="5.08" y1="26.67" x2="33.02" y2="26.67" width="0.6096" layer="16"/>
<wire x1="50.988" y1="31.447" x2="50.988" y2="26.858" width="0.6096" layer="16"/>
<wire x1="50.988" y1="26.858" x2="50.8" y2="26.67" width="0.6096" layer="16"/>
<wire x1="7.62" y1="19.05" x2="7.62" y2="16.51" width="0.6096" layer="16"/>
<wire x1="7.62" y1="16.51" x2="7.62" y2="13.97" width="0.6096" layer="16"/>
<wire x1="7.62" y1="16.51" x2="2.54" y2="16.51" width="0.6096" layer="16"/>
<wire x1="2.54" y1="16.51" x2="2.54" y2="26.67" width="0.6096" layer="16"/>
<wire x1="2.54" y1="26.67" x2="5.08" y2="26.67" width="0.6096" layer="16"/>
</signal>
<signal name="TX">
<contactref element="U$1" pad="3"/>
<contactref element="JP1" pad="3"/>
<wire x1="17.78" y1="37.084" x2="17.78" y2="33.655" width="0.6096" layer="16"/>
<wire x1="46.355" y1="33.655" x2="46.99" y2="33.02" width="0.6096" layer="16"/>
<wire x1="46.99" y1="33.02" x2="46.988" y2="33.018" width="0.6096" layer="16"/>
<wire x1="46.988" y1="33.018" x2="46.988" y2="31.447" width="0.6096" layer="16"/>
<wire x1="17.78" y1="33.655" x2="46.355" y2="33.655" width="0.6096" layer="16"/>
</signal>
<signal name="RX">
<contactref element="U$1" pad="4"/>
<contactref element="JP1" pad="2"/>
<wire x1="20.32" y1="37.084" x2="20.32" y2="34.798" width="0.6096" layer="16"/>
<wire x1="48.988" y1="33.689" x2="48.988" y2="31.447" width="0.6096" layer="16"/>
<wire x1="20.32" y1="34.798" x2="47.879" y2="34.798" width="0.6096" layer="16"/>
<wire x1="47.879" y1="34.798" x2="48.988" y2="33.689" width="0.6096" layer="16"/>
</signal>
<signal name="N$2">
<contactref element="D2" pad="A"/>
<contactref element="R1" pad="P$2"/>
<wire x1="5.08" y1="19.05" x2="5.08" y2="22.86" width="0.6096" layer="16"/>
<wire x1="5.08" y1="22.86" x2="11.43" y2="22.86" width="0.6096" layer="16"/>
<wire x1="11.43" y1="22.86" x2="11.43" y2="19.05" width="0.6096" layer="16"/>
</signal>
<signal name="N$3">
<contactref element="D1" pad="A"/>
<contactref element="R2" pad="P$2"/>
<wire x1="5.08" y1="13.97" x2="6.35" y2="12.7" width="0.6096" layer="16"/>
<wire x1="6.35" y1="12.7" x2="6.35" y2="8.89" width="0.6096" layer="16"/>
<wire x1="6.35" y1="8.89" x2="10.16" y2="8.89" width="0.6096" layer="16"/>
</signal>
<signal name="D0">
<contactref element="R2" pad="P$1"/>
<contactref element="U$1" pad="25"/>
<wire x1="40.64" y1="48.26" x2="41.91" y2="46.99" width="0.6096" layer="16"/>
<wire x1="41.91" y1="46.99" x2="60.96" y2="46.99" width="0.6096" layer="16"/>
<wire x1="40.64" y1="54.864" x2="40.64" y2="48.26" width="0.6096" layer="16"/>
<wire x1="60.96" y1="46.99" x2="60.96" y2="21.59" width="0.6096" layer="16"/>
<wire x1="60.96" y1="21.59" x2="15.24" y2="21.59" width="0.6096" layer="16"/>
<wire x1="15.24" y1="21.59" x2="15.24" y2="12.7" width="0.6096" layer="16"/>
<wire x1="15.24" y1="12.7" x2="17.78" y2="8.89" width="0.6096" layer="16"/>
</signal>
<signal name="VIN">
<contactref element="U$1" pad="1"/>
</signal>
<signal name="C5">
<contactref element="U$1" pad="24"/>
<contactref element="R1" pad="P$1"/>
<wire x1="43.18" y1="49.53" x2="63.5" y2="49.53" width="0.6096" layer="16"/>
<wire x1="63.5" y1="19.05" x2="19.05" y2="19.05" width="0.6096" layer="16"/>
<wire x1="63.5" y1="49.53" x2="63.5" y2="19.05" width="0.6096" layer="16"/>
<wire x1="43.18" y1="54.864" x2="43.18" y2="49.53" width="0.6096" layer="16"/>
</signal>
</signals>
</board>
</drawing>
<compatibility>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports Fusion synchronisation.
This feature will not be available in this version and saving
the document will break the link to the Fusion PCB feature.
</note>
</compatibility>
</eagle>

extension: brd


text:
package cassgowary

import (
	"fmt"
	"strings"

	"github.com/emirpasic/gods/maps/linkedhashmap"
)

type row struct {
	constant float64
	cells    *linkedhashmap.Map
}

func (r *row) String() string {
	info := []string{
		fmt.Sprintf("constant:%f cells:", r.constant),
	}
	r.cells.Each(func(k, v interface{}) {
		info = append(info,
			fmt.Sprintf("%s:%f", k, v),
		)
	})
	return strings.Join(info, " ")
}

func newRow() *row {
	return &row{
		cells: linkedhashmap.New(),
	}
}

func newRowWith(constant float64) *row {
	r := newRow()
	r.constant = constant
	return r
}

func newRowFrom(other *row) *row {
	r := &row{
		cells:    linkedhashmap.New(),
		constant: other.constant,
	}
	other.cells.Each(func(k, v interface{}) {
		r.cells.Put(k, v)
	})

	return r
}

//Add a constant value to the row constant.
func (r *row) add(value float64) float64 {
	r.constant += value
	return r.constant
}

// Insert a symbol into the row with a given coefficient.
// If the symbol already exists in the row, the coefficient will be
// added to the existing coefficient. If the resulting coefficient
// is zero, the symbol will be removed from the row
func (r *row) insertSymbol(s *symbol, coeffecient float64) {
	coeffecientRaw, exists := r.cells.Get(s)
	if exists {
		existingCoefficient := coeffecientRaw.(float64)
		coeffecient += existingCoefficient
	}

	if FloatNearZero(coeffecient) {
		r.cells.Remove(s)
		return
	}

	r.cells.Put(s, coeffecient)
}

// Insert a symbol into the row with a given coefficient.
// If the symbol already exists in the row, the coefficient will be
// added to the existing coefficient. If the resulting coefficient
// is zero, the symbol will be removed from the row
func (r *row) insertSymbolDefault(s *symbol) {
	r.insertSymbol(s, 1)
}

//Insert a row into this row with a given coefficient.
//The constant and the cells of the other row will be multiplied by
//the coefficient and added to this row. Any cell with a resulting
//coefficient of zero will be removed from the row.
func (r *row) insertRow(other *row, coefficient float64) {
	r.constant += other.constant * coefficient

	other.cells.Each(func(k, v interface{}) {
		s := k.(*symbol)
		coeff := v.(float64) * coefficient

		var temp float64
		if x, exists := r.cells.Get(s); exists {
			temp = x.(float64)
		}
		temp += coeff
		r.cells.Put(s, temp)
		if FloatNearZero(temp) {
			r.cells.Remove(s)
		}
	})
}

func (r *row) insertFromDefault(other *row) {
	r.insertRow(other, 1)
}

func (r *row) remove(s *symbol) {
	r.cells.Remove(s)
}

func (r *row) reverseSign() {
	r.constant *= -1
	r.cells.Each(func(k, v interface{}) {
		r.cells.Put(k, -v.(float64))
	})
}

// Solve the row for the given symbol.
// This method assumes the row is of the form a * x + b * y + c = 0
// and (assuming solve for x) will modify the row to represent the
// right hand side of x = -b/a * y - c / a. The target symbol will
// be removed from the row, and the constant and other cells will
// be multiplied by the negative inverse of the target coefficient.
// The given symbol *must* exist in the row.
func (r *row) solveFor(s *symbol) {
	v, _ := r.cells.Get(s)
	value := v.(float64)
	coeff := -1 / value
	r.cells.Remove(s)
	r.constant *= coeff

	newCells := linkedhashmap.New()
	r.cells.Each(func(k, v interface{}) {
		value := v.(float64)
		value *= coeff
		newCells.Put(k, value)
	})
	r.cells = newCells
}

//  Solve the row for the given symbols.
//  This method assumes the row is of the form x = b * y + c and will
//  solve the row such that y = x / b - c / b. The rhs symbol will be
//  removed from the row, the lhs added, and the result divided by the
//  negative inverse of the rhs coefficient.
//  The lhs symbol *must not* exist in the row, and the rhs symbol
//  must* exist in the row.
func (r *row) solveForSymbols(lhs, rhs *symbol) {
	r.insertSymbol(lhs, -1.0)
	r.solveFor(rhs)
}

// Get the coefficient for the given symbol.
//

// If the symbol does not exist in the row, zero will be returned.
func (r *row) coefficientFor(s *symbol) float64 {
	if v, exists := r.cells.Get(s); exists {
		f := v.(float64)
		return f
	}
	return 0
}

// Substitute a symbol with the data from another row.
//

// Given a row of the form a * x + b and a substitution of the
// form x = 3 * y + c the row will be updated to reflect the
// expression 3 * a * y + a * c + b.
// If the symbol does not exist in the row, this is a no-op.
func (r *row) substitute(s *symbol, other *row) {
	if c, exists := r.cells.Get(s); exists {
		coefficient := c.(float64)
		r.cells.Remove(s)
		r.insertRow(other, coefficient)
	}
}

// Test whether a row is composed of all dummy variables.
func (r *row) allDummies() bool {
	return r.cells.All(func(k, v interface{}) bool {
		s := k.(*symbol)
		return s != nil && s.kind == symbolDummy
	})
}

license_type: permissive

branch_name: refs/heads/master

extension: go


text:
package body

import (
	"bytes"
	"encoding/json"
	"io"
	"io/ioutil"

	"github.com/tidwall/sjson"
)

type JSON struct {
	buffer []byte
}

func NewJSON() *JSON {
	return &JSON{
		buffer: []byte{},
	}
}

func (body *JSON) Type() string {
	return "application/json"
}

func (body *JSON) Encode() io.ReadCloser {
	return &ReadCloser{bytes.NewBuffer(body.buffer)}
}

func (body *JSON) SetItem(k string, v interface{}) error {
	modified, err := sjson.SetBytesOptions(body.buffer, k, v, &sjson.Options{
		Optimistic:     true,
		ReplaceInPlace: true,
	})
	body.buffer = modified
	return err
}

func (body *JSON) Set(value interface{}) error {
	// TODO: add to current data
	switch v := value.(type) {
	case string:
		body.buffer = []byte(v)
	case []byte:
		// TODO: validate json?
		body.buffer = v
	case io.Reader:
		data, err := ioutil.ReadAll(v)
		if err != nil {
			return err
		}

		body.buffer = data
	default:
		data, err := json.Marshal(value)
		if err != nil {
			return err
		}

		body.buffer = data
	}

	return nil
}

func (body *JSON) IsEmpty() bool {
	return len(body.buffer) == 0
}

license: MIT


text:
////////////////////////////////////////////////////////////////////////////////
// si4703.h
////////////////////////////////////////////////////////////////////////////////

#include <string>
#include <cstdint>

#include "GD32VF103/time.h"

#pragma once

class Si4703
{
public:

  Si4703() ;
  Si4703(const Si4703&) = delete ;
  Si4703& operator=(const Si4703&) = delete ;

  bool setup() ;

  bool read(uint8_t cnt = 0x10) const ;
  bool write(uint8_t cnt = 0x10) ;

  bool enable() ;
  bool disable() ;

  bool seek(bool up) ;
  bool volume(bool up) ;
  uint8_t volume() const ;
  bool stereo(bool on) ;
  bool stereo() const ;
  bool stereoInd() const ;
  uint16_t channel() const ; // in 100kHz
  bool channel(uint16_t chan) ; // in 100kHz
  uint8_t rssi() const ;

  void rds() ;
  bool rdsStationValid() const ;
  const std::string& rdsStationText() const ;
  bool rdsTimeValid() const ;
  std::string rdsTimeText() ;
  bool rdsTextValid() const ;
  const std::string& rdsTextText() const ;

private:
  void rdsStation(uint8_t offset, char ch1, char ch2) ;
  void rdsTime(uint16_t hi, uint16_t lo) ;
  void rdsText(uint8_t offset, char ch1, char ch2, char ch3, char ch4) ;

#pragma pack(push, 1)
  union
  {
    mutable uint16_t _data[0x10] ;
    struct
    {
      uint16_t _deviceId ;    //  0
      uint16_t _chipId ;      //  1
      uint16_t _powerCfg ;    //  2
      uint16_t _channel ;     //  3
      uint16_t _sysConfig1 ;  //  4
      uint16_t _sysConfig2 ;  //  5
      uint16_t _sysConfig3 ;  //  6
      uint16_t _test1 ;       //  7
      uint16_t _test2 ;       //  8
      uint16_t _bootConfig ;  //  9
      uint16_t _statusRssi ;  // 10
      uint16_t _readChan ;    // 11
      uint16_t _rdsA ;        // 12
      uint16_t _rdsB ;        // 13
      uint16_t _rdsC ;        // 14
      uint16_t _rdsD ;        // 15
    } ;
  } ;
#pragma pack(pop)
  volatile bool _irqRdsInd{false} ;

  char    _rdsStationText[8] ;
  uint8_t _rdsStationValid{0x00} ;
  std::string _rdsStationStr ;

  char    _rdsTimeText[8] ;
  uint8_t _rdsTimeValid{0x00} ;
  uint8_t _rdsTimeH, _rdsTimeM, _rdsTimeS ;
  uint64_t _rdsTimeTick ;
  ::RV::GD32VF103::TickTimer _rdsTimeTimer{1000, true, true} ;

  char    _rdsTextText[64] ;
  uint8_t _rdsTextLen{0} ;
  uint16_t _rdsTextValid{0x0000} ;
  std::string _rdsTextStr ;
} ;

////////////////////////////////////////////////////////////////////////////////
// EOF
////////////////////////////////////////////////////////////////////////////////

extension: h


text:
SECTION = "devel/chicken"
DESCRIPTION = "Bindings to the OpenSSL SSL/TLS library"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://openssl.meta;md5=e9ffa5abea8ae6526bc8045a8cb2aa4b"
DEPENDS_append_class-cross = " openssl-native"
DEPENDS_append_class-crosssdk = " openssl-native"
DEPENDS_append_class-nativesdk = " nativesdk-openssl"
DEPENDS = " openssl"

SRC_URI = "http://code.call-cc.org/egg-tarballs/4/openssl/openssl-${PV}.tar.gz"

SRC_URI[md5sum] = "bca5006df122e8bf2e898ec05cde5eda"
SRC_URI[sha256sum] = "b48d40bd7f12639d6408443444faf536cc8731870c919bb1090bbb8ad66e5147"

S = "${WORKDIR}/openssl-${PV}"

inherit chicken_install

BBCLASSEXTEND = "cross crosssdk nativesdk"

repository: OSSystems/meta-chicken

repo_name: OSSystems/meta-chicken

extension: bb