+
+ Controller Type
-
-
- Door Interlock
-
-
-
-
+
+
-
-
- Controller Type
-
-
-
-
+
+
+
-
+
diff --git a/app/js/websocket.js b/app/js/websocket.js
index 8a5400c..6d00aa1 100644
--- a/app/js/websocket.js
+++ b/app/js/websocket.js
@@ -301,6 +301,18 @@ function initSocket() {
string = string.replace('[31mflash complete.[39m', "
FLASH FAILED! ");
string = string.replace('[32m', "
");
string = string.replace('[39m', "");
+ if (string.indexOf("Hash of data verified") != -1) {
+ string = "
" + string + ""
+ }
+ if (string.indexOf("could not open port") != -1) {
+ string = "
" + string + ""
+ }
+ if (string.indexOf("something went wrong") != -1) {
+ string = "
" + string + ""
+ }
+ if (string.indexOf("fatal error occurred") != -1) {
+ string = "
" + string + ""
+ }
printLog("
[ Firmware Upgrade ] " + string)
// $('#sendCommand').click();
diff --git a/app/wizards/flashingtool/grbl-flashing.js b/app/wizards/flashingtool/grbl-flashing.js
index 385d32a..81eb2f2 100644
--- a/app/wizards/flashingtool/grbl-flashing.js
+++ b/app/wizards/flashingtool/grbl-flashing.js
@@ -1,37 +1,152 @@
-function flashGrblfromTroubleshooting() {
- var data = {
- port: $("#portUSB").val(),
- file: $("#flashGrblHex").val(),
- board: $("#flashGrblController").val()
+$(document).ready(function() {
+
+ $("#flashController").on("change", function() {
+ if (this.value == "interface") {
+ $("#flash-tool-machine-row").hide();
+ $("#flash-tool-door-row").hide();
+ $("#flash-tool-interface-fw-row").show();
+ if ($("#interfaceFirmwareVer").val() == "custom") {
+ $("#flash-tool-custom-row").show();
+ } else {
+ $("#flash-tool-custom-row").hide();
+ }
+ $("#customFirmwareSet").html("Please select the Interface Firmware binary file you want to flash");
+ } else {
+ $("#flash-tool-machine-row").show();
+ $("#flash-tool-door-row").show();
+ $("#flash-tool-interface-fw-row").hide();
+ $("#flash-tool-custom-row").hide();
+ $("#customFirmwareSet").html("Please select the Grbl Firmware hex file you want to flash");
+ }
+ });
+
+ $("#grblAxesCount").on("change", function() {
+ if (this.value == "custom") {
+ $("#flash-tool-door-row").hide();
+ $("#flash-tool-custom-row").show();
+ $("#customFirmwareSet").html("Please select the Grbl Firmware hex file you want to flash");
+ } else {
+ $("#flash-tool-door-row").show();
+ $("#flash-tool-custom-row").hide();
+ }
+ });
+
+ $("#interfaceFirmwareVer").on("change", function() {
+ if (this.value == "custom") {
+ $("#flash-tool-custom-row").show();
+ $("#customFirmwareSet").html("Please select the Interface Firmware binary file you want to flash");
+ } else {
+ $("#flash-tool-custom-row").hide();
+ }
+ });
+
+
+
+ // var fileOpen = document.getElementById('firmwareBin');
+ // if (fileOpen) {
+ // fileOpen.addEventListener('change', readEspFirmwareFile, false);
+ // }
+
+ function readEspFirmwareFile() {
+ console.log("Sending")
+ var form = document.getElementById('customFirmwareForm');
+ var formData = new FormData(form);
+ var xhr = new XMLHttpRequest();
+ xhr.onload = function() {
+ if (xhr.status == 200) {
+ $("#customFirmwareSet").html(xhr.response)
+ }
+ };
+ // Add any event handlers here...
+ xhr.open('POST', '/uploadCustomFirmware', true);
+ xhr.send(formData);
}
- socket.emit('flashGrbl', data)
-}
+
+});
function populateGrblBuilderToolForm() {
- //$("#filetoflash").empty();
Metro.dialog.open("#grblFlashDialog");
}
-function flashGrblfromWizard() {
- var formdata = {
- axesCount: $("#grblAxesCount").val(),
- door: $("#grblDoorEnable").val(),
- flashGrblController: $("#flashGrblController").val(),
- port: $("#portUSB2").val()
- };
+function flashFirmwarefromWizard() {
+ if ($("#flashController").val() != "interface") {
+ var data = {
+ port: $("#portUSB2").val(),
+ file: "grbl-" + $("#grblAxesCount").val() + "-" + $("#grblDoorEnable").val() + ".hex",
+ board: $("#flashController").val()
+ }
- $("#filetoflash").html('run file: ' + JSON.stringify(formdata));
- $("#filetoflash").append("
grbl-" + formdata.axesCount + "-" + formdata.door + ".hex");
+ if ($("#grblAxesCount").val() == "custom") {
+ // Custom Firmware
+ if ($("#firmwareBin").val().length > 0) {
+ var form = document.getElementById('customFirmwareForm');
+ var formData = new FormData(form);
+ var xhr = new XMLHttpRequest();
+ xhr.onload = function() {
+ if (xhr.status == 200) {
+ $("#customFirmwareSet").html(xhr.response);
+ data.file = $("#firmwareBin").val();
+ socket.emit('flashGrbl', data);
+ }
+ };
+ // Add any event handlers here...
+ xhr.open('POST', '/uploadCustomFirmware', true);
+ xhr.send(formData);
+ } else {
+ $('#controlTab').click();
+ $('#consoletab').click();
+ printLog("
[ Firmware Upgrade ] You selected the option to use a custom firmware file, but failed to select a file to use for the operation. Please try again")
+ }
- var data = {
- port: $("#portUSB").val(),
- file: "grbl-" + formdata.axesCount + "-" + formdata.door + ".hex",
- board: $("#flashGrblController").val()
+
+ } else {
+ // Precompiled Firmwares
+ socket.emit('flashGrbl', data)
+
+ }
+
+ } else if ($("#flashController").val() == "interface") {
+ var data = {
+ port: $("#portUSB2").val(),
+ file: "firmware.bin", // version that ships with Interface
+ board: $("#flashController").val()
+ }
+
+ if ($("#interfaceFirmwareVer").val() == "custom") {
+ // custom image
+ if ($("#firmwareBin").val().length > 0) {
+ var form = document.getElementById('customFirmwareForm');
+ var formData = new FormData(form);
+ var xhr = new XMLHttpRequest();
+ xhr.onload = function() {
+ if (xhr.status == 200) {
+ $("#customFirmwareSet").html(xhr.response);
+ data.file = $("#firmwareBin").val();
+ socket.emit('flashInterface', data);
+ }
+ };
+ // Add any event handlers here...
+ xhr.open('POST', '/uploadCustomFirmware', true);
+ xhr.send(formData);
+ } else {
+ $('#controlTab').click();
+ $('#consoletab').click();
+ printLog("
[ Firmware Upgrade ] You selected the option to use a custom firmware file, but failed to select a file to use for the operation. Please try again")
+ }
+
+ } else {
+ // latest included firmware
+ socket.emit('flashInterface', data)
+ }
+
+
+ } else {
+ console.log("no controller selected")
}
- socket.emit('flashGrbl', data)
}
+
// grbl-3axes-nodoor.hex
// grbl-3axes-opendoor.hex
// grbl-3axes-closeddoor.hex
diff --git a/boot_app0.bin b/boot_app0.bin
new file mode 100644
index 0000000000000000000000000000000000000000..13562cabb9648287fdf70d2a22789fdf1e4156b4
GIT binary patch
literal 8192
zcmeI#u?+wq2n0Z!&B7Ip%ZdwNPjZydJlFk*h+E9ra}_6R0t5&UAV7cs0RjXF5FkLH
gk-)3}W&dyVhNuJx5FkK+009C72oNAZfWSu}0Te{nn*aa+
literal 0
HcmV?d00001
diff --git a/bootloadcommand.txt b/bootloadcommand.txt
new file mode 100644
index 0000000..44b930f
--- /dev/null
+++ b/bootloadcommand.txt
@@ -0,0 +1,2 @@
+./avrdude -Cavrdude.conf -v -patmega328p -cusbtiny -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m
+./avrdude -Cavrdude.conf -v -patmega328p -cusbtiny -Uflash:w:optiboot_atmega328.hex:i -Ulock:w:0x0F:m
\ No newline at end of file
diff --git a/bootloader_qio_80m.bin b/bootloader_qio_80m.bin
new file mode 100644
index 0000000000000000000000000000000000000000..944f4947edf5a1186b77fa734d62a9ede153e890
GIT binary patch
literal 17392
zcmd6Oe_T{m`tZ4ThT+a|(HTTiz}-8e!wawp
z1_RPIgZ2#!zulooq)5a{)Z7L#GJ_3mE4R(fwJ7_!v|$Xt=DyE!=MG}~{p|b4`*}a_
zi=KPV^PJ~7=Q+
AYZh(ri(2$xBg
zT6zf*QS0+}>{!2}B(J!HTe6h%fdyMPK^B=;wC#a{dBr=oZY?ODw`*JR{qqWTY)?#>
zn^(MP=jN^3=5E=XKR18p<}I5b`#adHLJ6m2BCT2Yl;y
z?A*S6TXD&}9mN|bqBn2dT=J`pvV5EJO7bQOD8sUZJGOI66p7^qpv(&HIuqdX@}Y*9
zSZ-I|4sK)KmMsOFxV#cB>t@cf+iXeR9jpVI2_j+LB!6dNVL>rxT+01s^~#n1Pjyk8
zw{_FD2S6JWWGvjgWy^YB1|c`+ZP~bUOI``It0-?r5xHge_JWP$5FtfSz?OplFWR!B
zC{ONIB6rZ1f~}mHo6jv>%2}Wfw&!hHpZ`!v!Hx+?7tjA_S>sG%HQ66+xj)X
z&CXbbTnjDp<`eRtX)J_?vj0#1Cg>gHPgt;UeIbkyP&EAgdmgroklS-t+>H4vR;^lr
z@tVzB)3?F2T9!db?(GQ+?pVEWej4B%Dk-&-a71bfW~}=mXlem-kXXrk;}{Vz{{)P*
z1@dztXqy0YmTZ`Sc?mGwP05nvfqXZXgSDa+kgNd3L7@I323iLpd<@|-gfAd`2VuvS
zZM!yZxqtn}hc<2jO!zEp>wfa8F7S(L-y0l%!1ngE~nO#CJl-
zg|H6ea$;qlCDu>=n^<4sv7E`Hgy?AkX((?G%RvD|lK+4EUVwG}s1IIq4Nh@^1lF7z@~8+aZ+Bg1&@!9fT}B^e2JP
zYSdUg5PKjm4q`RpiJEZC*kmjdXswKlvl4=1gyRWJJR&{2&C3AKEH%tK$e#t_8>r_L
zg!>^Zh7be+2J80c`GM5+Z$%$*ExMQ`Lb@6Pl)_)dkqmzhfcHbFg-{Ox+6yCE`T?5g
zm87>JDLp1f04_`;Hkz(p9u>oMF@#OgFod`kNp6nR>Vy=DuhR?35?{#yqEg3B&xDS9
z$VRJpe*RC%>X$s3QwjU8=-T^@7Kx3qr4w5^CCobN>&u4CAQOamdt
zD2bh>5ONa=l}PYRbOIyDMYfXt-+858w0rp#>6YhiA@)8qA(I_Sl^e)8T}
z*N*_-P*(;Ku6ZvrBJt_QvI5xN^n2lf`7QUAuR!)CAo->E7624S&
zFx@wva~s<%{6opX^rz!Fi`fIh$4U;SFJk)Wd$Pv6RZ|r6@8*
zIrqw>TA>O>2XQL3&PpGu^sFB#8V*CeZhnl%(@IOjcS&$7F@2-7
z?y}eE_AC~?W~tH8~E8AtIOOCaQA#R!g{LHF=FlhYipt#s%-5YV8b;t35ioX
zGTdakm7H=BwbgRj*~(vo1ZQ<3GSOw3&jBs}n=AbHo#al#s@7Y>;WZAQIwzwN|bpL-c;1E9MwQF44{eL
zi#BUF_tEPi=iWWOg#KtrV30i%Ws&s&S~7863(1;ebmn{_UbB8ul^{}2FQCOm92;`{
zb&93AnH&te-TKkvn^qO{c&?yZ?+TQi9wO_Woduy-sg3v&38Q{BZjzsS5
zVjEpRo2y%@^N(G2#0~g$@$h94(RV)s_U$MZ3cSGMJTeAz#;#q$x)l?1{zVxR
z+;(Jgt6d+dQ%p}Vk_DG)9d>#81`E$2*+s_P!$JHGBZvr}Wm;d?i!UPTu+QrFO@lJG
zYG~F*2lI9V=(szXRl(dX{ZVh=8jlhaJt_JmRr=#xl|ma85>}laWnw@_*g{zAD#vE@
zm;P%;zwvQMz?{w_DHI!!IUR-wS0KjQ#w-i{ImJAQGVnNilIRCah<;)2bG_F^`(7gK{<@u7xi6QNkXSZBW{Vv2-=bnXgG(KbAB<
zFKzXhHC@l~167H_-D6dW7Rxo@TZMcOXJb630=d;4t9^3+22s_`ka@dIguSm5Zk5y1
z;#Z8>ZYEZf8xo65zHy<*Dx{Cu7!tOdMp+lj+$37&Yk+Fus<67&y*y8UoHojdetg
z#XaJR8tc<)!|o=%d}vM#EzHD$QxiknU#kR89(xR5XW_qAx$SP(jIoN7S3kbc`eZ!+
z^3>+NJRd5;^s^fXV|DOO+wCOc6z*VxE(Ikmeo>LxX~0ror=lP8?`A|d0{jl%+igtZKedu5w-R4rqI6gUX7+nJh|CC4-4Yb(GlKqycDp=zD
zu}6UimG~!&+qJ^AQ7{ia(jOJnzpkVD71Te+QNnjJieXnco1!H@
zAKTF<)3G&20HtU5w))z_0?S3#`RSG;d2y9cx1Vg7Le%f2|NCInkFW;_eT>4pG9gp?t)CSr&N36qJ<`BXfG
z@ClUuEK~XjSS3H$&Va6DKzQEA?dNsX$goa$78H&ol{(jx3hJ5bsK*dx*ZE~|*%gv~
z*Gc}Mpd90Xd@d0?AVnR23u4k|5^feEOdHWIPD0w4
zj>|NTi#)9=&7-cN5%Y7>
zQeD`6Ob^9IG&YbN9n%#K^0ZbNs>*5@x_U*_^jo{8k{U);eOJ^wle+>4shwtzsWVk3
zXh1|conD!(2_~gMtta$_r{Wxr`FOf(Z3nUwv6U${Q&fcAmLDbe6O@xv2WFD8#n5$h
zWk^J`ovN7aXi=FPBI73%_l_7-Sb_$vIk5EYlET(f4INy;
zE~)xlGPPW=Wb6paV5eww1haQaVFyUMksvBFfB<1%i4@ihC?@@k1UN9$s`@gMDT_M#wF@K6bZ&u55^78T^06V!uj7LLg@&MgE~e7_Ye#7=+e)Z
z?MvQ!w4qbq_?{GYE7|KZ_er>)7?G^6z+^B7lEc&qgWXVlcJI*^s-Q=zUbNTMcSQ=y
z0D*2-eWCs+;^s^^qx-1UGIg?{`c0YooJ?)LETx~JKp{!ksUtI-%mpWar
z`s{TH&!c?i0SU%Op-Pu*ib+VJVhtLWlwPgar%O(c$(CVglqV^9Ds*kdvB`51xx`lc
z%$USVAkCy;mlF$#7%JHy&uPJlWg7oD!ZMYhAK3=xTp;JGM>?uU)-85bj}$z`Sh>(J
zz*UWORE(^<%~dgC-p^Qz(=sDqEE@TdB6`Dy`H=w|R=cy-Y&6O!OxN<)2
z4W2SjNPj>M>En`6~$3$u2)EepiL*CGqsCbOZ&9azQ+
zTBCvr2*BHYa8BTm&rau&oDk~##*vQuM%qN)wQ&S`qpyky`z$DJ-N@q_khr_s&4<=A=hu&P+yhMeTsg?pSiu~%>6Vn(e9acw}UbB4#d~%<#(^%a>9amds
zsoDoy*h971heGe{g86)|4E9&mDQpmq^V>*}mFJJ5#LrYLp6od3IN4@9Yq8x%WVI>q
z8h|6}kY4*j?4Kf8fj=-7K7~zxG89w5u(Hp}NYNEv>
z0hgN%j{Q6P>kP1N@=un4bWzFLsNK4#X+g4aFoA(cfB?njQVoZV@0T(h*NIqEH~brwsC#bPOen;dPAR(yA##qM6JVKTzsT1IuPp5tH~;bZr1jcY!R%KM%wBGABvZ;l_7?3}l1p
z4+s9fTO>G5b~ks;AZ;S!>KZP%QxeV$+hR!AMX%5a2`X&4Hx`bXT?Vq)#@UYXHsj?c
zL-VnVLA8Osb(Xro`kl2@^WngvK;gAvJENh9@XD}#TCd$wsjClj^ZUEcy3e?6&lA3T
zV~eJ*Q@YL6LoZ8c1M7Q>go2|LT=)+Hy(8@nU*rq?ZI&W01Gi3Wziml%V*U*V#*`iqd9g4TYXyHqAFM{<;-TQcgav-<1xuL
zi`eogem7?itu*dUycEy_cP>p-<6otmueG_xENf`>ong&dEUfyqCWHAWsrmprwTprp
z0&v0vyuP5wU^iA}<`oVvi(((3@;~I4MQzIrL>a<_jl&hu6sy^=p#+Aq^LN9`VsUs^
zl&|hvh?b(rm>EPY{6M-$YD9`(vCn2C*5z)vgxHX=(bMrA4f5a_ClKuWw`*@rv=+L*
z2>Ubk4hrNu%Ndt~`izU^L1tV8kq=E4x=41XH(#XKz$XH;%FFnylDmYUY=7D&{cVqiUKQ44zPi6+%y^=+FrJJ}hL)f-;p
z`l6%(i?(*R=6C2fQ)7Wwg^R9tyW5>D0R^8USCzr;+*@mV
zYnIh6)+Nt*+-h&NFR!YsbVjVUsRJs^9l2_|6U$sovU1%p<;?GRyU+Eg+tWa29azGB
z!P&Et5@u3xTT`AuvS*Qaekf^bNd57GF7GGz!I%g%zYla>GzqJKxkk1h;tJ}e1a(AM
z84b1}VOG+j=C~jj#*Hj)U4{eW*weZO@pAL?!rMcj8JI62QqG5(DAR4&FD7V>snujs
z!F(uqUwU2l1kKX&XyEh3WKCdx;DhfE?GA+L_~7}W-8Wg1EGe1@)0_p?#Mb1SEeUB!
z2_HtRmIsze9T06kf@QLS`7SzBMc6_hr{iB|`g9MV+B&>b*(#
z=bG2%tT~>m!Tlr=jt%krKt3hJBrnS)uX`%9KrNy*puZ7EtrgC+d6X3H44ul
z(7lKa?^1&-aGeqpP)HlaM0biB8%81$*Ii3`^>I1NyZg!;YH1^;yau@STMAy8<~yodL}aa
z+w?XvM@(SWI)AIw`KhnYQ+~D?{a@xUcDDNpRq8(e^SZUpRE7OLWM9&Dotroh-@x1S
z@4Oa;*NwdFL|)-FSxb!ZD-RcoeHhCaYq5Y&5>R^+@tMIm>Gn4IFo$-}~<-2_)Io%%Ngi`2njO|!x79ZN3o0VOHwkj*z
z7_k~|?pOv6V$N6pr;64jf58U4FqQ6lPu_L-HiaxavCV}hP
zN|k?ogZ&iU_l+dfV$})ICs`ihzc3B`BkaQj=rku;LQDLWWD;@ToJWjLd0?A%Rg$;p
zLsE_|Aek~X5N@VEmU8{k)AxlG|Afc52ia3-!G^KitoRBK>{dRPgbGB#P%R%HlI;}i
zUIxLaRgfSGSj&T+%VpUxi>l&g!!M~Bkx-{r7f1+3`
zP^?ELij^5noa>ds9OL>CQjzeJWZ(t8UB_!Cp-xsIeM2k}?o(>FZ6>Y{5Lq*uC<>VO
zZwheUqEvJIy3A)01u`3DnL)?Cby??pXHe+GJXj}R9qc
zK=D{ZN6X;(mO=43TVJdD3Zz*lHujg1pv<8#*md2i*D
z6ZZB$rQ^mP&aIeUC8zlkXn#%<^U1%2KO!60jQxYK>{%?ctcjE*0mmP_^2qgsaKhsX
zO|?R^9cX-x4GN8k6G|1DJqnHZGa8{pA$U|F=)JL`2{MBToU034OW^zo*3r2M89{AV
zfAUWZydO3HOJalA@V*}~nq44Ai~8UiWUWlj)VwI&XdyO?Ta4-uFqYVnpnKGbX@Y*r
zCg>+d4f@Gc#J)ojJ1fy}gMNfxD+ISH1l)}T{&o>HW9^+r2>SiVen;SUV^#O3WaqdEiOP6$P)%V!nICAmEm
zK#y$!Jo@E9iyni2QuUsJ)K3RfzeI5*={=wvNY#UW;OL$D#_)*rd>Zy4y1NZYk${s$
zM8C0QLcGv!0`gGMx3556+212>2Es4V&ngS*fLw;Waz+iYo^u7_c!yhyR?l2mJPuZb
z2f}5>ItjKf%3Q$R$n&1Clelp!7?V$8a8ASfXDDEyK;e9xN2+gyxbL{9QxxG$ipQ;$
zSVjxgHzHxN2Wazap3^$GkZJcIAM7=5@p(@9$^kfCc7tMST$F#&cEb#3O26{YSfB*H
zoEkOwfkBp?5t5X6p%O1p;`vIPsKg0M9IwO{UktuF^Ayallz6TZ$0_j~C6+zOpvG7Q
zj#1)hU##d#h{i?>QS#S_S+$J7Nfnhp^xa0en+?J*B>rSWYb!og|6+oU8$=>V=pZG|
z<{IEhXB5+Ior7#7%PeJDmz33X4mqmJ_%iMjCdxL2ZLbIkWiR4~%~TUM64qxnvWtSD
z90{vA8)-T>2p50A$}KLNtExFSfUS
znsR;UHP7+ntY!K-JurSI!$8gXI1nFB>Icm;NaIxrHq}ss>|xe;Xvlneh<$|BHNJ^a
zxEZ3`phbJ`8LL|r|H5NR+P8KJ*dn@Lyf=knD4-0
z{1>T(YWyc?Lw;Q
z{ak4Cf}_nw;V@-o`nUv&D~o$=h+ryDq|Y
z$ZMWW2@T$ggy8c{-i`+Ex;d@}Z(ocb_q?~`pcmdY4tg7-DOatxqt+{SyV)S&K1Ib9
zavUx^uE4%HTqslE0~j0k$y%X>8n3b$qTwxRA7+7e;4b8uZ2V@F=
zcEM+Oz|f7qO+h{UAE$D5>T;{0wJnW5#kIXV=6cL4JcflgwhvZ^gKdJxDLC^8*>cg0
zaEBM>j<5?MJ2QB7itu}161*9rVsz^mJhQE1VC34we&=>CYzk|qAExRIH6p12x3yY>
zaKE>Sf^9c!=xuqV(M?1#w6}_K-V12(X8^~Z!&Kv2fK^`xZ2kmnyP+}1Zv%yUu-f(*
z=Q@n*V&K!X+qu^7-?!TbulX5#r{CXC&aZXe0q%2pXO#Zt#WQ@W3}uw
zYbBP`RGd{y3CR;Oi>vnsWeD+JK0_`?ZH&TlY8!;PUVe{0EzWCQq31I=z^!P2PeMLt
zjP;smDl9$VrM|RqB+e~~_l{W>AWce1kO?t+I798Z}-I8{YWo4ZKhfyH>fF9H#}R+TPRLlIFfor1<7BIAaG7vB7Y2
z4^yb|Z}4_tW&!RAJ{`>7+W4_-SV3+dW=S*L;JXfjf6tIl8YulDisq;P$WJevMW3U4
zbg#`0%sYyjDbl!}94pWaU8czcI(8ZfwUXtoWmS<1>wSIiOV$^-%PQh}e5_A}WQWut
ztj=s4IvoHmzpu(JOt7h!ZCVtW0|u9C?7)EH(r!`DsK=t6q;y7q|ItVUxUduh+;TY?^XsBud#sl?NrfV)Y
zrCpgG$bWATzvtStdj1r3VY<5aY}$qC0sJL{`x4inW%*{RQ){?_K*Lg8aPWo7QsUnIPaBlPpaYd
zw)CWeyBYcH%$Ha59rjT0%G&aWOoZ;MR@e_(Ws@9*Pdf(-^=Rz&bl=~#d
zJr$Z&N3|a2xQfv2c1o<}IGfsGr@)jLxiJpD7OZCc9lc-^=_>#)a>7Qm1i_}S@h*6U
zfCmPuAeji3G1%X9%o{roiDp~h?*=WW4B~TdiKn>8?C8b%xRB#*fpHg(x1rl+WP|Ue
zGtLI`xk#*#;xx)0ZSVv=XKG=HhK-1;GS`#%U&^{t8GixN=uOm2Zrp=j<-AGG(;BDw
z@@Dm$C}=RqtK6X*Log#o;LK+0IGffeJGI&A_~0>1vTViB>Hw?*ShiBMiQ-1vjDc7@
z$YUAc_-jeEK|!X{_oI*LSQ-`{-;1b8q{3{Z@nPJ$bxk6D-@&APJvcL%M1#w*+
z6&q~kD%gP({DCCLw{_^71hHwqc^BypZ>*9UI`oYqF?CA9-;oz?&sKVjmoQmLgC8KY
zJ7zy`vsvt&{MS>G1>;AfaBnDlI9gE?06o^1LZWv}KKhr@Ruj*Lvq9X+vc@F@Drg93
zyaVIsruHo-%HB4uXEf=R;Pc(19X+FQ-?+L*%`TF59IINcwk}uKbb8^1Kj47?M^Tye
z@qPC)Q-oGubFy6|>n>Dsb`dz)hYHPz2Cv2JhU<9YBqHGk@5Csqk(?vcB0t6hPIlDG
zWt_)G9ZzA;_+9c_kTEHHpuZt*MMW
z9%2OVVphuor2S>be~oGa3F&xj6fS!qesnYwwy>nbIhsj9Ogf$%1s65AfnkH;_Qjkq
zxKwwK&b*Fv>*A^e=cw4!d1wJ$ZX|b9$qfw|ZGf-}U~G70K#NMSqw5v!
zkqHS(ggwn=GHBmQxqTT*`-;Bxuc^WcrS9cFE9(}e
zEPoHDV?M`)x=oa$1}l*>V$k2R2JWOndlL?oQyb-ZCDz&(5wu$Nn
zu~3+fEsqO^!y6nt3Wcc%UJwtkE9GUiP%t0@HU=;G@`Dwy+Xre9RO*2@zpyK?)d35u
zg3GOM<@HP$lHFJsCxLd2Pl*`DIfia6vY!0y1b*-V2@BB}dyuD=wjFuHzdtwr%ZCzv
z7=e{zCH#U3byi8&Z;bE29J|VN
zX(*`7SCH{zrGmd=1-3@wuK}dP{X>&n8oiRnM>qK%wahQK(dElCK}|Pg0-taI^I+_r
z89`G~Gx4^dma)AIKM~Uxh6I>g1T8Gh+c@JB$Wci*xZ;FEK54OjJ7Qt-{A#K^XZpNS
zRCsvx!%?$!<{wI!2&bPrwJuf#gm(iLyH%l4Z~ecfrtrF{-w}a-lrkHi#G|Si_IP<9Vbv?f;kQBb8!6sixwKOZQbuMm
z%5_29!`A!8+E#=$v!HM9xJ40W+qf|7BH?b#|4%|icKw@Bj{mJt4)*N};+yR2J{fNJ
z$yDN(X$8WL4-9VjVbLW{%mA-GE`!^CiDTn@3~5MkNy9GjflFmj&93u-DG0)@zI)L+
zd|_%3MPW9gjFyoU=tO8L_PqgHYo~c`fOlMrhNU^C^smt;v@Bf?OS61^5mKFRoI3*J
z-|vovdGY(TbYcY%Dvi
z!F3tCaRsKVSh|d}R;mt9shb&_IMD&sCtLg#^jWj3_`Or3rkU{PkjdpNi4Q`F6J`>N
zWq-n(RO645rK%H7x#b}w{wOlYS)pMYsi-N&sF`#67^#twSUWqVg<)egS`d!C86;q*
zYcx;~NXgEW!Au&@&Inv)r`OSkLsG!a)~_ewZCMt^`Q0!$Z9iSBhM&T~(=|UpnV1POV~-i+9)oXxMTj0RGq1r00q+&q=`en3L|V8D%YYTmRVvG%
z6IzBrdZBSxF=#s1P9@_7Iiu-%#tXv*--G+J(15Kku=~#=@Egj5vObCw#yXjC!8oH+
zmb*!dic%IB*E)sv37OV0PU~7V48JIm`=H>06rYV`I2smD4J(6%gX;TI>f@!tDRhBD
zN-&X}_eqRj1LaawmUb&uxQ|I9~gf<%*EJzbm(3@@o%*I52rS+{_K>#Ah-Rl-(?-z
W`D+8YM`Dscu`CPf+51}Z!2bfqZG~n4
literal 0
HcmV?d00001
diff --git a/firmware.bin b/firmware.bin
new file mode 100644
index 0000000000000000000000000000000000000000..3865fb93b2e28d2e6bd5a79f59a5a1a99954e279
GIT binary patch
literal 1295072
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