text:
="R270"/>
</element>
<element name="R12" library="microbuilder" package="0603-NO" value="100k" x="18.796" y="49.784" smashed="yes">
<attribute name="NAME" x="15.24" y="49.403" size="0.8128" layer="25" font="vector" ratio="18"/>
<attribute name="VALUE" x="14.986" y="50.292" size="0.4064" layer="27" font="vector" ratio="10"/>
</element>
<element name="R3" library="microbuilder" package="0603-NO" value="1K" x="18.796" y="48.006" smashed="yes">
<attribute name="NAME" x="16.002" y="48.133" size="0.8128" layer="25" font="vector" ratio="18"/>
<attribute name="VALUE" x="16.51" y="47.498" size="0.4064" layer="27" font="vector" ratio="10"/>
</element>
<element name="R4" library="microbuilder" package="0603-NO" value="806K" x="23.368" y="34.544" rot="R180"/>
<element name="R5" library="microbuilder" package="0603-NO" value="100K" x="23.622" y="47.498" smashed="yes" rot="R180">
<attribute name="NAME" x="26.67" y="47.879" size="0.8128" layer="25" font="vector" ratio="18" rot="R180"/>
<attribute name="VALUE" x="26.67" y="48.514" size="0.4064" layer="27" font="vector" ratio="10" rot="R180"/>
</element>
<element name="R6" library="microbuilder" package="0603-NO" value="2M" x="23.368" y="32.512" smashed="yes">
<attribute name="NAME" x="20.32" y="32.639" size="0.8128" layer="25" font="vector" ratio="18"/>
<attribute name="VALUE" x="20.828" y="32.004" size="0.4064" layer="27" font="vector" ratio="10"/>
</element>
<element name="R7" library="microbuilder" package="0603-NO" value="10K" x="7.112" y="48.006" smashed="yes" rot="R90">
<attribute name="NAME" x="6.477" y="46.99" size="0.8128" layer="25" font="vector" ratio="18" rot="R90"/>
<attribute name="VALUE" x="6.35" y="48.514" size="0.4064" layer="27" font="vector" ratio="10" rot="R90"/>
</element>
<element name="R8" library="microbuilder" package="0603-NO" value="10K" x="18.796" y="41.656" smashed="yes" rot="R180">
<attribute name="NAME" x="16.51" y="42.545" size="0.8128" layer="25" font="vector" ratio="18" rot="R270"/>
<attribute name="VALUE" x="20.32" y="40.894" size="0.4064" layer="27" font="vector" ratio="10" rot="R180"/>
</element>
<element name="R9" library="microbuilder" package="0603-NO" value="1K" x="18.796" y="46.228" smashed="yes" rot="R180">
<attribute name="NAME" x="18.796" y="45.593" size="0.8128" layer="25" font="vector" ratio="18" rot="R180"/>
<attribute name="VALUE" x="20.32" y="45.466" size="0.4064" layer="27" font="vector" ratio="10" rot="R180"/>
</element>
<element name="SJ2" library="microbuilder" package="SOLDERJUMPER_CLOSEDWIRE" value="BAT" x="13.462" y="48.514" smashed="yes" rot="MR90">
<attribute name="NAME" x="14.732" y="47.625" size="0.8128" layer="26" ratio="18" rot="MR90"/>
<attribute name="VALUE" x="11.557" y="48.006" size="0.4064" layer="28" ratio="10" rot="MR90"/>
</element>
<element name="SWD" library="SparkFun-Connectors" package="1X04_LOCK@1" value="" x="13.716" y="52.07" smashed="yes" rot="R180">
<attribute name="NAME" x="2.6162" y="53.5432" size="1.27" layer="25" ratio="10" rot="R270"/>
<attribute name="VALUE" x="14.986" y="55.245" size="1.27" layer="27" rot="R180"/>
</element>
<element name="TP1" library="SparkFun-Connectors" library_urn="urn:adsk.eagle:library:513" package="PAD.03X.03" value="TEST-POINT3" x="16.002" y="48.26" rot="MR0"/>
<element name="TP2" library="SparkFun-Connectors" library_urn="urn:adsk.eagle:library:513" package="PAD.03X.03" value="TEST-POINT3" x="16.002" y="49.53" rot="MR0"/>
<element name="U1" library="BMD-300" package="BMD-300" value="" x="13.97" y="36.322" rot="R90"/>
<element name="U2" library="microbuilder" package="SOT23-5" value="AP2112(3.3V)" x="23.622" y="50.8" smashed="yes">
<attribute name="NAME" x="20.774" y="51.816" size="0.8128" layer="25" ratio="18"/>
<attribute name="VALUE" x="26.108" y="48.895" size="0.4064" layer="27" ratio="10" rot="R90"/>
</element>
<element name="U3" library="microbuilder" package="SOT23-5" value="MCP73831T-2ACI/OT" x="23.622" y="38.1" smashed="yes">
<attribute name="NAME" x="20.774" y="36.068" size="0.8128" layer="25" ratio="18"/>
<attribute name="VALUE" x="24.076" y="35.941" size="0.4064" layer="27" ratio="10" rot="R180"/>
</element>
<element name="U4" library="microbuilder" package="QFN24_4MM_SMSC" value="CP2104" x="30.734" y="44.45" smashed="yes" rot="R270">
<attribute name="NAME" x="26.93" y="46.138" size="0.8128" layer="25" ratio="18"/>
<attribute name="VALUE" x="27.838" y="47.204" size="0.4064" layer="27" ratio="10"/>
</element>
<element name="X1" library="adafruit2" package="XTAL3215" value="32.768" x="12.192" y="34.798" smashed="yes" rot="R180">
<attribute name="NAME" x="13.222" y="35.982" size="1.016" layer="25" font="vector" rot="R180"/>
<attribute name="VALUE" x="15.046" y="34.868" size="1.016" layer="27" font="vector" rot="R180"/>
</element>
<element name="X4" library="microbuilder" package="MICRO-USB5+6P-SMD-0.65-B" value="20329" x="31.75" y="48.768" smashed="yes" rot="R180">
<attribute name="NAME" x="32.639" y="53.594" size="0.889" layer="25" ratio="11" rot="R180"/>
<attribute name="VALUE" x="35.814" y="53.467" size="0.889" layer="27" ratio="11" rot="R270"/>
</element>
<element name="JP3" library="SparkFun-Jumpers" library_urn="urn:adsk.eagle:library:528" package="SMT-JUMPER_3_1-NC_TRACE_SILK" package3d_urn="urn:adsk.eagle:package:39288/1" value="JUMPER-SMT_3_1-NC_TRACE_SILK" x="34.29" y="39.878" rot="MR270"/>
<element name="C4" library="SparkFun-Capacitors" library_urn="urn:adsk.eagle:library:510" package="0603" package3d_urn="urn:adsk.eagle:package:37414/1" value="22pF" x="9.398" y="34.29" smashed="yes" rot="R270">
<attribute name="NAME" x="7.874" y="35.052" size="0.6096" layer="25" font="vector" ratio="20" rot="R270" align="bottom-center"/>
<attribute name="PROD_ID" value="CAP-07876" x="9.398" y="34.29" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="VALUE" x="8.636" y="33.02" size="0.6096" layer="27" font="vector" ratio="20" rot="R270" align="top-center"/>
</element>
<element name="C2" library="SparkFun-Capacitors" library_urn="urn:adsk.eagle:library:510" package="0603" package3d_urn="urn:adsk.eagle:package:37414/1" value="22pF" x="15.24" y="34.036" smashed="yes" rot="R270">
<attribute name="NAME" x="16.002" y="34.798" size="0.6096" layer="25" font="vector" ratio="20" rot="R270" align="bottom-center"/>
<attribute name="PROD_ID" value="CAP-07876" x="15.24" y="34.036" size="1.778" layer="27" rot="R270" display="off"/>
<attribute name="VALUE" x="16.002" y="32.766" size="0.6096" layer="27" font="vector" ratio="20" rot="R90" align="top-center"/>
</element>
<element name="FD1" library="SparkFun-Aesthetics" library_urn="urn:adsk.eagle:library:507" package="FIDUCIAL-MICRO" package3d_urn="urn:adsk.eagle:package:37111/1" value="FIDUCIALUFIDUCIAL" x="5.334" y="32.004"/>
<element name="FD2" library="SparkFun-Aesthetics" library_urn="urn:adsk.eagle:library:507" package="FIDUCIAL-MICRO" package3d_urn="urn:adsk.eagle:package:37111/1" value="FIDUCIALUFIDUCIAL" x="39.116" y="53.086"/>
<element name="J1" library="banglet" package="1X2(2.5)" value="S2B-EH(LF)(SN)" x="28.829" y="36.83" smashed="yes">
<attribute name="NAME" x="27.559" y="38.227" size="0.6096" layer="25" font="vector" ratio="20"/>
</element>
<element name="LEDCONN" library="banglet" package="1X3(2.5)" value="WS2812B-LED-STRIPLEDCONN" x="37.719" y="45.339" rot="R270"/>
</elements>
<signals>
<signal name="TP">
<contactref element="U4" pad="THERM"/>
</signal>
<signal name="GND">
<contactref element="C6" pad="2"/>
<contactref element="C8" pad="2"/>
<contactref element="U2" pad="2"/>
<contactref element="R12" pad="1"/>
<contactref element="C5" pad="2"/>
<contactref element="R8" pad="2"/>
<contactref element="U3" pad="2"/>
<contactref element="R6" pad="2"/>
<contactref element="C12" pad="2"/>
<contactref element="U4" pad="2"/>
<contactref element="C10" pad="2"/>
<contactref element="SWD" pad="1"/>
<contactref element="U1" pad="P16"/>
<contactref element="U1" pad="P18"/>
<contactref element="C1" pad="2"/>
<contactref element="U1" pad="P47"/>
<contactref element="U1" pad="P1"/>
<contactref element="U1" pad="P2"/>
<contactref element="U1" pad="P3"/>
<contactref element="U1" pad="P4"/>
<contactref element="U1" pad="P5"/>
<contactref element="U1" pad="P46"/>
<contactref element="U1" pad="P45"/>
<contactref element="U1" pad="P30"/>
<contactref element="U1" pad="P29"/>
<contactref element="X4" pad="5"/>
<contactref element="X4" pad="S1"/>
<contactref element="X4" pad="S2"/>
<contactref element="X4" pad="S3"/>
<contactref element="X4" pad="S4"/>
<contactref element="X4" pad="S5"/>
<contactref element="X4" pad="S6"/>
<polygon width="0.1524" layer="1">
<vertex x="0" y="53.848"/>
<vertex x="39.878" y="53.848"/>
<vertex x="39.878" y="31.242"/>
<vertex x="0" y="31.242"/>
</polygon>
<polygon width="0.1524" layer="16">
<vertex x="0" y="53.848"/>
<vertex x="39.878" y="53.848"/>
<vertex x="39.878" y="31.242"/>
<vertex x="0" y="31.242"/>
</polygon>
<contactref element="C4" pad="2"/>
<contactref element="C2" pad="2"/>
<via x="7.62" y="43.18" extent="1-16" drill="0.35"/>
<via x="9.652" y="43.18" extent="1-16" drill="0.35"/>
<via x="9.652" y="41.148" extent="1-16" drill="0.35"/>
<via x="7.62" y="41.148" extent="1-16" drill="0.35"/>
<via x="5.588" y="41.148" extent="1-16" drill="0.35"/>
<via x="5.588" y="39.116" extent="1-16" drill="0.35"/>
<via x="7.62" y="39.116" extent="1-16" drill="0.35"/>
<via x="9.652" y="39.116" extent="1-16" drill="0.35"/>
<via x="23.622" y="38.1" extent="1-16" drill="0.35"/>
<via x="25.146" y="33.528" extent="1-16" drill="0.35"/>
<via x="34.798" y="46.228" extent="1-16" drill="0.35"/>
<via x="36.576" y="49.276" extent="1-16" drill="0.35"/>
<via x="26.924" y="49.276" extent="1-16" drill="0.35"/>
<via x="24.384" y="50.8" extent="1-16" drill="0.35"/>
<via x="18.796" y="42.672" extent="1-16" drill="0.35"/>
<via x="18.796" y="40.64" extent="1-16" drill="0.35"/>
<via x="18.796" y="35.56" extent="1-16" drill="0.35"/>
<via x="16.256" y="33.274" extent="1-16" drill="0.35"/>
<via x="9.398" y="32.258" extent="1-16" drill="0.35"/>
<via x="15.24" y="32.004" extent="1-16" drill="0.35"/>
<via x="14.478" y="36.322" extent="1-16" drill="0.35"/>
<wire x1="14.478" y1="36.322" x2="13.97" y2="36.83" width="0.1524" layer="16"/>
<wire x1="13.97" y1="36.83" x2="13.462" y2="36.83" width="0.1524" layer="16"/>
<wire x1="12.52" y1="38.472" x2="12.402" y2="38.354" width="0.1524" layer="1"/>
<wire x1="12.402" y1="38.354" x2="11.938" y2="38.354" width="0.1524" layer="1"/>
<wire x1="11.938" y1="38.354" x2="11.938" y2="38.862" width="0.1524" layer="1"/>
<wire x1="11.938" y1="38.862" x2="11.684" y2="39.116" width="0.1524" layer="1"/>
<wire x1="4.62" y1="39.572" x2="5.132" y2="39.572" width="0.1524" layer="1"/>
<wire x1="5.132" y1="39.572" x2="5.588" y2="39.116" width="0.1524" layer="1"/>
<wire x1="5.17" y1="37.722" x2="5.17" y2="38.698" width="0.1524" layer="1"/>
<wire x1="5.17" y1="38.698" x2="5.588" y2="39.116" width="0.1524" layer="1"/>
<via x="16.764" y="50.546" extent="1-16" drill="0.35"/>
<wire x1="24.384" y1="50.8" x2="23.622" y2="50.038" width="0.254" layer="16"/>
<wire x1="23.622" y1="50.038" x2="23.622" y2="49.276" width="0.254" layer="16"/>
<wire x1="16.764" y1="50.546" x2="17.526" y2="49.784" width="0.254" layer="16"/>
<wire x1="17.526" y1="49.784" x2="17.78" y2="49.784" width="0.254" layer="16"/>
<wire x1="17.846" y1="43.942" x2="17.846" y2="42.86" width="0.254" layer="1"/>
<wire x1="18.034" y1="42.672" x2="17.846" y2="42.86" width="0.254" layer="1"/>
<wire x1="18.796" y1="42.672" x2="18.034" y2="42.672" width="0.254" layer="1"/>
<wire x1="17.946" y1="41.656" x2="17.946" y2="42.584" width="0.254" layer="1"/>
<wire x1="17.946" y1="42.584" x2="18.034" y2="42.672" width="0.254" layer="1"/>
<wire x1="23.622" y1="36.7999" x2="23.622" y2="38.1" width="0.254" layer="1"/>
<wire x1="24.218" y1="32.512" x2="25.146" y2="32.512" width="0.254" layer="1"/>
<wire x1="25.146" y1="32.512" x2="25.146" y2="33.528" width="0.254" layer="1"/>
<wire x1="5.17" y1="37.722" x2="6.27" y2="37.722" width="0.1524" layer="1"/>
<wire x1="6.82" y1="36.822" x2="5.72" y2="36.822" width="0.1524" layer="1"/>
<wire x1="5.72" y1="36.822" x2="4.62" y2="36.822" width="0.1524" layer="1"/>
<wire x1="4.62" y1="36.822" x2="4.62" y2="39.572" width="0.1524" layer="1"/>
<wire x1="4.62" y1="39.572" x2="4.62" y2="42.872" width="0.1524" layer="1"/>
<wire x1="4.62" y1="42.872" x2="4.62" y2="45.622" width="0.1524" layer="1"/>
<wire x1="13.42" y1="44.522" x2="13.42" y2="45.622" width="0.1524" layer="1"/>
<wire x1="23.622" y1="49.4999" x2="23.622" y2="50.038" width="0.1524" layer="1"/>
<wire x1="23.622" y1="50.038" x2="24.384" y2="50.8" width="0.1524" layer="1"/>
<via x="29.972" y="45.212" extent="1-16" drill="0.35"/>
<via x="31.496" y="45.212" extent="1-16" drill="0.35"/>
<via x="31.496" y="43.688" extent="1-16" drill="0.35"/>
<via x="29.972" y="43.688" extent="1-16" drill="0.35"/>
<wire x1="30.45" y1="49.018" x2="30.273" y2="49.195" width="0.1524" layer="1"/>
<wire x1="30.273" y1="49.195" x2="28.35" y2="49.195" width="0.1524" layer="1"/>
<wire x1="28.35" y1="49.195" x2="28.269" y2="49.276" width="0.1524" layer="1"/>
<wire x1="28.269" y1="49.276" x2="26.924" y2="49.276" width="0.1524" layer="1"/>
<wire x1="35.15" y1="49.195" x2="36.495" y2="49.195" width="0.1524" layer="1"/>
<wire x1="36.495" y1="49.195" x2="36.576" y2="49.276" width="0.1524" layer="1"/>
<wire x1="26.924" y1="43.368" x2="26.924" y2="44.45" width="0.1524" layer="1"/>
<via x="26.924" y="44.45" extent="1-16" drill="0.35"/>
<wire x1="15.142" y1="45.622" x2="13.42" y2="45.622" width="0.1524" layer="1"/>
<wire x1="17.846" y1="36.83" x2="17.846" y2="36.51" width="0.254" layer="1"/>
<wire x1="17.846" y1="39.37" x2="17.846" y2="39.69" width="0.254" layer="1"/>
<wire x1="17.846" y1="39.69" x2="18.796" y2="40.64" width="0.254" layer="1"/>
<wire x1="18.796" y1="40.64" x2="18.796" y2="40.806" width="0.254" layer="1"/>
<wire x1="18.796" y1="40.806" x2="17.946" y2="41.656" width="0.254" layer="1"/>
<wire x1="17.946" y1="41.656" x2="17.946" y2="41.822" width="0.254" layer="1"/>
<wire x1="17.946" y1="41.822" x2="18.796" y2="42.672" width="0.254" layer="1"/>
<wire x1="18.796" y1="42.672" x2="17.846" y2="43.622" width="0.254" layer="1"/>
<wire x1="17.846" y1="43.622" x2="17.846" y2="43.942" width="0.254" layer="1"/>
<via x="13.462" y="46.482" extent="1-16" drill="0.35"/>
<wire x1="13.462" y1="46.482" x2="13.462" y2="45.664" width="0.1524" layer="1"/>
<wire x1="13.462" y1="45.664" x2="13.42" y2="45.622" width="0.1524" layer="1"/>
<wire x1="31.5468" y1="46.863" x2="31.5468" y2="46.482" width="0.1524" layer="1"/>
<wire x1="31.7754" y1="47.0916" x2="31.5468" y2="46.863" width="0.1524" layer="1"/>
<wire x1="33.909" y1="47.0916" x2="31.7754" y2="47.0916" width="0.1524" layer="1"/>
<wire x1="34.7472" y1="46.2534" x2="33.909" y2="47.0916" width="0.1524" layer="1"/>
<wire x1="31.5468" y1="46.482" x2="31.484" y2="46.45" width="0.1524" layer="1"/>
<wire x1="34.7472" y1="46.2534" x2="34.798" y2="46.228" width="0.1524" layer="1"/>
<wire x1="28.448" y1="36.83" x2="25.146" y2="33.528" width="0.254" layer="1"/>
<contactref element="J1" pad="1"/>
<via x="37.719" y="37.719" extent="1-16" drill="0.35"/>
<wire x1="37.719" y1="37.719" x2="37.719" y2="39.1306" width="0.1524" layer="1"/>
<contactref element="LEDCONN" pad="3"/>
</signal>
<signal name="3.3V" class="1">
<contactref element="C8" pad="1"/>
<contactref element="U2" pad="5"/>
<contactref element="R7" pad="2"/>
<contactref element="D4" pad="C"/>
<contactref element="U4" pad="5"/>
<contactref element="U4" pad="7"/>
<contactref element="U4" pad="6"/>
<contactref element="C10" pad="1"/>
<contactref element="U1" pad="P17"/>
<contactref element="C1" pad="1"/>
<contactref element="SWD" pad="2"/>
<contactref element="JP3" pad="1"/>
<wire x1="34.29" y1="40.894" x2="32.766" y2="40.894" width="0.254" layer="16"/>
<via x="32.766" y="40.894" extent="1-16" drill="0.35"/>
<wire x1="22.672" y1="52.1001" x2="22.672" y2="50.988" width="0.254" layer="1"/>
<wire x1="22.672" y1="50.988" x2="22.86" y2="50.8" width="0.254" layer="1"/>
<via x="22.86" y="50.8" extent="1-16" drill="0.35"/>
<wire x1="11.43" y1="49.276" x2="11.43" y2="51.943" width="0.254" layer="1"/>
<wire x1="11.43" y1="51.943" x2="11.176" y2="52.197" width="0.254" layer="1"/>
<wire x1="28.734" y1="45.7" x2="29.484" y2="46.45" width="0.254" layer="1"/>
<wire x1="29.484" y1="46.45" x2="29.984" y2="46.45" width="0.254" layer="1"/>
<wire x1="28.734" y1="45.7" x2="28.702" y2="45.732" width="0.254" layer="1"/>
<wire x1="28.702" y1="45.732" x2="28.702" y2="46.736" width="0.254" layer="1"/>
<via x="28.702" y="46.736" extent="1-16" drill="0.35"/>
<wire x1="19.746" y1="36.83" x2="19.746" y2="39.37" width="0.254" layer="1"/>
<wire x1="19.746" y1="36.83" x2="19.61113125" y2="36.83" width="0.254" layer="1"/>
<wire x1="19.61113125" y1="36.83" x2="18.58173125" y2="37.8594" width="0.254" layer="1"/>
<wire x1="13.4826" y1="37.8594" x2="13.42" y2="37.922" width="0.254" layer="1"/>
<wire x1="18.58173125" y1="37.8594" x2="16.5354" y2="37.8594" width="0.254" layer="1"/>
<wire x1="16.5354" y1="37.8594" x2="15.494" y2="37.8594" width="0.254" layer="1"/>
<wire x1="15.494" y1="37.8594" x2="13.4826" y2="37.8594" width="0.254" layer="1"/>
<wire x1="7.1628" y1="51.5112" x2="7.1628" y2="48.9204" width="0.254" layer="1"/>
<wire x1="7.3914" y1="51.7398" x2="7.1628" y2="51.5112" width="0.254" layer="1"/>
<wire x1="7.3914" y1="52.4256" x2="7.3914" y2="51.7398" width="0.254" layer="1"/>
<wire x1="8.1534" y1="53.1876" x2="7.3914" y2="52.4256" width="0.254" layer="1"/>
<wire x1="10.2108" y1="53.1876" x2="8.1534" y2="53.1876" width="0.254" layer="1"/>
<wire x1="11.1252" y1="52.2732" x2="10.2108" y2="53.1876" width="0.254" layer="1"/>
<wire x1="7.1628" y1="48.9204" x2="7.112" y2="48.856" width="0.254" layer="1"/>
<wire x1="11.1252" y1="52.2732" x2="11.176" y2="52.197" width="0.254" layer="1"/>
<wire x1="22.86" y1="49.4538" x2="22.86" y2="49.7586" width="0.254" layer="16"/>
<wire x1="22.86" y1="49.7586" x2="22.86" y2="50.8" width="0.254" layer="16"/>
<wire x1="25.527" y1="46.7868" x2="22.86" y2="49.4538" width="0.254" layer="16"/>
<wire x1="28.6512" y1="46.7868" x2="25.527" y2="46.7868" width="0.254" layer="16"/>
<wire x1="28.6512" y1="46.7868" x2="28.702" y2="46.736" width="0.254" layer="16"/>
<wire x1="32.6898" y1="41.6052" x2="32.6898" y2="40.9956" width="0.254" layer="16"/>
<wire x1="30.5562" y1="43.7388" x2="32.6898" y2="41.6052" width="0.254" layer="16"/>
<wire x1="30.5562" y1="43.9674" x2="30.5562" y2="43.7388" width="0.254" layer="16"/>
<wire x1="29.9466" y1="44.577" x2="30.5562" y2="43.9674" width="0.254" layer="16"/>
<wire x1="29.718" y1="44.577" x2="29.9466" y2="44.577" width="0.254" layer="16"/>
<wire x1="28.7274" y1="45.5676" x2="29.718" y2="44.577" width="0.254" layer="16"/>
<wire x1="28.7274" y1="46.6344" x2="28.7274" y2="45.5676" width="0.254" layer="16"/>
<wire x1="32.6898" y1="40.9956" x2="32.766" y2="40.894" width="0.254" layer="16"/>
<wire x1="28.7274" y1="46.6344" x2="28.702" y2="46.736" width="0.254" layer="16"/>
<wire x1="12.4968" y1="50.9016" x2="11.2014" y2="52.197" width="0.254" layer="16"/>
<wire x1="12.4968" y1="50.8254" x2="12.4968" y2="50.9016" width="0.254" layer="16"/>
<wire x1="12.6492" y1="50.673" x2="12.4968" y2="50.8254" width="0.254" layer="16"/>
<wire x1="16.002" y1="50.673" x2="12.6492" y2="50.673" width="0.254" layer="16"/>
<wire x1="16.4592" y1="51.1302" x2="16.002" y2="50.673" width="0.254" layer="16"/>
<wire x1="19.9644" y1="51.1302" x2="16.4592" y2="51.1302" width="0.254" layer="16"/>
<wire x1="21.336" y1="49.7586" x2="19.9644" y2="51.1302" width="0.254" layer="16"/>
<wire x1="22.86" y1="49.7586" x2="21.336" y2="49.7586" width="0.254" layer="16"/>
<wire x1="11.2014" y1="52.197" x2="11.176" y2="52.197" width="0.254" layer="16"/>
<wire x1="16.5354" y1="45.6438" x2="16.5354" y2="37.8594" width="0.254" layer="1"/>
<wire x1="12.954" y1="49.2252" x2="16.5354" y2="45.6438" width="0.254" layer="1"/>
<wire x1="11.5062" y1="49.2252" x2="12.954" y2="49.2252" width="0.254" layer="1"/>
<wire x1="11.5062" y1="49.2252" x2="11.43" y2="49.276" width="0.254" layer="1"/>
<wire x1="15.494" y1="38.774" x2="15.494" y2="37.8594" width="0.254" layer="1"/>
</signal>
<signal name="VBUS" class="1">
<contactref element="R12" pad="2"/>
<contactref element="D5" pad="A"/>
<contactref element="Q3" pad="1"/>
<contactref element="U3" pad="4"/>
<contactref element="CHG" pad="A"/>
<contactref element="U4" pad="8"/>
<contactref element="X4" pad="1"/>
<wire x1="33.05" y1="49.018" x2="33.05" y2="47.976" width="0.254" layer="1"/>
<wire x1="33.05" y1="47.976" x2="33.274" y2="47.752" width="0.254" layer="1"/>
<via x="33.274" y="47.752" extent="1-16" drill="0.35"/>
<wire x1="24.572" y1="39.4001" x2="24.572" y2="43.164" width="0.254" layer="1"/>
<wire x1="24.572" y1="43.164" x2="25.472" y2="44.064" width="0.254" layer="1"/>
<wire x1="25.472" y1="44.064" x2="25.472" y2="45.466" width="0.254" layer="1"/>
<wire x1="25.472" y1="45.466" x2="25.738" y2="45.2" width="0.254" layer="1"/>
<wire x1="25.738" y1="45.2" x2="28.734" y2="45.2" width="0.254" layer="1"/>
<wire x1="19.646" y1="49.784" x2="19.646" y2="51.616" width="0.254" layer="1"/>
<wire x1="19.646" y1="51.616" x2="19.846" y2="51.816" width="0.254" layer="1"/>
<wire x1="19.846" y1="51.816" x2="19.846" y2="52.358" width="0.254" layer="1"/>
<wire x1="19.846" y1="52.358" x2="20.574" y2="53.086" width="0.254" layer="1"/>
<via x="20.574" y="53.086" extent="1-16" drill="0.35"/>
<wire x1="33.274" y1="47.752" x2="33.274" y2="52.324" width="0.254" layer="16"/>
<wire x1="33.274" y1="52.324" x2="32.512" y2="53.086" width="0.254" layer="16"/>
<wire x1="32.512" y1="53.086" x2="20.574" y2="53.086" width="0.254" layer="16"/>
<wire x1="25.4508" y1="52.5018" x2="25.4508" y2="45.5676" width="0.254" layer="1"/>
<wire x1="24.9174" y1="53.0352" x2="25.4508" y2="52.5018" width="0.254" layer="1"/>
<wire x1="20.6502" y1="53.0352" x2="24.9174" y2="53.0352" width="0.254" layer="1"/>
<wire x1="25.4508" y1="45.5676" x2="25.472" y2="45.466" width="0.254" layer="1"/>
<wire x1="20.6502" y1="53.0352" x2="20.574" y2="53.086" width="0.254" layer="1"/>
</signal>
<signal name="VBAT" class="1">
<contactref element="Q3" pad="3"/>
<contactref element="U3" pad="3"/>
<contactref element="C5" pad="1"/>
<contactref element="R4" pad="1"/>
<contactref element="JP3" pad="3"/>
<wire x1="26.924" y1="41.468" x2="27.752" y2="40.64" width="0.254" layer="1"/>
<wire x1="27.752" y1="40.64" x2="28.956" y2="40.64" width="0.254" layer="1"/>
<wire x1="23.622" y1="41.164" x2="23.352" y2="40.894" width="0.254" layer="1"/>
<wire x1="23.352" y1="40.894" x2="22.352" y2="40.894" width="0.254" layer="1"/>
<via x="22.352" y="40.894" extent="1-16" drill="0.35"/>
<wire x1="22.352" y1="40.894" x2="26.162" y2="40.894" width="0.254" layer="16"/>
<wire x1="26.162" y1="40.894" x2="26.924" y2="40.132" width="0.254" layer="16"/>
<via x="26.924" y="40.132" extent="1-16" drill="0.35"/>
<wire x1="26.924" y1="40.132" x2="26.924" y2="41.468" width="0.254" layer="1"/>
<wire x1="24.572" y1="36.7999" x2="24.572" y2="35.687" width="0.254" layer="1"/>
<wire x1="24.572" y1="35.687" x2="24.572" y2="34.898" width="0.254" layer="1"/>
<wire x1="24.572" y1="34.898" x2="24.218" y2="34.544" width="0.254" layer="1"/>
<wire x1="24.6888" y1="34.8996" x2="24.218" y2="34.544" width="0.254" layer="1"/>
<wire x1="33.8836" y1="38.862" x2="34.29" y2="38.862" width="0.1524" layer="16"/>
<wire x1="27.051" y1="38.1" x2="26.162" y2="36.576" width="0.254" layer="1"/>
<wire x1="26.162" y1="36.576" x2="24.572" y2="35.687" width="0.254" layer="1"/>
<wire x1="28.956" y1="40.64" x2="31.369" y2="38.227" width="0.254" layer="1"/>
<wire x1="27.051" y1="40.005" x2="27.051" y2="38.1" width="0.254" layer="1"/>
<wire x1="33.401" y1="38.862" x2="33.8836" y2="38.862" width="0.254" layer="16"/>
<wire x1="26.924" y1="40.132" x2="27.051" y2="40.005" width="0.254" layer="1"/>
<contactref element="J1" pad="2"/>
<wire x1="31.369" y1="38.227" x2="31.369" y2="36.87" width="0.254" layer="1"/>
<wire x1="31.369" y1="36.87" x2="31.329" y2="36.83" width="0.254" layer="1"/>
<wire x1="34.29" y1="38.862" x2="32.385" y2="38.862" width="0.254" layer="16"/>
<wire x1="32.385" y1="38.862" x2="31.329" y2="37.806" width="0.254" layer="16"/>
<wire x1="31.329" y1="37.806" x2="31.329" y2="36.83" width="0.254" layer="16"/>
</signal>
<signal name="EN">
<contactref element="U2" pad="3"/>
<contactref element="R5" pad="1"/>
<wire x1="24.572" y1="49.4999" x2="24.572" y2="47.598" width="0.1524" layer="1"/>
<wire x1="24.572" y1="47.598" x2="24.472" y2="47.498" width="0.1524" layer="1"/>
</signal>
<signal name="VIN" class="1">
<contactref element="D5" pad="C"/>
<contactref element="Q3" pad="2"/>
<contactref element="U2" pad="1"/>
<contactref element="C6" pad="1"/>
<contactref element="R5" pad="2"/>
<wire x1="21.772" y1="45.466" x2="22.672" y2="44.566" width="0.254" layer="1"/>
<wire x1="22.672" y1="44.566" x2="22.672" y2="43.164" width="0.254" layer="1"/>
<wire x1="21.772" y1="45.466" x2="20.248" y2="43.942" width="0.254" layer="1"/>
<wire x1="20.248" y1="43.942" x2="19.746" y2="43.942" width="0.254" layer="1"/>
<wire x1="22.772" y1="47.498" x2="22.772" y2="46.466" width="0.254" layer="1"/>
<wire x1="22.772" y1="46.466" x2="21.772" y2="45.466" width="0.254" layer="1"/>
<wire x1="22.672" y1="49.4999" x2="22.672" y2="47.598" width="0.254" layer="1"/>
<wire x1="22.672" y1="47.598" x2="22.772" y2="47.498" width="0.254" layer="1"/>
</signal>
<signal name="USBD+">
<contactref element="U4" pad="3"/>
<contactref element="X4" pad="3"/>
<wire x1="31.75" y1="49.018" x2="31.75" y2="47.9943875" width="0.1524" layer="1"/>
<wire x1="31.75" y1="47.9943875" x2="31.7274" y2="47.9717875" width="0.1524" layer="1"/>
<wire x1="31.7274" y1="47.9717875" x2="31.7274" y2="47.7294" width="0.1524" layer="1"/>
<wire x1="30.984" y1="46.986" x2="30.984" y2="46.45" width="0.1524" layer="1"/>
<wire x1="31.7274" y1="47.7294" x2="30.984" y2="46.986" width="0.1524" layer="1"/>
</signal>
<signal name="USBD-">
<contactref element="U4" pad="4"/>
<contactref element="X4" pad="2"/>
<wire x1="32.4" y1="49.018" x2="32.4" y2="47.894" width="0.1524" layer="1"/>
<wire x1="32.4" y1="47.894" x2="32.258" y2="47.752" width="0.1524" layer="1"/>
<via x="32.258" y="47.752" extent="1-16" drill="0.35"/>
<wire x1="32.258" y1="47.752" x2="32.004" y2="47.498" width="0.1524" layer="16"/>
<wire x1="32.004" y1="47.498" x2="30.734" y2="47.498" width="0.1524" layer="16"/>
<via x="30.734" y="47.498" extent="1-16" drill="0.35"/>
<wire x1="30.734" y1="47.498" x2="30.48" y2="46.454" width="0.1524" layer="1"/>
<wire x1="30.48" y1="46.454" x2="30.484" y2="46.45" width="0.1524" layer="1"/>
</signal>
<signal name="N$4">
<contactref element="CHG" pad="C"/>
<contactref element="R3" pad="1"/>
<wire x1="17.9832" y1="48.387" x2="17.9832" y2="48.006" width="0.1524" layer="1"/>
<wire x1="18.7452" y1="49.149" x2="17.9832" y2="48.387" width="0.1524" layer="1"/>
<wire x1="18.7452" y1="50.8254" x2="18.7452" y2="49.149" width="0.1524" layer="1"/>
<wire x1="17.7546" y1="51.816" x2="18.7452" y2="50.8254" width="0.1524" layer="1"/>
<wire x1="17.9832" y1="48.006" x2="17.946" y2="48.006" width="0.1524" layer="1"/>
<wire x1="17.7546" y1="51.816" x2="17.746" y2="51.816" width="0.1524" layer="1"/>
</signal>
<signal name="N$9">
<contactref element="R3" pad="2"/>
<contactref element="U3" pad="1"/>
<wire x1="20.6502" y1="48.006" x2="19.646" y2="48.006" width="0.1524" layer="1"/>
<wire x1="20.6502" y1="40.4622" x2="20.6502" y2="48.006" width="0.1524" layer="16"/>
<wire x1="20.6502" y1="38.7858" x2="20.6502" y2="40.4622" width="0.1524" layer="1"/>
<wire x1="22.6314" y1="36.8046" x2="20.6502" y2="38.7858" width="0.1524" layer="1"/>
<wire x1="22.6314" y1="36.8046" x2="22.672" y2="36.7999" width="0.1524" layer="1"/>
<via x="20.6502" y="48.006" extent="1-16" drill="0.254"/>
<via x="20.6502" y="40.4622" extent="1-16" drill="0.254"/>
</signal>
<signal name="N$10">
<contactref element="U3" pad="5"/>
<contactref element="R8" pad="1"/>
<wire x1="20.4978" y1="41.6052" x2="19.6596" y2="41.6052" width="0.1524" layer="1"/>
<wire x1="22.6314" y1="39.4716" x2="20.4978" y2="41.6052" width="0.1524" layer="1"/>
<wire x1="19.6596" y1="41.6052" x2="19.646" y2="41.656" width="0.1524" layer="1"/>
<wire x1="22.6314" y1="39.4716" x2="22.672" y2="39.4001" width="0.1524" layer="1"/>
</signal>
<signal name="A7/P0.31">
<contactref element="C12" pad="1"/>
<contactref element="R6" pad="1"/>
<contactref element="R4" pad="2"/>
<contactref element="U1" pad="P12"/>
<wire x1="22.518" y1="34.544" x2="22.518" y2="33.9852" width="0.1524" layer="1"/>
<wire x1="22.518" y1="33.9852" x2="22.518" y2="32.512" width="0.1524" layer="1"/>
<wire x1="9.9926875" y1="34.3614" x2="8.8033125" y2="34.3614" width="0.1524" layer="1"/>
<wire x1="8.8033125" y1="34.3614" x2="8.6694" y2="34.4953125" width="0.1524" layer="1"/>
<wire x1="8.6694" y1="34.4953125" x2="8.6694" y2="35.7846875" width="0.1524" layer="1"/>
<wire x1="11.342" y1="32.512" x2="11.342" y2="32.6247125" width="0.1524" layer="1"/>
<wire x1="11.342" y1="32.6247125" x2="10.2134" y2="33.7533125" width="0.1524" layer="1"/>
<wire x1="10.2134" y1="33.7533125" x2="10.2134" y2="34.1406875" width="0.1524" layer="1"/>
<wire x1="10.2134" y1="34.1406875" x2="9.9926875" y2="34.3614" width="0.1524" layer="1"/>
<wire x1="10.67" y1="36.2992875" x2="10.67" y2="37.722" width="0.1524" layer="1"/>
<wire x1="9.184" y1="36.2992875" x2="10.67" y2="36.2992875" width="0.1524" layer="1"/>
<wire x1="8.6694" y1="35.7846875" x2="9.184" y2="36.2992875" width="0.1524" layer="1"/>
<wire x1="14.478" y1="33.9852" x2="22.518" y2="33.9852" width="0.1524" layer="1"/>
<wire x1="13.7922" y1="33.2994" x2="14.478" y2="33.9852" width="0.1524" layer="1"/>
<wire x1="11.9634" y1="33.2994" x2="13.7922" y2="33.2994" width="0.1524" layer="1"/>
<wire x1="11.3538" y1="32.6898" x2="11.9634" y2="33.2994" width="0.1524" layer="1"/>
<wire x1="11.3538" y1="32.6898" x2="11.342" y2="32.512" width="0.1524" layer="1"/>
</signal>
<signal name="RESET">
<contactref element="R7" pad="1"/>
<contactref element="D4" pad="A"/>
<contactref element="SJ2" pad="1"/>
<contactref element="U1" pad="P39"/>
<wire x1="8.89" y1="49.276" x2="8.89" y2="48.934" width="0.1524" layer="1"/>
<wire x1="8.89" y1="48.934" x2="7.112" y2="47.156" width="0.1524" layer="1"/>
<wire x1="8.1534" y1="45.6438" x2="7.9248" y2="45.6438" width="0.1524" layer="1"/>
<wire x1="8.8392" y1="46.3296" x2="8.1534" y2="45.6438" width="0.1524" layer="1"/>
<wire x1="10.5664" y1="46.4566" x2="8.8392" y2="46.3296" width="0.1524" layer="1"/>
<wire x1="12.192" y1="47.7012" x2="11.1633" y2="46.6725" width="0.1524" layer="16"/>
<wire x1="11.1633" y1="46.6725" x2="10.5664" y2="46.4566" width="0.1524" layer="16"/>
<wire x1="13.4112" y1="47.7012" x2="12.192" y2="47.7012" width="0.1524" layer="16"/>
<wire x1="7.9248" y1="45.6438" x2="7.92" y2="45.622" width="0.1524" layer="1"/>
<wire x1="13.4112" y1="47.7012" x2="13.462" y2="47.752" width="0.1524" layer="16"/>
<wire x1="9.3726" y1="48.4632" x2="8.9154" y2="48.9204" width="0.1524" layer="1"/>
<wire x1="11.1633" y1="46.6725" x2="9.3726" y2="48.4632" width="0.1524" layer="16"/>
<wire x1="8.9154" y1="48.9204" x2="8.89" y2="49.276" width="0.1524" layer="1"/>
<via x="10.5664" y="46.4566" extent="1-16" drill="0.254"/>
<via x="9.3726" y="48.4632" extent="1-16" drill="0.254"/>
</signal>
<signal name="DTR">
<contactref element="C11" pad="2"/>
<contactref element="U4" pad="23"/>
<wire x1="33.6042" y1="45.2628" x2="32.766" y2="45.2628" width="0.1524" layer="1"/>
<wire x1="35.2044" y1="45.2628" x2="33.6042" y2="45.2628" width="0.1524" layer="16"/>
<wire x1="36.957" y1="47.0154" x2="35.2044" y2="45.2628" width="0.1524" layer="16"/>
<wire x1="38.1762" y1="47.0154" x2="36.957" y2="47.0154" width="0.1524" layer="16"/>
<wire x1="39.0906" y1="46.101" x2="38.1762" y2="47.0154" width="0.1524" layer="16"/>
<wire x1="39.0906" y1="42.2656" x2="39.0906" y2="46.101" width="0.1524" layer="16"/>
<wire x1="38.3794" y1="41.5544" x2="39.0906" y2="42.2656" width="0.1524" layer="16"/>
<wire x1="37.084" y1="41.5544" x2="38.3794" y2="41.5544" width="0.1524" layer="16"/>
<wire x1="35.8902" y1="40.1066" x2="37.084" y2="41.5544" width="0.1524" layer="16"/>
<wire x1="35.8902" y1="38.9636" x2="35.8902" y2="40.1066" width="0.1524" layer="16"/>
<wire x1="31.0896" y1="33.909" x2="35.8902" y2="38.9636" width="0.1524" layer="16"/>
<wire x1="25.527" y1="33.909" x2="31.0896" y2="33.909" width="0.1524" layer="16"/>
<wire x1="24.4602" y1="34.9758" x2="25.527" y2="33.909" width="0.1524" layer="16"/>
<wire x1="14.3256" y1="34.9758" x2="24.4602" y2="34.9758" width="0.1524" layer="16"/>
<wire x1="11.1252" y1="38.1762" x2="14.3256" y2="34.9758" width="0.1524" layer="16"/>
<wire x1="11.1252" y1="45.9486" x2="11.1252" y2="38.1762" width="0.1524" layer="16"/>
<wire x1="11.7602" y1="46.4566" x2="11.1252" y2="45.9486" width="0.1524" layer="16"/>
<wire x1="11.5062" y1="46.7868" x2="11.7602" y2="46.4566" width="0.1524" layer="1"/>
<wire x1="10.8204" y1="47.4726" x2="11.5062" y2="46.7868" width="0.1524" layer="1"/>
<wire x1="32.766" y1="45.2628" x2="32.734" y2="45.2" width="0.1524" layer="1"/>
<wire x1="10.8204" y1="47.4726" x2="10.756" y2="47.498" width="0.1524" layer="1"/>
<via x="33.6042" y="45.2628" extent="1-16" drill="0.254"/>
<via x="11.7602" y="46.4566" extent="1-16" drill="0.254"/>
</signal>
<signal name="N$13">
<contactref element="C11" pad="1"/>
<contactref element="SJ2" pad="2"/>
<wire x1="8.1534" y1="47.4726" x2="8.9916" y2="47.4726" width="0.1524" layer="1"/>
<wire x1="8.0772" y1="47.3964" x2="8.1534" y2="47.4726" width="0.1524" layer="1"/>
<wire x1="8.0772" y1="47.8536" x2="8.0772" y2="47.3964" width="0.1524" layer="16"/>
<wire x1="9.4488" y1="49.2252" x2="8.0772" y2="47.8536" width="0.1524" layer="16"/>
<wire x1="13.4112" y1="49.2252" x2="9.4488" y2="49.2252" width="0.1524" layer="16"/>
<wire x1="8.9916" y1="47.4726" x2="9.056" y2="47.498" width="0.1524" layer="1"/>
<wire x1="13.4112" y1="49.2252" x2="13.462" y2="49.276" width="0.1524" layer="16"/>
<via x="8.0772" y="47.3964" extent="1-16" drill="0.254"/>
</signal>
<signal name="N$11">
<contactref element="U4" pad="21"/>
<contactref element="R9" pad="1"/>
<wire x1="33.6042" y1="44.2722" x2="32.766" y2="44.2722" width="0.1524" layer="1"/>
<wire x1="33.2232" y1="44.2722" x2="33.6042" y2="44.2722" width="0.1524" layer="16"/>
<wire x1="30.5562" y1="46.9392" x2="33.2232" y2="44.2722" width="0.1524" layer="16"/>
<wire x1="30.0228" y1="46.9392" x2="30.5562" y2="46.9392" width="0.1524" layer="16"/>
<wire x1="25.6032" y1="51.3588" x2="30.0228" y2="46.9392" width="0.1524" layer="16"/>
<wire x1="22.6314" y1="51.3588" x2="25.6032" y2="51.3588" width="0.1524" layer="16"/>
<wire x1="21.5646" y1="50.292" x2="22.6314" y2="51.3588" width="0.1524" layer="16"/>
<wire x1="21.5646" y1="48.1584" x2="21.5646" y2="50.292" width="0.1524" layer="1"/>
<wire x1="19.6596" y1="46.2534" x2="21.5646" y2="48.1584" width="0.1524" layer="1"/>
<wire x1="32.766" y1="44.2722" x2="32.734" y2="44.2" width="0.1524" layer="1"/>
<wire x1="19.6596" y1="46.2534" x2="19.646" y2="46.228" width="0.1524" layer="1"/>
<via x="33.6042" y="44.2722" extent="1-16" drill="0.254"/>
<via x="21.5646" y="50.292" extent="1-16" drill="0.254"/>
</signal>
<signal name="SWDIO">
<contactref element="SWD" pad="3"/>
<contactref element="U1" pad="P44"/>
<wire x1="5.1816" y1="45.9486" x2="5.1816" y2="44.7294" width="0.1524" layer="1"/>
<wire x1="5.5626" y1="46.3296" x2="5.1816" y2="45.9486" width="0.1524" layer="1"/>
<wire x1="8.382" y1="46.3296" x2="5.5626" y2="46.3296" width="0.1524" layer="1"/>
<wire x1="8.763" y1="46.7106" x2="8.382" y2="46.3296" width="0.1524" layer="1"/>
<wire x1="9.6774" y1="46.7106" x2="8.763" y2="46.7106" width="0.1524" layer="1"/>
<wire x1="9.906" y1="46.9392" x2="9.6774" y2="46.7106" width="0.1524" layer="1"/>
<wire x1="9.906" y1="50.673" x2="9.906" y2="46.9392" width="0.1524" layer="1"/>
<wire x1="8.636" y1="51.943" x2="9.906" y2="50.673" width="0.1524" layer="1"/>
<wire x1="5.1816" y1="44.7294" x2="5.17" y2="44.722" width="0.1524" layer="1"/>
</signal>
<signal name="SWCLK">
<contactref element="SWD" pad="4"/>
<contactref element="U1" pad="P43"/>
<wire x1="5.7912" y1="43.6118" x2="5.7912" y2="45.5676" width="0.1524" layer="1"/>
<wire x1="5.7912" y1="51.8922" x2="5.7912" y2="43.6118" width="0.1524" layer="16"/>
<wire x1="6.096" y1="52.197" x2="5.7912" y2="51.8922" width="0.1524" layer="16"/>
<wire x1="5.7912" y1="45.5676" x2="5.72" y2="45.622" width="0.1524" layer="1"/>
<via x="5.7912" y="43.6118" extent="1-16" drill="0.254"/>
</signal>
<signal name="A0">
<contactref element="U1" pad="P15"/>
<wire x1="12.32" y1="36.822" x2="12.4744" y2="36.9764" width="0.1524" layer="1"/>
<wire x1="16.316" y1="37.592" x2="23.3796125" y2="37.592" width="0.1524" layer="16"/>
<wire x1="23.3796125" y1="37.592" x2="26.7042125" y2="34.2674" width="0.1524" layer="16"/>
<wire x1="26.7042125" y1="34.2674" x2="30.9711875" y2="34.2674" width="0.1524" layer="16"/>
<wire x1="13.6376875" y1="37.3164" x2="13.8250875" y2="37.5038" width="0.1524" layer="1"/>
<wire x1="13.8250875" y1="37.5038" x2="15.748" y2="37.5038" width="0.1524" layer="1"/>
<wire x1="12.32" y1="36.822" x2="12.8144" y2="37.3164" width="0.1524" layer="1"/>
<wire x1="12.8144" y1="37.3164" x2="13.6376875" y2="37.3164" width="0.1524" layer="1"/>
<wire x1="15.748" y1="37.5038" x2="15.9738" y2="37.278" width="0.1524" layer="1"/>
<wire x1="15.9738" y1="37.278" x2="16.002" y2="37.278" width="0.1524" layer="1"/>
<via x="16.002" y="37.278" extent="1-16" drill="0.35"/>
<wire x1="16.002" y1="37.278" x2="16.316" y2="37.592" width="0.1524" layer="16"/>
<wire x1="30.9711875" y1="34.2674" x2="33.274" y2="36.5702125" width="0.1524" layer="16"/>
<wire x1="33.274" y1="37.084" x2="33.528" y2="37.338" width="0.1524" layer="16"/>
<via x="33.528" y="37.338" extent="1-16" drill="0.35"/>
<wire x1="33.528" y1="37.338" x2="35.306" y2="39.116" width="0.1524" layer="1"/>
<wire x1="35.306" y1="39.116" x2="35.306" y2="40.64" width="0.1524" layer="1"/>
<wire x1="33.274" y1="36.5702125" x2="33.274" y2="37.084" width="0.1524" layer="16"/>
<contactref element="LEDCONN" pad="2"/>
<wire x1="35.306" y1="40.64" x2="37.505" y2="42.839" width="0.1524" layer="1"/>
<wire x1="37.505" y1="42.839" x2="37.719" y2="42.839" width="0.1524" layer="1"/>
</signal>
<signal name="N$1">
<contactref element="X1" pad="P$2"/>
<contactref element="U1" pad="P14"/>
<contactref element="C2" pad="1"/>
<wire x1="13.392" y1="34.798" x2="11.77" y2="36.42" width="0.1524" layer="1"/>
<wire x1="11.77" y1="36.42" x2="11.77" y2="37.722" width="0.1524" layer="1"/>
<wire x1="13.392" y1="34.798" x2="13.48" y2="34.886" width="0.1524" layer="1"/>
<wire x1="13.48" y1="34.886" x2="15.24" y2="34.886" width="0.1524" layer="1"/>
</signal>
<signal name="N$2">
<contactref element="X1" pad="P$1"/>
<contactref element="U1" pad="P13"/>
<contactref element="C4" pad="1"/>
<wire x1="10.992" y1="34.798" x2="10.992" y2="36.594" width="0.1524" layer="1"/>
<wire x1="10.992" y1="36.594" x2="11.22" y2="36.822" width="0.1524" layer="1"/>
<wire x1="10.992" y1="34.798" x2="10.65" y2="35.14" width="0.1524" layer="1"/>
<wire x1="10.65" y1="35.14" x2="9.398" y2="35.14" width="0.1524" layer="1"/>
</signal>
<signal name="DIO/P0.13">
<contactref element="U1" pad="P31"/>
</signal>
<signal name="DIO/P0.19">
<contactref element="U1" pad="P37"/>
</signal>
<signal name="TRACECLK">
<contactref element="U1" pad="P38"/>
</signal>
<signal name="N$7">
</signal>
<signal name="TRACED0">
<contactref element="U1" pad="P36"/>
</signal>
<signal name="TRACED3">
<contactref element="U1" pad="P32"/>
</signal>
<signal name="TRACED2">
<contactref element="U1" pad="P33"/>
</signal>
<signal name="TRACED1">
<contactref element="U1" pad="P34"/>
</signal>
<signal name="DIO/P0.17">
<contactref element="U1" pad="P35"/>
</signal>
<signal name="BDRX">
<contactref element="U1" pad="P24"/>
<contactref element="R9" pad="2"/>
<contactref element="TP1" pad="P$1"/>
<wire x1="12.0396" y1="42.291" x2="12.4968" y2="41.8338" width="0.1524" layer="1"/>
<wire x1="11.7094" y1="42.291" x2="12.0396" y2="42.291" width="0.1524" layer="1"/>
<wire x1="11.9634" y1="42.672" x2="11.7094" y2="42.291" width="0.1524" layer="16"/>
<wire x1="16.002" y1="46.7106" x2="11.9634" y2="42.672" width="0.1524" layer="16"/>
<wire x1="16.002" y1="48.26" x2="16.002" y2="46.9392" width="0.1524" layer="16"/>
<wire x1="16.002" y1="46.9392" x2="16.002" y2="46.7106" width="0.1524" layer="16"/>
<wire x1="12.4968" y1="41.8338" x2="12.52" y2="41.772" width="0.1524" layer="1"/>
<wire x1="16.6878" y1="46.2534" x2="17.907" y2="46.2534" width="0.1524" layer="1"/>
<wire x1="16.002" y1="46.9392" x2="16.6878" y2="46.2534" width="0.1524" layer="1"/>
<wire x1="17.907" y1="46.2534" x2="17.946" y2="46.228" width="0.1524" layer="1"/>
<via x="11.7094" y="42.291" extent="1-16" drill="0.254"/>
<via x="16.002" y="46.9392" extent="1-16" drill="0.254"/>
</signal>
<signal name="BDTX">
<contactref element="U1" pad="P22"/>
<contactref element="U4" pad="20"/>
<contactref element="TP2" pad="P$1"/>
<wire x1="13.716" y1="40.6908" x2="12.573" y2="40.6908" width="0.1524" layer="1"/>
<wire x1="14.3256" y1="41.3004" x2="13.716" y2="40.6908" width="0.1524" layer="1"/>
<wire x1="14.3256" y1="44.577" x2="14.3256" y2="41.3004" width="0.1524" layer="16"/>
<wire x1="16.6116" y1="46.863" x2="14.3256" y2="44.577" width="0.1524" layer="16"/>
<wire x1="16.6116" y1="48.9204" x2="16.6116" y2="46.863" width="0.1524" layer="16"/>
<wire x1="16.002" y1="49.53" x2="16.6116" y2="48.9204" width="0.1524" layer="16"/>
<wire x1="12.573" y1="40.6908" x2="12.52" y2="40.672" width="0.1524" layer="1"/>
<wire x1="33.8328" y1="43.7388" x2="32.766" y2="43.7388" width="0.1524" layer="1"/>
<wire x1="33.9852" y1="43.8912" x2="33.8328" y2="43.7388" width="0.1524" layer="1"/>
<wire x1="35.6616" y1="43.8912" x2="33.9852" y2="43.8912" width="0.1524" layer="1"/>
<wire x1="35.814" y1="43.7388" x2="35.6616" y2="43.8912" width="0.1524" layer="1"/>
<wire x1="35.814" y1="42.291" x2="35.814" y2="43.7388" width="0.1524" layer="1"/>
<wire x1="33.0708" y1="39.5478" x2="34.4805" y2="40.9575" width="0.1524" layer="1"/>
<wire x1="34.4805" y1="40.9575" x2="35.814" y2="42.291" width="0.1524" layer="1"/>
<wire x1="17.0688" y1="39.5478" x2="33.0708" y2="39.5478" width="0.1524" layer="16"/>
<wire x1="15.3162" y1="41.3004" x2="17.0688" y2="39.5478" width="0.1524" layer="16"/>
<wire x1="14.3256" y1="41.3004" x2="15.3162" y2="41.3004" width="0.1524" layer="16"/>
<wire x1="32.766" y1="43.7388" x2="32.734" y2="43.7" width="0.1524" layer="1"/>
<via x="14.3256" y="41.3004" extent="1-16" drill="0.254"/>
<via x="33.0708" y="39.5478" extent="1-16" drill="0.254"/>
</signal>
<signal name="VLED">
<contactref element="JP3" pad="2"/>
<wire x1="34.29" y1="39.878" x2="34.29" y2="40.132" width="0.254" layer="16"/>
<wire x1="35.814" y1="41.402" x2="35.814" y2="44.45" width="0.254" layer="16"/>
<wire x1="35.814" y1="41.402" x2="35.56" y2="41.148" width="0.254" layer="16"/>
<wire x1="35.56" y1="41.148" x2="35.56" y2="40.132" width="0.254" layer="16"/>
<wire x1="35.56" y1="40.132" x2="35.306" y2="39.878" width="0.254" layer="16"/>
<wire x1="33.8836" y1="39.878" x2="35.306" y2="39.878" width="0.254" layer="16"/>
<wire x1="34.29" y1="39.878" x2="33.8836" y2="39.878" width="0.1524" layer="16"/>
<contactref element="LEDCONN" pad="1"/>
<wire x1="35.814" y1="44.45" x2="36.703" y2="45.339" width="0.254" layer="16"/>
<wire x1="36.703" y1="45.339" x2="37.719" y2="45.339" width="0.1524" layer="16"/>
</signal>
</signals>
</board>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
<note version="8.2" severity="warning">
Since Version 8.2, EAGLE supports online libraries. The ids
of those online libraries will not be understood (or retained)
with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports URNs for individual library
assets (packages, symbols, and devices). The URNs of those assets
will not be understood (or retained) with this version.
</note>
<note version="8.3" severity="warning">
Since Version 8.3, EAGLE supports the association of 3D packages
with devices in libraries, schematics, and board files. Those 3D
packages will not be understood (or retained) with this version.
</note>
</compatibility>
</eagle>


