text:
2="34.6996" y2="7.1314" width="0.6096" layer="1"/>
<wire x1="34.6468" y1="7.1842" x2="34.3378" y2="7.7442" width="0.6096" layer="1"/>
<wire x1="34.3318" y1="6.647" x2="34.6234" y2="7.2076" width="0.6096" layer="1"/>
<wire x1="34.6234" y1="7.2076" x2="34.6468" y2="7.1842" width="0.6096" layer="1"/>
<wire x1="39.3322" y1="5.877" x2="39.424" y2="5.7852" width="0.6096" layer="1"/>
<wire x1="39.3322" y1="5.877" x2="39.6322" y2="5.9122" width="0.6096" layer="1"/>
<wire x1="34.3378" y1="7.7442" x2="36.63" y2="7.1842" width="0.6096" layer="1"/>
<wire x1="36.63" y1="7.1842" x2="38.025" y2="7.1842" width="0.8128" layer="1"/>
<wire x1="38.025" y1="7.1842" x2="39.3322" y2="5.877" width="0.8128" layer="1"/>
<wire x1="39.4748" y1="5.9122" x2="39.5764" y2="5.8106" width="0.6096" layer="1"/>
<wire x1="39.6322" y1="5.9122" x2="39.4748" y2="5.9122" width="0.6096" layer="1"/>
<wire x1="39.4748" y1="5.9122" x2="38.93" y2="6.457" width="0.6096" layer="1"/>
<wire x1="33.3396" y1="10.206" x2="28.5652" y2="10.116" width="0.8128" layer="1"/>
<wire x1="34.471" y1="8.4522" x2="33.3396" y2="10.206" width="0.8128" layer="1"/>
<wire x1="34.4378" y1="7.149" x2="34.344" y2="7.0552" width="0.6096" layer="1"/>
<wire x1="34.3378" y1="7.7442" x2="34.4378" y2="7.149" width="0.6096" layer="1"/>
<wire x1="34.471" y1="7.1822" x2="34.471" y2="8.4522" width="0.6096" layer="1"/>
<wire x1="34.4378" y1="7.149" x2="34.471" y2="7.1822" width="0.6096" layer="1"/>
<wire x1="36.63" y1="7.1842" x2="36.63" y2="6.09" width="0.8128" layer="1"/>
<wire x1="36.63" y1="7.1842" x2="36.63" y2="7.36" width="0.254" layer="1"/>
<wire x1="36.63" y1="6.09" x2="36.9094" y2="5.9376" width="0.6096" layer="1"/>
<wire x1="28.825" y1="34.665" x2="31.66" y2="34.665" width="0.4064" layer="1"/>
<wire x1="28.55" y1="34.39" x2="28.825" y2="34.665" width="0.4064" layer="1"/>
<wire x1="27.19" y1="34.39" x2="28.55" y2="34.39" width="0.4064" layer="1"/>
<wire x1="27.03" y1="34.55" x2="27.19" y2="34.39" width="0.4064" layer="1"/>
<wire x1="46.0426" y1="32.0492" x2="45.9668" y2="32.125" width="0.4064" layer="1"/>
<wire x1="46.0426" y1="30.4096" x2="46.0426" y2="32.0492" width="0.4064" layer="1"/>
<wire x1="46.0116" y1="30.3786" x2="46.0426" y2="30.4096" width="0.4064" layer="1"/>
<wire x1="46.0116" y1="30.3786" x2="47.3086" y2="30.3786" width="0.4064" layer="1"/>
<wire x1="47.3086" y1="30.3786" x2="47.96" y2="31.03" width="0.4064" layer="1"/>
<wire x1="41.82" y1="32.125" x2="43.105" y2="32.125" width="0.4064" layer="1"/>
<wire x1="43.105" y1="32.125" x2="43.17" y2="32.06" width="0.4064" layer="1"/>
<wire x1="38.025" y1="7.1842" x2="38.025" y2="7.745" width="0.6096" layer="1"/>
<wire x1="38.025" y1="7.745" x2="37.66" y2="8.68" width="0.6096" layer="1"/>
<wire x1="37.66" y1="8.68" x2="37.7625" y2="9.48" width="0.6096" layer="1"/>
<wire x1="37.7625" y1="9.48" x2="37.74" y2="10.9075" width="0.6096" layer="1"/>
<wire x1="47.215" y1="14.33" x2="48.14" y2="14.33" width="0.3048" layer="1"/>
<wire x1="48.14" y1="14.33" x2="48.23" y2="14.24" width="0.3048" layer="1"/>
<wire x1="45.98" y1="17.47" x2="45.98" y2="19.495" width="0.3048" layer="1"/>
<wire x1="45.98" y1="19.495" x2="45.945" y2="19.53" width="0.3048" layer="1"/>
<wire x1="59.4494" y1="39.0606" x2="59.4494" y2="37.9646" width="0.3048" layer="1"/>
<wire x1="58.55" y1="39.96" x2="59.4494" y2="39.0606" width="0.3048" layer="1"/>
<wire x1="56.01" y1="39.96" x2="58.55" y2="39.96" width="0.3048" layer="1"/>
<wire x1="55.97" y1="39.92" x2="56.01" y2="39.96" width="0.3048" layer="1"/>
<wire x1="69.85" y1="34.29" x2="69.85" y2="35.56" width="0.2032" layer="1"/>
<wire x1="69.85" y1="35.56" x2="69.39" y2="35.91" width="0.2032" layer="1"/>
<wire x1="49.95" y1="17.75" x2="51.45" y2="17.75" width="0.6096" layer="1"/>
<wire x1="24.67" y1="28.88" x2="23.26" y2="28.88" width="0.254" layer="1"/>
<wire x1="23.26" y1="28.88" x2="23.16" y2="28.98" width="0.254" layer="1"/>
<wire x1="13.86" y1="35.5" x2="13.86" y2="36.8" width="0.254" layer="1"/>
<wire x1="13.9" y1="35.23" x2="13.86" y2="35.5" width="0.254" layer="1"/>
<wire x1="19.25" y1="25.52" x2="21.07" y2="25.52" width="0.254" layer="1"/>
<wire x1="19.25" y1="24" x2="19.25" y2="25.52" width="0.254" layer="1"/>
<wire x1="19.28" y1="23.97" x2="19.25" y2="24" width="0.254" layer="1"/>
<wire x1="12.46" y1="28.79" x2="12.45" y2="30.48" width="0.254" layer="1"/>
<wire x1="12.38" y1="28.89" x2="12.46" y2="28.79" width="0.254" layer="1"/>
<wire x1="16.05" y1="28.89" x2="17.38" y2="28.89" width="0.254" layer="1"/>
<wire x1="17.38" y1="28.89" x2="17.42" y2="28.93" width="0.254" layer="1"/>
<wire x1="12.48" y1="22.11" x2="12.48" y2="23.79" width="0.254" layer="1"/>
<wire x1="12.42" y1="22.05" x2="12.48" y2="22.11" width="0.254" layer="1"/>
<wire x1="12.36" y1="22.11" x2="10.75" y2="22.11" width="0.254" layer="1"/>
<wire x1="12.42" y1="22.05" x2="12.36" y2="22.11" width="0.254" layer="1"/>
<wire x1="10.93" y1="16.91" x2="10.93" y2="15.48" width="0.254" layer="1"/>
<wire x1="10.93" y1="15.48" x2="10.97" y2="15.44" width="0.254" layer="1"/>
<wire x1="10.93" y1="16.91" x2="12.62" y2="16.91" width="0.254" layer="1"/>
<wire x1="12.62" y1="16.91" x2="12.75" y2="16.94" width="0.254" layer="1"/>
<wire x1="17.85" y1="14.94" x2="18.61" y2="14.94" width="0.254" layer="1"/>
<wire x1="16.96" y1="14.05" x2="17.85" y2="14.94" width="0.254" layer="1"/>
<wire x1="18.61" y1="14.94" x2="20.49" y2="14.94" width="0.254" layer="1"/>
<wire x1="20.49" y1="14.94" x2="20.5" y2="14.95" width="0.254" layer="1"/>
<wire x1="17.78" y1="35.56" x2="24.13" y2="29.21" width="0.2032" layer="1"/>
<wire x1="13.97" y1="35.56" x2="17.78" y2="35.56" width="0.2032" layer="1"/>
<wire x1="24.13" y1="29.21" x2="24.67" y2="28.88" width="0.2032" layer="1"/>
<wire x1="13.9" y1="35.23" x2="13.97" y2="35.56" width="0.2032" layer="1"/>
<via x="36.9094" y="5.9376" extent="1-16" drill="0.7"/>
<via x="27.03" y="34.55" extent="1-16" drill="0.6" shape="square"/>
<via x="47.96" y="31.03" extent="1-16" drill="0.6" shape="square"/>
<via x="43.17" y="32.06" extent="1-16" drill="0.6" shape="square"/>
<via x="45.98" y="17.47" extent="1-16" drill="0.6" shape="square"/>
<via x="48.23" y="14.24" extent="1-16" drill="0.6" shape="square"/>
<via x="69.85" y="34.29" extent="1-16" drill="0.6"/>
<via x="49.9" y="17.7" extent="1-16" drill="0.6" shape="square"/>
<via x="23.16" y="28.98" extent="1-16" drill="0.6" shape="square"/>
<via x="13.9" y="35.23" extent="1-16" drill="0.6" shape="square"/>
<via x="19.28" y="23.97" extent="1-16" drill="0.6" shape="square"/>
<via x="12.38" y="28.89" extent="1-16" drill="0.6" shape="square"/>
<via x="17.42" y="28.93" extent="1-16" drill="0.6" shape="square"/>
<via x="10.75" y="22.11" extent="1-16" drill="0.6" shape="square"/>
<via x="10.97" y="15.44" extent="1-16" drill="0.6" shape="square"/>
<via x="16.96" y="14.05" extent="1-16" drill="0.6" shape="square"/>
<polygon width="0.3048" layer="16" isolate="0.3048">
<vertex x="-0.3" y="1.58"/>
<vertex x="1.36" y="-1.77"/>
<vertex x="71.34" y="-2.14"/>
<vertex x="73.38" y="1.23"/>
<vertex x="73.1" y="34.4"/>
<vertex x="71.52" y="43.66"/>
<vertex x="0.13" y="43.56"/>
<vertex x="-0.79" y="33.98"/>
</polygon>
<polygon width="0.254" layer="1">
<vertex x="0.97" y="41.52"/>
<vertex x="0.56" y="41.52"/>
<vertex x="0.56" y="0.32"/>
<vertex x="71.6" y="0.32"/>
<vertex x="71.6" y="0.81"/>
<vertex x="71.28" y="0.81"/>
<vertex x="71.28" y="41.6"/>
<vertex x="2.5" y="41.6"/>
<vertex x="2.5" y="40.95"/>
</polygon>
</signal>
<signal name="VCC">
<contactref element="IC3" pad="3"/>
<contactref element="J3" pad="2"/>
<contactref element="IC1" pad="20"/>
<contactref element="R2" pad="2"/>
<contactref element="C5" pad="1"/>
<contactref element="R4" pad="2"/>
<contactref element="IC4" pad="4"/>
<contactref element="L1" pad="2"/>
<contactref element="C2" pad="+"/>
<contactref element="C3" pad="2"/>
<contactref element="J1" pad="12"/>
<contactref element="R11" pad="2"/>
<contactref element="J1" pad="10"/>
<contactref element="J1" pad="8"/>
<contactref element="J1" pad="6"/>
<contactref element="J1" pad="4"/>
<contactref element="J1" pad="2"/>
<contactref element="THERMISTOR" pad="2"/>
<wire x1="58.2676" y1="7.5022" x2="63.0476" y2="4.9522" width="0.8128" layer="1"/>
<wire x1="63.0476" y1="4.9522" x2="62.9576" y2="4.8358" width="0.4064" layer="1"/>
<wire x1="30.385" y1="33.395" x2="31.66" y2="33.395" width="0.3048" layer="1"/>
<wire x1="29.38" y1="32.39" x2="30.385" y2="33.395" width="0.3048" layer="1"/>
<wire x1="28.65" y1="32.39" x2="29.38" y2="32.39" width="0.3048" layer="1"/>
<wire x1="28.55" y1="32.49" x2="28.65" y2="32.39" width="0.3048" layer="1"/>
<wire x1="31.66" y1="33.395" x2="32.765" y2="33.395" width="0.3048" layer="1"/>
<wire x1="32.765" y1="33.395" x2="35.3" y2="32.48" width="0.3048" layer="1"/>
<wire x1="35.3" y1="28.08" x2="35.3" y2="20.58" width="0.3048" layer="1"/>
<wire x1="35.3" y1="32.48" x2="35.3" y2="28.08" width="0.3048" layer="1"/>
<wire x1="35.4785" y1="20.2726" x2="35.66" y2="19.96" width="0.6096" layer="1"/>
<wire x1="35.3" y1="20.58" x2="35.4785" y2="20.2726" width="0.3048" layer="1"/>
<wire x1="35.66" y1="19.96" x2="36.9" y2="19.96" width="0.6096" layer="1"/>
<wire x1="36.9" y1="19.96" x2="37.68" y2="19.18" width="0.6096" layer="1"/>
<wire x1="37.68" y1="19.18" x2="37.68" y2="17.63" width="0.6096" layer="1"/>
<wire x1="37.68" y1="17.63" x2="37.58" y2="17.53" width="0.3048" layer="1"/>
<wire x1="30.8558" y1="8.3642" x2="28.5652" y2="8.4142" width="0.6096" layer="1"/>
<wire x1="30.96" y1="8.41" x2="30.8558" y2="8.3642" width="0.3048" layer="1"/>
<wire x1="37.58" y1="17.53" x2="37.58" y2="9.99" width="0.6096" layer="16"/>
<wire x1="37.58" y1="9.99" x2="36.71" y2="9.12" width="0.6096" layer="16"/>
<wire x1="36.71" y1="9.12" x2="32.14" y2="9.12" width="0.6096" layer="16"/>
<wire x1="32.14" y1="9.12" x2="30.96" y2="8.41" width="0.6096" layer="16"/>
<wire x1="37.5275" y1="13.6525" x2="37.74" y2="12.8125" width="0.6096" layer="1"/>
<wire x1="37.63" y1="14.12" x2="37.5275" y2="13.6525" width="0.6096" layer="1"/>
<wire x1="37.58" y1="17.53" x2="37.58" y2="15.87" width="0.6096" layer="1"/>
<wire x1="37.58" y1="15.87" x2="37.63" y2="14.12" width="0.6096" layer="1"/>
<wire x1="44.675" y1="18.145" x2="44.675" y2="19.53" width="0.3048" layer="1"/>
<wire x1="44.03" y1="17.5" x2="44.675" y2="18.145" width="0.3048" layer="1"/>
<wire x1="43.51" y1="17.5" x2="44.03" y2="17.5" width="0.3048" layer="1"/>
<wire x1="41.59" y1="15.58" x2="43.51" y2="17.5" width="0.3048" layer="1"/>
<wire x1="40.74" y1="15.58" x2="41.59" y2="15.58" width="0.3048" layer="1"/>
<wire x1="40.35" y1="15.19" x2="40.74" y2="15.58" width="0.3048" layer="1"/>
<wire x1="38.26" y1="15.19" x2="40.35" y2="15.19" width="0.3048" layer="1"/>
<wire x1="37.58" y1="15.87" x2="38.26" y2="15.19" width="0.3048" layer="1"/>
<wire x1="55.85" y1="5.87" x2="58.2254" y2="5.87" width="0.6096" layer="1"/>
<wire x1="58.2254" y1="5.87" x2="58.2676" y2="7.5022" width="0.3048" layer="1"/>
<wire x1="39.96" y1="5.87" x2="55.85" y2="5.87" width="0.6096" layer="16"/>
<wire x1="36.71" y1="9.12" x2="39.96" y2="5.87" width="0.6096" layer="16"/>
<wire x1="44.54" y1="27.28" x2="44.54" y2="26.67" width="0.3048" layer="1"/>
<wire x1="44.54" y1="26.67" x2="44.54" y2="25.14" width="0.3048" layer="1"/>
<wire x1="43.58" y1="28.24" x2="44.54" y2="27.28" width="0.3048" layer="1"/>
<wire x1="36.14" y1="28.24" x2="43.58" y2="28.24" width="0.3048" layer="16"/>
<wire x1="36.09" y1="28.19" x2="36.14" y2="28.24" width="0.3048" layer="16"/>
<wire x1="35.41" y1="28.19" x2="36.09" y2="28.19" width="0.3048" layer="1"/>
<wire x1="35.3" y1="28.08" x2="35.41" y2="28.19" width="0.3048" layer="1"/>
<wire x1="52.07" y1="40.64" x2="53.34" y2="39.37" width="0.6096" layer="1"/>
<wire x1="35.56" y1="40.64" x2="52.07" y2="40.64" width="0.6096" layer="1"/>
<wire x1="35.56" y1="20.32" x2="35.56" y2="40.64" width="0.6096" layer="1"/>
<wire x1="53.34" y1="39.37" x2="53.84" y2="39.9" width="0.6096" layer="1"/>
<wire x1="35.4785" y1="20.2726" x2="35.56" y2="20.32" width="0.254" layer="1"/>
<wire x1="44.45" y1="26.67" x2="49.53" y2="21.59" width="0.2032" layer="1"/>
<wire x1="49.53" y1="21.59" x2="49.56" y2="21.64" width="0.2032" layer="1"/>
<wire x1="44.54" y1="26.67" x2="44.45" y2="26.67" width="0.2032" layer="1"/>
<wire x1="25.78" y1="32.49" x2="28.55" y2="32.49" width="0.8128" layer="1"/>
<wire x1="25.78" y1="40.33" x2="25.78" y2="32.49" width="0.8128" layer="1"/>
<wire x1="4.88" y1="40.33" x2="10.01" y2="40.33" width="0.8128" layer="1"/>
<wire x1="10.01" y1="40.33" x2="25.78" y2="40.33" width="0.8128" layer="1"/>
<wire x1="4.88" y1="40.32" x2="4.88" y2="40.33" width="0.4064" layer="1"/>
<wire x1="3.8" y1="40.32" x2="4.88" y2="40.32" width="0.4064" layer="1"/>
<wire x1="2.38" y1="38.9" x2="3.8" y2="40.32" width="0.6096" layer="1"/>
<wire x1="2.38" y1="34.09" x2="2.38" y2="38.9" width="0.6096" layer="1"/>
<wire x1="3.13" y1="33.34" x2="2.38" y2="34.09" width="0.6096" layer="1"/>
<wire x1="4.86" y1="33.34" x2="3.13" y2="33.34" width="0.4064" layer="1"/>
<wire x1="4.88" y1="33.32" x2="4.86" y2="33.34" width="0.4064" layer="1"/>
<wire x1="3.24" y1="33.32" x2="4.88" y2="33.32" width="0.6096" layer="1"/>
<wire x1="2.47" y1="32.55" x2="3.24" y2="33.32" width="0.6096" layer="1"/>
<wire x1="2.47" y1="27.14" x2="2.47" y2="32.55" width="0.6096" layer="1"/>
<wire x1="3.27" y1="26.34" x2="2.47" y2="27.14" width="0.6096" layer="1"/>
<wire x1="4.86" y1="26.34" x2="3.27" y2="26.34" width="0.4064" layer="1"/>
<wire x1="4.88" y1="26.32" x2="4.86" y2="26.34" width="0.4064" layer="1"/>
<wire x1="3.43" y1="26.32" x2="4.88" y2="26.32" width="0.6096" layer="1"/>
<wire x1="2.61" y1="25.5" x2="3.43" y2="26.32" width="0.6096" layer="1"/>
<wire x1="2.61" y1="19.99" x2="2.61" y2="25.5" width="0.6096" layer="1"/>
<wire x1="3.27" y1="19.33" x2="2.61" y2="19.99" width="0.6096" layer="1"/>
<wire x1="4.87" y1="19.33" x2="3.27" y2="19.33" width="0.6096" layer="1"/>
<wire x1="4.88" y1="19.32" x2="4.87" y2="19.33" width="0.4064" layer="1"/>
<wire x1="3.67" y1="19.32" x2="4.88" y2="19.32" width="0.4064" layer="1"/>
<wire x1="2.75" y1="18.4" x2="3.67" y2="19.32" width="0.6096" layer="1"/>
<wire x1="2.75" y1="13.03" x2="2.75" y2="18.4" width="0.6096" layer="1"/>
<wire x1="3.5" y1="12.28" x2="2.75" y2="13.03" width="0.6096" layer="1"/>
<wire x1="4.84" y1="12.28" x2="3.5" y2="12.28" width="0.6096" layer="1"/>
<wire x1="4.88" y1="12.32" x2="4.84" y2="12.28" width="0.4064" layer="1"/>
<wire x1="3.77" y1="12.32" x2="4.88" y2="12.32" width="0.4064" layer="1"/>
<wire x1="2.8" y1="11.35" x2="3.77" y2="12.32" width="0.6096" layer="1"/>
<wire x1="2.8" y1="5.79" x2="2.8" y2="11.35" width="0.6096" layer="1"/>
<wire x1="3.27" y1="5.32" x2="2.8" y2="5.79" width="0.6096" layer="1"/>
<wire x1="4.88" y1="5.32" x2="3.27" y2="5.32" width="0.6096" layer="1"/>
<wire x1="9.85" y1="40.17" x2="9.85" y2="38.65" width="0.254" layer="1"/>
<wire x1="10.01" y1="40.33" x2="9.85" y2="40.17" width="0.254" layer="1"/>
<via x="30.96" y="8.41" extent="1-16" drill="0.6" shape="square"/>
<via x="55.85" y="5.87" extent="1-16" drill="0.6" shape="square"/>
<via x="43.58" y="28.24" extent="1-16" drill="0.6" shape="square"/>
<via x="36.09" y="28.19" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="TXCAN">
<contactref element="IC3" pad="1"/>
<contactref element="IC1" pad="23"/>
<wire x1="47.215" y1="21.505" x2="47.215" y2="19.53" width="0.3048" layer="1"/>
<wire x1="47.01" y1="21.71" x2="47.215" y2="21.505" width="0.3048" layer="1"/>
<wire x1="35.81" y1="21.71" x2="47.01" y2="21.71" width="0.3048" layer="16"/>
<wire x1="33.56" y1="23.96" x2="35.81" y2="21.71" width="0.3048" layer="16"/>
<wire x1="33.56" y1="23.96" x2="33.56" y2="28.41" width="0.3048" layer="1"/>
<wire x1="33.56" y1="28.41" x2="32.32" y2="29.65" width="0.3048" layer="1"/>
<wire x1="32.32" y1="29.65" x2="31.725" y2="29.65" width="0.3048" layer="1"/>
<wire x1="31.725" y1="29.65" x2="31.66" y2="29.585" width="0.3048" layer="1"/>
<via x="47.01" y="21.71" extent="1-16" drill="0.6" shape="square"/>
<via x="33.56" y="23.96" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="N$4">
<contactref element="IC1" pad="12"/>
<contactref element="R3" pad="2"/>
<wire x1="41.82" y1="37.205" x2="41.925" y2="37.205" width="0.3048" layer="1"/>
<wire x1="41.925" y1="37.205" x2="42.01" y2="37.12" width="0.3048" layer="1"/>
<wire x1="42.01" y1="37.12" x2="46.14" y2="37.12" width="0.3048" layer="1"/>
<wire x1="46.14" y1="37.12" x2="46.18" y2="37.16" width="0.3048" layer="1"/>
<wire x1="46.18" y1="37.16" x2="50.73" y2="37.16" width="0.3048" layer="16"/>
<wire x1="50.73" y1="37.16" x2="52.17" y2="35.72" width="0.3048" layer="16"/>
<wire x1="52.17" y1="35.72" x2="52.17" y2="34.03" width="0.3048" layer="16"/>
<wire x1="52.17" y1="34.03" x2="53.28" y2="32.92" width="0.3048" layer="16"/>
<wire x1="53.28" y1="32.92" x2="57.58" y2="32.92" width="0.3048" layer="1"/>
<wire x1="57.58" y1="32.92" x2="58.1" y2="33.44" width="0.3048" layer="1"/>
<wire x1="58.1" y1="33.44" x2="59.69" y2="33.44" width="0.3048" layer="1"/>
<wire x1="67.43" y1="35.51" x2="67.43" y2="39.85" width="0.3048" layer="1"/>
<wire x1="66.96" y1="35.04" x2="67.43" y2="35.51" width="0.3048" layer="1"/>
<wire x1="66.96" y1="34.62" x2="66.96" y2="35.04" width="0.3048" layer="1"/>
<wire x1="65.98" y1="33.64" x2="66.96" y2="34.62" width="0.3048" layer="1"/>
<wire x1="59.89" y1="33.64" x2="65.98" y2="33.64" width="0.3048" layer="1"/>
<wire x1="59.69" y1="33.44" x2="59.89" y2="33.64" width="0.3048" layer="1"/>
<via x="46.18" y="37.16" extent="1-16" drill="0.6" shape="square"/>
<via x="53.28" y="32.92" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="N$6">
<contactref element="S1" pad="1"/>
<contactref element="IC1" pad="11"/>
<contactref element="R4" pad="1"/>
<contactref element="C7" pad="2"/>
<wire x1="53.84" y1="38" x2="55.95" y2="38" width="0.3048" layer="1"/>
<wire x1="55.95" y1="38" x2="55.97" y2="38.02" width="0.3048" layer="1"/>
<wire x1="52.31" y1="38" x2="53.84" y2="38" width="0.3048" layer="1"/>
<wire x1="51.98" y1="38.33" x2="52.31" y2="38" width="0.3048" layer="1"/>
<wire x1="51.98" y1="39.11" x2="51.98" y2="38.33" width="0.3048" layer="1"/>
<wire x1="51.49" y1="39.6" x2="51.98" y2="39.11" width="0.3048" layer="1"/>
<wire x1="48.39" y1="39.6" x2="51.49" y2="39.6" width="0.3048" layer="1"/>
<wire x1="47.71" y1="38.92" x2="48.39" y2="39.6" width="0.3048" layer="1"/>
<wire x1="47.71" y1="36.64" x2="47.71" y2="38.92" width="0.3048" layer="1"/>
<wire x1="46.99" y1="35.92" x2="47.71" y2="36.64" width="0.3048" layer="1"/>
<wire x1="41.835" y1="35.92" x2="46.99" y2="35.92" width="0.3048" layer="1"/>
<wire x1="41.82" y1="35.935" x2="41.835" y2="35.92" width="0.3048" layer="1"/>
<wire x1="61.3146" y1="37.9646" x2="63.9706" y2="37.9646" width="0.3048" layer="1"/>
<wire x1="59.92" y1="36.57" x2="61.3146" y2="37.9646" width="0.3048" layer="1"/>
<wire x1="59.33" y1="36.57" x2="59.92" y2="36.57" width="0.3048" layer="1"/>
<wire x1="59.14" y1="36.76" x2="59.33" y2="36.57" width="0.3048" layer="1"/>
<wire x1="58.95" y1="36.76" x2="59.14" y2="36.76" width="0.3048" layer="1"/>
<wire x1="58.62" y1="37.09" x2="58.95" y2="36.76" width="0.3048" layer="1"/>
<wire x1="58.33" y1="37.09" x2="58.62" y2="37.09" width="0.3048" layer="1"/>
<wire x1="58.13" y1="37.29" x2="58.33" y2="37.09" width="0.3048" layer="1"/>
<wire x1="58.07" y1="37.29" x2="58.13" y2="37.29" width="0.3048" layer="1"/>
<wire x1="57.32" y1="38.04" x2="58.07" y2="37.29" width="0.3048" layer="1"/>
<wire x1="55.99" y1="38.04" x2="57.32" y2="38.04" width="0.3048" layer="1"/>
<wire x1="55.97" y1="38.02" x2="55.99" y2="38.04" width="0.3048" layer="1"/>
</signal>
<signal name="RXCAN">
<contactref element="IC3" pad="4"/>
<contactref element="IC1" pad="24"/>
<wire x1="42.71" y1="19.53" x2="43.405" y2="19.53" width="0.3048" layer="1"/>
<wire x1="41.89" y1="20.35" x2="42.71" y2="19.53" width="0.3048" layer="1"/>
<wire x1="31.37" y1="20.35" x2="41.89" y2="20.35" width="0.3048" layer="16"/>
<wire x1="29.9" y1="21.82" x2="31.37" y2="20.35" width="0.3048" layer="16"/>
<wire x1="29.9" y1="21.82" x2="29.9" y2="28.19" width="0.3048" layer="16"/>
<wire x1="29.9" y1="28.19" x2="30.01" y2="28.3" width="0.3048" layer="16"/>
<wire x1="30.01" y1="28.3" x2="31.645" y2="28.3" width="0.3048" layer="1"/>
<wire x1="31.645" y1="28.3" x2="31.66" y2="28.315" width="0.3048" layer="1"/>
<via x="41.89" y="20.35" extent="1-16" drill="0.6" shape="square"/>
<via x="30.01" y="28.3" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="N$5">
<contactref element="R3" pad="1"/>
<contactref element="LED1" pad="A"/>
<wire x1="69.85" y1="39.37" x2="69.33" y2="39.85" width="0.254" layer="1"/>
<wire x1="69.85" y1="38.1" x2="69.85" y2="39.37" width="0.2032" layer="1"/>
<wire x1="69.39" y1="38.01" x2="69.85" y2="38.1" width="0.2032" layer="1"/>
</signal>
<signal name="N$12">
<contactref element="J3" pad="1"/>
<contactref element="IC1" pad="1"/>
<contactref element="R2" pad="1"/>
<wire x1="44.535" y1="23.235" x2="41.82" y2="23.235" width="0.3048" layer="1"/>
<wire x1="44.54" y1="23.24" x2="44.535" y2="23.235" width="0.3048" layer="1"/>
<wire x1="41.74" y1="23.24" x2="44.54" y2="23.24" width="0.3048" layer="1"/>
<wire x1="40.16" y1="21.66" x2="41.74" y2="23.24" width="0.3048" layer="1"/>
<wire x1="40.16" y1="17.57" x2="40.16" y2="21.66" width="0.3048" layer="1"/>
<wire x1="40.12" y1="17.53" x2="40.16" y2="17.57" width="0.3048" layer="1"/>
</signal>
<signal name="N$13">
<contactref element="J3" pad="4"/>
<contactref element="IC1" pad="28"/>
<wire x1="32.245" y1="23.235" x2="31.66" y2="23.235" width="0.3048" layer="1"/>
<wire x1="32.52" y1="22.96" x2="32.245" y2="23.235" width="0.3048" layer="1"/>
<wire x1="32.52" y1="17.55" x2="32.52" y2="22.96" width="0.3048" layer="1"/>
<wire x1="32.5" y1="17.53" x2="32.52" y2="17.55" width="0.3048" layer="1"/>
</signal>
<signal name="N$14">
<contactref element="J3" pad="5"/>
<contactref element="IC1" pad="27"/>
<wire x1="30.735" y1="24.505" x2="31.66" y2="24.505" width="0.3048" layer="1"/>
<wire x1="30.03" y1="23.8" x2="30.735" y2="24.505" width="0.3048" layer="1"/>
<wire x1="30.03" y1="17.6" x2="30.03" y2="23.8" width="0.3048" layer="1"/>
<wire x1="29.96" y1="17.53" x2="30.03" y2="17.6" width="0.3048" layer="1"/>
</signal>
<signal name="N$15">
<contactref element="J3" pad="6"/>
<contactref element="IC1" pad="26"/>
<wire x1="28.685" y1="25.775" x2="31.66" y2="25.775" width="0.3048" layer="1"/>
<wire x1="27.41" y1="24.5" x2="28.685" y2="25.775" width="0.3048" layer="1"/>
<wire x1="27.41" y1="17.54" x2="27.41" y2="24.5" width="0.3048" layer="1"/>
<wire x1="27.42" y1="17.53" x2="27.41" y2="17.54" width="0.3048" layer="1"/>
</signal>
<signal name="CANL">
<contactref element="IC3" pad="6"/>
<contactref element="D2" pad="2"/>
<contactref element="J2" pad="5"/>
<contactref element="J4" pad="3"/>
<contactref element="PAD2" pad="1"/>
<wire x1="58.03" y1="21.66" x2="60.35" y2="21.66" width="0.254" layer="1"/>
<wire x1="60.35" y1="21.66" x2="60.92" y2="21.09" width="0.254" layer="1"/>
<wire x1="60.92" y1="21.09" x2="60.92" y2="16.07" width="0.254" layer="1"/>
<wire x1="60.92" y1="16.07" x2="62.06" y2="14.93" width="0.254" layer="1"/>
<wire x1="62.06" y1="14.93" x2="62.06" y2="13.67" width="0.254" layer="1"/>
<wire x1="62.06" y1="13.67" x2="62.9" y2="12.83" width="0.254" layer="1"/>
<wire x1="62.9" y1="12.83" x2="64.29" y2="12.83" width="0.254" layer="1"/>
<wire x1="64.29" y1="12.83" x2="65.81" y2="12.53" width="0.254" layer="1"/>
<wire x1="65.81" y1="12.53" x2="65.81" y2="10.75" width="0.254" layer="1"/>
<wire x1="65.81" y1="10.75" x2="66.62" y2="10.43" width="0.254" layer="1"/>
<wire x1="54.21" y1="21.66" x2="58.03" y2="21.66" width="0.254" layer="1"/>
<wire x1="53.48" y1="20.93" x2="54.21" y2="21.66" width="0.254" layer="1"/>
<wire x1="53.48" y1="16.56" x2="53.48" y2="20.93" width="0.254" layer="1"/>
<wire x1="53.02" y1="16.1" x2="53.385" y2="16.465" width="0.254" layer="1"/>
<wire x1="53.385" y1="16.465" x2="53.48" y2="16.56" width="0.254" layer="1"/>
<wire x1="45.06" y1="16.1" x2="53.02" y2="16.1" width="0.254" layer="1"/>
<wire x1="44.67" y1="15.71" x2="45.06" y2="16.1" width="0.254" layer="1"/>
<wire x1="44.67" y1="14.335" x2="44.67" y2="15.71" width="0.254" layer="1"/>
<wire x1="44.675" y1="14.33" x2="44.67" y2="14.335" width="0.254" layer="1"/>
<wire x1="41.71" y1="13.09" x2="42.45" y2="12.74" width="0.2032" layer="1"/>
<wire x1="44.45" y1="13.97" x2="44.675" y2="14.33" width="0.2032" layer="1"/>
<wire x1="54.61" y1="13.97" x2="52.07" y2="13.97" width="0.2032" layer="1"/>
<wire x1="54.61" y1="15.24" x2="54.61" y2="13.97" width="0.2032" layer="1"/>
<wire x1="53.385" y1="16.465" x2="54.61" y2="15.24" width="0.2032" layer="1"/>
<wire x1="52.07" y1="13.97" x2="52.33" y2="14.11" width="0.2032" layer="1"/>
<wire x1="53.385" y1="16.465" x2="53.34" y2="16.51" width="0.2032" layer="1"/>
<wire x1="41.91" y1="12.7" x2="44.45" y2="12.7" width="0.1778" layer="1"/>
<wire x1="44.45" y1="12.7" x2="44.45" y2="13.97" width="0.1778" layer="1"/>
<wire x1="41.71" y1="13.09" x2="41.91" y2="12.7" width="0.1778" layer="1"/>
</signal>
<signal name="AN8">
<contactref element="IC1" pad="22"/>
<contactref element="R9" pad="1"/>
<contactref element="C9" pad="1"/>
<wire x1="22.97" y1="25.52" x2="23.62" y2="25.52" width="0.254" layer="1"/>
<wire x1="23.62" y1="25.52" x2="25.3" y2="27.2" width="0.254" layer="1"/>
<wire x1="25.3" y1="27.2" x2="27.48" y2="27.2" width="0.254" layer="1"/>
<wire x1="27.48" y1="27.2" x2="28.06" y2="27.78" width="0.254" layer="1"/>
<wire x1="28.06" y1="27.78" x2="28.06" y2="29.29" width="0.254" layer="1"/>
<wire x1="28.06" y1="29.29" x2="28.61" y2="29.84" width="0.254" layer="1"/>
<wire x1="28.61" y1="29.84" x2="29.26" y2="29.84" width="0.254" layer="1"/>
<wire x1="29.26" y1="29.84" x2="30.28" y2="30.86" width="0.254" layer="1"/>
<wire x1="30.28" y1="30.86" x2="31.655" y2="30.86" width="0.254" layer="1"/>
<wire x1="31.655" y1="30.86" x2="31.66" y2="30.855" width="0.254" layer="1"/>
<wire x1="21.31" y1="27.32" x2="22.62" y2="27.32" width="0.254" layer="1"/>
<wire x1="22.62" y1="27.32" x2="23.01" y2="26.93" width="0.254" layer="1"/>
<wire x1="23.01" y1="26.93" x2="23.01" y2="25.56" width="0.254" layer="1"/>
<wire x1="23.01" y1="25.56" x2="22.97" y2="25.52" width="0.254" layer="1"/>
</signal>
<signal name="AN10">
<contactref element="IC1" pad="21"/>
<contactref element="R6" pad="1"/>
<contactref element="C8" pad="1"/>
<wire x1="26.5" y1="30.62" x2="28.58" y2="30.62" width="0.254" layer="1"/>
<wire x1="28.58" y1="30.62" x2="30.12" y2="32.16" width="0.254" layer="1"/>
<wire x1="30.12" y1="32.16" x2="31.625" y2="32.16" width="0.254" layer="1"/>
<wire x1="31.625" y1="32.16" x2="31.66" y2="32.125" width="0.254" layer="1"/>
<wire x1="26.5" y1="28.95" x2="26.5" y2="30.62" width="0.254" layer="1"/>
<wire x1="26.57" y1="28.88" x2="26.5" y2="28.95" width="0.254" layer="1"/>
</signal>
<signal name="N$3">
<contactref element="D1" pad="C"/>
<contactref element="IC4" pad="1"/>
<contactref element="C1" pad="+"/>
<wire x1="28.5652" y1="3.3088" x2="34.3532" y2="3.3588" width="0.8128" layer="1"/>
<wire x1="34.3532" y1="3.3588" x2="34.3378" y2="2.9442" width="0.4064" layer="1"/>
<wire x1="64.48" y1="31.86" x2="63.94" y2="31.86" width="0.4064" layer="1"/>
<wire x1="64.58" y1="31.76" x2="64.48" y2="31.86" width="0.4064" layer="1"/>
<wire x1="67.25" y1="31.76" x2="64.58" y2="31.76" width="0.8128" layer="1"/>
<wire x1="70.95" y1="29.46" x2="67.25" y2="31.76" width="0.8128" layer="1"/>
<wire x1="70.95" y1="12.05" x2="70.95" y2="29.46" width="0.8128" layer="1"/>
<wire x1="70.98" y1="1.02" x2="70.95" y2="12.05" width="0.8128" layer="1"/>
<wire x1="55.42" y1="1.18" x2="70.98" y2="1.02" width="0.8128" layer="1"/>
<wire x1="53.07" y1="1.13" x2="55.42" y2="1.18" width="0.8128" layer="1"/>
<wire x1="53.29" y1="1.12" x2="53.07" y2="1.13" width="0.8128" layer="1"/>
<wire x1="50.97" y1="1.13" x2="53.29" y2="1.12" width="0.8128" layer="1"/>
<wire x1="34.972" y1="1.18" x2="50.97" y2="1.13" width="0.8128" layer="1"/>
<wire x1="34.3378" y1="2.9442" x2="34.972" y2="1.18" width="0.4064" layer="1"/>
</signal>
<signal name="N$1">
<contactref element="IC4" pad="2"/>
<contactref element="L1" pad="1"/>
<contactref element="D3" pad="C"/>
<wire x1="47.7076" y1="7.5022" x2="43.4322" y2="5.9122" width="0.8128" layer="1"/>
<wire x1="47.7076" y1="7.5022" x2="47.7806" y2="5.9122" width="0.6096" layer="1"/>
<wire x1="47.7806" y1="5.9122" x2="47.8314" y2="5.8614" width="0.6096" layer="1"/>
<wire x1="47.7076" y1="5.8138" x2="47.7076" y2="7.5022" width="0.6096" layer="1"/>
<wire x1="45.5962" y1="3.7024" x2="47.7076" y2="5.8138" width="0.8128" layer="1"/>
<wire x1="37.1634" y1="3.7024" x2="45.5962" y2="3.7024" width="0.8128" layer="1"/>
<wire x1="35.3458" y1="5.11" x2="37.1634" y2="3.7024" width="0.8128" layer="1"/>
<wire x1="31.0166" y1="5.1" x2="35.3458" y2="5.11" width="0.8128" layer="1"/>
<wire x1="28.6148" y1="4.9982" x2="31.0166" y2="5.1" width="0.8128" layer="1"/>
<wire x1="28.5652" y1="5.0106" x2="28.6544" y2="4.9482" width="0.6096" layer="1"/>
<wire x1="28.6544" y1="4.9482" x2="28.6148" y2="4.9982" width="0.8128" layer="1"/>
<wire x1="28.6544" y1="4.9482" x2="28.5274" y2="4.8952" width="0.6096" layer="1"/>
</signal>
<signal name="N$2">
<contactref element="IC1" pad="10"/>
<contactref element="C4" pad="2"/>
<contactref element="Q1" pad="P$1"/>
<wire x1="49.58" y1="35.37" x2="49.58" y2="36.37" width="0.4064" layer="1"/>
<wire x1="48.1" y1="33.89" x2="49.58" y2="35.37" width="0.4064" layer="1"/>
<wire x1="45.66" y1="33.89" x2="48.1" y2="33.89" width="0.4064" layer="1"/>
<wire x1="45.52" y1="34.03" x2="45.66" y2="33.89" width="0.4064" layer="1"/>
<wire x1="45.52" y1="34.03" x2="45.9618" y2="34.03" width="0.4064" layer="1"/>
<wire x1="45.9618" y1="34.03" x2="46.0426" y2="33.9492" width="0.4064" layer="1"/>
<wire x1="44.87" y1="34.03" x2="45.52" y2="34.03" width="0.4064" layer="1"/>
<wire x1="44.3" y1="34.6" x2="44.87" y2="34.03" width="0.4064" layer="1"/>
<wire x1="41.885" y1="34.6" x2="44.3" y2="34.6" width="0.4064" layer="1"/>
<wire x1="41.82" y1="34.665" x2="41.885" y2="34.6" width="0.4064" layer="1"/>
</signal>
<signal name="N$7">
<contactref element="C6" pad="2"/>
<contactref element="IC1" pad="9"/>
<contactref element="Q1" pad="P$2"/>
<wire x1="47.6202" y1="26.87" x2="49.58" y2="26.87" width="0.4064" layer="1"/>
<wire x1="46.0116" y1="28.4786" x2="47.6202" y2="26.87" width="0.4064" layer="1"/>
<wire x1="45.4114" y1="28.4786" x2="46.0116" y2="28.4786" width="0.4064" layer="1"/>
<wire x1="44.78" y1="29.11" x2="45.4114" y2="28.4786" width="0.4064" layer="1"/>
<wire x1="44.78" y1="29.11" x2="44.78" y2="32.45" width="0.4064" layer="1"/>
<wire x1="44.78" y1="32.45" x2="43.83" y2="33.4" width="0.4064" layer="1"/>
<wire x1="43.83" y1="33.4" x2="41.825" y2="33.4" width="0.4064" layer="1"/>
<wire x1="41.825" y1="33.4" x2="41.82" y2="33.395" width="0.4064" layer="1"/>
</signal>
<signal name="AN9">
<contactref element="IC1" pad="25"/>
<contactref element="R7" pad="1"/>
<contactref element="C10" pad="1"/>
<wire x1="28.655" y1="27.045" x2="31.66" y2="27.045" width="0.254" layer="1"/>
<wire x1="27.95" y1="26.34" x2="28.655" y2="27.045" width="0.254" layer="1"/>
<wire x1="26" y1="26.34" x2="27.95" y2="26.34" width="0.254" layer="1"/>
<wire x1="24.76" y1="25.1" x2="26" y2="26.34" width="0.254" layer="1"/>
<wire x1="24.76" y1="23.23" x2="24.76" y2="25.1" width="0.254" layer="1"/>
<wire x1="24.18" y1="22.65" x2="24.76" y2="23.23" width="0.254" layer="1"/>
<wire x1="18.11" y1="22.65" x2="24.18" y2="22.65" width="0.254" layer="1"/>
<wire x1="17.49" y1="23.27" x2="18.11" y2="22.65" width="0.254" layer="1"/>
<wire x1="17.49" y1="26.42" x2="17.49" y2="23.27" width="0.254" layer="1"/>
<wire x1="16.75" y1="27.16" x2="17.49" y2="26.42" width="0.254" layer="1"/>
<wire x1="14.42" y1="27.16" x2="16.75" y2="27.16" width="0.254" layer="1"/>
<wire x1="14.15" y1="27.43" x2="14.42" y2="27.16" width="0.254" layer="1"/>
<wire x1="14.15" y1="27.43" x2="14.15" y2="28.89" width="0.254" layer="1"/>
<wire x1="14.2" y1="28.94" x2="14.2" y2="30.48" width="0.254" layer="1"/>
<wire x1="14.15" y1="28.89" x2="14.2" y2="28.94" width="0.254" layer="1"/>
</signal>
<signal name="N$20">
<contactref element="R11" pad="1"/>
<contactref element="LED2" pad="A"/>
<wire x1="51.46" y1="19.86" x2="51.46" y2="21.64" width="0.6096" layer="1"/>
<wire x1="51.45" y1="19.85" x2="51.46" y2="19.86" width="0.6096" layer="1"/>
</signal>
<signal name="AN0">
<contactref element="IC1" pad="2"/>
<contactref element="R12" pad="1"/>
<contactref element="C11" pad="1"/>
<wire x1="14.51" y1="22.24" x2="14.51" y2="23.8" width="0.254" layer="1"/>
<wire x1="14.32" y1="22.05" x2="14.51" y2="22.24" width="0.254" layer="1"/>
<wire x1="41.305" y1="24.505" x2="41.82" y2="24.505" width="0.254" layer="1"/>
<wire x1="39.95" y1="23.15" x2="41.305" y2="24.505" width="0.254" layer="1"/>
<wire x1="35.71" y1="23.15" x2="39.95" y2="23.15" width="0.254" layer="16"/>
<wire x1="34.82" y1="24.04" x2="35.71" y2="23.15" width="0.254" layer="16"/>
<wire x1="34.82" y1="24.96" x2="34.82" y2="24.04" width="0.254" layer="16"/>
<wire x1="34.59" y1="25.19" x2="34.82" y2="24.96" width="0.254" layer="16"/>
<wire x1="32.09" y1="25.19" x2="34.59" y2="25.19" width="0.254" layer="16"/>
<wire x1="31.66" y1="25.62" x2="32.09" y2="25.19" width="0.254" layer="16"/>
<wire x1="31.66" y1="29.36" x2="31.66" y2="25.62" width="0.254" layer="16"/>
<wire x1="31.47" y1="29.55" x2="31.66" y2="29.36" width="0.254" layer="16"/>
<wire x1="28.47" y1="29.55" x2="31.47" y2="29.55" width="0.254" layer="16"/>
<wire x1="28.43" y1="29.51" x2="28.47" y2="29.55" width="0.254" layer="16"/>
<wire x1="28.43" y1="22.96" x2="28.43" y2="29.51" width="0.254" layer="16"/>
<wire x1="27.5" y1="22.03" x2="28.43" y2="22.96" width="0.254" layer="16"/>
<wire x1="16.21" y1="22.03" x2="27.5" y2="22.03" width="0.254" layer="16"/>
<wire x1="16.14" y1="21.96" x2="16.21" y2="22.03" width="0.254" layer="16"/>
<wire x1="14.41" y1="21.96" x2="16.14" y2="21.96" width="0.254" layer="1"/>
<wire x1="14.32" y1="22.05" x2="14.41" y2="21.96" width="0.254" layer="1"/>
<via x="39.95" y="23.15" extent="1-16" drill="0.6" shape="square"/>
<via x="16.14" y="21.96" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="AN1">
<contactref element="IC1" pad="3"/>
<contactref element="R14" pad="1"/>
<contactref element="C12" pad="1"/>
<wire x1="14.89" y1="17.29" x2="14.7" y2="18.81" width="0.254" layer="1"/>
<wire x1="14.85" y1="16.71" x2="14.89" y2="17.29" width="0.254" layer="1"/>
<wire x1="14.82" y1="16.75" x2="14.85" y2="16.71" width="0.254" layer="1"/>
<wire x1="14.65" y1="16.94" x2="14.82" y2="16.75" width="0.254" layer="1"/>
<wire x1="39.785" y1="25.775" x2="41.82" y2="25.775" width="0.254" layer="1"/>
<wire x1="38.62" y1="24.61" x2="39.785" y2="25.775" width="0.254" layer="1"/>
<wire x1="36.22" y1="24.61" x2="38.62" y2="24.61" width="0.254" layer="16"/>
<wire x1="36.06" y1="24.77" x2="36.22" y2="24.61" width="0.254" layer="16"/>
<wire x1="36.06" y1="25.67" x2="36.06" y2="24.77" width="0.254" layer="16"/>
<wire x1="35.58" y1="26.15" x2="36.06" y2="25.67" width="0.254" layer="16"/>
<wire x1="33.43" y1="26.15" x2="35.58" y2="26.15" width="0.254" layer="16"/>
<wire x1="33.14" y1="26.44" x2="33.43" y2="26.15" width="0.254" layer="16"/>
<wire x1="33.14" y1="30.26" x2="33.14" y2="26.44" width="0.254" layer="16"/>
<wire x1="32.79" y1="30.61" x2="33.14" y2="30.26" width="0.254" layer="16"/>
<wire x1="27.43" y1="30.61" x2="32.79" y2="30.61" width="0.254" layer="16"/>
<wire x1="27.4" y1="30.58" x2="27.43" y2="30.61" width="0.254" layer="16"/>
<wire x1="27.4" y1="24.13" x2="27.4" y2="30.58" width="0.254" layer="16"/>
<wire x1="26.47" y1="23.2" x2="27.4" y2="24.13" width="0.254" layer="16"/>
<wire x1="20.79" y1="23.2" x2="26.47" y2="23.2" width="0.254" layer="16"/>
<wire x1="20.44" y1="22.85" x2="20.79" y2="23.2" width="0.254" layer="16"/>
<wire x1="17.99" y1="22.85" x2="20.44" y2="22.85" width="0.254" layer="16"/>
<wire x1="17.29" y1="23.55" x2="17.99" y2="22.85" width="0.254" layer="16"/>
<wire x1="14.67" y1="23.55" x2="17.29" y2="23.55" width="0.254" layer="16"/>
<wire x1="14.6" y1="23.62" x2="14.67" y2="23.55" width="0.254" layer="16"/>
<wire x1="14.6" y1="20.89" x2="14.6" y2="23.62" width="0.254" layer="16"/>
<wire x1="15.21" y1="20.28" x2="14.6" y2="20.89" width="0.254" layer="16"/>
<wire x1="16.36" y1="20.28" x2="15.21" y2="20.28" width="0.254" layer="16"/>
<wire x1="16.78" y1="19.86" x2="16.36" y2="20.28" width="0.254" layer="16"/>
<wire x1="16.78" y1="18.9" x2="16.78" y2="19.86" width="0.254" layer="16"/>
<wire x1="16.81" y1="18.87" x2="16.78" y2="18.9" width="0.254" layer="16"/>
<wire x1="14.76" y1="18.87" x2="16.81" y2="18.87" width="0.254" layer="1"/>
<wire x1="14.7" y1="18.81" x2="14.76" y2="18.87" width="0.254" layer="1"/>
<via x="38.62" y="24.61" extent="1-16" drill="0.6" shape="square"/>
<via x="16.81" y="18.87" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="AN2">
<contactref element="IC1" pad="4"/>
<contactref element="R16" pad="1"/>
<contactref element="C13" pad="1"/>
<wire x1="22.4" y1="17.09" x2="22.4" y2="14.95" width="0.254" layer="1"/>
<wire x1="22.41" y1="17.1" x2="22.4" y2="17.09" width="0.254" layer="1"/>
<wire x1="25.05" y1="17.19" x2="24.96" y2="17.1" width="0.254" layer="16"/>
<wire x1="25.05" y1="17.19" x2="22.5" y2="17.19" width="0.254" layer="1"/>
<wire x1="22.5" y1="17.19" x2="22.41" y2="17.1" width="0.254" layer="1"/>
<wire x1="38.775" y1="27.045" x2="41.82" y2="27.045" width="0.254" layer="1"/>
<wire x1="37.77" y1="28.05" x2="38.775" y2="27.045" width="0.254" layer="1"/>
<wire x1="37.77" y1="31.23" x2="37.77" y2="28.05" width="0.254" layer="1"/>
<wire x1="37.1" y1="31.9" x2="37.77" y2="31.23" width="0.254" layer="1"/>
<wire x1="15.63" y1="31.9" x2="37.1" y2="31.9" width="0.254" layer="16"/>
<wire x1="13.67" y1="29.94" x2="15.63" y2="31.9" width="0.254" layer="16"/>
<wire x1="13.67" y1="17.88" x2="13.67" y2="29.94" width="0.254" layer="16"/>
<wire x1="14.25" y1="17.3" x2="13.67" y2="17.88" width="0.254" layer="16"/>
<wire x1="14.53" y1="17.3" x2="14.25" y2="17.3" width="0.254" layer="16"/>
<wire x1="14.89" y1="16.94" x2="14.53" y2="17.3" width="0.254" layer="16"/>
<wire x1="14.89" y1="16.94" x2="24.8" y2="16.94" width="0.254" layer="16"/>
<wire x1="24.8" y1="16.94" x2="25.05" y2="17.19" width="0.254" layer="16"/>
<via x="25.05" y="17.19" extent="1-16" drill="0.6" shape="square"/>
<via x="37.1" y="31.9" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="AN3">
<contactref element="IC1" pad="5"/>
</signal>
<signal name="AN4">
<contactref element="IC1" pad="7"/>
</signal>
<signal name="TEMP5">
<contactref element="J1" pad="11"/>
<contactref element="R8" pad="2"/>
<contactref element="R9" pad="2"/>
<wire x1="19.25" y1="27.42" x2="19.25" y2="28.3" width="0.254" layer="1"/>
<wire x1="19.25" y1="28.3" x2="20.21" y2="29.26" width="0.254" layer="1"/>
<wire x1="20.21" y1="29.26" x2="21.27" y2="29.26" width="0.254" layer="1"/>
<wire x1="21.27" y1="29.26" x2="21.31" y2="29.22" width="0.254" layer="1"/>
<wire x1="19.25" y1="30.38" x2="19.25" y2="27.42" width="0.254" layer="1"/>
<wire x1="15.78" y1="33.85" x2="19.25" y2="30.38" width="0.254" layer="1"/>
<wire x1="10.38" y1="33.85" x2="15.78" y2="33.85" width="0.254" layer="1"/>
<wire x1="8.67" y1="35.56" x2="10.38" y2="33.85" width="0.254" layer="1"/>
<wire x1="8.67" y1="36.34" x2="8.67" y2="35.56" width="0.254" layer="1"/>
<wire x1="8.2" y1="36.81" x2="8.67" y2="36.34" width="0.254" layer="1"/>
<wire x1="4.89" y1="36.81" x2="8.2" y2="36.81" width="0.254" layer="1"/>
<wire x1="4.88" y1="36.82" x2="4.89" y2="36.81" width="0.254" layer="1"/>
</signal>
<signal name="TEMP4">
<contactref element="J1" pad="9"/>
<contactref element="R1" pad="2"/>
<contactref element="R7" pad="2"/>
<wire x1="4.95" y1="29.89" x2="7.43" y2="31.13" width="0.254" layer="1"/>
<wire x1="7.43" y1="31.13" x2="7.43" y2="32.38" width="0.254" layer="1"/>
<wire x1="7.43" y1="32.38" x2="12.45" y2="32.38" width="0.254" layer="1"/>
<wire x1="4.88" y1="29.82" x2="4.95" y2="29.89" width="0.254" layer="1"/>
<wire x1="12.45" y1="32.38" x2="14.2" y2="32.38" width="0.254" layer="1"/>
</signal>
<signal name="TEMP3">
<contactref element="J1" pad="7"/>
<contactref element="R10" pad="2"/>
<contactref element="R12" pad="2"/>
<wire x1="8.4" y1="25.69" x2="12.48" y2="25.69" width="0.254" layer="1"/>
<wire x1="7.63" y1="24.92" x2="8.4" y2="25.69" width="0.254" layer="1"/>
<wire x1="7.63" y1="23.93" x2="7.63" y2="24.92" width="0.254" layer="1"/>
<wire x1="6.43" y1="22.73" x2="7.63" y2="23.93" width="0.254" layer="1"/>
<wire x1="4.97" y1="22.73" x2="6.43" y2="22.73" width="0.254" layer="1"/>
<wire x1="4.88" y1="22.82" x2="4.97" y2="22.73" width="0.254" layer="1"/>
<wire x1="12.49" y1="25.7" x2="14.51" y2="25.7" width="0.254" layer="1"/>
<wire x1="12.48" y1="25.69" x2="12.49" y2="25.7" width="0.254" layer="1"/>
</signal>
<signal name="TEMP2">
<contactref element="J1" pad="5"/>
<contactref element="R13" pad="2"/>
<contactref element="R14" pad="2"/>
<wire x1="10.93" y1="18.81" x2="12.8" y2="18.81" width="0.254" layer="1"/>
<wire x1="8.93" y1="18.81" x2="10.93" y2="18.81" width="0.254" layer="1"/>
<wire x1="7.19" y1="17.07" x2="8.93" y2="18.81" width="0.254" layer="1"/>
<wire x1="7.19" y1="16.28" x2="7.19" y2="17.07" width="0.254" layer="1"/>
<wire x1="6.67" y1="15.76" x2="7.19" y2="16.28" width="0.254" layer="1"/>
<wire x1="4.94" y1="15.76" x2="6.67" y2="15.76" width="0.254" layer="1"/>
<wire x1="4.88" y1="15.82" x2="4.94" y2="15.76" width="0.254" layer="1"/>
</signal>
<signal name="TEMP1">
<contactref element="J1" pad="3"/>
<contactref element="R15" pad="2"/>
<contactref element="R16" pad="2"/>
<wire x1="20.77" y1="19" x2="22.41" y2="19" width="0.254" layer="1"/>
<wire x1="18.61" y1="16.84" x2="20.77" y2="19" width="0.254" layer="1"/>
<wire x1="17.4" y1="16.84" x2="18.61" y2="16.84" width="0.254" layer="1"/>
<wire x1="16.27" y1="15.71" x2="17.4" y2="16.84" width="0.254" layer="1"/>
<wire x1="16.13" y1="15.71" x2="16.27" y2="15.71" width="0.254" layer="1"/>
<wire x1="13.73" y1="13.31" x2="16.13" y2="15.71" width="0.254" layer="1"/>
<wire x1="8.74" y1="13.31" x2="13.73" y2="13.31" width="0.254" layer="1"/>
<wire x1="7.86" y1="12.43" x2="8.74" y2="13.31" width="0.254" layer="1"/>
<wire x1="7.86" y1="9.43" x2="7.86" y2="12.43" width="0.254" layer="1"/>
<wire x1="7.26" y1="8.83" x2="7.86" y2="9.43" width="0.254" layer="1"/>
<wire x1="4.89" y1="8.83" x2="7.26" y2="8.83" width="0.254" layer="1"/>
<wire x1="4.88" y1="8.82" x2="4.89" y2="8.83" width="0.254" layer="1"/>
</signal>
<signal name="N$8">
<contactref element="THERMISTOR" pad="1"/>
<contactref element="R5" pad="2"/>
<contactref element="R6" pad="2"/>
<wire x1="11.8" y1="38.7" x2="13.86" y2="38.7" width="0.254" layer="1"/>
<wire x1="11.75" y1="38.65" x2="11.8" y2="38.7" width="0.254" layer="1"/>
<wire x1="24.6" y1="37.27" x2="24.6" y2="30.62" width="0.254" layer="1"/>
<wire x1="23.16" y1="38.71" x2="24.6" y2="37.27" width="0.254" layer="1"/>
<wire x1="13.87" y1="38.71" x2="23.16" y2="38.71" width="0.254" layer="1"/>
<wire x1="13.86" y1="38.7" x2="13.87" y2="38.71" width="0.254" layer="1"/>
</signal>
<signal name="N$9">
<contactref element="C14" pad="2"/>
<contactref element="IC1" pad="6"/>
<wire x1="53.26" y1="30.62" x2="54.96" y2="30.62" width="0.254" layer="1"/>
<wire x1="53.18" y1="30.54" x2="53.26" y2="30.62" width="0.254" layer="1"/>
<wire x1="50.47" y1="30.54" x2="53.18" y2="30.54" width="0.254" layer="16"/>
<wire x1="49.55" y1="29.62" x2="50.47" y2="30.54" width="0.254" layer="16"/>
<wire x1="43.53" y1="29.62" x2="49.55" y2="29.62" width="0.254" layer="16"/>
<wire x1="43.47" y1="29.68" x2="43.53" y2="29.62" width="0.254" layer="16"/>
<wire x1="41.915" y1="29.68" x2="43.47" y2="29.68" width="0.254" layer="1"/>
<wire x1="41.82" y1="29.585" x2="41.915" y2="29.68" width="0.254" layer="1"/>
<via x="53.18" y="30.54" extent="1-16" drill="0.6" shape="square"/>
<via x="43.47" y="29.68" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="CANH">
<contactref element="R17" pad="1"/>
<contactref element="J4" pad="2"/>
<contactref element="IC3" pad="7"/>
<contactref element="D2" pad="1"/>
<contactref element="J2" pad="4"/>
<wire x1="45.945" y1="14.33" x2="45.92" y2="14.305" width="0.3048" layer="1"/>
<wire x1="45.945" y1="12.945" x2="45.945" y2="14.33" width="0.254" layer="1"/>
<wire x1="45.945" y1="12.945" x2="46.61" y2="12.28" width="0.254" layer="1"/>
<wire x1="46.61" y1="12.28" x2="48.43" y2="10.3" width="0.254" layer="1"/>
<wire x1="60.66" y1="15.13" x2="60.12" y2="15.13" width="0.254" layer="1"/>
<wire x1="61.41" y1="14.38" x2="60.66" y2="15.13" width="0.254" layer="1"/>
<wire x1="61.41" y1="12.7" x2="61.41" y2="14.38" width="0.254" layer="1"/>
<wire x1="61.41" y1="12.7" x2="62.05" y2="12.66" width="0.254" layer="1"/>
<wire x1="62.05" y1="12.66" x2="63.78" y2="11.47" width="0.254" layer="1"/>
<wire x1="63.78" y1="11.47" x2="64.08" y2="10.43" width="0.254" layer="1"/>
<wire x1="58.8" y1="20.39" x2="55.47" y2="20.39" width="0.254" layer="1"/>
<wire x1="59.53" y1="19.66" x2="58.8" y2="20.39" width="0.254" layer="1"/>
<wire x1="59.53" y1="15.72" x2="59.53" y2="19.66" width="0.254" layer="1"/>
<wire x1="60.12" y1="15.13" x2="59.53" y2="15.72" width="0.254" layer="1"/>
<wire x1="41.71" y1="11.19" x2="43.34" y2="11.2" width="0.254" layer="1"/>
<wire x1="43.34" y1="11.2" x2="45.13" y2="11.23" width="0.254" layer="1"/>
<wire x1="45.13" y1="11.23" x2="45.93" y2="12.93" width="0.254" layer="1"/>
<wire x1="45.93" y1="12.93" x2="45.945" y2="12.945" width="0.254" layer="1"/>
<wire x1="41.71" y1="8.95" x2="41.71" y2="11.19" width="0.254" layer="1"/>
<wire x1="41.62" y1="8.86" x2="41.71" y2="8.95" width="0.254" layer="1"/>
<wire x1="48.43" y1="10.3" x2="58.1" y2="10.3" width="0.254" layer="1"/>
<wire x1="58.1" y1="10.3" x2="60.46" y2="12.66" width="0.254" layer="1"/>
<wire x1="60.46" y1="12.66" x2="61.37" y2="12.66" width="0.254" layer="1"/>
<wire x1="61.37" y1="12.66" x2="61.41" y2="12.7" width="0.254" layer="1"/>
</signal>
<signal name="N$11">
<contactref element="R17" pad="2"/>
<contactref element="PAD1" pad="1"/>
<wire x1="39.37" y1="8.89" x2="40.64" y2="10.16" width="0.1778" layer="1"/>
<wire x1="40.64" y1="10.16" x2="42.98" y2="12.6" width="0.1778" layer="16"/>
<wire x1="42.98" y1="12.6" x2="48.26" y2="12.7" width="0.1778" layer="16"/>
<wire x1="48.26" y1="12.7" x2="49.53" y2="13.97" width="0.1778" layer="16"/>
<wire x1="39.72" y1="8.86" x2="39.37" y2="8.89" width="0.1778" layer="1"/>
<wire x1="49.53" y1="13.97" x2="49.76" y2="14.09" width="0.1778" layer="16"/>
<via x="40.64" y="10.16" extent="1-16" drill="0.3556"/>
</signal>
</signals>
</board>
</drawing>
</eagle>

