From ac3b2ec68819a02f75e42f268b4e293464b5ca6d Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Thu, 19 Jun 2014 19:47:17 +0200 Subject: [PATCH] Implemented message auto-ack --- Modem/main.c | 2 +- Modem/protocol/SimpleSerial.c | 95 +- Modem/protocol/SimpleSerial.h | 2 +- buildrev.h | 2 +- images/Modem.elf | Bin 186636 -> 188564 bytes images/Modem.hex | 2245 +++++++++++++++++---------------- 6 files changed, 1233 insertions(+), 1113 deletions(-) diff --git a/Modem/main.c b/Modem/main.c index 6d47732..69e9a68 100644 --- a/Modem/main.c +++ b/Modem/main.c @@ -98,7 +98,7 @@ static void init(void) ax25_init(&ax25, &afsk.fd, message_callback); // Init SimpleSerial - ss_init(); + ss_init(&ax25); // That's all! } diff --git a/Modem/protocol/SimpleSerial.c b/Modem/protocol/SimpleSerial.c index 870777e..b04c265 100644 --- a/Modem/protocol/SimpleSerial.c +++ b/Modem/protocol/SimpleSerial.c @@ -30,6 +30,7 @@ char PATH2[6] = "WIDE2"; int PATH2_SSID = 2; AX25Call path[4]; +AX25Ctx *ax25ctx; #define NV_MAGIC_BYTE 0x69 uint8_t EEMEM nvMagicByte; @@ -78,7 +79,8 @@ size_t lastMessageLen; bool message_autoAck = false; ///////////////////////// -void ss_init(void) { +void ss_init(AX25Ctx *ax25) { + ax25ctx = ax25; ss_loadSettings(); SS_INIT = true; if (VERBOSE) { @@ -191,8 +193,95 @@ void ss_messageCallback(struct AX25Msg *msg, Serial *ser) { } kfile_print(&ser->fd, "\r\n"); - if (message_autoAck) { - // Inspect and ack message + if (message_autoAck && msg->len > 11) { + char mseq[6]; + bool shouldAck = true; + int msl = 0; + int loc = msg->len - 1; + size_t i = 0; + + while (i<7 && i < msg->len) { + if (msg->info[loc-i] == '{') { + size_t p; + for (p = 0; p < i; p++) { + mseq[p] = msg->info[loc-i+p]; + msl = i; + } + } + i++; + } + + if (msl != 0) { + int pos = 1; + int ssidPos = 0; + while (pos < 7) { + if (msg->info[pos] != CALL[pos-1]) { + shouldAck = false; + pos = 7; + //kfile_printf(&ser->fd, "Not acking, wrong call\n"); + } + pos++; + } + while (pos < 10) { + if (msg->info[pos] == '-') ssidPos = pos; + pos++; + } + if (ssidPos != 0) { + //kfile_printf(&ser->fd, "SSID info [%c %d !%d!]\n", msg->info[ssidPos+1], CALL_SSID, msg->info[ssidPos+1]-48); + if (msg->info[ssidPos+2] == ' ') { + if (msg->info[ssidPos+1]-48 != CALL_SSID) { + shouldAck = false; + //kfile_printf(&ser->fd, "Not acking, wrong SSID\n"); + } + } else { + int assid = 10+(msg->info[ssidPos+2]-48); + if (assid != CALL_SSID) { + shouldAck = false; + //kfile_printf(&ser->fd, "Not acking, wrong SSID\n"); + } + } + } + + if (msl != 0 && shouldAck) { + int ii = 0; + char *ack = malloc(14+msl); + + for (ii = 0; ii < 9; ii++) { + ack[1+ii] = ' '; + } + int calllen = 0; + for (ii = 0; ii < 6; ii++) { + if (msg->src.call[ii] != 0) { + ack[1+ii] = msg->src.call[ii]; + calllen++; + } + } + + if (msg->src.ssid != 0) { + ack[1+calllen] = '-'; + if (msg->src.ssid < 10) { + ack[2+calllen] = msg->src.ssid+48; + } else { + ack[2+calllen] = 49; + ack[3+calllen] = msg->src.ssid-10+48; + } + } + + ack[0] = ':'; + ack[10] = ':'; + ack[11] = 'a'; + ack[12] = 'c'; + ack[13] = 'k'; + + for (ii = 0; ii < msl-1; ii++) { + ack[14+ii] = mseq[ii+1]; + } + ss_sendPkt(ack, 14+msl, ax25ctx); + //kfile_printf(&ser->fd, "Assembled ACKET %d: (%.*s)\n", msl, 14+msl, ack); + + free(ack); + } + } } } diff --git a/Modem/protocol/SimpleSerial.h b/Modem/protocol/SimpleSerial.h index 6aff76a..97b116d 100644 --- a/Modem/protocol/SimpleSerial.h +++ b/Modem/protocol/SimpleSerial.h @@ -7,7 +7,7 @@ #define DEFAULT_CALLSIGN "NOCALL" #define DEFAULT_DESTINATION_CALL "APZMDM" -void ss_init(void); +void ss_init(AX25Ctx *ax25); void ss_messageCallback(struct AX25Msg *msg, Serial *ser); void ss_serialCallback(void *_buffer, size_t length, Serial *ser, AX25Ctx *ctx); diff --git a/buildrev.h b/buildrev.h index 1ce718b..016adfd 100644 --- a/buildrev.h +++ b/buildrev.h @@ -1,2 +1,2 @@ -#define VERS_BUILD 2127 +#define VERS_BUILD 2169 #define VERS_HOST "shard" diff --git a/images/Modem.elf b/images/Modem.elf index 1d2e840c1471decd301fa8ebe649f19d8b23c2c4..c5ff332d6aff444ba1104c056130295b03eadf2c 100755 GIT binary patch delta 46888 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 delta 44713 zcmbuo34B$>-T(iclW;-6um^|%B0Gp73E4no6OlD60IeTwt=RGLo(gra$(E;Ye6H%r zf25S}ZCtbb>&~%8b$ff&3S$%Me(3pmd%M=#mV{&MMCuYAhBYis_Ve!lW$Z{{YV1hE zMi81k89Q27KX#>IBRVu{bd-m4jhge2(m0ccZjIA;7}HoQS2XTIX@BEgjr_cg_pPi` z?cjj3Lo23ya!18Ir#Dxml*70@Z8&`P9!pDC-mmjw7q8jPERUvl<>ABh2{d+X@@RxL ztv#jh-j*$EE1L3K6?p~uu{Eu_Mb{Lp{b$a>o*jmEX!Cie)BQgm`pF;E3o50Y`jmt1 zzRan(`Q(s5cSHVcwOpO6C`uWce)jE*imZwrr-q(R`1d$}#7Ar@5)$z;x3j@BGaLO7Qr7pf$x!AG-7Tdm}SK82OL9u5ier)~M{+RNUV#^91 zf3UUk9?y?G+@@{Xd-=amyMtnn<=G0Rl$RC6K5VnaTT>8Q(DsaXsbKG@c3BaxLEhtK z9d#RR$jWC^9nNYAW$av*?xM8phtvGL<`p|qpG)p>so$4FD(0VGSh4c_7SkU`vbQ#m zb#8yp`s;>X%E;+?aljWtD&~B;u;QLG#^Ep;_E()_YjWOT=pmho(Y2~Uohm&q-E?|r z#oUkK`Ed~H%}zz$k!xdVxj7AUn+-lU`egAZcUElpGKPZYHcl!3Amjen$^3e;Wx20= zZCl5B$1{ZN5H|QhrVB+WfoVuyc%`f}ywGTIcc+lyw zr>A_fsGD&67t%zwf9$SJNd}k4Qua< zUE8BUYDMRg%>&fB7CkSPo!WFV9=ku5QjP}A7+ya%sYmr_gS=XsYHh0az}qpHadK~T zUY~!}#XlVEQ!%7s>Zt|6SbwoI<#{I;RNVhD$G(wgKwck`iy^NJH4((nT3?pjsCwU(tmetT-4Opw?D$q+dZ~O`t1@bx`*>zD})n++MA6+)kA` z&QvQMU$066-W>b1=d~Q))qAy#n68M`?o~fFuvbbwBd)9{iRDG!-dyd0l=8pD?(B74 zT7$fj&l4TF{<8$f_V;QUbm)C&66y_~B$%CTI=pfRAN@%O8#&RzMox6_(aw`LcZ!%! zt^j8T-CGfbP@vGW=vW#$23<-X5_BecaL|e5qM-B0gMv;Y4-7hsj3Mk|7DP@aik?>kR0&RSU5l?U?=hfSw7WR>+#MBMaptCMT-j{P{jtBt-j1#Me6x-e-*W$! zl=87DU+lZGuW)Ov7rraM@^Y;MU%Xs`hFRC5^H(OuhkX=b??c!kwX#l?gC%I+m30aZjsuxWPCf4`sl18J2A}NkRfh>`>*=Rb zo=ac#`5T!lD~@OWrz%;wsp4$ve?=~T`<+^&Po`O{R_yOv-rizPWd7KcAHV!E?Z@g@ zA;eD$uXx)QHro|;MSU{%$H6OC-XAMLdUfpI2d~F*9a8fzvMajBI>u}Z{WRL`U!cOV z$L2PO4H*#e=BC8P^=?~l`}r3t6mA;&KXCFNJuonP#9oj2y{~Pz{fn@^qv{cRFLF!8 z$ur+pJbpT1xuv2acCvR1RS~OlbDP+)CaJNbefwWGr?9KK@8fS&$*K|znw4uyFkDvM zyRPEw=igSmqv~vBd1WYXeZ{A-oBNHZ{hQ8Ds(tEJba=e^tE$$fSnWBfv4j00UUFv+ zkyu5)bZ<^!>`K4wDZlBwQ~fV>&!<~4Nq*Bgw!44--j@otsorOv$b7ED8!)AmUn(fQ zCRXElO;4*g)S7Gj8q^rur14YN_85Qj+Kln7*Rs?jy42YAxv9EUP~xZoP3yCOn&lf? zlzzM|F?`DgH06S`%N*V`hXuGATp3VZuS5geHZ?;V*DqC;HTfb(+WqH#kq9wlpboLX z95$K5vjfwDwTI1he@@R!Yd=Zk;keB}1D1AtsLk4cZh9b&9=`WU*^ zvM(QYHCTB*!K=x8`0GYMXOI>GmxO7Mn?5MOx66;S#`g4ceY;MHdnT=GeR zSA9&51lQIhgV+@JUwF{PTYEmi8_y+p{ig}O|8#=apGxq(6$viA;JcV>&L_C+T!QaA z3oZz*^Ch1q45gnWc-6-VUVSpbu}6#2avJ2V`(mprXZ`01F8eIOYcRUpqIj;TM{2ye zz0)W;A6hSa3~rlRrG+)EJr^>qfN7&Mt@$iudTDUmp4qL|{`{uVdH``ombItOZ zEm!4*<&0}rRkHuC*@jB;-(szXtmT+~X2?z+Mh(>mZ)9d)-c zyypxxOU{JywH&GQ6^(THHjUKzwvBAhfNvPXw4n0>d2OM)ZF`7$n@aYZVYjJtZt*oxDL(jdNlwSw_IG>3L-1(WF0I$9m+I( zTp=>;-8imSchq8+Vrnmtk}3|jV2W2 zKi1(n?x+4Qwo^OOp8Fqer}iG3R{wvtpGu4MzI`e8R0nRq%stghGma)zopyfl$0_AW zvDln!@3q|6>vLLq6}hqVbMh&*oZA6Ojym<)w_3*(=-D>fEek^ZVGa9gmbY zj8(nsKQAJG1$@6;JR0Rxpu|CUj&5bjY1^=K)tQ&F{C1aWZ#faEz2$?5cd%Y*-O{7T za}as{bf@o~>>QiABuD*qufJqOwf;}c=Ccox-qKEi@`B?+dC_ra+3&cEyyUp69B|xC4m$2GhYUw?9zEr- zGxUR$a?0@tIqi6)oN;`coOL`}&RLGi7&&hR87mhYkCTgz$II7_C&(qo z6XjdS^W{6o3*>vpcgSVO3+0MqJbarYqR+p#EEW#}KfUEnNp`$MB94D1)f_LC>W=S{ znvR!AisQSbw&Uee*YVG#zT*{9Np(V08aXbJG{-9?-EpZjb-YS49Iuw{$LpoF z<1%UM_+DwR8Ry?yHb@6&xKA=2ZXJ;%0kCC%3{aeWeNC0gq>~cIpb~_#^&p5tKo^?D*_Bb9b&s*m5`GOU&e7@*-yzF;8 zL0)n^Q4TnsEC(GI%OS^8Dzl;b<)wBsdm#_`YOtmC`noa1G3-tpaX z!SM>Y=r}50J1&t+n)UKoD&IQ8D*4XwYWd#rJ#yLcTDjtQoyc4}!PblCxJ;5A-zyQv z_enL!8>M>G3HM7)$D1U@@n)&*c#G6^9FzKvACOeXTcwd>U(y^uDCv$LlBNM;`FvP1 zoZ%5^?l>+j9dDP`jvte@j(13V$B#<~$4^M6<6laa<0mD@@vkIzt{Hz=19nQjGdv}Q zj(15H$4^UF$GfGQ<6lb;$InPF$G?%@j-Qo2-~xOLXV=PGz^f&8VSQRRn)vB0dD7Q$ zzVvroAOjs2N|EEvGGuP7Pg!Pkh*R~EVUGLCaL4^*q~ifH%JD!M<9Lvab6g}791oUB zj)zIH<6C8_VJ@S?Wx6wrkQt6g$}GpX$sEU{WS-;EvcU0JS?GA2EOtCWmN=d$OC3*= zWpmv!S}e<*;dWW!c!rcXo++h{XUS^Evt^Crxw6jjJSlU$KsGqOLpEBD%0k&>1z99p z950q~$4h0avH zIq0~n9CCc49CqAIUU%GG-f-MQ-gMkk-g4YajyS$ajwXgiZ#m`+H_N+@`^bBa`^s_0 z{p5t>{_>&Y0rHXKfl}dkkeqT{B&RJ$Ww4yFf(((fj)%%Q$G6IP$HV1<;}LSv@ksgF z@hG|Ec(i=$c#M4Kc&vO64z94{v*=*cRWW@9nY6Wju%Lp<2xkX@j_|pc#&i{UM$VQuZLFI z_f+he`eH;&!zK(}Uf5*dR;5@fHj*uc}xJ`yQ z9woyZkCx$%$H+*>V`Y@%@iNBo1R3XeqD*i+NhVp&lVT~hf=rRAj;G3W$J1nnJ{Ss)NjNe7($boGA+&ca(*Wvt+U3Y*{id_U-1()=QkKtt@riPL?@tFU#k} z`fte`x!kEb$_mF>QsOvUN*(9OYR8>qjpJNd=QvNw=EaU6beU6ilnsuvWTWG3+2lA! zwm9x2<&JY@tK&R*a9(U!EHnC`Q+1Sw9cRfl$Jz3z;~d%UxRdN~oF`8>&X*@07syV> zg|f?WXW4BSqf@%bGtO{>JnOit>~VafJny)hyx_Qpyy&>6?4K7aD$k7WcPd;+9OFXb z7#9-9H^?E!UFERj8|8J!-Q*3&x5=B1M}>H_yk+#9y<_Bva~dm09gmY^j>pTpjwi@_ zjwi}-$Hj8O@f7*c@l^T9@ieJ$JY7yDX73C+?F=*JjN@5y*7009=Xjo+cRXJ%I9?zZ z9p52eJ6caF z2T68(y+j;mN;StFrMlxRsR_^EOQZR*>3(LkkyBkSX^t}`-El{0>Nra>9A`^&$2ro{aVKf* zI9J*_&Xe|z3#5Z#j>$qRfICa3bGkvY9N!q?Zj$5lJtWt0Psw-OO9~y|B3&H!m9CEa zOSk#%iZVcYIKx2c<#>?vc05@6I36N>9S@cMj)%!W$G1w6;}J5%@kkkFIV!iwa4X0t z8R>YmjB-3y#yB1);~bBd363YoB*zn_*zshU>bO{@JDwslz`T7un$Wm~3?Xj%;%Lu58ha^Y1P1Nx3t;FIyddAP+h|ArCwLt88=pp*-sNZ?fI- zN3z3lg*@T-q&(^Pl{E6&#d`6ye{HZ+a_%qq#_?$fN_;Y!|@p*aC@fWh+ z@t5*az<6$PQ4To6S8~wt*K)}5H*(nVC3)TPf65zaZGuw7sZY|F)O7tz6SXmZd`$(>hsHuDfuB){-W5a zUk*#@8d7y#6zlcm!zo1}Rnel@xhG4b6QJUU%UOcE$Rwv9AjOUc$yCQhGTreInc;Y- z%yN9I%yB$I=7I08lemh+>qzYLU#*WWa6U^U!9SCQPJfpycDyXacgqr|UoJ}>|6G)g zmz|Eg$}Y#aLmE6{VW8>u@8<2razQ7L0*nyO?*w<9LLPr zu}!b0dShnq-TCUpkt%!NLuty3;J7VAZKx1G6x&RxCNjN~;GqK4b7x;A_+}R3f*K<2mI8j}Kb5Uo zshIzEwz^(D<^Pk?YkrFyl@o3I3>?nDQ`)?TsFe8lP|be~VcJ{qx-+m{k7jh54qroK zbERPj=v=>gpSi54a}8iFtErT$8*)W;wp~}_tlCqisI$#vHmkAO+8sglzTj!WzeQw5 zOwEj`DoK}yPww;5mUQLn7KeeIdt}jEmZT(rD)a~_8z~1=LD(FQe znH9K@sq8=cpL9|^qnU`DMvF*R3yjK?JDNh1^%dl5KltdHtU+iHZ`xpJ>+XU!y9%<` zt~m>G?T0Z_YLld@HwT=vfxhRndm`S|f4+|{`hS=abomyeKRY=B+pA9nHas_bfX3{H z5Vh8lm#NnOYh|+h2?4W9Q&6wpRnVsY_e+GYy@Io}s`oTF=gV49RL_2ZeowQlw4ZdU zU_IU#0Z%rPu8VYPN#!3}A$QxFk_4@vou^VG`h+U>4a!p+s;CG36J6AG>LovNgSxS? zT>;d#x~P2GNKE)`gjxH>-JtHfO6~B^^;Z2d8`MX;F7mEN`Im1&$F+jbOYqG?QEH)g zH-}IjbUiViuRHBezFFm|^S*zx>V(6eZdPfkt$*fb)v8Y0{9xEE_p;D&Ic@#)J}NEM zs|i&>u$(`vzM%^&|o=EY5*zkahz~3*sFpP)gll}Yqsy3~5V?@CuHx7jkYZuR`7&;7KQRQCYy@)s6|7%~>q~Ua^ zS+#wV&#tTKehzRU_4h&RJegAOH6Ls)-uo-_swlCn2wny~jI) z9?~PA_CUlg4ctrpEB)0Zwbh?EKxL`@{-y!QT;xA9KxL={{@Vjox;p2dAD{}Ge%Bd` zIjb3OjoG3bryk{-ct!*LUIVfGRroUoB1fiw52dC4(*qIh4gZe=u|nqi{}`y6tAT#n zASlcILL53Dz~zW*zWPCp!kM-I5wVsJg`yqDP2C$YZ)mOMEunQUben0txvjsEQM&lM zamek}jrY^=o91P{frgG0$JCUV%CY)_zd-p0G8TLY_y&+O(*NfmRB?viqDbYa4gSa? z)j>Vuuj1h&|JfqdR(oaZO0x{@b&vni2-R=OSonDxlkSJL`QKpnHWJg9BCxk<8r;*nQoC7e^QnE{ZfIM) zgk{0oit(JB{47Rm%X;uq6YaHLZL2_(RwcOPKa=j4ja2E4%E7PUGTY|)0Hp2jQM>*A zfsv|Vqc@@4h;_LF%gJ@@_*N&NIhF2zF;Znl&KbV;Ht_d`N06)c&_3(IW9ovhApZC0 ziPr97QwMkC(yC=(OT`5wVXLie`GGB`lC74u_0=}N&M1{SW=!BWtCHW<+HYQ9TT{ta zQ`<@d+m1@M8rrs1+x(S`zbo)NQOWNr?ROxseOt*^P1}wIwz_D!#JN?~wlgOFSB(F4 z;Mc#BUlr|lC9qAeWJ}hz>OD=nmR7PQXqJFuX4D8ev13>S`eHKG`*>&HO# z8?0lQR)5_zXxc5n|Na1VySo8@2cYa1kduS3%_&>l1p|Gg&G%N7)+-pe?JeX7AT7V+ zs4ug3vTED&SZ7-efw?}W^XJw5uSTl&)h7jVvl@P@+aNCpt+Q^{t=e%ruS3tgvMG^+1X&EU@sjMrJCwwb}-Be304$>!+- z2L`q&m274*j0$YgN;W+iS{1_<!=I+Pght+UD$OaQCM$QE=$`dQ|{RSa<=z7l(UucMB4LpWj+~+w|4RuEJnK&XvNjH z;cnn8YKMhZmZ5Z0^#P{pFy>u^aZ(e%<79PBiv{4HW1`34XeXn$0xQ7xFr?sQ57qLs zCaDHdC|gIS#?-W!@|NRnfm_=cGD^-WR%WX{xB7Yblq~3{fkzv=&nPvpAIugsF;po5otGi)l6%?QjXkNlkF8bsPi2wa|td ze)eS5FcmLMX|uCbNxCyq;%7}(X)T5!C!00{VO>Tx?MCEb(+;lVe_yOxMhkXBVcN19 z+p^4~qBT!!+Y@X{-Bx9~tqM@5LOw^}xUx}op^!}XBz>c1pj$SxeeTEH!IaRU{)kYW zmrR~REk_c(a)zPNqAC{hy5PKG&g&?f)(<(=Lu?bucTT5S^Z5sqdn|ao8nT0hLwpe)7!Y&IhSU6C&+3F# zow4w>g)0`S4+u^;)k1R%-7NICFw#P?g?Sd1Sy%&z>f*Op)uR@6S$M(1Aqz(=oUm}l z!q*m31_pIav(VZ?j)iW7D6SRK@)oYQe;5MA3%G8el^cn4(TnsSxNOeFxbLEuP5pqN zbezZy`eN`0UJPEH3~|chrHH@#Em^Gh90Q z&q4dQ-w9(HB#z-5vHdvfVVnEP9BA5jMdmc5eLjd0I${i)2>-JRf z0|N}0%K*DwfQlf%LO7Y_>S~1uQT?W4`^!Oy8L;LfL@mV_|Dj`y9BeC524W@tmy2;N zW9Zkq+CK>+Yw>gtqJ<7IaUQF|{V6+I+E2X=Z49WMYN|0Y=Y3|7Xt5XAUE z$JnZ49D+>`mU9;H)u)Ntssug9MeW8^|HAF6UA=P1^lfzj@B$2Twc(lu(&m^oT?TL+ zd&HP95o@C(n5&=*fU~}!KLCq_6pR7zez{;4U@Mlif@J`G>su0>TbrF0zO~SFXi()j z7RoK0w$Npm@rkyX5m1|T7WP=EupqYv5!+iBWnrm>9TtvSxM(4Lc#yrng^hq;;yTeL zT6cu4tcCp++TyaWn|`^4BNi@N=w^FmNzf~89<}g%0IiM#czsT7l(>B0f>A7O&X2-f zt1hAgE}t64SXgIar-f4iNPUjd@raiC46Z47?8Rr5SKYzs+wCjJHGVh-hwke!oK!Vl zcB&)|Q6g z2B~ipGpJ}nMFXQaN<{~rO~bGC>D|nVG-b^i6`%pCB;glNq(|>thl^@#Ji61P6SJfl z5Bz9`bbma`Jl7bP&UA^huIa|5fQqN-(ZqOUQ!$*1rpBWq6uOdU8wb6SgqmV{sf^>$ zR7tvtr5t9=78s3C@SeOrF%2_5^_eKEFWuX-VlAsfRVAq3io&2ht+5QUuQJj)pcLXR_i&?(ehQjz+;MS`9IF?&r6x>gB|AFNe z8U;5|-FGodXQSZGslFG*h}(Wm(05g(ds}Adx(S*pNiU-B^i+GrI#iSHzhogdKBpc2 zz|Nh{9Njo0t0ZM|eEgn;bTwPWv7%m3Ykt=QjiY{;|j znS-j%C~g&REbI-rI^295#WOqi0ip8sQrUa@)gpD8E82PYUvs=Jqi1!h z+bLcWbQbCTMK$c^>gsFsE7Z2e=C&ruo~ulRN3#4A0fI-bks9XF>w{Gg9iM2MeIHd< zH>iH`1gcc`2m+ZW>d9PGPp)8Pvj;hEMPW*V*KrIh&XCdQM zU!2j%#s0~f>QwZv)bC@ypQ&Yte)Mk0e0HOjsRtpiTMoG!<)5ow$oCTDdU^xALdy-X z$Er7D8g2%oir*sM2)R-5ozwA+iaHP3+n^eM%ESq2CQ|Dc-z5n67%N4ydu*AtV zkHQ=MB@K|p#C}?PcZ0R=@9Q%7)7pKNb}t#{pIoF;8|~9(T3^-HziaDDH2dKZh7pd|I7cLyrjg!eg1U~O^+u$Ayvzzc+<3H+ zG-ZTlmm$3ZsaZr}l~@C)1E{qQ&dt(5&w-k?0E}7>$OJ40WON2RF%5a;nipsIH!e}l zd%Oj`G=CR!I(c((xwj7$YY~|qQ@6)d^5&`Ko-`lHQA*o8|6*&oXR;q(qH?`MxBLIG zL}hfDJ|pnG1vBO+ao)AIDgSD#KGW~`GnMA`n&}VtnfkOzR$Ig|-v+fzHA~V?oHsx7 z+sD3owY$G@sp{8f7i`|oZie=%2Z)6#>1_zr`54dZrf#EujZ#?DZT6K2watUECT`wt zBd8fy|JHAEmug&X0^JrLoauMFOEqlycQi{1m#W2a#Hdn+#;rw%rR>NXAl5!R)4%I3 zmF|_z^!>Y3>rSg_zTLiQp|<@E(Nj>&?JQ=D3owfT?q-0rS^mYlREF1nmS1<7YE|`N zDtpZGyDd}K_PUSJHrn?z)V94IqAlX%x{dcB-plZ9fZ&_-IoxY&7h~}H5L2hm@*i8K z8g%GHn_hUfvY8Y_sl9ZT2-~Sn(9tRjOW%bC{;6eZNX>>Ud3!6EH=!1Szuf?|^o5u7itNR65F*=OG=QQN-3GS~D*t>ig;kBm*Zn^gOl zF=GQpYU*q}g2Ji(8m@JMud>qhlc{FuFfr~cG^rV0wJy@E`E36pYUpLo_ODv5uI-iy zpALwH2VltvUWLJ5W?3T<+!U?F4HR|JFSF=FEV}D#f5vjv((66j-?&_*Mf(R;DMut* z6%UTJhXfTtB~%wQTrZY#1Yz_BSZ(9RrD>s763-$JuDK!{5EAk3#i8DJY_E5y?S`bb zalN`)=Xr;Dyv@pQ^K%THF|++mKUWQNQ|_}dKjP`+Qq(P}#aR^f>3qb~*#xoKg4zCG ze~!~xI@?z(Ftb+7_M5Cw4JT|w?R8D+4PzC*U>!1$)V7;3y_=5KO5zI)x*mn8FBtR( zh^Rf5Fu8USoi0(!&mknW?If~XJ=)*0LbYh6PvjCSiZ_$g*qFLn*VSmu1Nf_}`zKbY zYwI^-sBal6=xu2+(61F$8Cfkh;wiwKX}B+_qdLIe4{~dLJ+7w~VFh`dGM?V2YU}Sd z`V*sSo_cfNk*K;Wy;%+9;>#V^sTX-wB1jp&$FMUtvf*{`05Eo*jeB{9eEu~s#Xc7hXg zR)G_0kPD}fm}hFjO63RH1IGebFvK6|)tJUY;}=MsgM#Ubg1ZDoupTJlhETN{;>zAN zC^9hL7^)_`@z#<#vwrouH|~nPUiYwq;d>-9bZ<;WPuCn(+8_&?qL)*lg^cPZcuMaK zXMk_Ndd76KQBslXPuQW_?Tc?#J=DHwzfzg$>bia9xJglXUFY+|s*S3lU34z%671I`Uhpq^Fg7x36})B{H&FKZ`F`n?7iWQS1LF-5K@oe@ms^@WOHD{M&AO zJkNyXmr_YvlhuHY{eu5CZoJ=}AHPLPdM4TL@MqPbD!*SzdMDYR_-EBU$}b3#)>l!r zw|Q5YNa!d@+6awp9Ie>$Q^nSwDjxo+;?aKhLOZyrzZzl`|@>iG4}5XG&6!ZC=lm11rPS-0QomQhI6erhn%- zBjnjL6l8Ep%HWh*y;5rTPN~!DU*hvc`xd%B9G7pQZanKv`m8r6O$zE-y^ml0GgXW) z{QP;Jsgd}y%76VcH347O_^r>W*YQn>f8m_^He#OT`$Zq4Gm_7%bzb$;xJH;wr@!&< z=%=b*swRDwV*#`GblBhvW&66TX>{BP1$ui^X7%ZT9(P`|zQp8aUJRMCFICf2GC%ae zFxGJ~j1GLM`dmeuzMb)VeyHj-p=j?o!u_nn`!`-x&D3&#JPtbJ7>vRG{-BT5HU9RC zs(u|?PzDNF&4T>bE@HR1eBYq2)XKX4i6n1nt9eU$ju<|;=S>4--jcpI_q(O@I^Pi=gxuV!Ce22mR_UCA$Yvr$uK>0j6OOHJWl5{Z?MjasoA`>HXpuE z{UTCCjFntFkFxpJoy<9tEcj+I9?tc=&Sf?kcaa{6(3wJVTX?B%oGuG zFU4vu56NV@C&@Au*ZD$5+v+bN$p3x&O-CeeLB4+ygCxqPIiW+FE+D^AkZ3M)1yZss zSs#s)PH8FJ`HXR1$1oj2ehXd^nG{o#V~T8ZB|4wE&Q8$TOb46=^AUJNOb3wpT4)Wt zU7t}R&2_U3kB1L3gOwEreGUFuS4ZS#lm9s|M zw#QJL|JR0Tj<^R3FyNA8Lq|7$TSGewN#PH9gAY|ai%Nc50;L1gUo=#Z)rIm}Ri(Uak?)Y~DnL%b-IuKkIUOlkHegtgc;i-iP2lUg%oqKC3Bs_s zNHzw!NXuq9B9B5sMRu-;lX#7;RFSB(gzEn>hz`2|aco7%Wm+~BA(tbWijer1B&is(qS7{GCTBS_DOXD?e!U`2;{8jd z=9B#>;2=`6tou&lq>Y_foVjk0StQnISVM*XD$2r9Hpag(hKhzURP-;SuILCaD=n6~ z$x`&+hW~G)NB=*=z^VpRb02rRY6*uLLa1RvhhE#L4k%+->?gXQI%ZE zA*J6CijsZ<&c7`*i7=GfhkYn?spK*b(vnIV)0UyYcJ8y@SCG)g_oz6Db+Fw7#xF6N z{((8vKhN9#v01|bPa{kXStt0dWxNoRoffC!oK~)fa=lSfaS=($3?9BmswHJ;z3f)} zzs~r5XFT~B)y041Hm^Zb*6awopMP$wo+$YKa>ftF(P)oud`-WYtX9T6HEgY$Q(xxYDhzvZp#6Tl=K}wb~ToFk4%Q-g;ZIppQt|Tez7!PH6 z(PY_xY}%y#F>$0E8NNkIXrVmt@04|sx2?_3@|Rk{7XELQy-~|Cx~69NB(vsM$;PN8 zeOm?7*|otq=%*v0tuq2M)XI>a$aXMl_HypZ0Kl1BuR8bfeT?ytH4!* z5g1PWiV3-SF5dB9CG{=Bw7`Q%S#^Z!7*pAH}`~Z&b#ufe!=vAlXq& zPQs%p+qGmqs&b=PXJjtXUS<%Jt7+M65y&=IVh}S|w68AAY!S$&Ff;bUg-vx;{GU~c z#TDu*m{{bxc&ui3WMn*Mi~i(Hm~Fn!X3j*j&SuUeVzTL6i8D#$GAF`ZDLR+g>5}l6x zTkshU!$=*@v^%+6JDTeU`Draz?w5a;@05;X@{unhVHK+pCw!xgCdfBY2#l<)wumHI zSHqp=D0oal@+3dbV=)pOR>TR@jS!6!O00#j&RXpGCE{f1I7{FVk*HamDXh>rN~3YY z!`f<$nIC4}qVZ<~8(( zPWKu{`6m(8ba?Zu%APOB?h&mwV}<+|Et_*9^GgFamvlxx37&yur!zTc5M?tQ$$a70 zA+yut z%ZyoS&;5RvR3jkBvUYHUC2t_grrYuE8qZ9 zRcvuH*5JV|g+oXYSp!viocvMX5Y-+ni!e-)Y-!{!NIG5*zzif8kHQ=z8;`s$>~I9a zhuXok8u>Jm4tEYvcd!i?Mg1tHBH4K49OnUtr4ZI=2NRFH5lP1@2fT#jsz>1@XWF%J`85jxuk!-EVcL&C3 zob+(WO8#?TjT36?mBJKC&esbC<{qI($VeWhWplRVNm@2*D0vnVYP=#&n0FiIpB;2u zb~Yioj-*hIWIK{8Q6`dIT*tb_Scw zoWFXO26^p_HCE17PD`8DPEljE6VzC72W%&)F(;;|sTQZJz1_idg2ahwLu(FhcM`iC z-tL$wY3`N7Q?fWTC1H)?{yRJ;i{rduF}EZpb9hP?#}iZ1Si@7YICMi|tl=qH9Ga5G z$|)J;OyrptC+1}E94kB}i$hb=WDZZsVm&2!17f!#WTmH>S)|BziWbL7yuENc5DHIg zg>fg_Ia?ejoz_-UGVlqtqS?akT=;*>Ed`aF{e%N@SHA=C+4)V zhUau~JTa$@)n5HgdnTr|v4*E~ahy{cS9FelW9H@E>SfX*QCzlI@%>jwj}{$s3;2 z#c@vQWId&gmE1bIv!?muzDt zbKcun;WeN*jx``E!$a=mS3>S&yCxKe)&x_r@S1>8;?@LX4X+94NK9I@CK#(-6Y!Tv z9Q%ny!I;BqLUBB?CYZAduL+pXZcQ-O@S0HU9whKG{nMQxwn6NFvjyXxXgLzLU@A^9 zD~P$}uq%i*CiX)nC-+19ZBBx@;G3LwanU&wn<10)BCr47*{lS!@|di4<dJPXNWCM^tE$;+ITWOhQPT4XLS zy3Pc%tqJN3nTv@w5ZdYj%&St%qQF9f=R!-o^1aQj(OaIN=16jcLneY-UpU=MRF9-NLde z+`$e#A^DoQA}zw8gOllCBCN6X~Z_VQ6LwRmJX{Sru-a zcSb|`c7pdK>CyZE&i+caZx^U?2 z(nHY<2iuyio(~XVCOGrtAuUfAF`s00QHYJa9kZik?^}Eu1K@HbG^GWoo*%`A}>4gYxO4FxQ z_pZ4}lLMcrcEHeQf%Y-yO*SLKJl+kBh+8=#qFZ&Z86(;BqRC87)s1NEYeTTFa)kzZc z+4z#DhwS88S~kOryamaNA{b$(Hkx4M=e2BVPCgv6laFcH6h?mD43S%TysU?aiAAo7 z9<)P-{GJ&yxAGX}P_f@ng@(F)5^_|XhR}ZsD`6ZCqC%{htueXU?FoAdn3c2R*;b5aZYD~0oH5TK@g16V z@GsN(%@<=EU4F{gf7$@W7^)ohTo2FS$l+;U7o7p-nq=ie2yzUms%#!v?zK>H3KdAU z*8Ho+B}mSJLMf7U*aiM@hQ9wa->{y7qPjjWBi96*^Q`<0>^4k_qk7VqZ$ioDk8e!} zkWD^gx2N|kPU#&ad~eS)OGg4m-$ehsh^E3zn>-xSt+sh0kNneQsCi(6V%$%(4GT5f zHyBA1Z686+u43`@=5Zua=v4tWF#jsKsXPLYF^~AUC3u^hnit3VgYWS&BQJtq*PQO} zDDmn>UWejnU_1)`NOS9y?D!)}9;pf$ogLWEfzOZiN3QfbM9zc1Hu{ER&?w`Os>&3U z`$&rL@3Eg8=U-duwXFFhcn?yBY#!}z&+?i^C|x$z2>(=h+<5I7;b1Nq@84PKT^A_< zZyfJGS?aZq@M`hsc>g`>&6UBgx(a$;A@C=_1*^Pv5ndtIP4M4@{;G9)?ZL$G|Gdg; z>HmI}S2e=rXU#-y_m7r($TWG)Kf zh@8G>kWBf}Q27HfH93~U-V%K3qq%uCs2O}cYS#B6Xm|~%thK9tW$hmLafz?2?aNht zDtf50dI>b8T5B$mX3kTy`(J$7pZSyhIW4?K=@GR3IHbyd(eV;A$BOk|aYVOc{5^>j z5%cGkqY!T)l3i!XEJxp95XwVFGAp2s1eR@c4g?R=vWZL{j+7)zqjAD0B)rINu4WXL zBiVY8OOUiTVVyP_XEKMRb>`p8AI8YIN;az{(!AP>>G9Vg9z(M6$?qcJ-OXs6z>$S7 zVog8}D|59mb>*sj4#^fk{vHXnQE|dm7#H^4Ffx~I>ny?NU@+ZngK%{6GG=AEMftxh z^triBFl#<%t2sR*Cu&#unqcp{v83wz>@+NW_I$~_*QSj}UdGT((Kvy(sWkMTiSo;I z)lECFHvIhitH!@s*m+IiGH%a_%;;D-Ch04riDxc6yw%4=fi<8XuMhhC;Y0b~-T9l{ zAlBl4f7@TV);kd7m=0Y05e^p&@&dqhADbEOA66R->J^m|$p4ez%(tadUO5QyFp}L9 zkT|(!@9anRm%QOKw2pNsr5X?>`^4b2E zEXcV?wk^r#2D5ToT79TYhGKSG)Bi5iK=`ui^pEn7iEO|LNXwC*mE5;(vC^9spOvnxV%$cZ)?<7zbEr1@36Lv}iZpKJZ$k1zwQ2 zanu5D8n}>XfvZV9ERtH_%Ex^pg+!-JLg~AaLTAj0yc7l4h9$4ivNwH2MR+_DI0M}6ap_A&Vxb@lJy|7_RfLAalLUcWsqxPBkCL|G)J-#$SuPT z6j}!ky8kJ#QCtWL+*R8U_O8P@*b#FOE%YKP^lxsXxhYAKpL=lvZ>Hg6@1wPzg;a~; zdH{oqhxYjp$reohNXwOH!C~m$LJG|SUIQ5t>-q>@%6PRQ+t4e}PJ#XQggv?$Zsx-P zec*&l6L}o2IV;X%ka1!n<7N!6M82O~d@1r8Ye#nCdTTDPiL6oEnPwMw0%fuP>?%O! z&(PRiVj?3Z1ZYpD6T)|#go=BBI^8rHwEZ*V65!j^a&EfqyHMbZ~YLWUM_r$8t~ zvS&gbW{re-AtQN#mV>7t;1wY|xfDsSzJ%4R2JA?)=xd)OCMc`nvXK5#dm2IbNM}vK@8_*1FG8-*fN+lyc z5XAPtRGW!*i0V_NUeLf8ie?~6OC;+PuB!Fn;>C>)pW^VyEslM@WwtxUb`1JPx-rc2 zEpm^jR+u%z2HcOE{CAK-D=dFB;8T6GY)+lb9}F;GnAwcDC(6NR1{6O-3N_mhh#R$PG7roW zt{KXR>MXWu%)T56UvWj_1m>_tTMl)*wcgZJGk!NA68v<5^?MRN`;j;G@HF(*Lg zk2JV%!+x46S*q7=qqAMn+06Pt*4cuszs*Hm16>7EB{F~Xp>jVZyv*>RSG2v(W@<&Y z*%E*3K~28)GQr8Cv}|&b`MVL73uCTA?PUrh-=Jj^g^XOSbhgTc88`Es!MOR?KIr8~ zS;(AF2=Wt1l?$fVEbV0qCO@iWQ(dynl_;0F=4&rgF4=koulY1aYbV^yj52QfzI@PY zQYFgYny?>o-8_@{(+u`=9{e>De;}bblKohHBj_?h`pe+t0{9|LLb4yL=bze7FnTkU z=*(XTuzzlEGt>|CdvN5R(c2II=(ToNta3>Fi)Q;_rTLo%O#JhCCjRw06aOZiX={-9 z$CUY9$6>GA%_RN-pZ$>e!$eH{p%^Cq;t&&m8it8~8O6lED`Mi`r!euAd?x(-O3F5` zeUz`?7xy=buUs+l`ycz^vtB+w_!^1d``8bcXfEZv+vfGiewdffAnb?CMU;ul9ut={ zrarTzyI!|A{}pmDkvXlHIO3T&My%Z)se59!e`K52+<$Sq_n{wq%&X&VTkJpinAhGr zyU0KGnAg0@kvsA8r2cU+x{|QA8|4mCaql1Ho@&d>lC04#0@|b=7p7ZXn-kc4LtlDqSRi>fgs^#B9t~uNP z{&(Jl=CS}v{qf|g>e#G=iv4-jA<){zk+acpunff2_ zx_Mg`_+FdS4TlTut0{Qx)&K1wuVY=#^wvDw4U0y?W)V&PH=-K&L7*VU*o+l0K;0ZYrKN+ZHb1>J2bjYlA z2gvrvuqfw3UaU&cO*~m8T_N`fRlhf6{**VG682;n3V9IxjjUu`9o(R_hms%m^(=5c zQYvLs=q~WQIhY@iSzsyTGK?Lxo|ZR2eiJf3%>N+d9IqshljI4={Krl?mzn=5$ovU& zTcPLcMDbQGx(kc6?yiGyV1fKF;2V&`E%FXz{#v;WPyv}gv>t&!&+t>otwSyFCFD{} zMz#=7=sU>SXaVD|-@!!39ZjJ)j!q$iZzJc5sEn=t1e?cx!6X7rIvO-lb z{P}bCw#Di|E?UIup#rcsh8%8zR*?B`ESL%_$#Qng{|u4$n$QHmEPz~XAx3skfj>i*`TKVL$=jP8%@+I{o0&Oz*_|wO4j{*xaspFs z=X_(z?OYi6WMx^%v5;#aaL&uI&Yc41g3blTr=WA^sG-8Fps>QMps>QMJZlQP3$ucn z6=qv!Tj|1V>zr+!v#ql|jY4}Gg|>KAqjs$bYCsD5E?Q2oMO z>x^HBHQ95mbFOvHv(9iq0%|8K{<#!YOy=G%77x9ysr z)5-smE;&J&`JIBI@;lk0I_3H59q+&V&hL6-{g(gXHOSNLR$x5~tY<-|;N