text:
package database

import (
	ds "github.com/energieip/common-components-go/pkg/dsensor"
	"github.com/energieip/common-components-go/pkg/pconst"
)

func GetSensorConfig(db Database, mac string) (*ds.SensorSetup, string) {
	var dbID string
	criteria := make(map[string]interface{})
	criteria["Mac"] = mac
	stored, err := db.GetRecord(pconst.DbConfig, pconst.TbSensors, criteria)
	if err != nil || stored == nil {
		return nil, dbID
	}
	m := stored.(map[string]interface{})
	id, ok := m["id"]
	if ok {
		dbID = id.(string)
	}
	driver, err := ds.ToSensorSetup(stored)
	if err != nil {
		return nil, dbID
	}
	return driver, dbID
}

func GetConfigSensor(db Database, mac string) *ds.SensorSetup {
	criteria := make(map[string]interface{})
	criteria["Mac"] = mac
	stored, err := db.GetRecord(pconst.DbConfig, pconst.TbSensors, criteria)
	if err != nil || stored == nil {
		return nil
	}
	sensor, err := ds.ToSensorSetup(stored)
	if err != nil {
		return nil
	}
	return sensor
}

//SaveSensorConfig dump sensor config in database
func SaveSensorConfig(db Database, cfg ds.SensorConf) error {
	criteria := make(map[string]interface{})
	criteria["Mac"] = cfg.Mac
	return SaveOnUpdateObject(db, cfg, pconst.DbConfig, pconst.TbSensors, criteria)
}