license: MIT

license_type: permissive

branch_name: refs/heads/master

extension: brd


text:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

[ExecuteInEditMode]
public class LevelLayout : MonoBehaviour
{
    public LevelRoom[] rooms = new LevelRoom[0];

    //Each piece when they are destroyed try to update the pieces array, problem is if the system is destroyed, that
    //spawned an assert. So we use that bool to know if the system is getting destroyed.
    public bool Destroyed { get; private set; }

    void OnDestroy()
    {
        Destroyed = true;
    }

//This is a small hack to go around the fact that hideFlag change on prefab instance (like the room) does not get saved
//in the scene. So we make sure (only in editor) to hide all the room manually every frame
#if UNITY_EDITOR
    void Update()
    {
        if(Application.isPlaying)
            return;

        foreach (var room in rooms)
        {
            room.gameObject.hideFlags = HideFlags.HideInHierarchy;
        }
    }
#endif
}

#if UNITY_EDITOR
[CustomEditor(typeof(LevelLayout))]
public class LevelLayoutEditor : Editor
{
    LevelLayout m_LevelLayout;

    bool m_EditingLayout = false;
    Material m_HighlightMaterial;
    int m_EditingMode = 0;

    List<LevelRoomGroup> m_AvailablesPalettes = new List<LevelRoomGroup>();

