text:
<wire x1="14.478" y1="32.893" x2="12.7" y2="32.893" width="0.254" layer="1"/>
<wire x1="12.7" y1="32.893" x2="12.0015" y2="32.1945" width="0.254" layer="1"/>
<wire x1="12.0015" y1="32.1945" x2="11.176" y2="31.369" width="0.254" layer="1"/>
<wire x1="11.176" y1="31.369" x2="11.176" y2="30.48" width="0.254" layer="1"/>
<contactref element="C12" pad="1"/>
<wire x1="12.446" y1="27.559" x2="12.446" y2="26.543" width="0.254" layer="1"/>
<wire x1="12.446" y1="26.543" x2="12.319" y2="26.416" width="0.254" layer="1"/>
<wire x1="12.319" y1="26.416" x2="12.192" y2="26.416" width="0.254" layer="1"/>
<wire x1="12.192" y1="26.416" x2="11.684" y2="26.416" width="0.254" layer="1"/>
<wire x1="22.352" y1="23.622" x2="23.114" y2="23.622" width="0.254" layer="1"/>
<wire x1="23.114" y1="23.622" x2="23.876" y2="24.384" width="0.254" layer="1"/>
<wire x1="22.352" y1="24.384" x2="22.352" y2="23.622" width="0.254" layer="1"/>
<wire x1="22.86" y1="26.289" x2="22.86" y2="24.892" width="0.254" layer="1"/>
<wire x1="22.86" y1="24.892" x2="22.352" y2="24.384" width="0.254" layer="1"/>
<wire x1="22.86" y1="26.289" x2="22.606" y2="26.543" width="0.254" layer="1"/>
<wire x1="16.51" y1="26.543" x2="16.383" y2="26.416" width="0.508" layer="2"/>
<wire x1="16.383" y1="26.416" x2="11.684" y2="26.416" width="0.508" layer="2"/>
<wire x1="11.684" y1="19.558" x2="10.287" y2="20.955" width="0.254" layer="1"/>
<wire x1="10.287" y1="20.955" x2="10.287" y2="23.368" width="0.254" layer="1"/>
<contactref element="U$27" pad="P$1"/>
<wire x1="23.241" y1="30.861" x2="23.876" y2="30.861" width="0.254" layer="1"/>
<wire x1="23.876" y1="30.861" x2="24.257" y2="31.242" width="0.254" layer="1"/>
<wire x1="24.257" y1="31.242" x2="24.257" y2="32.805" width="0.254" layer="1"/>
<wire x1="24.257" y1="32.805" x2="24.301" y2="32.849" width="0.254" layer="1"/>
<wire x1="21.971" y1="16.764" x2="21.971" y2="20.447" width="0.254" layer="1"/>
<wire x1="21.971" y1="20.447" x2="21.59" y2="20.828" width="0.254" layer="1"/>
<contactref element="LDO_VREG" pad="GND"/>
<contactref element="C21" pad="2"/>
<contactref element="C22" pad="2"/>
<contactref element="C23" pad="2"/>
<wire x1="14.986" y1="8.382" x2="16.256" y2="8.382" width="0.254" layer="1"/>
<wire x1="16.256" y1="8.382" x2="16.51" y2="8.128" width="0.254" layer="1"/>
<wire x1="16.51" y1="8.128" x2="16.51" y2="6.604" width="0.254" layer="1"/>
<wire x1="16.51" y1="6.604" x2="16.256" y2="6.35" width="0.254" layer="1"/>
<wire x1="16.256" y1="6.35" x2="14.986" y2="6.35" width="0.254" layer="1"/>
<wire x1="17.76" y1="6.416" x2="16.698" y2="6.416" width="0.254" layer="1"/>
<wire x1="16.698" y1="6.416" x2="16.51" y2="6.604" width="0.254" layer="1"/>
<wire x1="17.826" y1="6.35" x2="17.76" y2="6.416" width="0.254" layer="1"/>
<wire x1="17.826" y1="6.35" x2="19.558" y2="6.35" width="0.254" layer="1"/>
<wire x1="19.558" y1="6.35" x2="19.812" y2="6.096" width="0.254" layer="1"/>
<wire x1="19.812" y1="6.096" x2="19.812" y2="5.334" width="0.254" layer="1"/>
<wire x1="19.05" y1="7.366" x2="19.558" y2="7.366" width="0.254" layer="1"/>
<wire x1="19.558" y1="7.366" x2="19.812" y2="7.112" width="0.254" layer="1"/>
<wire x1="19.812" y1="7.112" x2="19.812" y2="6.604" width="0.254" layer="1"/>
<wire x1="19.812" y1="6.604" x2="19.558" y2="6.35" width="0.254" layer="1"/>
<contactref element="IC" pad="B7"/>
<wire x1="11.684" y1="19.558" x2="14.732" y2="19.558" width="0.254" layer="1"/>
<wire x1="14.732" y1="19.558" x2="15.24" y2="20.066" width="0.254" layer="1"/>
<wire x1="15.24" y1="20.066" x2="15.24" y2="20.32" width="0.254" layer="1"/>
<contactref element="C15" pad="2"/>
<wire x1="12.93" y1="24.916" x2="12.446" y2="25.4" width="0.127" layer="1"/>
<wire x1="12.446" y1="25.4" x2="12.446" y2="26.162" width="0.254" layer="1"/>
<wire x1="12.446" y1="26.162" x2="12.192" y2="26.416" width="0.254" layer="1"/>
<contactref element="C14" pad="1"/>
<wire x1="13.716" y1="21.463" x2="13.716" y2="21.336" width="0.254" layer="1"/>
<via x="13.716" y="21.336" extent="1-16" drill="0.3048" diameter="0.508"/>
<via x="15.24" y="20.32" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="15.24" y1="20.32" x2="15.24" y2="20.955" width="0.254" layer="16"/>
<wire x1="15.24" y1="20.955" x2="14.986" y2="21.209" width="0.254" layer="16"/>
<wire x1="14.986" y1="21.209" x2="13.843" y2="21.209" width="0.254" layer="16"/>
<wire x1="13.843" y1="21.209" x2="13.716" y2="21.336" width="0.254" layer="16"/>
<contactref element="C11" pad="2"/>
<wire x1="13.462" y1="30.734" x2="13.462" y2="31.242" width="0.254" layer="1"/>
<wire x1="13.462" y1="31.242" x2="12.954" y2="31.75" width="0.254" layer="1"/>
<wire x1="12.954" y1="31.75" x2="12.446" y2="31.75" width="0.254" layer="1"/>
<wire x1="12.446" y1="31.75" x2="12.0015" y2="32.1945" width="0.254" layer="1"/>
<contactref element="C10" pad="1"/>
<contactref element="IMU" pad="P$18"/>
<contactref element="IMU" pad="P$20"/>
<contactref element="R1" pad="1"/>
<contactref element="C9" pad="1"/>
<contactref element="C13" pad="2"/>
<contactref element="R2" pad="1"/>
<contactref element="BARO" pad="3"/>
<contactref element="C24" pad="1"/>
<wire x1="8.382" y1="16.51" x2="8.382" y2="15.24" width="0.254" layer="1"/>
<wire x1="10.33" y1="14.107" x2="8.753" y2="14.107" width="0.254" layer="1"/>
<wire x1="8.753" y1="14.107" x2="8.382" y2="14.478" width="0.254" layer="1"/>
<wire x1="8.382" y1="14.478" x2="8.382" y2="15.24" width="0.254" layer="1"/>
<wire x1="15.748" y1="9.398" x2="15.748" y2="8.89" width="0.254" layer="1"/>
<wire x1="15.748" y1="8.89" x2="16.256" y2="8.382" width="0.254" layer="1"/>
<wire x1="16.764" y1="9.398" x2="15.748" y2="9.398" width="0.254" layer="1"/>
<wire x1="17.11" y1="15.724" x2="17.11" y2="16.348" width="0.254" layer="1"/>
<wire x1="17.11" y1="16.348" x2="17.272" y2="16.51" width="0.254" layer="1"/>
<wire x1="17.272" y1="16.51" x2="18.288" y2="16.51" width="0.254" layer="1"/>
<wire x1="18.288" y1="16.51" x2="18.542" y2="16.256" width="0.254" layer="1"/>
<wire x1="18.542" y1="16.256" x2="18.542" y2="15.494" width="0.254" layer="1"/>
<wire x1="18.542" y1="15.494" x2="18.272" y2="15.224" width="0.254" layer="1"/>
<wire x1="18.272" y1="15.224" x2="18.01" y2="15.224" width="0.254" layer="1"/>
<wire x1="21.463" y1="16.256" x2="21.971" y2="16.764" width="0.254" layer="1"/>
<wire x1="11.43" y1="8.382" x2="10.16" y2="8.382" width="0.254" layer="1"/>
<wire x1="10.16" y1="8.382" x2="8.89" y2="8.382" width="0.254" layer="1"/>
<wire x1="8.89" y1="8.382" x2="8.382" y2="8.89" width="0.254" layer="1"/>
<wire x1="8.382" y1="8.89" x2="8.382" y2="13.736" width="0.254" layer="1"/>
<wire x1="8.382" y1="13.736" x2="8.753" y2="14.107" width="0.254" layer="1"/>
<wire x1="11.43" y1="8.382" x2="11.43" y2="9.144" width="0.254" layer="1"/>
<wire x1="11.43" y1="9.144" x2="11.684" y2="9.398" width="0.254" layer="1"/>
<wire x1="11.684" y1="9.398" x2="15.748" y2="9.398" width="0.254" layer="1"/>
<wire x1="22.479" y1="26.543" x2="22.606" y2="26.543" width="0.254" layer="1"/>
<wire x1="22.606" y1="26.543" x2="22.86" y2="26.797" width="0.254" layer="1"/>
<wire x1="22.86" y1="26.797" x2="22.86" y2="30.099" width="0.254" layer="1"/>
<wire x1="22.86" y1="30.099" x2="22.733" y2="30.226" width="0.254" layer="1"/>
<wire x1="23.241" y1="30.861" x2="22.733" y2="30.353" width="0.254" layer="1"/>
<wire x1="22.733" y1="30.353" x2="22.733" y2="30.226" width="0.254" layer="1"/>
<via x="10.16" y="5.08" extent="1-16" drill="1.524" diameter="2.54"/>
<via x="22.86" y="5.08" extent="1-16" drill="1.524" diameter="2.54"/>
<via x="10.16" y="33.02" extent="1-16" drill="1.524" diameter="2.54"/>
<wire x1="14.732" y1="19.558" x2="15.748" y2="18.542" width="0.254" layer="1"/>
<wire x1="8.382" y1="16.51" x2="8.382" y2="19.05" width="0.254" layer="1"/>
<wire x1="8.382" y1="19.05" x2="10.287" y2="20.955" width="0.254" layer="1"/>
<wire x1="23.876" y1="15.494" x2="23.876" y2="14.732" width="0.254" layer="1"/>
<wire x1="23.876" y1="14.732" x2="23.876" y2="13.716" width="0.254" layer="1"/>
<wire x1="23.876" y1="13.716" x2="23.368" y2="13.208" width="0.254" layer="1"/>
<wire x1="23.368" y1="13.208" x2="20.066" y2="13.208" width="0.254" layer="1"/>
<wire x1="12.93" y1="24.916" x2="13.633" y2="24.916" width="0.127" layer="1"/>
<wire x1="13.633" y1="24.916" x2="13.76" y2="25.043" width="0.127" layer="1"/>
<wire x1="15.748" y1="18.542" x2="16.764" y2="18.542" width="0.254" layer="1"/>
<wire x1="16.764" y1="18.542" x2="17.272" y2="18.034" width="0.254" layer="1"/>
<wire x1="17.272" y1="18.034" x2="17.272" y2="16.51" width="0.254" layer="1"/>
<wire x1="21.463" y1="16.256" x2="21.463" y2="15.367" width="0.254" layer="1"/>
<wire x1="21.463" y1="15.367" x2="22.098" y2="14.732" width="0.254" layer="1"/>
<wire x1="22.098" y1="14.732" x2="23.876" y2="14.732" width="0.254" layer="1"/>
<wire x1="20.066" y1="13.208" x2="20.066" y2="13.97" width="0.254" layer="1"/>
<wire x1="20.066" y1="13.97" x2="19.812" y2="14.224" width="0.254" layer="1"/>
<wire x1="19.812" y1="14.224" x2="19.812" y2="14.986" width="0.254" layer="1"/>
<wire x1="19.812" y1="14.986" x2="19.304" y2="15.494" width="0.254" layer="1"/>
<wire x1="19.304" y1="15.494" x2="18.542" y2="15.494" width="0.254" layer="1"/>
<wire x1="10.16" y1="33.02" x2="10.16" y2="32.385" width="0.254" layer="1"/>
<wire x1="10.16" y1="32.385" x2="11.176" y2="31.369" width="0.254" layer="1"/>
<wire x1="10.16" y1="5.08" x2="10.16" y2="8.382" width="0.254" layer="1"/>
<wire x1="22.86" y1="5.08" x2="20.066" y2="5.08" width="0.254" layer="1"/>
<wire x1="20.066" y1="5.08" x2="19.812" y2="5.334" width="0.254" layer="1"/>
<wire x1="10.287" y1="27.94" x2="10.414" y2="27.94" width="0.254" layer="1"/>
</signal>
<signal name="ANT">
<contactref element="IC" pad="H23"/>
<contactref element="L1" pad="1"/>
<contactref element="C3" pad="2"/>
<wire x1="15.51" y1="29.293" x2="15.4178" y2="29.3852" width="0.127" layer="1"/>
<wire x1="15.4178" y1="29.3852" x2="15.4178" y2="30.5308" width="0.127" layer="1"/>
<wire x1="15.4178" y1="30.5308" x2="15.494" y2="30.607" width="0.127" layer="1"/>
<wire x1="15.494" y1="30.607" x2="15.494" y2="31.242" width="0.635" layer="1"/>
</signal>
<signal name="RF">
<contactref element="L1" pad="2"/>
<contactref element="ANT" pad="ANT"/>
<contactref element="C4" pad="2"/>
<wire x1="15.494" y1="32.258" x2="15.494" y2="32.893" width="0.635" layer="1"/>
<wire x1="15.494" y1="32.893" x2="15.494" y2="34.036" width="0.635" layer="1"/>
<wire x1="15.494" y1="34.036" x2="15.5475" y2="34.3435" width="0.635" layer="1"/>
</signal>
<signal name="GND_IN">
<contactref element="USB" pad="6"/>
<contactref element="USB" pad="11"/>
<contactref element="USB" pad="7"/>
<contactref element="USB" pad="8"/>
<contactref element="USB" pad="9"/>
<contactref element="USB" pad="10"/>
<contactref element="USB" pad="5"/>
<contactref element="FB2" pad="1"/>
<wire x1="12.51" y1="1.086" x2="12.51" y2="2.736" width="1.27" layer="1"/>
<wire x1="12.51" y1="2.736" x2="13.41" y2="3.636" width="1.27" layer="1"/>
<wire x1="20.51" y1="1.086" x2="20.51" y2="2.736" width="1.27" layer="1"/>
<wire x1="20.51" y1="2.736" x2="19.61" y2="3.636" width="1.27" layer="1"/>
<wire x1="12.51" y1="1.086" x2="15.31" y2="1.086" width="1.27" layer="1"/>
<wire x1="15.31" y1="1.086" x2="17.71" y2="1.086" width="1.27" layer="1"/>
<wire x1="17.71" y1="1.086" x2="20.51" y2="1.086" width="1.27" layer="1"/>
<wire x1="19.61" y1="3.636" x2="17.93" y2="3.636" width="0.254" layer="1"/>
<wire x1="17.93" y1="3.636" x2="17.81" y2="3.756" width="0.254" layer="1"/>
<wire x1="17.81" y1="3.756" x2="17.81" y2="4.856" width="0.254" layer="1"/>
<wire x1="17.81" y1="4.856" x2="18.288" y2="5.334" width="0.254" layer="1"/>
</signal>
<signal name="N$1">
<contactref element="USB" pad="1"/>
<contactref element="FB1" pad="2"/>
<wire x1="15.21" y1="3.756" x2="15.21" y2="4.856" width="0.254" layer="1"/>
<wire x1="15.21" y1="4.856" x2="14.732" y2="5.334" width="0.254" layer="1"/>
</signal>
<signal name="N$2">
<via x="14.097" y="32.131" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$3">
<via x="14.097" y="34.163" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$4">
<via x="16.637" y="30.861" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$5">
<via x="16.637" y="32.512" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="VIN">
<contactref element="FB1" pad="1"/>
<contactref element="LDO_VREG" pad="VIN"/>
<contactref element="C22" pad="1"/>
<contactref element="C23" pad="1"/>
<wire x1="15.26" y1="7.366" x2="14.224" y2="7.366" width="0.254" layer="1"/>
<wire x1="14.224" y1="7.366" x2="13.97" y2="7.62" width="0.254" layer="1"/>
<wire x1="13.97" y1="7.62" x2="13.97" y2="8.382" width="0.254" layer="1"/>
<wire x1="13.97" y1="6.35" x2="13.97" y2="7.112" width="0.254" layer="1"/>
<wire x1="13.97" y1="7.112" x2="14.224" y2="7.366" width="0.254" layer="1"/>
<wire x1="13.208" y1="5.334" x2="13.208" y2="5.588" width="0.254" layer="1"/>
<wire x1="13.208" y1="5.588" x2="13.97" y2="6.35" width="0.254" layer="1"/>
</signal>
<signal name="N$6">
<via x="15.367" y="1.016" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$7">
<via x="17.653" y="1.016" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$8">
<via x="13.462" y="3.556" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$9">
<via x="19.685" y="3.556" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$10">
<via x="12.7" y="1.016" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$11">
<via x="20.32" y="1.016" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="N$12">
<contactref element="RES1" pad="5"/>
<contactref element="U$7" pad="4"/>
<wire x1="24.301" y1="33.699" x2="24.384" y2="33.782" width="0.254" layer="1"/>
<wire x1="24.384" y1="33.782" x2="24.384" y2="34.29" width="0.254" layer="1"/>
<wire x1="24.384" y1="34.29" x2="23.876" y2="34.798" width="0.254" layer="1"/>
<wire x1="23.876" y1="34.798" x2="22.352" y2="34.798" width="0.254" layer="1"/>
<wire x1="22.352" y1="34.798" x2="22.128" y2="34.574" width="0.254" layer="1"/>
<wire x1="22.128" y1="34.574" x2="22.128" y2="33.77" width="0.254" layer="1"/>
</signal>
<signal name="N$13">
<contactref element="RES1" pad="6"/>
<contactref element="U$7" pad="3"/>
<wire x1="23.451" y1="33.699" x2="23.368" y2="33.782" width="0.254" layer="1"/>
<wire x1="23.368" y1="33.782" x2="23.114" y2="33.782" width="0.254" layer="1"/>
<wire x1="23.114" y1="33.782" x2="22.86" y2="33.528" width="0.254" layer="1"/>
<wire x1="22.86" y1="33.528" x2="22.86" y2="33.274" width="0.254" layer="1"/>
<wire x1="22.86" y1="33.274" x2="22.606" y2="33.02" width="0.254" layer="1"/>
<wire x1="22.606" y1="33.02" x2="21.59" y2="33.02" width="0.254" layer="1"/>
<wire x1="21.59" y1="33.02" x2="21.228" y2="33.382" width="0.254" layer="1"/>
<wire x1="21.228" y1="33.382" x2="21.228" y2="33.77" width="0.254" layer="1"/>
</signal>
<signal name="N$14">
<contactref element="RES1" pad="7"/>
<contactref element="U$7" pad="2"/>
<wire x1="23.451" y1="32.849" x2="23.368" y2="32.766" width="0.254" layer="1"/>
<wire x1="23.368" y1="32.766" x2="23.368" y2="32.004" width="0.254" layer="1"/>
<via x="23.368" y="32.004" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="23.368" y1="32.004" x2="23.368" y2="34.036" width="0.254" layer="16"/>
<wire x1="23.368" y1="34.036" x2="22.606" y2="34.798" width="0.254" layer="16"/>
<wire x1="22.606" y1="34.798" x2="20.574" y2="34.798" width="0.254" layer="16"/>
<via x="20.574" y="34.798" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.574" y1="34.798" x2="20.428" y2="34.652" width="0.254" layer="1"/>
<wire x1="20.428" y1="34.652" x2="20.428" y2="33.77" width="0.254" layer="1"/>
</signal>
<signal name="XL2">
<contactref element="X2" pad="1"/>
<contactref element="C16" pad="2"/>
<contactref element="IC" pad="F2"/>
<wire x1="15.01" y1="23.793" x2="14.8844" y2="23.6674" width="0.127" layer="1"/>
<wire x1="14.8844" y1="23.6674" x2="14.8844" y2="22.733" width="0.127" layer="1"/>
<wire x1="14.8844" y1="22.733" x2="15.748" y2="21.8694" width="0.127" layer="1"/>
<wire x1="15.748" y1="21.8694" x2="15.748" y2="21.844" width="0.127" layer="1"/>
<via x="15.748" y="21.844" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="11.43" y1="23.368" x2="11.43" y2="24.003" width="0.254" layer="1"/>
<wire x1="11.43" y1="24.003" x2="11.241" y2="24.192" width="0.254" layer="1"/>
<wire x1="11.241" y1="24.192" x2="10.922" y2="24.192" width="0.254" layer="1"/>
<via x="11.43" y="21.082" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="11.43" y1="21.082" x2="11.43" y2="23.368" width="0.254" layer="1"/>
<wire x1="15.621" y1="19.558" x2="11.684" y2="19.558" width="0.254" layer="16"/>
<wire x1="11.684" y1="19.558" x2="11.43" y2="19.812" width="0.254" layer="16"/>
<wire x1="11.43" y1="19.812" x2="11.43" y2="21.082" width="0.254" layer="16"/>
<wire x1="15.621" y1="19.558" x2="16.002" y2="19.939" width="0.254" layer="16"/>
<wire x1="16.002" y1="19.939" x2="16.002" y2="21.59" width="0.254" layer="16"/>
<wire x1="16.002" y1="21.59" x2="15.748" y2="21.844" width="0.254" layer="16"/>
</signal>
<signal name="XL1">
<contactref element="X2" pad="2"/>
<contactref element="IC" pad="D2"/>
<contactref element="C17" pad="1"/>
<wire x1="14.51" y1="23.793" x2="14.605" y2="23.698" width="0.127" layer="1"/>
<wire x1="14.605" y1="23.698" x2="14.605" y2="22.098" width="0.127" layer="1"/>
<wire x1="14.605" y1="22.098" x2="14.859" y2="21.844" width="0.127" layer="1"/>
<via x="14.859" y="21.844" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="10.414" y1="26.416" x2="10.414" y2="25.781" width="0.254" layer="1"/>
<wire x1="10.414" y1="25.781" x2="10.733" y2="25.781" width="0.254" layer="1"/>
<wire x1="10.733" y1="25.781" x2="10.922" y2="25.592" width="0.254" layer="1"/>
<wire x1="10.922" y1="25.592" x2="10.922" y2="25.527" width="0.254" layer="1"/>
<via x="10.922" y="25.527" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="10.922" y1="25.527" x2="11.557" y2="25.527" width="0.254" layer="16"/>
<wire x1="11.557" y1="25.527" x2="11.938" y2="25.146" width="0.254" layer="16"/>
<wire x1="11.938" y1="25.146" x2="11.938" y2="22.352" width="0.254" layer="16"/>
<wire x1="11.938" y1="22.352" x2="12.3952" y2="21.8948" width="0.254" layer="16"/>
<wire x1="12.3952" y1="21.8948" x2="14.8082" y2="21.8948" width="0.254" layer="16"/>
<wire x1="14.8082" y1="21.8948" x2="14.859" y2="21.844" width="0.254" layer="16"/>
</signal>
<signal name="VDD">
<contactref element="U$1" pad="P$2"/>
<contactref element="L4" pad="1"/>
<contactref element="C6" pad="1"/>
<via x="20.828" y="19.558" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.828" y1="19.558" x2="20.828" y2="20.066" width="0.254" layer="1"/>
<wire x1="20.828" y1="20.066" x2="20.574" y2="20.32" width="0.254" layer="1"/>
<wire x1="20.574" y1="20.32" x2="19.05" y2="20.32" width="0.254" layer="1"/>
<wire x1="19.05" y1="20.32" x2="18.796" y2="20.574" width="0.254" layer="1"/>
<wire x1="18.796" y1="20.574" x2="18.796" y2="21.082" width="0.254" layer="1"/>
<wire x1="18.796" y1="21.844" x2="18.288" y2="22.352" width="0.127" layer="1"/>
<wire x1="18.288" y1="22.352" x2="18.288" y2="23.265" width="0.127" layer="1"/>
<via x="12.446" y="28.6512" extent="1-16" drill="0.3048" diameter="0.508"/>
<via x="21.717" y="30.226" extent="1-16" drill="0.3048" diameter="0.6096"/>
<via x="21.463" y="26.543" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="12.7" y1="22.479" x2="12.446" y2="22.733" width="0.254" layer="16"/>
<wire x1="12.446" y1="22.733" x2="12.446" y2="28.6512" width="0.254" layer="16"/>
<wire x1="16.256" y1="22.479" x2="16.51" y2="22.225" width="0.254" layer="16"/>
<wire x1="16.51" y1="22.225" x2="16.51" y2="19.558" width="0.254" layer="16"/>
<wire x1="16.51" y1="19.558" x2="15.494" y2="18.542" width="0.254" layer="16"/>
<wire x1="15.494" y1="18.542" x2="20.574" y2="18.542" width="0.254" layer="16"/>
<wire x1="20.574" y1="18.542" x2="20.828" y2="18.796" width="0.254" layer="16"/>
<wire x1="20.828" y1="18.796" x2="20.828" y2="19.558" width="0.254" layer="16"/>
<wire x1="21.717" y1="24.257" x2="22.606" y2="23.368" width="0.254" layer="16"/>
<wire x1="22.606" y1="23.368" x2="22.606" y2="21.59" width="0.254" layer="16"/>
<wire x1="22.606" y1="21.59" x2="22.606" y2="19.812" width="0.254" layer="16"/>
<wire x1="22.606" y1="19.812" x2="22.352" y2="19.558" width="0.254" layer="16"/>
<wire x1="22.352" y1="19.558" x2="20.828" y2="19.558" width="0.254" layer="16"/>
<contactref element="IC" pad="AD14"/>
<contactref element="C7" pad="1"/>
<wire x1="12.5878" y1="28.793" x2="12.446" y2="28.6512" width="0.254" layer="1"/>
<wire x1="21.717" y1="24.257" x2="21.717" y2="24.892" width="0.254" layer="16"/>
<wire x1="23.876" y1="25.654" x2="23.114" y2="24.892" width="0.254" layer="16"/>
<wire x1="23.114" y1="24.892" x2="21.717" y2="24.892" width="0.254" layer="16"/>
<contactref element="IC" pad="AD23"/>
<contactref element="C8" pad="1"/>
<contactref element="IC" pad="A22"/>
<contactref element="C12" pad="2"/>
<wire x1="12.5878" y1="28.793" x2="13.26" y2="28.793" width="0.254" layer="1"/>
<wire x1="21.463" y1="26.543" x2="21.463" y2="25.527" width="0.254" layer="16"/>
<wire x1="21.463" y1="25.527" x2="21.717" y2="25.273" width="0.254" layer="16"/>
<wire x1="21.717" y1="25.273" x2="21.717" y2="24.892" width="0.254" layer="16"/>
<contactref element="U$27" pad="P$2"/>
<wire x1="21.463" y1="26.543" x2="22.479" y2="27.559" width="0.254" layer="16"/>
<wire x1="19.76" y1="26.793" x2="20.1208" y2="26.793" width="0.127" layer="1"/>
<wire x1="20.1208" y1="26.793" x2="20.4978" y2="26.416" width="0.127" layer="1"/>
<wire x1="20.4978" y1="26.416" x2="21.336" y2="26.416" width="0.127" layer="1"/>
<wire x1="21.336" y1="26.416" x2="21.463" y2="26.543" width="0.127" layer="1"/>
<wire x1="23.876" y1="16.764" x2="23.114" y2="16.764" width="0.254" layer="16"/>
<wire x1="23.114" y1="16.764" x2="22.733" y2="17.145" width="0.254" layer="16"/>
<wire x1="22.733" y1="17.145" x2="22.733" y2="19.177" width="0.254" layer="16"/>
<wire x1="22.733" y1="19.177" x2="22.352" y2="19.558" width="0.254" layer="16"/>
<contactref element="IC" pad="W1"/>
<contactref element="C18" pad="1"/>
<contactref element="IC" pad="Y2"/>
<contactref element="IC" pad="AD2"/>
<contactref element="C20" pad="1"/>
<contactref element="C21" pad="1"/>
<contactref element="LDO_VREG" pad="VOUT"/>
<wire x1="17.76" y1="8.316" x2="17.76" y2="7.64" width="0.254" layer="1"/>
<wire x1="17.76" y1="7.64" x2="18.034" y2="7.366" width="0.254" layer="1"/>
<contactref element="IC" pad="B1"/>
<contactref element="C14" pad="2"/>
<via x="13.716" y="22.479" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="12.7" y1="22.479" x2="13.716" y2="22.479" width="0.254" layer="16"/>
<wire x1="16.256" y1="22.479" x2="13.716" y2="22.479" width="0.254" layer="16"/>
<wire x1="13.76" y1="23.293" x2="13.76" y2="22.523" width="0.254" layer="1"/>
<wire x1="13.76" y1="22.523" x2="13.716" y2="22.479" width="0.254" layer="1"/>
<wire x1="18.51" y1="23.793" x2="18.51" y2="23.543" width="0.127" layer="1"/>
<wire x1="18.51" y1="23.543" x2="18.26" y2="23.293" width="0.127" layer="1"/>
<wire x1="18.26" y1="23.293" x2="18.288" y2="23.265" width="0.127" layer="1"/>
<wire x1="19.76" y1="23.793" x2="20.693" y2="22.86" width="0.127" layer="1"/>
<wire x1="20.693" y1="22.86" x2="21.336" y2="22.86" width="0.127" layer="1"/>
<wire x1="21.336" y1="22.86" x2="21.336" y2="21.971" width="0.254" layer="1"/>
<wire x1="21.336" y1="21.971" x2="21.209" y2="21.844" width="0.254" layer="1"/>
<via x="21.209" y="21.844" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="21.209" y1="21.844" x2="22.352" y2="21.844" width="0.254" layer="16"/>
<wire x1="22.352" y1="21.844" x2="22.606" y2="21.59" width="0.254" layer="16"/>
<wire x1="18.796" y1="21.082" x2="18.796" y2="21.844" width="0.254" layer="1"/>
<contactref element="IMU" pad="P$8"/>
<contactref element="IMU" pad="P$1"/>
<contactref element="C9" pad="2"/>
<contactref element="IMU" pad="P$13"/>
<contactref element="C13" pad="1"/>
<contactref element="BARO" pad="1"/>
<contactref element="C24" pad="2"/>
<wire x1="10.33" y1="16.607" x2="9.495" y2="16.607" width="0.254" layer="1"/>
<wire x1="9.495" y1="16.607" x2="9.398" y2="16.51" width="0.254" layer="1"/>
<wire x1="18.01" y1="13.224" x2="19.034" y2="13.224" width="0.254" layer="1"/>
<wire x1="19.034" y1="13.224" x2="19.05" y2="13.208" width="0.254" layer="1"/>
<wire x1="15.91" y1="12.724" x2="15.91" y2="12.227" width="0.254" layer="1"/>
<wire x1="15.91" y1="12.227" x2="15.494" y2="11.811" width="0.254" layer="1"/>
<via x="15.494" y="11.811" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="15.01" y1="15.224" x2="14.208" y2="15.224" width="0.254" layer="1"/>
<wire x1="14.208" y1="15.224" x2="13.716" y2="14.732" width="0.254" layer="1"/>
<via x="13.716" y="14.732" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="13.716" y1="14.732" x2="13.716" y2="12.446" width="0.254" layer="16"/>
<wire x1="13.716" y1="12.446" x2="14.478" y2="11.684" width="0.254" layer="16"/>
<wire x1="15.748" y1="10.414" x2="15.24" y2="10.414" width="0.254" layer="1"/>
<wire x1="15.24" y1="10.414" x2="14.986" y2="10.668" width="0.254" layer="1"/>
<wire x1="17.76" y1="8.316" x2="17.76" y2="9.124" width="0.254" layer="1"/>
<wire x1="17.76" y1="9.124" x2="18.034" y2="9.398" width="0.254" layer="1"/>
<via x="18.034" y="9.398" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="18.034" y1="9.398" x2="18.034" y2="9.652" width="0.254" layer="16"/>
<wire x1="18.034" y1="9.652" x2="17.78" y2="9.906" width="0.254" layer="16"/>
<wire x1="17.78" y1="9.906" x2="15.748" y2="9.906" width="0.254" layer="16"/>
<wire x1="15.748" y1="9.906" x2="15.24" y2="10.414" width="0.254" layer="16"/>
<wire x1="15.24" y1="10.414" x2="15.24" y2="11.557" width="0.254" layer="16"/>
<wire x1="10.33" y1="16.607" x2="10.33" y2="17.95" width="0.254" layer="1"/>
<wire x1="10.33" y1="17.95" x2="10.414" y2="18.034" width="0.254" layer="1"/>
<via x="10.414" y="18.034" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="10.414" y1="18.034" x2="12.446" y2="18.034" width="0.254" layer="16"/>
<wire x1="12.446" y1="18.034" x2="13.716" y2="16.764" width="0.254" layer="16"/>
<wire x1="13.716" y1="16.764" x2="13.716" y2="14.732" width="0.254" layer="16"/>
<wire x1="15.494" y1="18.542" x2="13.716" y2="16.764" width="0.254" layer="16"/>
<wire x1="22.479" y1="27.559" x2="22.479" y2="29.845" width="0.254" layer="16"/>
<wire x1="22.479" y1="29.845" x2="22.098" y2="30.226" width="0.254" layer="16"/>
<wire x1="22.098" y1="30.226" x2="21.717" y2="30.226" width="0.254" layer="16"/>
<wire x1="19.76" y1="29.293" x2="20.403" y2="29.293" width="0.127" layer="1"/>
<wire x1="20.403" y1="29.293" x2="21.209" y2="30.099" width="0.127" layer="1"/>
<wire x1="21.209" y1="30.099" x2="21.59" y2="30.099" width="0.127" layer="1"/>
<wire x1="21.59" y1="30.099" x2="21.717" y2="30.226" width="0.127" layer="1"/>
<wire x1="15.494" y1="11.811" x2="17.399" y2="11.811" width="0.254" layer="16"/>
<wire x1="17.399" y1="11.811" x2="18.034" y2="12.446" width="0.254" layer="16"/>
<wire x1="18.034" y1="12.446" x2="19.812" y2="12.446" width="0.254" layer="16"/>
<wire x1="19.812" y1="12.446" x2="20.066" y2="12.192" width="0.254" layer="16"/>
<via x="20.066" y="12.192" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.066" y1="12.192" x2="19.304" y2="12.192" width="0.254" layer="1"/>
<wire x1="19.304" y1="12.192" x2="19.05" y2="12.446" width="0.254" layer="1"/>
<wire x1="19.05" y1="12.446" x2="19.05" y2="13.208" width="0.254" layer="1"/>
<wire x1="15.24" y1="11.557" x2="15.494" y2="11.811" width="0.254" layer="16"/>
<wire x1="14.478" y1="11.684" x2="15.367" y2="11.684" width="0.254" layer="16"/>
<wire x1="15.367" y1="11.684" x2="15.494" y2="11.811" width="0.254" layer="16"/>
<wire x1="14.986" y1="10.668" x2="14.986" y2="11.303" width="0.254" layer="1"/>
<wire x1="14.986" y1="11.303" x2="15.494" y2="11.811" width="0.254" layer="1"/>
<wire x1="21.336" y1="23.622" x2="21.336" y2="22.86" width="0.254" layer="1"/>
<wire x1="12.446" y1="28.575" x2="12.446" y2="28.6512" width="0.254" layer="1"/>
</signal>
<signal name="P0.18/RESET">
<contactref element="IC" pad="AC13"/>
<contactref element="U$1" pad="P$3"/>
<wire x1="19.26" y1="26.543" x2="19.9644" y2="26.543" width="0.127" layer="1"/>
<via x="22.225" y="25.654" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="22.225" y1="25.654" x2="22.606" y2="25.654" width="0.254" layer="16"/>
<wire x1="22.606" y1="25.654" x2="23.876" y2="26.924" width="0.254" layer="16"/>
<wire x1="19.9644" y1="26.543" x2="20.5994" y2="25.908" width="0.127" layer="1"/>
<wire x1="20.5994" y1="25.908" x2="21.971" y2="25.908" width="0.127" layer="1"/>
<wire x1="21.971" y1="25.908" x2="22.225" y2="25.654" width="0.127" layer="1"/>
<contactref element="U$27" pad="P$5"/>
<wire x1="23.876" y1="20.574" x2="24.511" y2="20.574" width="0.254" layer="1"/>
<wire x1="24.511" y1="20.574" x2="24.765" y2="20.828" width="0.254" layer="1"/>
<wire x1="24.765" y1="20.828" x2="24.765" y2="26.67" width="0.254" layer="1"/>
<wire x1="24.765" y1="26.67" x2="24.511" y2="26.924" width="0.254" layer="1"/>
<wire x1="24.511" y1="26.924" x2="23.876" y2="26.924" width="0.254" layer="1"/>
</signal>
<signal name="SWDIO">
<contactref element="IC" pad="AC24"/>
<contactref element="U$1" pad="P$5"/>
<wire x1="19.26" y1="29.793" x2="19.26" y2="30.182" width="0.254" layer="1"/>
<wire x1="19.26" y1="30.182" x2="19.558" y2="30.48" width="0.254" layer="1"/>
<via x="19.558" y="30.48" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="19.558" y1="30.48" x2="20.828" y2="31.75" width="0.381" layer="2"/>
<wire x1="20.828" y1="31.75" x2="22.352" y2="31.75" width="0.381" layer="2"/>
<wire x1="22.352" y1="31.75" x2="23.876" y2="30.226" width="0.381" layer="2"/>
<wire x1="23.876" y1="30.226" x2="23.876" y2="29.464" width="0.381" layer="2"/>
</signal>
<signal name="SWDCLK">
<contactref element="U$1" pad="P$4"/>
<contactref element="IC" pad="AA24"/>
<wire x1="18.76" y1="29.793" x2="18.76" y2="30.698" width="0.254" layer="1"/>
<wire x1="18.76" y1="30.698" x2="19.177" y2="31.115" width="0.254" layer="1"/>
<via x="21.717" y="31.115" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="21.717" y1="31.115" x2="22.733" y2="31.115" width="0.254" layer="16"/>
<wire x1="22.733" y1="31.115" x2="22.987" y2="30.861" width="0.254" layer="16"/>
<wire x1="22.987" y1="30.861" x2="22.987" y2="28.448" width="0.254" layer="16"/>
<wire x1="22.987" y1="28.448" x2="23.241" y2="28.194" width="0.254" layer="16"/>
<wire x1="23.241" y1="28.194" x2="23.876" y2="28.194" width="0.254" layer="16"/>
<wire x1="19.177" y1="31.115" x2="21.717" y2="31.115" width="0.254" layer="1"/>
</signal>
<signal name="USB_DM">
<contactref element="USB" pad="2"/>
<contactref element="IC" pad="AD4"/>
<wire x1="19.76" y1="24.293" x2="20.157" y2="24.293" width="0.127" layer="1"/>
<wire x1="20.157" y1="24.293" x2="20.574" y2="23.876" width="0.127" layer="1"/>
<via x="20.574" y="23.876" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="15.87" y1="3.756" x2="15.87" y2="5.456" width="0.254" layer="1"/>
<wire x1="15.87" y1="5.456" x2="16.002" y2="5.588" width="0.254" layer="1"/>
<via x="16.002" y="5.588" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.574" y1="23.876" x2="18.542" y2="23.876" width="0.381" layer="2"/>
<wire x1="18.542" y1="23.876" x2="18.034" y2="23.368" width="0.381" layer="2"/>
<wire x1="18.034" y1="23.368" x2="18.034" y2="19.812" width="0.381" layer="2"/>
<wire x1="18.034" y1="19.812" x2="16.764" y2="18.542" width="0.381" layer="2"/>
<wire x1="16.764" y1="18.542" x2="11.938" y2="18.542" width="0.381" layer="2"/>
<wire x1="11.938" y1="18.542" x2="11.43" y2="18.034" width="0.381" layer="2"/>
<wire x1="11.43" y1="18.034" x2="11.43" y2="17.526" width="0.381" layer="2"/>
<wire x1="11.43" y1="17.526" x2="10.414" y2="16.51" width="0.381" layer="2"/>
<wire x1="10.414" y1="16.51" x2="10.414" y2="10.922" width="0.381" layer="2"/>
<wire x1="10.414" y1="10.922" x2="11.43" y2="9.906" width="0.381" layer="2"/>
<wire x1="11.43" y1="9.906" x2="12.954" y2="9.906" width="0.381" layer="2"/>
<wire x1="12.954" y1="9.906" x2="14.224" y2="8.636" width="0.381" layer="2"/>
<wire x1="14.224" y1="8.636" x2="14.224" y2="6.35" width="0.381" layer="2"/>
<wire x1="14.224" y1="6.35" x2="14.732" y2="5.842" width="0.381" layer="2"/>
<wire x1="14.732" y1="5.842" x2="15.748" y2="5.842" width="0.381" layer="2"/>
<wire x1="15.748" y1="5.842" x2="16.002" y2="5.588" width="0.381" layer="2"/>
</signal>
<signal name="USB_DP">
<contactref element="USB" pad="3"/>
<contactref element="IC" pad="AD6"/>
<via x="20.574" y="25.146" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="19.76" y1="24.793" x2="20.157" y2="24.793" width="0.127" layer="1"/>
<wire x1="20.157" y1="24.793" x2="20.51" y2="25.146" width="0.127" layer="1"/>
<wire x1="16.51" y1="3.756" x2="16.51" y2="4.826" width="0.254" layer="1"/>
<wire x1="16.51" y1="4.826" x2="16.764" y2="5.08" width="0.254" layer="1"/>
<via x="16.764" y="5.08" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.574" y1="25.146" x2="18.034" y2="25.146" width="0.381" layer="2"/>
<wire x1="18.034" y1="25.146" x2="17.272" y2="24.384" width="0.381" layer="2"/>
<wire x1="17.272" y1="20.32" x2="16.256" y2="19.304" width="0.381" layer="2"/>
<wire x1="16.256" y1="19.304" x2="10.16" y2="19.304" width="0.381" layer="2"/>
<wire x1="10.16" y1="19.304" x2="9.398" y2="18.542" width="0.381" layer="2"/>
<wire x1="9.398" y1="18.542" x2="9.398" y2="10.668" width="0.381" layer="2"/>
<wire x1="9.398" y1="10.668" x2="11.176" y2="8.89" width="0.381" layer="2"/>
<wire x1="11.176" y1="8.89" x2="12.192" y2="8.89" width="0.381" layer="2"/>
<wire x1="12.192" y1="8.89" x2="12.7" y2="8.382" width="0.381" layer="2"/>
<wire x1="12.7" y1="8.382" x2="12.7" y2="5.588" width="0.381" layer="2"/>
<wire x1="12.7" y1="5.588" x2="13.462" y2="4.826" width="0.381" layer="2"/>
<wire x1="13.462" y1="4.826" x2="16.51" y2="4.826" width="0.381" layer="2"/>
<wire x1="16.51" y1="4.826" x2="16.764" y2="5.08" width="0.381" layer="2"/>
<wire x1="20.51" y1="25.146" x2="20.574" y2="25.146" width="0.127" layer="1"/>
<wire x1="17.272" y1="24.384" x2="17.272" y2="20.32" width="0.381" layer="2"/>
</signal>
<signal name="XC2">
<contactref element="X1" pad="3"/>
<contactref element="C2" pad="2"/>
<contactref element="IC" pad="A23"/>
<wire x1="13.26" y1="29.293" x2="11.543" y2="29.293" width="0.254" layer="1"/>
<wire x1="11.543" y1="29.293" x2="11.243" y2="28.993" width="0.254" layer="1"/>
<wire x1="11.43" y1="27.94" x2="11.43" y2="28.806" width="0.254" layer="1"/>
<wire x1="11.43" y1="28.806" x2="11.243" y2="28.993" width="0.254" layer="1"/>
</signal>
<signal name="XC1">
<contactref element="C1" pad="1"/>
<contactref element="X1" pad="1"/>
<contactref element="IC" pad="B24"/>
<wire x1="13.76" y1="29.793" x2="13.685" y2="29.718" width="0.254" layer="1"/>
<wire x1="9.144" y1="27.94" x2="9.144" y2="29.718" width="0.254" layer="1"/>
<wire x1="9.144" y1="29.718" x2="9.144" y2="30.226" width="0.254" layer="1"/>
<wire x1="9.144" y1="30.226" x2="9.361" y2="30.443" width="0.254" layer="1"/>
<wire x1="9.361" y1="30.443" x2="10.093" y2="30.443" width="0.254" layer="1"/>
<wire x1="10.414" y1="27.178" x2="9.906" y2="27.178" width="0.254" layer="1"/>
<wire x1="9.906" y1="27.178" x2="9.144" y2="27.94" width="0.254" layer="1"/>
<wire x1="13.685" y1="29.718" x2="12.446" y2="29.718" width="0.254" layer="1"/>
<wire x1="12.446" y1="29.718" x2="12.192" y2="29.972" width="0.254" layer="1"/>
<via x="12.192" y="29.972" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="9.271" y1="29.845" x2="9.144" y2="29.718" width="0.381" layer="2"/>
<via x="9.144" y="29.718" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="9.271" y1="29.845" x2="12.065" y2="29.845" width="0.381" layer="2"/>
<wire x1="12.065" y1="29.845" x2="12.192" y2="29.972" width="0.381" layer="2"/>
</signal>
<signal name="DEC1">
<contactref element="IC" pad="C1"/>
<contactref element="C5" pad="1"/>
<wire x1="14.26" y1="23.293" x2="14.224" y2="23.257" width="0.127" layer="1"/>
<wire x1="14.224" y1="23.257" x2="14.224" y2="20.32" width="0.127" layer="1"/>
</signal>
<signal name="DCCH">
<contactref element="L4" pad="2"/>
<contactref element="IC" pad="AB2"/>
<wire x1="19.812" y1="21.844" x2="19.812" y2="22.606" width="0.127" layer="1"/>
<wire x1="19.812" y1="22.606" x2="19.304" y2="23.114" width="0.127" layer="1"/>
<wire x1="19.304" y1="23.114" x2="19.304" y2="23.499" width="0.127" layer="1"/>
<wire x1="19.304" y1="23.499" x2="19.01" y2="23.793" width="0.127" layer="1"/>
</signal>
<signal name="DEC3V3">
<contactref element="IC" pad="AC5"/>
<contactref element="C19" pad="1"/>
<wire x1="19.26" y1="24.543" x2="21.177" y2="24.543" width="0.127" layer="1"/>
<wire x1="21.177" y1="24.543" x2="21.336" y2="24.384" width="0.127" layer="1"/>
</signal>
<signal name="MISO">
<contactref element="IC" pad="AD18"/>
<contactref element="U$27" pad="P$6"/>
<wire x1="19.76" y1="27.793" x2="20.554" y2="27.793" width="0.127" layer="1"/>
<wire x1="20.554" y1="27.793" x2="20.701" y2="27.94" width="0.127" layer="1"/>
<via x="20.701" y="27.94" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="20.701" y1="27.94" x2="22.606" y2="27.94" width="0.381" layer="15"/>
<wire x1="22.606" y1="27.94" x2="22.987" y2="27.559" width="0.381" layer="15"/>
<wire x1="22.987" y1="27.559" x2="22.987" y2="22.098" width="0.381" layer="15"/>
<wire x1="22.987" y1="22.098" x2="23.241" y2="21.844" width="0.381" layer="15"/>
<contactref element="IMU" pad="P$9"/>
<contactref element="BARO" pad="6"/>
<wire x1="16.31" y1="12.724" x2="16.31" y2="11.484" width="0.254" layer="1"/>
<wire x1="16.31" y1="11.484" x2="16.002" y2="11.176" width="0.254" layer="1"/>
<via x="16.002" y="11.176" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="12.53" y1="14.107" x2="12.53" y2="14.054" width="0.254" layer="1"/>
<wire x1="12.53" y1="14.054" x2="12.446" y2="13.97" width="0.254" layer="1"/>
<via x="12.446" y="13.97" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="12.446" y1="13.97" x2="12.446" y2="12.7" width="0.381" layer="15"/>
<wire x1="12.446" y1="12.7" x2="14.224" y2="10.922" width="0.381" layer="15"/>
<wire x1="14.224" y1="10.922" x2="15.748" y2="10.922" width="0.381" layer="15"/>
<wire x1="15.748" y1="10.922" x2="16.002" y2="11.176" width="0.381" layer="15"/>
<wire x1="23.876" y1="21.844" x2="22.606" y2="20.574" width="0.254" layer="1"/>
<wire x1="22.606" y1="20.574" x2="22.606" y2="16.002" width="0.254" layer="1"/>
<wire x1="23.241" y1="21.844" x2="23.876" y2="21.844" width="0.381" layer="15"/>
<via x="22.606" y="16.002" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="22.606" y1="16.002" x2="21.59" y2="14.986" width="0.381" layer="2"/>
<wire x1="21.59" y1="14.986" x2="21.59" y2="11.176" width="0.381" layer="2"/>
<wire x1="21.59" y1="11.176" x2="18.796" y2="8.382" width="0.381" layer="2"/>
<wire x1="18.796" y1="8.382" x2="17.018" y2="8.382" width="0.381" layer="2"/>
<wire x1="17.018" y1="8.382" x2="16.002" y2="9.398" width="0.381" layer="2"/>
<wire x1="16.002" y1="9.398" x2="16.002" y2="11.176" width="0.381" layer="2"/>
</signal>
<signal name="MOSI">
<contactref element="IC" pad="AC17"/>
<contactref element="U$27" pad="P$3"/>
<wire x1="19.26" y1="27.543" x2="20.2344" y2="27.543" width="0.127" layer="1"/>
<wire x1="20.2344" y1="27.543" x2="20.3454" y2="27.432" width="0.127" layer="1"/>
<wire x1="20.3454" y1="27.432" x2="21.082" y2="27.432" width="0.127" layer="1"/>
<wire x1="21.082" y1="27.432" x2="21.336" y2="27.686" width="0.127" layer="1"/>
<via x="21.336" y="28.575" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="20.32" y1="28.829" x2="19.685" y2="28.194" width="0.381" layer="15"/>
<wire x1="19.685" y1="28.194" x2="19.685" y2="23.495" width="0.381" layer="15"/>
<wire x1="19.685" y1="23.495" x2="20.193" y2="22.987" width="0.381" layer="15"/>
<wire x1="20.193" y1="22.987" x2="20.193" y2="20.193" width="0.381" layer="15"/>
<contactref element="IMU" pad="P$24"/>
<wire x1="20.193" y1="20.193" x2="19.558" y2="19.558" width="0.381" layer="15"/>
<wire x1="19.558" y1="19.558" x2="19.558" y2="19.05" width="0.381" layer="15"/>
<wire x1="19.558" y1="19.05" x2="20.574" y2="18.034" width="0.381" layer="15"/>
<wire x1="20.574" y1="18.034" x2="23.876" y2="18.034" width="0.381" layer="15"/>
<contactref element="BARO" pad="7"/>
<wire x1="21.336" y1="27.686" x2="21.336" y2="28.575" width="0.127" layer="1"/>
<wire x1="20.32" y1="28.829" x2="20.828" y2="28.829" width="0.381" layer="15"/>
<wire x1="20.828" y1="28.829" x2="21.082" y2="28.575" width="0.381" layer="15"/>
<wire x1="21.082" y1="28.575" x2="21.336" y2="28.575" width="0.381" layer="15"/>
<wire x1="12.53" y1="15.357" x2="12.817" y2="15.357" width="0.254" layer="1"/>
<wire x1="12.817" y1="15.357" x2="13.97" y2="16.51" width="0.254" layer="1"/>
<wire x1="15.24" y1="16.51" x2="15.494" y2="16.256" width="0.254" layer="1"/>
<wire x1="15.494" y1="16.256" x2="15.494" y2="15.74" width="0.254" layer="1"/>
<wire x1="15.494" y1="15.74" x2="15.51" y2="15.724" width="0.254" layer="1"/>
<wire x1="15.24" y1="16.51" x2="14.478" y2="16.51" width="0.254" layer="1"/>
<via x="14.478" y="16.51" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="14.478" y1="16.51" x2="20.32" y2="16.51" width="0.254" layer="16"/>
<wire x1="20.32" y1="16.51" x2="20.828" y2="17.018" width="0.254" layer="16"/>
<via x="20.828" y="17.018" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.828" y1="17.018" x2="20.828" y2="17.78" width="0.381" layer="15"/>
<wire x1="20.828" y1="17.78" x2="20.574" y2="18.034" width="0.381" layer="15"/>
<wire x1="13.97" y1="16.51" x2="14.478" y2="16.51" width="0.254" layer="1"/>
</signal>
<signal name="SCK">
<contactref element="IC" pad="AC15"/>
<contactref element="U$27" pad="P$4"/>
<wire x1="19.26" y1="27.043" x2="20.582" y2="27.043" width="0.127" layer="1"/>
<wire x1="20.582" y1="27.043" x2="20.701" y2="26.924" width="0.127" layer="1"/>
<via x="20.701" y="26.924" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.701" y1="26.924" x2="20.701" y2="26.162" width="0.381" layer="15"/>
<wire x1="20.701" y1="26.162" x2="21.463" y2="25.4" width="0.381" layer="15"/>
<wire x1="21.463" y1="25.4" x2="21.463" y2="23.114" width="0.381" layer="15"/>
<wire x1="21.463" y1="23.114" x2="22.352" y2="22.225" width="0.381" layer="15"/>
<wire x1="22.352" y1="22.225" x2="22.352" y2="19.939" width="0.381" layer="15"/>
<wire x1="22.352" y1="19.939" x2="22.987" y2="19.304" width="0.381" layer="15"/>
<wire x1="22.987" y1="19.304" x2="23.876" y2="19.304" width="0.381" layer="15"/>
<contactref element="IMU" pad="P$23"/>
<contactref element="BARO" pad="8"/>
<wire x1="12.797" y1="16.607" x2="13.462" y2="17.272" width="0.254" layer="1"/>
<wire x1="15.91" y1="15.724" x2="15.91" y2="16.856" width="0.254" layer="1"/>
<wire x1="15.91" y1="16.856" x2="15.494" y2="17.272" width="0.254" layer="1"/>
<wire x1="15.494" y1="17.272" x2="13.462" y2="17.272" width="0.254" layer="1"/>
<wire x1="12.797" y1="16.607" x2="12.857" y2="16.607" width="0.254" layer="1"/>
<wire x1="12.857" y1="16.607" x2="12.7" y2="16.637" width="0.254" layer="1"/>
<via x="12.7" y="16.637" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="12.7" y1="16.637" x2="12.7" y2="17.018" width="0.381" layer="2"/>
<wire x1="12.7" y1="17.018" x2="13.208" y2="17.526" width="0.381" layer="2"/>
<wire x1="13.208" y1="17.526" x2="14.986" y2="17.526" width="0.381" layer="2"/>
<wire x1="14.986" y1="17.526" x2="16.002" y2="16.51" width="0.381" layer="2"/>
<wire x1="16.002" y1="16.51" x2="17.78" y2="16.51" width="0.381" layer="2"/>
<wire x1="17.78" y1="16.51" x2="19.558" y2="18.288" width="0.381" layer="2"/>
<wire x1="19.558" y1="18.288" x2="21.844" y2="18.288" width="0.381" layer="2"/>
<wire x1="21.844" y1="18.288" x2="22.9235" y2="19.3675" width="0.381" layer="2"/>
<wire x1="22.9235" y1="19.3675" x2="23.8125" y2="19.3675" width="0.381" layer="2"/>
<wire x1="23.8125" y1="19.3675" x2="23.876" y2="19.304" width="0.381" layer="2"/>
<wire x1="12.53" y1="16.607" x2="12.67" y2="16.607" width="0.254" layer="1"/>
<wire x1="12.67" y1="16.607" x2="12.7" y2="16.637" width="0.254" layer="1"/>
</signal>
<signal name="N$20">
<contactref element="IC" pad="B3"/>
<contactref element="L2" pad="2"/>
<wire x1="13.76" y1="24.043" x2="13.756" y2="24.043" width="0.254" layer="1"/>
<wire x1="13.756" y1="24.043" x2="13.335" y2="23.622" width="0.254" layer="1"/>
<wire x1="13.335" y1="23.622" x2="12.446" y2="23.622" width="0.254" layer="1"/>
</signal>
<signal name="N$21">
<contactref element="L2" pad="1"/>
<contactref element="L3" pad="2"/>
<wire x1="13.462" y1="20.32" x2="13.462" y2="20.701" width="0.254" layer="1"/>
<wire x1="13.462" y1="20.701" x2="13.208" y2="20.955" width="0.254" layer="1"/>
<wire x1="13.208" y1="20.955" x2="12.573" y2="20.955" width="0.254" layer="1"/>
<wire x1="12.573" y1="20.955" x2="12.446" y2="21.082" width="0.254" layer="1"/>
<wire x1="12.446" y1="21.082" x2="12.446" y2="22.606" width="0.254" layer="1"/>
</signal>
<signal name="N$22">
<contactref element="IC" pad="B5"/>
<contactref element="L3" pad="1"/>
<contactref element="C15" pad="1"/>
<wire x1="13.76" y1="24.543" x2="13.367" y2="24.543" width="0.254" layer="1"/>
<via x="13.208" y="24.384" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="13.208" y1="24.384" x2="12.954" y2="24.384" width="0.508" layer="2"/>
<wire x1="12.954" y1="24.384" x2="12.446" y2="23.876" width="0.508" layer="2"/>
<wire x1="12.446" y1="23.876" x2="12.446" y2="20.32" width="0.508" layer="2"/>
<wire x1="13.208" y1="24.384" x2="12.446" y2="24.384" width="0.254" layer="1"/>
<wire x1="13.367" y1="24.543" x2="13.208" y2="24.384" width="0.254" layer="1"/>
<via x="12.446" y="20.32" extent="1-16" drill="0.3048" diameter="0.508"/>
</signal>
<signal name="D23">
<contactref element="IC" pad="D23"/>
<contactref element="C11" pad="1"/>
<wire x1="14.51" y1="29.293" x2="14.51" y2="29.305" width="0.127" layer="1"/>
<wire x1="14.51" y1="29.305" x2="14.097" y2="29.718" width="0.127" layer="1"/>
<wire x1="14.097" y1="29.718" x2="14.097" y2="30.0482" width="0.127" layer="1"/>
<wire x1="14.097" y1="30.0482" x2="13.97" y2="30.1752" width="0.127" layer="1"/>
<wire x1="13.97" y1="30.1752" x2="13.0048" y2="30.1752" width="0.127" layer="1"/>
<wire x1="13.0048" y1="30.1752" x2="12.446" y2="30.734" width="0.127" layer="1"/>
</signal>
<signal name="INT">
<contactref element="IMU" pad="P$12"/>
<contactref element="SJ1" pad="2"/>
<wire x1="17.51" y1="12.724" x2="17.51" y2="12.462" width="0.254" layer="1"/>
<wire x1="17.51" y1="12.462" x2="18.288" y2="11.684" width="0.254" layer="1"/>
<via x="18.288" y="11.684" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="18.288" y1="11.684" x2="18.796" y2="11.176" width="0.254" layer="16"/>
<wire x1="18.796" y1="11.176" x2="19.812" y2="11.176" width="0.254" layer="16"/>
<wire x1="19.812" y1="11.176" x2="20.32" y2="10.668" width="0.254" layer="16"/>
</signal>
<signal name="INT_WAKE">
<contactref element="SJ1" pad="1"/>
<contactref element="IC" pad="J1"/>
<wire x1="15.76" y1="23.293" x2="15.76" y2="22.721" width="0.254" layer="1"/>
<wire x1="15.76" y1="22.721" x2="16.002" y2="22.479" width="0.254" layer="1"/>
<wire x1="16.002" y1="22.479" x2="16.637" y2="22.479" width="0.254" layer="1"/>
<wire x1="16.637" y1="22.479" x2="16.891" y2="22.225" width="0.254" layer="1"/>
<wire x1="16.891" y1="22.225" x2="16.891" y2="19.939" width="0.254" layer="1"/>
<wire x1="16.891" y1="19.939" x2="17.526" y2="19.304" width="0.254" layer="1"/>
<wire x1="17.526" y1="19.304" x2="18.796" y2="19.304" width="0.254" layer="1"/>
<wire x1="18.796" y1="19.304" x2="19.812" y2="18.288" width="0.254" layer="1"/>
<wire x1="19.812" y1="18.288" x2="19.812" y2="16.002" width="0.254" layer="1"/>
<wire x1="19.812" y1="16.002" x2="20.828" y2="14.986" width="0.254" layer="1"/>
<wire x1="20.828" y1="14.986" x2="20.828" y2="14.478" width="0.254" layer="1"/>
<via x="20.828" y="14.478" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="20.828" y1="14.478" x2="21.844" y2="13.462" width="0.254" layer="16"/>
<wire x1="21.844" y1="13.462" x2="21.844" y2="10.668" width="0.254" layer="16"/>
</signal>
<signal name="N$25">
<contactref element="IMU" pad="P$10"/>
<contactref element="C10" pad="2"/>
<wire x1="16.71" y1="12.724" x2="16.71" y2="10.468" width="0.254" layer="1"/>
<wire x1="16.71" y1="10.468" x2="16.764" y2="10.414" width="0.254" layer="1"/>
</signal>
<signal name="FSYNC_PIN">
<contactref element="SJ2" pad="3"/>
<contactref element="IC" pad="AC21"/>
<wire x1="19.26" y1="28.543" x2="19.26" y2="29.293" width="0.127" layer="1"/>
<wire x1="19.26" y1="29.293" x2="20.447" y2="30.48" width="0.127" layer="1"/>
<wire x1="12.446" y1="10.414" x2="12.446" y2="10.922" width="0.254" layer="16"/>
<via x="12.446" y="10.922" extent="1-16" drill="0.3048" diameter="0.508"/>
<via x="20.701" y="30.48" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="20.701" y1="30.48" x2="20.657" y2="30.48" width="0.381" layer="15"/>
<wire x1="20.657" y1="30.48" x2="18.923" y2="28.746" width="0.381" layer="15"/>
<wire x1="18.923" y1="28.746" x2="18.923" y2="20.32" width="0.381" layer="15"/>
<wire x1="18.923" y1="20.32" x2="18.415" y2="19.812" width="0.381" layer="15"/>
<wire x1="18.415" y1="19.812" x2="18.415" y2="18.415" width="0.381" layer="15"/>
<wire x1="18.415" y1="18.415" x2="19.177" y2="17.653" width="0.381" layer="15"/>
<wire x1="19.177" y1="17.653" x2="19.177" y2="8.89" width="0.381" layer="15"/>
<wire x1="19.177" y1="8.89" x2="18.669" y2="8.382" width="0.381" layer="15"/>
<wire x1="18.669" y1="8.382" x2="12.954" y2="8.382" width="0.381" layer="15"/>
<wire x1="12.954" y1="8.382" x2="12.446" y2="8.89" width="0.381" layer="15"/>
<wire x1="12.446" y1="8.89" x2="12.446" y2="10.922" width="0.381" layer="15"/>
<wire x1="20.447" y1="30.48" x2="20.701" y2="30.48" width="0.127" layer="1"/>
</signal>
<signal name="CS">
<contactref element="IMU" pad="P$22"/>
<contactref element="U$27" pad="P$7"/>
<contactref element="IC" pad="AC19"/>
<wire x1="19.26" y1="28.043" x2="19.915" y2="28.043" width="0.127" layer="1"/>
<contactref element="BARO" pad="4"/>
<contactref element="BARO" pad="5"/>
<wire x1="10.33" y1="12.857" x2="11.273" y2="12.857" width="0.254" layer="1"/>
<wire x1="11.273" y1="12.857" x2="11.43" y2="12.7" width="0.254" layer="1"/>
<via x="11.43" y="12.7" extent="1-16" drill="0.3048" diameter="0.508"/>
<via x="21.717" y="29.337" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="19.915" y1="28.043" x2="20.701" y2="28.829" width="0.127" layer="1"/>
<wire x1="20.701" y1="28.829" x2="20.701" y2="28.956" width="0.127" layer="1"/>
<wire x1="20.701" y1="28.956" x2="21.082" y2="29.337" width="0.127" layer="1"/>
<wire x1="21.082" y1="29.337" x2="21.717" y2="29.337" width="0.127" layer="1"/>
<wire x1="23.876" y1="23.114" x2="23.241" y2="23.114" width="0.381" layer="2"/>
<wire x1="23.241" y1="23.114" x2="22.987" y2="23.368" width="0.381" layer="2"/>
<wire x1="22.987" y1="23.368" x2="22.987" y2="28.067" width="0.381" layer="2"/>
<w