//SaveSensorSetup dump sensor config in database
func SaveSensorSetup(db Database, cfg ds.SensorSetup) error {
	criteria := make(map[string]interface{})
	criteria["Mac"] = cfg.Mac
	return SaveOnUpdateObject(db, cfg, pconst.DbConfig, pconst.TbSensors, criteria)
}

license_type: permissive

branch_name: refs/heads/master

extension: go


text:
require mingw-gcc-canadian-cross_${PV}.bb
require gcc-canadian-cross-initial.inc

SRC_URI = "\
	${SOURCEFORGE_MIRROR}/mingw/gcc-core-${PV}-src.tar.gz;name=core \
	file://includedir.patch \
"

license: MIT

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD

extension: bb


text:
// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package types

import (
	"reflect"

	"github.com/33cn/chain33/common/log/log15"
	"github.com/33cn/chain33/types"
)

// status
const (
	BlackwhiteStatusCreate = iota + 1
	BlackwhiteStatusPlay
	BlackwhiteStatusShow
	BlackwhiteStatusTimeout
	BlackwhiteStatusDone
)

const (
	// TyLogBlackwhiteCreate log for blackwhite create game
	TyLogBlackwhiteCreate = 750
	// TyLogBlackwhitePlay log for blackwhite play game
	TyLogBlackwhitePlay = 751
	// TyLogBlackwhiteShow log for blackwhite show game
	TyLogBlackwhiteShow = 752
	// TyLogBlackwhiteTimeout log for blackwhite timeout game
	TyLogBlackwhiteTimeout = 753
	// TyLogBlackwhiteDone log for blackwhite down game
	TyLogBlackwhiteDone = 754
	// TyLogBlackwhiteLoopInfo log for blackwhite LoopInfo game
	TyLogBlackwhiteLoopInfo = 755
)

