From 138032313a12a22044b84eb776f4826f8df778f6 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 14 May 2020 17:05:10 -0500 Subject: [PATCH] Fixed Tokenizer producing wrong line number and column #6 --- onyx | Bin 42168 -> 42848 bytes onyx.c | 2 +- onyxlex.c | 7 +++---- progs/demo.onyx | 7 +++---- progs/mvp.onyx | 8 +++++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/onyx b/onyx index 413bb28fcef15e2533296e2a29fd93f2a3e4c51d..12c20cea85d1dbf22f3d155297ce643cb8735fb1 100755 GIT binary patch literal 42848 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ξhHw>WU6RrhrfyWq^uswNE~K5IQm4SxdWTobT<0*HeS2bGq9x z9c>cMHi!Ud%SqiZq7CFE!H=Oouo#?dvS*tLJ4))YjX+g_gPna;X~va=it);VtKBxR3?I#V5&tFh#ouK&n~eqWS(GdV?B* z0U6qIl2>#xu32T`flfY@Vnq&lyx^(*JwOkV+2t zybztzk7!39(PWM|;z>?l#c5nY@hABT(?{{gy8i*iEs}+2NX3`;Bf7YcXffk)C85+h zP=q}fLt8E?o18$Bt{5eH-;*KX)0idX_yJQX*$KB1?Zxl}K6&J`Zl_7+sf(88^kEfY|QqW0b^U#yZ*);>Vn>^TsA1B;FwV` zP>*$QWBQ@8(3Wl`n1p(myy&&8Mi$2(>t6eNqZUL_ENeZz>0k#IV3vWF*JBhjKHVMolz6O_8hTeM6t5 zvo2**A%&*Lx_^I`S*OQ)jJ!-SPhZSZ;ow_gn)t9Ijd=&_{mRgm6G|{WwB;=rh%ub| zHS?Ue(!K|ccjIn{iC%z;(N`B>$_qqE^3OemA2KTD(r{@4<#@&C5RwvtRe~^(F%n%~ z0;avK>lja7LfCUY>I!W+uWWT<4pO_Y7Gud!07h}X=fo}VwR=d7^H8IMP4pLp37@Bi z$|n_pA&>{(q@EyM&O?`|n7s&fK`_H5EHgTrT(BgDD`0F|bC^j)<8I|`U{GTllzE6H zian?K4HR$F=`96VOQGuNKB{K?JylQlqbl4zo~lwwt`3bGH2YZhh4)yuV|+nnthu@~ z$}aEYkLVdwlfoW~hS|#1UU8-!Plq}@BGh=Ek2s2Ud(g%(1^IfRfOUGif|kF5+Q12g!+N%Qa~`;3gfrc^`y}PsM3rI~jaSU1-ZGWvic>+^*1~RdGsvb;=1; zd<;7G)RrP19SHuchiPZBhj)(ldF-o!uiFxnS=O^ zd?`9s;MyxLlJ#DA*G@Mr+|fdwi|VagE?&fD!`74L$%a)WWh{s*gAF#i1!Z-c<-@5H z;CIFf4ofA0>pk6%!{^azfH{sLw7yP%T%X84{WCS+b0Oq;D-UupLx=~AG-siG&@D`A z;U9VjPhFA0fN7V{CNW;3xqQ|19Dg>CT!8oXPH0B^Jx2)y-@^n3_hdT($e-yb?G0C) zft$Ptk^d*PG8w9AfR3T%L@JmbI;yh%v|8L>7w9i5f z?}ClYBlvls^+94ZIv8SBjv)SHvoy_9@hmJ>6XA2!Y;9rI2Et_RZrBlO(1J0Yug_+) zr$QfCRop;~qKFn&$70~=W+v|j@)%pQ{(G(8!9Kx1pmlsb`SLgx?-|^P$5qdUX#cq5 zvU}M+&ceHqbU*bQ+Q5;m$%)sRJdi+P9m*D$-?n>G{hjicn z{EyuC(N#t#IsT9NJ)fa5DAu)mUSeH>+vU^nb|pHTI~UEz+_C5`Jk)qfrHPUTIt7`Y zLq<2d?$@lPFLMgI%Z2_}dY+-^m6o<&;6aYu^7GIl!XNQt4{ttLMQ4iJvT(&~Sj3nv zaxv2*&RAf00)0!X{RwX(&4e`0+dZ$b-~kJlzKJOJ6fdArSY-7*#gqC@0bhREEGFZj z&q-@?c6yW#8{I&K_PinRLCS?oS)>BM&aQ1dXaPHqY*0sfbQ)(ag(ZnE9hQWN`TG$d zC>_oNv~QxCNOUkKHVTjsu9T=DokI~J;@yOw@`4E_h93qwX^sYPEUFWntSypdxM^sT zb;1Qhm|om6`Q^*SrfT@PhF)^DAFe@SoQ=C@c6r-(5|l-ksISAbS44JM7=7WLw*VJ< zj((NEr54)u#JsU?8dVie>OMZKyKnhbZ!fpboA4bj5blHBQuOcv8WR%sqYnY=@N6gd zdJoUa(1h(MgNEHw;Zj++p(U^-d;>i?qc`MV&(b) z#VKnb2+^BoH^v9;bkRiiAnJa0Jb8AQK`ChhMVBA(HIMV_U}Txl7uQ?%vF5 zz^*$}{R&<6`-lOxlHm`rxF;ClhCkLll{yOh--Jv0gymTW?Z*Q>W=n7T>TV4G(K3cy zz=ZiP+?ch%vee_NShjRo$@R;OAkVVJzUAd*p8R4XbWurh zv1eJi5wz5^^7@i8MqIHdE~a9+Cmw@mMQKS{T!z9Wap{ZV%UM!V7LR;!Njzwor@W%f z)KIBE#CQs?j*BWSD_Imz*wsZP1^GorOj+U8-f~}lSy{>TMsSg5NgQZNDePaGU*<7Y zx~QmRxu-9f5f_x@FEZJZ6ZZk@#7jLU1INfM2*!}V?CPR8())myuPpYJ7F8@awvb@O zh0FQ^mzU?8x`#1)$`)C?h`>vh7v(SaTBR1mg)+BYj{eF=f0~pgNsCH~N=!y2;BrrK zVO#_`b-uM)&$Si#MSYrhby@y(eQGN&ELz+LSOBwGWiCQroBD&)$}cYUlr7I+w%9^l zP-60|qQY`dS$+|X$wISaiCI=r>?tcWIqIU43Jg|!u@kHcDE^Ht&8-0?h;MD`YZN~| z$WdyVTmAL5_;9AV6`$<{f~`$Tbu+%QX|7Ug8=BWvHYhW$R2IxovXm*xSCuWwjmm0e z0X}`4rp!>LDmltTWtDQp70MOLd}X?_P+6mF#kY<(DU%dmCaoxn;vO(C3H4XkH_>l% zFhB`?^MmUyYytZ4uMYnx{}qu^UjEyRd`Oh=_sE-T7>kENE?vm;D-1Pq?u=Wd-oyz1=81$I*Vn2W(%2 zbOq7|q$3e_+<~+i={}@CL;4!hEbPgjM|wNb6udq3JEYT*4#h)@BBT{a8<5_G^bVvS zAl-*_%X#o4J%{u>(qSKfA4~C6ME}!~zKyg9DLoZ!K>8%oJCH8LJ=;E{BXEcO8q(X4 zo=5suq$vovTCh-0M>+|Q$cm7DhO`0cM_9D)KwA4L_>tazo68h+W4byj#i>P9XF9>zOH=5#X~@efK0W#g1VrC`qPN$LepOP_m!uBACM|h` zwq3bu~jkEFz`D~`0YCWBJh6%KHG?|kI5g6 zad{E=$wvIz7=8ipcI@)KWW?Kktjk{o{G-4#f0O-F6XU-H_#XgYX5uf_`S$>S2Kb{U z{Bt_~2=KRK9;qoCy*;DoLw+i@Afq%jz{}EmOEx_N3 z`ME#)>;e8B;2$>eKdAE`0iNdd`%U=WI{p;!_X7XA3IB?YzX-es^Zhy#o;xV{$7sy! z5#TqN@U1%k0^olSe9+YXmRS3NUx4-Dpo#zcI{z)ezX|*sCj4tUeh=^=tSdB6>GrjK zrsIzQ@54G1FyWhZ{3+m{0)C`PKNr(46Fe7z-;Z@^BgTO)|C&4Op#*!qjY;8idnVQ= z1$Xs+s;3||{oiZ_sl&fv_oTWz5(-kY?nv~e=HBk`rp^sHi&OJjQ|IQV=H{nn6{NaB z2l|3kjeS4d06AHZL)CqGeQAL&E%2oUzO=xX7WmQvUs~Wx3w&vT{}(JE&!>^+(NO42 zmrQ9Zg0A7>&)l zgd$S!9^6aOh3^j7CF^Hxmo^44yD`UHil?Mwvw!2t4 zhhhKuKl1!HtK=o3qpuTbjY!vv^mdWnBhp7idQhYh<51wNiIn5_x`-JTFO}k0j4SlII`E^N!^CM)Eu(d47>RuSlLxB+ny~=MTyA zhUED|@;o7VevmvbNS+TQ&jXU@|H$)xaQv$JPT;cz^NkVok8L2`2%Z(^!Qt^LR8r-7K$ZxmzfZR=PU zjFUmeN2jKK4dX6lDF%HeAn_`)soDVyHJi;Dr6j>Q7{oTsIgk?7@dJiSd#An(w& z;CBGcBZ-+TTTj_p*Aw*5l)ao~*Q1;`pR!5K5P8z^$qL9zehC1_rvz4#zlKT9@mG?e zCEtY_92Y5{o@^)h-zYykxtsD|P~M&V6682~DW8=>zYayEBsb*%8sbn{VQ$LJgt4(g zUdrtxHh~qqDKu9*5?P@%Wiu@7aInIPl)n*=rba-pCZ(99C8_tIP?z!>;z?0S;g*zg z!lbi8Af<}58Law&*_d)GVTP)-xNJ{(7glf#Qwvepk>bX$W4KCtq@k46#4}o@2P?Z$ zYN;?$Z2>_f7+s~D;!AKO@&$Nzk%ma%Bz^s z9hWlQx>6n`buLqXfO=k122LdvzLj(fOgY@Kml~P;S0Z?bvP$yvq{p|ZxmxlHvdSaW z+H@Gi2be=UiBf6^KcseA0Wt)o-el0D5}Ki;s}QAqMqPH5N^ormshG#}9aLvN%R98M zLx?j9k^vJy?)(~6KcEe@J9n|{4TKM~?2k#%NYW|w&&bXI{UF6T9?5|9gc?Nvy}lu3MgBD=`3ZyaFR5*o}eSxFgQ+G%fWdeW zs0E{4W{s|mvz`+g3D#>>dcX*KgmgMtt5Bpc`d`=R4w4?$xjeGiD-r= zw}2@r`8tSkC$A)714&F4I%p|M2_!lxl|F+Va)ykXFrNVF8zI3p7KTz>AK+JIGm_2a zL=V|rj{%b4dJtj~T|1C>xTX`Ui(a?VT$h7pfNLhSPjan7KH2puC{tYD1$Lmz0m@X@ zIKb0fHK;Y+bsAL-a=i}tVApI=X1LP8JH+)pU|p^c0UzpG3ivSBPa$Ers~7nZE_!4) z(zOVXQLY=2AMIKV$}z6r0&pnonyEa1d1Xl%g&U7sX{Y2MS zfSu%;1;}I@x9AhPI{qJ@{V4B`^#U>>@Lf@$blv_fs;+B~pLx#Y#+9Qg!Kl=&bU*?=QG)q`Yr zd*@ydZ4vQ2ebrA_vrhCPCwgq#(0fU-mw55OHf7XDBF69JEJEmSIl-ZA)MB#e*eOt6 zT|vE=DO!Aq;86D*Lp{R->!8dE-bT129sZ$ucR)9}aI*)i;8FK*>v+jJw$2sc1SR#8 zt+RA^Lwx`x@-bVdcLaH#>Lu^9buQ-ZEo^{HTW6i3{COybs6x*bMW}ESVh0KptTDzl z#PL4~73{H4!T$F{g@jnBkk}_waKu6dM=Vru#6ks!Ayjb2LItNGRB#$X1*aiYa2i4d zry*2u8bSr9F;s9GLj|WXRB#$Y1*b7oa2i7er!iD;8bbxAF;s9GLj|WXRB#$Y1*b7o za2i7er!iD;8bbxAF;s9GLj|WXRB#$Y1*b7oa2i7erzuo$icrBB3l*G(P{C;k6`cQs zP{C;k6`Y1p!5KeP&|;y277G=$Sg0_d|4?B-oKV4`U5ha?I3qY$Q3uVy;LD)cL1nQ+ z2E`64iybm3c2HUD;A{m$1_cmmEPzm10FglfggTlLPynH_0Ak2U>_+gVSN$fv4C5-N z?Fkp1Af+k^gjMf(67V4}B8U@&yPX)$t}}#lJx9}p>jd%%t`o>>u2o4`Pm~0rS0DTZ zvHl4+{(|+PImD_$y5ee}I$ShG+mr;NQU7BwunDQe`6z`#Nl!yoy81Xp5<_dM74^IM z$SKL+ATq=yX3F8~ z{F~4zEU%UBqEzs(5i2d6SI8YLS<580Gai>@=81hR|cSBy#z;XW|FfMiFrN)i-g#&n7j~x*_Vl*#Y%aLdPVtnz^RaD{ zcTnBmw3A=hI@e784HfUU(@;euHjxFC_b_f-XVK)JL0k1cQ7oTWuc+S=g;FJ}lgzc1 zv2M=h4SYjy=NKTlZd*k=y{g-K8m`$6!MuXG%M8>p zz@8`Eg)6&LP^{v8OeCz2Qxqqulyw9@Y9s68muQ*8#ol*8s_ywQkX-3Tv(k-br5i0u zH<^`gF)Q6BmF5}-bPcnzsAtOxD9+ zZ&wKB@(FKI-`3k75mr#L{z|4|Q}7hZTvvDkgT)a&p=6_6MhODX;6od@$#D zyu3_U%0ox)bK_;BGnx0xVrk~XpaLjMvL&ITd5f?yG_)3 zzh3LxdaW*VtuAw|vM6emMN#Wez1FPh)GNZ*&BUro+{Y%_x3D&rPp+VLq%i5QkCHWk$|~!gDWW#oEul-@bDLh9D%-}z+hXeO zqV70vqgiun7H52dClFx6a{%5Y=WV7gId9`eFCWkJlf_al{!cdE2W#AK2$2Os9%0HX6r9;YZ*|WLP$u&oEJvWAJn8SyXsyipkOVz#qx>6_ zI75TZHw^pgnJfx@+QyeP%#{nsaeru|U==IKMA{Yk5#y&7BkKX`(??i2U&xE-@@hyP zP_#YI-Iwk7_HTphgtjC2s_GT%Qmx3(@uH=0}UR`DtXW)ImCi6WSCim%D zX1zy~8N1?5{yv~?wND@U~T#MDh$<|ChPXqNPA&o{Fjk&C!kWv*) zsT+h+Wx7)3*gWJ)RhaEsp&Nn?lnUY4UanJxs538f5|_?ZIwVxOPN3_Qai>YA66VG^ zqV{Qe?cdRBFA=rZu}&$m(cQAGvzpITC2Xc*>q{rO{cI*~-8e4iC0(3th-}Pky)i!} zubOS6`+i$zIhQwE$n#F7KwX^^8&yFva4r+SScn%hFMMW^EnBzx_Lu)>h1kdmp4e4H-uU+ z$VPhzXz%0|#6MUxuzE79Eko3X-g$=9-L8`J76|bry7&S-z{va_r{Ei?D>9!p7E5^; zeJkUq1!&x(WbF-Xmpe(w6OV*pza1p+ET^EQ2OQ(8>LfjSTN#&6>b9x0`oA-lE0U}0 z^E&v)H#8H$*8#M3HjJ-BFegiO<11r@Y9(tXsoKnB9Tc)Mby;7KEYLSgQA*ZVNV9c} zev6==r_*O+ZGb1nCHb|C{suumL8re-(AUQ3YpG|d82vOspQF=%L(o_0^i%I7 zdbdiqR&oRSDV=^iz7ixXx8sWO>`u$gc2TI?pCR6HjF%P{;erG(1PNeU&} zY)+F{m~qvJ1$cTeKmb6*0ZAFEJvBL*PKgF&iE?J^)n6iCdF1k`zDGHEL7b!CBhG;l*>3fk~UWLUO()d=3q z$s-Cg$Rc^e?0tV1);b5FUggx+tEF zMdyw(_a^n4p>xNWJNFX87G}&IK|MM))`@P}>Era85@UTPdUL#RBjFIZVPZ8Ul0#$) zEd*|&*>@%xrJ7uGvQSs>Wf=)AUOYuOlR+_If~oPipfoyX3FaW1(oHU>{xx+VepP6T zZFcP32HRS5>YJ(>g4O;U{Jl)yoY~@!XVx|abJo@e+7w2DKmM0fTUFJU4Yde zY{cig4SxE97gu0Y3qH-oTA|Pv$<_WEcwoPq5gw_pUA%C2k!`}jx+eR+p-2bwE3*8?Qm$t!NZ}$w(&!>rNLDknC*a&g~7vhD@{zq>(H(Q z-HjaX&~o;hC>+{V{bB51(H7V<_L<00Ac2%wxJj|sfjd_&cea|?~Np*hyTlmQ=efZV;B2_Hg$i9x=D4^u;2AL+A)^V z9&o&4%g?aS%kI?C2}F}fKTi75uuq?m>{yu_qp%Y^f#6QSUqNc)Ly;L?higl7wWV4p z_Z2=^pLNt;_x+W*heM1$8^7uqhc=E<2YHx{)$3Sk?@+V%2XE7^4DQcm|4-;VvNHGM zAjEw{B6HWX$9|Ody&uvJ@6}$_o)f?)S86wC zD>ZJ1fJ3JHSI+$KEJ&AXH$02<6{Obk;owKL>lfx~3vE*}#P8t{rX($AY3|{VKN9ly zY70Z!FHTY^l>6-aT8_5xa7er1@JIVs+6QE76KJsT4zSfY_G)AX)e&&)een11A9)Z3 zhlAOKtY9M>G7nB%;J8hDKNvc)=`7mBjrFW!@7a$JGw4P@51&1}|H?CGkK7s37QXTe z?R_*rTl)U~b=tgK?YgDC@7OnK*$XG5E8c(bu(oif*8P**FP3W8zoSi=47~tiiahIB zkJL_`Y}f8*plcj=L3*b~lcG)gu7KThcK=mc_F1i{NaG&Ch8zyKmqYH#9PR9d*ZV{hnpnJK66-dq9iW)7-EZ>?S1#m`*SfXl#ZWn2-F zxkDSTz4@2JhuHvG={SS!TvaukYb1{=Vkdw2S}I%H{MCxDtq$j)tPSF?3>TL8a1_Wo zUqC5Aa8OR?gWwpCR?A5&J{-`(&Z`k;mtaS@vZ_9SKYa{-$nnuze+U)uKLfEpPt1UL z<;W_}aNLlw8VMFh3i)apDr?(}1awqPyhC>^2jSokA-Ascx0+auhZ50jN{5j6m`RKk zNDVxeW0t7m0y@mb*V1ef%Mko<9vFtsb|HJTRj&85w&PEhyBE!z$=}L$&u9z;oBRuF z{Z0PX`YIGFTdV38@;`^}o>A+bQN#X<^bDLm6Yy6BnpUYSqik!w$tk&8(9kw5sG?ta9F4Z%hn zZxagxjl|Nbg-f`%;4ftdTYPIParllw5lKZSWsx8lsg=c#yqkO!t@@fOahi;RKZ=c8 z^JaDm4gA(1#BgF4bp-vXY+e!TbLRY9T$?zN$G}T%>T@=d^k&Exi@R{79_a#}PDJou=OYd&W-boT|Da1>cJMhOf^ zt0;4n0xvVBuefBf$9H`h4n0#$pt9?AYv7bEtlZ6Pv1tqVTPWY;-x$ytuJ?MDE%NvZ zJXaSk(}5nG%~$3tTy|Z4QQ=~CE*DgWwk?~K<~CnrbG2Wge(+%qX{~Ik_2Zy4aky7o zwGYpCXwcxE2TZg>Ds>Z8EvhKPX@2GWgfHHIts8WO>3A|;1DnG!o$IK8zo7xPDTUva zukdMw?h0P8M zUKkI?YN+~luQp$0LrYyHCPD?XqJN_0Ys|U|Xp9sh^~&_F zDO@IchRp_0iOrR0m%(ma8P+gaRTb(A#5|#@p&8K!>wOj^=>4~$4sBpZ;^|s)AFhn4 z9kVWLTufoseDr59<`3iwQU~2P0np7=N#2MFZYKTA;(f}UT<2qEGSuI;uD->D)C(Kx z{7qG?m3*>fezu{tvZV!{%Bt5%F%zL;Xu?%#p<@Y~gRND5#;My~3~IzxI*896%Sx7c zbgMD1*G1D9k4fep5G&UNo2ml!SfXGWHm`_o*g#RQLUz#wvC-Yq>R+$d&3rDu6o-b! z^kFa@(z=*!G5-A@J2pG#Vvo~$*|C3A9v5y`0&(F9`uEgES#~8+>55B_$LiRnvR-z@ zsmSk;jW|2rWR~AAo8bc#`JJ>Go}|d{sm<_Y{kw8AJVnXHi$m7St_)O4@rcTL*_Bjf zONq;Nrs~3)ZfTu|Rmy zuE-C0VrY6;kf8jzHwNK3Jf(y;rz#Oke^HU(CoJ%B0xr)d;8O5?GBPUcuuIs1>Z5B3 z{;6^7-v~I#m**W2EnS=NPgVN%<8Hv?>Hlp;KTMGyoUIWR9|D}@%SQ;$qDC6^ZW7H3_X>LJ8(;s?4?X>zG`u_0 z=lV~;-F=`qR}>G7+)CeZ7iDr%73(V*=tQQ!^^>*{0&ab$aFT#qUp}29;MUhemk7A^ z{Q+7J$Zpp6%xeVP`a<>3@ODT%JG6m59qqNwC)-$i`_7-6nf$(n`#S6vPyRhZpCn=I zxq|i4e&o;*^3*Qt3u?#up?_Dr3*Z`)OB>ptruW zvQWUSFF?}^Uh(X6GvH)@>pV}N#gZN5vy`WV-NOCIc|g!x-;mx1xG=qtz>~v*-um9% zPXQlf8>U##(KyNIO(Iw!O7w>H6mG_@&xQN~H!sU~jOgQXYM1qe!I1)9D&_${XH%vM zxb;JbD+S#8(p?FI3uZ%7CFrfM$8HyJ>-#(|z|*n5L@euUi)hyxu})1Bb=)E3Sid@c zfWZxli0o5BzIELFSje%y&i`6Ja!w0+>!&zp1>E|k=!XJckj@p+KRU*O63;(}GI(mA zH?t=Sxb;n0`g|;&oW+9P`pv|(0&aa%aJ7J2UqAk8Kk~mJ=&f%S|GR)&U#ETwaPsp$ z_80WlR}J3)+}*bu@duo^KU?27`$E92uf!)K)F%J8zLz;lz^(70O$U5@oO&N&e%LpD zrnr2NAwI-wTy`X3*9?cXJ0;N-sSO$aIe->PxslCo3I5$xArxy*i!LT2OAslXvSwK zVc()YU?Qbm9R4l{+XUr%SB72o*yf(9&F$vzqWr~kKF7lNuS+d+y z?kmqPz^*5F@uo_Zuc|G`Yy`Xb{dsv;7ZnyP^3BSgm3^6hlgYPKu*cL?)w0PW`ZYTg+rn+EI$Xy=2)yF>NqWMfwgxY{P|t zXoJP)XAc{Ev>k>=dsTJod^PwB0kMY6<{J&httb2~1pm4ih0#Q8!vVUs(ax7elAvP^ zVLOOWjc?S(-Eooo4PsY-?ZcQWHSauUh1t8Hv<;u7GSvMqAI4i&UDL!YKvSB{pp52jbJu6Z>WjQKj}HN6~%nf^cV~* zedYOlYunnacBCz$7N&-|a`vYjq?&9K*X;3RsK(~?eTN_O8OzQnwEz!u{Fa{8EdyWB zdxbXtWWDB=3n>1I2gI4Rl?j@h9QtZ%5EQD3cOQ;7zgl3l&2i9Xb2DIUNu%z8ZYqrE$0!3SKc zzoC){MXseGpky6iFaz9e0ZX+@B2s2IBOq7iL0ilRYGfmWe z`4wu@TBV}3czsfXE@LTm4U}ZBh z)F+Z(?$gRto@XiRx3>Q_!CxQ*%KcoK%JVddA0IYghnQc|e&0Zme2Vm=OP(hxQ``ZY zF4EO_g;6l_%l%=Qx-AYXZf|f8$FI9A{Bj>zrcz%)uIn%1^trCFetG{V)3uW%Cr@R) z68aqrzdS!xruY)YbXnW~xZs!lC-<*qx-ki?RU~GGmRm-fk^G6NwHUOFI15J|#A9txNM0~1L|42cp&hmcGjC9ftk2-W}+ zu#PcxV!cZJ(~7P2`ohxNRuRzR6SQh$>w~t`MhiA{u#JkEDw_Xq?Z=rjXC|%R{qDc_ z`+uKDnZ5T~Yp=c5+G{_~I_KS7t0mXI*G)`?WsBk`zSo~V~6>dCZU2qsghAF-i-WkNr5x(qnFWJ+d>x;K|+=ZN;W7pXOg* z_55C<&BQd6zz*h_bUoZrG{Sff)4FPW)0{%YWF8niJ{m}CZ`d^P?Jho^13+{LhR{3`J8Dstz!N}Ip6sj9Jsr!AY6mVm!a@p{|* zl~o(ORdpM@HI?-ZN~^E3p`p17h|0D$U#p)(8`^xn4N9Z0u?iI%IYpbl+Sl5uR5diW z`IP1sUz1YP(pul-uR-0aO_ko7`liZ;`s;mEt+9EdPiX<~YNh46)_T7WG$a|djy4)A z>ruPa=TlY`7A#rnos~Uvj-HL=W@TTbcnivkylB{0Ti@pQwU!kvZD?-tl~t~9AfC02 z%}s)*my^aNq%lnY@zg3x5|&^p6I{h8r=ct7n>)Ji#Bfef_6gX?`g%Lf1P4VqFt&ae zaep3Vy5#&U`(=-V!{>{6Si;u{xK`p~1QIUGE))E@xtvdy3I3LV=bGT}3;28!T$#uD z9qT&lK!UcGzWtPZsb!Ciuky{(uQyBH;T>@LB=iZ-TcA_+beH=z(*P20|xkL1ALp1 zhxW9Y2DnGiCjmzDr@TrGaJCr|h&2W{?W^Rq&Hy*=o9hg4_3LH>JXwb-O2`1GJ(s+88Q@qD^lOg+E~a>fd%ys9>ePy|&j258fbTcJjr*9x z1~}~v<#p5mr@gAYdJOOk2}J7YIIVd)6aQn0OY!VH?6(Z|csicbo>c}f`c1w|8JzMu zejVrLAxGsp)KE_K4&s{f5|ycoPxY|!GgPLoJ$0Cs4^Wx9^wd69{x2$%i=NuU$`4VQ zy7p9vm48TO>e5r&Sov-$Q&*m9VddMYOkH?t9V_2LW$L<9C9J%i%G712@>uzLDpOaT z%4OwND$`Inrt)=q0FwC?-vALyVetY*VA#Lzoe|NEAg|buy&WdgC&bRQxs(|V^qFNIpa8Y8DSPZ zh(0LybS2(PeX(G`6Fli3gRc2&9`73aHG{o1*^YB*$EhgSJWIV2DWiTp)$6)wJ!3QN zOVsx~{iW3t?Dss~cd18x!SmXe{!B3ZsbH8&42R;kZP7&VQ35%hjz!-_1xN;YQazoE zZb7Nf4vX}8@bg0AKk{9QO5$u&aDDVFSVA8nzvfg8C@2Rn%k>1?`#ixwuP0c3ELilq zr_CA)kl^^p2-}D5J^tHpmJwf+?r=xv9*>XK7dOOQs4>~z%2}s?jO=rL~SNv2uhP;jGN;zWnpq4BMRM_=kzRiCUBpD#_`l)So9wFD@HZk$iR$KJ9e%` z=NxhOFvX;(LH9Aw5qB?{K`?Vc9hgd}!mLVi7_18I-TiS|2&95LaXPgJ!%ngw`EwjQ zpTpyDzPvU*bSU$YSC*z&YC0cM^)w2@6dt{j@a+tVrkJk!u-0r zmm5S9>e9TRODWY2v^ySmKZ;UK(EX^6{Wt57rwP-?6ER1K*!RCAVogW;ql#nacucVW zd-m}#r$5H05l=^-1^(W9>SZiFo~}R-$@PSly0XogX^Aaq@kr5 zG>V{kUeGv^n?b<-ISkSybz;!P$($EeLG~)%$i-IQ0NJG0h(0q0t z66pS8L6c;pp`9IQjtQC@1XL(nV`H1`>4GC57F zpve$49Y&floTfz3eDEpPeZ7%pET_p9G_MGnd?O8oOd(IIpm|WxxQsO8IL%)tffV-H zDQE^0sj3(|6FALLK~pJc-Zs*l!)fjpG>ZhylSZ0zIn7Q%Ge*$tHqy8_O_iYe_!F-C zw~RCsIZeKxc}>t=iT%j5M$d(R=}Zqeou|XSkMEdhfB3(#9&+hu_|Y`pfQ^z|euU^RV88u6m!kA_gJuV4XfF(! zeY7@UvyufxPCaPV)m=ErvGWa;DakgMQ1&oLB71`Wc`Y3~f37zWy;0e7>TbexxcBQ; zrai#gKq_F^CU^J_t6}ZmAmYE?#**DulW9BJ4`U-BtjspT|5nF1MtfBB?J@N2G;Y@Y zY#Z=Ab*k7M>u&ur{G8nSFi{?HA4S65`lxR3f2;J&Ub=MITspH`FU)rAsNlB*7m(bY z?xUokRPO(Qz>b|a@rEFu$wR}