license: MIT

license_type: permissive

branch_name: refs/heads/master

extension: brd


text:
ire x1="22.987" y1="28.067" x2="21.717" y2="29.337" width="0.381" layer="2"/>
<wire x1="16.31" y1="15.724" x2="16.31" y2="17.326" width="0.254" layer="1"/>
<wire x1="16.31" y1="17.326" x2="16.51" y2="17.526" width="0.254" layer="1"/>
<via x="16.51" y="17.526" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="12.53" y1="12.857" x2="11.587" y2="12.857" width="0.254" layer="1"/>
<wire x1="11.587" y1="12.857" x2="11.43" y2="12.7" width="0.254" layer="1"/>
<wire x1="11.43" y1="12.7" x2="11.43" y2="17.018" width="0.381" layer="15"/>
<wire x1="11.43" y1="17.018" x2="11.938" y2="17.526" width="0.381" layer="15"/>
<wire x1="11.938" y1="17.526" x2="16.51" y2="17.526" width="0.381" layer="15"/>
<wire x1="22.987" y1="23.368" x2="21.59" y2="23.368" width="0.381" layer="2"/>
<wire x1="21.59" y1="23.368" x2="21.082" y2="22.86" width="0.381" layer="2"/>
<wire x1="21.082" y1="22.86" x2="19.558" y2="22.86" width="0.381" layer="2"/>
<wire x1="19.558" y1="22.86" x2="19.05" y2="22.352" width="0.381" layer="2"/>
<wire x1="19.05" y1="22.352" x2="19.05" y2="19.304" width="0.381" layer="2"/>
<wire x1="19.05" y1="19.304" x2="17.272" y2="17.526" width="0.381" layer="2"/>
<wire x1="17.272" y1="17.526" x2="16.51" y2="17.526" width="0.381" layer="2"/>
</signal>
<signal name="N$23">
<contactref element="SJ2" pad="1"/>
<contactref element="R1" pad="2"/>
<wire x1="11.049" y1="10.414" x2="11.049" y2="7.747" width="0.254" layer="16"/>
<wire x1="11.049" y1="7.747" x2="11.43" y2="7.366" width="0.254" layer="16"/>
<via x="11.43" y="7.366" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="11.43" y1="7.366" x2="12.192" y2="7.366" width="0.254" layer="1"/>
<wire x1="12.192" y1="7.366" x2="12.446" y2="7.62" width="0.254" layer="1"/>
<wire x1="12.446" y1="7.62" x2="12.446" y2="8.382" width="0.254" layer="1"/>
</signal>
<signal name="FSYNC">
<contactref element="IMU" pad="P$11"/>
<contactref element="SJ2" pad="2"/>
<wire x1="17.11" y1="12.724" x2="17.11" y2="11.846" width="0.254" layer="1"/>
<wire x1="17.11" y1="11.846" x2="18.288" y2="10.668" width="0.254" layer="1"/>
<via x="18.288" y="10.668" extent="1-16" drill="0.3048" diameter="0.508"/>
<wire x1="13.843" y1="10.414" x2="13.843" y2="9.017" width="0.254" layer="16"/>
<wire x1="13.843" y1="9.017" x2="14.478" y2="8.382" width="0.254" layer="16"/>
<wire x1="14.478" y1="8.382" x2="18.288" y2="8.382" width="0.254" layer="16"/>
<wire x1="18.288" y1="8.382" x2="18.796" y2="8.89" width="0.254" layer="16"/>
<wire x1="18.796" y1="8.89" x2="18.796" y2="10.16" width="0.254" layer="16"/>
<wire x1="18.796" y1="10.16" x2="18.288" y2="10.668" width="0.254" layer="16"/>
</signal>
<signal name="PS">
<contactref element="BARO" pad="2"/>
<contactref element="R2" pad="2"/>
<wire x1="10.33" y1="15.357" x2="9.515" y2="15.357" width="0.254" layer="1"/>
<wire x1="9.515" y1="15.357" x2="9.398" y2="15.24" width="0.254" layer="1"/>
</signal>
<signal name="BLUE">
<contactref element="RES1" pad="4"/>
<contactref element="IC" pad="W24"/>
<wire x1="18.26" y1="29.793" x2="18.26" y2="30.96" width="0.254" layer="1"/>
<wire x1="18.26" y1="30.96" x2="18.542" y2="31.242" width="0.254" layer="1"/>
<via x="18.542" y="31.242" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="18.542" y1="31.242" x2="20.828" y2="31.242" width="0.254" layer="16"/>
<wire x1="20.828" y1="31.242" x2="21.209" y2="31.623" width="0.254" layer="16"/>
<wire x1="21.209" y1="31.623" x2="21.463" y2="31.623" width="0.254" layer="16"/>
<wire x1="21.463" y1="31.623" x2="22.225" y2="32.385" width="0.254" layer="16"/>
<via x="22.225" y="32.385" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="22.128" y1="32.27" x2="22.14" y2="32.258" width="0.254" layer="1"/>
<wire x1="22.14" y1="32.258" x2="22.225" y2="32.385" width="0.254" layer="1"/>
</signal>
<signal name="GREEN">
<contactref element="RES1" pad="3"/>
<contactref element="IC" pad="U24"/>
<wire x1="17.76" y1="29.793" x2="17.76" y2="31.476" width="0.254" layer="1"/>
<wire x1="17.76" y1="31.476" x2="18.542" y2="32.258" width="0.254" layer="1"/>
<via x="18.542" y="32.258" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="21.228" y1="32.27" x2="21.228" y2="32.366" width="0.254" layer="1"/>
<wire x1="21.228" y1="32.366" x2="21.209" y2="32.512" width="0.254" layer="1"/>
<via x="21.209" y="32.512" extent="1-16" drill="0.254" diameter="0.508"/>
<wire x1="18.542" y1="32.258" x2="20.955" y2="32.258" width="0.254" layer="16"/>
<wire x1="20.955" y1="32.258" x2="21.209" y2="32.512" width="0.254" layer="16"/>
</signal>
<signal name="RED">
<contactref element="RES1" pad="2"/>
<contactref element="IC" pad="R24"/>
<wire x1="17.26" y1="29.793" x2="17.26" y2="32.246" width="0.254" layer="1"/>
<wire x1="17.26" y1="32.246" x2="18.034" y2="33.02" width="0.254" layer="1"/>
<wire x1="18.034" y1="33.02" x2="20.193" y2="33.02" width="0.254" layer="1"/>
<wire x1="20.193" y1="33.02" x2="20.447" y2="32.766" width="0.254" layer="1"/>
<wire x1="20.447" y1="32.766" x2="20.447" y2="32.289" width="0.254" layer="1"/>
<wire x1="20.447" y1="32.289" x2="20.428" y2="32.27" width="0.254" layer="1"/>
</signal>
</signals>
<errors>
<approved hash="19,1,07fa07c207fc07c4"/>
<approved hash="5,1,596ab40b9d6a700b"/>
<approved hash="5,1,596d398c22ea700b"/>
<approved hash="5,1,21831916307538e0"/>
<approved hash="4,1,faa57ad43ee11c90"/>
<approved hash="4,1,c6a416d524df46af"/>
<approved hash="4,1,56a266d324e0c696"/>
<approved hash="4,1,3aa13ad03ee71c95"/>
<approved hash="19,1,3ea1ef9beb063a3c"/>
<approved hash="19,1,7649f5140acb7fef"/>
<approved hash="19,1,7ad10d5dfeb873a7"/>
<approved hash="19,1,398c9fb69a1d3c27"/>
<approved hash="19,1,38c99af3981e3a24"/>
<approved hash="19,1,6db7298d2acf6ef5"/>
<approved hash="19,1,bdf102b8d8a96127"/>
<approved hash="19,1,d62b96039535d51d"/>
<approved hash="19,1,d62b96039535d51d"/>
<approved hash="19,1,d62b96039535d51d"/>
<approved hash="19,1,caaa128211b8c990"/>
<approved hash="19,1,3c7e0e561207202f"/>
<approved hash="19,1,de0ce7b150adf220"/>
<approved hash="19,1,147fc05154bb666c"/>
<approved hash="19,1,4da2059806d84ee2"/>
<approved hash="19,1,5ef0bcfe1fd98dda"/>
<approved hash="19,1,3c7e0e561207202f"/>
<approved hash="19,1,6cd156eb57e46dde"/>
<approved hash="19,1,68386a590c04499c"/>
<approved hash="19,1,3bedadd7ad063b3c"/>
<approved hash="19,1,caaa128211b8c990"/>
<approved hash="4,1,eb206f38a1dce645"/>
<approved hash="4,1,6c28f0304ac4535c"/>
<approved hash="19,1,caaa128211b8c990"/>
<approved hash="19,1,10b5e89deba6138e"/>
<approved hash="19,1,8caff695f5d28fe8"/>
<approved hash="19,1,10b5e89deba6138e"/>
<approved hash="19,1,10b5e89deba6138e"/>
<approved hash="19,1,1029e801eb381310"/>
<approved hash="19,1,da73a916571761d5"/>
<approved hash="19,1,d1ff89d79580cda8"/>
<approved hash="19,1,d1ff89d79580cda8"/>
<approved hash="5,1,9c370c891cb711f4"/>
<approved hash="5,1,48492ba1e4231a36"/>
<approved hash="5,1,984be670cf10beab"/>
<approved hash="5,1,31e5405e693e1705"/>
<approved hash="5,1,984df636dfd0beab"/>
<approved hash="5,1,31e35098797e1705"/>
<approved hash="5,1,9c7bf20be3fd1070"/>
<approved hash="5,1,4b09d99b1651193e"/>
<approved hash="5,1,a08319163076c7e3"/>
<approved hash="5,1,9c99f05ce0681150"/>
<approved hash="5,1,482bdf0a10021ade"/>
<approved hash="5,1,9aeab40b9d6bb18a"/>
<approved hash="5,1,9aed790c626bb18a"/>
<approved hash="5,1,4817d4281be41a26"/>
<approved hash="5,1,9c19fdbaed4a1114"/>
<approved hash="5,1,b9eabf299648900b"/>
<approved hash="5,1,9fb7f52de51b127c"/>
<approved hash="5,1,4949dcfd12f71abe"/>
<approved hash="5,1,54211c3435556d40"/>
<approved hash="19,1,1029e801eb381310"/>
<approved hash="5,1,844572ec19c96ecd"/>
<approved hash="5,1,89899a51111e7b9c"/>
<approved hash="5,1,b9ea578f716e900b"/>
<approved hash="5,1,a0858f766810c7e3"/>
<approved hash="5,1,542634d51fb36d40"/>
<approved hash="19,1,1029e801eb381310"/>
<approved hash="19,1,c4d4aceeac90c4aa"/>
<approved hash="19,1,4ef4aaceaa984ea2"/>
<approved hash="19,16,a0cc4e305dd7a3d8"/>
<approved hash="19,16,ad1599cad32d1cfb"/>
<approved hash="19,16,c0cdc815c24a319b"/>
</errors>
</board>
</drawing>
</eagle>