    LevelRoomGroup m_CurrentGroup = null;

    Vector2 m_PaletteSelectionScroll;
    Vector2 m_ObjectSelectScroll;

    LevelRoom m_SelectedRoom = null;
    LevelRoom m_CurrentInstance = null;
    GameObject m_SelectedPrefab;
    int m_CurrentUsedExit = 0;

    Vector3 m_CurrentScale = Vector3.one;

    SerializedProperty m_PieceProperty;

    void OnEnable()
    {
        m_LevelLayout = target as LevelLayout;

        var assets = AssetDatabase.FindAssets("t:LevelRoomGroup");
        foreach (var a in assets)
        {
            string path = AssetDatabase.GUIDToAssetPath(a);
            LevelRoomGroup palette = AssetDatabase.LoadAssetAtPath<LevelRoomGroup>(path);

            m_AvailablesPalettes.Add(palette);
        }

        m_PieceProperty = serializedObject.FindProperty("rooms");

        m_HighlightMaterial = new Material(Shader.Find("Hidden/Internal-Colored"));

        m_HighlightMaterial.color = new Color32(255,238,0, 255);
        m_HighlightMaterial.SetInt("ZTest", (int)UnityEngine.Rendering.CompareFunction.Always);

        EditorApplication.playModeStateChanged += PlayModeChange;
    }