const (
	// GetBlackwhiteRoundInfo 用于在cmd里面的区分不同的查询
	GetBlackwhiteRoundInfo = "GetBlackwhiteRoundInfo"
	// GetBlackwhiteByStatusAndAddr 用于在cmd里面的区分不同的查询
	GetBlackwhiteByStatusAndAddr = "GetBlackwhiteByStatusAndAddr"
	// GetBlackwhiteloopResult 用于在cmd里面的区分不同的查询
	GetBlackwhiteloopResult = "GetBlackwhiteloopResult"
)

var (
	// BlackwhiteX 执行器名字
	BlackwhiteX = "blackwhite"
	glog        = log15.New("module", BlackwhiteX)
	// JRPCName json RPC name
	JRPCName = "Blackwhite"
	// ExecerBlackwhite 执行器名字byte形式
	ExecerBlackwhite = []byte(BlackwhiteX)
	actionName       = map[string]int32{
		"Create":      BlackwhiteActionCreate,
		"Play":        BlackwhiteActionPlay,
		"Show":        BlackwhiteActionShow,
		"TimeoutDone": BlackwhiteActionTimeoutDone,
	}
	logInfo = map[int64]*types.LogInfo{
		TyLogBlackwhiteCreate:   {Ty: reflect.TypeOf(ReceiptBlackwhite{}), Name: "LogBlackwhiteCreate"},
		TyLogBlackwhitePlay:     {Ty: reflect.TypeOf(ReceiptBlackwhite{}), Name: "LogBlackwhitePlay"},
		TyLogBlackwhiteShow:     {Ty: reflect.TypeOf(ReceiptBlackwhite{}), Name: "LogBlackwhiteShow"},
		TyLogBlackwhiteTimeout:  {Ty: reflect.TypeOf(ReceiptBlackwhite{}), Name: "LogBlackwhiteTimeout"},
		TyLogBlackwhiteDone:     {Ty: reflect.TypeOf(ReceiptBlackwhite{}), Name: "LogBlackwhiteDone"},
		TyLogBlackwhiteLoopInfo: {Ty: reflect.TypeOf(ReplyLoopResults{}), Name: "LogBlackwhiteLoopInfo"},
	}
)