repository: GeorgeIoak/femto-beacon

repo_name: GeorgeIoak/femto-beacon


text:
package utaskscheduler

import (
	"context"
	"fmt"
	"syscall"
	"time"

	"github.com/google/uuid"
)

type taskOptions struct {
	// common
	UID                      uuid.UUID
	timeout                  time.Duration
	outputChannel            *chan TaskOutput
	progressChannel          *chan TaskStatusUpdate
	returnChannel            *chan bool
	meta                     interface{}
	printStartAndEndInOutput bool
	taskType                 TaskType
	logger                   Logger

	// functionTask
	fn func(ctx context.Context, outputChannel chan string) int

	// shellTask
	shellCommand            string
	shellArgs               []string
	shellEnv                []string
	shellWorkingDir         string
	shellTermSignal         syscall.Signal
	shellDoNotKillOrphans   bool
	shellPanicIfLostControl bool
}

type TaskOption interface {
	apply(*taskOptions) error
}
type funcTaskOption struct {
	f func(*taskOptions) error
}

func (fdo *funcTaskOption) apply(do *taskOptions) error {
	return fdo.f(do)
}

func newFuncTaskOption(f func(*taskOptions) error) *funcTaskOption {
	return &funcTaskOption{f: f}
}

func WithUID(uid uuid.UUID) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.UID = uid
		return nil
	})
}