    void OnDisable()
    {
        Clean();
        EditorApplication.playModeStateChanged -= PlayModeChange;
    }

    void Clean()
    {
        if (m_CurrentInstance != null)
        {
            DestroyImmediate(m_CurrentInstance.gameObject);
            m_CurrentInstance = null;
        }
    }

    public override void OnInspectorGUI()
    {
        bool editing = GUILayout.Toggle(m_EditingLayout, "Editing Layout", "Button");

        if (editing != m_EditingLayout)
        {
            if (!editing)
            {//disabled editing, cleanup
                if(m_CurrentInstance != null)
                    DestroyImmediate(m_CurrentInstance.gameObject);
                m_CurrentGroup = null;
                m_CurrentInstance = null;
                m_SelectedRoom = null;
            }
            else
            {
                if (!SceneView.lastActiveSceneView.drawGizmos)
                {
                    if (EditorUtility.DisplayDialog("Warning", "Gizmos are globally disabled, which prevents the layout editing tools from working. Do you want to re-enable Gizmos?", "Yes", "No"))
                    {
                        SceneView.lastActiveSceneView.drawGizmos = true;
                    }
                    else
                    {
                        editing = false;
                    }
                }
            }

            m_EditingLayout = editing;
        }

        if (m_EditingLayout)
        {
            EditorGUILayout.HelpBox("Press R to change which door the room use to connect to other room", MessageType.Info);

            EditorGUILayout.BeginHorizontal();

            int editingMode = GUILayout.Toolbar(m_EditingMode, new[] { "Add", "Remove" }, GUILayout.Width(120));
            if (editingMode != m_EditingMode)
            {
                if (editingMode == 1)
                {
                    if(m_CurrentInstance != null)
                        DestroyImmediate(m_CurrentInstance.gameObject);

                    m_SelectedRoom = null;
                }

                m_EditingMode = editingMode;
            }

            if (m_CurrentInstance != null)
            {
                EditorGUILayout.LabelField("Flip : ", GUILayout.Width(32));
                EditorGUI.BeginChangeCheck();

                bool flipX = GUILayout.Toggle(m_CurrentScale.x < 0, "X", "button", GUILayout.Width(32));
                bool flipY = GUILayout.Toggle(m_CurrentScale.y < 0, "Y", "button", GUILayout.Width(32));
                bool flipZ = GUILayout.Toggle(m_CurrentScale.z < 0, "Z", "button", GUILayout.Width(32));

                GUILayout.FlexibleSpace();

                if (EditorGUI.EndChangeCheck())
                {
                    m_CurrentScale = new Vector3(flipX ? -1 : 1, flipY ? -1 : 1, flipZ ? -1 : 1);
                    m_CurrentInstance.transform.localScale = m_CurrentScale;
                }
            }

            EditorGUILayout.EndHorizontal();

            //we repaint all scene view to be sure they get a notification so they can "steal" focus in edit mode
            SceneView.RepaintAll();
        }

        GUILayout.BeginHorizontal();

        GUILayout.BeginVertical();
        GUILayout.Label("Group");
        GUILayout.BeginScrollView(m_PaletteSelectionScroll);

        foreach (var p in m_AvailablesPalettes)
        {
            GUI.enabled = m_CurrentGroup != p;
            if (GUILayout.Button(p.name))
            {
                Debug.Log($"clicked on {p.name}");
                if (!m_EditingLayout)
                {
                    if (!SceneView.lastActiveSceneView.drawGizmos)
                    {
                        if (EditorUtility.DisplayDialog("Warning", "Gizmos are globally disabled, which prevent the layout editing tool to work. Do you want to re-enable Gizmos?", "Yes", "No"))
                        {
                            SceneView.lastActiveSceneView.drawGizmos = true;
                            m_EditingLayout = true;
                        }
                    }
                    else
                        m_EditingLayout = true;
                }

                if(m_EditingLayout)
                    m_CurrentGroup = p;
            }
        }

        GUI.enabled = true;

        GUILayout.EndScrollView();
        GUILayout.EndVertical();

        m_PaletteSelectionScroll = GUILayout.BeginScrollView(m_PaletteSelectionScroll, GUILayout.Width(72*3));
        GUILayout.BeginVertical();

        if (m_CurrentGroup != null)
        {
            bool horizontalOpen = false;

            for (int i = 0; i < m_CurrentGroup.levelPart.Length; ++i)
            {
                LevelRoom part = m_CurrentGroup.levelPart[i];

                if (i % 3 == 0 && i != 0)
                {
                    GUILayout.EndHorizontal();
                    horizontalOpen = false;
                }

                if (!horizontalOpen)
                {
                    GUILayout.BeginHorizontal();
                    horizontalOpen = true;
                }

                Texture2D preview = AssetPreview.GetAssetPreview(part.gameObject);

                GUI.enabled = part != m_SelectedRoom;
                if (GUILayout.Button(preview, GUILayout.Width(64), GUILayout.Height(64)))
                {
                    m_SelectedRoom = part;

                    if(m_CurrentInstance != null)
                        DestroyImmediate(m_CurrentInstance.gameObject);

                    m_CurrentInstance = Instantiate(m_SelectedRoom, m_LevelLayout.transform);
                    m_CurrentInstance.gameObject.isStatic = false;
                    m_CurrentInstance.gameObject.tag = "EditorOnly";
                    m_CurrentInstance.name = "TempInstance";
                    m_CurrentUsedExit = 0;

                    m_CurrentInstance.transform.localScale = m_CurrentScale;

                    m_EditingMode = 0;
                }
            }

            if(horizontalOpen)
                GUILayout.EndHorizontal();
        }

        GUI.enabled = true;
        GUILayout.EndVertical();
        GUILayout.EndScrollView();

        GUILayout.EndHorizontal();
    }