func init() {
	types.AllowUserExec = append(types.AllowUserExec, ExecerBlackwhite)
}


text:
package creator

import (
	"path/filepath"

	"github.com/pieterclaerhout/go-james/internal/config"
)

const visualStudioCodeSettingsFileName = "settings.json"

type visualStudioCodeSettings struct {
	FilesExclude        map[string]bool `json:"files.exclude"`
	FilesWatcherExclude map[string]bool `json:"files.watcherExclude"`
	SearchExclude       map[string]bool `json:"search.exclude"`
}

func newVisualStudioCodeSettings(cfg config.Config) *visualStudioCodeSettings {

	buildFolderPath := filepath.Join(cfg.Build.OutputPath, cfg.Project.Name)
	buildFolderPath = filepath.Dir(buildFolderPath) // Trick to get the path with the trailing slash

	return &visualStudioCodeSettings{
		FilesExclude: map[string]bool{
			"**/.git":               true,
			"**/.svn":               true,
			"**/.hg":                true,
			"**/CVS":                true,
			"**/" + buildFolderPath: true,
			"**/.DS_Store":          true,
		},
		FilesWatcherExclude: map[string]bool{
			"**/" + buildFolderPath + "**": true,
		},
		SearchExclude: map[string]bool{
			"**/" + buildFolderPath + "": true,
		},
	}

}