func WithTimeout(timeout time.Duration) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.timeout = timeout
		return nil
	})
}

func WithOutputChannel(outputChannel chan TaskOutput) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.outputChannel = &outputChannel
		return nil
	})
}

func WithProgressChannel(progressChannel chan TaskStatusUpdate) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.progressChannel = &progressChannel
		return nil
	})
}

func WithReturnChannel(returnChannel chan bool) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.returnChannel = &returnChannel
		return nil
	})
}

func WithMeta(meta interface{}) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.meta = meta
		return nil
	})
}

func WithPrintStartAndEndInOutput() TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.printStartAndEndInOutput = true
		return nil
	})
}

func WithLogger(logger Logger) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		o.logger = logger
		return nil
	})
}

func WithFunction(fn func(ctx context.Context, outputChannel chan string) int) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		if o.shellCommand != "" || len(o.shellArgs) != 0 {
			return fmt.Errorf("cannot set both function and shell command")
		}
		o.taskType = TASK_TYPE_FUNCTION
		o.fn = fn
		return nil
	})
}

func WithShell(command string, args ...string) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		if o.fn != nil {
			return fmt.Errorf("cannot set both function and shell command")
		}
		o.taskType = TASK_TYPE_SHELL
		o.shellCommand = command
		o.shellArgs = args
		return nil
	})
}