       void OnSceneGUI()
    {
        if (m_EditingLayout)
        {
            if (m_EditingMode == 0)
            {
                AddPiece();
            }
            else
            {
                RemovePiece();
            }
        }
    }

     void RemovePiece()
    {
        int controlID = GUIUtility.GetControlID(FocusType.Keyboard);

        if(GUIUtility.hotControl == 0)
            HandleUtility.AddDefaultControl(controlID);

        if (m_CurrentInstance != null)
        {
            m_CurrentInstance.gameObject.SetActive(false);
        }

        var mousePos = Event.current.mousePosition;
        LevelRoom closestPiece = null;
        Bounds closestBound = new Bounds();

        float closestSqrDist = float.MaxValue;
        for (int i = 0; i < m_LevelLayout.rooms.Length; ++i)
        {
            LevelRoom r = m_LevelLayout.rooms[i];

            if(r == null)
                continue;

            //This bit is inneficient, but should be enough for our purpose here in the kit. In very big scene
            //it could slow down the editing process. Bound should probably be stored in local space or better should
            //find a way to use the built-in picking but that require more complexity than necessary for those small kit
            Bounds b = new Bounds();
            bool init = false;

            MeshRenderer[] renderers = r.GetComponentsInChildren<MeshRenderer>();

            if (renderers.Length > 0)
            {
                for (int k = 0; k < renderers.Length; ++k)
                {
                    if (!init)
                    {
                        b = renderers[k].bounds;
                        init = true;
                    }
                    else
                    {
                        b.Encapsulate(renderers[k].bounds);
                    }
                }
            }
            else
            {
                //if the piece got no collider, it may be an "empty" piece used to introduce gap, so instead look for
                //a collider to find it's size.
                Collider[] colliders = r.GetComponentsInChildren<Collider>();
                for (int k = 0; k < colliders.Length; ++k)
                {
                    if (k == 0)
                    {
                        b = colliders[k].bounds;
                    }
                    else
                    {
                        b.Encapsulate(colliders[k].bounds);
                    }
                }
            }

            var guiPts = HandleUtility.WorldToGUIPoint(b.center);

            Handles.DrawWireDisc(b.center, Vector3.up, 0.5f);

            float dist = (guiPts - mousePos).sqrMagnitude;

            if (dist < closestSqrDist)
            {
                closestSqrDist = dist;
                closestPiece = r;
                closestBound = b;
            }
        }

        if (closestPiece != null)
        {
            if (Event.current.type == EventType.Repaint)
            {
                MeshFilter[] filter = closestPiece.GetComponentsInChildren<MeshFilter>();

                if (filter != null)
                {
                    m_HighlightMaterial.SetPass(0);
                    foreach (var f in filter)
                    {
                        if (f.sharedMesh == null)
                            continue;

                        Graphics.DrawMeshNow(f.sharedMesh, f.transform.localToWorldMatrix);
                    }
                }

                Handles.DrawWireCube(closestBound.center, closestBound.size);
            }
            else if (Event.current.type == EventType.MouseUp && Event.current.button == 0 && GUIUtility.hotControl == 0)
            {
                closestPiece.Removed();
                Undo.DestroyObjectImmediate(closestPiece.gameObject);
            }
            else
            {
                SceneView.currentDrawingSceneView.Repaint();
            }
        }
    }