repository: pieterclaerhout/go-james

repo_name: pieterclaerhout/go-james

gha_language: Go


text:
/*
  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/

// C/C++
#include <cassert>
#include <iostream>
#include <sstream>

// Local
#include "TrigMonitoringEvent/TrigMonTimer.h"
#include "TrigMonMSG.h"

using namespace std;

namespace MSGService
{
  static TrigMonMSG msg("TrigMonTimer");
}

namespace TimerBits
{
  const uint32_t maskSec  = 0xfff00000;
  const uint32_t maskUSec = 0x000fffff;

  const uint32_t shiftSec  = 20;
  const uint32_t shiftUSec = 0;

  const uint32_t moduloSec = 3600;
}

//--------------------------------------------------------------------------------------
TrigMonTimer::TrigMonTimer()
  :m_encoded(0x0)
{
}

//--------------------------------------------------------------------------------------
TrigMonTimer::TrigMonTimer(long int tv_sec,
			   long int tv_usec)
  :m_encoded(0x0)
{
  if(!(tv_sec < 0.0) && !(tv_usec < 0.0)) {
    const uint32_t sec  = static_cast<uint32_t>(tv_sec % TimerBits::moduloSec);
    const uint32_t usec = static_cast<uint32_t>(tv_usec);

    // Yes, these are redundant checks.
    if(sec  >= TimerBits::moduloSec) {
      std::stringstream ss;
      ss << "TrigMonTimer ctor error! sec="  <<  sec << ", " << tv_sec;
      MSGService::msg.Log(ss.str(), MSG::ERROR);
    }
    if(usec >= 1000000) {
      std::stringstream ss;
      ss << "TrigMonTimer ctor error! usec=" << usec << ", " << tv_usec;
      MSGService::msg.Log(ss.str(), MSG::ERROR);
    }

    m_encoded |= (sec << TimerBits::shiftSec);
    m_encoded |= usec;
  }
}

//--------------------------------------------------------------------------------------
TrigMonTimer::TrigMonTimer(uint32_t encoded)
  :m_encoded(encoded)
{
}

//--------------------------------------------------------------------------------------
uint32_t TrigMonTimer::getSec() const
{
  // return value in seconds
  return static_cast<uint32_t>((m_encoded & TimerBits::maskSec) >> TimerBits::shiftSec);
}

//--------------------------------------------------------------------------------------
uint32_t TrigMonTimer::getMicroSec() const
{
  // return value in seconds
  return static_cast<uint32_t>((m_encoded & TimerBits::maskUSec) >> TimerBits::shiftUSec);
}

//--------------------------------------------------------------------------------------
double TrigMonTimer::getElapsed(const TrigMonTimer &start_time) const
{
  // return elapsed time - assume time period is less than moduloSec seconds

  // get time difference in seconds
  int secs = getSec() - start_time.getSec();
  if(getSec() < start_time.getSec()) secs = TimerBits::moduloSec+getSec()-start_time.getSec();

  // get time difference in microseconds
  int usecs = getMicroSec() - start_time.getMicroSec();

  return static_cast<double>(secs)*1000.0 + static_cast<double>(usecs)/1000.0;
}

repository: strigazi/athena

repo_name: strigazi/athena

extension: cxx


text:
SUMMARY = "A small Python module for determining appropriate + platform-specific dirs"
DESCRIPTION = "A small Python module for determining appropriate + \
platform-specific dirs, e.g. a 'user data dir'."
HOMEPAGE = "http://github.com/ActiveState/appdirs"
SECTION = "devel/python"

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=31625363c45eb0c67c630a2f73e438e4"

SRC_URI[md5sum] = "44c679904082a2133f5566c8a0d3ab42"
SRC_URI[sha256sum] = "9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92"

inherit pypi setuptools

SKIP_RECIPE[python-appdirs] ?= "${@bb.utils.contains('I_SWEAR_TO_MIGRATE_TO_PYTHON3', 'yes', '', 'python2 is out of support for long time, read https://www.python.org/doc/sunset-python-2/ https://python3statement.org/ and if you really have to temporarily use this, then set I_SWEAR_TO_MIGRATE_TO_PYTHON3 to "yes"', d)}"

branch_name: refs/heads/jansa/master

gha_license_id: MIT

gha_language: BitBake


text:
// Copyright(c) 2019 Jounayd Id Salah
// Distributed under the MIT License (See accompanying file LICENSE.md file or copy at http://opensource.org/licenses/MIT).
#pragma once
#include "coArchive.h"
#include "coArchiveObject.h"
#include "container/array/coDynamicArray_f.h"
#include "container/string/coConstString.h"

class coConstString;

/*
inline void _coPush(coArchive& a, const void* data, coUint32 size)
{
	coPushBackArray(a.data, coArray<const coByte>(reinterpret_cast<const coByte*>(data), size));
}

template <class T>
inline void _coPush(coArchive& a, const T& data)
{
	coPushBackArray(a.data, coArray<const coByte>(reinterpret_cast<const coByte*>(&data), sizeof(T)));
}

inline coArchiveObject coPushObject(coArchiveObject& object, coUint8 key)
{
	_coPush(object.archive, key);
}

template <class T>
inline void coPushValue(coArchive& this_, coUint8 key, const T& x)
{
	_coPush(this_, key);
	_coPush(this_, x);
}

inline void coPushValue(coArchive& this_, coUint8 key, const coConstString& s)
{
	_coPush(this_, key);
	_coPush(this_, s.data, s.count);
	coPushBack(this_.data, '\0');
}

inline void coPushValue(coArchive& this_, coUint8 key, coBool b)
{
	_coPush(this_, key);
	_coPush(this_, b);
}

inline void coPushValue(coArchive& this_, coUint8 key, coUint8 x)
{
	_coPush(this_, key);
	_coPush(this_, x);
}

inline void coPushValue(coArchive& this_, coUint8 key, coInt8 x)
{
	_coPush(this_, key);
	_coPush(this_, x);
}
*/