func WithShellEnvironment(env []string) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		if o.fn != nil {
			return fmt.Errorf("ShellEnvironment is not compatible with function")
		}
		o.shellEnv = env
		return nil
	})
}

func WithShellWorkingDir(workingDir string) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		if o.fn != nil {
			return fmt.Errorf("ShellWorkingDir is not compatible with function")
		}
		o.shellWorkingDir = workingDir
		return nil
	})
}

func WithShellTermSignal(termSignal syscall.Signal) TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		if o.fn != nil {
			return fmt.Errorf("ShellTermSignal is not compatible with function")
		}
		o.shellTermSignal = termSignal
		return nil
	})
}

func WithShellDoNotKillOrphans() TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		if o.fn != nil {
			return fmt.Errorf("ShellDoNotKillOrphans is not compatible with function")
		}
		o.shellDoNotKillOrphans = true
		return nil
	})
}

func WithShellPanicIfLostControl() TaskOption {
	return newFuncTaskOption(func(o *taskOptions) error {
		if o.fn != nil {
			return fmt.Errorf("ShellPanicIfLostControl is not compatible with function")
		}
		o.shellPanicIfLostControl = true
		return nil
	})
}

repository: dunv/utaskscheduler

repo_name: dunv/utaskscheduler

gha_language: Go