    void AddPiece()
    {
        if(m_CurrentInstance == null)
            return;

        m_CurrentInstance.gameObject.SetActive(true);

        //Since the scene view is not having focus after we choose a new room, pressing R won't rotate it until
        //we click on the scene view. So we force focus on windows. But we only do it if the cursor is above the
        //scene view otherwise we mess focus on OSX with the scene view always stealing focus from other app
        if(SceneView.currentDrawingSceneView.position.Contains(GUIUtility.GUIToScreenPoint(Event.current.mousePosition)))
            SceneView.currentDrawingSceneView.Focus();

        int controlID = GUIUtility.GetControlID(FocusType.Keyboard);

        if(GUIUtility.hotControl == 0)
            HandleUtility.AddDefaultControl(controlID);

        if (Event.current.GetTypeForControl(controlID) == EventType.KeyDown)
        {
            if (Event.current.keyCode == KeyCode.R)
            {
                m_CurrentUsedExit = m_CurrentUsedExit + 1 >= m_CurrentInstance.Exits.Length ? 0 : m_CurrentUsedExit + 1;
            }
        }

        LevelRoom currentClosestPiece = null;
        int currentClosestExit = -1;

        if (m_LevelLayout.rooms.Length == 0)
        {//if we have no piece, we force the instance in 0,0,0, as it's the seed piece
            m_CurrentInstance.transform.position = m_LevelLayout.transform.TransformPoint(Vector3.zero);
        }
        else
        {
            var mousePos = Event.current.mousePosition;

            float closestSqrDist = float.MaxValue;
            for (int i = 0; i < m_LevelLayout.rooms.Length; ++i)
            {
                LevelRoom r = m_LevelLayout.rooms[i];

                if(r == null)
                    continue;

                for (int k = 0; k < r.Exits.Length; ++k)
                {
                    if (r.ExitDestination[k] != null)
                        continue;

                    var guiPts = HandleUtility.WorldToGUIPoint(r.Exits[k].transform.position);

                    float dist = (guiPts - mousePos).sqrMagnitude;

                    if (dist < closestSqrDist)
                    {
                        closestSqrDist = dist;
                        currentClosestPiece = r;
                        currentClosestExit = k;
                    }
                }
            }

            if (currentClosestPiece != null)
            {
                m_CurrentInstance.transform.rotation = Quaternion.identity;

                Transform closest = currentClosestPiece.Exits[currentClosestExit];
                Transform usedExit = m_CurrentInstance.Exits[m_CurrentUsedExit];

                Quaternion targetRotation = Quaternion.LookRotation(-closest.forward, closest.up);
                Quaternion difference = targetRotation * Quaternion.Inverse(usedExit.rotation);

                Quaternion rotation = m_CurrentInstance.transform.rotation * difference;
                m_CurrentInstance.transform.rotation = rotation;

                m_CurrentInstance.transform.position = closest.position + m_CurrentInstance.transform.TransformVector(-usedExit.transform.localPosition);
            }
        }

        //if hot control is not 0, that mean we clicked a gizmo and we don't want that.
        if (Event.current.type == EventType.MouseUp && Event.current.button == 0 && GUIUtility.hotControl == 0)
        {
            var c = PrefabUtility.InstantiatePrefab(m_SelectedRoom) as LevelRoom;

            int i = Undo.GetCurrentGroup();
            Undo.SetCurrentGroupName("Added new piece");

            Undo.RegisterCreatedObjectUndo(c.gameObject, "Added new piece");

            c.gameObject.hideFlags = HideFlags.HideInHierarchy;
            c.transform.SetParent(m_LevelLayout.transform, false);

            c.transform.position = m_CurrentInstance.transform.position;
            c.transform.rotation = m_CurrentInstance.transform.rotation;
            c.transform.localScale = m_CurrentInstance.transform.localScale;

            c.name = m_SelectedRoom.gameObject.name;
            c.gameObject.isStatic = true;

            c.Placed(m_LevelLayout);

            m_PieceProperty.serializedObject.Update();

            m_PieceProperty.InsertArrayElementAtIndex(m_PieceProperty.arraySize);
            m_PieceProperty.GetArrayElementAtIndex(m_PieceProperty.arraySize - 1).objectReferenceValue = c;

            if (currentClosestPiece != null)
            {
                Snap(currentClosestPiece, c, currentClosestExit, m_CurrentUsedExit);

                //go through all remaining exit and will find if it is close to another to link it
                for (int k = 0; k < c.Exits.Length; ++k)
                {
                    if (k == m_CurrentUsedExit)
                        continue;

                    bool exitLinked = false;
                    Transform testedExit = c.Exits[k];

                    for (int r = 0; r < m_LevelLayout.rooms.Length && !exitLinked; ++r)
                    {
                        for (int re = 0; re < m_LevelLayout.rooms[r].Exits.Length; ++re)
                        {
                            //this is an already used exit no need to test here
                            if(m_LevelLayout.rooms[r].ExitDestination[re] != null)
                                continue;

                            //if we are close enough, let's consider those 2 exit Linked.
                            if (Vector3.SqrMagnitude(m_LevelLayout.rooms[r].Exits[re].position - testedExit.position) < 0.2f * 0.2f)
                            {
                                Snap(m_LevelLayout.rooms[r], c, re, k);
                                exitLinked = true;
                                break;
                            }
                        }
                    }
                }
            }

            Undo.CollapseUndoOperations(i);

            m_PieceProperty.serializedObject.ApplyModifiedProperties();
        }
    }