repository: smogpill/core

repo_name: smogpill/core

extension: h


text:
package main

import (
	"bufio"
	"encoding/json"
	"fmt"
	"io"
	"io/ioutil"
	"log"
	"net/http"
	"os"
	"regexp"
	"strings"
)

const (
	header = `<resources>
    <string name="app_name">Font Awesome</string>

`
	footer = `</resources>
`
)

func main() {
	version := getVersion()
	updateStringsResource(version)

	updateFontFile()
}

type version struct {
	Version string `json:"version"`
}

func getVersion() string {
	res, err := http.Get("https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/package.json")
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()

	var data version
	if err := json.NewDecoder(res.Body).Decode(&data); err != nil {
		log.Fatal(err)
	}

	return data.Version
}

func updateStringsResource(version string) {
	output, err := os.Create("./fontawesome/src/main/res/values/strings.xml")
	if err != nil {
		log.Fatal(err)
	}
	defer output.Close()

	fmt.Fprint(output, header)
	fmt.Fprintf(output, "    <!-- Font Awesome v%s -->\n", version)

	printFontResources(output)

	fmt.Fprint(output, footer)
}

func printFontResources(w io.Writer) {
	res, err := http.Get("https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/src/icons.yml")
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()

	var id, code string

	scanner := bufio.NewScanner(res.Body)
	for scanner.Scan() {
		line := scanner.Text()

		reID := regexp.MustCompile(`\s+id:\s+(.*)`)
		matchID := reID.FindStringSubmatch(line)
		if len(matchID) > 0 {
			id = matchID[1]
		}

		reCode := regexp.MustCompile(`\s+unicode:\s+(.*)`)
		matchCode := reCode.FindStringSubmatch(line)
		if len(matchCode) > 0 {
			code = matchCode[1]

			if id != "" {
				id = strings.Replace(id, "-", "_", -1)

				fmt.Fprintf(w, "    <string name=\"fa_%s\">&#x%s;</string>\n", id, code)

				id = ""
			}
		}
	}
}

func updateFontFile() {
	res, err := http.Get("https://github.com/FortAwesome/Font-Awesome/blob/master/fonts/fontawesome-webfont.ttf?raw=true")
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()

	body, err := ioutil.ReadAll(res.Body)
	if err != nil {
		log.Fatal(err)
	}

	output, err := os.Create("./fontawesome/src/main/assets/fontawesome-webfont.ttf")
	if err != nil {
		log.Fatal(err)
	}
	defer output.Close()

	output.Write(body)
}


text:
package acl

import (
	"fmt"
	"net"
	"strconv"
	"strings"

	lru "github.com/hashicorp/golang-lru/v2"
	"github.com/oschwald/geoip2-golang"
)

type Protocol int

const (
	ProtocolBoth Protocol = iota
	ProtocolTCP
	ProtocolUDP
)

type Outbound interface {
	any
}

type HostInfo struct {
	Name string
	IPv4 net.IP
	IPv6 net.IP
}

func (h HostInfo) String() string {
	return fmt.Sprintf("%s|%s|%s", h.Name, h.IPv4, h.IPv6)
}

type CompiledRuleSet[O Outbound] interface {
	Match(host HostInfo, proto Protocol, port uint16) (O, net.IP)
}

type compiledRule[O Outbound] struct {
	Outbound      O
	HostMatcher   hostMatcher
	Protocol      Protocol
	Port          uint16
	HijackAddress net.IP
}

func (r *compiledRule[O]) Match(host HostInfo, proto Protocol, port uint16) bool {
	if r.Protocol != ProtocolBoth && r.Protocol != proto {
		return false
	}
	if r.Port != 0 && r.Port != port {
		return false
	}
	return r.HostMatcher.Match(host)
}

type matchResult[O Outbound] struct {
	Outbound      O
	HijackAddress net.IP
}

type compiledRuleSetImpl[O Outbound] struct {
	Rules []compiledRule[O]
	Cache *lru.Cache[string, matchResult[O]] // key: HostInfo.String()
}

func (s *compiledRuleSetImpl[O]) Match(host HostInfo, proto Protocol, port uint16) (O, net.IP) {
	host.Name = strings.ToLower(host.Name) // Normalize host name to lower case
	key := host.String()
	if result, ok := s.Cache.Get(key); ok {
		return result.Outbound, result.HijackAddress
	}
	for _, rule := range s.Rules {
		if rule.Match(host, proto, port) {
			result := matchResult[O]{rule.Outbound, rule.HijackAddress}
			s.Cache.Add(key, result)
			return result.Outbound, result.HijackAddress
		}
	}
	// No match should also be cached
	var zero O
	s.Cache.Add(key, matchResult[O]{zero, nil})
	return zero, nil
}

type CompilationError struct {
	LineNum int
	Message string
}

func (e *CompilationError) Error() string {
	return fmt.Sprintf("error at line %d: %s", e.LineNum, e.Message)
}

// Compile compiles TextRules into a CompiledRuleSet.
// Names in the outbounds map MUST be in all lower case.
// geoipFunc is a function that returns the GeoIP database needed by the GeoIP matcher.
// It will be called every time a GeoIP matcher is used during compilation, but won't
// be called if there is no GeoIP rule. We use a function here so that database loading
// is on-demand (only required if used by rules).
func Compile[O Outbound](rules []TextRule, outbounds map[string]O,
	cacheSize int, geoipFunc func() *geoip2.Reader,
) (CompiledRuleSet[O], error) {
	compiledRules := make([]compiledRule[O], len(rules))
	for i, rule := range rules {
		outbound, ok := outbounds[strings.ToLower(rule.Outbound)]
		if !ok {
			return nil, &CompilationError{rule.LineNum, fmt.Sprintf("outbound %s not found", rule.Outbound)}
		}
		hm, errStr := compileHostMatcher(rule.Address, geoipFunc)
		if errStr != "" {
			return nil, &CompilationError{rule.LineNum, errStr}
		}
		proto, port, ok := parseProtoPort(rule.ProtoPort)
		if !ok {
			return nil, &CompilationError{rule.LineNum, fmt.Sprintf("invalid protocol/port: %s", rule.ProtoPort)}
		}
		var hijackAddress net.IP
		if rule.HijackAddress != "" {
			hijackAddress = net.ParseIP(rule.HijackAddress)
			if hijackAddress == nil {
				return nil, &CompilationError{rule.LineNum, fmt.Sprintf("invalid hijack address (must be an IP address): %s", rule.HijackAddress)}
			}
		}
		compiledRules[i] = compiledRule[O]{outbound, hm, proto, port, hijackAddress}
	}
	cache, err := lru.New[string, matchResult[O]](cacheSize)
	if err != nil {
		return nil, err
	}
	return &compiledRuleSetImpl[O]{compiledRules, cache}, nil
}

// parseProtoPort parses the protocol and port from a protoPort string.
// protoPort must be in one of the following formats:
//
//	proto/port
//	proto/*
//	proto
//	*/port
//	*/*
//	*
//	[empty] (same as *)
//
// proto must be either "tcp" or "udp", case-insensitive.
func parseProtoPort(protoPort string) (Protocol, uint16, bool) {
	protoPort = strings.ToLower(protoPort)
	if protoPort == "" || protoPort == "*" || protoPort == "*/*" {
		return ProtocolBoth, 0, true
	}
	parts := strings.SplitN(protoPort, "/", 2)
	if len(parts) == 1 {
		// No port, only protocol
		switch parts[0] {
		case "tcp":
			return ProtocolTCP, 0, true
		case "udp":
			return ProtocolUDP, 0, true
		default:
			return ProtocolBoth, 0, false
		}
	} else {
		// Both protocol and port
		var proto Protocol
		var port uint16
		switch parts[0] {
		case "tcp":
			proto = ProtocolTCP
		case "udp":
			proto = ProtocolUDP
		case "*":
			proto = ProtocolBoth
		default:
			return ProtocolBoth, 0, false
		}
		if parts[1] != "*" {
			p64, err := strconv.ParseUint(parts[1], 10, 16)
			if err != nil {
				return ProtocolBoth, 0, false
			}
			port = uint16(p64)
		}
		return proto, port, true
	}
}

func compileHostMatcher(addr string, geoipFunc func() *geoip2.Reader) (hostMatcher, string) {
	addr = strings.ToLower(addr) // Normalize to lower case
	if addr == "*" || addr == "all" {
		// Match all hosts
		return &allMatcher{}, ""
	}
	if strings.HasPrefix(addr, "geoip:") {
		// GeoIP matcher
		country := strings.ToUpper(addr[6:])
		if len(country) != 2 {
			return nil, fmt.Sprintf("invalid country code: %s", country)
		}
		db := geoipFunc()
		if db == nil {
			return nil, "failed to load GeoIP database"
		}
		return &geoipMatcher{db, country}, ""
	}
	if strings.Contains(addr, "/") {
		// CIDR matcher
		_, ipnet, err := net.ParseCIDR(addr)
		if err != nil {
			return nil, fmt.Sprintf("invalid CIDR address: %s", addr)
		}
		return &cidrMatcher{ipnet}, ""
	}
	if ip := net.ParseIP(addr); ip != nil {
		// Single IP matcher
		return &ipMatcher{ip}, ""
	}
	if strings.Contains(addr, "*") {
		// Wildcard domain matcher
		return &domainMatcher{
			Pattern:  addr,
			Wildcard: true,
		}, ""
	}
	// Nothing else matched, treat it as a non-wildcard domain
	return &domainMatcher{
		Pattern:  addr,
		Wildcard: false,
	}, ""
}