extension: go


text:
package gitlab

import (
	"encoding/json"
	"fmt"
	"net/http"
	"strings"
	"sync"
	"time"

	argus "github.com/lnquy/argus/lib"
	"github.com/sirupsen/logrus"
)

const (
	gitlabAPI  = "https://gitlab.com/api/v3"
	actPushed  = "pushed"
	actCreated = "created"
	actMerged  = "merged"
)

type crawler struct {
	svc      *argus.SVC
	reposMap map[int]*argus.Repo
	reposMux sync.RWMutex
}

func NewCrawler(svc *argus.SVC) argus.Crawler {
	c := &crawler{
		svc:      svc,
		reposMap: make(map[int]*argus.Repo),
		reposMux: sync.RWMutex{},
	}
	c.getLogger().Info("crawler created")
	return c
}

func (c *crawler) GetContributions() ([]argus.Repo, error) {
	log := c.getLogger()
	log.Info("start fetching contributions")
	events, err := c.listEvents()
	if err != nil {
		return nil, err
	}

	prjChan := make(chan int, 1000)
	wg := sync.WaitGroup{}
	c.getRepo(prjChan, &wg) // Run workers to crawl project details in background

	for _, e := range events {
		c.reposMux.Lock()
		if r, ok := c.reposMap[e.ProjectID]; ok { // If project details has been crawled then just append commit
			r.Commits = append(r.Commits, argus.Commit{
				Sha:  e.PushData.CommitTo,
				Date: e.CreatedAt,
				Author: argus.Author{
					Login: e.Author.Username,
					ID:    e.Author.ID,
					Name:  e.Author.Name,
					Email: "",
				},
			})
		} else { // Otherwise update repo details and its commits
			pid := e.ProjectID
			prjChan <- pid
			tr := argus.Repo{}
			tr.Commits = append(tr.Commits, argus.Commit{
				Sha:  e.PushData.CommitTo,
				Date: e.CreatedAt,
				Author: argus.Author{
					Login: e.Author.Username,
					ID:    e.Author.ID,
					Name:  e.Author.Name,
					Email: "",
				},
			})
			c.reposMap[pid] = &tr
		}
		c.reposMux.Unlock()
	}
	close(prjChan)
	wg.Wait()

	repos := make([]argus.Repo, 0)
	c.reposMux.RLock()

	//b, _ := json.MarshalIndent(c.reposMap, "", "  ")
	//fmt.Printf("MAP: \n\n%s\n\n", string(b))

	for _, r := range c.reposMap {
		repos = append(repos, *r)
	}
	c.reposMux.RUnlock()
	log.Info("done fetching contributions")
	return repos, nil
}