Sg;{Ebk!HWaQ7g)2khYeV6yL*X@{aCsrAJ{(;fL3nV-K$c@?7szm9g?@n@$R2ypCOqe6_f7-g1s&b@6qs|y*e~H$bG#snApQh| z<8cM|I5)-Mc44!I?KN(LZeq7VxZjhlKI3@Iz4K0o*P0{4lnPmmOz13!Cz z;pGjX!!X}b&!_Lw@3bDzYkf?~zG2h^(^@02P=4Cep5RLW^Vmgj;AZ#PZS7~*ZL#6^ z`YoyW&D&zf?^RoqjDe77@*GC8ARY(iGc;ru>4^W znhCZK1p7f39!++KMd!QE1Z=2vCY*tFZh)p@0`E8+c$=-sdOZwygsIS#XkQ6CK#ZZ+ zfvAYAhW>G)b}un~#{Vag1tW5-0TDlnu!Cb9ai4+qgOX{d`$Wfp>UZI%HK}93;=dq# z2}r0t#F&aQksyc^hU=W+ex7)#grx(<##~q8ECGWnyZbuJ&&Ws_qGJ@xB5p#6j?*p~ zemmkm%kJ1Z%X>SE&Qi_bt28mtsut-DP=iUJAEN^Q+yhTBF+fI5>twmal-wR6J@BOl zNwZ!@$3W_JYgpWDCjp^T2)7gno6%_OO6))Zjyi~)5~~!x5Se_i4xfii9@eMuSY)WJ z@Ni_75K5yAP$4e%u>+4mCMG-6wC}3F4i3WWNg?W-zD`U>n}xFtCjfLgrW;1+Ku!`k z1Nni);AE3MTZ#slJ)>=yCv8ajdV)ngg+Z*5tSOAiUexZv1au5mdixZchbfYIRPm>P z26WUdPByS~1D1dzIAQl4EI$g4hrw~bd966&?qf#8#<>%wBvGltYitTcW36Oi(rDe6PiH$VbqnQE zmk(~b2D!oZ(==Sjg2AF=WI&jr(+wcCd=YP%hjh^!qzDFNNBc3}(6P8?(VaEc6#Z-% zahrFMZ&E<{wFAT#&DGKvqgC28QGe$z29X)}f6W%`g1_k6$*j+F(tB{6=$i-lLvW@njNYW^Fl5W@mvk&ztf8^z7giQRMFBw_9AN-u5L}OCf4+ zjHr44Ow`^XM1{M@6IBYy#i4NnwU6}K-(}s7@dc5w=IYKUyFA7p(KAsh1>Lk8W-C`` z`H40v-0dnFwa!uO% zj=_mZ#y;K$!J^}FH0&gUx7T&FA6K^cNaaq27OnE*>Pypl(C`VEoQ;%ZEH4E9(D9S< z6P~Kyc)I3bD?wu@8A<`zOF;ECw%z`9-w{Z`*-dvJ57J&_An4?`mr({BQaF;xvEv5@ zH^F!s1qnKfPLLkl2wN}>hHqdEIXm6QaT{U8t^*b~Ojk=mdZQJJh;7iNooV@*)KXXI zlU|_^Z$~JkM%;n9`!D+t5AC~~XqnRFY9y_2elc$5V*f_I6h2qrI?KlH+dE;|2wTR9%|G8oj}Wp z6wul6jLQ1c#GGxlJv4ZkOv1~!T&yy-pGG}i`XjuS;w+^2Vb~~o1c!mv2Z_<>s1UJo z2>U-`Py`P#fiaQ8<>brbxp;NNg-3P=uBD)I*F}C7$63^hq_6il1#qM` zIq|f)1|$%e?^mF9IKD#9MJrT7JC9)CIrx6eT}h{VzwY~={f+xRY-n_nqhHPM`3#Lg zv7yub9P1L?F89LQm2f6^E}DqCkSs`#iL_Uw{I*PP6gv^e zW5GG3i8Ldkbga{Th>d#OiGAhR;!!FvBsWl@GjBY9elQR$ zq1kVslP4f@5|LBXa7K-R1wC8&HU|yxy%3guXLvd%E^%?rnXo-Ng})>Nf)W?s($S55 zC_I7_8yQFl7hAL-CD7z9P#8Fb&;(SEDqpY7@7QB*K!)}zt za`hy(AK|OOq#trTfZ3A5TQqw$L(l^gAt;PF4tdBn#W@ZfSmpb}*ye$&GoW?-DY87ioW_ZycUCGMhlasC%88z~Dvp=3M@j z`BxMK-^wq~$Gdq`-X6tXy_-Sl>ipmr1;I}Wr_oz$n&;^+tbK323En&3_q%5PLB20n z82qd-_{p;1-}47Y9`|%St9lmvG4NMyQU0Pg@!HO@j0#$y+x2dJM)vpBb`BZ(4;=?yqN=d@T&!H8T&OHk)+t-?ZR@ql`HFWktqF?a8fH&M`_=VL^xGWpQ$n9{;d&gw+3on( ziGP&8L!^|K|Gtm>{i6I6r0eUl>y*mY))s%OYvLl;s`A1@WjVeh^Hsb2%`W;X%vFPu zYf2kEWx#i&b@+74Rf&I7h+>1Usm+y@PhXr>`cbE?rLxNBg7y*gv}C2ZY4fJ+Dy0n{ zlQq|51!m5j=32DKRqxOCHTW6{s!VBfU02!W!dGfdtY&?quPvKeTwmw))>XFEd24-s ze7FX+G1rc>Ua|-4^laqkyf!#^8u{wq3=WP&eAkck5XxJAJ2-eD%JW|z94th71=0qj z-$20OR-|48s~$l*0-?Q^k>(>kjkFqRDz@a`M|vUBr;!#S{QzkL(rJjH-imY+(npYf zf%Ijh(-Ag4jkFYLDneAFVA~6kQgFQx>35MfAT7rR;Z~#%A$3%(wC7=#-q#ANK28XVuAHx3x6R}C-y>x zNZm*qke)(%E7F^A862EW z1mcQM550gV`n+Ec4(6g?l{Dw_w9LyKDc5P+luO56a>4A$lZXY?Uxt4k@I~|bMRnKW z-(~OFh`oDpyNrOtmX@b3c8 z{7u@YCQ|Wejez`gde}!IuJm!^V;D@Te5cs|Sr2bmq`+%qC?|T2YF!s!UZvg%a;4d}euaDq& z13w<~+)(&Kz+VDmLH1=JoGK;dkly zxNtmEl5*r$M}c}lmh83P-t36NZ`JX~f&UWt>?rxB z>GGWgJ{9XxF2;e*-#Xnw43+^j9_x||>ynT7FG+LWW?7P!`5mh}&DE8#BrWUKL{D1o zO*T*3{Enoew7k}|`T1$N`Ds~8(p;be{gO0|efLcVQ+U9Kn)&+r+5%r&;A;zfZGo>X z@U;cLw!r^y7Le!9$n$1sYekn#>FYbXJmL@oktjc(%i;7T7hUpP8~WOcE_v@fmKPOy zz76d|>5}-5zZ`6)@-DHN!WNEQ^obH(*lMxsu)y=^5#l03z!ZVc6lsP?WrAA*cI6hk zSSt5y`$T;iFF?qFU3dePUAqKh3Ev|Gk#Y}UuT2+TE@zi)pWXWdBI)oN7t;^TF%Vw3 zV&!#$AD&7{JmZ7yD=TLUJRVB2at?3ifBaXT`(|dmQFQc8BE3_j_lxu~k-i|(H%0oM zNIwy&Esb*?CDQXnI#;C2MS6uuYec$Hq&JDwEZ@H>YbCC@B=Vdjc`lMX2T7iLB+ogL z=Nid#jO4jR@|+@hE|ENkNS-?+&l!^E3dwVX_T z}v3Hztdrr_ljERBMce*&;Pt9XqRR2#<@=>a(uOgHB6CgB90Pz~KsG1dXg~gIY z(O64DQZXf3(q)vWwnTjaVnMEOLr<)|CYPF=|-nvFs)YYrTZBV7v*8(Y71tM9mM_FvPl*gyC~ocJ3S{ zA$u2L|!qHS|SUo{ADYBFN1&KA55v(VIaqkcT0`p43cptJU!@<{?aN8oxNvWR@ zardVHE2%pHNVuIyG$omc626-WP|7>VY6*`u>hzDl!{`?h3Ckxa$wZW}-$V4jL^e0k z_6pG-0sq7#Qd~(L0kiPDX7@E!i@Y=S8KOxhn#@!j-Jm3<(08A%)ZfD1v~r- zuw-JLn6?R^v|I3#lyC{4iOvCVaJ+&a#jy)u)v*>;EsoUySRGA(Bskt8LPsxXY>qB) zNpiSBqd9JeP{SN$phITj;-o`c@!pX~TGey2Dd0Ok3Pn?O0$F$?)D$0SfrbF||3 z0>_hpOjnZ0GKovy#&61(_{mCi7XqF7X96!LQz@y-D8GXFBXfa754nJoo4FOGze1iI>q3aXt@hEi%KGATwPVaTn;+gew6VW_5{aH$4;0sQqIg(4AsQWKnI@ zPg40Z`(ThYP?cIR~Ju|%#CrhQl$*|V$kGDV%jVdQP*zV7r)iSa=@9>h9r?Dq}y%at&pvIo9~KL~iNM8-2%=F9z9vO|oIuv@Js^5q?3?J@V7mUU6FtX?9@skK zFVy(+ytr?xGWtQWw>r#fNT$7sITtk)+r$CSi0AsCMc<&EZrp|8|wWik&jurJsISEY5{qlrF$9I z_p;LrSEndvMq!95cYs7p)t_SfLsPYRj<=KH|GQK5E7&|*Z@m_cCRAX1XYHbFqGr=N zNDe-MCs97(0yLj+YzeX&&E<)cEcYXC)7tSnEQzv{Sr$3P#^&;2G?&}hTt1BEa$B6a z+@_Jj$u{j4BuVe%CnYdnQJphb4l}&UX84o<=5m$I@F_IIt89i(VpB0q^D3L>6KI-O z$C8XGG|j8y7y(W5>iBN~n%WN?`2?vpwZgRa<+Pc%w?H>lNg%BHO`7*oU%+}Q2;24& z;Rz6`_K&Dj?LEjR*lpAw_Pem#btnl$uU_9yRiBTvaRWV`v0n{B#ZER-?XywUq9hQF zx@|wO3C|FGJ1tmgXTi&ah(_(22y7Z#;?&y$$UA9?Q@dv~_O!&Qx089mo`}@%mJmH#;?&1} ztkXYE)>NFd#HlQwpd=8Hx_=wdUxXHysUN+8ykmoJv!b4%tl~UG@_bBn^OWHofSd$) z#1dpKRT8L@`pG^(($9gYS*oVeARFngT(79ZSYFBKB@Voxjl=_WDina9Gvg`hxMY=> zXJ!P67cY#@SWJZ!wG_-;@KPeTY1Hy4YDY~~`;kw}1LtE&AD@6jJ7>UpNuN+hD9%Lc z{?EyuHRqRP=ChP{I)6*>FDResq_@eEzNEa%S%Gd%8l-$y#<$RNlA=-}H{&5HsH`wQ zV>5BGutHwO5vrcR3Z9G{!X&anNyaL|*jQmr#&T*=Q^&*c)@8gwm}He!p}LGrYBN&VzoWaHKO zDBPSegBVOvTR;}dNFck+P{~1dWu#Ccn-%tCjG#geD?E@fh6=f?urI?!g<0xtsIx!g z6_RZ>lkITE->Gnsx)|*|r;L6B_D{My?MpPCnY4$Lbj~M1?xn2aoJwqdNa||N5mfPh z($2LerJZ@1iB`C&c4YmEc+dX`jdQi>b|gmLE16 zG}^bR&0!b9!rIL&`yZgzf-Kty;$dS+kl`QU=TT6OQIdW{6(*qWuyF*jX|y<`MmA*0 z&bLv|&NgKBUBIb!wjr~#4Vj&7$n0-{U!uJio@ukQ4Vj&7$n0!GW@j5RJKK=i*@nzM z8T590Hrh+GvkjS@ZOH7~NjN*(klERW%+5AscD5n2vkjR&53P*0vkjS@ZOH6wLuO|i zGCSLl+1ZB7&NgIrwjr~#4Vj(x4HNBbLuOx${CRe^A+xg$nVoIO>}*43XB#p*+mPAW zhRn`4WC>)MIB7$cyn@D&#wM&}4^3E3C+&xm3+(vK zbW)G-yh}+SM#-0*Lgle8FtZG!PD&-u$CV3x=~8!Jf?gVz1Q+K7*6!0=#w}yT`+=v; z)_509)5$au)81nOy#!=Qp#{U*eRj(P?9(j6X&$w9@7p?_w&a$PPvMs~L*r>}i;F%0ecLa_(sMWK>a_cv(pXnpGOhS%kJKu6qQ{ zRf1+h+vY~a;-VG7+P!P*`1eVIiR5tB?$5T6^N}rw-vT_f#s)?L931(Hk3&)QR_kIA zzdeid%SN6qb@yGMm_%EYTdkC}bl06X6V_Dkw%#hsD)K>$NjE7xp}q$#fG0 z=FA!ev;BfuqhR*)t&`Y#(`Y4Mv35VOb!rnNP@AmeBbM%UQwONnVx>g@Te2x^XZcN5 z+tOV)wT&e8i(=W7dPNP0LWz>~JF-^=tJ;;zWqXY$u-Eyp0++3V$%aiG*Rw(}SjHu* z5R&Z|l3gVvtK*Wb6_Tyvl3gPzuVMZ&7i|o)W(t4d!mbk(Yk4OV3G3ukC5c4Jnu8zJ z!#epb5hZ&}7y2lWTxd_U(4J_aJtm@=E%YiWG?%bgmoO`ZdUgh*UZ2gSU{BML zRd-*3d6f$@BU+dl(Zb9y36mY&x3h#WqHkx5%4O$WPkp=0`h>88l11;@sS}xL!nDc6 zbsbM2&423BOtexS&f@x1P^}VFq5@uRh=1~%Q}f|g1)d&9x`&D`@%wF%hFvonR&k~mQ216 zRA9xih1})7v^250bx?p-cAG}~yz^fqHTo?X7xL!5uebU(sCldX(XIAJwwsZ%*gU+^4rzXqT;V3VmF?D_UE|wfM8(w{A*RC2nX>TF&DZm>MEI z{=&G!K1x;rm5*C!)>|lA6LTthy-RQHxYUia|6@d4KXu0u#-RHGF6YC#xG8B;+#`|! z?~)_ZIFp!svRJ~|za*u1oe(US2$oZz%&S8BI(XMKYW+Ue`j%;&CLOBKrS7JKVR+Zv zCt4Si(0$TaymeX3r=0wwtpd5t%Wde&q(>V2f|dTBo;Yd0x)H7nmH7*I%pE_L^E1e3VIu9gfY|AkuQ72p<}-`WVjQ8dq# zv+|r6fxfNtE0_E@gDWBoI!M4`R(^8|7bGIkTRMYc$zXCe`6aKQ3sj=>oAx>>xPtZI zje=h}XA1?Fjlfu@TmKbuz;SjfME#PXD1H?(hg=8hPZ%S%;{T z=dmV#Nw*BRp5Y0a{2i)to6Zv|czB!h1e-kWlk+U^p$?5p?v(SG6S1w`UUK?*7UD#^ zFD}J=;biNkR#Wo}1UDLKH0H8)k|McGs74`FsV>wt=~AfNXuIa>hF}9FS2(tZ%akkH z%$xiJYBN`ev|orcQ=sdViE9Xd0dwOeqV?%|>yPNIUm#kqW1Vt=g#t2`?rJ_$UBG54 zw!UPO6FL~XE$4AQ&*|(^MoMKIx-zelS2-*cTA~%3&3q2Q&olMA{Fz)oL`FIw@%5rkZD7u+thK+XH1X4d zF|m=TuU5%<%LV&lo&CxTn6rvg(1xFe0UchC3cOgtx6x}^ea4Rt>QzhC4p2`J{KT_E z*sqiL(TnY%5E4wPs+05(Pnq}-iMvXr?Zf*Mxgfc^Ja3`?q=sf9xP^(+FsTlkIa#Wk zR2eB$D_IXxS6s$;y(oAI2ZSt12>KHJWs;SWbqz_joY98_{Q|x1d4hhqPCrp4Q!HWh zje=hEIQZ8J`Xv$iTJo*MjDE48&(ZncCFmFH^cUPt^qa7^_CJev^tbs!n8PDx8ov8Ihn8?KH>a*jq1PgYV= z76XL&MPy-=1P7pqmrzoG5oX?Fb(ljsg&Lv~0&d5Z)9U{d86)7PVM}d)$f{LS4V6YJw zj+p`uy$OzR9IrJTJvEjS5%Y2J8orA+JU$y5kuFgpp?AM}pBSyldItR>J1B{Fkn9h= zgN8*+!#gPXe6*Qj?4{ILTid0r)1o`g5#3A9=sp}SJ7$FJm~_2*A~U|I4(X_qGemV! z93}Ka5vG^Q!uaX1HaXiE8bV{^*;sV$xai&-AJLt9Z9;VCoMbQk`b_jDLSxKPAS+crPdG#(ImBckg}_Y_&5GjrMy^q=IaP=&2(yfYCNG{QoXH@V zFu?_SErX*$XgoO;B4bFA$cTGj@GINN1J%#d?D$n7JRa33YEGc7HK)F*sv%JAQ;dZi z{Fy@U+&SWJ7S=Wea@N=5kGZiA!qtsG@4M+C72pj}CrhnL1Ld+gOpiQVZmM*q4L%BoYuKL!w&d zk3eEQfu|2tv}xOI+Rnhij)Rs-Bej)*wH%mj1FJ=WgLM@s$5t%_<<&Z6&fd60MgM}p z`c3UJYx*N`>lSJUueMB1|2O`hp>=fR#Mjot6**wDOdj14SbMT#N36^mELK=?)yayD zJ7bY2Y}Sq1Wt>a4&1xS)=YxTcwc5ddDTOvW5T^|$fb~aPvlo4Z%er9UM9cJa?RIVZ zdk+^rRHQvv{GZlgT1|(xR?9tDr==g$I<%jVM`SRmL-@6vAjQas5^R=r>4#QYM#1%m zQIuCX2~Yf|gJB5&XF~*kRxqcwsw$RbUfiJ+JrwxJ@o#Ry=c8=kU<6hBYWSGZ2NXtZ z^nk($L$meGdL5PpS=;6|FYYEAFcLW~X1vJ_hV?U5-P;jh_NigN8*{WHETjFv_Ipcy zx^+Qzw~kIAnne0Zq9431WJyS|Rpdq}tOQRWcoN_*BDL7a=2m8S9j>j+)mCa9xi8YF zR&57twO9PKBKKeiqt7N7#`Z*pBR{jSc5M~bE;V~^V28Fius4_ee_r>Yirg~+u=|Ku z=5DlPr+3qJljXdOdo}@i@?dvGuC`Y@#F+VQdr^Aiy$qrhh=N$9b|N*q@~8T2X6?FQT(<&_x$C(L-(LyvoV`6 z0nuMSDoV?mW5oQZ4(WR#>QUk6=R%M?cFUw>U>T+5hSgNNOwrFR8L3(wQ8I%&xrx%ta7~x*~EqMzoE+q>8txveCz_&6;2~VSnP+C}Mf+;Wn}_aL^2H zsB8UoN4*$R1Q3e4lMC{eN7wdTbrAVJcm4WhTJdy@h&mvv`D$4PxT=NF^8(~ zLr?G*(p^hu&g3tFyJj@{15Lg~wZ0}_Ykd`pm915Ei}+t(cg?7E&8T62mwE<{KJoji z{LQU15O#rI3L`P^ug0beW3H;XAVts(A~(iA`nQ^$jN+xETzoAAYVvLJBbv$-cAN{BqV+o6E_CKhL`brxLX!rYndAiG_cb(NXp~^;FRSn_ zFJHB^te|+6*9!}_)$rUo!3sc<;Bg5s@d zsH|<9rL)lehH1lmL3W4ui|~Oa9EDUpOB^R8+d{FnO6S5V%lY41UEhkyLGd;>R7)vn zPGtxFV1a1eOqDn4O0mB%A7g0d?u>@jt8c;t9Pw`&UNC2U^(NAlW^2iSjZykp&B$S1 zJ{TYYXM}};4@HuRx}+Lo0t;89EjZ2)nhDduNn0wbXYyngPiFIE4o@ypylrS&m^;E6 zBIuIpK2@-aTuShUY}YBYqQFuy)?=oUgjKM*KjO_*4b2$y%x%5YAG$AHS62^LrX!s6 zHu&(Yghi6>C+$M#eQ@mYOU@hZ2$yJ=F1nhA6vXd0ygZu9-Fs9$tOY~E~X^=;H8VFM?>1c&WKq+>7~Zn%tvA^-W06%oz(h+ D?&$Qap6|Q z9~YjWe}8J^WmOWD!*S_tN+tqS=F5s#q2+g*Mw}Hdo6GM#qv698`CVx=JXw+7pGLz| z^zU$^;i<|xyAi_kR>iJ_@Epl}S(P+pPh7Y||E||q$BMU*56?A1c;2cES1uIq>KUH2rVMywU5ZprV1qv07!yzf)3$|yyC&l^pT=Vv7@BZ%d#_)GNLE{_LC z7(UKrRpeL8(MYQ@E*c<8R(ASPEXt}(hy?;-RnCclQ>Z^d`C!nDz;i@+bDGj)>Mtr1 z+=T;!RJLmZ+?yBPmI4)k?)MkVK5-z^4()OT!*qVJt$J)xBfU2 zPdvTOWqPE?_-!uZ6YIAN1ik!D9^$d9kilcek(cp_^>ccgbOickpBRsFdZG_o@JdR| zb(f$wzmWCgA?WGd_IP~gZFg4;cbt!i;I>PN9d}{ICoSfU2{;v#-~8#>7y&oG@^`*~ zo8JwcE8yn0Hf42*}?GfwRbkW8S z1RwKP!}}QAAc)95FZi3s-D`r6`7Qjnhv4&}pf`U(Lw^RD^fJHTnScd_;M<*C5c$z? zI)lf`NgtjOz4?Xec>->J!FAaXe6A4m=1(1}1l;_BAAML&?V8^j?izys9zkz@A((w% z1wQ7tpq~dl`FV`}1t0Spf`10w6>A>l3qfywO^gnCC;829vQH53#>t#nso*(7z|F6Z z(N}Mi;wb1b_3ZiAq(gzs--x3L;jBv-xWAq!;(E{zfnE zlA93M@p`M9z5MKEZ#8aH5pfA@QmUF8TPPM#ojq^vf_d?YaAVh0PjQ3F&4}4iFr%gw z;dO6yps{f?su)TL_SE~MNGXWM-vo&tuH^AciZzRH8{O)$8`Y>A(>O7*?Ah~XA?Oer zJj>;vC?uQWqKRL<4Qjkf*5{5#2^#W0Vig zoWtTMEE?;jz-3ej$;65U-3@NbT93#Q33HYt9L`e5Vnu7jT&nt?@b!1-#g-*O&22nYxU`$YWa?b&v*VOyzljvVF7uJ4F2@f}xE6%507fJvA6@di zMw#NyIO-x7?m%L!FXPTKmGVj+vMkf@o9gco_k}VY zktJ*LRJJRjKQh&q=TpiQ->F4iX8j)&^=1Fbc(+WyAv;cRk#b9>KQ+~tadDa6XR@EU z{a>2u%lNrWACMh8MEevUC6mz@qD#gZbBlP{EUzrf^bL?vs8`mP@%Z^)vHm-#OCrkp zGH#zI>h}x%r5dtb*^d-ICK6d+#`klJ0mRkA6a81#m+4=DG1k}PKqb7&HqpLh;F1}U z_9G=;vVD0!yX|sLAmtR~ic4lh`Y}>!BG&|$^<{iRqNO-8{ZiDIc$q#d+FvIDB9-+d zm_9W!!w8omZj66qT7b;7V}_{zXcKRN;!wuRT%XQXF~f-dfLLM2%8n9D%(V2GB*Dz~ zdz~g$T%XW`5W^+w8&f%U4P;8sw|VISQQw6kg~p^fa{ZzCLH0ee`n8EBHeBD5j?0TN Wx()|CUj2{m<`w93I^$(3D*qQm@~~k5 diff --git a/onyx.c b/onyx.c index 5195faf5..a7925bb1 100644 --- a/onyx.c +++ b/onyx.c @@ -25,7 +25,7 @@ int main(int argc, char *argv[]) { printf("There are %d tokens (Allocated space for %d tokens)\n", bh_arr_length(token_arr), bh_arr_capacity(token_arr)); for (OnyxToken* it = token_arr; !bh_arr_end(token_arr, it); it++) { - printf("%s\n", onyx_get_token_type_name(*it)); + printf("%s (Line %ld, Col %ld)\n", onyx_get_token_type_name(*it), it->line_number, it->line_column); } bh_hash_iterator it = bh_hash_iter_setup(u16, symbol_count); diff --git a/onyxlex.c b/onyxlex.c index fb552d13..dbbfad53 100644 --- a/onyxlex.c +++ b/onyxlex.c @@ -61,12 +61,11 @@ static const char* onyx_token_type_names[] = { #ifndef INCREMENT_CURR_TOKEN #define INCREMENT_CURR_TOKEN(tkn) { \ - (tkn)->curr++; \ - while (*(tkn)->curr == '\n' && (tkn)->curr != (tkn)->end) { \ - (tkn)->curr++; \ + if (*(tkn)->curr == '\n') { \ (tkn)->line_number++; \ - (tkn)->line_start = (tkn)->curr; \ + (tkn)->line_start = (tkn)->curr + 1; \ } \ + (tkn)->curr++; \ } #endif diff --git a/progs/demo.onyx b/progs/demo.onyx index b0d3cf07..2300ab04 100644 --- a/progs/demo.onyx +++ b/progs/demo.onyx @@ -6,7 +6,6 @@ use "core"; /* Looks for "core.onyx" in the current directory */ Foo :: struct { x i32, y i32 }; -add :: (a i32, b i32) -> i32 { - return a + b + 1234.56; -}; - +add :: proc (a i32, b i32) -> i32 { + return a + b + 1234.56; +}; \ No newline at end of file diff --git a/progs/mvp.onyx b/progs/mvp.onyx index 1a8d8c00..cef77e50 100644 --- a/progs/mvp.onyx +++ b/progs/mvp.onyx @@ -2,13 +2,15 @@ /* nested comments /* are /* okay */ */ */ */ -foreign proc "console" "log" :: (data ptr, length i32) -> void; +foreign "console" "log" :: proc (data ptr, length i32) -> void ---; -export proc add :: (a i32, b i32) -> i32 { +global thing :: + +export add :: proc (a i32, b i32) -> i32 { return a + b; }; -export proc max :: (a i32, b i32) -> i32 { +export max :: proc (a i32, b i32) -> i32 { /* Curly braces are required */ x := "String literal! HERE \\\"Woot Woot\" done"; -- 2.25.1