    static void Snap(LevelRoom A, LevelRoom B, int exitA, int exitB)
    {
        SerializedObject newObj = new SerializedObject(A);
        SerializedObject currentObj = new SerializedObject(B);

        var propNew = newObj.FindProperty("ExitDestination");
        var propCurrent = currentObj.FindProperty("ExitDestination");

        newObj.Update();
        currentObj.Update();

        propCurrent.GetArrayElementAtIndex(exitB).objectReferenceValue = A;
        propNew.GetArrayElementAtIndex(exitA).objectReferenceValue = B;

        var exitAObj = new SerializedObject(A.Exits[exitA].gameObject);
        var exitAActiveProp = exitAObj.FindProperty("m_IsActive");

        exitAActiveProp.boolValue = false;

        var exitBObj = new SerializedObject(B.Exits[exitB].gameObject);
        var exitBActiveProp = exitBObj.FindProperty("m_IsActive");

        exitBActiveProp.boolValue = false;

        exitAObj.ApplyModifiedProperties();
        exitBObj.ApplyModifiedProperties();
        newObj.ApplyModifiedProperties();
        currentObj.ApplyModifiedProperties();
    }

    void PlayModeChange(PlayModeStateChange mode)
    {
        Clean();
    }
}
#endif

path: /Assets/Creator Kit - FPS/Scripts/LevelLayout/LevelLayout.cs

branch_name: refs/heads/main

gha_license_id: MIT

gha_language: C#

extension: cs


text:
require binutils.inc
PR = "${INC_PR}.0"
LICENSE = "GPLv3"

SRC_URI = "${GNU_MIRROR}/binutils/binutils-${PV}.tar.bz2 \
     file://binutils-uclibc-100-uclibc-conf.patch \
     file://110-arm-eabi-conf.patch \
     file://binutils-uclibc-300-001_ld_makefile_patch.patch \
     file://binutils-uclibc-300-006_better_file_error.patch \
     file://binutils-uclibc-300-012_check_ldrunpath_length.patch \
     file://binutils-uclibc-gas-needs-libm.patch \
     file://fix-clone-conflicts.patch \
     "
SRC_URI[md5sum] = "c84c5acc9d266f1a7044b51c85a823f5"
SRC_URI[sha256sum] = "60abec5bf448eb930a5a15acb8712612377dc8bcfb13dfd5131228f70561d0c7"

repository: Martix/Eonos

repo_name: Martix/Eonos

extension: bb


text:
SUMMARY = "Package a systemd tn-container.service for docker containers in the partition image (i.e. mounted to /var/lib/docker)"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI = "file://tn-container.service"

TN_DOCKER_REPOSITORY_aarch64 ?= "technexion/debian-buster-wayland-hw"
TN_DOCKER_TAG ?= "latest"
TN_DOCKER_APPLICATION ?= "glmark2-es2-wayland"

# setup dependency to docker_disk's do_deploy task
do_install[depends] = "docker-disk:do_deploy"
do_compile[noexec] = "1"

do_install () {
	# add the service to systemd
	install -d ${D}${systemd_unitdir}/system/
	install -d ${D}${sysconfdir}/systemd/system/multi-user.target.wants/
	install -m 0644 ${WORKDIR}/tn-container.service ${D}${systemd_unitdir}/system/
	sed -e "s|\@TN_DOCKER_REPOSITORY\@|${TN_DOCKER_REPOSITORY}|g" -i ${D}${systemd_unitdir}/system/tn-container.service
	sed -e "s|\@TN_DOCKER_TAG\@|${TN_DOCKER_TAG}|g" -i ${D}${systemd_unitdir}/system/tn-container.service
	sed -e "s|\@TN_DOCKER_APPLICATION\@|${TN_DOCKER_APPLICATION}|g" -i ${D}${systemd_unitdir}/system/tn-container.service
	# enable the service
	ln -sf ${systemd_unitdir}/system/tn-container.service ${D}${sysconfdir}/systemd/system/multi-user.target.wants/tn-container.service
}

FILES_${PN} += "/lib/systemd/system/"

RDEPENDS_${PN} += "systemd-container"

repository: sshyran/meta-tn-imx-bsp-TechNexion

repo_name: sshyran/meta-tn-imx-bsp-TechNexion


text:
import { SavedOrder } from '@morpheusnephew/td-ameritrade-models';
import Axios, { AxiosResponse } from 'axios';
import TdAmeritradeClient from '.';
import {
  getAccountSavedOrdersUrl,
  getSavedOrderUrl,
  numberOrString,
} from '../urls';

export default class SavedOrdersClient {
  private _client: TdAmeritradeClient;

  constructor(client: TdAmeritradeClient) {
    this._client = client;
  }

  createSavedOrder = (accountId: numberOrString, savedOrder: SavedOrder) => {
    const url = getAccountSavedOrdersUrl(accountId);

    return this._client._makeRequest((authConfig) =>
      Axios.post(url, savedOrder, authConfig)
    );
  };

  deleteSavedOrder = (
    accountId: numberOrString,
    savedOrderId: numberOrString
  ) => {
    const url = getSavedOrderUrl(accountId, savedOrderId);

    return this._client._makeRequest((authConfig) =>
      Axios.delete(url, authConfig)
    );
  };

  getSavedOrder = (
    accountId: numberOrString,
    savedOrderId: numberOrString
  ): Promise<AxiosResponse<SavedOrder>> => {
    const url = getSavedOrderUrl(accountId, savedOrderId);

    return this._client._makeRequest((authConfig) =>
      Axios.get(url, authConfig)
    );
  };

  getSavedOrdersByPath = (
    accountId: numberOrString
  ): Promise<AxiosResponse<SavedOrder[]>> => {
    const url = getAccountSavedOrdersUrl(accountId);

    return this._client._makeRequest((authConfig) =>
      Axios.get(url, authConfig)
    );
  };

  replaceSavedOrder = (
    accountId: numberOrString,
    savedOrderId: numberOrString,
    savedOrder: SavedOrder
  ) => {
    const url = getSavedOrderUrl(accountId, savedOrderId);

    return this._client._makeRequest((authConfig) =>
      Axios.put(url, savedOrder, authConfig)
    );
  };
}

repository: brianpilati/td-ameritrade

repo_name: brianpilati/td-ameritrade

gha_language: TypeScript

extension: ts


text:
require recipes-bsp/u-boot/u-boot.inc

# To build u-boot for your machine, provide the following lines in your machine
# config, replacing the assignments as appropriate for your machine.
# UBOOT_MACHINE = "omap3_beagle_config"
# UBOOT_ENTRYPOINT = "0x80008000"
# UBOOT_LOADADDRESS = "0x80008000"

LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=1707d6db1d42237583f50183a5651ecb \
                    file://README;beginline=1;endline=22;md5=78b195c11cb6ef63e6985140db7d7bab"

# We use the revision in order to avoid having to fetch it from the repo during parse
SRCREV = "44f1262bdf39ad93032d39f17a298165372be82e"

PV = "v2013.07+git${SRCPV}"

UBRANCH = "v2013.07-aspeed-openbmc"
SRC_URI = "git://git@github.com/openbmc/u-boot.git;branch=${UBRANCH};protocol=https"

S = "${WORKDIR}/git"

PACKAGE_ARCH = "${MACHINE_ARCH}"

gha_language: Python