// Let 10 workers crawls event pages in parallel.
// Check at last page (page % 10 == 0), if there's no events then stop all workers and return result.
// Otherwise, continue crawling from (page+1) to (page+10)
func (c *crawler) listEvents() ([]Event, error) {
	log := c.getLogger()
	log.Debug("fetch all contributed events")
	events := make([]Event, 0)
	lastYear := time.Now().AddDate(-1, 0, 0)
	pageChan := make(chan int, 20)
	eventChan := make(chan Event, 1000)
	for i := 1; i <= 10; i++ {
		pageChan <- i
	}

	wg := sync.WaitGroup{}
	for r := 0; r < 10; r++ { // Workers
		wg.Add(1)
		go func(wg *sync.WaitGroup) {
			for p := range pageChan {
				log.Debugf("fetch event page #%d", p)
				req := fmt.Sprintf("%s/events?per_page=100&page=%d&after=%s&private_token=%s",
					gitlabAPI, p, lastYear.Format("2006-01-02"), c.svc.APIKey)
				resp, err := http.Get(req)
				if err != nil {
					log.Errorf("failed to fetch event page #%d: %s", p, err)
					continue
				}
				tmpEvents := make([]Event, 0)
				if err = json.NewDecoder(resp.Body).Decode(&tmpEvents); err != nil {
					resp.Body.Close()
					log.Debugf("failed to decode events for page #%d: %s", p, err)
					continue
				}
				resp.Body.Close()

				for _, e := range tmpEvents { // Report crawled events
					if strings.HasPrefix(e.ActionName, actPushed) ||
						strings.HasPrefix(e.ActionName, actCreated) ||
						strings.HasPrefix(e.ActionName, actMerged) {
						eventChan <- e
					}
				}
				log.Debugf("event page fetched for #%d", p)

				// Check at every 10th page.
				// If no events available then close the page channel and end worker.
				// Otherwise, distribute new jobs (page+1 -> page+10) to the page channel.
				if p%10 == 0 {
					if len(tmpEvents) == 0 || lastYear.Unix() >= tmpEvents[len(tmpEvents)-1].CreatedAt.Unix() {
						if pageChan != nil {
							close(pageChan)
						}
					} else {
						for i := p + 1; i <= p+10; i++ {
							pageChan <- i
						}
					}
				}
			}
			wg.Done()
		}(&wg)
	}

	// Put all crawled events to the array
	go func() {
		for e := range eventChan {
			events = append(events, e)
		}
	}()
	wg.Wait() // Wait for all workers returns
	close(eventChan)
	// Sleep a little bit so all events in eventChan can be consumed before returning
	time.Sleep(500 * time.Millisecond)

	log.Debug("all contributed events fetched")
	return events, nil
}

func (c *crawler) getRepo(pidChan chan int, wg *sync.WaitGroup) {
	log := c.getLogger()
	for w := 0; w < 10; w++ {
		wg.Add(1)
		go func() {
			for pid := range pidChan {
				log.Debugf("fetch repo detail: %d", pid)
				resp, err := http.Get(fmt.Sprintf("%s/projects/%d?private_token=%s", gitlabAPI, pid, c.svc.APIKey))
				if err != nil {
					continue
				}

				lr := LocalRepo{}
				if err = json.NewDecoder(resp.Body).Decode(&lr); err != nil {
					resp.Body.Close()
					continue
				}
				resp.Body.Close()

				c.reposMux.Lock()
				r := c.reposMap[pid]
				c.reposMap[pid] = &argus.Repo{
					Name:      lr.Name,
					FullName:  lr.NameWithNamespace,
					URL:       lr.WebURL,
					Private:   !lr.Public,
					CreatedAt: lr.CreatedAt,
					PushedAt:  lr.LastActivityAt,
					Commits:   r.Commits,
				}
				c.reposMux.Unlock()
				log.Debugf("repo detail fetched: %d - %s (%s)", pid, lr.Name, lr.WebURL)
			}
			wg.Done()
		}()
	}
}

func (c *crawler) getLogger() *logrus.Entry {
	return logrus.WithFields(logrus.Fields{
		"type": "gitlab",
		"user": c.svc.User,
	})
}

type Event struct {
	ProjectID   int         `json:"project_id"`
	ActionName  string      `json:"action_name"`
	TargetID    interface{} `json:"target_id"`
	TargetIid   interface{} `json:"target_iid"`
	TargetType  interface{} `json:"target_type"`
	AuthorID    int         `json:"author_id"`
	TargetTitle interface{} `json:"target_title"`
	CreatedAt   time.Time   `json:"created_at"`
	Author struct {
		ID        int    `json:"id"`
		Name      string `json:"name"`
		Username  string `json:"username"`
		State     string `json:"state"`
		AvatarURL string `json:"avatar_url"`
		WebURL    string `json:"web_url"`
	} `json:"author"`
	PushData struct {
		CommitCount int         `json:"commit_count"`
		Action      string      `json:"action"`
		RefType     string      `json:"ref_type"`
		CommitFrom  interface{} `json:"commit_from"`
		CommitTo    string      `json:"commit_to"`
		Ref         string      `json:"ref"`
		CommitTitle string      `json:"commit_title"`
	} `json:"push_data"`
	AuthorUsername string `json:"author_username"`
}

type LocalRepo struct {
	ID                             int           `json:"id"`
	Description                    string        `json:"description"`
	DefaultBranch                  string        `json:"default_branch"`
	TagList                        []interface{} `json:"tag_list"`
	Public                         bool          `json:"public"`
	Archived                       bool          `json:"archived"`
	VisibilityLevel                int           `json:"visibility_level"`
	SSHURLToRepo                   string        `json:"ssh_url_to_repo"`
	HTTPURLToRepo                  string        `json:"http_url_to_repo"`
	WebURL                         string        `json:"web_url"`
	Name                           string        `json:"name"`
	NameWithNamespace              string        `json:"name_with_namespace"`
	Path                           string        `json:"path"`
	PathWithNamespace              string        `json:"path_with_namespace"`
	ResolveOutdatedDiffDiscussions bool          `json:"resolve_outdated_diff_discussions"`
	ContainerRegistryEnabled       bool          `json:"container_registry_enabled"`
	IssuesEnabled                  bool          `json:"issues_enabled"`
	MergeRequestsEnabled           bool          `json:"merge_requests_enabled"`
	WikiEnabled                    bool          `json:"wiki_enabled"`
	BuildsEnabled                  bool          `json:"builds_enabled"`
	SnippetsEnabled                bool          `json:"snippets_enabled"`
	CreatedAt                      time.Time     `json:"created_at"`
	LastActivityAt                 time.Time     `json:"last_activity_at"`
	SharedRunnersEnabled           bool          `json:"shared_runners_enabled"`
	LfsEnabled                     bool          `json:"lfs_enabled"`
	CreatorID                      int           `json:"creator_id"`
	Namespace struct {
		ID       int         `json:"id"`
		Name     string      `json:"name"`
		Path     string      `json:"path"`
		Kind     string      `json:"kind"`
		FullPath string      `json:"full_path"`
		ParentID interface{} `json:"parent_id"`
	} `json:"namespace"`
	AvatarURL                                 interface{}   `json:"avatar_url"`
	StarCount                                 int           `json:"star_count"`
	ForksCount                                int           `json:"forks_count"`
	OpenIssuesCount                           int           `json:"open_issues_count"`
	RunnersToken                              string        `json:"runners_token"`
	PublicBuilds                              bool          `json:"public_builds"`
	SharedWithGroups                          []interface{} `json:"shared_with_groups"`
	OnlyAllowMergeIfBuildSucceeds             bool          `json:"only_allow_merge_if_build_succeeds"`
	RequestAccessEnabled                      bool          `json:"request_access_enabled"`
	OnlyAllowMergeIfAllDiscussionsAreResolved bool          `json:"only_allow_merge_if_all_discussions_are_resolved"`
	Permissions struct {
		ProjectAccess interface{} `json:"project_access"`
		GroupAccess struct {
			AccessLevel       int `json:"access_level"`
			NotificationLevel int `json:"notification_level"`
		} `json:"group_access"`
	} `json:"permissions"`
}

repository: lnquy/argus

repo_name: lnquy/argus


text:
// tslint:disable:variable-name
export const word_Header_rId1_xml = `<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" />`;