repository: bolucat/Archive

repo_name: bolucat/Archive


text:
package service

import (
	"reflect"
	"strings"

	"github.com/openservicemesh/osm/pkg/certificate"
)

const (
	// namespaceNameSeparator used upon marshalling/unmarshalling MeshService to a string
	// or viceversa
	namespaceNameSeparator = "/"
)

// MeshService is the struct defining a service (Kubernetes or otherwise) within a service mesh.
type MeshService struct {
	// If the service resides on a Kubernetes service, this would be the Kubernetes namespace.
	Namespace string

	// The name of the service
	Name string
}

func (ms MeshService) String() string {
	return strings.Join([]string{ms.Namespace, namespaceNameSeparator, ms.Name}, "")
}

// Equals checks if two namespaced services are equal
func (ms MeshService) Equals(service MeshService) bool {
	return reflect.DeepEqual(ms, service)
}

// UnmarshalMeshService unmarshals a NamespaceService type from a string
func UnmarshalMeshService(str string) (*MeshService, error) {
	slices := strings.Split(str, namespaceNameSeparator)
	if len(slices) != 2 {
		return nil, errInvalidMeshServiceFormat
	}

	// Make sure the slices are not empty. Split might actually leave empty slices.
	for _, sep := range slices {
		if len(sep) == 0 {
			return nil, errInvalidMeshServiceFormat
		}
	}

	return &MeshService{
		Namespace: slices[0],
		Name:      slices[1],
	}, nil
}

// GetCommonName returns the Subject CN for the MeshService to be used for its certificate.
func (ms MeshService) GetCommonName() certificate.CommonName {
	return certificate.CommonName(strings.Join([]string{ms.Name, ms.Namespace, "svc", "cluster", "local"}, "."))
}

// K8sServiceAccount is a type for a namespaced service account
type K8sServiceAccount struct {
	Namespace string
	Name      string
}

func (ns K8sServiceAccount) String() string {
	return strings.Join([]string{ns.Namespace, namespaceNameSeparator, ns.Name}, "")
}

// ClusterName is a type for a service name
type ClusterName string

//WeightedService is a struct of a service name, its weight and its root service
type WeightedService struct {
	Service     MeshService `json:"service_name:omitempty"`
	Weight      int         `json:"weight:omitempty"`
	RootService string      `json:"root_service:omitempty"`
}

// WeightedCluster is a struct of a cluster and is weight that is backing a service
type WeightedCluster struct {
	ClusterName ClusterName `json:"cluster_name:omitempty"`
	Weight      int         `json:"weight:omitempty"`
}

repository: flynnduism/osm

repo_name: flynnduism/osm

branch_name: refs/heads/main


text:
require edgex-ui.inc

PR = "r1"

LICENSE = "CLOSED"

SRC_URI = "git://github.com/edgexfoundry/edgex-ui-go.git;protocol=https;branch=fuji \
           file://edgex-ui-server.toml \
           file://edgex-ui-launch.sh \
           "
SRCREV = "277361c19809286defc6bccd20bc08e304c6ef7c"

repository: alihanyalcin/meta-edgex

repo_name: alihanyalcin/meta-edgex


text:
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Timers;
using Nalarium;
using NetInterop.Routing.Core;
using NetInterop.Routing.Image.Configuration;

namespace NetInterop.Routing.Image
{
    [Export(typeof(Module))]
    [ModuleMetadata("Image")]
    public class ImageModule : Module
    {
        [ImportMany]
        private List<Handler> _parserList;

        private Timer _timer;
        public byte Version { get; set; }

        public Map<string, byte[]> ImageDatabase { get; set; }

        public Map<string, string> VirtualPhysicalMap { get; set; }

        protected override void Initialize()
        {
            VirtualPhysicalMap = new Map<string, string>();
            ImageDatabase = new Map<string, byte[]>();
            foreach (MappingElement networkData in ImageSection.GetConfigSection().Mappings)
            {
                var v = networkData.Virtual;
                var p = networkData.Physical;
                VirtualPhysicalMap.Add(v, p);
                if (!ImageDatabase.Any(o => o.Key.Equals((o))))
                {
                    if (System.IO.File.Exists(p))
                    {
                        ImageDatabase.Add(p, System.IO.File.ReadAllBytes(p));
                    }
                }
            }
        }

        public void RequestReceived(object sender, ModuleEventArgs args)
        {
            HeaderPackage package = args.HeaderPackage;
            var imageRequestHeader = package.GetHeader<ImageHeader>();
            var ipHeader = package.GetHeader<IPHeader>();
            RouteMessage(args.DeviceID, new List<IHeader>(new IHeader[] { imageRequestHeader, ipHeader }));
        }

        protected override void AcceptHandoff(string deviceID, string nextHandlerName, PacketData packetData, Value[] parameterArray)
        {
            RouteMessage(deviceID, CatalogHeaderListInBranch(nextHandlerName, parameterArray), parameterArray);
        }

        internal void RouteMessage(string deviceID, List<IHeader> headerList, params Value[] parameterArray)
        {
            var imageHeader = (ImageHeader)headerList.SingleOrDefault(p => p is ImageHeader);
            if (imageHeader.Operation == 0)
            {
                HandleRequest(deviceID, imageHeader, parameterArray);
            }
            else
            {
                HandleResponse(deviceID, imageHeader, parameterArray);
            }
        }

        private void HandleRequest(string deviceID, ImageHeader imageHeader, params Value[] parameterArray)
        {
            Log.Write("IMAGE", "SendingRequest");

            PacketData packetData = GeneratePacketData(imageHeader);

            //++ send to system module for ip packaging
            Handoff(deviceID, typeof(UdpHeader), packetData,
                    Controller.OverrideDefaultValueData(parameterArray,
                    Value.Raw("UdpHeader:SourcePort", (ushort)5200),
                    Value.Raw("UdpHeader:DestinationPort", (ushort)5201),
                //TODO: what the heck? UDP should set this
                    Value.Raw("IPHeader:Protocol", (byte)17),
                //Value.Raw<byte>("IPHeader:TypeOfService", 0xc0),
                    Value.Raw("IPHeader:TTL", (byte)128),
                    Value.Raw("IPHeader:SourceAddress", Controller.DeviceConfigurationMap[deviceID].PrimaryIPConfiguration.Address))
                );
        }

        private void HandleResponse(string deviceID, ImageHeader imageHeader, params Value[] parameterArray)
        {
            var data = System.Text.UTF8Encoding.UTF8.GetString(imageHeader.Data);
            var lineArray = data.Split('\n');
            var name = string.Empty;
            foreach (var s in lineArray)
            {
                var partArray = s.Split('=');
                if (partArray[0].Equals("Name"))
                {
                    name = partArray[1];
                }
            }
            if (String.IsNullOrEmpty(name))
            {
                return;
            }

            byte[] buffer = null;
            var physical = VirtualPhysicalMap[name];
            if (String.IsNullOrEmpty(physical))
            {
                return;
            }
            if (ImageDatabase.Any(p => p.Key.Equals((physical))))
            {
                buffer = ImageDatabase[physical];
            }
            if (buffer == null)
            {
                return;
            }
            Log.Write("IMAGE", "SendingResponse.", "Size:" + buffer.Length.ToString());
            //++ parsers build the header
            var imageResponse = (ImageHeader)Controller.GetSingletonHandler("Image").Build(
                Value.Raw("ImageHeader:Operation", (byte)1),
                Value.Raw("ImageHeader:Data", (byte[])buffer)
            );

            PacketData packetData = GeneratePacketData(imageResponse);

            //++ send to system module for ip packaging
            Handoff(deviceID, typeof(UdpHeader), packetData,
                    Controller.OverrideDefaultValueData(parameterArray,
                        Value.Raw("UdpHeader:SourcePort", (ushort)5201),
                        Value.Raw("UdpHeader:DestinationPort", (ushort)5200),
                //TODO: what the heck? UDP should set this
                        Value.Raw("IPHeader:Protocol", (byte)17),
                //Value.Raw<byte>("IPHeader:TypeOfService", 0xc0),
                        Value.Raw("IPHeader:TTL", (byte)128),
                        Value.Raw("IPHeader:SourceAddress", Controller.DeviceConfigurationMap[deviceID].PrimaryIPConfiguration.Address))
                );
        }
    }
}

repository: davidbetz/netrouter

repo_name: davidbetz/netrouter

extension: cs


text:
package implement_strstr

import "testing"

func TestStrStr(t *testing.T) {
	if strStr("hello", "llo") != 2 {
		t.Fatalf("hello/llo excepted 2, got %d", strStr("hello", "llo"))
	}
}


text:
using System.Collections.Generic;

namespace Blockcore.Indexer.Cirrus.Storage.Mongo.Types;

public class DaoContractTable : SmartContractTable
{
   public long CurrentAmount { get; set; }
   public long MaxVotingDuration { get; set; }
   public long MinVotingDuration { get; set; }
   public long WhitelistedCount { get; set; }
   public List<DaoContractDeposit> Deposits { get; set; }

   public List<string> ApprovedAddresses { get; set; }

}

repository: block-core/blockcore-indexer

repo_name: block-core/blockcore-indexer

gha_language: C#


text:
DESCRIPTION = "Matchbox window manager common files"
SECTION = "x11/wm"
LICENSE = "GPL"
DEPENDS = "libmatchbox"
RDEPENDS_${PN} += "matchbox-panel"
PR = "r7"

SRC_URI = "http://projects.o-hand.com/matchbox/sources/${PN}/0.9/${PN}-${PV}.tar.gz \
           file://no-utilities-category.patch \
           file://add-media-category.patch"

SRC_URI_append_jlime = " http://jlime.com/downloads/development/software/matchbox-icons.tar.gz;name=addons \
			 file://jlime-vfolders.patch "

inherit autotools pkgconfig update-alternatives

do_configure_prepend_jlime() {
	mv ${WORKDIR}/icons/* ${S}/icons
}

EXTRA_OECONF = "--enable-pda-folders"

FILES_${PN} = "\
  ${bindir} \
  ${datadir}/matchbox/vfolders \
  ${datadir}/pixmaps"

ALTERNATIVE_NAME = "x-window-manager"
ALTERNATIVE_LINK = "${bindir}/x-window-manager"
ALTERNATIVE_PATH = "${bindir}/matchbox-session"
ALTERNATIVE_PRIORITY = "11"

PACKAGE_ARCH = "all"

SRC_URI[md5sum] = "90acc81aeebc0dca8f88fbaa40166607"
SRC_URI[sha256sum] = "cb56d6a1031c33b98751cb06b2fce73feba49cb38a1e4db1a104e8efdfb9a7dc"

SRC_URI[addons.md5sum] = "4613553e3ff3dc53d3bd1b9e01266727"
SRC_URI[addons.sha256sum] = "b35ee2c5d68275fbb598fd8dc0a77899dc5e34e4c1d94fbb3277136604ddac6a"


text:
SUMMARY = "Font rendering capabilities for complex non-Roman writing systems"
HOMEPAGE = "https://github.com/tfussell/xlnt"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=edf9330898c89b4ef169be15be60107e"

inherit cmake

#DEPENDS += "freetype"

SRC_URI = "git://github.com/tfussell/xlnt.git;branch=master;protocol=https"
SRCREV = "e2262a0c65384416c8fb9263a057e7d0d3e381f6"
S = "${WORKDIR}/git"
PV = "1.4.0+git${SRCPV}"

repository: schnitzeltony/meta-office

repo_name: schnitzeltony/meta-office