text:
namespace Renci.SshNet.Sftp.Responses
{
    internal sealed class SftpExtendedReplyResponse : SftpResponse
    {
        public override SftpMessageTypes SftpMessageType
        {
            get { return SftpMessageTypes.ExtendedReply; }
        }

        public SftpExtendedReplyResponse(uint protocolVersion)
            : base(protocolVersion)
        {
        }

        public T GetReply<T>() where T : ExtendedReplyInfo, new()
        {
            var result = new T();
            result.LoadData(DataStream);
            return result;
        }
    }
}

branch_name: refs/heads/develop


text:
/*
Copyright 2019 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package main

import (
	"flag"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/rest"
	"os"

	"github.com/kubernetes-csi/csi-driver-image-populator/pkg/image"
	"k8s.io/client-go/tools/clientcmd"
)

func init() {
	flag.Set("logtostderr", "true")
}

var (
	endpoint   = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
	driverName = flag.String("drivername", "image.csi.k8s.io", "name of the driver")
	nodeID     = flag.String("nodeid", "", "node id")
	masterURL  = flag.String("masterURL", "", "master url")
	kubeconfig = flag.String("kubeconfig", "", "kubeconfig path")
)

func main() {
	flag.Parse()

	handle()
	os.Exit(0)
}

func handle() {
	config, err := clientcmd.BuildConfigFromFlags(*masterURL, *kubeconfig)
	if err != nil {
		panic(err.Error())
	}
	kubeClient, err := kubernetes.NewForConfig(rest.AddUserAgent(config, "mpi-operator"))
	if err != nil {
		panic(err.Error())
	}
	driver := image.NewDriver(*driverName, *nodeID, *endpoint, kubeClient)
	driver.Run()
}

repository: everpeace/csi-driver-image-populator

repo_name: everpeace/csi-driver-image-populator

extension: go


text:
import { promises as fs } from 'fs'
import { resolveModule, isPackageExists } from 'local-pkg'
import type { IconifyJSON } from '@iconify/types'

const _collections: Record<string, Promise<IconifyJSON | undefined>> = {}

const isLegacyExists = isPackageExists('@iconify/json')

export async function loadCollectionFromFS(name: string) {
  if (!_collections[name])
    _collections[name] = task()
  return _collections[name]

  async function task() {
    let jsonPath = resolveModule(`@iconify-json/${name}/icons.json`)
    if (!jsonPath && isLegacyExists)
      jsonPath = resolveModule(`@iconify/json/json/${name}.json`)

    if (jsonPath) {
      const icons = JSON.parse(await fs.readFile(jsonPath, 'utf8'))
      return icons
    }
    else {
      return undefined
    }
  }
}

repository: arslangzr/unocss

repo_name: arslangzr/unocss


text:
/// @copyright
/// Copyright (C) 2019 Assured Information Security, Inc.
///
/// @copyright
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// @copyright
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// @copyright
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
/// SOFTWARE.

#ifndef BSL_LOCATED_ARG_HPP
#define BSL_LOCATED_ARG_HPP

#include "bsl/enable_if.hpp"
#include "bsl/is_same.hpp"
#include "bsl/source_location.hpp"    // IWYU pragma: export

namespace bsl
{
    /// @class located_arg
    ///
    /// <!-- description -->
    ///   @brief Implicitly captures a reference to any argument it is
    ///     provided along with the location of that argument. All credit
    ///     goes to the following for this mad yet brilliant idea:
    ///     https://www.reddit.com/r/cpp/comments/pbzol3/source_location_with_operator_overloads/
    ///
    /// <!-- template parameters -->
    ///   @tparam T the type of argument to capture
    ///
    template<typename T>
    class located_arg final
    {
        /// @brief stores a reference to the implicit argument being captured
        T const &m_val;
        /// @brief stores the location of the implicit argument being captured
        source_location m_sloc;

    public:
        /// <!-- description -->
        ///   @brief Default value constructor
        ///
        /// <!-- inputs/outputs -->
        ///   @tparam U Used to ensure the provided integer is the same as
        ///     T, effectively preventing implicit conversions from being
        ///     allowed.
        ///   @param val the value being captured.
        ///   @param loc the location of the call site
        ///
        template<typename U, enable_if_t<is_same<T, U>::value, bool> = true>
        // NOLINTNEXTLINE(hicpp-explicit-conversions)
        constexpr located_arg(U const &val, source_location const &loc = here()) noexcept    // --
            : m_val{val}, m_sloc{loc}
        {}

        /// <!-- description -->
        ///   @brief Destroyes a previously created bsl::located_arg
        ///
        constexpr ~located_arg() noexcept = default;

        /// <!-- description -->
        ///   @brief copy constructor
        ///
        /// <!-- inputs/outputs -->
        ///   @param o the object being copied
        ///
        constexpr located_arg(located_arg const &o) noexcept = default;

        /// <!-- description -->
        ///   @brief move constructor
        ///
        /// <!-- inputs/outputs -->
        ///   @param mut_o the object being moved
        ///
        constexpr located_arg(located_arg &&mut_o) noexcept = default;

        /// <!-- description -->
        ///   @brief copy assignment
        ///
        /// <!-- inputs/outputs -->
        ///   @param o the object being copied
        ///   @return a reference to *this
        ///
        [[maybe_unused]] constexpr auto operator=(located_arg const &o) &noexcept
            -> located_arg & = default;

        /// <!-- description -->
        ///   @brief move assignment
        ///
        /// <!-- inputs/outputs -->
        ///   @param mut_o the object being moved
        ///   @return a reference to *this
        ///
        [[maybe_unused]] constexpr auto operator=(located_arg &&mut_o) &noexcept
            -> located_arg & = default;

        /// <!-- description -->
        ///   @brief Returns a reference to the captured argument.
        ///
        /// <!-- inputs/outputs -->
        ///   @return Returns a reference to the captured argument.
        ///
        [[nodiscard]] constexpr auto
        get() const noexcept -> T const &
        {
            return m_val;
        }

        /// <!-- description -->
        ///   @brief Returns the location of the captured argument.
        ///
        /// <!-- inputs/outputs -->
        ///   @return Returns the location of the captured argument.
        ///
        [[nodiscard]] constexpr auto
        sloc() const noexcept -> source_location const &
        {
            return m_sloc;
        }
    };
}

#endif

repository: Bareflank/bsl

repo_name: Bareflank/bsl

gha_license_id: NOASSERTION

extension: hpp


text:
#
# Base recipe: meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb
# Base branch: daisy
#

require xorg-proto-common.inc

SUMMARY = "Xdamage: X Damage extension headers"

DESCRIPTION = "This package provides the wire protocol for the DAMAGE \
extension.  The DAMAGE extension allows applications to receive \
information about changes made to pixel contents of windows and \
pixmaps."

PR = "${INC_PR}.0"

LICENSE = "MIT-style"
LIC_FILES_CHKSUM = " \
file://COPYING;md5=d5f5a2de65c3a84cbde769f07a769608 \
file://damagewire.h;endline=23;md5=4a4501a592dbc7de5ce89255e50d0296"

RCONFLICTS_${PN} = "damageext"
BBCLASSEXTEND = "native"

DPN = "x11proto-damage"

# There is no debian patch
DEBIAN_PATCH_TYPE = "nopatch"

repository: nghiaht-tsdv/meta-debian

repo_name: nghiaht-tsdv/meta-debian

branch_name: refs/heads/jethro

gha_language: BitBake


text:
package excel

import (
	"encoding/json"
	"fmt"
	"github.com/stretchr/testify/assert"
	"github.com/x-armory/go-unmarshal/base"
	"regexp"
	"testing"
)

type GetExcelTagsModel struct {
	F1 string `xm:"excel://sheet[5:]/row[3:x]/col[3] pattern='\\d{4}-\\d{2}-\\d{2}' format='2006-01-02' timezone='Asia/Shanghai'"`
	F2 string `xm:"excel://sheet[6:9]/row[:]/col[3] pattern='\\d{4}-\\d{2}-\\d{2}'  format='2006-01-02' timezone='Asia/Shanghai'"`
	F3 string `xm:"excel://sheet[:12]/row[:8]/col[3] pattern='\\d{4}-\\d{2}-\\d{2}' format='2006-01-02' timezone='Asia/Shanghai'"`
	F4 string `xm:"excel://sheet[5]/row[10:8]/col[3] pattern='\\d{4}-\\d{2}-\\d{2}' format='2006-01-02' timezone='Asia/Shanghai'"`
	F5 string `xm:"excel://sheet[]/row[10:8]/col[6] pattern='\\d{4}-\\d{2}-\\d{2}'  format='2006-01-02' timezone='Asia/Shanghai'"`
}

func TestGetExcelTags(t *testing.T) {
	m := GetExcelTagsModel{}
	info, err := base.GetDataInfo(&m)
	assert.NoError(t, err)

	excelTags := GetExcelTags(&info.BaseTags)

	bts, _ := json.MarshalIndent(excelTags, "", "    ")
	println(string(bts))
}

func TestPosSheetIndexFindReg(t *testing.T) {
	printPosIndex(FindPathReg, "sheet[2]/row[3]/col[5]")
	posIndex := printPosIndex(FindPathReg, "sheet[]/row[3]/col[5]")
	println(len(posIndex))
	index := printPosIndex(FindPathReg, "sheet[2:6]/row[3:3]/col[5]")
	println("sheet", index[1], "-", index[3])
	println("row", index[4], "-", index[6])
	println("col", index[7])
}

func printPosIndex(reg *regexp.Regexp, str string) []string {
	println("[Index]", "reg is", reg.String(), "string is", str)
	submatch := reg.FindStringSubmatch(str)
	for i, m := range submatch {
		fmt.Printf("%d(%s)\n", i, m)
	}
	return submatch
}

func TestGetVar(t *testing.T) {
	pathFilled := "sheet[5]/row[3]/col[3]"
	sheet, row, col, _ := GetVar(pathFilled)
	println(sheet, row, col)
}

func TestFindReg(t *testing.T) {
	path := "sheet[]/row[]/col[0]"
	println(FindPathReg.MatchString(path))
}

repository: x-armory/go-unmarshal

repo_name: x-armory/go-unmarshal

gha_language: Go


text:
// 自动生成模板MuGame
package autocode

import (
	"gin-vue-admin/global"
	"time"
)

// MuGame 结构体
// 如果含有time.Time 请自行import time包
type MuGame struct {
	global.GVA_MODEL
	Title        string     `json:"title" form:"title" gorm:"column:title;comment:游戏标题;type:varchar(255);"`
	Images       string     `json:"images" form:"images" gorm:"column:images;comment:游戏logo;type:varchar(255);"`
	Content      string     `json:"content" form:"content" gorm:"column:content;comment:介绍内容;type:varchar(255);"`
	Url          string     `json:"url" form:"url" gorm:"column:url;comment:游戏连接;type:varchar(255);"`
	Type         *bool      `json:"type" form:"type" gorm:"column:type;comment:游戏分类:对应mu_nav的id;type:tinyint"`
	CreateTime   *time.Time `json:"createTime" form:"createTime" gorm:"column:create_time;comment:添加时间;type:datetime"`
	Gameopentype *int       `json:"gameopentype" form:"gameopentype" gorm:"column:gameopentype;comment:游戏连接打开方式：1.app打开；2.浏览器打开;type:int"`
}

// TableName MuGame 表名
func (MuGame) TableName() string {
	return "mu_game"
}

repository: q-meet/gin-vue-admin-server

repo_name: q-meet/gin-vue-admin-server


text:
//
// Last.Backend LLC CONFIDENTIAL
// __________________
//
// [2014] - [2020] Last.Backend LLC
// All Rights Reserved.
//
// NOTICE:  All information contained herein is, and remains
// the property of Last.Backend LLC and its suppliers,
// if any.  The intellectual and technical concepts contained
// herein are proprietary to Last.Backend LLC
// and its suppliers and may be covered by Russian Federation and Foreign Patents,
// patents in process, and are protected by trade secret or copyright law.
// Dissemination of this information or reproduction of this material
// is strictly forbidden unless prior written permission is obtained
// from Last.Backend LLC.
//

package state

import (
	"github.com/lastbackend/lastbackend/internal/pkg/models"
)

const logLevel = 3

type State struct {
	subnets   *SubnetState
	endpoints *EndpointState
	resolvers *ResolverState
}

func (s *State) Subnets() *SubnetState {
	return s.subnets
}

func (s *State) Endpoints() *EndpointState {
	return s.endpoints
}

func (s *State) Resolvers() *ResolverState {
	return s.resolvers
}

func New() *State {

	state := State{
		subnets: &SubnetState{
			subnets: make(map[string]models.NetworkState, 0),
		},
		endpoints: &EndpointState{
			endpoints: make(map[string]*models.EndpointState, 0),
		},
		resolvers: &ResolverState{
			resolvers: make(map[string]*models.ResolverManifest, 0),
		},
	}

	return &state
}

repository: undassa/lastbackend

repo_name: undassa/lastbackend