export const word_document_xml_original = `<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--This file represents a print-->
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:body>
    <w:p>
      <w:pPr>
        <w:wordWrap w:val="on" />
        <w:spacing w:before="0" w:after="0" />
        <w:keepLines />
        <w:jc w:val="left" />
      </w:pPr>
      <w:r>
        <w:rPr>
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
          <w:sz w:val="20" />
          <w:szCs w:val="20" />
          <w:color w:val="000000" />
          <w:noProof w:val="true" />
          <w:lang w:eastAsia="en-US" />
        </w:rPr>
        <w:t xml:space="preserve">HELLO WORLD!</w:t>
      </w:r>
    </w:p>
    <w:sectPr>
      <w:footnotePr>
        <w:pos w:val="beneathText" />
      </w:footnotePr>
      <w:headerReference w:type="default" p4:id="rId1" xmlns:p4="http://schemas.openxmlformats.org/officeDocument/2006/relationships" />
      <w:pgSz w:w="11900" w:h="16840" />
      <w:pgMar w:top="453" w:bottom="453" w:left="1133" w:right="850" w:footer="100" />
    </w:sectPr>
  </w:body>
</w:document>`;

export const word_document_xml = `<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--This file represents a print-->
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:body>
    <w:p>
      <w:pPr>
        <w:wordWrap w:val="on" />
        <w:spacing w:before="0" w:after="0" />
        <w:keepLines />
        <w:jc w:val="left" />
      </w:pPr>
      <w:r>
        <w:rPr>
          <w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
          <w:sz w:val="21" />
          <w:szCs w:val="21" />
          <w:color w:val="000000" />
          <w:noProof w:val="true" />
          <w:lang w:eastAsia="en-US" />
        </w:rPr>
        <w:t xml:space="preserve">HELLO WORLD!</w:t>
      </w:r>
    </w:p>
    <w:sectPr>
      <w:footnotePr>
        <w:pos w:val="beneathText" />
      </w:footnotePr>
      <w:headerReference w:type="default" p1:id="rId1" xmlns:p1="http://schemas.openxmlformats.org/officeDocument/2006/relationships" />
      <w:pgSz w:w="11900" w:h="16840" />
      <w:pgMar w:top="453" w:bottom="453" w:left="1133" w:right="850" w:footer="100" />
    </w:sectPr>
  </w:body>
</w:document>`;

export const word_rels_document_xml_rels = `<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" Target="/word/Header_rId1.xml" Id="rId1" />
</Relationships>`;

export const Content_Types_xml = `<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
  <Override PartName="/word/Header_rId1.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" />
  <Default Extension="xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" />
  <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
</Types>`;

repository: zlafil/abstract-visuals

repo_name: zlafil/abstract-visuals

gha_license_id: MIT

extension: ts


text:
using FactorioWebInterface.Data;
using FactorioWebInterface.Hubs;
using FactorioWebInterface.Models;
using FactorioWebInterface.Utils;
using Microsoft.AspNetCore.SignalR;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;

namespace FactorioWebInterface.Services
{
    public interface IFactorioAdminService
    {
        event EventHandler<IFactorioAdminService, CollectionChangedData<Admin>> AdminsChanged;
        event EventHandler<IFactorioAdminService, FactorioAdminListChangedEventArgs> AdminListChanged;

        Task<Result> AddAdmins(string data);
        Task<Admin[]> GetAdmins();
        Task<Result> RemoveAdmin(string name);
        Task<Result> BuildAdminList(FactorioServerMutableData mutableData);
    }

    public class FactorioAdminService : IFactorioAdminService
    {
        private readonly IDbContextFactory _dbContextFactory;
        private readonly IHubContext<FactorioAdminHub, IFactorioAdminClientMethods> _adminHub;
        private readonly IFileSystem _fileSystem;
        private readonly ILogger<FactorioAdminService> _logger;

        public event EventHandler<IFactorioAdminService, CollectionChangedData<Admin>>? AdminsChanged;
        public event EventHandler<IFactorioAdminService, FactorioAdminListChangedEventArgs>? AdminListChanged;

        public FactorioAdminService(IDbContextFactory dbContextFactory,
            IHubContext<FactorioAdminHub, IFactorioAdminClientMethods> adminHub,
            IFileSystem fileSystem,
            ILogger<FactorioAdminService> logger)
        {
            _dbContextFactory = dbContextFactory;
            _adminHub = adminHub;
            _fileSystem = fileSystem;
            _logger = logger;
        }

        public async Task<Admin[]> GetAdmins()
        {
            using (var db = _dbContextFactory.Create<ApplicationDbContext>())
            {
                return await db.Admins.AsNoTracking().ToArrayAsync();
            }
        }

        public async Task<Result> AddAdmins(string data)
        {
            if (string.IsNullOrWhiteSpace(data))
            {
                return Result.OK;
            }

            if (await AddAdminsToDatabase(data))
            {
                return Result.OK;
            }
            else
            {
                return Result.Failure(Constants.FailedToAddAdminsErrorKey, data);
            }
        }

        public async Task<Result> RemoveAdmin(string name)
        {
            if (await RemoveAdminFromDatabase(name))
            {
                return Result.OK;
            }
            else
            {
                return Result.Failure(Constants.FailedToRemoveAdminErrorKey, name);
            }
        }

        public async Task<Result> BuildAdminList(FactorioServerMutableData mutableData)
        {
            try
            {
                var a = await GetAdmins();
                var admins = a.Select(x => x.Name).ToArray();

                var adminData = JsonConvert.SerializeObject(admins, Formatting.Indented);
                var writeTask = _fileSystem.File.WriteAllTextAsync(mutableData.ServerAdminListPath, adminData);

                mutableData.ServerAdminList = admins;

                var settings = mutableData.ServerWebEditableSettings;
                if (settings != null)
                {
                    settings.Admins = admins;
                }

                var items = new Dictionary<string, object>
                {
                    { nameof(FactorioServerSettingsWebEditable.Admins), admins }
                };
                var changedData = KeyValueCollectionChangedData.Add(items);

                _ = Task.Run(() => AdminListChanged?.Invoke(this, new FactorioAdminListChangedEventArgs(mutableData.ServerId, changedData)));

                await writeTask;

                return Result.OK;
            }
            catch (Exception e)
            {
                _logger.LogError(e, nameof(BuildAdminList));

                return Result.Failure(Constants.UnexpectedErrorKey, e.Message);
            }
        }

        private async Task<bool> AddAdminsToDatabase(string data)
        {
            using (var db = _dbContextFactory.Create<ApplicationDbContext>())
            {
                var newAdmins = data.Split(',')
                    .Where(x => !string.IsNullOrWhiteSpace(x))
                    .Select(x => x.Trim())
                    .Distinct()
                    .Select(x => new Admin { Name = x })
                    .ToArray();
                var admins = db.Admins;

                foreach (var admin in newAdmins)
                {
                    admins.Add(admin);
                }

                int retryCount = 10;
                while (retryCount >= 0)
                {
                    try
                    {
                        if (await db.SaveChangesAsync() != 0)
                        {
                            _ = Task.Run(() => AdminsChanged?.Invoke(this, CollectionChangedData.Add(newAdmins)));
                        }

                        return true;
                    }
                    catch (DbUpdateConcurrencyException) { }
                    catch (DbUpdateException) { }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex, nameof(AddAdminsToDatabase));
                        return false;
                    }

                    foreach (var admin in newAdmins)
                    {
                        await db.Entry(admin).ReloadAsync();
                    }

                    retryCount--;
                }

                _logger.LogWarning("AddAdminsToDatabase failed to add admins: {@admins}", newAdmins);
                return false;
            }
        }

        private async Task<bool> RemoveAdminFromDatabase(string name)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                return true;
            }

            using (var db = _dbContextFactory.Create<ApplicationDbContext>())
            {
                var admins = db.Admins;
                var admin = new Admin() { Name = name };

                admins.Remove(admin);

                int retryCount = 10;
                while (retryCount >= 0)
                {
                    try
                    {
                        if (await db.SaveChangesAsync() != 0)
                        {
                            _ = Task.Run(() => AdminsChanged?.Invoke(this, CollectionChangedData.Remove(new[] { admin })));
                        }

                        return true;
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        // The ban has already been removed.
                        return true;
                    }
                    catch (DbUpdateException) { }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex, nameof(AddAdminsToDatabase));
                        return false;
                    }

                    await db.Entry(admin).ReloadAsync();
                    retryCount--;
                }

                _logger.LogWarning("RemoveAdminFromDatabase failed to remove admin: {admin}", name);
                return false;
            }
        }
    }
}

repository: Refactorio/FactorioWebInterface

repo_name: Refactorio/FactorioWebInterface

branch_name: refs/heads/develop

gha_language: C#

extension: cs


text:
package app

import (
	"github.com/go-redis/redis"
	"github.com/wanhello/omgind/pkg/global"
	"github.com/wanhello/omgind/pkg/vcode"
)

func InitVcode(cli redis.Cmdable) *vcode.Vcode {

	cfg := global.CFG.Captcha

	vc := vcode.New(cli, cfg)
	return vc
}

repository: beiyexertz/omgind

repo_name: beiyexertz/omgind

branch_name: refs/heads/main


text:
# Copyright (C) 2015-2018 Jens Rehsack <sno@netbsd.org>
# Released under the MIT license (see COPYING.MIT for the terms)

DESCRIPTION = "Initscipts for overlay filesystems"
OPN := "${PN}"
PN = "${OPN}-${WANTED_ROOT_DEV}"
FILESEXTRAPATHS:prepend := "${THISDIR}/${OPN}:"

LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"

DEPENDS += "${@bb.utils.contains("VIRTUAL-RUNTIME_initscripts", "initscripts", "update-rc.d-native", "", d)}"
RDEPENDS_${PN} += "attr"

inherit rootdev-check

CONFLICT_ROOT_DEVS = "nfs"

SRC_URI = "file://mountoverlay.sh \
	file://cleanoverlay.sh \
	file://migrate2overlay.sh \
	file://default-cleanoverlay.conf \
	file://umountoverlay.sh \
"

do_compile () {
	sed -i	-e "s/@ROOT_DEV_NAME[@]/${ROOT_DEV_NAME}/g" -e "s/@ROOT_DEV_SEP[@]/${ROOT_DEV_SEP}/g" \
		-e "s/@ROOT_DEV_TYPE[@]/${ROOT_DEV_TYPE}/g" \
		${WORKDIR}/mountoverlay.sh ${WORKDIR}/cleanoverlay.sh ${WORKDIR}/migrate2overlay.sh ${WORKDIR}/umountoverlay.sh
}

do_install () {
	if test "${VIRTUAL-RUNTIME_initscripts}" = "initscripts"
	then
		install -d ${D}${sysconfdir}/default
		install -m 0644 ${WORKDIR}/default-cleanoverlay.conf ${D}${sysconfdir}/default/cleanoverlay.conf

		install -d ${D}${sysconfdir}/init.d
		install -m 0755 ${WORKDIR}/mountoverlay.sh ${D}${sysconfdir}/init.d
		install -m 0755 ${WORKDIR}/umountoverlay.sh ${D}${sysconfdir}/init.d
		install -m 0755 ${WORKDIR}/cleanoverlay.sh ${D}${sysconfdir}/init.d
		install -m 0755 ${WORKDIR}/migrate2overlay.sh ${D}${sysconfdir}/init.d

		update-rc.d -r ${D} umountoverlay.sh start 30 0 1 6 .
		# cleanoverlay is called at beginnof mountoverlay
		update-rc.d -r ${D} mountoverlay.sh start 16 2 3 4 5 S .
	fi
}

repository: rehsack/meta-jens

repo_name: rehsack/meta-jens

gha_language: BitBake

extension: bb


text:
//css_dir ..\..\;
//css_ref Wix_bin\SDK\Microsoft.Deployment.WindowsInstaller.dll;
//css_ref System.Core.dll;
using System;
using WixSharp;

class Script
{
    static public void Main()
    {
        // Note you can detect at runtime if the feature has been marked for installation by using condition
        // like this Condition.Create("ADDLOCAL >< \"your_feature_name\"")

        var binaries = new Feature("MyApp Binaries", "Application binaries");
        var docs = new Feature("MyApp Documentation");
        var docsLight = new Feature("MyApp Light Documentation");
        var tuts = new Feature("MyApp Tutorial");

        docs.Add(tuts);
        binaries.Add(docs);
        binaries.Add(docsLight);

        var project =
            new Project("MyProduct",
                new Dir(@"%ProgramFiles%\My Company\My Product",
                    new File(binaries, @"Files\Bin\MyApp.exe"),
                    new Dir(@"Docs\Manual",
                        new File(docs, @"Files\Docs\Manual.txt"),
                        new File(@"Files\Docs\Tutorial.txt")
                        {
                            Features = new[] { docsLight, tuts }
                        }),
                    new Dir(docs, "logdocs", new DirPermission("Everyone", GenericPermission.All)),
                    new Dir(tuts, "logtuts", new DirPermission("Everyone", GenericPermission.All))));

        project.GUID = new Guid("6f330b47-2577-43ad-9095-1861ba25889b");
        project.UI = WUI.WixUI_FeatureTree;

        project.DefaultFeature = binaries; //this line is optional

        project.PreserveTempFiles = true;

        project.BuildMsi();
    }
}

repository: oleg-shilo/wixsharp

repo_name: oleg-shilo/wixsharp